From 3114c5a1ec290bd1b0d5f3b718037eff12fe8b28 Mon Sep 17 00:00:00 2001 From: Simon Naumov Date: Tue, 5 Oct 2021 22:26:38 +0300 Subject: [PATCH 1/3] :heavy_plus_sign: flume --- build.gradle.kts | 11 ++- dependencies/flume.jar | Bin 0 -> 69802 bytes .../resistance_bot/Configuration.kt | 21 +----- .../pool_party/resistance_bot/Interaction.kt | 8 -- .../github/pool_party/resistance_bot/Main.kt | 66 ++++++++++++----- .../resistance_bot/action/RoleDistribution.kt | 2 +- .../resistance_bot/action/SquadChoice.kt | 4 +- .../resistance_bot/action/StartGame.kt | 4 +- .../pool_party/resistance_bot/action/Vote.kt | 4 +- .../callback/AbstractVoteCallback.kt | 7 +- .../resistance_bot/callback/Callback.kt | 56 -------------- .../callback/CallbackDispatcher.kt | 30 ++++++++ .../callback/MissionVoteCallback.kt | 2 +- .../callback/SquadChoiceCallback.kt | 13 ++-- .../callback/SquadVoteCallback.kt | 2 +- .../callback/StopVoteCallback.kt | 5 +- .../resistance_bot/command/Command.kt | 69 ------------------ .../resistance_bot/command/ExtendCommand.kt | 6 +- .../resistance_bot/command/GameCommand.kt | 9 ++- .../resistance_bot/command/HelpCommand.kt | 32 -------- .../resistance_bot/command/HistoryCommand.kt | 7 +- .../resistance_bot/command/RulesCommand.kt | 7 +- .../resistance_bot/command/StartCommand.kt | 10 +-- .../resistance_bot/command/StopCommand.kt | 10 +-- .../resistance_bot/command/TagCommand.kt | 7 +- .../resistance_bot/utils/BotUtils.kt | 11 +-- .../utils/ConfigurationUtils.kt | 63 ---------------- .../resistance_bot/utils/InitHandlers.kt | 54 -------------- .../resistance_bot/utils/MessageUtils.kt | 57 --------------- 29 files changed, 141 insertions(+), 436 deletions(-) create mode 100644 dependencies/flume.jar delete mode 100644 src/main/kotlin/com/github/pool_party/resistance_bot/Interaction.kt delete mode 100644 src/main/kotlin/com/github/pool_party/resistance_bot/callback/Callback.kt create mode 100644 src/main/kotlin/com/github/pool_party/resistance_bot/callback/CallbackDispatcher.kt delete mode 100644 src/main/kotlin/com/github/pool_party/resistance_bot/command/Command.kt delete mode 100644 src/main/kotlin/com/github/pool_party/resistance_bot/command/HelpCommand.kt delete mode 100644 src/main/kotlin/com/github/pool_party/resistance_bot/utils/ConfigurationUtils.kt delete mode 100644 src/main/kotlin/com/github/pool_party/resistance_bot/utils/InitHandlers.kt delete mode 100644 src/main/kotlin/com/github/pool_party/resistance_bot/utils/MessageUtils.kt diff --git a/build.gradle.kts b/build.gradle.kts index d1f88fd..13cfa3d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -12,6 +12,9 @@ version = "0.1.0" repositories { maven("https://jitpack.io") mavenCentral() + flatDir { + dirs = mutableSetOf(file("dependencies")) + } } val jupyterVersion = "5.6.0" @@ -20,15 +23,17 @@ val kotlinVersion = "1.5.30" dependencies { implementation("org.jetbrains.kotlin", "kotlin-stdlib-jdk8", kotlinVersion) implementation("org.jetbrains.kotlin", "kotlin-reflect", kotlinVersion) - implementation("org.jetbrains.kotlinx", "kotlinx-serialization-protobuf", "1.2.2") - implementation("org.jetbrains.kotlinx", "kotlinx-coroutines-core", "1.5.1") + implementation("org.jetbrains.kotlinx", "kotlinx-serialization-protobuf", "1.3.0") + runtimeOnly("org.jetbrains.kotlinx", "kotlinx-serialization-runtime", "1.0-M1-1.4.0-rc") + implementation("org.jetbrains.kotlinx", "kotlinx-coroutines-core", "1.5.2") implementation("com.github.elbekD", "kt-telegram-bot", "1.3.8") + implementation("org.pool-party", "flume", "0.0.1") implementation("com.natpryce", "konfig", "1.6.10.0") implementation("org.slf4j", "slf4j-simple", "2.0.0-alpha2") - implementation("io.github.microutils", "kotlin-logging", "2.0.10") + implementation("io.github.microutils", "kotlin-logging", "2.0.11") testImplementation("org.jetbrains.kotlin", "kotlin-test-junit5", kotlinVersion) testImplementation("org.junit.jupiter", "junit-jupiter-api", jupyterVersion) diff --git a/dependencies/flume.jar b/dependencies/flume.jar new file mode 100644 index 0000000000000000000000000000000000000000..2b2842f277b1ed8e05b715ea9228d3097e145ba6 GIT binary patch literal 69802 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

CVZ?X^_4Z1H{F0VKM0 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 V12?G<5Zu5|Iv()w=hNkX{||PNg24a) literal 0 HcmV?d00001 diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/Configuration.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/Configuration.kt index 8036af9..7c308cc 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/Configuration.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/Configuration.kt @@ -1,23 +1,9 @@ package com.github.pool_party.resistance_bot import com.github.pool_party.resistance_bot.state.Board -import com.github.pool_party.resistance_bot.utils.ConfigurationUtils.boolean -import com.github.pool_party.resistance_bot.utils.ConfigurationUtils.int -import com.github.pool_party.resistance_bot.utils.ConfigurationUtils.seconds -import com.github.pool_party.resistance_bot.utils.ConfigurationUtils.string +import com.github.pool_party.telegram_bot_utils.configuration.AbstractConfiguration -object Configuration { - - val APP_URL by string() - val USERNAME by string() - val PORT by int() - val HOST by string() - - val DEBUG by boolean() - - val LONGPOLL by boolean() - - val TELEGRAM_TOKEN by string() +object Configuration : AbstractConfiguration() { val REGISTRATION_TIME by seconds() @@ -52,8 +38,5 @@ object Configuration { init { check((PLAYERS_GAME_MINIMUM..PLAYERS_GAME_MAXIMUM).all { it in BOARDS }) - if (DEBUG) { - System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "DEBUG") - } } } diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/Interaction.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/Interaction.kt deleted file mode 100644 index ab80b9c..0000000 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/Interaction.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.github.pool_party.resistance_bot - -import com.elbekD.bot.Bot - -interface Interaction { - - fun apply(bot: Bot) -} diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/Main.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/Main.kt index 4788cb0..5facd63 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/Main.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/Main.kt @@ -1,26 +1,54 @@ package com.github.pool_party.resistance_bot -import com.elbekD.bot.Bot -import com.elbekD.bot.server -import com.github.pool_party.resistance_bot.utils.initHandlers +import com.github.pool_party.resistance_bot.callback.CallbackDispatcher +import com.github.pool_party.resistance_bot.callback.MissionVoteCallback +import com.github.pool_party.resistance_bot.callback.SquadChoiceCallback +import com.github.pool_party.resistance_bot.callback.SquadVoteCallback +import com.github.pool_party.resistance_bot.callback.StopVoteCallback +import com.github.pool_party.resistance_bot.command.ExtendCommand +import com.github.pool_party.resistance_bot.command.GameCommand +import com.github.pool_party.resistance_bot.command.HistoryCommand +import com.github.pool_party.resistance_bot.command.RulesCommand +import com.github.pool_party.resistance_bot.command.StartCommand +import com.github.pool_party.resistance_bot.command.StopCommand +import com.github.pool_party.resistance_bot.command.TagCommand +import com.github.pool_party.resistance_bot.state.Coder +import com.github.pool_party.resistance_bot.state.InMemoryStateStorage +import com.github.pool_party.resistance_bot.state.LongCoder +import com.github.pool_party.resistance_bot.state.StateStorage +import com.github.pool_party.telegram_bot_utils.bot.BotBuilder fun main() { - val token = Configuration.TELEGRAM_TOKEN - val userName = Configuration.USERNAME + val stateStorage: StateStorage = InMemoryStateStorage() + val longCoder: Coder = LongCoder() - val bot = if (Configuration.LONGPOLL) { - Bot.createPolling(userName, token) - } else { - Bot.createWebhook(userName, token) { - url = "${Configuration.APP_URL}/$token" + val callbacks = listOf( + SquadChoiceCallback(stateStorage), + MissionVoteCallback(stateStorage), + SquadVoteCallback(stateStorage), + StopVoteCallback(stateStorage), + ) - server { - host = Configuration.HOST - port = Configuration.PORT - } - } - } - - bot.initHandlers() - bot.start() + BotBuilder(Configuration).apply { + interactions = listOf( + // registration + listOf( + GameCommand(stateStorage, longCoder), + StartCommand(stateStorage, longCoder), + StopCommand(stateStorage), + ), + // game + listOf( + HistoryCommand(stateStorage), + TagCommand(stateStorage), + ), + // utils + listOf( + ExtendCommand(stateStorage), + RulesCommand(), + ), + // other + listOf(CallbackDispatcher(callbacks)), + ) + }.start() } diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/action/RoleDistribution.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/action/RoleDistribution.kt index a67c327..7b156e2 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/action/RoleDistribution.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/action/RoleDistribution.kt @@ -4,7 +4,7 @@ import com.elbekD.bot.Bot import com.github.pool_party.resistance_bot.message.RECEIVE_RESISTANCE_ROLE import com.github.pool_party.resistance_bot.message.receiveSpyRole import com.github.pool_party.resistance_bot.state.StateStorage -import com.github.pool_party.resistance_bot.utils.sendMessageLogging +import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging suspend fun Bot.distributeRoles(chatId: Long, stateStorage: StateStorage) { val state = stateStorage.getGameState(chatId) ?: return diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/action/SquadChoice.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/action/SquadChoice.kt index 7f231d0..227942e 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/action/SquadChoice.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/action/SquadChoice.kt @@ -7,8 +7,8 @@ import com.github.pool_party.resistance_bot.callback.SquadChoiceCallbackData import com.github.pool_party.resistance_bot.message.leaderChooseMessage import com.github.pool_party.resistance_bot.message.roundSummary import com.github.pool_party.resistance_bot.state.StateStorage -import com.github.pool_party.resistance_bot.utils.sendMessageLogging -import com.github.pool_party.resistance_bot.utils.toMarkUp +import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging +import com.github.pool_party.telegram_bot_utils.utils.toMarkUp suspend fun Bot.chooseSquad(chatId: Long, stateStorage: StateStorage) { diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/action/StartGame.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/action/StartGame.kt index 5c46b91..d6869cf 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/action/StartGame.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/action/StartGame.kt @@ -6,8 +6,8 @@ import com.github.pool_party.resistance_bot.message.ON_GAME_START import com.github.pool_party.resistance_bot.message.ON_LESS_PLAYERS import com.github.pool_party.resistance_bot.message.ON_MORE_PLAYERS import com.github.pool_party.resistance_bot.state.StateStorage -import com.github.pool_party.resistance_bot.utils.deleteMessageLogging -import com.github.pool_party.resistance_bot.utils.sendMessageLogging +import com.github.pool_party.telegram_bot_utils.utils.deleteMessageLogging +import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging suspend fun Bot.startGame(chatId: Long, stateStorage: StateStorage) { val state = stateStorage.getRegistrationState(chatId) ?: return diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/action/Vote.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/action/Vote.kt index ef5532e..158a232 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/action/Vote.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/action/Vote.kt @@ -8,8 +8,8 @@ import com.github.pool_party.resistance_bot.callback.MissionVoteCallbackData import com.github.pool_party.resistance_bot.callback.SquadVoteCallbackData import com.github.pool_party.resistance_bot.message.MISSION_VOTE import com.github.pool_party.resistance_bot.message.TEAM_VOTE -import com.github.pool_party.resistance_bot.utils.sendMessageLogging -import com.github.pool_party.resistance_bot.utils.toMarkUp +import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging +import com.github.pool_party.telegram_bot_utils.utils.toMarkUp private suspend fun Bot.vote(text: String, memberIds: List, verdictVoteCallBackData: (Boolean) -> CallbackData) { diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/AbstractVoteCallback.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/AbstractVoteCallback.kt index 4b92ccc..f5bc3fa 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/AbstractVoteCallback.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/AbstractVoteCallback.kt @@ -8,15 +8,16 @@ import com.github.pool_party.resistance_bot.state.GameState import com.github.pool_party.resistance_bot.state.Member import com.github.pool_party.resistance_bot.state.StateStorage import com.github.pool_party.resistance_bot.state.Vote -import com.github.pool_party.resistance_bot.utils.editMessageTextLogging -import com.github.pool_party.resistance_bot.utils.name +import com.github.pool_party.telegram_bot_utils.interaction.callback.Callback +import com.github.pool_party.telegram_bot_utils.utils.editMessageTextLogging +import com.github.pool_party.telegram_bot_utils.utils.name interface VoteCallbackData { val gameChatId: Long val verdict: Boolean } -abstract class AbstractVoteCallback(protected val stateStorage: StateStorage) : Callback { +abstract class AbstractVoteCallback(protected val stateStorage: StateStorage) : Callback { abstract suspend fun getMemberNumber(voteCallbackData: VoteCallbackData): Int? diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/Callback.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/Callback.kt deleted file mode 100644 index cf551cc..0000000 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/Callback.kt +++ /dev/null @@ -1,56 +0,0 @@ -package com.github.pool_party.resistance_bot.callback - -import com.elbekD.bot.Bot -import com.elbekD.bot.types.CallbackQuery -import com.github.pool_party.resistance_bot.Interaction -import kotlinx.serialization.Serializable -import kotlinx.serialization.decodeFromByteArray -import kotlinx.serialization.encodeToByteArray -import kotlinx.serialization.protobuf.ProtoBuf -import mu.KotlinLogging -import kotlin.reflect.KClass - -/** - * There is a hack with short property serial names to fit into 64 Telegram API callback data bytes. - */ -@Serializable -sealed class CallbackData { - abstract val gameChatId: Long - - val encoded: String - get() = ProtoBuf.encodeToByteArray(this).joinToString("") { it.toInt().toChar().toString() } - - companion object { - fun of(string: String) = - ProtoBuf.decodeFromByteArray(string.map { it.code.toByte() }.toByteArray()) - } -} - -interface Callback { - - val callbackDataKClass: KClass - - suspend fun Bot.process(callbackQuery: CallbackQuery, callbackData: CallbackData) -} - -class CallbackDispatcher(callbacks: List) : Interaction { - - private val logger = KotlinLogging.logger {} - - private val callbackMap: Map, Callback> = callbacks.associateBy { it.callbackDataKClass } - - override fun apply(bot: Bot) = bot.onCallbackQuery { - val callbackData = it.data?.let { data -> CallbackData.of(data) } - - logger.info { - val bytes = it.data?.asSequence()?.joinToString("") { char -> "%02x".format(char.code.toByte()) } - "callback ${it.from.username}@${it.message?.chat?.title}: $bytes >=> $callbackData" - } - - if (callbackData == null) return@onCallbackQuery - - val callback = callbackMap[callbackData::class] ?: return@onCallbackQuery - - with(callback) { bot.process(it, callbackData) } - } -} diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/CallbackDispatcher.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/CallbackDispatcher.kt new file mode 100644 index 0000000..3ddb4e4 --- /dev/null +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/CallbackDispatcher.kt @@ -0,0 +1,30 @@ +package com.github.pool_party.resistance_bot.callback + +import com.github.pool_party.telegram_bot_utils.interaction.callback.AbstractCallbackDispatcher +import com.github.pool_party.telegram_bot_utils.interaction.callback.Callback +import kotlinx.serialization.Serializable +import kotlinx.serialization.decodeFromByteArray +import kotlinx.serialization.encodeToByteArray +import kotlinx.serialization.protobuf.ProtoBuf + +/** + * There is a hack with short property serial names to fit into 64 Telegram API callback data bytes. + */ +@Serializable +sealed class CallbackData { + abstract val gameChatId: Long + + val encoded: String + get() = ProtoBuf.encodeToByteArray(this).joinToString("") { it.toInt().toChar().toString() } + + companion object { + fun of(string: String) = + ProtoBuf.decodeFromByteArray(string.map { it.code.toByte() }.toByteArray()) + } +} + +class CallbackDispatcher(callbacks: List>) + : AbstractCallbackDispatcher(callbacks) { + + override fun getCallbackData(data: String): CallbackData = CallbackData.of(data) +} diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/MissionVoteCallback.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/MissionVoteCallback.kt index 02519c7..922f633 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/MissionVoteCallback.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/MissionVoteCallback.kt @@ -6,7 +6,7 @@ import com.github.pool_party.resistance_bot.state.GameState import com.github.pool_party.resistance_bot.state.RoundResult import com.github.pool_party.resistance_bot.state.StateStorage import com.github.pool_party.resistance_bot.state.Vote -import com.github.pool_party.resistance_bot.utils.sendMessageLogging +import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/SquadChoiceCallback.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/SquadChoiceCallback.kt index f2be9ad..5f9091e 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/SquadChoiceCallback.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/SquadChoiceCallback.kt @@ -5,13 +5,14 @@ import com.elbekD.bot.types.CallbackQuery import com.github.pool_party.resistance_bot.Configuration import com.github.pool_party.resistance_bot.action.squadVote import com.github.pool_party.resistance_bot.state.StateStorage -import com.github.pool_party.resistance_bot.utils.editMessageReplyMarkupLogging -import com.github.pool_party.resistance_bot.utils.editMessageTextLogging import com.github.pool_party.resistance_bot.utils.goToBotMarkup import com.github.pool_party.resistance_bot.utils.makeUserLink -import com.github.pool_party.resistance_bot.utils.name -import com.github.pool_party.resistance_bot.utils.sendMessageLogging -import com.github.pool_party.resistance_bot.utils.toMarkUp +import com.github.pool_party.telegram_bot_utils.interaction.callback.Callback +import com.github.pool_party.telegram_bot_utils.utils.editMessageReplyMarkupLogging +import com.github.pool_party.telegram_bot_utils.utils.editMessageTextLogging +import com.github.pool_party.telegram_bot_utils.utils.name +import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging +import com.github.pool_party.telegram_bot_utils.utils.toMarkUp import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -23,7 +24,7 @@ data class SquadChoiceCallbackData(override val gameChatId: Long, val personId: } } -class SquadChoiceCallback(private val stateStorage: StateStorage) : Callback { +class SquadChoiceCallback(private val stateStorage: StateStorage) : Callback { override val callbackDataKClass = SquadChoiceCallbackData::class diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/SquadVoteCallback.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/SquadVoteCallback.kt index 4d53e17..ecdf834 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/SquadVoteCallback.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/SquadVoteCallback.kt @@ -10,7 +10,7 @@ import com.github.pool_party.resistance_bot.state.GameState import com.github.pool_party.resistance_bot.state.StateStorage import com.github.pool_party.resistance_bot.state.Vote import com.github.pool_party.resistance_bot.utils.goToBotMarkup -import com.github.pool_party.resistance_bot.utils.sendMessageLogging +import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/StopVoteCallback.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/StopVoteCallback.kt index 21f446f..382bfc5 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/StopVoteCallback.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/StopVoteCallback.kt @@ -4,8 +4,9 @@ import com.elbekD.bot.Bot import com.elbekD.bot.types.CallbackQuery import com.github.pool_party.resistance_bot.command.StopCommand.Companion.processResults import com.github.pool_party.resistance_bot.state.StateStorage -import com.github.pool_party.resistance_bot.utils.editMessageReplyMarkupLogging import com.github.pool_party.resistance_bot.utils.makeStopVoteMarkup +import com.github.pool_party.telegram_bot_utils.interaction.callback.Callback +import com.github.pool_party.telegram_bot_utils.utils.editMessageReplyMarkupLogging import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import mu.KotlinLogging @@ -14,7 +15,7 @@ import mu.KotlinLogging @SerialName("stop") data class StopCallbackData(override val gameChatId: Long, val verdict: Boolean) : CallbackData() -class StopVoteCallback(private val stateStorage: StateStorage) : Callback { +class StopVoteCallback(private val stateStorage: StateStorage) : Callback { private val logger = KotlinLogging.logger {} diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/command/Command.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/command/Command.kt deleted file mode 100644 index cb51486..0000000 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/command/Command.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.github.pool_party.resistance_bot.command - -import com.elbekD.bot.Bot -import com.elbekD.bot.types.BotCommand -import com.elbekD.bot.types.Message -import com.github.pool_party.resistance_bot.Interaction -import mu.KotlinLogging -import java.time.LocalDateTime -import kotlin.system.measureNanoTime - -enum class CommandType { - REGISTRATION, - GAME, - UTILS, -} - -interface Command : Interaction { - - /** - * Command name starting with "/". - */ - val command: String - - /** - * Command description that will be displayed in a small popup in Telegram as you type commands. - */ - val description: String - - /** - * Command help message that will be displayed on command /help - */ - val helpMessage: String - - /** - * Affects only indentation in /help command - */ - val commandType: CommandType - - fun toBotCommand() = BotCommand(command, description) -} - -abstract class AbstractCommand( - commandName: String, - override val description: String, - override val helpMessage: String, - override val commandType: CommandType, -) : Command { - - private val logger = KotlinLogging.logger {} - - override val command = "/$commandName" - - abstract suspend fun Bot.action(message: Message, args: List) - - override fun apply(bot: Bot) = bot.onCommand(command) { message, args -> - logger.info { - "${LocalDateTime.now()} $command <- ${message.from?.username}@${message.chat.title}: \"${message.text}\"" - } - - val nanoseconds = measureNanoTime { bot.action(message, parseArgs(args)) } - - logger.info { - "$command -> finished in ${nanoseconds / 1000000000}.${nanoseconds % 1000000000}s" - } - } - - private fun parseArgs(args: String?): List = - args?.split(' ')?.map { it.trim().lowercase() }?.filter { it.isNotBlank() }.orEmpty() -} diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/command/ExtendCommand.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/command/ExtendCommand.kt index 4f553aa..f3fbe3a 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/command/ExtendCommand.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/command/ExtendCommand.kt @@ -11,16 +11,16 @@ import com.github.pool_party.resistance_bot.message.onExtend import com.github.pool_party.resistance_bot.state.GameState import com.github.pool_party.resistance_bot.state.RegistrationState import com.github.pool_party.resistance_bot.state.StateStorage -import com.github.pool_party.resistance_bot.utils.chatId import com.github.pool_party.resistance_bot.utils.inc -import com.github.pool_party.resistance_bot.utils.sendMessageLogging +import com.github.pool_party.telegram_bot_utils.interaction.command.AbstractCommand +import com.github.pool_party.telegram_bot_utils.utils.chatId +import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging class ExtendCommand(private val stateStorage: StateStorage) : AbstractCommand( "extend", "add extra ${Configuration.REGISTRATION_EXTEND.inWholeSeconds}s for registration", HELP_EXTEND, - CommandType.UTILS, ) { override suspend fun Bot.action(message: Message, args: List) { diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/command/GameCommand.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/command/GameCommand.kt index 25a9a9a..73983e3 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/command/GameCommand.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/command/GameCommand.kt @@ -13,17 +13,18 @@ import com.github.pool_party.resistance_bot.message.onRegistrationTimestamp import com.github.pool_party.resistance_bot.state.Coder import com.github.pool_party.resistance_bot.state.StateStorage import com.github.pool_party.resistance_bot.utils.addBotMarkup -import com.github.pool_party.resistance_bot.utils.chatId import com.github.pool_party.resistance_bot.utils.dec -import com.github.pool_party.resistance_bot.utils.logging import com.github.pool_party.resistance_bot.utils.makeRegistrationMarkup -import com.github.pool_party.resistance_bot.utils.sendMessageLogging +import com.github.pool_party.telegram_bot_utils.interaction.command.AbstractCommand +import com.github.pool_party.telegram_bot_utils.utils.chatId +import com.github.pool_party.telegram_bot_utils.utils.logging +import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging import kotlinx.coroutines.delay import java.util.concurrent.CompletableFuture import kotlin.time.Duration.Companion.minutes class GameCommand(private val stateStorage: StateStorage, private val longCoder: Coder) : - AbstractCommand("game", "start the registration", HELP_GAME, CommandType.REGISTRATION) { + AbstractCommand("game", "start the registration", HELP_GAME) { override suspend fun Bot.action(message: Message, args: List) { val chatId = message.chatId diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/command/HelpCommand.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/command/HelpCommand.kt deleted file mode 100644 index e7b99b5..0000000 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/command/HelpCommand.kt +++ /dev/null @@ -1,32 +0,0 @@ -package com.github.pool_party.resistance_bot.command - -import com.elbekD.bot.Bot -import com.elbekD.bot.types.Message -import com.github.pool_party.resistance_bot.message.ON_HELP_ERROR -import com.github.pool_party.resistance_bot.message.helpMessage -import com.github.pool_party.resistance_bot.utils.chatId -import com.github.pool_party.resistance_bot.utils.sendMessageLogging - -class HelpCommand(commands: List) : - AbstractCommand( - "help", - "show this usage guide", - helpMessage( - commands.groupBy { it.commandType }.values.map { list -> list.associate { it.command to it.description } } - ), - CommandType.UTILS, - ) { - - private val helpMessages = commands.associate { it.command.removePrefix("/") to it.helpMessage } - - override suspend fun Bot.action(message: Message, args: List) { - sendMessageLogging( - message.chatId, - when { - args.isEmpty() -> helpMessage - args.size > 1 -> ON_HELP_ERROR - else -> helpMessages[args[0].removePrefix("/")] ?: ON_HELP_ERROR - }, - ) - } -} diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/command/HistoryCommand.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/command/HistoryCommand.kt index 4b96dfc..83e6e22 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/command/HistoryCommand.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/command/HistoryCommand.kt @@ -6,11 +6,12 @@ import com.github.pool_party.resistance_bot.message.HELP_HISTORY import com.github.pool_party.resistance_bot.message.ON_NO_REGISTRATION import com.github.pool_party.resistance_bot.message.history import com.github.pool_party.resistance_bot.state.StateStorage -import com.github.pool_party.resistance_bot.utils.chatId -import com.github.pool_party.resistance_bot.utils.sendMessageLogging +import com.github.pool_party.telegram_bot_utils.interaction.command.AbstractCommand +import com.github.pool_party.telegram_bot_utils.utils.chatId +import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging class HistoryCommand(private val stateStorage: StateStorage) : - AbstractCommand("history", "show round history", HELP_HISTORY, CommandType.GAME) { + AbstractCommand("history", "show round history", HELP_HISTORY) { override suspend fun Bot.action(message: Message, args: List) { val chatId = message.chatId diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/command/RulesCommand.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/command/RulesCommand.kt index 24a8b37..c9ffc2c 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/command/RulesCommand.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/command/RulesCommand.kt @@ -4,11 +4,12 @@ import com.elbekD.bot.Bot import com.elbekD.bot.types.Message import com.github.pool_party.resistance_bot.message.GAME_RULES import com.github.pool_party.resistance_bot.message.HELP_RULES -import com.github.pool_party.resistance_bot.utils.chatId -import com.github.pool_party.resistance_bot.utils.sendMessageLogging +import com.github.pool_party.telegram_bot_utils.interaction.command.AbstractCommand +import com.github.pool_party.telegram_bot_utils.utils.chatId +import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging class RulesCommand : - AbstractCommand("rules", "show the list of rules", HELP_RULES, CommandType.UTILS) { + AbstractCommand("rules", "show the list of rules", HELP_RULES) { override suspend fun Bot.action(message: Message, args: List) { sendMessageLogging(message.chatId, GAME_RULES) diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/command/StartCommand.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/command/StartCommand.kt index 0bac8f9..153f7e0 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/command/StartCommand.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/command/StartCommand.kt @@ -15,18 +15,18 @@ import com.github.pool_party.resistance_bot.state.Coder import com.github.pool_party.resistance_bot.state.Member import com.github.pool_party.resistance_bot.state.StateStorage import com.github.pool_party.resistance_bot.utils.addBotMarkup -import com.github.pool_party.resistance_bot.utils.chatId -import com.github.pool_party.resistance_bot.utils.editMessageTextLogging import com.github.pool_party.resistance_bot.utils.makeRegistrationMarkup -import com.github.pool_party.resistance_bot.utils.name -import com.github.pool_party.resistance_bot.utils.sendMessageLogging +import com.github.pool_party.telegram_bot_utils.interaction.command.AbstractCommand +import com.github.pool_party.telegram_bot_utils.utils.chatId +import com.github.pool_party.telegram_bot_utils.utils.editMessageTextLogging +import com.github.pool_party.telegram_bot_utils.utils.name +import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging class StartCommand(private val stateStorage: StateStorage, private val longCoder: Coder) : AbstractCommand( "start", "finish the registration and begin a game", HELP_START, - CommandType.REGISTRATION, ) { override suspend fun Bot.action(message: Message, args: List) = when { diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/command/StopCommand.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/command/StopCommand.kt index 4fc12b0..084a892 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/command/StopCommand.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/command/StopCommand.kt @@ -14,11 +14,12 @@ import com.github.pool_party.resistance_bot.message.stopTheGameVote import com.github.pool_party.resistance_bot.state.GameState import com.github.pool_party.resistance_bot.state.RegistrationState import com.github.pool_party.resistance_bot.state.StateStorage -import com.github.pool_party.resistance_bot.utils.chatId -import com.github.pool_party.resistance_bot.utils.deleteMessageLogging import com.github.pool_party.resistance_bot.utils.makeStopVoteMarkup -import com.github.pool_party.resistance_bot.utils.name -import com.github.pool_party.resistance_bot.utils.sendMessageLogging +import com.github.pool_party.telegram_bot_utils.interaction.command.AbstractCommand +import com.github.pool_party.telegram_bot_utils.utils.chatId +import com.github.pool_party.telegram_bot_utils.utils.deleteMessageLogging +import com.github.pool_party.telegram_bot_utils.utils.name +import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging import kotlinx.coroutines.delay import java.util.concurrent.ConcurrentHashMap @@ -27,7 +28,6 @@ class StopCommand(private val stateStorage: StateStorage) : "stop", "stop a game or registration", HELP_STOP, - CommandType.REGISTRATION, ) { override suspend fun Bot.action(message: Message, args: List) { diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/command/TagCommand.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/command/TagCommand.kt index e5583a3..b213939 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/command/TagCommand.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/command/TagCommand.kt @@ -6,11 +6,12 @@ import com.github.pool_party.resistance_bot.message.HELP_TAG import com.github.pool_party.resistance_bot.message.ON_NO_REGISTRATION import com.github.pool_party.resistance_bot.message.tagAfkPlayers import com.github.pool_party.resistance_bot.state.StateStorage -import com.github.pool_party.resistance_bot.utils.chatId -import com.github.pool_party.resistance_bot.utils.sendMessageLogging +import com.github.pool_party.telegram_bot_utils.interaction.command.AbstractCommand +import com.github.pool_party.telegram_bot_utils.utils.chatId +import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging class TagCommand(private val stateStorage: StateStorage) : - AbstractCommand("tag", "notify players delaying a game", HELP_TAG, CommandType.GAME) { + AbstractCommand("tag", "notify players delaying a game", HELP_TAG) { override suspend fun Bot.action(message: Message, args: List) { val chatId = message.chatId diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/utils/BotUtils.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/utils/BotUtils.kt index fec7fdf..a521ca3 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/utils/BotUtils.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/utils/BotUtils.kt @@ -2,21 +2,12 @@ package com.github.pool_party.resistance_bot.utils import com.elbekD.bot.types.InlineKeyboardButton import com.elbekD.bot.types.InlineKeyboardMarkup -import com.elbekD.bot.types.Message -import com.elbekD.bot.types.User import com.github.pool_party.resistance_bot.Configuration import com.github.pool_party.resistance_bot.callback.StopCallbackData import com.github.pool_party.resistance_bot.message.INIT_MARKUP import com.github.pool_party.resistance_bot.message.REGISTRATION_BUTTON import com.github.pool_party.resistance_bot.message.VOTING_SUGGEST - -val Message.chatId - get() = chat.id - -val User.name - get() = sequenceOf(first_name, last_name).filterNotNull().joinToString(" ") - -fun List.toMarkUp() = InlineKeyboardMarkup(listOf(this)) +import com.github.pool_party.telegram_bot_utils.utils.toMarkUp fun makeRegistrationMarkup(hash: String) = listOf(InlineKeyboardButton(REGISTRATION_BUTTON, url = botLink(hash))).toMarkUp() diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/utils/ConfigurationUtils.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/utils/ConfigurationUtils.kt deleted file mode 100644 index cab0329..0000000 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/utils/ConfigurationUtils.kt +++ /dev/null @@ -1,63 +0,0 @@ -package com.github.pool_party.resistance_bot.utils - -import com.natpryce.konfig.ConfigurationProperties -import com.natpryce.konfig.EnvironmentVariables -import com.natpryce.konfig.Key -import com.natpryce.konfig.PropertyLocation -import com.natpryce.konfig.booleanType -import com.natpryce.konfig.intType -import com.natpryce.konfig.overriding -import com.natpryce.konfig.stringType -import kotlin.reflect.KProperty -import kotlin.time.Duration - -object ConfigurationUtils { - - private val configuration = EnvironmentVariables() - .overriding(ConfigurationProperties.fromResource("default.properties")) - .let { - val testProperties = "test.properties" - if (ClassLoader.getSystemClassLoader().getResource(testProperties) != null) - ConfigurationProperties.fromResource(testProperties) overriding it - else it - } - - fun boolean() = Configured(booleanType) - - fun int() = Configured(intType) - - fun string() = Configured(stringType) - - fun seconds() = ConfiguredDuration("seconds", Duration::seconds) - - private val KProperty.configName - get() = name.lowercase().replace('_', '.') - - class Configured(private val parse: (PropertyLocation, String) -> T) { - - private var value: T? = null - - operator fun getValue(thisRef: K, property: KProperty<*>): T { - if (value == null) { - value = configuration[Key(property.configName, parse)] - } - return value!! - } - - operator fun setValue(thisRef: K, property: KProperty<*>, value: T) { - this.value = value - } - } - - class ConfiguredDuration(private val name: String, private val duration: (Int) -> Duration) { - - private var value: Duration? = null - - operator fun getValue(thisRef: K, property: KProperty<*>): Duration { - if (value == null) { - value = duration(configuration[Key("${property.configName}.$name", intType)]) - } - return value!! - } - } -} diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/utils/InitHandlers.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/utils/InitHandlers.kt deleted file mode 100644 index 512db2a..0000000 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/utils/InitHandlers.kt +++ /dev/null @@ -1,54 +0,0 @@ -package com.github.pool_party.resistance_bot.utils - -import com.elbekD.bot.Bot -import com.github.pool_party.resistance_bot.Interaction -import com.github.pool_party.resistance_bot.callback.CallbackDispatcher -import com.github.pool_party.resistance_bot.callback.MissionVoteCallback -import com.github.pool_party.resistance_bot.callback.SquadChoiceCallback -import com.github.pool_party.resistance_bot.callback.SquadVoteCallback -import com.github.pool_party.resistance_bot.callback.StopVoteCallback -import com.github.pool_party.resistance_bot.command.Command -import com.github.pool_party.resistance_bot.command.ExtendCommand -import com.github.pool_party.resistance_bot.command.GameCommand -import com.github.pool_party.resistance_bot.command.HelpCommand -import com.github.pool_party.resistance_bot.command.HistoryCommand -import com.github.pool_party.resistance_bot.command.RulesCommand -import com.github.pool_party.resistance_bot.command.StartCommand -import com.github.pool_party.resistance_bot.command.StopCommand -import com.github.pool_party.resistance_bot.command.TagCommand -import com.github.pool_party.resistance_bot.state.Coder -import com.github.pool_party.resistance_bot.state.InMemoryStateStorage -import com.github.pool_party.resistance_bot.state.LongCoder -import com.github.pool_party.resistance_bot.state.StateStorage - -fun Bot.initHandlers() { - val stateStorage: StateStorage = InMemoryStateStorage() - val longCoder: Coder = LongCoder() - - val callbacks = listOf( - SquadChoiceCallback(stateStorage), - MissionVoteCallback(stateStorage), - SquadVoteCallback(stateStorage), - StopVoteCallback(stateStorage), - ) - - val interactions: MutableList = mutableListOf( - CallbackDispatcher(callbacks), - GameCommand(stateStorage, longCoder), - StartCommand(stateStorage, longCoder), - StopCommand(stateStorage), - TagCommand(stateStorage), - HistoryCommand(stateStorage), - ExtendCommand(stateStorage), - RulesCommand(), - ) - - val commands = interactions.mapNotNull { it as? Command }.toMutableList() - - val helpCommand = HelpCommand(commands) - commands += helpCommand - interactions.add(helpCommand) - - interactions.forEach { it.apply(this) } - setMyCommands(commands.map { it.toBotCommand() }) -} diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/utils/MessageUtils.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/utils/MessageUtils.kt deleted file mode 100644 index d215d57..0000000 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/utils/MessageUtils.kt +++ /dev/null @@ -1,57 +0,0 @@ -package com.github.pool_party.resistance_bot.utils - -import com.elbekD.bot.Bot -import com.elbekD.bot.types.InlineKeyboardMarkup -import com.elbekD.bot.types.Message -import com.elbekD.bot.types.ReplyKeyboard -import mu.KotlinLogging -import java.util.concurrent.CompletableFuture - -private val logger = KotlinLogging.logger { } - -fun CompletableFuture.logging(prefix: String = ""): CompletableFuture = handleAsync { value, throwable -> - if (throwable != null) { - logger.error { "$prefix: ${throwable.message}:\n${throwable.stackTraceToString()}" } - throw throwable - } - value -} - -private fun String.escapeMarkdown() = replace("[-!.]".toRegex()) { "\\${it.groupValues[0]}" } - -fun Bot.sendMessageLogging( - chatId: Long, - text: String, - markup: ReplyKeyboard? = null, - replyTo: Int? = null -): CompletableFuture { - logger.debug { "Sending '$text'" } - return sendMessage(chatId, text.escapeMarkdown(), "MarkdownV2", replyTo = replyTo, markup = markup) - .logging("Failed to send message \"$text\"") -} - -fun Bot.deleteMessageLogging(chatId: Long, messageId: Int): CompletableFuture { - logger.debug { "Deleting message $chatId/$messageId" } - return deleteMessage(chatId, messageId).logging("Failed to delete message $chatId/$messageId") -} - -fun Bot.editMessageTextLogging( - chatId: Long, - messageId: Int, - text: String, - markup: InlineKeyboardMarkup? = null -): CompletableFuture { - logger.debug { "Editing '$text'" } - return editMessageText(chatId, messageId, text = text.escapeMarkdown(), parseMode = "MarkdownV2", markup = markup) - .logging("Failed to send message \"$text\"") -} - -fun Bot.editMessageReplyMarkupLogging( - chatId: Long, - messageId: Int, - markup: InlineKeyboardMarkup? = null -): CompletableFuture { - logger.debug { "Editing reply markup: '$markup'" } - return editMessageReplyMarkup(chatId, messageId, markup = markup) - .logging("Failed to edit reply markup \"$markup\"") -} From a89c16e40c7672a26b091cc234d2392e1f796dd2 Mon Sep 17 00:00:00 2001 From: Simon Naumov Date: Tue, 5 Oct 2021 22:41:40 +0300 Subject: [PATCH 2/3] :rotating_light: fix linter --- .../pool_party/resistance_bot/callback/CallbackDispatcher.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/CallbackDispatcher.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/CallbackDispatcher.kt index 3ddb4e4..4242215 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/CallbackDispatcher.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/CallbackDispatcher.kt @@ -23,8 +23,8 @@ sealed class CallbackData { } } -class CallbackDispatcher(callbacks: List>) - : AbstractCallbackDispatcher(callbacks) { +class CallbackDispatcher(callbacks: List>) : + AbstractCallbackDispatcher(callbacks) { override fun getCallbackData(data: String): CallbackData = CallbackData.of(data) } From f36fb1f29ee325d4c9834f85f0039fcb150c4de1 Mon Sep 17 00:00:00 2001 From: Simon Naumov Date: Fri, 8 Oct 2021 16:27:29 +0300 Subject: [PATCH 3/3] :arrow_up: flume --- dependencies/flume-test.jar | Bin 0 -> 45291 bytes dependencies/flume.jar | Bin 69802 -> 73399 bytes .../resistance_bot/Configuration.kt | 2 +- .../resistance_bot/action/RoleDistribution.kt | 2 +- .../resistance_bot/action/SquadChoice.kt | 4 ++-- .../resistance_bot/action/StartGame.kt | 4 ++-- .../pool_party/resistance_bot/action/Vote.kt | 4 ++-- .../callback/AbstractVoteCallback.kt | 6 +++--- .../callback/CallbackDispatcher.kt | 4 ++-- .../callback/MissionVoteCallback.kt | 2 +- .../callback/SquadChoiceCallback.kt | 12 ++++++------ .../callback/SquadVoteCallback.kt | 2 +- .../callback/StopVoteCallback.kt | 4 ++-- .../resistance_bot/command/ExtendCommand.kt | 6 +++--- .../resistance_bot/command/GameCommand.kt | 8 ++++---- .../resistance_bot/command/HistoryCommand.kt | 6 +++--- .../resistance_bot/command/RulesCommand.kt | 6 +++--- .../resistance_bot/command/StartCommand.kt | 10 +++++----- .../resistance_bot/command/StopCommand.kt | 10 +++++----- .../resistance_bot/command/TagCommand.kt | 6 +++--- .../resistance_bot/utils/BotUtils.kt | 2 +- 21 files changed, 50 insertions(+), 50 deletions(-) create mode 100644 dependencies/flume-test.jar diff --git a/dependencies/flume-test.jar b/dependencies/flume-test.jar new file mode 100644 index 0000000000000000000000000000000000000000..cef00fabafff059c4dbb630f57a26c2ccd5e2b6b GIT binary patch literal 45291 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 literal 0 HcmV?d00001 diff --git a/dependencies/flume.jar b/dependencies/flume.jar index 2b2842f277b1ed8e05b715ea9228d3097e145ba6..2b36d4e204b165d4dfc78932577ddc96709efd76 100644 GIT binary patch literal 73399 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 b`J}}_0p}7A+cu6T0)Q(JRZxJ@{N(=tWNS5) literal 69802 zcmcG#1yE#Nwk1pzMWI!=TS4KTxKoh0ySux)7M8fXySux)ySuwP6fpGP-T&*a-^@h3 zc{4ZSWJG4{yYGpcvDUVAq{YC$z<_~4L4mbY3CMwcT%Z5;@o_Ax6Odwo8~{xHD&SSbH$D8VZ!A}AmyPa`3CBQZK6E=El=^-YYLVtjO>MwV`tVRLVL z@AJPotEl}UZu;S*_+#Pxt20A$2MYrlGb?*@6H6@%D}4uZ13hhRZNrcCMOTq*taGo| zATl+hBq3cTS|&MHDKaAiSu0XmUbaXnIyoj;Gd2-BBUTGZOEo%4t~4PNV!TQPi2+`teBFeVyFfBAhRjZiaV_2RbOze#vbpN-eXn!@ewz4wUvevP+clpa*|Ni%o|1a;dH!wFavemKB(zUYJ zaaeI7FAA;mr#c9mB0|kzGDVSi zc?o`OWc)#Uj#%$A^BRt_=NxfHfU!Fr=SxoL#xHUOtQ}wO(@_?qcD9YP(+7O5j!%gL zFua*lv#lW2&XW^VtqPX9TfUXMIZ!DRczIsM>7HmI`1!Fe z3p*;zbumcpi4_A_QhR15Md4PW(2zGxD7{*vlswEdKG6q)^0W1qvvT&gTnMWdTD%&g zjjwkOS;13cS|P|!hGLhhErorN;qdR4^(J^&u-Q4(OMJ9DWqrncM$e0O4cc<9r;Ia- zqux5^D|Z*Z7GstZ=vdzjE@h2|yK?kGs>Bdn4p>UCTIXt6v#yb}Wb!5e$BKEGvNv=oOrV~Rr`OL7U`uMoh)E67`!aL^)i$Ullsz)T21^JG&+Ta0m?OfTG72X zY^-Xcdykf-S5RXOulmGKHy-(1Mu{f5qmSgv+Jj&+3ZM%BRY~<&H!aY)LP+B4N~PQd zLv1$-A4RhcubLsrF{ap2iEqgw#Wb34`2}I|#_QBBXzwKEAE3UUl@g%>LXDK{+U|_E zC=6o~yO`vDrRzL)UIb0H4l@8Ap3^lht#+Vx zcZtZi1ULNJOFMnqT&^eigz{QUXL_Y^9_RAIr4N~QluwmRg!q17PLN879P#uO%qKS0 zwN!lqUgUUoM51Guu9Czo*i6)iplP24T&Yy}#`cekTvAu80a=i#3c1#W0b>4v@i<^| z!^Blm>od5$DxsNoCDa*k#)BcLYqUz7;u$k3!cewR>SXbaT96LrRE0>t8Jqdq#E$a^ z{*Hl!S9g&HT>5&~(t~~YPx)m zu&3}|Kg1oNlx#>1XU*j zTptJ=T*u9h*b-Gr93=?-bXPO>5(KJJtrHFe#5$L4 zxuGKcQ68uq7JWsDDAzA!B~WwYWX|rbqth}*1sVd)o%zF&yth&}OCs;bVWJPrJNw1u zX8`^M6UtJ1gH#29HJIbi9hng3hSqljdOf(oSlD3!hhJvZ%q5;mrc!Uqc+33kWCoJ(>=Dfp6Hf@W`7P*B0>kqQZ>XEYvb4uxz9Fh8 z_yU@wf?yZNBY857({_sU;YejLg2~KPV5amrrigSPX|$F3yY1#_>T2t`Q50&yAV`tE zXZyo8OnYab+hZtZ%!;nq5b)&T!VyZ83w`2xK6l81ZE?0=9Fs;1ftN3idXw;tGj(<* z%KoAU4ldd{ZO?iP5eFb9)P)Cv!U=RQS~08=`8)e+g%zg6BQT5>%^j9!s5x8){aG@F zx=*eILBCl}NH6(j8$&Bu(aU7)B|3(|{)`m5M`)=Wth@mQF^0hF{ ziok>Kla8(XGBm?$B=Cs}ZNe$xo`|l{xXp%5yh<`$P%qiMw{1Rgo*gR)LCM>R`Nsos zh5b=G|F2NWSH$6V@BQBRNS&NOn+yz{#zRH}&QCTyTaF`9GPZX&F>RfV@U!^~mF@&J zuvmh`g%}KyGK4|0^*MM_(alOMV+<}Qht{+_^;U!$-7-LQ^!3mYBK2@eIGJ<-a>#LL z3#RCT-wm?Pj0{EOE~q?oO53JDfBt16ljAX|7`TNwrUfeX{`eWEmLgahWuS$U-5J_7 zQiVdMuyTtKHonZPVRMFtkPt{w7shFdE<$FnBGrv$a=sOpMYs{~Lc6io$y91GXrCGB zDQp$6?f|k_=WqBPoCKY6!ypM<4W?Pu$2c^EVT{6{|t9*$a*E^4HQ0*Kb=ScY^3=2=`-4t|T zLIYAm_@mXnDS{WJJCt#tUIvDry-TN#PWP+ofXOwuD^JAaf~2!vh& z#no38;+cdeG+Q;z;trn*QHx@rILv>}uw6 z)jw63aI&`_)a=2(ohk7F_a*ACI)&9`6sn6{@YT&6@M{_8oh~(?H~Jq2Q-f~uaVEvT zzb;>cQ*3V!3-f;`*R0XjDXgjV0QRhtgyNqGH>y0gS8z1!C`-`kFLX&p%jY!~c@#!T zK+M@cVp2te0_Z?_E=#5MUdp`0TC6QcEdr{vwV_Xpr0v`5!uPU`R)b%Y3o?9$tF&|^~ESTA^*Qo5) zP&~b2<*cU&;&FN|o_AawQoU#} z{TVj5MBF5x&VE3)p)Ij6rQw3j^YU?ySv5t>Hqb|n$}terl5~n8h$e5c#{QYGA>?og z?bedIvHA_6QhH%_SYra? zBDGxJeZ50kY(`PO&KJCbQQ%CvQPM=)Q0%;N>h>IHF3nso`2<>ikRmD^lm!P^i(2`F zDk$2>2-=}MU*KfX3k$|W$o7Grx@Q6eTu&V!n#+#4>mk{ZNO0P-5%ygjWEklH!c-x* zX}(tUnHSIH5UBWV+3i-m5gYKf4gMXLnG40`n3YNxr%aRwgkb{VQXj+18MqgbDoww^ ze#GrVU%q<9O(4(Nmxn|*z%S0sq=3Mley300_;uVz-|1A|>1e8~5_|I)Fx-DRQMCJ+ zU-oWIV=`<`7uaF)ecf!881MTecFFnuTo^pvz{e;J!5t?7^Ue2+#F^V0-R2Sw{Li&W z>)sp6A9G|L4rm^)c`W337}}l0aYmSf#NTYB@{O=9R46oin?9dB_lVZxi>=FpGR%rD zdBsMVaOA`zl8kisRdh8O%=|1!@&o8RaAwlRVIW9!d6BXQx?!IFWN5H+;Jlh6uQ{NY zHh5uOq;|I)Sf{aK6jI~wh{?>;f7WBQe9P(vu2pt z_8k1|q@lX{P_Vfkh4zqx));4E!;|XchR$ucZRwwRgO1miW!Z7Cp3_+ILWh^w4P;=Y z_dl9tD~{eLOJx~YBNy=&rI@)X&z8X}{EQl*4a(|kH_&*98DtOMSxcXg*cuvu-x-N{ zbZt0DnR#q)8PG66Uu5(gE@1wAqg$C^!W@8?7$GB^Ujpg%e1{=Eg^5jWXgRB(R{8+G z|7p{Tr-vcPJUHi^kTWDBWq=ASpO(lsoZskJG%q*Ka1$LT+|MgWE2*35%RqtcGiCl| z%F{Hn+_H4PiSUV4$KJ4X@E;9Aoo$HYE4Fk;*a7R(B`cobgJv$~34BhkYN@RXhQ}91 z&BU%M$&Q}fKMOauFvLBXyMXwCQ*uTlpZKT&Ka^x`!t)WmByu7EK|NW7LEhwQO(L5M z6^s8P0?ihA+)=+W?>TWaq8K^)tc>##kU%k~(*CD^*$esP;u8BdMSi6nenSMd^iXJC zuT9|c917XO2}q-dqR1m!`lj%DXamv>nbKG{gN#+3bi~!IfFckpVk-e z|JF`gmHfs^3jqdJ1P2DD@qf8qBl>6G#6bTatrEozIbIR5AewBftQgA(5_vm`LeTWH}Q1O!9(Nqe)Ez6R^F}etlx;Ox^$hPD5l!yaJCnG{xre3Q9D*$U`3Un z?$vax#=HQxpi(!iAoW1KFhwG^`e5IaVH%sSc`+KtiqZ4vd?lzOu`$b}<}|$QJDqIu z*p!4;9b|~;+pL8q6idKt$rjJkb!pLTow#Y|@37E7Eu^-xI;mI^PT;5Bf?Y0X=L-ub z_zYHd6$KWX^MZPjq+@#G4SSY#peWw0XdRYZ69s}#f8ZJ+KL7>yt@3Z~@pat|FDD-* zaIO)aH19OFYu+%PJl80!khto;$%PbDLl43kVN0uoTe*f?nz;yJ?8kTQNMnR!OG)T) zwZ2P}`iRTwH^y3$bYQM+`uIrV#MykI0Ad5i#=bm1rN6jb&d73Pl%q!ky@zA6wB%6>uVfT;$4YU zL?@-zmZFbn7eg|ZMXr^5T*=R@$K!{Mb&DA(41P9D5WCG9TRG7u$5vNq zhlX4|k1N(&JQO76lH|Y4g=-REgcZS1FBX>K9fc9+@e{4MSUohM6ym0h7n)YYo|)ze zRNr^hT5ov_p(?!SB#^lO86S_PIoF@M8g$Y7EV(AH_I}RsE zaU%u>U3p&R;T8LjsU6YCG72WI{Rr7A!;ZqLv7A8 zKbiK*Bd4c)_7ZF6!lI8*1^z&2+gi~crW4<1(ba7zzM^{d97eflvCLnb#9bywJK@Zv zR6C4Iu*V;)6&ocwQQJ6DFg8to`L1-hXPmPdJeeapL2(vuOu9wWp3Np$S`X>ws();h zF*kAkshDE@y7TjEgAePNlyQTwE1{7TJTXW86jLgvpq}9&v82A{mb~F3@%SGkj2Cvs zyiKfllQpFl5WF=Slwvn0tYR1#@*`-U6&BHPOWj)G@hu7t=BHlI5N!8JMdK|xjiE7j zRag{HCUx-MB{O&K( z0qh_V-5`h(&((4u7yd7c1b&48?E-7kFE5EG*^HC~i-_G-1EJz}p`(tGY+LklGi5FE z$24)1dCEcB0(=JLnnGeP!e3RDdP zl`g7B8Om5i8A_^5h+tV$f)+nwglLOs0TTq<DfUxFE%Kd|*Vr;m` ziT=iQ{^XpR7%=E&BIAci$OSTRZiACT_Ju66e)x_m$Td)DyXFg9Z-f=k-cegPj#f%# zWH+bwX?|&qc|4PN{Yg`5Ae{0wzTm*#=q22U>i9T*pxNz}MG}5lQZj9!Ei?y{NTh~p zWhPiQz{09gJ9)P}kj1F+Di$gz%O&9J*S1aN50lq>Eu)RQoVys{d;qIIx7&3_L8Y#)^A&Whdf;UCdXWDGWs19+_OW%UrSn%iz z_dX*SUmVtuoXy>842+-TiaV`<5ew^5weg5aRWBSM-F)KZrv&yPdBtrBKaGZDeG@qk zw}XQ`29dF2VAYu`I<2u{cB}}we0}(R(maN4WTLsQGJbsQ<5hSrL4`^VeK0j-U5n$U zsujNd8TVYG`UIjUbt;XFMx=4{rqZ**q(>eLE&{$;?JNUf4`vI7dvjkSk2!1arkSZ{ zQYPOnZvEToPeiWA$Q0qU2j}dIu~2-wezRDcbPZ0T2BP8Pxd80c2NGaw>Pkas@^$=8 zb4ot+CA2Spd7dV-AQ4E8=pig_O`zgd?^m})E+$QzUCa3~&3zIt*jzAXoG!?yV?)mGB@#-D3TN&u90AuZ zhR8fKw3rnZmrKM5HQgUfG+6ss*$>H&s$T`w7YqjK9W&bc+Kh_EqNqPloa=XDLrfTu z>?f}*vm2a`MO+G1RM-(*G^llAu4izQ5cossyZxX-FNveTu5ygEfnJ_ibV&*!jEKbC z>bg70V{5Io-&9(qGUdomQc?f)4R@qWfLYZO&7B5RlK(`vRSJa? z%PO_-$eeDHMXEv?Ew+L4-}mUshU`j=h1)x;^j|2FV{l81UCuY&xg(1=Nfe=^(17QcA27?V(`Z8%2*ad))RI43ERX_u7KuxK z4riW1cG|C+d$a25L5%JQ?mu675N8kFz3u5p5swFSd8kx%ZiqJ`DmKM^nyj}Z_-t&J z1-km8M{HD2G&pagazhG3n9(EDN1Kfu00)HU+o2(Q@1On}Xg*@g|37;N{8s{vg@K)& zj*-ECn#K}-lbE~yn8tEJfq^OfpEwjYFt?WYyK_4+dm`ii_(}x$=NPt3!9s3D5W#bt z`4Iv#ROCk_V_uk;IT>R9k(#wJwEwnl3K5B=+_KL2^&HwDsS-P25BojKD>rF8GC%3) z(auZ0fKrX1HPC$+@~rIM@j->l&F%T2qvQRPH9QZ4`H`ZU8CLP$d|kLfQVXtS2~YxB zj?rR$y-dw?K>>7RY_Y}KN?!X-$8p$WZAm_9K4n3iJ0`*h@JDmGA=X6L;v%yQQx;my zR*v$@v8^jX^5S({R0A{KzSco&1YOka&u=rle8v5=(Pa619i4J3rY3V!1q1BrCKPQ| zO?Cq{3!4@SPY3^5h%-8I4NZ9zM39;lEmbftsLO}oTiqza_`WGzlsQ02j1a{C861Pq z*A(-6&(1VQe%vrV<5f`C}lNPF6ri8lWhp*L@AJMqO?v;j*USJp8zOCTjp zUY>JCLvS8Nxk=A!4*}iQ9ckmDIu|mu~;q!`Z#poXq%u&{RnmC#|WuYEvdZq4GStntlu41&OLN=xZ8G zS@~5*jm36iO{U~%$_0|weq<$z9O~ffPHVVjO&5j&xTKpFQaz`BYL!^o#S#)H9Nvnb zX0j~Q0pXZ+#RgO4Qu5Rb^L@=*T~f~?X6Rr?;-JHF{Y)MRlD2g@h(3gTwfhItO7GpXl&kLdpBwfy3412{MgfL1 z_%T0x@0YDZrJ5ga;bCC5OlYYksNyz1g+0VP{YqyBO&E8~-{AE26^No+}}}woeYYdce}7 z#9xFv9n7CjBDfSAE*ELpL(|ruzwk`CW*}8a-}d18g(y>RV@E4f>f&yoRe5iJPxQU0 zZ1VjCNepQKsmG=AhW}UAl7b0F%K8w*kbcO81pfOZ^Uw76T@G6S<=q@fn3YUI>N!l2 zb7hv#j7_!5G~~w*VIn^?GS#9Us-b8c_4DmB%}hP7!;I}i+PB5|q~)n&y4R`qymz0S zm0i;x{6a!8tLN~}D7S)T zJ1I}F+g0J?c0^kUb9ae#CZHRdCox7`;=bq!TU}u_e25KB`@*PYepsYtwXD|a55nyq zD=sIc+2uB~#hP`;D{MOFrNBL?j`h=A$WdJ$FY3(djInyGH1lNK_(r!8&kA(BL>R3794yBx=SCM<33v z#ND#88BX~D1cmrE&5zbXI~vzP3Qd}2LJDC@){jg1hpVCRA`OsL0tW16S%L1-Ihw$X zPsjt9G#F?ec;fSoJJ;WolFWR0$}k7fpT1XHfEi-LK|mj{hI10!G&LJjMNCC}R+P2lOeSbyzv2s5H^!~{b z!x`WHQ?A+tg>0Ok>S)Ep*sf*S1Qj(k4FJa^YRplR^il?0H!+t#6m_-Gy+e&0Hl#c| zJ8y`DTH!vg(s9^RgG5F?*V>FvmA2z)Z*S)S1gKHVYZREeb`Ob0Q1mOv-Gi)vS(9xi zb}XS;Gwr9E8r!HkZLYvA{&F^%J!21H^%+XcRzf*jR^g#cB3i8b=WvrExqUF9e*|WD zTXw&Xbn75$fp{-P9cvqRq9r@VVm)53aL38v6jWHS{khXU-aV!pe3)|cLSP=!tlF)< z@SIg1@@o~M8vG;RBtxCuWYs@Q;*`$p3Acm+Te z7dM5*zO+vn6sDb$@S9|GMYbn_`~IUsCfqjFK(tqP*EvrvbdYqwLFTM}vLGS)JB# z%F&Z90v#mZ?kI^IWHYk4B^Rt9MW9y+j?6G}A-P-iu_hwlF!$H+ZMr${P>g8LbUJJA zt;4HW-F&*Z)J5SdjWDvHWHg*^rN|;bM4D7c^WVXwU@!NiQ1RJK>4>tY6#E`FL|q4Om^j*THFI69w_Zm`s20 zIV3aiXdm0amPb@yLEN!JCN-~-m(KaB_H!K@iSURmJ?nqFqS~(>lns%pNfe?9f!JN> zBto+>`=)_}jMPBfPb^5xo;$x<{vQAKZ_Qk3r@KD54-N!=aNyr0lz-C({zLcoFJiv` zi7fA*ncM#^(fS7?DyT_e3!%LAGcRhwVZ%C5Ja| zO<#mPQE5h>753PKyd7XHo8>Q(S2##24^Ke$~l+CHi??2iTBHt3G7WHi#WZp>@dVh9x}HfOB+Ymc`hhyt)&hu7r8_ z%@d)0S$+Pt`a-q3p3Y6Ru68m@t;nu{svX{s5h9IFJY7Qq2LLL%p$yK+$nu(sj_>G2 z7~5;W)MfkGk;eBq8N>}2*C$4>J9qvDiLZ~GpsON%fO z#HwMxn%qwMCwPRKFF@?*u{BJ7=t|7nB1U1fo|DIW%2GT6z>+(>tCEjCU;r91)JS~E zdH_mZLec9tMx7Mu)l`#;cL+7Xyi;N<(1D;qL39~Mi}g?(!sw*@JB`DcHWzmW7?$aR z^tbnX*it<0t}s?QqCHHlV+d28;+qbb)!9nDY#z&X0~U+KW~2%80N{>+~2!U5(dsOe7Csxb(D zl)3aBIqVFvL?21p?j0_R-$cpk!7h>sj-W{>L)|T)(u0^^S#Q3D-~DJ^jOZ2u=kkJbktCmI2AH^@3I*|b2<5h3&>l52KT9S>kD2OH{I$>#%{>Y zCxJ8VAHez>Gpgx7hil2-VhbtLrYz5pFLWs-70CE;V^&sH>zw=0)J$c#YIDgT!h)@V z64mB&L=WHzyCo6eM{3`627x0rht5y>xiSh?>39C#5J zmOqCN)aEa%!qvMAqAU!`xwwP(;cB}w+Z_>;7-?;%jk-zbV}?{~(arF4a`kCu|0>QH zqVln&M0h=j%z@#WcZ3I0nxNR(x6f7MbuDChfbK0^w@Y86HS;OlPtFH ztsWaW5}LO~%6DzbiMYE8?9)4q1`yOumcYO}eqQfFpn3MK9Z(D4uc5}W@yUt5_5*ut z+*i7*0>>&3$SP@Za2_YaXN3e-w=}kRLMM|GK+>l#2>~QyqVljOJEG zMkba<|5`3yd}MYQp3I++%1xka>riU@uq=>7;cF?FQK+Gqk&LNLYP0E6MwqFZP7TiQ zBRzMdrZL4h9QwEH-pK}>Xdwyt+YbX;AI>X`GCbDtU2YCec)(V>q~Ht&%vL0d8oHa; zt~i})dOTiN=etoQG8$M;(%0eY?7>^ilmrki^PP3SQnDYoj^)dbt%_TcK=fZ0PG8qj z#=m2vlv=?GCG3mA>Ai<1 z^5OT?)yT+UXk#SCh#tFubl(<GbQ3FrTmY_^5pu1*vX#2qg}wG3iR>-x{-(GRBGnW=vw2+WmJo zG~w0C1PQ%K;3_?TDWfF=99|!D*pXNMiVS;voHukXa_%KTPh$;n>U?rRSh!eAtN`z? z=J`f!q=OVLvODPzzc$|pYIi>=;jqW~JPjfHY>cu)6hm?b@Ub+-xr6XR*R>otfA@>j zbK*ITSSoiA8>lw?6MZ7fbJ&g@Xsah%12vhYaX%I*=w34V8ImDC!@DjtCih9hgcFH; zDp4nqbx}+W(oK<2Y+pO#RC$9e#gOHBno*Rqa+F*4WEDp#-F5xG`!@y37iELShYV2y z{{Xn99#`ueLx4c5;snk6OxGc`W-G0))n%g2;p19^TJo{Wlo`|v6K6mR)47S*f^xO>=EBzlh(!}Y~|<(HZX(nLV3)M zG%3L+lcZ#3Yp@};$mu&kIPrsoE|d}@ucE7D#?r3m^a8`{ z8EGN7W9tvMW$5l;Bu{I^Hg~?@sk3qtPLhki6sgu0-q`6*h!!DeBN{jGyb-}>kpInm zbgRYru6Rg_lh|yE46zEk??M0N66$0zurm6Q;92oX@3vsjIzy7${D(@vE~Zv=pDgCc zV{s@XnbmKIM=Z)(yi6o*rq1PmnTY(2A_%l=^8p_ear!Y8`7f#b|IRr7MiB=3CiegM zN#4NOUi_bo@sH89yqeWVCHU6wc-m_dguP580VLlO8cL!;A@D_(|jkFNL??^=JfNYL!Od_B6Vmeg>P}c#_rlUdrpvgq9biH997jw$$oYTQu_4Y~$ z;=$lv zR=k2Q)!&7&_iT6kM2pmGyf&Qud=2;HkQcY6-KfmvFccm}e)B9EqLZy#ga%r&ae@{Q zmm=^*0+t__)ruzestJf|gWw#sh~YMv-!sx>pIq`@@+mQCa|Lhko&&`lhQKjoSzt2Fk_E>o||;u=LiRf+Mx&QNhhKP@&($x#k&!kS>)!^kD_+f0xlV`t+>%v);Ew<| z0vl_nw=I|5m{1eGSz)h9?kJm%V3QpC&r)soDw@tH%kuDa6~HkRFtpF*B}AGfhTFq; z*9t5mRoMolbMQ_{G+&8eJ<;Q-(C~=WDMa1cYY_*FKfGrV0EcE&`@^J(f^yGBfotC- z_=u-A@4q3MnF>LuHu_-%bC86s*ov{Oiv3)j$DlC1B_cIuzFi|vSi{b{GCbr7BCnno zX#u(!C26+3!H$<1YGwb4+4(vzGX712H9|!@lMRXxb-f?rn(a5Ws>z%3^S7Igw%+a2 zX+U}TTc}-aY(m6U7a-mXN8K$#-xI-2@3$saI(C*-Xe&A{`4z+v;TgTJ8~P>j5Ds_0 zQ6o?1u&!ODXZY7LGZd9PIm(tnSLHkFG$Kpq#vnC3R?`-3Xo0nL0g|q?FHY~D|C$`= zN<&(ReLxlW<3Nt;e>lJ_sMmRBhWCepv>LfLfb+_A*-w@&z;`feI8ga&^2&Mk=z9O8N=tSRyGUW% zJiKjB;UW^g5!n`%mB;?Ozg4oC1n8-OAzoU$(U#o|S^%_NEI(Ze5T9K+pQZs8?c-bT zIASWd_|T7w69m8jo6y3Rhxsfa@U@pg#c=-Y28wh+OY|g{1QvK7kbIF&N9W` z=g=U#yS$hjokAD(@2Nl?c0j@`y^<(4x2YG$H{d!nL>En~=o$bJRZ&2H8r`??}_Fdtik=n$GZoRfkGe)a9Tu3zUPY0Dv8dG=0GCZy7I4%73rlcW3eSeROZhd*W2PB#$0lv5qHuESb09H%%zm`0Kd zq+4|(U5dTLb-3|b)@jt5AR_M$KeS-&-6=JjG4Du?&$Dwc`@Y_v5XkBJGb^i7}8 zE|@G{$$r{_Ec|dp~v#p-915TZQy7VsJa86io0z%hnda$Hj2;y zQhuVQ+;^+)quO(IR5ys_=02Zdb)7Q(PP0T`W~)MAXBM9`Ic)JtsC_i2|t#H=oDId>I&eFA4)M}{?c?15;8e?OVjXksw zC@l{Qhx}&YKdj@wYrHVXPEo|fy$Q=wRIxY>Dc|&-;l-lQDESbY&}d`e%rW54`AdE zYCp)2UY1_HKg4_pYu1=7hOF~j8JBTDvOWCV8wv9ve%aan^ZmiR;OQj1KU#muE}jl0 z&m*JO>c{rL0h>7sjcFoOQuPuSv(?G=r?*+h432Zja}e6U0$c4>r}i{Pr+y&{uo0V<`JjBy`7>MbZn22H4KahA!#qTr55Bpwt&E4$oZ~l_kBPDp>ccw<`B+_MsUwF>yHO=`1OJC+)h<8XB-8&>suEeXctN~l zWVv2bI3#UD&1uonT~=l4yx59td5pGtL5JQV;cR??AlD0*zXnE^X9I8U*} zqRfcaY;L|@(T$>>fUktyqE5kWBcQDAVQu-P`gJ{JX-rdvPsx01pf!o*;<5ex;XT}C zWM=}`4WrYPIbiEgCHp>p`0>voUN1fcJvU@qS)Rj%xJ3HY*n#`+#n0=pcwr`|Qg{ik050dvl*apDv< zYa4mt#Ja&W@cpsW9ecuEc`5ykc!CC6<=%Ata6^G82rEZSgE;fz9yU8%4hF0k=$ zgm#*vLq`B!KgJstvUSFSL_y7$fk=2v2U=7y1}IpA){bIX!vgk)PB}1hNUMceZO9@9 zWUih5s-PRu2^P0_R7aOzyH|GFviCJHy^(3V1l0DkXuYcT!g7RsBkd}`uZ&3fM)Zq& z{Dgv{>2kfcOS|}@eLboDZxU0~`_yH1U&b_piH!hMX=xd(Hq2cdgt3c-xS;`4)`em5ZJz3(eM9eiDnLlWK|-X5$K#E_ukb zI@S=bFMQZ;EyhnFz7rSE{PSS-3fh#-c6Ps(!5O`lKMBX<4Ht?KBgXW=0O_zp%%wSe z^A^Yr30P>l`*6Aw=tr3_(yYuX@_T>gvv)DBRG1ul9w z7a$807ndneV`D8G9uj8uAis&aiz(one|eMQS7~T{{7Pb<&23DhfG^#Ocofpr|Jv#Q z=^6|V)w$dWazOU&Jky!5L?c)ObvLC2vpzv+lyArOxX=%%E^oIoO{uc;) zH-1cUM1lC)*nPc#OKk{XT;T71+Hs&2{{r$`WKn-V|7;MMK(@)tm$}DE1N4g)Oh1F~`vU7&?{=+b_X_Y$^da1A>I0 zC3DM9m^Vrk8VIOp-`Ti){JIL`8H|usG@^D$k3?sh77JBa1=*nc!d_W_=-|j3k4`L@ z%TZv3SRbp8Yg+((o(Z6pHbp@YYP-hbL5#gtD~9_ zMeI;D$5?`uI>yknp1J zz)ZU9r+P4C7~(d&bkQ6E3_V?uqOnxEmS43H(I;jx8Z!1bRq!nM7Q0^WsK2QDaSAJ4 zU$tg7K6=XuNkdFdyR>-^SBb~ct&SR}1&$Dqf3Vo0-atWD? zP@gwxuc4XTDp#G+*END#uJAz5CJT)BgRBLx7klA#Wwm;118I96?%J8Ro$#05_(WLP znhL3qsQdff0iWd^DWVE3zr)DTjKOg-`qmkVJ^o5XN{%*kkGPzbBUe2Cqjk=c0+ZJ< z%HBYBp4xyPN7p45yzKL1tCvWHDgpB7v8(0*01dyznit;MS5Q-4Gg_)f#F9>gm|<#~ z-Ub*6NyH!M;hf^;3pY@_VPNfslP9A#lWa9LQ5ZC z<@q&aD#?$Bnqc!8-Lhec^-uc2*cNQop65GjPw?k3u_F?sl^CS-&I8+^gt|Azt9;3f zlMZSA*U#;P9`|DWvq!nZca|t|8aXoX*Vzx0E_Ies$jjYdo|)2rbx3aLL43+eq)k;= z&cs};pvvgm%eu$l?pb@`kOyNan5fOrg^CqAxFuK>m0Y`EsEy~I8fUjdt9|wME4YGF zFczgRB3XNkx^j5YJ4VDWYBKW5pO$YwJaWJ|4yKXP`f<_?xM3Xa>1gaLs53z$_3Tp` zzd#ER?1&X*Qt9m|f`w|G%A)Zw@KdH#a`MgqWVy8LIA#wxmiQ9?dD} zHdcSqQ+HQqs&l+qIySpjc8^}z($y3TDC=1^J*up*b;jWq3y4uguS0D|#Up3PuYOEa zh#uLtc`=7o7K*!2m%0-f;NWDMb+z4Z;;L(n=y$7Ebr<8(%os7dQLP_8s$^bLmkZ#s zQ)R#{QD?NF!9QQwETXK^cw@fleRa3dve~u_=&Q*rT4r!a1XXz>D=j&re{$T`6yg$c zL-oIzehM5#AymQ)&g&mUHmz2v(T(*P?>;MP#KV>Qe05cbM%=N;>fzb1eIonQT{V(V z!phWKS_A}_aQ$_z66Yi#M&`}jQSnwFV22)_;K^E@r?hxGF9Tx8Hkl^m_?i$=( zg1fuBd$1z6_C05xUH7(DyH2Yo)&p&>mo>*f{yx6mhxPFR^VZl#n##0y;y{9sHZPhR z@3SXIJ+EjR}muUDjrjCHx{^EtLASp)AW z&+pOBZ}wIz%P!xvJfa9V0ylI|TN)ep&rz57DrFm{eCQ6Qx=2%~l^w$8)2GG4eony} z1cxqwcR0#(>*vg0tV=8sFFE3Px;Ekuj21IIA&JruAV1J%3FmpENYHyL)_8E2H_gu! z50mKHQzuT0V&nmBp(|^NcEgDLnHMX_mOR1zKB&96O9~=f!{vgTkq3c0=_l@SV(q|P- zxC7H(iY(GQz<$Vhta}%^0CmR1@h}f9N=@Zl1k*fR>>9s}Hr{abwrd!rU+aJY7woW5 zZds)C<~9I1Q~i^;Z|&{5#>l68hvHhoYoy@w6qH+skSTqn?P;9i$}xwALYC4*1}#Yn z#d+gAH;iBYmQ$I=ALQU(+1Vg`*6Igj1j@5Q0g~KFbhMbGH#?!^^$3LBf`gH2Qbo)h( zmzqv0Kn+_0Pkr%P+?6qLi{gbdz<6>>w%Dvl+YeAV-#pX*>TQ?1AyOoj)mqR#-L*c7lD# z2w-`2O8z=P7lZ~ZK`fhTyYe7hEJucSd=xh>GoqXW6d=a?zsLw1B%kw|PY@IZ<;xfT zfBzjt(AMc6GrfQC2 z86ttrL{y~aZqeDV7szP3>PaM9$;LOzrrUtWkp&m=-(|cnbrtazOL%OW34jJzJ1H(ZLw?sIpP-_rXvi;QcKNrXKQEOOZ92Q5ICt#VHIt-3IVf4 zxkmS9*Pg1(bhpFqLSKMalTzV|EYzi`M}c$g8DwSgxn#uHeU5R+*#^z@30q`)R+73L z7^Kb$Ku-G8X?u;u!iY6|JfNA3S)jC&E}J5Rgu;DEL0K9hAWZZYW;}(VZrKNN@+V{Q zk-x4RAd22hR8=AWHoT=I56j_uV(oOZ#W!(niBnMFpuxM04BeW2dPyg&R7?OKJgJMv zx}Kg`se1DCpZ@SR zio=9XLA^je9MSj?Av2RJ2u`G)`pB#6lP?%L={d8^!jI5{#yWI&!LI%_wA~_UKa)Ce z4mH6ujF!Y8#S;B&q|1|*gXAIB`M~YFLR5JK$ccOdjBa0$sB8jYT)8J&z2+0X)Lo&Zhg*m&V;xg;_nipb(ZmFWQC_LGI zE^D9>#%5caaL{yWC^knLC0s*mEQDC)CZ@;IY**1>+aYV4@TKP$CdOXLBGi|0?_J+lI_q>_ij$?Gn5SX!0tFbKV*35DU;}bQa zo78?Vj9Ve!)XP16ZSXBR46}#atw&jT0Mn>s6M;yji7^9%F#=pjhmnPJ?v4AoG>uMD z!&sDQFEozKYiT5iA$){ zlU-_Zq)^IUVqH$EJ3StGmvsz+`*6+dj9`-V^K6=h9dV)5quG(J?Np*9`*s*&_Fz0w z(G@_jsXlwk4dji6Q^qV!b+`;MGEom_;`?`LLRvvkmB(%yCx{sB{B_&LKp|7iW}&31 z)LD~Uf^x`xO}gwvgs7tu^Arf(mV=x*B7gTFs0&%qFNu;E^ak9g?bd5hXlWrh6xA2i zM@}I_wMwZlt`4lZH5dtMVk2#jzZE+L&LiUV<8}}H70$-Uww0JLi%-UJQLi|4Rhri5 z*C|0p13L1e_ihGj=hZ0{vxhJ&>=E<|TJ!A?R5kJ86aCSfj-679?K;qC3k2b(q@6kn@=iZ?({3ho9RV#=Pm!wv3hhdoZ)ep5={Or^4gJ(YaElJS!2 zm+?xUAVAxTEiX#w*cB?K(dY`lwCCuWoI+OiQ>+o1S8mC_TYyt-f9=7%Z{qM5%1w9N z+<0ttBiaBxQc2CHfu#xu-?ULHfm)UE8`F|T2wmSMZN$29SlG!ErVKk%$ikvhArA{S z?`ajot_?%(^BpJSkcE+JCC%e>2$%KXW`4Jyy~cRz|9(drIN55(CREejYTqHZ)=bCs z%9^)ZBjn_k$x=-{{(NNnOEkQ4VZ&jmz@$sh%Ef73v>imPd%B@|bkS>0Pb}dLSuDA0 z^^||=jBBhlz$ThsVD3+Rqz{UN6XS}@T~y~s?a=Jm4c8mpiXG~@kds09#r&0mGRdT?VMM81WRV&wQPb|nE21`4bLiz zTvKyIRuUqx+S>4nQHeDn14j)5O^0x1;l-z9j-H~Ed%5v^fg~}4>Y7M2G?}H~uD3a% z2_ZycoTgx3A&?#`EZosyWGsRPP&-16+~H?^9^d9P3pNFU@x+gjwiOh-@FP!!J~Dv$ zgvd9I^(?v~&mK)|V~aC@e|Ax*4G&tqu%-HUXg-JNuGSs7eD5@w_`ZF{&sjyzKr9qU zLy^P_*JG+iPKjIpVKxkeSff>})&)DRsXAZX!HkG!sAVk3jWq)mnmVjLA+t)k8i@;>7w=@Gv#1;sufj!?Ft7VK|sH-Y-vXT}Tu1SN?psN-c=6*$C!+T$lJ#uvpmS%cAI1{<2@nAPElXG~s%k)xp z3QfIlxl8@t*M2_Amc`Pce)z-oeB8f!*YSn%3STRRugO)rbMIFgy=wH zlDZV<SAq zWHxsl6t#K6QPfx2m%r<};2=L_k4x^vQ?V-(e&dOYQ8^69r8^fpcO4hS|BCTn71Zze zkCJVlLk^Qq>PY$D?@s;|DR2ZD*cr+a-DazJ)$a?#w zoiHmcd5DYJE8Vr9?NQVDkvvf+%Ac{hFsU53w4yJ+ku(uKYbQ!&=Ug-MaPsmEi9${j8QA=M zSzr&(3|}otde0@q!mefjs*FLC zM<;hiEeg0%b2>N1K>SK>&5KcKiV&8&QX`BsnLVx&{Mifg7=yHKoH~vzv$i$#+mxff zY$CUB4w0!thnEaYW!#-JUu3!)c_6l1^3|KC{Tk8y5qwyNGIj)GB+Z80HroXQ$s5B6 zE;&IKR7=kl)cPUhck?|4Q>F~llxFo*4nF;qPG$KZZVcty-Yqf4Bw=tV5<}C}Fy;^g zOpS)jnjbQwWbm&*CiKz7jz|Xs=E#@kG=g2QpzGO~#=ryTsuuI82Ze-A=rMSq0*z6c zJfk0E<0A}s>NL_rjUpz z(lQlSHWISOb?Z;5X!bP?r!_w+_5_~?aiEE<5mE;Jc`{s~kck^O$`vITWvi?WAOJA% z;CqJN!4b2LuoShaYQuOB$`lh~dGO?N3f`Ux9#pEOOpMXB4|+O{>h9WrSJ&A2A^s>j zhXxr3xkK)2xcVJhrFAJ@H=-Z=;OfzApVpO2KG8}K#O}Aa-_a&E-OWlN_rvZoY{>@m z#tCJP0#~(*eh@p#c1gQ23IS34q#oC$yl&w5ypgejYNUX1`a0d;s0=#rwizD;TPd=F z9AQ+_E>UloZ$>VOHTx})Em;gZLME?8kg=Z}@W;eJ^v;P7fU`qM(Gk%DUH@d1`^z5@ zcS+Fyg&HhBp$6c8zgYYyf23$^XXXC4Y&hHfE8U=C{fS>A`7A(UM=0T>ffAAwR-#&& zafq+fN5WX!<#gAQa1=&6oyT{DX5rwSE2ZZeG`ej zI50WfUtTsfJ?r{--lhMNy=57Muf^p6YW`Je^Vk9x&&l2DPZV-4v>_hu(+W<3Xi#YU zFm5af57Or90ICw2wRup{VIKB_tJ|7HTh>?5Qoj>TU;XCi~T^E;HQSazn^+-s#p#8<)H2DFc_IvUs zn58ZE9ZZ8)vM~86B>tQUFnzv{s@47})Z+8AxIK1-s{E6*Li4lsTR1SgL)s{&+LYFA zgPXG~@GbbTu<7opt(JzMo6^Qh==R97@Xwkq&C4hzc8PvXB{X3gA=WZ*0QW}>^dY-Q z*q!w%dF!B6)=L_*e4h!Hwcw@pC~WkPH|Es7czT&i-6P! zIxWB1nX<&eU!So!CneY@LUZz~r4qpJBpXontj`vy)VM;k({t7q%an3WZp}kL^Z3p> zzdYWRYjdn;B0SA1Ub)2BSUVLtvN&l(y$1%NWfjT(@fh;Zoc+Bdi$Jd2x*2O+i<7=< z9RP(5oFT>e35!jrwYh!uSNq3_T*J?~WddD*&m|Qa_n}iUr^gV3>;l5f#mtH(SyIxE zp~AvfIAxy(1YddySyMXg!EX#xG~muC8v|%J8b7W7%oGCO<;GsGKpmBC$<;qmrDWMF zg-;t{lWfi1sQzlTI6CC7N64dn8rzU}yCd&O7a}%^B(p^9GwyJ*VPr2~XC5s5{a>t4 zd^vBvtYO+k7158euJ)?~uo4_}nLow{aM#wMq>g^<&wB5ntVvxhcm3A~f3QH`gWqT3 zwCSgPLi)dbm;d6%#t#4Sz*qj85d7`kM9Nkw)uP^d>ZCv@9a zdes@w$}Qz$itWBj9!eHxX6W`H2AHHFE&UY8)5lWl4!t&)IX6?!CiOObzPR}=!dqHz z*5TxS%}a9Ld%1W=Mx6UqXtn49dU4+5)qqdA9kdX*Uf&nP{ZQqzEDy2hio;EzJfjbf z9a&YaO<38NWeQVzCg8AWVOKrBJ>RnyEZ&%SWo%Y?-{El1)I}XwMyCQW`Ou|_Bn;wK z!;mH(h$(}iYU+=nNJ@hj8t^Dh6@n}ZB?+R;`6~RoX5)#UYN}L8@Zq&;oI!(z^{acd z7F}}GeWSBklL~9Ff{_d+CJ+qW#sr;<0YuD+Oc^r$^5SZFJo z7lo9u_V5Cfto3iXIf|o-f5L{;ppE00BxGhXKT~rXNoJ5}XVQt#-5~^HzKV~N zPQ-A}@1Vf_))8hzaU8s>d5L(&6q52sP&Q2YngS;5@_mdRm2s1tZl=mHwWS*KBjQ+2 z?TYyg(X_tV`~6$)J@YH>;0yEGtKVv|J%L0aYvw)3tQ+3r^S8;P$sGQ;?ol_rZt4~4 zfOesZHc#<6`|79{qwAcgV2ZhG=;+68L7wmSh@v5iAua!e3H)p5HtoOjTmQ`Q{$I@9 zLSWdM*PjnT)K5+C-y-||9`>o`2|Alw8GYUra~pFfaRVD8D`N*ol27B3_2*|X2U}-5 zM-rxgNPVBz=&$w2#9G}dV@p8rr+gfntRdYvs7!jJi&?kt)S5T>Zo$)bOX1aiVQ8`0}$n1D9){=cWmfq#_0@lrI#b7nJmNZ{8 zFDu`$Qgv$8)KdIFLy9wfS+3wo-UbyR&|jdu=AF zGVZ+m)#*5M7hdOjDhh4D7_HURhH#Pf%x*cyNL$QKLOSTzkEnU!41=A`UDoN*sq{rw z4gC;fa(2MZ^3I+KthYGXw7-vG3GS-tlGmg1yU;LYu&$QNT9JNpBCks4+8(Dl^Y2-Q z%j&U1?skpOhPr`TdH&PH7%g>7wNYujtg_#2FFsPEf*&Ni@LEGIQp%&)VA&Z;4X6KTQ%fcKCj;1MF>c3c&$+ z!uG0y4rsg z4Zq1)?X&U<<|%drB39k?@{)z(=@|3fVT;qg?kIv+8VN&1JH9y6+DA6fG_N~`i_ep= zy`FVjS>$$F>v=7;l-P|H7`WXV+t4N>!vDRe5^f#PG?*!KvD|(Vg3u9bC33Cl7}=En zA~2kkhf`nH8_p3LwjQGmfj7OF1*y19tB`=Z+H~xGZB~HERIG#iuQ*`Yf{M3W!eBG?;`WLQ?w8RGMb_wd99OPI zV(}bA_OA8e#)d#UR|KP@gZa?C;R9c0{-tW+To4`?e|Fkti2v6L%|8~Jt zNa|})L?L$wh8jW@aN#+^Ymk1CDEVL-&igeZ4>+$SRTYTPXr7~-hpl)!6vqcY6pjOR zU*e9H;)kVC*qL$v%mlxqJ%in_&%L=c`Ktp5!_>hiqc+-!0ExWDXr!xez- zLSCZMaxN_6_8gCM(AOB8@LjRPql_{!n-9|5q|}&@ot;L|$}Ol+pO92yr_vcG7 zVxub$Rk6K_*5uz-)R}>j{i8^N+ug%vg zs;qcXWKvsFLsS{iQKvj=j8CU)ug~64EDO%xTXk?@^pwnbH%XjdNbe5U@V(va)Pf=O z4X5Au6;LCDL z6~+iSM8d$di9TG%O@x=}wFD(T|4qY=bwbR}gW|KLXe2NwqK$%SonE0ClH}i5e&&S{5}cPl6g^B`bNtc$rpAcYLsBFmJF66p z2XwXJ2(xsXZBPPF>ZBJVA%U>Tgrp?VKIEH|3_SLfOtpIf_qr)txs$l_gp&7~A(EhkC;2ollQBcg4Y&Y2)5WT|4py}2~v1V9^ z(Kd7d3amWV8GZg@N}YCoRHSx6UXGTfMi;<)+T+q&^T*>CZ%8hl)WykiKGQ-v63ivE zwmaTomKu*x$T0Ml&dvVM{^Q9+gv&g;#ER$lR}*_ncSmR1Fi#F_!I(e6t<>X+Wk^3Rj_jrRJZPW{cOCR;wnBlvOVhizZ+*Gj z-B$XlVrZ*~nX$zIBia3^!QI!uiu1x7r*|Z?8pyM`ZugW97zRQ1S zZx}b}C}8y(7f`5<3mAvoU)-=xi_%@ZImop+#nH9V69*05n2y&f9HmKPm#O?^QPNoX zi@V+=31Rf0u($tGgJ)$gZ{8}Q!FgTBr+&VrFfnbuAvkIfZj1?H=UsDk^2t}@rZl>A zPYid5uIG0G680sIg|sA$Cc`SUTwtfbol>$v%~M2UJ?7m(hO_xtY6dd2-5`ZCzAR$2 zPw4HeSaS`scE)f(XYas^p8hLzGP8G&69?Xic#qQ$Z4Wa|mb!Uh z6UCZL{?lDa@<*X(73cgAsu#pY3FD@K$4A;nTM*Zk1B+||io%YiyTK*Dqtp9df<_o8Cfr1_qHTBR;WfRNIG_ckQPazC|W3 z4a+ZDYY=kcuXh2J)gEjDd(_~+8_p-~K9uB;MdRgCO=$fYaXge44W1?-0c?*tLqZO( zr#pi;IxVMmF_&(pRXi#<{7DP@$JcvqP4gc+x0$13k**u97lQ9-@-~)<7#p+TEqtBj z3-wXMI`|!@IQh%U-(_VW;L_xH3)u~8jUox)~bE2s-Ov+fEY zWLvT%CY$_saRonypr=ojEr=wbP zU0bMKV?d~`5h0Odkbp=gD#R&Mp}Jp|`4+(b!JQxf;{D$WLh-%-?86g3`*5j$x2gZ9 zKHSmibK?)mXLJ5fURl*mwZGmsljmPGG^7IypoL}z*6}}e%*w413<(2KWWZ1)Rg@=; zm=T27xHHxzqP$PbKO#L69-g+gm-$C_*O7!cl%t?tYU*4s#=JH&FE=`dKPBsTs83Ig zf%=2;c%^uU7JbW$P z0&>+k`(uL~KSIF-jS=SHd*+BRdtd*u6PX9VSI?mpfI;dikgi0*)7xNGxLV>Z$#RTuEf-o;&v{fW({94ZxzT!k{gemFf3X zq~wmKy2hI;MVMSbjtE-#9NP#{2?zUlaBPj4vj52*|IE9wRW<1!)~33Gnl<6%7RD$}ic0N*wu?S!7rDK`naFgF*GKWl zgDfH|a#R7EH7dz#r8~WB`gHw6dE^KGvGYu8c%gXk8aDu5Wz1Px(+yt<-WF}S9}1pK z$H%#{dDxCJm8-HbGF@D=+4o!DlZFb=Fs+*iR4KLyhkP@m1<`)A7k-U+=e_}f=t8o{ zf$hMK`=G@!ptefTdN==RG^J-qS>Si z|9dG<)i43(@?=|TG;c^8Gl|iVF{!PtjK+{PVd#w(Pg3`0z=VeZe&3h?_FhvW zfHt~L0kOU!RC_8WmPGAkRgdR_Zcf?ZJ3(*7WWM;6lNslg7n%Y{Y(-m{v`i%hHOS(9 z3`1pJS#XwmEMt#Zxc(`0Cm32?!VMluq)#VGXfwo+c}_9n+umn>@7HsNBi@*-cLe|A z3pMdq9Mi9pW?qkGFc^&RES0WDxd}u2!j_EPvT*tq9&UTAWJR-GhF7c^Ud44!m+0)4iwftHicxreqyULaok!2VBp?5|{?_{z>m{~0`* zM)Vou_J3Yo{^yH)hbEl9mYVx}6p7SLqSffgsDtDw8IiM9aqXG9YywNaeTH!8If+Xe znM`;~QnmGf2j+S?QXgCEO_3)kEjT814Q)cD0P_lm6GJ@6YK~R=1325pB*KHfKcnbF zrf0R4MC0t7b13cl$Lrzi$MgH=AO4S)3GyHBxzS&i=x{*ShqcL=VwuR`@?(#+>3Eqc z4Gfkp2QWn0?9K}_xYWFhDstPoPU9PUaowN6L zFotE>cDJT4*=oHJT_zdJEJg?19Wvdhhpz=Kv-Q|rv6B$NQu}-_J$ZyU9vT}#fj$@( z#A}hivQ)-syW5$JTUN%ai7(`NMp8Cl%1I}43We0chegBR2F(r-Pf4}nzRO1u%|>Uw z9$-Q;qAx?oWcZl(fH0|MXkTEIrsMh4H+(-byvU-)B_evLOzP@-YB*S?A6Mt@g1XR% zadw?2qEGxb+cc&KouSjKM%^3xt6nTAb>wbA^vy$lM(XK^(~l@qxe!~Ktfp*r(!WH2 zm)9q+y6bXFezN;>`Y-ke5@G@UO*;+q^{C$k0`~~zN}=TAXsZV(_VO}LV&8YyhXqv@fXzM{7Vf;W{v-_bHwpSC|HZS)on6?piqaT zKmTTn>CGpZjVpCj24-!&9Scuq(0hoHWS!lL>@~q&d_1bKq1`6SRSKF$*3D-vG#*yz z^|Li4-U7~L9z-!aC}DxIHe*r{XRS2LB+cll%Bh3mML@T|icawqhq5*Qq$czfn@xkt z2MsGjw4|pqTP`3&qSYzeVQAgZ#a_oN5ep;I_GL7?`Hg!hSk3ZNN{udq64PN}CV+a^ zL$Ny@6Nhh_d1;m0Zc>u?74jfY#*|Sd^4p9w^JtpQ0ttL<>vg>ae95ecD@=w(XH;Jn z-$eD{nR&bV_pcR)77=Sd12?FG8+B}FNU2D{AWDyMz}$0fb9ZjG+PkO9GR=o>I6-F| zD_ZoZZYApclDCta6X$+0nw*eYD7lxs!s=f1!C#M)XVcWw*P3Fw`b%C_&mf6@qE*`fxMwBCw$J%UuDJ(z)E6#$E^Co8mG8fw^HjQ#yF6VnYz)Nle})o%HySF&?+V^b z-hCI)zpNXd!D|mTjpE|X%tBtO+0!7DD|_5Q^mYUP(Ldwe6PD$roB509h7aO0`LX_O za^&SU>qmq-`USABG}%Jz_9a|Jxi3yk#L%)gntu>#KlF+NcPXRhBzP2MnFi6ESPXau za6`4xb*jK-o*mPM^FKO5+?K$n+m=hYQ%^)3TjJ%}+YPs6AcaTo85ZQLHbyX?b<$*> z-S_oV_&uuq2l=&>=loEeIzY*QwcVO0`BEu9el=+oy&_peusb&I`6cUZc&skjpE&?S zHj|p3^$Zipik#FmQ4=|a)8s<ZemFkUIZA;sgcvCn6!jMp_Ik$ z+EdGv5WS|G@QH=_Px|`|w{Zhe<~=XW!*`DUj1+vgOkL+ILwHnakYpCI;{=Sr?`o<8 z(T#hYL#5hzS&N9{n{vlTXNoAu;2r3(_2R3=f{xmCqgj=QS&6KC4x@`sNJ*}hfzGrX z?kzK?dhY7Z(R1kLuWeu;jVFlg5PmnyJ7#*b$na0tmj04c*iI0*=d9-!E{}vm@|C2n zCns-olv0_Wdw0r2En|w;y-!ZcEteHWqePPzu}e1gZm2*ur;-L%MuHd8gib*_%P;M# z6N8xicL4Lcll{*T71vILeU>8Qf=?TK1H@*#@`RQJOgP?jg~iSGp6DCIaLS0qWGSa^ zbJv&`)Y+_q*K>s|=oYE8LXp!xIKW7{w#WWo2f z4F5b1S+zXhT^+~J+djXc#=pCW=qX8Tx{my5_fq|}-~CbJoFoUROxN_EuPd=^iO`oi z-Bn-QX$PWX;}6k_7|sHVsYf?;FaUk-euH$x;;W$tR=?MsTiS>2HGn@Z_gL|+DlO!w;&nB zs2H1+q*Ii*I;yD~z3-6gA5ADui zGBC}|%!cmr02rXF_!iwcLVrTlML6VaNgikq3)nD*PNt-lUyNNWoQO_}6Q z?vVPg9x$M~@`fg7CWSi!x^Su;2GrTyFrE9*#7o}xI}OFUZ*MzH&O{MJG>ItwjcB&EWC%s zbKcr%pwF9+i)2rkvA>LW`#2tb`Wc{p9zjWHyLK4yEW{^eD^oJKz)eG0+Qg=eUF|ps zn#)z%xdDI+I^hqK!q|eFpWL1iY3@Ik+e&)EGPSB?ZltRx`}~Jhq_VG-O%?k;+d}q` z#l0|)5CgFUa|cocFMcwGlhf^vfU>~F%lR=gHb_Yt-Y9is#}8TV5Smt~3cfKcN9M|x zOlRG%C>7r7^oR{-M5F$~8)3~5Yk>L+83u(B)`jRE^9^r<(tee7(7~()L;}&I|8;4H zAK=s+G=Uv|+dZJC7##v}+<~W!wH<7cL7m}4j+HHXVer*CaX9rnr3JXrBMo^F*f7Sw zIvu7X&Ha+f37JA0^@~@yYi-n;H|p!&lnlGe?)Mo)AQb&Yrdz_7gJ%DCoR=$rPp8-) zv7>LNQ`A^f#BA4ff!XM17?nq;=S!3>bzM+U{Q#VAz}I&0;QsR8o^Z!agoJn|n<9<) zq(m30)00*o1dpdGuK+JMFn;{Lq1-Kyiy1k)1B-&`z^-mRCd>Vh^LU&?!Y~i7FlD3< z+0z1HUWNHBO34axHi&GKOUNt}&ug{4dE^(|C(9eqCobNhZyYHl8U34X*QeAeb zHC8t9q~%}2Hbnm`;1$6WtsSGfXERM5Z-DyR6$P&HcI#4NKJ0~a2lxavH+7HYe3Ebbuq~ySz2r~QNpnAKO5e+$+E|HZJHXG3$jwM{(W55bVpq)(RlQ@$ z1C~-6_MA4in7SMwk(jk@K@ecOmF`kY$E&}fg2(V)3wEGYWQgHoQ>29vmGXW5XTqCT z;G0*sk1lh=Thll6O-#Ha&Z2}wl@a8+F%`|A^sqUQ!UoC}Wj>3*#jh48W>g)wk~(sa z$(JKqOo>ixk>yI7p?1q3&>Y=-UoDT-^3wCIbyjy3NLzs~6XUqnxYt#5q*#{GaT|ck zlg8(3^$2CPwgQ(LehWqJM6<;Q8^!hWxF&z5%xjyIl{G-LGrimIiWAjEnE+W9g*@w1 z`PRI+6Ps0Yg?!javn8B;p{%ybcP!LAGLIG4@LwLR|SqJ4Uli(_{t zmu|^!*T3f6HgSEu`}qkeFu;EKBJqFzCPwm4I?q4GtE$$2RURLcTpAiF>?7=i&Sjfb zBuR{VP3k33%B3Y1eM)8FfngJ9DYiO$*WO=;Pq}(;>?h{t(OJ9Ob)Pa%CaE9=G~QY8 z*jmTqgrnY}?EC9!(`P7Jkl}9+gL&E)iw0dMO9M=rMYn>iHc9Y2oa++@M&(iGeW+hj z3EY6P;a24)=%q0wxkswXo_J`_OL z*6)!K`wbXG6k#L&{S(Xz+6a9k(zFU|e0=oYtRA)r+iP8`Ow%KF*ZQ7hE0`;TUVd#u z^5TclDFM^3SbB#x-NwtAO0o2#`CxDX6{>Gb0F!1H5mB~Ri>xf8wgkQ+cV12xUN-JR)c>|1pXCEm2RRSx$Za4_DTv^2~THuwR!0WONJ} z52}G`=0C?BV5KO|k0PCvW=z5?dzD^P$Nx$!cF32E8QxkOzk@@|;c1U6N%ZQrwz&E- ziOCj)({iIdvqFHyG|FrV)IKeEq~`V(@cg(Pv{3Ia64lEU+zJsY{T=HQ^6|zDW(Hr_ z0UMOHp<3|h5d4hXZ9E?&lXg_RHG1)gz<$5*$I@%JN;0ER1Bwngz+;We#jLeg3H1YV z-?P(${y=oYj!uvZnhlI~gas5%1fw=b&AQB#fO&XeS~RG|$eUNe1z;#3@Fk_7?fGj} z5neaqr_v_YMS{y~Z2+6ic-M($KwK|2B1{KECn?&!XTbgulbfyX9nc;)d7ZL7LudxS z_}DT6=BdHvF>N|6{_2-ocf8HOC`LMtc913etyT$Mr%e|P`&Rv^TZsqAU_sm#Yz>y0 z`;yHZ9k@eU#c>^R;sMuDBuzhrsV;&_+yBwC_>C7#H1z5ZyPi7wTSS5ZphMK+c7PL@ zVjN+xn_H+-(!@Q~48MPCp&nft-fc%yS{tdNP5i?Z)}>sK-qn(g2Ik!K=vv=bjE^32 zr&JeHcF&s<_TEB47$NGmfG$xFjkD!qi0@aU>0bW?gGr5}Vi*PX6$kpAyP>4VcTA;C z#qM%Kowg{>E}E7yu>kY&!292*vz=^Hiwre25Ssy#O^Z2Dp*;bylE=XaIhlBLnG}B- z^8E|Y^2j8V92HZ0)Q(2hyaF$zPc1Y4h>&A~R3npJQE$ z)uTW}AUeKLw#7<2<^6<|^@T&3UrgR0%Mk-D}Lhx$!r74x6wa8p_YlgW+ zfL-bIrK%hn_QBpp%+0pBD(o+2)?#b)#v)&ae8ng#LhpMba7 zd56q;4Ws|D!8V-~FuMwFZ7Z~@-mlimj5MQ$C{c{!W1Cm}h*eq1Qts`QP0&an`M}yg z{DUuulxbKS;4A7zPv z`_eME>qN`r#9PYd`_r@9m&YrZKDDY%*H*<#G3&#r$BqsmyrZEg^sFPu_O8W;d)%!54)fQ-NJ)QU53J=_63{_h8}3xpHAj9jzHXd7uf&gVV&37J zPoOr@Cn2*RWmXBjZsb&T3WWba+YQE@2R4rg0 zy#FZz6aZ{q->jK2O);y}+pCxgMiOy@oLUr?hl$}<2QkUSb00q!v)_jgy+)6UvICMW zwjROzDsRLaEfN(V`dssKlH+F-vT~PFrox9%tuy$4VkK+d+YcxghZ%y%e?jfNf!(rGuLVA&s;bOsD{SKRw9-q~ zv8CoPjiBCvyAAiK)DaQ1zWv)dc->JT3IsN~ZZS449pks`q0t2$`U|dEGfpu2*xKn8 zpZbNBrLoZ$p$CO-9A(-mv-YaMSuLi@sf?v0O2c41HK)1C5md2lnP~GL`B~` zT*q3Y*{m!?h!}1^nbB!UV^oS*#?l_bmCmjUt=1#~$WFAMPwY3N1=C;{Dn1^`^wpn} z`{H|Gh2GD=2SnHw0v6FbpeC>KZKbvM5I?gh3zaP4cx7(ew_O8D!!I3dgP~@|c8Tj4 zq}d8lDoZxezvm5Gk5=t)!HRdjixkwK&0c*qqBwRtua5;t<`r9EC9WH!G-i(jRsY-lGycOV{CQoAw)0zK3KwccK}>)f=}d=!Dszuei5%s z1fGbrdwX2`o1c-^Uq$m)h?Z_3gL3v)KT8A`BMmTL(`%o6Or?u_xmS!aZG$2K_&!fa zwvBC$wRrrxi^&_<0IpZ?!Q~BLTl==~d%j%4?h#e3<@tos<~1b!(0eQ5L^Z;|Uo~A{s2d)yU%~^wfn@0$+wKostvfwJqd@iB zHgQ&Y>n&Q%YZov$JFJAOLY*3a zklN=t|FP2K-;%HY`B3ZspY-vbS9+AEpA zH5V#UJ6mx&feDvR)_78)WniDno}?+xC3xm9zSP>V_sxHVJ@zMg1xv~DRl3IHEXJ4m z;t?;9E;dEgT6~5^GXLJq*V3rW3H-QLP-QkDW|rwfZs|?!y;jgE|5X_3H8B--?8Q_) zAJ@=7j7T|-`O?dvC{kIps3e+ZbZ|ZQXU}dkuYc+-9P4UBq12=l~yMO`v0+f@O2e`u)bn*ELq8?B6oiyzW_cy0P zkwtUsDa+L!W?4ojR?W_Vbs0R4k*Lfdw8>|V|SODGY3K|raJ6*f|@fGvG3AD zNa^&}khgaZWTg(2e{N4GNnb#m1B0;e;*{TMhQTFp&EuquDyP~-XG#tny9o8%qbw6o zswrM^sh-%(JLnK;z*~LqL&{1UC7yG@jt~;^#%yxvl>LJLk82Ofan*|hd z2oq`vu1Wpx4=#0&aOy)mWuCa|7K_Nzg;d!4D3GrBmXabKCbrS zh^_XQW|Ml*lud{!vR6|4E`0X8mfb-}+=@MN_qVWc<1B^5uzxGHyLENP3R)XAIbHP? z)zpm@B~sS@yr3^3gZm8N>I#nemGTui;Ie8VdMQkXeE6ry!-nG}?_>L9i`d8Oqux8L zKL0y`U8j}W9A#g6RpMNkb^5N#`1OH`9Q!?`Sb0RUm2LY0pr{-xshC@Hnb}IJ@~Em@ z=GekU*7ZQ_Bs@M!hs=nZvQm@vP-z)6pu3^B;yg8|Fv)s|j8MvTKD9+MGp#Vy;@5$y zvt?e6iX^J$2T`MNYJ~a^GY|o62ZY>{$O8W)zX5p%IM-B z=?ZfI0lFXC@4XRh#id0iGNr&mKnKkuIMb!b4ki(3+d?u|P>Fz3H^FQlXtfJEUg!9W z8umfSxwTQ$dxt5+`~3$ILgwv}V60E#h-im-pUgQb#~VdLR6g1@dcYJJl0>XuccW-f z2#^^C#Wq}^jJfMq@{ZZy%QqGSY#1pta5_FoAWVG$PDcfHKZ==5tjhcxDTwc$=niZ> zU?GFI9Lk)irr6Os>s+Ue6p5~&7F6rfagKVbPJxlLDA_`ZxV2cuENjrxP*Gn@$k@~5 z7|$R`14;`T6XgrY;^6=ivN9X`Qg}IRmqUm4!`%2roz+8DgUO|a!9&(h>B&|TQ-*I= zrjnV{9dY>p8iF+AF7T`?!<^RD zVkcX(v$>_z+2`psw`=KZBbz(*3rwNrI^XJ@qk&o2+9moa;TEU(gW)0jFZi*(-tzj6 z-R}t(3(|5-$EZttGTaY^jF#%mV`)Nldkt0t9ylS$C)JSr*!jgKzyf<#YVob%h3^hDgvhjrkXcvWvy*F`as@4sU7 zH4&=fN&g?Ty<>N!@wV+-m5ObnV%x4H72CFL&Y)u3uGqG1TQjz8-K@6OZg;PJ+HI$u zz0dsu^VRr2bBx~@y?4sC4oA{J&uUpJu!#B{P!Wt0pd)^tc+gw@LDWfdD(?1V$KftV zpaFGOpScQt_?msjz?{RbJNis;;WKpEpdDS*<5H$KVN}t{G`U)wm8B6Q&X2MxZ$12c zb~B}~WX_@R3J!$G2aPcXaP)vhG(2J0gbGf64IW+&t^`BE_M-I=L+Cl$lmNo3d1!(( zmShw3)Eb)^tO>tVNgvEV1*%q?5GQNm^|zABBb|Qp`lI2|*Z4 z#^+au4C(k;yQy$x3@1HY`Rf^sU#Y+=jF(U**%LRq2}b=^)Vp_A^G_VF$uMj_Ihj5G6IN66@=y|XYpeo%4o`Ov(Z!J za{Qq=C%yiaY?b|%b%lXD=L~8!w9EHQyDZ?>8%#11gV3-G7575Ajfh(LmE|2TOd&+5 z+432^_GFhG*BK>r`Q%iY_Yt2!vY*^$v#XAeK&NLGa9g-GOuyAn(Np0Sd*xer!HtP> z6y7L$xfRi^jEVfh(PVI51D0`V2~S}5HQPoT%__w9I05#+=?d5K*slcBwsN>BgzYM| z-C?xPM_Cm}_)5B}{~W&Lg3{6H<@&(<+29J!DhqP`yy-z5AArv3IWp*8C~Edi~1g05-r>$hZQ-2q=)yzBG_>QRnO-+ zV|{N-Z&A}eL(j(nU6YqwU2A52c$2fc^w%{07{~6x8*jw#s=+off_NT5_|Dt*UcNjQ zu=SV{3EuF@m|9#lbj*;XMU3Mp7CS2oKmADVkZmE`1x^>Pb@Dn++-#AEN9*u6yXXG| zf|U{&&^XRl<2Oiq%UyV4qmd#8SJgtY)KLbfg z^4L&+pC2Z0fH3tArR3o0tE6epeE#>9Tz02Y8r!hU^X(HKhF2$i;ay+U>s ziDuPRD`K2oae}g=Vi051C9YQM#iqBGbYT!;QhX@w31FRSB+atkQ&(+>$={YOGhEBoKc>B%9FGeEIFI2YWv#v;t&vYnO5Y(NVvGN#ZNpKC!Y1Z2fI9)c)Zqj zjA6ehzxb4pk@D21@5nQdW-49*JS>AgB$&YXw`Q%|=&wF0>du5d+9B{VwE4gR@0^iz z$-de4Gm)1JkveUE?C`4&ueGDxh@&sJU)|rnsd}9e?1+A)3tSsw@Na8lO#at{Lu3sl zYWy$79OD;^{y!4_{O|f0@&9*_``6&3AZd%jh=>n}pYUHwLKjnjRI>Z?gX1^Q578DW z0mLFF8JEcRghs~Y-0VDZn0BYg?$;Y=|99c-!Dzwppa4M%-kwqJY}2<1&&DC$F0U8Z zZ%umP-D8zeYCq3U`%Q%^`X*zBT*k{Gg%NLycP-b%%VFW-N5fKFE9S$5dol4LAIwO0 zt{)JJ+^e&G2zH;|BAF7Zeg|AU3NIaW6Ut3n^pH=ttx7BiABFb_1xcKBHbyR_;2{L+ zhv$n}{4L{GYO9Agy8i}kM{DH%cj`2)5iwnVjW z4X0~tTw=oscW5rd`+yn67pw$>NFT>-G9*GLuMf;bQ@+BgJl zEIgxw|D?q&Hpcgk7z;?L1-T zc%U3^-1jdX=T~Kl{CDxe|5AYka$`0qjHtXz@kXQHjG+sp$B+X?!HeWwjpeBVFj1jF zO44bFWKY1!v+P+Oemf;kZR4o@4Iw26Y(|M$1>>eU1qM%gWoCDEdO_F)hz7*hQ1A5z zOgYmXPOi*oDQ`=FTi@p^3{bf0D?u1`uozD#Vnggoq-wu1hQ!D$2#S}DhI(ep-gESa zKw7hAuTl42^!!cDwXQU+B5_S9qQm9qCg;I#wje6v+Dl|ANG_$(mXp?`pVHzetKcQG zf-|90Qyg{WDuzKrJ^Wo0@&s=2SNbnjQD+L-NsX($m|Km;1xYS7a%^Q1luv9}!!eu5 zZf%>!gK+dlVaYN^NAae(rq!Bl*2mN8F$?cYz+BJgXkVEhB4c#*J3W?Kp`<28TD5!L z*>l9REZ?FrL*V3S;5Av(i~mk)nmB!xGZ9I)mUiU5rD4m+#%9_rKN@?;gtS?X`}|JH z(UpOAltB^#BR2@Z5;(xOhB9fxaK4BrA4Jk;Edn&(vI&v~;`s3>SivCyfRAolGdjDC zLqgG+|3w@0e}(V-OLX|Zz#|R^JWJ+(Y}~$5)&7rSM*j1M?mvE9z`)VzAM9D^p9;tS z7}fq`SZh#PSHw~N%3B9j6Y~cxFZiWFT*&(CSg?Y?x|%k?AkTM^EV825jlBg<(&ch+ zJzZ_%W%H?&nT>;M_v#?RC*dAw6$6c|YiIHZ1ax*?aQeJGkJ)~!B-W!)a}I=A2a!Q_={i#M z*m|%C(9W`)jV!JjHpO%;hUm?f%I*)!8*_zc%W&fj7uNbE)qR>kr{?n1#|k`o`4vs| zppkf5>?6bG<+W1Z??Jw#nyV-1{>hXXCJ!r7tlMh2ofdJ0B`!Eb3`<{mNNK~92_p@w zjsABaeS^myQN%&aLLomV8B$z?qLm^ykOr=?Me0@ja_Hl;DTf$CYA|1}xsaTSVWVYP zr~4oTJ8&glbBWH9u1Xjht=yfVpRG&|+zzp3!KSKGxdqkvno9DtBxJ9v+i;|Zwv&j( ztls1riaj+KRni(2(K>x8gUraruLNPmwRjL!8mY(qRJSLoRC9l)_@Y8dUUCPO_?tyZ z%HJ1WyTIBKN^dLb2&!NmFc0PVu;%#u7AB+H#lw>hB1|2*N6%RBbA&BgMf`CKTa(7o z9nJO=*8eSCEo7StJvx7R|1s)K8}HfKL!qSLdH&}{krALn@&^GEChA<;WeY3@#a|yZ zA5^Ea&EIT6IBEtd9P;DeB44qXN{~jhk%sUxr>$v%D;?If?(GUz_NaoD&rdGIE9+By zqs_rbj7C)8pGPeDzm^TWCFv!{0;qz)q}NgdH94v5cG)Zm80d6SQ!I?3!LXru%B*q* zn7nG4r-Ij1su}p+{noCY#MF4 zH+EkPusmX;nT1NqUbN~k|8?-qx$_zC^o8!T4*$>uplnP&Rn zyod@Xgap~c_lMK0L}8Hd5kWtqy>)8^V&z&&N+!T}dxe^wfeUB7Z-u~ltVW0d?dBSM z@_XhQ$BJQQdLw2J#iXI1jJ0jF%z4iX+6Xzo?bcMw!jLT1Vt4dR7Sm=|1Lrc*>(`&@ z88$wu@ppKCF9gHNNHkgxa#Yd{4V-LbW2<-DV+aksG|*LwkH6W3C!q9%H^|{3m@jQ` zCO@C!)F3!~^L<6_#GL-3Jh_qAxEzZa;UXW{qo^;(!YNni~$ zWjf;UWrpYLlATYnBTekus6B`EXEh#O~!%JZVVG#N;OC6ABbyt-n?%C1C;;lB$h-Gk)+r_i}n3Qh)x)<_x|9 zFgu*7g=xdHEsNe>030_v9@k&n9@n2wyFQ-CzeR7kf;e)P#f+a`1S+tp*VF8J$~Ua< z=a*q=Y^cB-)+GTt_fCT1=cQHa7Bb2-P2$p_OF6S~C%G!MaIO#S8`M~mc6pH?eKn7T z$5@?4tTa*eEo5$X6nc^kOGTIz9m3K$vsGYL+?~xLHEU@Sq-3Mxap@JkhURAFCWbA- z^Te?eosz>*ISM$V(w2f|F&0Q!&5KR=QthqR#}Slg_zY4>BuY`;+8rae6H3~I$k`-P zMs(&K9Hjs5@^cD-68h$8W)u5W|9WbcDIf>UvXs2c{|sj1KDHlQpF|QmF9Q4c_-yk3 zz5++V6n67R|IzQFzYVO=_2IAlnXnTANHGfJK#S_uuZBL+8U(mF+pb^jv<+TTxy1us z&=z)o{0go?id=^TKma?9Npp9k6X?r0WvTMF<99x%eWMES*6F6-PG=)H zD^Em57D3@vU^tO@LI}Yw`|Jm~XbsoZCIV2N{wO`9bpOy)euBh*?7#cXcyft}Vz#Vx zPyF<^JE~9|loGr0z=4HW=CZKDQ>SiM*w>L;i+OD>P{Cm~S++}xs6r1!ar|{%4B#$4 z1*z7i^>o=;@Lu~s2v*0@vM#-X*OT$5_97lqZAhrKMUT;awb2Hnl~-AIdt8Sn6k!uC z!FXr^8Y#n2nn8IkZ4M^DuDZgDD6Gg{r$_Wk-iAUnW74i(pL>eR;Ih7qN+aouyd#a& zUkslO6Oqd^5Dc{0DdlD*(x1Vgt67wJOm+H;m}?I-vdcGQbbQm+aJFx%Ucvb;IWvOi z@)Ur;uPE@ne|iJ%T^E#q7*}B~wPpJl2|cN`Ev=6Nw;7<9M{>2*%B=uCAr}c-*2w0< zS%g;b07(Z$;#jKRuSLCRQD=uqqdraB@+=B&!(T1czGqW()ZtDyeSVy%u)hz8U+=9;dX=fKPieWD*c)(x>CT zg12=M_*6Ji&td~$AJk4g>?8M^Lh0=!06n1o`KJ4DzW{)9Em~0WulMt|MSbME8hTp+KmEe`_s-In7F0q!2Ij9L_AJ(nGbxP^IEVGW4~ zg@?Y*Dhu@3W^744+yG>7FebyOjBJx50_w35v_OJO7nxIk@DIv{93xrk#HTc-=oBey zCTGrPcvc5a9Jwnxcevz7VWnzjD1`63zRuqDJC(#NoZXDRlS|%72uP+%w&ppSyLCJp z{AhYUFCR6?tLX*~pi8F~nnYuk?wVy>;4nJ|?IUtK9fE~tR>##yxX9ov6^#D)=sz_Y zqHDu$V^i-3+y=31Hxzx}nF>SV{j57h@gI9_3-^{|0+K=;eS!_yNf$ z@kCid3EGkP9%`s6pMBIEHu$^wmJ9x4&@$F%(6ra|7Ye+)#ltQG7<6LxA#|6B8C4r>e26Nr0k2JgD@CrK=% z3{!@MQZ-gKpweIq8-0ppsUuWq!dbOlTV7%qfkNTAhMY1-d=&=n>7u72=s&o@i(h|Qol`X^!!M)k+x#7F3k^-HPEu4b>waHuCxWUZrd z$NJ+%UX&LCYnN<%dO>!VuozhP$K@!aYuL5Q(bIq1BYbzw=~MUWFGe>J(zLIm8~79x zN3kd;Om!havR7wsC!j zfJC+@&#s@MDVJOv9|~Fi`yiS4GHQm!a)R`tkV|$}9ie{?jj<#IFUS0I4iINJfVf1s zL+L_JPps{3#wb5EFTd4(m8ns0p3cDt2>$&j_^(bm{TZ*GTH%klM=Q)iXI;{BauG9H z#*iU+gBnM)DxE%dwzV2YMx7fTqLO6s=g@2DlAq3>65d{MY4>gjbu(8(zuey%lG9P# z>Z}|QRok!E^{Aj(nOS+tl)RUy;&n1rkW-hjSu1hF@B2%uFGTo7v^yAe&dRM7gr67f z+C{jIt7Kaxh$`;BWDfoA)I%wfXSP94B8ODu8>+-qrHgh}mlkbJ&4}3e(G>-V7Ke7C-oCgI*lGGsh(0qbDjhPvvHA%rBL~z`o-fGC; zogRz686~U1@A%N47y}FacGUne_C2-e`*T0UD}0sc;+~W=OsES?u5w{mj5CmQo%jsg zPvq~1t!6|PXdNT-Vpr8Bum$sGf(WIdzh~tNqg>mYs`q;p2UE?sd9!rc7itxc}VME(cL@4gtSa)`n8Jt z2Q0|YT8wCw1*y4PJZgUep+~n#|L99c=jR$Cr{M6x-s z`$~d(GOK%R`FEkR&AZ8&-|L7n56tygPORUNiHe9F_A-5UZLachb=93R87YbJ%doIl zr=%Nj@a4Td=J3TNH7og52J_w5>-HppbA#+Hv7i}ORjO&P$BD=w)myT#X*AHoBdtN< zZ$YK2%T2?5VXcR>$Ef-5ctKWH7&mBgKZVaS(BIRMY~O|1BkP%y7QtFg9*-jC<}sM< zAyg!@k5TQ6@3sVzjnAmTa0hcJo*yU546uH}h_DzcZU}=>ore9bJ8C@OOCQi>n5Gd6I>*ncf}6Eh4h|JbLHFo%fLVl4U49C+ zcr^L}S3&W8Roa{uX-4bI-%-tkJIG~zxO}FnfJ}#8t}=QcS42;ZySUIW=+~nXs3KMc z@3f;Ahv&>);$|R(?VnOTM4@?~EFKy!zshqE=T3^QLheL`=#fA=T-4%;mR~f5#`7ET zmy*-Lm?+Q3A4fP1cqP*6PYa6MroxqQOToMx5%OU2{V9B>y-C!hs1ZNKe;jP@1-96s zAWRqU>65ryC@n~@TW~N>o}Vy`{w2&@zo>V|urYz>&p+{+?{M$bz3gFZuYnc4CKD7- z>6^Q?5~;&)2eVCdvQ1YBRDW>XK8N*vD^|}WnHXO4WXX+G=XQh8rs_#u4M{b&2xfV3 z%3Bm$B#R3*ag-?RiCEPv#0Exc9&--h&d#s5p#uF}$Lc81B4O&a=WS2u*|vKC*L=qm zmql5T`2*|z2%}a9-NBftRnV<_8$>NlYPi5=+A{hv%6KH@)^*WP=cOpTHb>!w1a*UF z4jcM`Av=h0CgPR!c6G`7Vy@`ML}%ubaQqe59Xc>_yQW{FnLOE+${mPnl0%o4slDx! z21`Wp3vJhwzNCub6BD9C3OpHR!yOhh74BE&WifBC>tcBLbPO_VxW_t=JC4R;+qXQ$ zMMH%!kK)m$+Q(rhI4xEQMD#WswJ$`SB(!(m>Qd1On8$w=fSiW?epkIx#?sYAY34zM zEA~BT=33Np%imKl_?yUzB1@y0@P;a)&V$I?>oX_00nAZHilKsw*}pJKs;*Tlj!zI~ zn}WR^9*$GFM-R6{rVj9!HW=HXBk$MRo1BE2SLf!!jFg|GNjCsfo4jSHB#pq82rp@1 zLFfb;W#OTzaU_oCQ=|(DEGbVo_PhKY3baKojol-R=k8OP{wZ9R&V$4bSohRg1xeMy ziHaU@6MAXVImXg%PYW$hnj zHvn^O5$;vVb7k}a9R?3(_kHcvD`6&|W{uSntg{-cQf|XQ^zwJe=N(~9hGlEfyqoYx zv^Bdj#K`y|ZdA>N2~VdUuZOybX_!PB>Yakda-o+Y{|Xon+L8&$n~5c;O#RC8^q%Yzfad3z4GAI1`~fLof$^+&dTdt?aC$D zUAupcQ$|212){X&@rzb1^#m1XWgv=Zu1A7;HMdWJ-ocSLyyJea4*I;;@e|^0-c_GQ81L>LU*j86??;&F+JBY;ny)|;57rjq}JALvsg+{(- z;^7EJopI9$=ZU|H`AA!Z0sJ?o@XM4x)Yguu(|-xa+ahgFbPjm3X9ze8%~8^roACt} zz>(MNkeras*kRKaO|NcQ+Gcd8DMIr0@3XyyUSdOE%Zs6nR)gLYg$1ewLI-d>m`<{* zIHoU4cs=0>-|Kg<8%l!r z>8z@jI;iK_QlBr2gE~B|pz1 zD+rUg%$@lW7jud$0{%v-V+?Z5jG6wMYOm2X=|$VLC--OmQ(~Q4on8Yc6<~-{>A>}M zjLe>B56b;KbKhIm%(ufa$ET-zj)Ff}6WsHX$N!N>01@S>+uXC+?t$3hfrQTmz(uGkeH1hq(qx1iTxx(-T80%AVt_ z`L?&t0YyDFT9c@0ZHXO@2kekT>y_;4uM;8nhseH5?%SrE7RNP#)+U zoPIDjU9dUiWk(j|+b6Kr8e(o1x^c#&$lb!=%L3OQV>Q^xh7c;V>8b{(s#h|txURSE z2~%^p0B~owD3+<)SK;|xw8Cy;*z&n3ZLxkeS(>kFh`-n$;-$&;QpqF0p|0bb^LLKHgXR5hokr^kF#La1uCHMgOpgL%HRzVbq?E|+$` zQ^fq->Re-HaUS2|Qen}_#jZL}`B(U!Jafj^^8 zdrb+Kj`kKG#4R%Sk@7Vi{HPATo@4MHWcQ}ir4P7I9+c>L4=FFa)H z^yH*;Vt0BpTO%;!fv0-htRb2g^*3sQY=V{R;S`hMRrcg)@mdqFYpzCqNb>W?zYhyU z@No`iU)Q)KU&4X^-?laXa-?if(*B1dC2t)YCR-sUyEG(W$sAXxJ+!6S3!0*Wosi*9 z3@A|<8iLtbW{U5+dh0(NDRo}RU#K-o?7!ls-6o?;JxtF-sASx8;~u@oGXb8L8Qixo zm;4_fb{Lwl6E0iacqNZJNsgGH8yAEK_py0_uASqgo|}Dh8`W?86l=XTwVIBM(`T z0qDMiXFpT@-ChnFBdl8C0cFHcm%qReUu&ald@^ZLR&-7%Q?T2knLB; zio*m81LJngu*Mi|B!y1}Xa65Pb~P;Q2E*E&eKyJLop)=n}9ky>AlRU~ne&C$Z%Lgt|N%Lr+F5}@HSXQTbn(@oR%?Ga&(%m^xR}WEJi_p7rhA7icgYAVMUvk z0N3L^w|PF!#tPsF-vF0#eSrxF4B}g^5Z%vA8 z9y5GUYpA4=HLK=)mD!MCv*c7afQi``?lC2w6f@|(iC;|G6v5S`iKl}d*>P(ev&hUA zq?6-`zL_MLxF`V&<0FIKhuOFD3}qO?^n1*2wt_Lh@tLeotuo2B5K)vV6mk$s4$y1p zrua!OokNr>_>h@3!Vo{U^yr?AgPyFtt8BSxRi*%KP7(*HAE)n`|AASEwbL*$sA62# zI>~S?>8Q{gA_+CFmn62|h?Y=X2CYDQbQK8du8K)E6+kaNz^!G^r7(OEe9XjPO$1wB zl*zDt8TbIb=Ntw*S0p;KcP!780A(x_jV=iGz*8br<}}Zg9K}nJBNL>}BY-`)&oACLyqmp)q>M=>1$Rc9DY$}C81hh}h?9nslLAc>_i_#j z+y5g}MHXC*Jk5uc+ph(EVj9NKcYIt2RmGTnOf^c}W+ZVa(bXFH>8d{NkT?N^} z+p{m*?1B3YiRWiJ$?6{l(NEsiNq|~Uo?biyK17)>c|Ce)i&&{8_ZK?s2*NS4uM5%~ zUbMq;b?N2-3fn*sBDf<+^8cqGf`2Ui3Q7j6xxQY6@7Ifv_@BOre_ba06O2_TNXpL3 zp?=ty7Sd*ZharOBf)N;q#0cePhei>c_=ALO*y{&OZAoBiI?sP}A>#H9huO8Y(}$Gw zNw`KG91o#^)t|Y2@|bkJaDRKde~0*^s%BzVKbI05%Q>#uo?K|rMb6|n9;w7M{=0os zV#3>osK7k|Gc~j^bT&XyfhG=Kw`&?6)8B{W#g95R;LYn)tTECbxi8)F8bWAIAg~9f z0BhbLMaO#scX5?fJt3e93q9Q&{f5|FBQ*qhLO3p81Qj*Sw#bBAH7u7bq=e9!JKSTS z3Pw+{bR%hABOos4tL1W1vyLrA;}u(oTL&+CbZ`X5ry=-p1hX1OKtZ>v`_+pYV*9FLSX^lr3tvYS>Y zv75RSdWM(J7S&bl*U>lfs=ADM2gWnpW#;m-`m zh4!0&rgC7GX3n4~BZxlMT@joX;}-K2E+eqdY%2)ihiIk#yr4YaLdqPb5M1Jf^qgUZ zz2$Z{$W;Ru=bx3A9BJy~&L96NZq!&Auvj|`l)f#eWhWAj&crkFej}eMjLea8tT}cY zHO5BQx=9+Y6OTp`(^A!2psvOq{2Y|)MTx_Ahfz9YG`UXjgb8;O@d&a@=CveB6=)yK;~hPIk9bL^-eU`q%EZ?Z1Ds(PRpd zOuv%Jk-iYF%>T4P#f+`&{;f(I)F3=j4$(e+;;dH4SI~R^OilM!EcCOH)wX|2o#j}j z1JN&rBP6k2uk&1nz^=UbofA)HJ;yssWxcM(C>Bg3V|HQVuM)B3pK|Isx!5@)p? zqf4Py^w@FfW$SaXZ_!py5H)t|&WsG2EvE>H8$K!^UB*f!s7aLo3%YA%?T) z;=5pdO}xrTOA{Tu8)ObwuS*xB9=6_S&$&ZLxlh4do%vbNzvxEBjmMX(8LvJemab2m zIjNS$V-O_Dyl6(3ii=omAC=DfH=dp&ttL){%X3eSik`TFw6CTYM}cy_)S zB3tIn>F5dQm+HU+j-tAR;`D9CS4sRx=y_5m54Icx4SQ|o5*=mDalQ_?Xa$CE8wt(@ zFZt0YirlP@LA@Q#Np>TRWWS8q(KNugEBZ8zRB0uGgoIXE>A+ zn7?hOQ0JBhGl|-qYYpZ)sEYpbEys;2t8k0btyP=joPu95DLH;%r|B&PL-o}zl4giV z%m1)?7L8eNC?bh=R(mXbyShd#DATDH&a3kee_0XJ(4Ck1d$qlm-s|Xy`e=(oRu>|@ z!WBq6hiXO+cD46A2 zAbvJrZM^K+-_h((?35MXUBjjc#>-hkfCsIp^;8SHwuqeJY>@QAeE>(}?B!`+t#6fr z*_!cv4%ERVOv%C>gq_!^XDvy0?HnP0yipp=?}uk_%q@U)UyvH^E@L1wy!t*PFWG0d z_Xlzenk5~-R5iRhW8+RRy`yN$@p;=@GsGiR%Frw4U+e=ri$$*OA&7mmReuCZ8m4kl z{P^1jZ7Lv5}PmoPz2gaO?iRSSGhhq)GWzNiD5y|UUtNY80TfD7Oe;V- zl)!WRfp{Z7KsFh>=nRaZ?u2M9TyDKk=UAy|PSbiY-Om5gfbAu-zJUt9%^%JPLj#ty z>+EVnO|`Xmm{>7ko6}DHC927epjumbv@hr$kJ(k*K$P3qz%A0XwIzbf#+J14u23pZ zA0STBZxdLxFEWd4o9~Dn4Yu>W{_2-=%1Ns{6bkKh?A$Hjw@4lrRk^rRX!E{5ocyW( zGhubt{t+Tn^Dmn2}8@)y9RQ86If zi5f=@JsG5>wNJ1IW)s-qJcX4-A1K6oEcSrzrUoRnYmH$$oc|P(bf^F5RUqppkSw}C ziy~R;#Jx_qmWsMuB@Qy0NzsKpj&C{M-c6d6q`CAvvFr3qoeZg#0T{LZq%ak#{1{7w z>FUGsRz=Y@tU4yB1m2Se6*E+>J`E?SLjxf4RVSH4WWG4|!2v08GuRCh73#la>)A?MU(p(p-g5a| zyL9hYv<|9S5mWl|UQd;D>pyg0@ii1(p_6I#C|0*F5Q^{JC(GuQ;Scqp#3uzB2wOGa z==4Zdk1llc*d`4zw0o;~K^!rs3{}e_U3a0Mn=SBBY;fE6$0-}Whp?5EuJS|&Nanhf zD9lRb8e|%LMSY&zvg7MhG)5ne_A2u|&S}F@$lqHw}$}|FxxJs6^n?GEFMre(yJA+P` zm!TV0!|~}Cp}pJ9_Eot@KkPqUK79500}l4*b=spjLJ{51rf+V)Kt`H)|4625s^^&_;n@-KDmrt;^a_~eb!&4*Jx{f1i%(I`j%&Jt$Q zi@{){-Td2XpFFC%Ij$K4(VH>vN#SC>`#w_6=zc%-KA{epeM?zQ$P(w;BB(v~=C$P2 z@~GIdWYhARYkqC|v_$(y15XJ1)$c!CMOPw%&eK;k?V(P5t2eOisT};r+0jji3Syr` z?P#`n2s`~isY%x5fLA*hSvRYrdpGV&TMWK1*Q?*Gi?bW94okv5@82$oCZ#2n+S6lX zar?nF6$8<2npi84(iz01H-ALKiA$Fq1w(1hS=4+-zXu>_-N`O4%C7pLY=mnXKS3@i z@NdtfSH++WQD^KB9p$$TtNFc#l#nsh)i}ZvbQikQ3|ruiJN5QbinqU#XI0UkZiUT zR)P6kS5}yf!JHt-ey3>Kfc;kIVwM@K2>Io^qU!SW`xBBD+npiTs>P*A2b9$q1#nYYs!dZA5lJ9fy!hytk<$A4P+n2J0d6x zWR-RLAM57)K4v@KDEv&fpE7rt=B$c$&m8c3i^h=GsTx>4L_>>@EQ?Kd0{u^ zM~SP~x%fUVtcOtNPL|?fhe>#{Y&P#{*|6P_)xfMpfp<3qkg+qf71p^x$)`$gmtpL5 zAHl?}W4!w60;ed(sQKZuN#=_()e#Y@1wRT+S4xRR%<5B1r`PHliKXN75rM8j#NSla(HskN1iX47_V4HT|+_V}pMJIl2pWIMR zL^00Nr4#A)WJHdom=0%3-&QoGP-ZDJYGD=>UWud64X;#RQLZ1^B@%wJ>9p>6$e*U# zjA6R@CNvCA#z%@cGly$7#}MvY2c<5}y~>$w?4+ej-Gf7UsHCWqVX7@bLd|{>Mb--{ zg!9l75E!5D60ePFH&t+k_XDqIzLqlMn$(NXnqvpZwk~Up`W1{)%FQ7QTfZRfGrUa+<>q1v7=-ndn3J#F5#RO!5gj^`A1X~6}VSyA5KY0%`pca9`RMhkJWm;QO+&Nr_X0W!LsgF@40-XvWj%7BlegEsISS@Kz$= zd*MgG{T&*gPv`(ftN{rBv;~S4WQq{0#4P(09Xy*aL7op*`dydkFi}m?LrigwQXfYB zjttzGokhac0&g{<<&y)#2%@WyC)&;_V%_I|A!^uj+uH(PM9uGusHy%>ANRjl1<7w? z6MbhZCvj^#E64x9YyV6JEDUT+NKF3;0!^i?p#&aj%St98R4WdKCS>6Gvu;eSFf-Hq zD;e-vwbNbl?fVDCu6ipHD2nc~(NwDA>m(=h=08IL{f1zxgmA8-97N5#Ul&jOJ44nP zT@}V;Xmb6#Tm9!LGwqBsB7~0;STn+i^x>Zu<(4#V{KXn>^Ezcl^qMW%)786)^qLdWA{7qU+GgX3IA!e$ZkkVcU2b9VMHEKs0Fz`pJlU2KrS*r7Y z2Q_%SzP(H^XLZ2l&sm)TuIviJ?4=mW-%JCU3Nba3?X``^8I-th?(j@bBg1#yQwD$> zl{?sdpvFx`$b+TXgdWX&u(S*bSyXwzI!DPv%ugK;DE88nLFu6LF?XM!W0wyt`T~^T zUZ@+iT!C1%NhZe8ZjTjTF}0`S+BveBYZ~ig8He`BEMhXN6`>J^6%~<-eEFZdO+?ds zspe~PM_x!}>`7j8YH3PgDZ9BxTDsI ztZKuA5A@x;NYI!94~!A|sHCVhGAiNi5qCQ;cu*R|}G`hXw zNJnY(@ez*B;L7BBppS#y>!m#WKbXcMi8w~6)WHk{@nDvDd@ZMcbu&HN%1@p@QoJ

CVZ?X^_4Z1H{F0VKM0 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 V12?G<5Zu5|Iv()w=hNkX{||PNg24a) diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/Configuration.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/Configuration.kt index 7c308cc..33e24fb 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/Configuration.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/Configuration.kt @@ -1,7 +1,7 @@ package com.github.pool_party.resistance_bot +import com.github.pool_party.flume.configuration.AbstractConfiguration import com.github.pool_party.resistance_bot.state.Board -import com.github.pool_party.telegram_bot_utils.configuration.AbstractConfiguration object Configuration : AbstractConfiguration() { diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/action/RoleDistribution.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/action/RoleDistribution.kt index 7b156e2..56c2734 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/action/RoleDistribution.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/action/RoleDistribution.kt @@ -1,10 +1,10 @@ package com.github.pool_party.resistance_bot.action import com.elbekD.bot.Bot +import com.github.pool_party.flume.utils.sendMessageLogging import com.github.pool_party.resistance_bot.message.RECEIVE_RESISTANCE_ROLE import com.github.pool_party.resistance_bot.message.receiveSpyRole import com.github.pool_party.resistance_bot.state.StateStorage -import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging suspend fun Bot.distributeRoles(chatId: Long, stateStorage: StateStorage) { val state = stateStorage.getGameState(chatId) ?: return diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/action/SquadChoice.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/action/SquadChoice.kt index 227942e..cd61b7d 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/action/SquadChoice.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/action/SquadChoice.kt @@ -2,13 +2,13 @@ package com.github.pool_party.resistance_bot.action import com.elbekD.bot.Bot import com.elbekD.bot.types.InlineKeyboardButton +import com.github.pool_party.flume.utils.sendMessageLogging +import com.github.pool_party.flume.utils.toMarkUp import com.github.pool_party.resistance_bot.Configuration import com.github.pool_party.resistance_bot.callback.SquadChoiceCallbackData import com.github.pool_party.resistance_bot.message.leaderChooseMessage import com.github.pool_party.resistance_bot.message.roundSummary import com.github.pool_party.resistance_bot.state.StateStorage -import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging -import com.github.pool_party.telegram_bot_utils.utils.toMarkUp suspend fun Bot.chooseSquad(chatId: Long, stateStorage: StateStorage) { diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/action/StartGame.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/action/StartGame.kt index d6869cf..cf90c40 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/action/StartGame.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/action/StartGame.kt @@ -1,13 +1,13 @@ package com.github.pool_party.resistance_bot.action import com.elbekD.bot.Bot +import com.github.pool_party.flume.utils.deleteMessageLogging +import com.github.pool_party.flume.utils.sendMessageLogging import com.github.pool_party.resistance_bot.Configuration import com.github.pool_party.resistance_bot.message.ON_GAME_START import com.github.pool_party.resistance_bot.message.ON_LESS_PLAYERS import com.github.pool_party.resistance_bot.message.ON_MORE_PLAYERS import com.github.pool_party.resistance_bot.state.StateStorage -import com.github.pool_party.telegram_bot_utils.utils.deleteMessageLogging -import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging suspend fun Bot.startGame(chatId: Long, stateStorage: StateStorage) { val state = stateStorage.getRegistrationState(chatId) ?: return diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/action/Vote.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/action/Vote.kt index 158a232..be1fc30 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/action/Vote.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/action/Vote.kt @@ -2,14 +2,14 @@ package com.github.pool_party.resistance_bot.action import com.elbekD.bot.Bot import com.elbekD.bot.types.InlineKeyboardButton +import com.github.pool_party.flume.utils.sendMessageLogging +import com.github.pool_party.flume.utils.toMarkUp import com.github.pool_party.resistance_bot.Configuration import com.github.pool_party.resistance_bot.callback.CallbackData import com.github.pool_party.resistance_bot.callback.MissionVoteCallbackData import com.github.pool_party.resistance_bot.callback.SquadVoteCallbackData import com.github.pool_party.resistance_bot.message.MISSION_VOTE import com.github.pool_party.resistance_bot.message.TEAM_VOTE -import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging -import com.github.pool_party.telegram_bot_utils.utils.toMarkUp private suspend fun Bot.vote(text: String, memberIds: List, verdictVoteCallBackData: (Boolean) -> CallbackData) { diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/AbstractVoteCallback.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/AbstractVoteCallback.kt index f5bc3fa..dc8d5df 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/AbstractVoteCallback.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/AbstractVoteCallback.kt @@ -2,15 +2,15 @@ package com.github.pool_party.resistance_bot.callback import com.elbekD.bot.Bot import com.elbekD.bot.types.CallbackQuery +import com.github.pool_party.flume.interaction.callback.Callback +import com.github.pool_party.flume.utils.editMessageTextLogging +import com.github.pool_party.flume.utils.name import com.github.pool_party.resistance_bot.Configuration import com.github.pool_party.resistance_bot.action.chooseSquad import com.github.pool_party.resistance_bot.state.GameState import com.github.pool_party.resistance_bot.state.Member import com.github.pool_party.resistance_bot.state.StateStorage import com.github.pool_party.resistance_bot.state.Vote -import com.github.pool_party.telegram_bot_utils.interaction.callback.Callback -import com.github.pool_party.telegram_bot_utils.utils.editMessageTextLogging -import com.github.pool_party.telegram_bot_utils.utils.name interface VoteCallbackData { val gameChatId: Long diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/CallbackDispatcher.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/CallbackDispatcher.kt index 4242215..76c59ad 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/CallbackDispatcher.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/CallbackDispatcher.kt @@ -1,7 +1,7 @@ package com.github.pool_party.resistance_bot.callback -import com.github.pool_party.telegram_bot_utils.interaction.callback.AbstractCallbackDispatcher -import com.github.pool_party.telegram_bot_utils.interaction.callback.Callback +import com.github.pool_party.flume.interaction.callback.AbstractCallbackDispatcher +import com.github.pool_party.flume.interaction.callback.Callback import kotlinx.serialization.Serializable import kotlinx.serialization.decodeFromByteArray import kotlinx.serialization.encodeToByteArray diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/MissionVoteCallback.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/MissionVoteCallback.kt index 922f633..497946e 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/MissionVoteCallback.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/MissionVoteCallback.kt @@ -1,12 +1,12 @@ package com.github.pool_party.resistance_bot.callback import com.elbekD.bot.Bot +import com.github.pool_party.flume.utils.sendMessageLogging import com.github.pool_party.resistance_bot.Configuration import com.github.pool_party.resistance_bot.state.GameState import com.github.pool_party.resistance_bot.state.RoundResult import com.github.pool_party.resistance_bot.state.StateStorage import com.github.pool_party.resistance_bot.state.Vote -import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/SquadChoiceCallback.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/SquadChoiceCallback.kt index 5f9091e..ad2f938 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/SquadChoiceCallback.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/SquadChoiceCallback.kt @@ -2,17 +2,17 @@ package com.github.pool_party.resistance_bot.callback import com.elbekD.bot.Bot import com.elbekD.bot.types.CallbackQuery +import com.github.pool_party.flume.interaction.callback.Callback +import com.github.pool_party.flume.utils.editMessageReplyMarkupLogging +import com.github.pool_party.flume.utils.editMessageTextLogging +import com.github.pool_party.flume.utils.name +import com.github.pool_party.flume.utils.sendMessageLogging +import com.github.pool_party.flume.utils.toMarkUp import com.github.pool_party.resistance_bot.Configuration import com.github.pool_party.resistance_bot.action.squadVote import com.github.pool_party.resistance_bot.state.StateStorage import com.github.pool_party.resistance_bot.utils.goToBotMarkup import com.github.pool_party.resistance_bot.utils.makeUserLink -import com.github.pool_party.telegram_bot_utils.interaction.callback.Callback -import com.github.pool_party.telegram_bot_utils.utils.editMessageReplyMarkupLogging -import com.github.pool_party.telegram_bot_utils.utils.editMessageTextLogging -import com.github.pool_party.telegram_bot_utils.utils.name -import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging -import com.github.pool_party.telegram_bot_utils.utils.toMarkUp import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/SquadVoteCallback.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/SquadVoteCallback.kt index ecdf834..6ce864b 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/SquadVoteCallback.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/SquadVoteCallback.kt @@ -1,6 +1,7 @@ package com.github.pool_party.resistance_bot.callback import com.elbekD.bot.Bot +import com.github.pool_party.flume.utils.sendMessageLogging import com.github.pool_party.resistance_bot.Configuration import com.github.pool_party.resistance_bot.action.missionVote import com.github.pool_party.resistance_bot.message.TEAM_APPROVED @@ -10,7 +11,6 @@ import com.github.pool_party.resistance_bot.state.GameState import com.github.pool_party.resistance_bot.state.StateStorage import com.github.pool_party.resistance_bot.state.Vote import com.github.pool_party.resistance_bot.utils.goToBotMarkup -import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/StopVoteCallback.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/StopVoteCallback.kt index 382bfc5..662b00a 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/callback/StopVoteCallback.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/callback/StopVoteCallback.kt @@ -2,11 +2,11 @@ package com.github.pool_party.resistance_bot.callback import com.elbekD.bot.Bot import com.elbekD.bot.types.CallbackQuery +import com.github.pool_party.flume.interaction.callback.Callback +import com.github.pool_party.flume.utils.editMessageReplyMarkupLogging import com.github.pool_party.resistance_bot.command.StopCommand.Companion.processResults import com.github.pool_party.resistance_bot.state.StateStorage import com.github.pool_party.resistance_bot.utils.makeStopVoteMarkup -import com.github.pool_party.telegram_bot_utils.interaction.callback.Callback -import com.github.pool_party.telegram_bot_utils.utils.editMessageReplyMarkupLogging import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import mu.KotlinLogging diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/command/ExtendCommand.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/command/ExtendCommand.kt index f3fbe3a..f47faf8 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/command/ExtendCommand.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/command/ExtendCommand.kt @@ -2,6 +2,9 @@ package com.github.pool_party.resistance_bot.command import com.elbekD.bot.Bot import com.elbekD.bot.types.Message +import com.github.pool_party.flume.interaction.command.AbstractCommand +import com.github.pool_party.flume.utils.chatId +import com.github.pool_party.flume.utils.sendMessageLogging import com.github.pool_party.resistance_bot.Configuration import com.github.pool_party.resistance_bot.message.HELP_EXTEND import com.github.pool_party.resistance_bot.message.ON_IN_GAME_EXTEND @@ -12,9 +15,6 @@ import com.github.pool_party.resistance_bot.state.GameState import com.github.pool_party.resistance_bot.state.RegistrationState import com.github.pool_party.resistance_bot.state.StateStorage import com.github.pool_party.resistance_bot.utils.inc -import com.github.pool_party.telegram_bot_utils.interaction.command.AbstractCommand -import com.github.pool_party.telegram_bot_utils.utils.chatId -import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging class ExtendCommand(private val stateStorage: StateStorage) : AbstractCommand( diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/command/GameCommand.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/command/GameCommand.kt index 73983e3..113eb3e 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/command/GameCommand.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/command/GameCommand.kt @@ -2,6 +2,10 @@ package com.github.pool_party.resistance_bot.command import com.elbekD.bot.Bot import com.elbekD.bot.types.Message +import com.github.pool_party.flume.interaction.command.AbstractCommand +import com.github.pool_party.flume.utils.chatId +import com.github.pool_party.flume.utils.logging +import com.github.pool_party.flume.utils.sendMessageLogging import com.github.pool_party.resistance_bot.Configuration import com.github.pool_party.resistance_bot.action.startGame import com.github.pool_party.resistance_bot.message.GET_PIN_RIGHTS_SUGGEST @@ -15,10 +19,6 @@ import com.github.pool_party.resistance_bot.state.StateStorage import com.github.pool_party.resistance_bot.utils.addBotMarkup import com.github.pool_party.resistance_bot.utils.dec import com.github.pool_party.resistance_bot.utils.makeRegistrationMarkup -import com.github.pool_party.telegram_bot_utils.interaction.command.AbstractCommand -import com.github.pool_party.telegram_bot_utils.utils.chatId -import com.github.pool_party.telegram_bot_utils.utils.logging -import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging import kotlinx.coroutines.delay import java.util.concurrent.CompletableFuture import kotlin.time.Duration.Companion.minutes diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/command/HistoryCommand.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/command/HistoryCommand.kt index 83e6e22..a0220aa 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/command/HistoryCommand.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/command/HistoryCommand.kt @@ -2,13 +2,13 @@ package com.github.pool_party.resistance_bot.command import com.elbekD.bot.Bot import com.elbekD.bot.types.Message +import com.github.pool_party.flume.interaction.command.AbstractCommand +import com.github.pool_party.flume.utils.chatId +import com.github.pool_party.flume.utils.sendMessageLogging import com.github.pool_party.resistance_bot.message.HELP_HISTORY import com.github.pool_party.resistance_bot.message.ON_NO_REGISTRATION import com.github.pool_party.resistance_bot.message.history import com.github.pool_party.resistance_bot.state.StateStorage -import com.github.pool_party.telegram_bot_utils.interaction.command.AbstractCommand -import com.github.pool_party.telegram_bot_utils.utils.chatId -import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging class HistoryCommand(private val stateStorage: StateStorage) : AbstractCommand("history", "show round history", HELP_HISTORY) { diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/command/RulesCommand.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/command/RulesCommand.kt index c9ffc2c..4ea708c 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/command/RulesCommand.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/command/RulesCommand.kt @@ -2,11 +2,11 @@ package com.github.pool_party.resistance_bot.command import com.elbekD.bot.Bot import com.elbekD.bot.types.Message +import com.github.pool_party.flume.interaction.command.AbstractCommand +import com.github.pool_party.flume.utils.chatId +import com.github.pool_party.flume.utils.sendMessageLogging import com.github.pool_party.resistance_bot.message.GAME_RULES import com.github.pool_party.resistance_bot.message.HELP_RULES -import com.github.pool_party.telegram_bot_utils.interaction.command.AbstractCommand -import com.github.pool_party.telegram_bot_utils.utils.chatId -import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging class RulesCommand : AbstractCommand("rules", "show the list of rules", HELP_RULES) { diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/command/StartCommand.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/command/StartCommand.kt index 153f7e0..3b9b2bd 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/command/StartCommand.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/command/StartCommand.kt @@ -2,6 +2,11 @@ package com.github.pool_party.resistance_bot.command import com.elbekD.bot.Bot import com.elbekD.bot.types.Message +import com.github.pool_party.flume.interaction.command.AbstractCommand +import com.github.pool_party.flume.utils.chatId +import com.github.pool_party.flume.utils.editMessageTextLogging +import com.github.pool_party.flume.utils.name +import com.github.pool_party.flume.utils.sendMessageLogging import com.github.pool_party.resistance_bot.Configuration import com.github.pool_party.resistance_bot.action.startGame import com.github.pool_party.resistance_bot.message.HELP_START @@ -16,11 +21,6 @@ import com.github.pool_party.resistance_bot.state.Member import com.github.pool_party.resistance_bot.state.StateStorage import com.github.pool_party.resistance_bot.utils.addBotMarkup import com.github.pool_party.resistance_bot.utils.makeRegistrationMarkup -import com.github.pool_party.telegram_bot_utils.interaction.command.AbstractCommand -import com.github.pool_party.telegram_bot_utils.utils.chatId -import com.github.pool_party.telegram_bot_utils.utils.editMessageTextLogging -import com.github.pool_party.telegram_bot_utils.utils.name -import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging class StartCommand(private val stateStorage: StateStorage, private val longCoder: Coder) : AbstractCommand( diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/command/StopCommand.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/command/StopCommand.kt index 084a892..2f271cc 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/command/StopCommand.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/command/StopCommand.kt @@ -2,6 +2,11 @@ package com.github.pool_party.resistance_bot.command import com.elbekD.bot.Bot import com.elbekD.bot.types.Message +import com.github.pool_party.flume.interaction.command.AbstractCommand +import com.github.pool_party.flume.utils.chatId +import com.github.pool_party.flume.utils.deleteMessageLogging +import com.github.pool_party.flume.utils.name +import com.github.pool_party.flume.utils.sendMessageLogging import com.github.pool_party.resistance_bot.Configuration import com.github.pool_party.resistance_bot.message.HELP_STOP import com.github.pool_party.resistance_bot.message.ON_GAME_STOP @@ -15,11 +20,6 @@ import com.github.pool_party.resistance_bot.state.GameState import com.github.pool_party.resistance_bot.state.RegistrationState import com.github.pool_party.resistance_bot.state.StateStorage import com.github.pool_party.resistance_bot.utils.makeStopVoteMarkup -import com.github.pool_party.telegram_bot_utils.interaction.command.AbstractCommand -import com.github.pool_party.telegram_bot_utils.utils.chatId -import com.github.pool_party.telegram_bot_utils.utils.deleteMessageLogging -import com.github.pool_party.telegram_bot_utils.utils.name -import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging import kotlinx.coroutines.delay import java.util.concurrent.ConcurrentHashMap diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/command/TagCommand.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/command/TagCommand.kt index b213939..210555a 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/command/TagCommand.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/command/TagCommand.kt @@ -2,13 +2,13 @@ package com.github.pool_party.resistance_bot.command import com.elbekD.bot.Bot import com.elbekD.bot.types.Message +import com.github.pool_party.flume.interaction.command.AbstractCommand +import com.github.pool_party.flume.utils.chatId +import com.github.pool_party.flume.utils.sendMessageLogging import com.github.pool_party.resistance_bot.message.HELP_TAG import com.github.pool_party.resistance_bot.message.ON_NO_REGISTRATION import com.github.pool_party.resistance_bot.message.tagAfkPlayers import com.github.pool_party.resistance_bot.state.StateStorage -import com.github.pool_party.telegram_bot_utils.interaction.command.AbstractCommand -import com.github.pool_party.telegram_bot_utils.utils.chatId -import com.github.pool_party.telegram_bot_utils.utils.sendMessageLogging class TagCommand(private val stateStorage: StateStorage) : AbstractCommand("tag", "notify players delaying a game", HELP_TAG) { diff --git a/src/main/kotlin/com/github/pool_party/resistance_bot/utils/BotUtils.kt b/src/main/kotlin/com/github/pool_party/resistance_bot/utils/BotUtils.kt index a521ca3..a836eee 100644 --- a/src/main/kotlin/com/github/pool_party/resistance_bot/utils/BotUtils.kt +++ b/src/main/kotlin/com/github/pool_party/resistance_bot/utils/BotUtils.kt @@ -2,12 +2,12 @@ package com.github.pool_party.resistance_bot.utils import com.elbekD.bot.types.InlineKeyboardButton import com.elbekD.bot.types.InlineKeyboardMarkup +import com.github.pool_party.flume.utils.toMarkUp import com.github.pool_party.resistance_bot.Configuration import com.github.pool_party.resistance_bot.callback.StopCallbackData import com.github.pool_party.resistance_bot.message.INIT_MARKUP import com.github.pool_party.resistance_bot.message.REGISTRATION_BUTTON import com.github.pool_party.resistance_bot.message.VOTING_SUGGEST -import com.github.pool_party.telegram_bot_utils.utils.toMarkUp fun makeRegistrationMarkup(hash: String) = listOf(InlineKeyboardButton(REGISTRATION_BUTTON, url = botLink(hash))).toMarkUp()