From c5a666f9b306426f570a416692b60b399b100cb4 Mon Sep 17 00:00:00 2001
From: Evennia docbuilder action
aliases = ['l', 'ls']¶aliases = ['ls', 'l']¶
search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look while out-of-character\n\n Usage:\n look\n\n Look in the ooc state.\n '}¶search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look while out-of-character\n\n Usage:\n look\n\n Look in the ooc state.\n '}¶
aliases = ['batchcommand', 'batchcmd']¶aliases = ['batchcmd', 'batchcommand']¶
search_index_entry = {'aliases': 'batchcommand batchcmd', 'category': 'building', 'key': 'batchcommands', 'no_prefix': ' batchcommand batchcmd', 'tags': '', 'text': '\n build from batch-command file\n\n Usage:\n batchcommands[/interactive] <python.path.to.file>\n\n Switch:\n interactive - this mode will offer more control when\n executing the batch file, like stepping,\n skipping, reloading etc.\n\n Runs batches of commands from a batch-cmd text file (*.ev).\n\n '}¶search_index_entry = {'aliases': 'batchcmd batchcommand', 'category': 'building', 'key': 'batchcommands', 'no_prefix': ' batchcmd batchcommand', 'tags': '', 'text': '\n build from batch-command file\n\n Usage:\n batchcommands[/interactive] <python.path.to.file>\n\n Switch:\n interactive - this mode will offer more control when\n executing the batch file, like stepping,\n skipping, reloading etc.\n\n Runs batches of commands from a batch-cmd text file (*.ev).\n\n '}¶
aliases = ['@type', '@update', '@typeclasses', '@swap', '@parent']¶aliases = ['@typeclasses', '@type', '@swap', '@update', '@parent']¶
search_index_entry = {'aliases': '@type @update @typeclasses @swap @parent', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass type update typeclasses swap parent', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}¶search_index_entry = {'aliases': '@typeclasses @type @swap @update @parent', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass typeclasses type swap update parent', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}¶
aliases = ['@search', '@locate']¶aliases = ['@locate', '@search']¶
search_index_entry = {'aliases': '@search @locate', 'category': 'building', 'key': '@find', 'no_prefix': 'find search locate', 'tags': '', 'text': '\n search the database for objects\n\n Usage:\n find[/switches] <name or dbref or *account> [= dbrefmin[-dbrefmax]]\n locate - this is a shorthand for using the /loc switch.\n\n Switches:\n room - only look for rooms (location=None)\n exit - only look for exits (destination!=None)\n char - only look for characters (BASE_CHARACTER_TYPECLASS)\n exact - only exact matches are returned.\n loc - display object location if exists and match has one result\n startswith - search for names starting with the string, rather than containing\n\n Searches the database for an object of a particular name or exact #dbref.\n Use *accountname to search for an account. The switches allows for\n limiting object matches to certain game entities. Dbrefmin and dbrefmax\n limits matches to within the given dbrefs range, or above/below if only\n one is given.\n '}¶search_index_entry = {'aliases': '@locate @search', 'category': 'building', 'key': '@find', 'no_prefix': 'find locate search', 'tags': '', 'text': '\n search the database for objects\n\n Usage:\n find[/switches] <name or dbref or *account> [= dbrefmin[-dbrefmax]]\n locate - this is a shorthand for using the /loc switch.\n\n Switches:\n room - only look for rooms (location=None)\n exit - only look for exits (destination!=None)\n char - only look for characters (BASE_CHARACTER_TYPECLASS)\n exact - only exact matches are returned.\n loc - display object location if exists and match has one result\n startswith - search for names starting with the string, rather than containing\n\n Searches the database for an object of a particular name or exact #dbref.\n Use *accountname to search for an account. The switches allows for\n limiting object matches to certain game entities. Dbrefmin and dbrefmax\n limits matches to within the given dbrefs range, or above/below if only\n one is given.\n '}¶
aliases = ['@chan', '@channels']¶aliases = ['@channels', '@chan']¶
search_index_entry = {'aliases': '@chan @channels', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel chan channels', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶search_index_entry = {'aliases': '@channels @chan', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel channels chan', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶
/channel - toggle the Evennia/Discord channel tags on/off
+/channel - toggle the Evennia/Discord channel tags on/off +/start - tell the bot to start, in case it lost its connection
Example
@@ -1370,7 +1371,7 @@ must be added to settings. (Please put it in secret_settings !)switch_options = ('channel', 'delete', 'guild', 'list', 'remove')¶switch_options = ('channel', 'delete', 'guild', 'list', 'remove', 'start')¶
search_index_entry = {'aliases': 'discord', 'category': 'comms', 'key': 'discord2chan', 'no_prefix': ' discord', 'tags': '', 'text': '\n Link an Evennia channel to an external Discord channel\n\n Usage:\n discord2chan[/switches]\n discord2chan[/switches] <evennia_channel> [= <discord_channel_id>]\n\n Switches:\n /list - (or no switch) show existing Evennia <-> Discord links\n /remove - remove an existing link by link ID\n /delete - alias to remove\n /guild - toggle the Discord server tag on/off\n /channel - toggle the Evennia/Discord channel tags on/off\n\n Example:\n discord2chan mydiscord = 555555555555555\n\n This creates a link between an in-game Evennia channel and an external\n Discord channel. You must have a valid Discord bot application\n ( https://discord.com/developers/applications ) and your DISCORD_BOT_TOKEN\n must be added to settings. (Please put it in secret_settings !)\n '}¶search_index_entry = {'aliases': 'discord', 'category': 'comms', 'key': 'discord2chan', 'no_prefix': ' discord', 'tags': '', 'text': '\n Link an Evennia channel to an external Discord channel\n\n Usage:\n discord2chan[/switches]\n discord2chan[/switches] <evennia_channel> [= <discord_channel_id>]\n\n Switches:\n /list - (or no switch) show existing Evennia <-> Discord links\n /remove - remove an existing link by link ID\n /delete - alias to remove\n /guild - toggle the Discord server tag on/off\n /channel - toggle the Evennia/Discord channel tags on/off\n /start - tell the bot to start, in case it lost its connection\n\n Example:\n discord2chan mydiscord = 555555555555555\n\n This creates a link between an in-game Evennia channel and an external\n Discord channel. You must have a valid Discord bot application\n ( https://discord.com/developers/applications ) and your DISCORD_BOT_TOKEN\n must be added to settings. (Please put it in secret_settings !)\n '}¶
aliases = ['l', 'ls']¶aliases = ['ls', 'l']¶
search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look at location or object\n\n Usage:\n look\n look <obj>\n look *<account>\n\n Observes your location or objects in your vicinity.\n '}¶search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look at location or object\n\n Usage:\n look\n look <obj>\n look *<account>\n\n Observes your location or objects in your vicinity.\n '}¶
aliases = ['nickname', 'nicks']¶aliases = ['nicks', 'nickname']¶
search_index_entry = {'aliases': 'nickname nicks', 'category': 'general', 'key': 'nick', 'no_prefix': ' nickname nicks', 'tags': '', 'text': '\n define a personal alias/nick by defining a string to\n match and replace it with another on the fly\n\n Usage:\n nick[/switches] <string> [= [replacement_string]]\n nick[/switches] <template> = <replacement_template>\n nick/delete <string> or number\n nicks\n\n Switches:\n inputline - replace on the inputline (default)\n object - replace on object-lookup\n account - replace on account-lookup\n list - show all defined aliases (also "nicks" works)\n delete - remove nick by index in /list\n clearall - clear all nicks\n\n Examples:\n nick hi = say Hello, I\'m Sarah!\n nick/object tom = the tall man\n nick build $1 $2 = create/drop $1;$2\n nick tell $1 $2=page $1=$2\n nick tm?$1=page tallman=$1\n nick tm\\=$1=page tallman=$1\n\n A \'nick\' is a personal string replacement. Use $1, $2, ... to catch arguments.\n Put the last $-marker without an ending space to catch all remaining text. You\n can also use unix-glob matching for the left-hand side <string>:\n\n * - matches everything\n ? - matches 0 or 1 single characters\n [abcd] - matches these chars in any order\n [!abcd] - matches everything not among these chars\n \\= - escape literal \'=\' you want in your <string>\n\n Note that no objects are actually renamed or changed by this command - your nicks\n are only available to you. If you want to permanently add keywords to an object\n for everyone to use, you need build privileges and the alias command.\n\n '}¶search_index_entry = {'aliases': 'nicks nickname', 'category': 'general', 'key': 'nick', 'no_prefix': ' nicks nickname', 'tags': '', 'text': '\n define a personal alias/nick by defining a string to\n match and replace it with another on the fly\n\n Usage:\n nick[/switches] <string> [= [replacement_string]]\n nick[/switches] <template> = <replacement_template>\n nick/delete <string> or number\n nicks\n\n Switches:\n inputline - replace on the inputline (default)\n object - replace on object-lookup\n account - replace on account-lookup\n list - show all defined aliases (also "nicks" works)\n delete - remove nick by index in /list\n clearall - clear all nicks\n\n Examples:\n nick hi = say Hello, I\'m Sarah!\n nick/object tom = the tall man\n nick build $1 $2 = create/drop $1;$2\n nick tell $1 $2=page $1=$2\n nick tm?$1=page tallman=$1\n nick tm\\=$1=page tallman=$1\n\n A \'nick\' is a personal string replacement. Use $1, $2, ... to catch arguments.\n Put the last $-marker without an ending space to catch all remaining text. You\n can also use unix-glob matching for the left-hand side <string>:\n\n * - matches everything\n ? - matches 0 or 1 single characters\n [abcd] - matches these chars in any order\n [!abcd] - matches everything not among these chars\n \\= - escape literal \'=\' you want in your <string>\n\n Note that no objects are actually renamed or changed by this command - your nicks\n are only available to you. If you want to permanently add keywords to an object\n for everyone to use, you need build privileges and the alias command.\n\n '}¶
aliases = ['inv', 'i']¶aliases = ['i', 'inv']¶
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
aliases = ["'", '"']¶aliases = ['"', "'"]¶
search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶search_index_entry = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
aliases = ['groups', 'hierarchy']¶aliases = ['hierarchy', 'groups']¶
search_index_entry = {'aliases': 'groups hierarchy', 'category': 'general', 'key': 'access', 'no_prefix': ' groups hierarchy', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}¶search_index_entry = {'aliases': 'hierarchy groups', 'category': 'general', 'key': 'access', 'no_prefix': ' hierarchy groups', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}¶
aliases = ['@task', '@delays']¶aliases = ['@delays', '@task']¶
search_index_entry = {'aliases': '@task @delays', 'category': 'system', 'key': '@tasks', 'no_prefix': 'tasks task delays', 'tags': '', 'text': "\n Display or terminate active tasks (delays).\n\n Usage:\n tasks[/switch] [task_id or function_name]\n\n Switches:\n pause - Pause the callback of a task.\n unpause - Process all callbacks made since pause() was called.\n do_task - Execute the task (call its callback).\n call - Call the callback of this task.\n remove - Remove a task without executing it.\n cancel - Stop a task from automatically executing.\n\n Notes:\n A task is a single use method of delaying the call of a function. Calls are created\n in code, using `evennia.utils.delay`.\n See |luhttps://www.evennia.com/docs/latest/Command-Duration.html|ltthe docs|le for help.\n\n By default, tasks that are canceled and never called are cleaned up after one minute.\n\n Examples:\n - `tasks/cancel move_callback` - Cancels all movement delays from the slow_exit contrib.\n In this example slow exits creates it's tasks with\n `utils.delay(move_delay, move_callback)`\n - `tasks/cancel 2` - Cancel task id 2.\n\n "}¶search_index_entry = {'aliases': '@delays @task', 'category': 'system', 'key': '@tasks', 'no_prefix': 'tasks delays task', 'tags': '', 'text': "\n Display or terminate active tasks (delays).\n\n Usage:\n tasks[/switch] [task_id or function_name]\n\n Switches:\n pause - Pause the callback of a task.\n unpause - Process all callbacks made since pause() was called.\n do_task - Execute the task (call its callback).\n call - Call the callback of this task.\n remove - Remove a task without executing it.\n cancel - Stop a task from automatically executing.\n\n Notes:\n A task is a single use method of delaying the call of a function. Calls are created\n in code, using `evennia.utils.delay`.\n See |luhttps://www.evennia.com/docs/latest/Command-Duration.html|ltthe docs|le for help.\n\n By default, tasks that are canceled and never called are cleaned up after one minute.\n\n Examples:\n - `tasks/cancel move_callback` - Cancels all movement delays from the slow_exit contrib.\n In this example slow exits creates it's tasks with\n `utils.delay(move_delay, move_callback)`\n - `tasks/cancel 2` - Cancel task id 2.\n\n "}¶
Test the batch processor.
red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmp2q3_3bff/f6c3f31198cd42e87c43fd0a1105c4695dcbb6a5/evennia/contrib/tutorials/red_button/red_button.py'>¶
aliases = ['con', 'conn', 'co']¶aliases = ['co', 'con', 'conn']¶
search_index_entry = {'aliases': 'con conn co', 'category': 'general', 'key': 'connect', 'no_prefix': ' con conn co', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶search_index_entry = {'aliases': 'co con conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' co con conn', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶
aliases = ['cre', 'cr']¶aliases = ['cr', 'cre']¶
search_index_entry = {'aliases': 'cre cr', 'category': 'general', 'key': 'create', 'no_prefix': ' cre cr', 'tags': '', 'text': '\n create a new account account\n\n Usage (at login screen):\n create <accountname> <password>\n create "account name" "pass word"\n\n This creates a new account account.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶search_index_entry = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', 'no_prefix': ' cr cre', 'tags': '', 'text': '\n create a new account account\n\n Usage (at login screen):\n create <accountname> <password>\n create "account name" "pass word"\n\n This creates a new account account.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶
aliases = ['l', 'look']¶aliases = ['look', 'l']¶
search_index_entry = {'aliases': 'l look', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' l look', 'tags': '', 'text': '\n look when in unlogged-in state\n\n Usage:\n look\n\n This is an unconnected version of the look command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶search_index_entry = {'aliases': 'look l', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' look l', 'tags': '', 'text': '\n look when in unlogged-in state\n\n Usage:\n look\n\n This is an unconnected version of the look command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶
aliases = ['con', 'conn', 'co']¶aliases = ['co', 'con', 'conn']¶
search_index_entry = {'aliases': 'con conn co', 'category': 'general', 'key': 'connect', 'no_prefix': ' con conn co', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}¶search_index_entry = {'aliases': 'co con conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' co con conn', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}¶
aliases = ['cre', 'cr']¶aliases = ['cr', 'cre']¶
search_index_entry = {'aliases': 'cre cr', 'category': 'general', 'key': 'create', 'no_prefix': ' cre cr', 'tags': '', 'text': '\n Create a new account.\n\n Usage (at login screen):\n create "accountname" <email> <password>\n\n This creates a new account account.\n\n '}¶search_index_entry = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', 'no_prefix': ' cr cre', 'tags': '', 'text': '\n Create a new account.\n\n Usage (at login screen):\n create "accountname" <email> <password>\n\n This creates a new account account.\n\n '}¶
aliases = ['l', 'look']¶aliases = ['look', 'l']¶
search_index_entry = {'aliases': 'l look', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' l look', 'tags': '', 'text': '\n This is an unconnected version of the `look` command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶search_index_entry = {'aliases': 'look l', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' look l', 'tags': '', 'text': '\n This is an unconnected version of the `look` command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶
aliases = ['@callback', '@callbacks', '@calls']¶aliases = ['@calls', '@callbacks', '@callback']¶
search_index_entry = {'aliases': '@callback @callbacks @calls', 'category': 'building', 'key': '@call', 'no_prefix': 'call callback callbacks calls', 'tags': '', 'text': '\n Command to edit callbacks.\n '}¶search_index_entry = {'aliases': '@calls @callbacks @callback', 'category': 'building', 'key': '@call', 'no_prefix': 'call calls callbacks callback', 'tags': '', 'text': '\n Command to edit callbacks.\n '}¶
aliases = ['delchanalias', 'delaliaschan']¶aliases = ['delaliaschan', 'delchanalias']¶
search_index_entry = {'aliases': 'delchanalias delaliaschan', 'category': 'comms', 'key': 'delcom', 'no_prefix': ' delchanalias delaliaschan', 'tags': '', 'text': "\n remove a channel alias and/or unsubscribe from channel\n\n Usage:\n delcom <alias or channel>\n delcom/all <channel>\n\n If the full channel name is given, unsubscribe from the\n channel. If an alias is given, remove the alias but don't\n unsubscribe. If the 'all' switch is used, remove all aliases\n for that channel.\n "}¶search_index_entry = {'aliases': 'delaliaschan delchanalias', 'category': 'comms', 'key': 'delcom', 'no_prefix': ' delaliaschan delchanalias', 'tags': '', 'text': "\n remove a channel alias and/or unsubscribe from channel\n\n Usage:\n delcom <alias or channel>\n delcom/all <channel>\n\n If the full channel name is given, unsubscribe from the\n channel. If an alias is given, remove the alias but don't\n unsubscribe. If the 'all' switch is used, remove all aliases\n for that channel.\n "}¶
aliases = ['quit', 'chicken out', 'q', 'abort']¶aliases = ['q', 'abort', 'chicken out', 'quit']¶
search_index_entry = {'aliases': 'quit chicken out q abort', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' quit chicken out q abort', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}¶search_index_entry = {'aliases': 'q abort chicken out quit', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' q abort chicken out quit', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}¶
aliases = ['l', 'ls']¶aliases = ['ls', 'l']¶
search_index_entry = {'aliases': 'l ls', 'category': 'evscaperoom', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n Look at the room, an object or the currently focused object\n\n Usage:\n look [obj]\n\n '}¶search_index_entry = {'aliases': 'ls l', 'category': 'evscaperoom', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n Look at the room, an object or the currently focused object\n\n Usage:\n look [obj]\n\n '}¶
aliases = ['whisper', 'shout', ';']¶aliases = ['shout', 'whisper', ';']¶
search_index_entry = {'aliases': 'whisper shout ;', 'category': 'general', 'key': 'say', 'no_prefix': ' whisper shout ;', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say <text>\n whisper\n shout\n\n '}¶search_index_entry = {'aliases': 'shout whisper ;', 'category': 'general', 'key': 'say', 'no_prefix': ' shout whisper ;', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say <text>\n whisper\n shout\n\n '}¶
aliases = [':', 'pose']¶aliases = ['pose', ':']¶
search_index_entry = {'aliases': ': pose', 'category': 'general', 'key': 'emote', 'no_prefix': ' : pose', 'tags': '', 'text': '\n Perform a free-form emote. Use /me to\n include yourself in the emote and /name\n to include other objects or characters.\n Use "..." to enact speech.\n\n Usage:\n emote <emote>\n :<emote\n\n Example:\n emote /me smiles at /peter\n emote /me points to /box and /lever.\n\n '}¶search_index_entry = {'aliases': 'pose :', 'category': 'general', 'key': 'emote', 'no_prefix': ' pose :', 'tags': '', 'text': '\n Perform a free-form emote. Use /me to\n include yourself in the emote and /name\n to include other objects or characters.\n Use "..." to enact speech.\n\n Usage:\n emote <emote>\n :<emote\n\n Example:\n emote /me smiles at /peter\n emote /me points to /box and /lever.\n\n '}¶
aliases = ['ex', 'examine', 'e', 'unfocus']¶aliases = ['unfocus', 'ex', 'examine', 'e']¶
search_index_entry = {'aliases': 'ex examine e unfocus', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' ex examine e unfocus', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}¶search_index_entry = {'aliases': 'unfocus ex examine e', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' unfocus ex examine e', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}¶
aliases = ['give', 'inventory', 'inv', 'i']¶aliases = ['inventory', 'i', 'inv', 'give']¶
search_index_entry = {'aliases': 'give inventory inv i', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' give inventory inv i', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶search_index_entry = {'aliases': 'inventory i inv give', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inventory i inv give', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶
aliases = ['offers', 'deal']¶aliases = ['deal', 'offers']¶
search_index_entry = {'aliases': 'offers deal', 'category': 'trading', 'key': 'status', 'no_prefix': ' offers deal', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}¶search_index_entry = {'aliases': 'deal offers', 'category': 'trading', 'key': 'status', 'no_prefix': ' deal offers', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}¶
aliases = ['inv', 'i']¶aliases = ['i', 'inv']¶
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
aliases = ['hold', 'wait']¶aliases = ['wait', 'hold']¶
search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
aliases = ['hold', 'wait']¶aliases = ['wait', 'hold']¶
search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
aliases = ['hold', 'wait']¶aliases = ['wait', 'hold']¶
search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
aliases = ['hold', 'wait']¶aliases = ['wait', 'hold']¶
search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
aliases = ['hold', 'wait']¶aliases = ['wait', 'hold']¶
search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
aliases = ['l', 'ls']¶aliases = ['ls', 'l']¶
search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look\n\n Usage:\n look\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects in your vicinity.\n '}¶search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look\n\n Usage:\n look\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects in your vicinity.\n '}¶
aliases = ["'", '"']¶aliases = ['"', "'"]¶
search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶search_index_entry = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
aliases = ['inv', 'i']¶aliases = ['i', 'inv']¶
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}¶search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}¶
aliases = ['unwield', 'unwear']¶aliases = ['unwear', 'unwield']¶
search_index_entry = {'aliases': 'unwield unwear', 'category': 'general', 'key': 'remove', 'no_prefix': ' unwield unwear', 'tags': '', 'text': '\n Remove a remove a weapon/shield, armor or helmet.\n\n Usage:\n remove <item>\n unwield <item>\n unwear <item>\n\n To remove an item from the backpack, use |wdrop|n instead.\n\n '}¶search_index_entry = {'aliases': 'unwear unwield', 'category': 'general', 'key': 'remove', 'no_prefix': ' unwear unwield', 'tags': '', 'text': '\n Remove a remove a weapon/shield, armor or helmet.\n\n Usage:\n remove <item>\n unwield <item>\n unwear <item>\n\n To remove an item from the backpack, use |wdrop|n instead.\n\n '}¶
aliases = ['press', 'press button', 'push']¶
search_index_entry = {'aliases': 'press press button push', 'category': 'general', 'key': 'push button', 'no_prefix': ' press press button push', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}¶
aliases = ['break lid', 'smash lid', 'smash']¶
search_index_entry = {'aliases': 'break lid smash lid smash', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' break lid smash lid smash', 'tags': '', 'text': '\n Smash the protective glass.\n\n Usage:\n smash glass\n\n Try to smash the glass of the button.\n\n '}¶
aliases = ['press', 'press button', 'push']¶
search_index_entry = {'aliases': 'press press button push', 'category': 'general', 'key': 'push button', 'no_prefix': ' press press button push', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}¶
aliases = ['ex', 'feel', 'listen', 'l', 'get', 'examine']¶
search_index_entry = {'aliases': 'ex feel listen l get examine', 'category': 'general', 'key': 'look', 'no_prefix': ' ex feel listen l get examine', 'tags': '', 'text': "\n Looking around in darkness\n\n Usage:\n look <obj>\n\n ... not that there's much to see in the dark.\n\n "}¶
aliases = ['burn', 'light']¶aliases = ['light', 'burn']¶
search_index_entry = {'aliases': 'burn light', 'category': 'tutorialworld', 'key': 'on', 'no_prefix': ' burn light', 'tags': '', 'text': '\n Creates light where there was none. Something to burn.\n '}¶search_index_entry = {'aliases': 'light burn', 'category': 'tutorialworld', 'key': 'on', 'no_prefix': ' light burn', 'tags': '', 'text': '\n Creates light where there was none. Something to burn.\n '}¶
aliases = ['move', 'shiftroot', 'pull', 'push']¶aliases = ['push', 'pull', 'move', 'shiftroot']¶
search_index_entry = {'aliases': 'move shiftroot pull push', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' move shiftroot pull push', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}¶search_index_entry = {'aliases': 'push pull move shiftroot', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' push pull move shiftroot', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}¶
aliases = ['press button', 'button', 'push button']¶aliases = ['push button', 'press button', 'button']¶
search_index_entry = {'aliases': 'press button button push button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' press button button push button', 'tags': '', 'text': '\n Presses a button.\n '}¶search_index_entry = {'aliases': 'push button press button button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' push button press button button', 'tags': '', 'text': '\n Presses a button.\n '}¶
aliases = ['hit', 'parry', 'stab', 'fight', 'chop', 'defend', 'thrust', 'slash', 'kill', 'bash', 'pierce']¶aliases = ['slash', 'stab', 'chop', 'bash', 'parry', 'fight', 'kill', 'defend', 'pierce', 'thrust', 'hit']¶
search_index_entry = {'aliases': 'hit parry stab fight chop defend thrust slash kill bash pierce', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' hit parry stab fight chop defend thrust slash kill bash pierce', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}¶search_index_entry = {'aliases': 'slash stab chop bash parry fight kill defend pierce thrust hit', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' slash stab chop bash parry fight kill defend pierce thrust hit', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}¶
aliases = ['l', 'ls']¶aliases = ['ls', 'l']¶
search_index_entry = {'aliases': 'l ls', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n looks at the room and on details\n\n Usage:\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects\n in your vicinity.\n\n Tutorial: This is a child of the default Look command, that also\n allows us to look at "details" in the room. These details are\n things to examine and offers some extra description without\n actually having to be actual database objects. It uses the\n return_detail() hook on TutorialRooms for this.\n '}¶search_index_entry = {'aliases': 'ls l', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n looks at the room and on details\n\n Usage:\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects\n in your vicinity.\n\n Tutorial: This is a child of the default Look command, that also\n allows us to look at "details" in the room. These details are\n things to examine and offers some extra description without\n actually having to be actual database objects. It uses the\n return_detail() hook on TutorialRooms for this.\n '}¶
aliases = ['l', 'feel', 'fiddle', 'feel around', 'search']¶aliases = ['feel', 'search', 'feel around', 'fiddle', 'l']¶
search_index_entry = {'aliases': 'l feel fiddle feel around search', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' l feel fiddle feel around search', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}¶search_index_entry = {'aliases': 'feel search feel around fiddle l', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel search feel around fiddle l', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}¶
directory = '/tmp/tmpn25if95g/5402bb1610b784cb91e0f2db0b878164f58bbce7/evennia'¶directory = '/tmp/tmp2q3_3bff/f6c3f31198cd42e87c43fd0a1105c4695dcbb6a5/evennia'¶
directory = '/tmp/tmpn25if95g/5402bb1610b784cb91e0f2db0b878164f58bbce7/evennia/game_template'¶directory = '/tmp/tmp2q3_3bff/f6c3f31198cd42e87c43fd0a1105c4695dcbb6a5/evennia/game_template'¶
evennia.server.portal.discord.DiscordWebsocketServerFactory(sessionhandler, *args, **kwargs)[source]¶Bases: autobahn.twisted.websocket.WebSocketClientFactory, twisted.internet.protocol.ReconnectingClientFactory
A variant of the websocket-factory that auto-reconnects.
+A customized websocket client factory that navigates the Discord gateway process.
initialDelay = 1¶do_retry = True¶is_connecting = False¶clientConnectionFailed(connector, reason)[source]¶Called when Client failed to connect.
-connector (Connection) – Represents the connection.
reason (str) – The reason for the failure.
clientConnectionLost(connector, reason)[source]¶Called when Client loses connection.
-connector (Connection) – Represents the connection.
reason (str) – The reason for the failure.
reconnect()[source]¶aliases = [':p', ':UU', ':x', ':r', ':!', ':>', ':w', ':::', ':h', ':', ':A', ':q!', ':s', ':DD', ':wq', ':j', ':I', ':S', ':dd', '::', ':dw', ':f', ':uu', ':=', ':<', ':y', ':q', ':fd', ':u', ':fi', ':echo', ':i']¶aliases = [':wq', ':<', ':S', ':!', ':UU', ':q', ':i', ':=', ':echo', ':::', ':dw', ':A', ':q!', ':f', ':x', ':', ':fi', ':uu', ':dd', ':j', ':w', ':I', ':u', ':y', ':p', '::', ':>', ':r', ':h', ':s', ':DD', ':fd']¶
search_index_entry = {'aliases': ':p :UU :x :r :! :> :w ::: :h : :A :q! :s :DD :wq :j :I :S :dd :: :dw :f :uu := :< :y :q :fd :u :fi :echo :i', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :p :UU :x :r :! :> :w ::: :h : :A :q! :s :DD :wq :j :I :S :dd :: :dw :f :uu := :< :y :q :fd :u :fi :echo :i', 'tags': '', 'text': '\n Commands for the editor\n '}¶search_index_entry = {'aliases': ':wq :< :S :! :UU :q :i := :echo ::: :dw :A :q! :f :x : :fi :uu :dd :j :w :I :u :y :p :: :> :r :h :s :DD :fd', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :wq :< :S :! :UU :q :i := :echo ::: :dw :A :q! :f :x : :fi :uu :dd :j :w :I :u :y :p :: :> :r :h :s :DD :fd', 'tags': '', 'text': '\n Commands for the editor\n '}¶
aliases = ['n', 'a', '__nomatch_command', 'yes', 'y', 'abort', 'no']¶
search_index_entry = {'aliases': 'n a __nomatch_command yes y abort no', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' n a __nomatch_command yes y abort no', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}¶
aliases = ['p', 'q', 'end', 'next', 'quit', 't', 'e', 'previous', 'top', 'n', 'abort', 'a']¶aliases = ['n', 'previous', 'top', 't', 'quit', 'end', 'a', 'e', 'next', 'abort', 'q', 'p']¶
search_index_entry = {'aliases': 'p q end next quit t e previous top n abort a', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' p q end next quit t e previous top n abort a', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶search_index_entry = {'aliases': 'n previous top t quit end a e next abort q p', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' n previous top t quit end a e next abort q p', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
(wt76#8QgWv aJ#t
ze?#FUV$o6nu<0;1WEgc+CoYI6JrkhGo|`cU2&@m q=A?Y8Bs@g7uACKa@
ze`H?}ZowZVy_zh)pOUm9OYWaZ-cZ)Pe^L*Ak>E?$!uZ9ANaPs{5RnY)Rm@|Jx%znI0d)7Y34#SooACAU5IB5gJP;2{b5`Z|
zWu4{so1Gj=dT$#me>B1P-C<9#X(GpS>
OtZ zk0ye;7A(=%KV@Y4CWD zsf}>wgM*O%V19b@T115y3wh(=*!aP^dMG)G1b1Gsls$HVxP#4ul zdlbHtWs<_VLRRqwfyJ{(!Cf_LRGv*qvTC*DSv|*9t`%~cZ7naJ(F5%Az1IkPt*&cK zvr@k`rdg-cQdrikcM8qg^+KUqv|9KV9<-1_lPVSxmser_e;!gB+_Q5N>Z`s|*B FJA#O1^qgVJlth6_o*h z{i339ovx^iNl#08`qHVAuT?tvs@!Mtu=q4chkli@e?6?>0ppe9^6Es{HDcYc$=~Us zxe>+Xbd+G5_;hS*HD)6k|FNHA8TeaSCrh}du6L(nW0yxx$hZ9Z(};neN9s;Oa<4U4 z>r=AM6B>_otJTT6%`xv `9eYR&l%wCOU z)$+B UsGLQ>L$M-w1zJpg9-ZShDHYJ zwbJm0Y-txmn#Ge(1zu16&*J#|;`(dID@`rTe;n{UU-nQgJ*m*iR>+Z%YZfwK(D9X^ zD;7h@a7?kd6$36rX0V9!;BnjjCfd1tcmRpbA%jZQqTFrIw*6_ohZeU*`NehYr~-ey z23`XM3sbQ?j#|rEiaF}+U_2>bqm8MpLL{QLN)hc?Q(SG;Y3K62(w~C}Pt=9z C^hvKHHM}uINhgZODrX3fjZr8?b+)VjkHqA5Ha&pL&FymJ`Pk>y~OU>IC&__K4tk z(i7DswtX8p8sS25;}Ib=^Wd joD%b!_2qQ o+U}x)R^27${nN+ky~1r&)sV8;(Yfo!%@$KW~z=2=(kW_2U(YyF#%%E9QDbfAXS% z^GQ4bPL}g=w*r=D{f2c;JI{Zj#*Q>i9W~Wv0uj?}F3{EY59A)7VBe97AL(=(UbC>e z>7GcrkJ-|s!6PDr!H1J?am94tiY7T`5%*Zy=zW4?2=xKa2?&p ^m2 zaSx}|wlzBtx-!*zNmszx&4>;Y!$4C z)H|rhG2=HT5RrjgfX8mm28l{Jk89qrU@q^RO^D;UP94Yi@$2zir;X#BspRooCx42g zd{riLTyiAQEA2kx;*n!>jhOa~OGGqiLV_8Zo713aob$-$tZmJvoztK#KsJ9PX9@Ce zlfcJx`bW^mH|7hFeUtn>dZTy=?jr`3OVLNK$}B;A+B&tw8qI9_IfI7<$i6|H8n1oF zo<3TF7)ms}aZ_aFH((xZ_MDJ?iGK=pUgt%%{Q*wuZAn>gleWu$&g)H*{+NvYP%4q1 z6WLe0{J&-UrYO^&e)HpR5DCpATd~y8XYezDpFf*{`)xR^2z%CV{g6LKK>jEoe>6jG zv~=`f4uRcix~X@&3|>eJ!4zT7`40 *RqVp=3{^s98ux04<-x59tOn&p~-`vRm9*6wz z3i7{ukbf5mo&HV*fAu>jd{~{8q0`?;>>pqK#)%A1!=-EuGJ-*o5=7vXpp%7fN2)%I z14CXsU(r8CtVi+yr8OwUWq;VW C81gIWNS*hk?e! `JRigf@4Yhd=t2R93E&g#}?dzrs8%eP6DSsDWz&~8$mj$1{GaQ7? z!`|{AM#Qeks zM;Kv&V}yqLhTu2~)~4I}s_8J->Q{s^Vv8uHU3$NtugwVOj(@@cq2K%TX|m^{ji|L4 zeo|+Zf`68Pq05AY3nF(^3V=$xLB-JI8I%k`J~keX2yBW7y`2hEq}i>rL&0rd ?&{_R_6HTJoA*rsE }M?l#3`9td5Mt>P8GlfWXjPoHtQa^$!KR|$FGun31 z6w9@g_NXufcBi@wm-0bM6u1-`N&z3)7|9?5=s=UoJ!ee;h7g02(R; zMSqNz>RI;{j#1GF7L-pqRt`!HKgfF)B2hvl%+?ky }?lJ4jF6H}->FuHFvaiM_ z#1v4pC+H_OD--7DreI~B`S9A7wgdSz1+4To7`IludQiZeq_^FnB!);&1F;CpSp%ds zy4ztPq7P+82e+npSs1tk{_lpyxqnL4hJU%DZOOyNG7&zZ85^Gk;tre>>YS*~LK`}{d@M@y_*D9_=2d=9 zWO002W#!>-N=Hn+%(YC1wFsUGSJ8iitC2YGce?}a*elYcPlaupVMIC=dNa5r=wc+> zYsuvy83MbLjt|YdVn?-MkD&*k8-Jv3*+3qh5_B^1K{_i55JEN >A075)Sf 0G;S;v!>^ zz5=I&Iwiu%%}-~iyPnR}eEY*T4NUS^%rR*U`^H8sYTB+fF| (6M?f zwrQGzh6Roa%6bdUf174)+SYxuAuylDyB($&TU0c$1aX`VatV`5(nLxoLNdu{2B0L& z qF^dQ}5EEY707|a}70Zk@KVBT7_)#AVk7KjEARYb$@9$znHQ oZwBk^y(tdn=#HNM+*f$it)Q*p9=yX8! zP?BBCaxW%U7RhVw%zv`m88eVcL+OUV?t*ZLO)p*G&$S`NK2=4R!UH+xxuELJ$||@d z+{FaKHZ5SNmBMmG_C-wbU}BQ;xz}R`FC`hHFkuWvJ4+y3LSxFp;S>_WC4Bb6!r7GO z=XP)=-7)8MSOIECptfF^bADC`rsh0=Z1*5QjDDEGc=kRontvk{)NxE2LI`%GpN6oh z2 UpYxKkYifNofjgat{Y@(@Iy1lzQPVkB|~i&NVd9f{P?0wT17 zA}BH!iz0g4G?US@tu##a&_qJ&rYexi8%EgB@zlmEaP16!C)_8IFPLd!K8P(T&q5Z^ zs&{KjZe(?w)qgW6?8Ra0596Fewe_QYV-;VT0)b$H6kX&k!k?Kl&akFM`%k24VO1EX z)pcoTz(*mp6KHJ5mxoAr2n)2bBEnMenfq@P>TxVh K%fo!|1 YD#pxFFaDQskO~=Qyd(LSbXLo=xpw}#{KKxEF zY{J7P8*lfhtY~aw3ie1&S@?M8EadcW4`+{_>e@P#H4=^m@APj {mfk1(A`Ks*a5QSjSRqZM}C`OFo$$dqw+eeDiXp_z~PEr-5k tASW;QH;m=NT(;?J!DjXli=BQ3xD{_ zQ`V(;p;_z!rW-o _vAR^Y1ls zQ>3l*W|+A;u|3+IVJj#=6GfQq VUxc7G?^;Ms {TBzAU z#L&KC6k6{t*cnD=>pYfMI)4r372a={RI!2`ry|JVTLmxZz0wf!o#N*OR2q{2;urn#9isaUw?47CG@%aHhUtz zOaSZ@Wm&)A?zMbn4mJ?`mRW+T3_JN|rXZv<9ws>-9)<7fgog1d$}!R`hcmow*BEaZ zS#+}q^FWF2?9+gmj*cT{GJ+4kd^BZkyq4@C5>kSSe|yLxqtp6x3y);5Q?f#}y6^UU ztMP$6WzU79lN`|oqJNza;SwG$Vd1b572#}3>kH w&~P}&MNQ$ zKsQ4WnOI>Jq07oIGg4?Gc1Il`RW_bf;rDyEOUkbb2C`a&`6VHt3cp}z(*Ug4h}G`D z)a=%LWbB;~e`20kO1Y;uRkTHxNM+2j+VYH%o*ljUB<~FvdVe1!h;~>=+!`>4R89w( zE+yFEb+KSBe6}Tqg$c0dUR=nJ1-rp-IaKDL7)!oo-{Lf-ixfA3;jDH9-5~Q0wngBV zi^AI*O$da N%-GA7^z~j7!E{+!L+X?BENi)RnzQ=}1V1D<#O9`xq8`|qdP%~?UD1<*> z!OsAioaC+zI2#ccV^r)Th^)*GGq^xXP|@E3Omt3CMiZeB =-jQT|zon1spMYk Nn+%-5g@SJAa^kq~=t5R2Z5cH-m-B~=E z@yv^~1Ak;Rb#h1FQ?d0*Z3Mu2(roV=vYozNVa9{-DGM(pt }K0-~=^ zt$jl))Ysr7n1~5-;o#wm {6XHxd0EF79fRV7y%SWKb5;+E<;JQQ9ji#gVx!m>$9>vq_Dsd z$bans_@#asqAt7=@Um&cj<3^p=&>*P9PYqvZiQxr6M~(EXP$f-df;Ze+MjJo?X$im zeCaEyG#Ui2(TS~>xl5$dv(uVVY%78jOEmd7YTnZf@8bHFFf`R>qAP<6AqP7UXl-)T ztt1)V{7t7zBSR$HL)(#EY`Tu6Zt>fjqJJ+>bz0DQGA)JDcxF^Ja{zpPs*|EkxR;t9 ze;BF5e_G7eyF!XF7+hkOz8-Y8xz?hh+|LzRBjp6(HQ4Og#HbLG!Den>$8Kh8j*IXZ zAU@66B%3V;)#VHo#sF;5n5`q#Wrzy!@WL^PFp~dF9xQo2GDm8gN{oXU&80el4S&`y z?eQ|wO~qaO7tj0%hB-pQTUa?`UnT% pWE%Pv*Na2Q433rB3k zh?~2pgdFX0vn>fFp2)q28)94obg@w?w*aEzI+atd47g*-FRL?k;dXFdbnY!Qo!Tyc zhnL)WA*0 b=Io1H^Z2_u4< z(5}Rbl_o{NQz*h;svP_3%Ls6L6$_$!DM3MYNGpp8!e_dmFsPyK$iwTJd?mJX?cu13 zxa8Gcd`z*ya7`##OZB;czue^8$_9X3Zf;9}k3_2BJ5fq)!HKvsUH@N`H;);}=S; zXeocq0*#Ml)wXvxSz`vHI4_oiS0cPDn((Ip#FTMccXgN!CP8lN>1R3B1XnllmUL;> zJQQ6+(>|i`yX2)B??{(OPge~PXppXL6hD*Tj99{3H$_AC%407rY}{7v)_Y27!;lfb z5dpB |@nJK5Q5tw7}0x9|dwIO)yWk|@ROFoSmdN*Lb$5$DA*j9bM6X{#FYV7HH}P6xQ1 zDkY^Je zXz9Xm;5DGYw0KE`1T^LkAEeD%Zx!xAAs5m zN4>{`|6j- rNlpkKoLnDt0^X_2o=#YA%=Bp;*t=!&?~X^XdZBG^>1yP=QgPIkr` zdq-$-LdO_WsXO74aDNvY-PbOV;VT%h`f6!UAUkR2e$U#4mn>}P$EDIi3T8DDC!sEO zI(WS0zQWfp$c9GIJ)6- otpo#RbYk=dr@UCPe0(?09bMz1(awtfdM cNJ?QB(KsQZo^nFO3>%Jp*}&LfT+sw0f|}6o@J6{!6Mys-s^Et~nkmysAhR|D zlniWugf}^^v!*4srJErDQ%eyjn6( qt%4!t653)yB9E}+tk+PAyLB#sh z;F(BIr(T6>!Eu&S76dt&<8}iB)S>-qw#WPT@bpMl4tE@a^>IL4aIb`WCDO~G5i^;_ z&Wp*Ur9yRc&wsWr?&H%;7;57u%7*Mj+>~#p47fb}D}L-uhJST-e)sX_{`T(d!}-Pi z`PuvTXRqI1+{VUc__btQjHT2XleeEfoL`^a++N(wkB2;}x@0sYXh FV1exf4Thd zE+`V7LB>Qy9{yrFq|kvC?O7w0;^A7}NCoqGVCFW3aDUeo>}EZ~B$Ezu>qj;u2+u1! z0$iX?1|P7_z ?Rs^v=4c|V>*ix$sg;iZ)?`vNE8l{Dau)us}9Uhh58q7J`sdX`SjyGXn zF0%fitM|nwB94Q|t@!02=*Z>?%sP~w1DO+=v47y5_@18198-!Wi5Kv?>awD8bSYDA z8v;!6upC{miXuE5+Gzb#_tX$F*g2Y4$bu2IE)W9_Mw4uX5!Vx;8?~Jd7y_^!aridF zD0c_s>BB-NF~xdB TMF3nnJlwR99a8=p7^(}?i=uNQbu zf`1xB#S}Iq0cmZlgSjv;{Ab65b*Pz{0*hLsjG3ajnP;S*TuNhNI*OYOmtUiZn1qzI z!_SC_A`()U%bIp6!Qd=3{%?oe)s^#j#28eB=YQ?MY%?$zmj`Em?5NIV+%cwcDObnq ztJnk>B;+p_d}K060r5k{elP7nO}hs4V}HHE`?1L;=7*L|;BZ<=IwF?q@l7OdK^aXw zp&8$b8-KK_J+Q@No+Uy+Y!E=7$ORH+l&VHEf=s{|6KM{X@1t5?-Zd#~6FnCeWSM(1 zJicq7XX|~;Q2#ya*h8pQF*b1EleR>KGE#~@!)**qA=3p!|592Dhg{5zVNfOHnt!LA z1AJ2PPIM5*NCJEk`Dx_{hHf3T1s3u#YAK5-uD6KC#6k$%0JtxK@fmzYjW8=jrSrdJ z)wXWIaPO{Y(KxwhUZ&{dl>b;IZ_pEM8V>%3MFXi2?GTGRx)!KXyb}Bgocwh_8+`}o zvq4H5ollDE6>HXi$*R1x?vChzSbxi_yV)U?j`v9+F~!3`GZu|u9bOhXg5L@ ;Jr&*wz-R2tFVXxg z>I}Bl!q}DYg9$bZHeAZ1y; zDj$YA(BwqXg#f8H)2e(JNPj_V=2o+*>s_ECEa(mVZvoR 7P61iKqQDFhJG{D5m2gL?EQ^FJ4|XC=9LoW6^7Bx zqKwp)qxpzrQe@=l-<2e@@ aP0FmoV@1#! zCR?$pn=UKUGqhOJJX_}*lW@GDLg(ZRt(JhZ6C3LXb7Uq^B%v{)MoI&KTZyLb>S1zd zh?xw)UmD+MFR 5L*lp$K{3quXupbK*^vZM6WJ4ktzwPVKL_8`*S;$ z-g(6rE}OjG_Zf@V?WQUA)(JEB<$VJCFi7)df`HMI3OEwMCv!|AC50p>St%phqI*i3 z#$||IV|2*BVSipMt(Z`9fnHW!#8p!A!m)z2Fh~wpPsxiXshQ;%uD;LcjK*w~WVU8_ zl)0mYnM-C}mw}Z$xQUfj4Aiq*rK#bE;o680aIK4nFziT86$Dc*O$*QOp)F3&2B1l| z5dyzgDfD8#@PZ%u{xIDqoaofX(6^ovAh*r%whhnFKz{ xZnok4ipOQdTY23cq{*@%7pJ``h!I%j>&a3$xaeMll;DwFcOf zrNp@;BD{I~OQtgy8NzVpwPk+Znn|=32sg<1cq P6_2!4AdPw}pa!us;gYmY z!YCRM*c}Hw4P)?)l6vA#neVc#E#bk7r8@i?3x5rpJPp~^_!e!KIZm%gG_kXzi?J=8 zA8xp#ow6*lmTwP)EOaTf7RfW_&Zdy&^({fJzXA+;BiekOA_4WshB52D1GOzt_}&zU z;XV{vw_!UC`~}i l_9+ zm4DGH(S)kld?B8L7Frlyr&K2^9v1nBx`zQZI6L&8P>cl6;EU6?PC_Q(J5^yI)CI$1 z`0|AIIXdwU)@%jbK%bw`#78Hd(y}W^XZfmyTtkKqA$WEU4i+RFVtU@d8^cNg!@G84 z=!V;^$#7cS3Ev1V8^SsFpcNJ-*V4nGO@CfIK9YvOHCSPPr5i$|Ats0?`bA*AkwK+t z7bR$7u}eIP0~oy32!f2}PSke8fazRKHJkO^k#aR1sh4$zJ?T?je~C!Psp!YSB|#Sl z@n3t=97L<%jVekIzZKz++yi@xE~rAaFWG)hSs%&W($AoBJuAYhP*^+B?{i_1q6c zH7XHcu=O6UKp5O79x4%`h7=i0$UBsNDatY}(1bAbJMa$sLqi@T^t2*;hDTd2!OAea zQ-_bXqsJdy>S*2goP4t)=oh2RIr^DAq-WQcmi~kL3R@YtzMkA%+} !KP33;JnnL=?lo`+TmX2Y=pi)5wF#TXZtw zD972vC>Iu7yRIo7de@yqoym>CkF<&LF&&|tNl&X*4}DSQ%2htX-YyJP$R_@pyNio| z#FIGi1m2b)Kv#6^@ Pfm^$^ufGm{>d5lXAd_U zPg!c}&B{StD6Fyvv_S)bqZN8x*B!hOx=-IW*^bCzqq$8ogywHQ3lA{3R&@jpJ&F(k zl-N*6X91BuYAV?xYE#OMxPOSoP3|jm4&|8eYxXykvhO H)o?H%(-Zkb0SJVLc>irjbU%B`3J@PCf}Hr%js(Ep|1 zJ=9%OSM$gR@&6@$1roRWY%{xn2;p1yH;|G&9^x}0;Uv}}?(oSGgW(8|5?josx%?=N z1|R8<5i7eXZ|~ZeKkLk(_dUmNBM7_U+ZH*&>ou@P2x94u4q|8ziw6qeHuO)Lt1DUx z`5ff41Vr$559~~09Dk(ebDKyJ>1vIaX)viIU4Z@$1k-qQ<4$KWMH^6HqQ)$~a=*U> zCv5;&O3}nDa3}^a7filGQ?lZm* r|rCExKdKm2#6rrWyANmXWtx)07^P39ebyvGkK3)2N{+kZV|a8KPcLs!|1vMiQ~ zbTrJ>C+xedq9wl>a{NUEy5IIic&2#aQVIuI! Z0hJ=85j(RdzV;~+0j=0e!=7rB z7H4>=31+j&e`X$oy&7IFN1C**gZR>4Hp=bf%=-`q+hoyb@^;6cbP9o0{7g2iyv;H; zS%Vr6SzByCo`0WW!J`|GW&IMWh#lZH_zWq*&V7K7RhbtpkpsvF0c(O69dTqC^<^1` zPtm_H7Xt)eu@WX-VK-;*nbJyZqu^Pd3nLG(1GJw`b`{!T3khmW6tO{6yylF=(5pGf z`5F>VI#D|C;;E*F4}>p8p+72Pzkupg4Ks44M(lyOiGL!$++DqQ^Rq*uyyPHO8>NFu zp6kI*mvS%Er*-SX%s_7IC XnbawO8 zRKa}1c{E!P<5RjQRU9x}D;^?YArkiF;h~&PSA>G%z&I?o;(h8J8^R%6VA=3sT!<6u z^&`8oy? )h4}eYFu*G zx-nA-)|H`C!ksKw>_IPZ*el?Q>Q?xXSST5MKY!77weIP>kTh)%ucr=f;q*SBTje+N zXF75>hl*&s8c)xMYr~9VGa+XC8h`s(imF4C>BY0-`34`W8RUO5H55 DS{Jo}hPve9Z~x@%^DkwKksb=`%+@u08SUn87y z+<%9%hoFumlw(2k)5uZmL$P_t%WErESv v1tAf#7pl`6fa{l*R1kYX}P^oQpb zj^rv>#!l_*aj~2Q3F5_OU3oFVk{&)ybbpL9_(*QWb>1*7@`5UUydq +dT_!h`tJl?RJyi^GTl@clFT8CUrU=!%-tr9!Hc)QrlI&?`XKz8h znz=!5z?biXu#vao8=*KmxQHi3lpB5Re5GxGH-k^2UJX T6Wjeo-M z$IFFd0;d7&h}@PkcPb@`A)*GFiKv~H&4-NoqnCJdy<`_wbw6mQs ~e3y(t$m1!^ZoLX5LIb7QVyBaOAf} zT@hUGOJVn&*jklQs8?dmjz4C#kpXaphO`a_xso)zo&x(MEgg`P${tOF0)GyebMC{R zT|q0|=;K$6MJXMkl(s|4#HeNkIx5`+D$ZBXj&q)7eOIUZe!nN3v#59!bwDaA^H4Y_ z&_nr@pS+rb8+Pn1pGc*hP}663a1)UEdX(JtWmkxM&O5M40jYtmsb|DxRy73hN(qxd z7))F(%%JwWp0u60o-!}KtA7H&VKtfUrs*M|b%S3l;cP`)fzyMVu`k)XTyHgN(qk3J zfyBER_-2=CN7@!1?fRpe)oitkYAWpFrUjn8#gmoA--g$HrjeQk6cL;HxCyl8k#FqT zUVZn`+ks^J$h$}7^>>eMPX(NUh0V`~jtfiUlSf{?j3B>&BW|A#j(>iA3R@<{=wk$# zmv>V6!5C4rIwp*}!A%@I8I<8OrhV2u84IZ5KU@^xjtRILq4?` 5M}tJiL#25z!MwOp zbUM#w-(%6qNe*da()e!k6x%7S9qAB$Nyi^|o+vW9mkfiwQh#1s3{b@_Kf2tEzVf=G zNgZi@3{Ph5hNO0DVHA@_%kVJQ&YBle?+_*>userqJ^{vymRc5t(72@KG7j9-)H2wp zh;B+EE?w=iy5$K^3J-P%TRLwe`Ht-B=D^Czo;pm=x*2o{02wSA-eQm|41ypD3o>Z; z@#AY_9j5Nw1b;ufB>NhtKG+gyjVpv>Z5o7nz)6${Wr>Y|wg`n0wtOuKSIBWOnti2p z{UDk!AAb {hs=zS4a{+mW&&osWfwy2C#fj5OWuHv2Fn7L>sy|9>NScXfVkMcuV|C@Kb(s8_dd zrl|I#xns=Hkz9FtbcFX*Y@Xx@7PfBNbVG|$A-2D~G+uzu5F*h+BpcYz7JFzBN i;6u0WUiWe5WYeI*wW1gCr#VbsaO*xDSy$(43VDFxj@jWO`S-ugoJ2?NjFE6 zk)SOd{!G(Kh=88A|f+QR^s1vY5@ zHyLfGN-UTy`shm)^i+;9o+`nTzo^vm4kj*e9{_%&XP<9xg#}$Lmu$iK5z^1M((tah zhJR`ofsX2>mG*m$mtft52Ki_e@SPbtRmi%u=+G2Y8>xf|0pGSsz%3~{G$GY`6{)Mo zV%s;wnzJ4?Ci3UPB_yNSjCxNyEjWonViQ3VeWQH%IB|wwTGry-oSNvR^5Nqwiw&t- z5=ked-m||xk{UMk+AcOBrPxQ<_G>$D0)Mu2EZ^@_S`~z$k4Q!Xz%88<^n0jG33u{o z(UHwlRcx}-_5hnliK+aZa8cf5bE?o+N0g p0LB!3#%`n>3- zr=ZPF%W~cRzf@Wza-;*^%WcI$JnRGnLU1AC;2 u6q4E)$DcFbd$5WrXb=VIty;;eRxnjl@7ncIzEM9Bo|Cqb7fk|o zn #Y{`8#iaIp_{XH2LuiFhD}X%){llJ`cke|+?$9E9NI6MkASaEh?s zmj}2yLLGdXOH^Iz3_g+!sT@prCA|&j;NkJUx+?~tL%M l5LzSt+(*7sTtl5EeuA??C@hj zHlMo^-!96!f F&StfYG>3nE5bYJ0p+m`t6f_<$BWFz zLF65s4f=BJiIi}S$?}Moon<8V3w|b7^6@Sk-;6pvh=kN*Ji)rBbN&o(%3?~)$VNBJ zmFCM5IV?lrXf3=(mF8hnBSodD=rwmq-f$NO@n8Fbwv2S--9)rJs(;WQ;Wu2wYg{c5 zK1xDj%d94aPnZyI$%Us00_H&ji4eGBfBn!DFBrVYe+&U`iY*vsicB6|?2di;6NrV2 z=aCdH^x>$6<(UaP%~W(a)G<6JVIziPF;V$01pdVSnxMHE=POe6p7E~|QjCMSt>+ze z@?bMVP}oBho0PCc4}a@z1Ru2n>MY?t3HMQNB6t<#FZ4l#LgyYP ^q^)= zNQorRq&akWh7ZoLJkU9(ylfJ$r4#K!dg6JQ2SVrP!ZSeA$G$Anwtrx)Le{1&*=Ka@ zLTs ?B&h@JcEHa_8JJ= z^31yXvaY{)62z>A0WQtp4kE=n=jPbpX%Xi2ic^KFs()U4t((~@j$n>Ry9O~x;2_kY z(FkX7vJX8iI@NW{k1~R3pqUEkAm{v>c2;0-C{UHKv9Co1A %TU5=CU(hp~ znG54L0bQzYgYmf_wSxEktoj6R0U9;n3o?Xvp!1X%gYb16EFi@uv|O+bk`9hKvaOq9 zZVpXhK7a1n$XL1rDufF(%F{^m^qHXCa);#OVAdu;8<^OW=YS5 M^R8Y`4RcBiRPGfB+Sp$7q&U4&b)8x*px((Yx W~j*?y(dLQAf6Xe#BzjC1|M#g!Pb65HpSjQW>vXN;{0kETrA^GZVfj4 zci6c}oqjAE74@7D*s0de8NeOfIqBfTdVhodiGHS`ehfo47f;; zfV-}nN1?D|gCh-u(1rCtpvs{g_Ju1vK_fYh(E_1XIK1y;8|x|Bv|oy{BzcMj&cAi4 z>oF0&We$mOFmSVHLcrKQ?&CXazaEx10_;r@Fx_7m*EL2$azi8KBEA?JNXG~>bbp9x zQ%xGgw5(J1pdx0XRptza^_(|iS;Cfs5P)SH25sunxYLcn(5CW+q%4p}SqZGk1d&AK z#K2-r{-5ncpa|Zx1r700D%cSWrnHFPFy{oE6MVo5ob6hKWc@(u&hLv|R+Q;`X6Vt8 z?MgWQTsb;`NsnCEiL~@%swgzbgMXkfJsHxOjuo)u%+@TT7)`W^sLUhQkVDuLI^_tq zDN~=boc5I++`e;W>JU!6L4PJ3oT#j)*GU}Ok7zW}7|KVI!Ou39Ps+XJKfFvaMPbYq zQxu-tO-2V>b-nXslnf^_3LS2!gA `@s7&F5$C)- -D87t|H{4OSf#Kd*|+ z?0nyn$G%Kk(sjn`{T}7aARp0gJ#$Tjt5+dzAQsQ?ZT-7+6I~|q*W4;C90A-Kcj!hM z$U9!K)PtbB7iJ(s%iXkhynpdFFKS5Mz;LI;Qq?pGY-B<%-cE_6;2YaL+X)pB4k4v` zN~nv+#uLxriw)v-7P~5sXZgkEa!BMuyTB=PNGCXEqk}5i_~VT$+~t#I!?W!S4V-9~ znrE_+cF41Bn5IJ;O$S8**N2S?DwA-5qFvYJjz0%zgs0qP9My=oWq;kxNIoCno$8;c ziHZJGmERVm%pVKBByDRPWGLP+WbGk=Pc-5PTk#HHtT9v|6$1E5ohRx#p-Dbkhe!CJ zIl7~5c1J?aUX7G60ldAuc>gB3ySTc3e|C3~{O^lD-~Q~;gYA}k+xro@l={ej_-GpP z*S=`HH$_G?QtF2P@PE;S%tJ>U&JD|VP~w}me{hyZ8H$^07oQG1e(+EMw=1l}D`KHU z5yQ?ASHz%GV+_fM5tTb1iY^5k+uO!ux!oC7+T_9k5%o+IPcKuX85k3Hj4c=gd%-kM zx74c`B|)SjHmG9~C#GzfbqX(GQ+6@3hVgekhh7J`6~p&W^nWWzfuMqJB6b(|I iB0Un-bm7j4`7n>z!yCjP(SBe}$n5bmJrWFU3cre8=_ zc28ho#95PuV1KL@v2QRa 5e+W?jpC+mU5%Sv_ yiBNk@*V7cO5=1KAo+CnHvP9`07yirgnt2iADTSuN*fT(i|8O9oil+` zdK>d(UjK6_aYVakBahicGb;hdF~ZL6+jLM7z{Z31sJ>Z&z@ gOZ}|O^YLUNP%L{|8bW&4cXd-_CDl1A>upcM*{8B%+n0Tz5l^UUrlkcR5?;|| zmx%c2A%A@-Xd5aVWsMHY6{p6bOlSNWlNioGFt`|qjxyNHxWYR {4Y3A6tMxBI0-(tc6RUG~^d@c&VFwkyr#W!2w1H zCUXL>pz&ad2sSUS!tpWt>mo6dc(hLZH4&kbw|}qBUj6Y^u! kKRzjVcRgeX;R}PSHH>Eq7x5*ERtUqWcl15IE%+b=H-VpO$AK|>^( zE`J4X>HIaV2+0?TNeGWLiUoU>7>JFWAyD!{5(qRamQVs{ku4gfg#>%}a2-l*A&!h> z2n}3JW?_a_m=;2au?RCeihS&_atu8z!_Di( Jehj+=%#k;ecH}LEB z;{4Oi<=vk{G#!q?WA9>q=FYF85k@&sKe*0NY5|3&%0wuF_flx3ikq4m)R_QrrJ$CA zyLYxasK%BU+OFw0Fwe(U{kh&`4}F<6GYXjpkF8@!Z|oli?*M%vdiR*{@w#D>F@M v!j?_)z(UH71RR35s9=UV7d~u?IQRrA$lox-IHmafc24H$XGA(@9`FJhOF?|Y zJ0~I9J!M5j^4WE8B!A96!)u=$g|SEQgz+1=ouWQ`GDoivTshj~&-4lR`cZv%B_tmD zW0P|R-NsidCD7=-%D_RjrW(tX1%K*^2T-cY3q^dL$w@V%c|$4qFNC3JvjJQH-W%DX0Um1CsJPK!q)tG2Q^7EeRQ6#BZ9YJP~`v6Xuo> zc;gA$6nN7qo_q{&O9(s=1?>=gho~T|t1$B>(3P@NhBK70LP?7)IFn`LNAw9$kliN- zBaO6eh?|J37t#j+Sjfdu6@U8 &@ yhRyt5TkAqES-5h@JxMTizNf;L+jBbYMvgfhg;s>LhF zb|&x=bXKMEoY2v_+JA5tD~Ym2pabP26duEfW5N78SRF7uT`5I*u09i-Ywm!R;mWO% zVrYZTa!Ifbnzap- |W}bgdiyh?_TOa!gd~;%b1AH6V+wtToLmNof9g! z+Kq%$s*-`7O6bALF_qht0a#cJuw*a<;~gP !B#me_s)4U#@uXhu~{|{L}i!c5-S$FAu?fXBSCNM!1ycN z_45t?hH(0^LdC<0t}dPJMx>6IjcAP!b5x1R%drkI8QOmZn{{+ValXr2PYSC+St7qD z+iY`4n6v$s?|(=%HhL4@`7y)?s!?fFw++4NY*NCE6PP4m;X387jd>aaJt#}~8;VK? zcpvbhmGJVhDEq(C`T uM(RiBbmbDtDL9H|H`Fy;t%xSuq)kMVJ>@Rhqo?t#T#)? g=8=_Ey zJrQeLwpxD{r<56Ic0Y&PFKp}2y8>-eXDknoE8 +qH7R}`JRWvhMI=}gFt-0OO$Zd1s^p6&5*aaSj55c z8kD@A8=-s%-qGbrB_X?j1uMIbTwGO&Ik`0msgpXXd$E&s{OK+Iph|^Jlr1v6fo@5k z*C`ujB*O@Uo%`ArZD%_4YlDO;wSz0#emh()trUNdOYtj8iM<-DVcf(|yRlduqhApI z;z^4|BhYY%Q+*u>%bMMK#|_ET*L~M{t}qY5cxOQJgo_bBG&5h7rw{lQ8b_Vd1Q4%9 zsBy+Id5~?!TO2XwwWr1o!B|?d?>Dt+jIV@^>p@2(QGKXR+Ul_ir&I*PqZrbpj)~lj z>TQ2nzoZv%)6bbHA{5UP`kBC|11~m5G={hgQ7J>VW=33Y!_pdh3m-(JRxraL=194_ ztVAocANCt(UMS)CZV+{#Y4c2y57+1Rs; bs!iUr|`i@$9!Y-PBw{8k$jOet~B{Leqt+E0mVXi8n%FIVB>3UtiX~y;?}A|QmQx!G&ZW>DFF=2_ zUZQ;imJGTgo=lNMziavJC5`541F9Sg$SN}aexh}^jB47f5WLyNRseth!aQ91@H4-$ z@zuom0by(02}y5BDNYR9djuIyF$v6`N<~*_7CIWpNg+)G<8c%zn1Y};e!2p7oCwYO zrh3S_u5?>S8iI+#Cry>GGc!V(FHL{I{WkNh3IziXiZm5Jjl&$}0*FBHrG~Cj2;e-e z`3?EcbyMb^L{fw5$4%sMV)XOT@V6&-0hb31q=V=={}I9`PN+ze053AaaqJeL`6=;K z&?tnA=}p?8aLS~Af!{ya2KiIsm~n!EI%d2u;nq_RkM{-~b2X`9L(($>9|C_c9|-{-FJ8cV4rnQk45D_4z6;T< dx!Iw!k`omGG7*Mq-D8`F-2 z-*6YW)AApGHeT1z$V1wJ5v6B~U4a+(D?;j>MxqOfs~Nqy5>5%*8C z;6^2#v37OH#Ck;Q0=f{sSYL3jbMSR4sGB&API;5~Tg@D*KNr|$T~>8;n3)r(c4_c> zfToNNl#Y=ug?9qpKY)LCvUe;Os49l{KDtKXU5|y$d#XU^%YTZY=}6P``!2r49E)D+ z-+{D{4Krz(=%xPcq=oxN@eQ>i1(%dce*+B?(GeSjfaOC_WLn&sjb-6dK*RQSy*yo$ zRc(P~aaO!0@?Z=5PC5p}wysF}k{#lUsV?}DeFb#v?B%35DlUJ*-dgg&Ka=LUATLq) zLgpj?;bfTC$0$ zWeeB%%B62Y@%4Z3w^(W+5;9-mVPpH&9~1821IINY$O`&9V5fT=kBK-9fXhpemGrl9 z@4HRk^#u-}+~;f6aQr2rK~6at2e)i6ypsuc8ReIH`Ysjn?#NHn@xmReZkZimwpoM8 zRxT8)q6y+Xx`E9 (Zi4+rH?;qlxqN@}PaD z-U+-9!@V&trLKQ4DEm?EHLZnPgyMEY?1e%Gg!PM_n}qYkQ3D^O#19|KOWSsJ Ce|(H3LlOMn3(m~d+_N3dI1+9E2Sqg?52<_z RZq`N(x>UcLhr;Ji=`03>e z>($3hTq>|ZrX%GNhOyB!LQMYh5jELke9JGT#1DTT3vTe-gP|U Zj%<{g=1(4joM zd*u#&Frg6Qe?1iJ%HciRE1DZeez}o>D3P^*`&6Psnup;QVYn9ZPG2%W__+3w^8tSl zp#QwEA;)~C*j!5d@UVnlrW^C9a`LB-tE^w{{R`X^s^JEh0PqlX?E2Du#qV_mQ*lAK z (&4L`kH?3C_(z;S= rEh+U0fQFSG|(lnvW8yuF3 txKOC%%(#ZuRwSz$1#(jb64S_s*0y0F0 zPF3I`heMol6KT!hKBge|2~dAy8bRD@hawiAl_7wm*8#>UhnxCPtOK%}y+B{p6sf@l z;k;<#6gDDA4cXK6%s1h_W|fAjAC_Wj_;cAdv^H?Xv8&|~fZ+Ub0>n3);t{d-K=bTt zkOm_W@#Gl$w6HwWkp`TmrHKxA4xdRF(^O12CDO^l__d>5B@G+i5|4jGF8HUbO@1O- zZnZo+#+QMA;Xlln@}zGN=nz^S0k*(a(FrmVxvcyNQqYM=v3aO1!_f%?22U~kCI0^5 zbzSCW>~O_d$oF h*JE-L|40J4Wb-2A73bcg??kNVLV?emcXvS%a zoY>Zc$50~dE&FQ$towgvLx)ZU+^dyu;|9SSC2!F+0oUQJT{CsZ-cSnR;z955j~T6R z%C;eoq#@OYJ=g??Z1-ih35yQMr#663)bocM=?U*X!Q&q2X;z1hmFP6E*rgq9nSvD1 zCH};}68N%G;7AQ0gC*?U!<_7CLCoxDLJX{KkU#N39}j?|0yTetSvUUNcaRDq>}U4Z z0@$#A3;S#6E^(EPoy5!Nj5N3l4g&hj0 LW z>|;9NV!LY3!Jtaeclg^32?5xED{x>gx _z7VWsq zXXmEK Q?6 zG#ej_t%pnvd6nUFmGFBE*pjT-JO$_TB={{l*z>u4qC@sg-+6&$xLfgS3}t-`egdY3 zyi?wA9|3>DqGmC@rZ|Bc!hI6IB-CY BYfSL^>}h< zWi|+YphKB$&7M_YPXA=1#g$c&X<>w#2<&Ex4;M%GQnPhZQFiwQ*#sAO7XoMi?=j-S zs;GYj%ui8>*2}yfs`#Xd9sKn+R`oH$@w*lzeW)vYd`9r9#B2HU4_1OrR;2} 6)RC}EV1N@j~;GdtxV@K*e?#|;+i zt1kTl^@$Gq@Z$wc3D71khx&B@QvzEGw1a<&p3)TkOWzJ*n!ZXi_7rQNdXbEFKG-^_ z{_*$!>Jq?8zN4d1;Q*nbG0yAnX?t);6u=~ phMWm7q1%o;mK0e5@)D%~ V z#}0~@18E^I(u&Y&6-^CHHu@K8DO(>fz6xPyj)BC>hj~pC7{Wr*Vjj@H*j(T`1ZVQZ zp=f96sfdY-kO6$OafbNd5G j;bZDQvyM+lI6U$(Jhx2Izk?+%&+w zUD^RbAN1y8uI>-QR~-9VNbxD|VzmvgL$+Y899!Il6dt4A;WrpP$F|z8>~+?3KN{fK z+o|cfx{%;&u>!I9k}rFlm0inA RUF|;|JWCsFYH~- zV_G@`9=A!1w%}z00aZvGE@Ly7MRZphzYO>1QkscJC%r9FMk?O)Wo&=n^#a_MkDB37 z`U zs^-JyTk1NX(Ex$oO2LCo*twQI%E$aT#eF^2p_zjm?M!5o`*eR4x^ z)n?sHb~Cu*e%G>%JRL;s@#GHL7Q|(wZJj^W^=h$nFy3-6v}(vU9^Wyq#p27JzY(Jx zT)ve@=-K-0O40TcuP^`;y=clO+s6zXM_Bx(lIW({?EYvC`3`^nrtI6v7StjdtLW$Q z=Q4WBQOpM4uxnRQe?lU&;EcO08yPsZT1}peUpO+7L`LSEyDS?SHn?0jE`mcwg$-X9 zjtLk6YEx+{t>xzgij^bhpq23jgQo32Lk{vl*pz{3(}mNZ-8991 K78M|BNuxw1a zr|CVKg(Jc#)@XmQ;lc^NgbrEEUb@C&f`<%qvPQIgl<%28D|J}@uv8{^)-j(k`hD}4 ztlHM;UwhIN
ys zrtbG_!HTv#1Z-BwyVe`hba0%__R`5B@rqR79S@Ezp$yKhee>YzgDDH7P)TUJ3=3c# zoQilM4SA`{$8?3HFf%3ZN%xPx|5uw(p9Fjo>GO}j|9?xwkpE=oPuSiut wdEY^-V;gOl V+B(&&>$oT&ZUEdRCAR@gR6@t0lk_nJ?P2$KFpL`#4Udu?r z4la}Ksm@clRDzq^&qtSOYlJLpX9;tqGwDRSE*M42E#D>MWxN->SPYgMjoYKJ*ht(O z39$mr_i&j#gJll2I-=!dmFxID+cnmFSB`)B{UWEqVq-o&7^X&?YqVUv#WUW^b(i+& znz+Qf;fmXGk%I|2do6sKg;#sjrc4*YC7Hb(YmZjfWKdf2V$~?AEEn(vWil_8j0!)@ zmEk;sB~tHm-{0p8JPIH%!N^x=^3fVeP#0T)jjUVN52m+nmr1LJ=Q zhB>=BFCGv4aQw=H923`-a9d-515;)8(EN~e>B_x}i}NF$oTHzTmC4e5OUsYZ@(WS$ zdN!?O! 3RD8E1~&Oc^gKCx)< zw%{hKlD44rvRW<<>Yco0mOPyin{bKic(d=}xgsXdnPw@bBHqCS+aWX+)1yyWx+Ci2 zK4}h%``*tP4N6=6ABXd}v@yg%4eGFFf`sZIE~E2s$&Wuv(^t?i 06uA6^CKgm1t z%)}{cMoyYQ78S ~f{>(d6FA9%ucUW%0>KgtmhfPUr;ePw zVOvboAFc$goE%0@K68R*>>PjFJLbM@glQkbj$|{lL+kc*6S7<8fNR4ve$|Xk Muuz;E9&lMWYC6+7`(W?BEFGhz zrvKguEj0gkMn|0JeIjL9FJjuj6D<>=I5zwXxUr*63rF)Y6|aBKtQxt2M*dnlB1OfX zbc9#@TIk4Hf}{MEBW9(2%X|{%18ocV(7#JZyl!^c%54bec*XvH_x-|AU@z6lcazZU z1$(P;M}w7Q<-+NwzZ4 |1KN_zTSTaHs_gT)oqjQpNh@O<=aln7aGBbS#|x#-~W&B{Kwz_Yw762Grwq0 zn3kxOqpVR~$**L8SU6Iwp?Jv-*!bgf1H8H{aJ}CXOAq%)Y@xs#>M6c>z^m!JYyR$Z zkS9mbauI*lXyy2uIfsKPU@1vBFC1U7^28IIG)>*CT#tXvlwz@qXDxGGJhE-ejKXd4 z2|g@umZz_lkF}Hgnt3PE8_m1RSGAT+2N=QOIx@7PR1H41TQ&X`&Rgcpnr#|o<~%#T z`~(eNnO6_K9y#AOz$z1NF|n8LCMDuX67E#bJp=3DhIy*uTvTnBRhy*-n6}tjIM0>H zO4qfb3&(#-U_mC`JQZc$km^KHp7M%l!$B5YHxfQeM|~LAFJeN-7vl-tFl(4=PskHL zr49{ml3A r7J!(J-11kV5@6y{1QMz$_$>X zPf50UVgr^V^U4^bAYQo)$8%1ENgxaxH7%0}_)MSsRoI21ZDzu^YTNOvvWrBGb3Gi= ztSqwQkENTVHD%#% !eWbk|Gh rJ-6I*2bGl4gjEa9TP>UAA4j`Xj{ eos*d_$;z*#b`8$XqhceF}G*@g!{-O79yit!@jbxY)q z9i^KT#?v1#!G9n;nMe+WW0e?K$?&)dEGB riX}4v#hq z_qi_>jBvr+X10UFbH^4NgTe#!JN{!yeN&pZN6+D0T5|%SdxD=!#GtM=1g~nrBi4Cc z5jfNSl;tU@>VEsQLX>=rAE`fH4x|3?3NpdxkZFK~1^9l6Xybe2!gYxQF{YRrNY;O; zHhqOlu4S2?BwkLsPr?%qSIRdl1J3*WWU-EvUYA)_i38;!jhGjSo7Jll37uixI#NM) zF#yb7v|STBRt{5ojDMzmE}?(9f68F>fn-r{7=@~@!Jolba>KqBQ2v2*5`0gZJ?VNH z3|yCwiOQ9Z$X>&LJX$|o3qN#TB9?!{V=+s|Ng#{cx(jGK%icktz6y4z@q#d&>s;8} z?g*Xz 7IY48QKwDAr4cHRXV=C+Dk7Q1Boo07u0_iU!s*m zn00c%!6mZ+ti{T~(sr2~!Ix5&j}C*yXI2(avOTox)Lj95%l({QEdCG(l@3P7H9qbgA2xEobr%Hmz8 zpX6O9NP`s=H?b^~{Gu(T^+bO!o5z(GD=aTN3%1h^E}B92?Ni;eTZ;{W^}%YtY13_i zS7`s*lNN>}kFb^hRKKKojY}zX`nUPQd}%X6M_NahMt6Grw}q6vzeSt`abV5!!}WQa zFr0+p{2{rd fT@InI {Tq5ND0O~^70YUD+c!61{ zm-VI70yA`XJT}sdMhg}Dp{c)+3im27*&o2N%|0vO;^qHO+`BHxZ5->O|JPICgd 5LHWi<#w%DJlyoG-76W(Q7!IudZ@>b=6_2mTwi^Va&EvvGB`W)Hv8N9&k zgS+1bJG|n65i@Q_odL>fc>XaKb`oJH0Xuwgv#^s)?VKf-rJLv>9{bYYVc3e{aJZEH zAJ)jRW@euD faPb1jpvXl?6c$`H2QYs{;ub{E#<+G;Apx768QJw#M*-(dg|ab zmF`$ L*A{=8FCF8t%%AumCAo3Fd yNc;cFnj z?y#L5x>c-;1x;vZD)Z{3=?eZFDx`W_6 `ml@z6E2{9G;*={2e}qIlSHQlHW2z%)n4!>IPqQhAMTS%~MsMC*bFyF0uy4 zHFMm7E-vemf>6i-96sX+o^WvS4t$rqYm>T3IC>(LputvEXU#?S;jQ-|xv!dA-ekdz z_d|a-Lq5US;QGX#z4Y~oF?)h)xNWN9Gc=^nL|V@|3H#fG<0b+{>kG*zn3uRFvri;0 zd_E-Z8S)Ibamj_dSZ_QO*f3>Y-#68X)zn=hPg#dUh&OrLK7kIa56YT#)YAOWoZ!w2 zyw~+`_6%E}@yiBx70UZ&uqx!3kVhOd`J#Vo )}S7vA EEzS10KdLV7}2$VZM?kC Nx5Wkpc4GJzb~Y3}%eJ%6lC8`2^$rfrSL4Wds)>J?(aCW> z=eG&KB?!m!gTp1|PK++YrVRnNe#Ue|XAOPZ7Tu;Tk601%-62|^07{WAz{--mr-L^# z&Yd+YvwhtSy-A#$)5OKz7_H|5?};wJ-WGZNh-hM+A$Rbsf=z>kuPctM9I5+U!BtVC zVrAL&c#=Qsbl0EKe6zuJ|9yX6ojyahtV5IK2cEkCK#(&6NOo3OR*0qy*4zlh!~iG} zKnVh^o)HJuKIij9`jv640S+Ur!*LSn@&0(`Scfoq%NqYP*@Vk#2V5jyyuW|HejhIU z7?zlLs55gYhvbAiakfRxKEFQG3TL YxY3uIWE28$MVCus~`nk{ui&mJ5zY%+`9I8JT`D><_YO(wG6*R zj+v <-8kDJHbB6GyVHSn3{c^acb{Q?e?6We(!;1BB0;H^NO%o7PQl16 zAM61laRq_2eqOAybHy9UrQ2BCPVfO-zV1i_zJSW0+;sZd?V*3u2+IZe;fUR7vnh%# zj)m; fd)-{MEmZnxpFM(yu$U*tlHid zyCTOM%~|=z(NvhBN`F0-tVP`x-7$Zt`9MCas*i2ioqh58x?D&3qR^mC!O^};-b=Uy z;l4}$0(gnQ`!0XEg6Rg @P*;gPBB`8BH912SYEy zj=EL|?P$YbqW;F~-jtmL?5v;1@S13?c75os&38R>_96W|0}Me_eu4K(>j&sVgdog< z_dq-bHZp%`SaQa6Kh<#m0US4XSCnm9=X_~2u9jC%k9SX9xnXGe@mMhJ^RM4poh}9+ zi}W}L5D;3hsG8I{U%rj2_|;Phm<)hRGUylF#`m&GU#BRw&Q{7PD&I+oPvPx+&Ai>0 z^_skKds_! NHc53~#%qDlbCVjxi?0ZnASQ6l6 zIdg_ttzI@Tvo$W6zlE1=_427YF9obUE6(fh)Yz5m?C{?!yQX>qSWjZ}?aXD>Xi;?` zuy*ASzdMJkthIx74^3a*^VJwTY~hG|6F!IYeh#u#h0z$q@QhOwgS{kY2+;U7J9j81 z)&hUOGT#_XUX1s`P(Ful7 Ma;M7SESDb(?QK;V%EMJ}<~I09SvK;mTLITyO2{GZ^?mJxau*rCyXZtM*E~ zdkJo)J#G3^TdeGe*~aVPX`-Gkb*JLzi5$wuvOdc@WiarDpFM())_Jq$YZ}&dVvfK1 zCno$bZwm3CW4!$&Pj%Vjy^-sGGDgrJ*^lIk|A^zfFY3ij3WmYk6GMIYqgw47O$&e9 z6USrqG!&;5LMge ~qEQJ>Z%Z-RfVJ!5T_x9r&>7x3Do8gBUB+%*ke z@qpdIzG1zfHJx!A!h4#2W~mu_6?lI#Um)B!tn; zmDlbciSL zj&to@utxF+#|EeE-SvGkn-PAA#BpnSxo_PAtKRXDSv(X5X8ZECIn~?M-LqTb9$t!c z);SgF2~S_-WXrm@%^~e!ie%Nwc?|pke eGzz}pw}m>jjJb_ zJD8Bjgb0rs)?lx<3&+I-h`d6XuNIb1<4N%kd@43vYD5>rSEo7$U(WsIsoodOvQB}( z;Ng7v#J*QBLCBidqPbdZ6Cr;R%@6lF56G!PPPdu^@p0B&@EBUz!B@YY%HyFBXW_ z=>hd2GFs$>U;ow@R@q9{V t4d`G;lg=G5i;m77M= z0G8{N8+c~0x{e>%A6@^woT2|!JxJDgNyX8p(1gs}L$mUib%y>6KEM_#J_u)zI~SL< z_5px5^nYg5_?(-*XygkJ_%e +!VwGo4PQfk z6R{}Q@50=iJjp?s8%Dh0GIltuVMb|@%W_0W9tMQRcm{3_^g3!ca-MhLknhXQnhtQl zxA6Z(#9#+QQJ;U-jqU*YbMcV8g1;7# %O-J^mqK=N`CYRK3c?Iw9~MZ zt=Y94xnVaVT83DZ7j`&xr|t@V*0BiFnyyTsVWBmih|GU4qJ6?y*SzoB^7hp8 _lPD7rDdRa;p|33CUZ9%L)lj1K)qbn)169rVd6lr_lci6U*Pj zO7*+Ac>{bNeqo*;O1m)cn~a~mRwVnP7Z-JXQ9R~&3>AELzFf*X?hZYo6JdAg(a7TM zcHiKh^M@jZfhK+rnutp1fjd-BNM_HLXL#G%vKBmt;AIQXK;;i&xu_#te;ugBM_eN} zLS01kgF1hbC^lw@Fz)jZP9L%(Y0cHp^OD^3Ca_D%o@7@iI&gr%1INMefZ=ij2e#mr z@JLd8+?qWvHz~lu2Iu872?JXr_>cVAz&~cbK+!+spZI0aaFj}VXtt-SSdYIE{VhI( zLnPrBf4IbhX7fq59FKXwSz-D>_rQeymOsQ|Bp-h+@}SKtSe#XCKCQ`ILw$=s68y1% zX>&X_9c