From 61dc00e80beb166d26c7afdfe3614429165bb794 Mon Sep 17 00:00:00 2001
From: Evennia docbuilder action Dec 21, 2022 Bug fix release. Fix more issues with discord bot reconnecting. Some doc
+updates. Dec 7, 2022 Bug fix release. Main issue was reconnect bug for discord bot. 2019-2022Table of Contents
+
@@ -161,6 +163,17 @@
Changelog¶
+Evennia 1.0.2¶
+Evennia 1.0.1¶
+Evennia 1.0¶
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 '}¶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 '}¶
aliases = ['@typeclasses', '@type', '@parent', '@update', '@swap']¶aliases = ['@type', '@typeclasses', '@parent', '@update', '@swap']¶
search_index_entry = {'aliases': '@typeclasses @type @parent @update @swap', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass typeclasses type parent update swap', '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': '@type @typeclasses @parent @update @swap', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass type typeclasses parent update swap', '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': '@ex @exam', 'category': 'building', 'key': '@examine', 'no_prefix': 'examine ex exam', 'tags': '', 'text': '\n get detailed information about an object\n\n Usage:\n examine [<object>[/attrname]]\n examine [*<account>[/attrname]]\n\n Switch:\n account - examine an Account (same as adding *)\n object - examine an Object (useful when OOC)\n script - examine a Script\n channel - examine a Channel\n\n The examine command shows detailed game info about an\n object and optionally a specific attribute on it.\n If object is not specified, the current location is examined.\n\n Append a * before the search string to examine an account.\n\n '}¶search_index_entry = {'aliases': '@exam @ex', 'category': 'building', 'key': '@examine', 'no_prefix': 'examine exam ex', 'tags': '', 'text': '\n get detailed information about an object\n\n Usage:\n examine [<object>[/attrname]]\n examine [*<account>[/attrname]]\n\n Switch:\n account - examine an Account (same as adding *)\n object - examine an Object (useful when OOC)\n script - examine a Script\n channel - examine a Channel\n\n The examine command shows detailed game info about an\n object and optionally a specific attribute on it.\n If object is not specified, the current location is examined.\n\n Append a * before the search string to examine an account.\n\n '}¶
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 "}¶
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 "}¶
search_index_entry = {'aliases': ': emote', 'category': 'general', 'key': 'pose', 'no_prefix': ' : emote', 'tags': '', 'text': "\n strike a pose\n\n Usage:\n pose <pose text>\n pose's <pose text>\n\n Example:\n pose is standing by the wall, smiling.\n -> others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n "}¶search_index_entry = {'aliases': 'emote :', 'category': 'general', 'key': 'pose', 'no_prefix': ' emote :', 'tags': '', 'text': "\n strike a pose\n\n Usage:\n pose <pose text>\n pose's <pose text>\n\n Example:\n pose is standing by the wall, smiling.\n -> others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\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 '}¶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': '@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 "}¶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 "}¶
Test the batch processor.
red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpxcxvqig9/efd9c1764a28947fc98d027c35b9d1267d3cdb63/evennia/contrib/tutorials/red_button/red_button.py'>¶
search_index_entry = {'aliases': 'conn co con', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn co con', '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': 'con co conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' con co 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 '}¶
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 '}¶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': 'qu q', 'category': 'general', 'key': 'quit', 'no_prefix': ' qu q', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'no_prefix': ' q qu', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\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 '}¶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': 'conn co con', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn co con', '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': 'con co conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' con co 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 '}¶
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 '}¶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': 'qu q', 'category': 'general', 'key': 'quit', 'no_prefix': ' qu q', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'no_prefix': ' q qu', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\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 '}¶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': '@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 @callback @callbacks', 'category': 'building', 'key': '@call', 'no_prefix': 'call calls callback callbacks', 'tags': '', 'text': '\n Command to edit callbacks.\n '}¶
search_index_entry = {'aliases': 'chicken out q abort quit', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' chicken out q abort 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 '}¶search_index_entry = {'aliases': 'q chicken out abort quit', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' q chicken out abort 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 '}¶
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 '}¶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': '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 '}¶
search_index_entry = {'aliases': 'ex e examine unfocus', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' ex e examine 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': 'ex unfocus examine e', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' ex unfocus 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 '}¶
search_index_entry = {'aliases': 'inventory give i inv', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inventory give i inv', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶search_index_entry = {'aliases': 'i inv inventory give', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' i inv inventory give', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶
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 "}¶
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 '}¶
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 '}¶
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 '}¶
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 '}¶
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 '}¶
search_index_entry = {'aliases': 'forget recognize', 'category': 'general', 'key': 'recog', 'no_prefix': ' forget recognize', 'tags': '', 'text': '\n Recognize another person in the same room.\n\n Usage:\n recog\n recog sdesc as alias\n forget alias\n\n Example:\n recog tall man as Griatch\n forget griatch\n\n This will assign a personal alias for a person, or forget said alias.\n Using the command without arguments will list all current recogs.\n\n '}¶search_index_entry = {'aliases': 'recognize forget', 'category': 'general', 'key': 'recog', 'no_prefix': ' recognize forget', 'tags': '', 'text': '\n Recognize another person in the same room.\n\n Usage:\n recog\n recog sdesc as alias\n forget alias\n\n Example:\n recog tall man as Griatch\n forget griatch\n\n This will assign a personal alias for a person, or forget said alias.\n Using the command without arguments will list all current recogs.\n\n '}¶
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 '}¶
evennia.contrib.tutorials.evadventure.dungeon.EvAdventureDungeonExit(*args, **kwargs)[source]¶Bases: evennia.objects.objects.DefaultExit
Dungeon exit. This will not create the target room until it’s traversed. -It must be created referencing the dungeon_orchestrator it belongs to.
+Dungeon exit. This will not create the target room until it’s traversed.
at_object_creation()[source]¶at_traverse(traversing_object, target_location, **kwargs)[source]¶Called when traversing. target_location will be None if the -target was not yet created.
+target was not yet created. It checks the current location to get the +dungeon-orchestrator in use.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 = ['smash', 'smash lid', 'break lid']¶
search_index_entry = {'aliases': 'smash smash lid break lid', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' smash smash lid break lid', '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', 'listen', 'examine', 'feel', 'l', 'get']¶
search_index_entry = {'aliases': 'ex listen examine feel l get', 'category': 'general', 'key': 'look', 'no_prefix': ' ex listen examine feel l get', '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 "}¶
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 '}¶
search_index_entry = {'aliases': 'pull push shiftroot move', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' pull push shiftroot move', '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': 'shiftroot move pull push', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' shiftroot move 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 '}¶
aliases = ['push button', 'button', 'press button']¶aliases = ['button', 'press button', 'push button']¶
search_index_entry = {'aliases': 'push button button press button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' push button button press button', 'tags': '', 'text': '\n Presses a button.\n '}¶search_index_entry = {'aliases': 'button press button push button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' button press button push button', 'tags': '', 'text': '\n Presses a button.\n '}¶
aliases = ['thrust', 'stab', 'bash', 'slash', 'parry', 'fight', 'chop', 'defend', 'hit', 'kill', 'pierce']¶aliases = ['slash', 'bash', 'parry', 'stab', 'kill', 'thrust', 'defend', 'pierce', 'fight', 'chop', 'hit']¶
search_index_entry = {'aliases': 'thrust stab bash slash parry fight chop defend hit kill pierce', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' thrust stab bash slash parry fight chop defend hit kill 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 bash parry stab kill thrust defend pierce fight chop hit', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' slash bash parry stab kill thrust defend pierce fight chop 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 = ['fiddle', 'feel around', 'search', 'l', 'feel']¶aliases = ['feel around', 'fiddle', 'search', 'feel', 'l']¶
search_index_entry = {'aliases': 'fiddle feel around search l feel', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' fiddle feel around search l feel', '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 around fiddle search feel l', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel around fiddle search feel 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/tmpfayxkdgj/0e46f1be6b4ff6861e675a3fe52c9a953e16e4b2/evennia'¶directory = '/tmp/tmpxcxvqig9/efd9c1764a28947fc98d027c35b9d1267d3cdb63/evennia'¶
directory = '/tmp/tmpfayxkdgj/0e46f1be6b4ff6861e675a3fe52c9a953e16e4b2/evennia/game_template'¶directory = '/tmp/tmpxcxvqig9/efd9c1764a28947fc98d027c35b9d1267d3cdb63/evennia/game_template'¶
aliases = [':', ':uu', ':s', ':r', ':f', ':y', ':echo', ':DD', ':q', ':<', ':dw', ':q!', ':S', ':j', ':!', ':I', ':x', ':UU', ':i', ':::', ':=', ':h', ':wq', ':dd', ':u', ':p', ':fi', ':fd', '::', ':w', ':>', ':A']¶aliases = [':I', ':', ':q!', ':u', ':y', ':::', ':S', ':x', ':A', ':p', ':=', ':DD', ':dd', ':fd', '::', ':<', ':uu', ':s', ':q', ':f', ':>', ':w', ':r', ':wq', ':i', ':UU', ':!', ':j', ':dw', ':echo', ':h', ':fi']¶
search_index_entry = {'aliases': ': :uu :s :r :f :y :echo :DD :q :< :dw :q! :S :j :! :I :x :UU :i ::: := :h :wq :dd :u :p :fi :fd :: :w :> :A', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' : :uu :s :r :f :y :echo :DD :q :< :dw :q! :S :j :! :I :x :UU :i ::: := :h :wq :dd :u :p :fi :fd :: :w :> :A', 'tags': '', 'text': '\n Commands for the editor\n '}¶search_index_entry = {'aliases': ':I : :q! :u :y ::: :S :x :A :p := :DD :dd :fd :: :< :uu :s :q :f :> :w :r :wq :i :UU :! :j :dw :echo :h :fi', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :I : :q! :u :y ::: :S :x :A :p := :DD :dd :fd :: :< :uu :s :q :f :> :w :r :wq :i :UU :! :j :dw :echo :h :fi', 'tags': '', 'text': '\n Commands for the editor\n '}¶
aliases = ['y', 'abort', 'no', 'yes', 'n', '__nomatch_command', 'a']¶
search_index_entry = {'aliases': 'y abort no yes n __nomatch_command a', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' y abort no yes n __nomatch_command a', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}¶
aliases = ['p', 'end', 't', 'e', 'previous', 'next', 'top', 'n', 'a', 'q', 'abort', 'quit']¶aliases = ['abort', 'e', 'end', 'n', 'previous', 'next', 'p', 't', 'quit', 'q', 'top', 'a']¶
search_index_entry = {'aliases': 'p end t e previous next top n a q abort quit', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' p end t e previous next top n a q abort quit', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶search_index_entry = {'aliases': 'abort e end n previous next p t quit q top a', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' abort e end n previous next p t quit q top a', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
)x zhtY`?9PmIxin-n(KcjN3s_FZ%{E}zqSOYV_S~%c}fkcOyoxP9s{jp!v^8K)O|4SI0 zab^B^_nYPyqs%XBu=q>eLiok*AN*oB4}Q5j2fxs5gJ15R!7p{gf8dw0TOhUyehCeg z*eLiVv`u20;Fr)GiA{oEL<=PL2(n*D7X3on8L>UET+{MQ?ycsosh`!VHTY%uuBe>S z7{ZTn!XJ=r1HeSk2-K5P_TyCOYqDHoV~BvJe)-))K}z{bv#r@(jI3^UYx5i}LdS>< z+(i^T#@e$4Nl}$We??YLFMMZ~Kh}Ost~(mL&&P?~Ls9a_YS*ONk-W%OEfIB-lg48i zdI_F=zu%LNaH!^20#wv5~vs0 zz^^ot&`H*9oW@+D&>toJXpJs2XsoabtVer>1@R5<^_S1F0srKZblFizPS$QV#(XOm z4TbLR4lZlo-K|vS6()EF_wI-Zxq+8g@1Sw4vK?7JemSA#un`sPIB{IFxjLgG4w%cX zSd|rqH7oO&e`fvaJYihBLaT(wsc0(WajKfic)ZG{vaVU(ZnN#0104x}oJg!);0L0$ zhczE?Zg+)Ky;U-3O2D14=&do53SeBLIS!>=uXzsEV6D;{qQF`svJmcdyN(bI)^FHD zv{ c~M8CNb9N2stf#%G6e%~@eNlyk;N zX-P`{-u05qn|ikk87^VCfRPdl2YUe(DFe@1DcGT)vGc}R6v3^}9Q24oNORz$jvvh- zh(CCAC`-(dquE?7ojq^5JKnggM;6*7&%v(hf4lnOuI=yJ4b_}9?Mggx2b$(EG}-fA z5jVD-MKfovKaVKt_|hB-Jh+st7>B5nQL_o^>aMHzE5;)J;MF{u_#;=dcvxj0p1od{ zBX*W?5d2zg 7>gFU{bXwZJojXPrtH ze{p V{L+&ziM;&8OG2+P>5|~9O}LB 9j$%Yh9jz`nyL$5K((ZN@ke+&ex%{>%~Dqkn% z*PGA`99`CQu!ONAZJTY$3Ka1h(BTY=e-6hv-m*h+74&4CVmKOtuY wwIrbJD z%lA>skGWOQH5FcAtgXSXG0uKy>Z;p|R?5AJBEtr3qzqy4`|i2P_IuW(KlIfG7J95o zk9d3p-0x0a % zay(?fXikJ=XTt+Wa~gaw?i_ 9 z9HIvFGdW;@eMf=2p!-6HkT4HA^19=9I@aWiov1886f;*jgf3>fatP0y8Ouz*&|Y^Y zeB8WcCdrK5o4HJLHgRTiMIBt5$r3f~JA@ HF|*6LJn<9E*-Y` t}OWg4fSx5=1O)&18sLcACi%ze2MB zQOpX>A#`(APG<6jwplab<5o^)lFV2+naeb1 Vspabm#1|d_-zz#18E_UH85 0L*l=R* gVWvGwBcaG`kO-Kp2F-k^i87aTLhLHkEa3*d(io0gyoYpV`q;-fX0 z|7&t7W49Iff65|j-^i)XGKFBkgf &Q`47q^<0C2Z=t^ENRM$lJDHpwp|1Yx?)P?gKiA z0X7UzeEo$cLr4My;PW)*z=tU;&)5d6eJNqR39E+X>mcunw!4weKD8%gvsi+LeG5`W z3;~y94IU0INeYMb?_y5rAHctUxj9mqIevLLe|lN@Wt0;f-?jw1lDi`J4_@LaMI6>F zoKudKil>EW)dFhcT(O86D50R>W5DV$q-Bc=EIh8<{Y@#>DJT}6HOq;Oa=l_=V?0Vz z2IMOjlw%Z )Q)YMzMxY!tvSXfqW zV@xD#7MLTqF?Q0m3(ePSV~X9rBu5ym*@#vuJ}$PCuaKT=7o*#3yJF^P= exxA1$8aIO4%=I0#Bs7|FX?MPeSCxGF+6 zyqD!1AD}oMv%J)O9Lja-3@s#`e-jf!dABcFs9X9!-)y};zqvhS_Y7QhPC<`>J=v56 zot57)=zs*7%Y$p(upyt*_PHqinLd|jmwkC%JUpx!mzH!N_p3#qBU$shey&y|e`slj zqk-9VIcOhD*5-g)*6T7fgq9-mv~oOJwa;0XiXFu{l*50oj0f^IdC)BQp)gb!)^Ps? z&b|bk?p3hELGhSs(0#z!3^`$TlK2^|wMd{rUJsui-y{*8%se7)iAZ$VYtyZp^>{co z 4lXIAUL9 z$@)6NT)xhZ3D&5$Q;tRJ?ihZp`a9-Xw+@flR?YRr>++c3Xvws2oxZN?-IDcL!CSsA ztKe(YV;z6dI;=vkmL`jraus~xf+vpKELr$Qn9CQyF~J&zaLTc0K^()c)tQWW*6mEj zY^&z_;?- RZPxE&$~QAc)r zu$SmHsICTd?!0ILvpgSG1cIQ2L_CK^<}f4Spd0ge_qDuxT7Daee(Q)V1R5X|mXbYa zGHeX4ywME~r~AFDb{c6S@oD$ w2?M92rFF1|(V>mjEm*;&9bQ*d+jeQjU6JP{ zdCr=UW_1W0kaSAme;Yh$_O9L*)uqPgE_`FUc|2h+cPz@d%RbW_W5?@C@LP=9f4WWy z7m!KA;TXQRaW)iecjh=w#JHhD52YPSgU5SJZG<}?9E9{AJ0a-I02#`e{6i@37)uWt zi0VH_GzuGotEYscIWlq>z`esd9>%96hCx&CL1-8<98( dE zv`$6QiPo$tI@8*fMQ2;Hx_rc=$m>;_0slDJqwpOqlN8PsvWhPVES^OQ?y6a%@@z_y zRjVb>>N&1*f31+yY-@S(j2>W@@4ZIYYjs^?nw9#kG0i%imcp`Ty;Eq`t``c`qSeB` z@SueZnpClnxV#GU_mJA)o}HUePx?w-d(7_|((dc3C80?_hq5Vy9> yW}!@{$o5 rdUyKJ)|ZF{%t%dQX>Lw~(^iHOzUhxIi$S_5SyU%fQF#*44(m8JoI&E{&th2^HG z)RJ=~(&JJdzjUhPtCvn_R@W<=0{ttb;y}H68eV2qwq3D?5BOgp9aZwxQ}U|c@5zeg zall`{f2~xwj@MQyq{lBRD*5U~g{^e0S5yZ4^^1zab-bc7COt0Y@k^&lzE Og9r`3=dsxE*#w*9= = zOSq=4cgJI6mq(7sxBU9kh=HF+>W)Hkr!`mW3RAMq6B>_otJTqy`tu(bk7RweCqB$x zjb+vHwaT)z3cRxV_2x5^F!U6E-E+}BqM6fUveL$yHrvh15ja;XjTco;zARn@CF**L z;{o->6_=>1Dqi>98k%$1^;Ey2x<1!Ueobf%UpxjA^y3YU4Ag6-;WgRPE`~IVC!Y$u zp8B7}@%P2`*N|75T9`TDdA{tvTzXQWldX^=A=fNqz@XzRL02q>kl~nrVsR@5T!_qI z5$D0 )25R{%{Sv1_&0WVtE|3ma`Od z)Y-v!QocqTQ(J{dL~WHK+Oej%+N#se 3=|fgLQ}oF();aWBXdAP4Yv2@9TYEX3g=_`edJN$z4};CHXq! zMFj=z{^cvMf2Cp`*)JbVb;3_Q!cNPPV~KT3wHS4TdNq4Qa5(9a>Jr<&jU0_|p}6sg z5Sn>#*i3#1>%4iyq8c35Y8 -*S!a*&mr!EXaCkA+gPPHQ1+|zzG+$1M`OW%r zI(*f7IBTf75a-t{h}xj}tCWBx2CfULFnjpAln!6D8pNFoU!L_V76M&~uT=~bExv9+ zh@R6dLHHF%BZp3J7NMUv$ytPY_L} brY#hflEYNX3tIx(%;cSlx7wq}<1BY0}^kk-^}@ z$+x&-I&ejk9I}XeC~fpU!6AhDfaeH=2h_A^+W1-3Y>L?<$AcK>4HM^69y9YIhk*0& z=Z?5$vK^(6Y_f_DC$jvmtM|nws@ad@sml`YlK@S-9uH)H5&XD=Q)=6q9SB{SYQ3Z@ z;Ou5Zhl$}MdQ29cUq--#qH!&t!Z(NLkdE_E>H}J*VCo&z m=|Yo&Evz@s0TcWM3tJ58fzV zg8P6$ 4F`4yN)n>|Nl zU!p>t)p=2Ezk`!{TT<5Br0wz_^Lmq{-zQ@~luG1(=S22om;bkH-xOu~!>_;pH6o#T zWGj{$`V@X9@bgDAaK8 SApb5BI{lpre)2mfd{~{8 zq0?VW?C(#0?Lq!N5}Jllz)!yS!2b{n|APkqgA*PewoBOxY6OcSC8)qDK_?5}j#PaZ z2ZlU RM2FkzwDEd#IPc`_Tn|`TGdS-wVj!J0brN0r>|3`3Ey3e@QI_ zQ3T}=vKiqDI{a^{44M;o&N&Nhl#Fs021g_7-?9qg`r8mD8TNl>6{O2=&FKQRErPlc z77&b8m|Of^)@&YuF{sWdp)cVlX!ygA7T}lQfrAWtnY}m$4m{ZR5s=>t$nTwyzlnf< z{EdM8jT7?s5s<$Zkd}&7k>_+ D)_m-a>a&=gtocM?>d;{e~& z`IHtq!O)4kJ)eBMNWS?G5&m0q9O|dw%#&f?*H4bj ^v+pccR+_CdJGu;$ib-_%{bsmmauA@G&>We0`1 zGS?^^TobwyE(v#Wlf|(p@MheG{M;7}9*YV>*1}&aA4c?+?7QGDV+edhe>pl05%700 zsK1k_zjLGhAqMpi67>%@)aEIy+VGG!_{V{@ubVDxB*DU`Tz~<8cZFXTeEv#*au7BT zd&7Si5xXX<+7d?;L8w~zTjj%yF1CZhDuo*ScKB_C#@B2^Kv}?#@V^}>bXNPl1BiBM zAs`Tp_GdN--p_>r@xZcsw1MVyu(z$#w#%wKYx0yWrokiTDNK7mXPY{ZF%5yD`h52q z!zChIGK8ZYxCl9P;P@vMy@hFikxCE2m#WY)p%h6@=TBw5hn6mZ(=8Tcwv>TRR4P@Z zQal@KOa%kA6J(xRVgl${VlpW+6%|v*>B3W8(bk}^`! Q{s^VuLHC zU3$NtugwVOmVd$kq2K%TX|kuHji|L4eo|+Zf|h`p&V+>vB6m~@fJ(bT#n9v#lng;W zG?TFVAYGc=_uDO0FG2tHPMA(&v+K{2G5d=8pW_J)!Pq`l3aQ zmg-se6^>ESgcp=gI#v!!4L`^`79vqXB+OD6E#(kmQ0^h?%P!@+r0LB|)n#9dO^7L= zXiv~jY_%rL&rQL~JoDkTEo}$#X$n~BZ7^=Fc=e!wIZ1E2my#GFJq^SnEN2an*641B zg^1pl86Di3;$?qf;1c-18ye^SDODThinb*W8_Pua3{U6`4jyj!noB*B#iV>4NIcH* znL0RN#)T(TGdaTq*H#v*P>l@Yv1Lu%ZAnvh0%vaGNSrCm8*zQ+yM&+e2`w?Ztf-X8 zrR|< $DYSoqtH--2QXzBo z0=J-dZi23^%Qk(en>6dY8v2dSHk7gPSs-q~Iib#p>MXROlgo#qG>=cEA8TIa=R_9A zr&U(I{9WmYsh7Ey>97{TQ{gK5Z*Vmd=lyQ?LOb?~H0fhu+h!P%PK90%E(y9A$@W@u zc}Rx9?xcU?L-VfKQEk{$?g8iqsT($sN2dgxjC_#JN& ? z{ O z? ucxqOccJqrV>%+S4tNDty zgDb~li{P&1JDZ|Dtk6 ?HDWT#opVR15;xq@$Vw{?l`8Fr-$!g(_z!(U(M#>{yM|5&RQG=+ z*|jY9Vq#^HyyDI*yPYuunKYDc2<$EhFR|&R3;eY G z&ZIl$oDM5M4GGlN3vK6g-seSgfPy-XNka(1j`Y(IHWeYA zaVpoh9c|zRVA?}C`wVxgV*t=K3zD!PiBukf=#yZZmQajD&R}tB`=TR}8d^Yvc2ERG z=3-GqZ<}T^dbX8@sUDh0NZnKgQh7fL8# FV(i)1b-&*d>7zezJJO6oEGNe0m TdZ zAj|UzEw}*vo6x@==zBW3-_W-4k!(K0#S&PB+mU8V;t1_9pa%2(RU&`9@lYpvd$fbH zUUYG)aG5QyDn;kv*p_ugu(s{{_7OE_A7vRw>;eL9(EnHX69Ql&u#d9z=m_V2 %Ru*fYhjScI>nGfaPVeHuL14bGWyL>{St zS@siiWkYu({b0q&k~cB{&mH+~hQS=tL5<4mu&PK1Lji{?c6IZT4uWYlgVzgmAp$6R zCEvUsKEAbU2^&4)3I}%Y_z|z959b~8PuQ*?^AAeK9XxNLgVD|r+qq!nTo{+!Pfa`S zXIE+ujZNFZ*6V*0%?nzc2A5#1oFG@j&!;xgJso-}Rs3O2Hd+DHR^lNj;~GN0$P*;{ zuJ7RNXevw>hHB%0xRzeYCG$$SmtCW_s~d(@cEx^%K30Gm=8*`Ga9v @ z)^W#Yl1*Ok`i(jED(mRH6wj#9QUr7Dy0HucOhMUz0DagQOX=ey!IQn{j${74MsA9< zmEH_9S0{hAN4qm@1qEoL2(z8s9orl7v(|7TpRjEuH~{kkV@O!_WRYXr-VMo0{F&}E znxixHn?v)uuKx9pf6_@P>DV+3 dQ$H>zlMC)?oJhM5Iy z0&y{y5Cs7jM!UfsN2F)WJw&;x#+8V^;^&Rid(u41_FPlRxNCgQGi;qTAe68cPi zSw0b8e GgA=KDG!sJ4Nuy4bwa~<73COdmctp| zwrh;Hj4ZlYgn6JuclK$(3}43)Ga12$Up|_$HeO5i5D6(k#lJmdk #Oa)WNQdqE8BEx zL}wNF0HEt3h)k@oiqK`{=NTz95xb=hkSZHbs_^?g+$H5#1p`?v!u*nuP=#MGv}piV zY{Y8!-)eSiJ~H-Bh`%sTET!Djn=0BOOQbSpS#5d7NY9Sme3bVF484yML^~`bZVi}2 ze=4VgOqUYu@VZzq7d|=@!@>mEV>K@1hl1VUw;U>SP>dztuy1ji(nX4!z;ISOf^Lv` z3)>>_%SGYsjV1&_;+>%f8iBV2tlh@J4>C96mx}`4C1E!=uq_Vf842Ff&qRJY8EJ~n zW7GxV&^?xDKVyAIn{I4j;A!EPE{+!LG}{U3lu0whZ@$HbNnn2StxE~4h#T7LMNl(q zgeZhRPvB<&O-^#x2AqwEi!mzp5kyvIFPFXt0T&ranxbp(@U~1WpOD78IGk8R4A1~d z`W-y5m+l7vG!{;CX<+e^`G+eBlgN(b=6kR%opixdmpBLkAXg83ST`^3X8G6LH8?f! zoMzheWmHD1QkQrT^tvzISv;EY%!{-GWHfbhN8eMi^-667z k?I%o218I!1r (q{+~!tj zRyZNpS$O8jr=c(0Y*+iEO{sm>w}dZ!MU_T_;1xQt^)h#fRC;z=Q;KaxaAJujA4ko5 zn&Dks-x7wV+Dvq1P$A@C2Li24j=F!9B*UA(>2zsih-CZHc4QZuu4Abi{Pw2k^JASB zbe>F0p){TuRm~g#pC0R^XcO+GrpKQ~>hPZyv-Pf!VhjeCn5C}=oo%kQs3`YyMb=0; z0eA&Adp0pDgk-Rp+t;z1*_y*5JO+qQb2iCli$QfcLxnK_TQp|tNOc*a0z7}ba7ZGI z Z}wvP79>wM{E?S$k8D ztx}CVMFoK0Q&Cp @RusbzWOo(++M|k=w3=tkR8&> zVuJ9QE+`CYs5|oTx+Y(V?Ob~}sv<6Vbr&B~Z16KHBd2i{EqORx&C-9oK%=%<^Ae rgHfCp%fTxVUKUOGQvhPh zxUIW7Ob3%7xApX+oN9urn|MpQG;8jQuAylkQTSc*QjNEyOQff(1_(4r*EWiuNpMCi z;jNpZA$#Sqmlif|D|dhEJteha$cSHy0N8Cp04(fo&009RPp1s T 2Ea645>N x5c*|XduV0W2jiP%tqmzPcI+6wI|B#@G^ssAy z zHKE<&jdGhN=qpsg4}&yQrjtNsZ3ZYA*Z>J{a$IFiOKeLwLjb0hB2X}EHCR{n)M+$r zQY4ktD0m-akFGcxGd?0^BX@&{^{K%#k)BSy3e|$+ETt?6ax%y51_r1@`_*iZ_wV89 zk*pl `aC~IX%1maD8`kd;0$D{O;`Z-MiCQ@6K;xV>A3(GA_naYK_U8kMGZ}POopy zujj`@9#vg38WJ=l7B}ao*JnRnynh=M3C|#7q9T6}e?A>j=)j8htdUCba4m17g84i! zbDKiA>k4+Wo?wzm2f6hF8xn-)l^p>t&?bWqSZ829c6GGXPNne-RmLW-t(Oi$sv #_r)e6j)TaJ_~jtz$mS8uI+UIRnG>3^;H~(c zp2{3kiYAE{@Ve@ wU~n{~edd5CL0ZW!1KB!Eo=c zXwf*iXI`f0 m_T}f6A)7wC;}Rfmq9{yV)U?j`vX^F~!3`GZu|u9bOhXfR}?20X`hOFYMz9^kdn9 zKPPf*ZutbeHSF%DRk;CbByh@?-4OvG3xi^Bdzzr!mnG?kmk1I8ZV@&7ZvoR {Xg(sD6d5`CcO}WJyikS0^8V+ZuxpIL98%)X z{D%X*t#`yf*O*Y~VmI{5IHMSm!AMS-5Ih#7fgOyOa9%3{EZQq`3F+a{rtSCaesUA1 zgCYma_=$!q9DG`nGOO@d5wwQMR;=o#%gXc=EtWJ-*7?RHe;jY9&^b9pt0my<#K!u; z9GM9eNob6yk ;9E7aW245@8e?{y|)lyokmtk|JW z_5tL(I`82eKMkMHQNSjDskjF!(x9 bOvF$%0m6>6<9NcGV!br_mp& zF-TmAUv7A&f9q%R633y4N$&(cL)iF9?sz^fI508?J7>#kM9S^8$CfdRcx*jG7-x@X z;zjF;{D&PII}n*3p#-`V_BG #^QCee`$)nb;8Vjd7r>O4AOj=AYinl z0**xR$sE&2Ng>HeR?3LB=$?|MaT#LQ7#;GjnHNhdCX}3`msJ;Wm6SYltY9q+lEc+g z^6W`!W;uqd?=w21F&ibBtr;F=?r34=l3CYfU?mT3Vr3Nr_3Tz@YWQKeHX;OE>*65{ zJ5o~xf5DVX)57z6Xp7Uc0cg@~guw4r3cZ*wyx@nv-%a-kCpxt;^sT1^$Za#cZNoD( zkiaN h{LMthJ<3%tlGA0XAhRaW07nZ{Gfrf9cFchA^CYZJD39W)f`$!VNM$-pYkd zl~U1cGFuU_ZJ<^T06y=@ ?a!x(&{q@MUw=G$y*OL*{NsSdx!Lc=Cc zLv}U3McZYL(<>59?Cj`bY)j|6Ywl>LEQ_q=+XEpBT?(y5@|3x=DWrLQOOWfY0E6C$ zHeaVmK>e{{%(`ztZA%osHN|1L4~5okf7ng~e}OdJ7IdlydIabm2qa$}U^a93b_W*6 zEWuz24QA3busC5bTXE6PI)?#HWwc5(p(-|?iRYk&7KYa;)yay7MgG3-VL%Pe4*e$- zBf(Sn; qlyy5Z$ eAw#VB)*ej@kjf9chQrT^f* z!d3>ZuP4{%H@69OHNcqGC$fEEjf;wJ6dW%^*lES~06di!&N-0^jHKJTs7AqpejFPS z#W3(bpDXFXpLg6e@?i27os2ljaW*l^g$38HYl{2cbth40a%1o#ZDM>(M<}P#)2h{d zUzE9Wm5;Eu3quvMiNE6Rf8ydF@gxpBfwv_H&=noKJQ1yo8{`aqQ5W #_h2Xv zhgANPlOqLvFz=Xua?1VL!_CH1mYRCAa!?lvtLy=7&_Lj5g B{me&SwN%@no72a+LUr5E~0Uh`^ua{IVSvy{SBq; zyUw+2 dzq;opI(Y)M5L*gNZ9aHpJ #nJ*dE|rm{}jIhiQ9d)nO#7H@D2MLNXZ@#@tKft z66+AR_~eMeaD+#REoRePew0RokMzfgmEDxLcWum{b!O1}f1csD5rp0FZHt`X^%~eC z1hI5S2QjpV#RCO!8~O*$)fFv;d=Bzy0wQ?32X-bg4$||fO{9o)wZ_Xdm{gK3Kz|2< zX*{}dr?Z%%4Ja^CV-{bz-`|3hHUKQ8Xkr#P6a$zGCf}ebS#i$nZ~D%Kt~5K~BrXQ; z%YIu_t@s 7aehA8TDluhELHyGZzB{U$GJ Ap)H^nW zL%6`Q;lVf;C)Dc)c4d3VMyJf%qSqE)UU^npM6VW_L_h<%tMlUFMGU3II53LR4RI-a zv5*RzY@eJ;;j`7=wUa>uCHzOYG5BCuH5ssR)3waHn2JA 1A-SMq8@_Ehe) zeW^C-Ra1ZClC##0nL@Cx44o40WWiz&dV#}U0asMF!jHs4$>95uwySkd=Y^zcdw4x{ za0{pR0o^FSnLpE!yE#-u+tqk_K3p4S9GeL-+t>Kp$5K=snoKXA9M3oSSj`~+!PHPZ zwYMCcYBhazhlv@h3hXa4LB=kD2F6!eC9jE%3o(E9 -vWj(s_lt)K%5#Fk;- zLq}snZ2R2~-g%+@Vs;Pb(eNZ1_7|qdVogLoh#Te)eXH&-pO59JY=DqnvQ?_|iuN1V zWJ7<7$t2Mqo?AGQt6&*BwX?^?auy_r7n^nE#RN-w_%zWmPT?cD5!ZRcw8#sp_~D9- zVP5m^SapUqNtU#52smxj+?t`B8+4i6RIXlEv-MOl#BJ^W2fpyOX_z8Z^LooSDA+)` zsY|k_ot?b}^=jq@y#`;t55h*?if@GC?BIVQo)l4T^tJPqwgFxbK8boYP;E5IV)Geq zM!=@Mc}zD7!yhjfjtQIwup@F?%G{}xB!-9@XeOd|S~edt>W^OH&GnL9Sk?WYovPXb z=Ushc)o=jPgP*>?xk&hj37a4Cg*H9_dI&8}1w-Ti|NeI)@(^tgC<|zh{}(zy+x>s= zyWdBo!9?UgxdYOS(t`bvFOyqxY7|Oj8a~?2{2Z99yKzh(%=kj)bfZrijQIRPdFB&G zql?BwihO}17Q>Ch#?ecdxs3?t!ja!pZ1kSMq>0$Co|gg>X|c<_2}=j|ybT-gJDPbj z`B?ZCAH$K~8g)f*y)T8`cVcT*MxlRB#F`y{%xWV8;0g_C9Sm|MX?Q&a_DNbgASabQ zng#_NFlXF{Kf8ify3xn47>iOmL@8~Dl!;Nz3UpAq2~?b~pdIHt&HAoR_x*lPI%iSw zDC&SzROX>@P@sqMDL;8N2RH24TRxFWJE5k}?%*aM^YtjX>&vbX_ndcNlLCKI16@ M2;ij>CV?=RxLTM&?YBK?J99l{UVK*te#2@q+fCC$K =rd7u8hQ#Z3!5dy6M4i@y)A`%EJ>4JaZu z^>Gtu%_HB~v%UK6qqhUe_K|;gkIL)s9^D=bI0XxvpA8)smc}QKym}cyega3_J{=tW z`V_WIiqXdiGB59>@`Ev=Xmv~&w}YEFcrqx%XH5I7do&hM#ecXcz#S8CHA3;%+xSX) znw2$gZY9q&Qe!3uz_3W4pbxgyPGyRUq6tH~(2REd-rh4$RI!O)aCd*vMI_AKp~kkh z_X7r67W{(!^}&kcT2ZNNl;wotFqbcFZI7kcIn8gSnDKY*Hie`8b>A^nd17N)hf)HF z6$7km!`%Sko2b54y=3S>6=e7i{D&8LR)(5|1!q{6QjFL ;m*L(tu7cI3c3ZZdH z%Viw6si|eKQ4!sgL|nSsWp&FFo)jMJ4z_gOM)Dom)y)elD|>(HFg@#L&?Nw5uxNOL zK`t=}f+Q@+pxuWLuZ(q=x^ol!?2_y&ocdr(pf#=#j K-RiB9tXI0@@-JM%ePT zBwQiK#c1}G*7dz;!hHNe7&m-<3K!c&Ab52NQjQ0jYS%t`$!U CqA1W3hRZBUsqFZPN`cN`=_|^3r$#K0$~?3z2MK zKU?gfMJNSDf4)X2ZC3}p|1>CbrIq1vLnD2;o$hG~9YTMMM+~AkTVkR^TST>if{?I~ z`)cEea0u>;)zJFjk>DWok<7Jho8Z&JBU(H>l5Ds$U}l;~i8c|5+06kH+w^#ORDRjT zr^nML`34r0QhZK5PhY*H=gO3STmsEO#X?caUPlBIP55eip4`7oXZjWloWLOhGrYwR z()$ 6MTWtuX24XfhJCrNe*Km1VaEeOMym&ykEWKpYtyQf$ZL`19|z oCw)6I>rpsVGQ zEf_yS`sqd*-WAtS?IO@oJ-5<+ukjMBo6sO1tpdI?L#GN^mlhqGf@&j`Fd^XEHVL>T zMTaJ&TCXB?^-yg4hFEjfqsB!3Ot^$(G@DWHX{QAzQAlheXrix`4<9Ga@Jq{Dyqi-K zy- 4elf_SZ*J!=_%_#U`W_`vBX1ZRbtEmX787eM+l>F!T}0XaKmO zbAo;kl_}v)J}o-3d8~>}R@xq5^C&TuzZEXZn`}-M`s#qPG!p)(efpT;z<6QqaNMkl z;9ulV16!XL-SiZ+Igl8W?fdS#54a4P2rqv-vRp-H3#VzOGCJa;ax#E)j4(@+A?-!8 z7L=(Ybq17Fhfy1g@6J@OAE%nV%9?I+HrEtH97JcqExiv9il@@yS6IiV5RBx4>580W zEskcY{U&7~{v1|`Z3q|OjzgdKS7(WIcPbNJQ#B33Tl|4*Xj+Qup^ji12@VYse7b)a zjdqJ1M7rssNx*LN$j?93zGA2b6~&RdC4;>3Fo|0lODJ_orIYnl6u%mFs6+G%OXsOF z?)0wnmj}x^5JyP$X&Dg-4>)cp)SW*)Cp=v2ecc%oYD^*?h+$gAvyJ4vk?bEHJShhu zc=?2%77Uys?DyphTpghfKFuYnE_HtjA4!H(4ko;k-iCAV@OWR{6$8*A-N5rNsd%zD zg2W&U-pLubCEti=kH7UP&~^=}w)m`4QPb(_%Uop~K&aRa_fM|4f4GuuoGPui@UW>F z-VQAcM$GK+V?j2byA _Vohct~CS1gdAwhvN_SXe1c50WRB>@;i zrhYldXfiZeMC5q*bNu7LWhbaH8E7GDXVf(-!dvM9<*^N`U0XWGi_FJC KGoAuo1(tf0(Fz7Xp7_ ze@)QbjPoU_de8V*2`R?G+}87sI(e{}At>x2icLz`qKEZ1f{)q(b((OWg!`yB5xffW z7y2MVp>q$DawZtC28chv)io0tE0yPWo5#A?khI>L58(SX0=rB)#sHgervP1;39O(w z>{JO=m|4uSO=l;x!eJ*$e`y@CCLUXA`Aey^3#!6;tqK1Gfj_q@9fGu|Hf7(= qwNq(qV@(!6wdh7ZoL+|xOyylfJ$r4#L3dg6JQdqU^u z!ZSeAhrTS+w!desLe{1&*=Ka@LTs TwV0vi z7~n0Jq$dF^Eqioeapupx`?P?=IuAwDb~78{k^G0gN$>z|K$5>Rv>6tKn62i+HJ6fn zncEt {U-q FHx#H!*x1*if)M7$`+f}M zge|IO$1mua&CG@In}9A gw*ZYA@C6yde>>25N{m7HIt~_)ViQ^} zSO-Z5M;+PLO))ozrZ6A&Y-B850u{mq8s%xEdHPIHZn#78VK8eGpbbpy$x}cFY0*QG zhZ|bwPnX8d(a0S#E3?o#Hy6*!nhkoLJsS@sEcmc5I~cRwqX0W}R-p%>K#qu`7$YK0 zQaf BFJW 3&hL;B|GNpp%E7V zc#Dk&h0>j(f+J=VCG1ECXcyQYPL&z;g#lDCF;lPla2TUTmCbhn4}ILled6xT7ejocxG voKt7sH+5`E zqR18f&xg(4qmecWHY`vin*{{A%rmv 87o22)zZubFcK&IvwX1 3)j%O~aD z@E=~Ln4&Odizy0E?Ixpxt-9WMGD?OMAsK}Z*VMs@%Epduv8~emV^P*^y?=c1Mo1?! z0K7(* -`?( z%pf1oZas5NgsWE}ZXg!V@NNCObQ4`B@>iD{ECC!C_BJnSNZ!D3r^Hg#Gzn~ELN4A; ziKO6bmrg7JJpmV&j4S~je+FoTr`%;6)rhxc-OWfoAK YMMgAI>YD%X z(S*!HM;y)#%ePSCo3_7qmqaZARDVMfC#GzfbqX(GQ+6@3hVgekhh7J`5ySV7^eae# zpn`59b{F?LuRD0IwcdQ@1~#pwT?@(^AaKJ6UD45pk8KgSq`wK=hc=K-5SS9bvF`@j zl=$tzO8j=D#Bbx3&=Y@-5(C1F?1-sV1`T2=)r9+V1#|48ZF_%nXW-Vv|9=;JBp3J* z!W~qd45ZH5^b^U-?h!1EIBU`njMXCc4F+XgknFNAe%)uj4TTYfDj3cdl15`9XZl=J z*ehIS`}B3u?#0W!wse{X7nW7v+7)#UVPG#OZ;B$_QAgNa l8?7<(my5xKq5jV4B*?) F+C3Y2%qE&y2{?`sc5dIMgNgt)9;`?8%?boAMcUY< zxERjZV}AA0J$i=IT1c_f&&oU>PbLDzvZtjXq_=%nH$_%bowKsu_J1UteJU%qec2Zp z@r0^oT3YZS;T2tWiHMIL(&vJ ;DxCBZ=ekL!^ zb(1d=i$EqgzzD%)PJiGPG#)Gw!REzPI6h=QFA^h(N9)ATi3pXvIXOM~^GUFZ=Ouaa zUYqmC@}uX;6Ti$3re^3wkqBtCxe!}UBskW?Cw_IFL8k&bW#$|XDeYP$LYdZ#t1za& z&)`LPTIpa%@301F6h}9MwA+u~P{U!{FuG|{<0MzV$(N!N50?}$0W%j&5(qRamQVs{ zku4gfg#>%}a2-l*Ar6;bFaaWe{z93(cB+Hpq9B6a_?f`xEFBN;1a%D$>I7NO@|-pJ zvR6a4S(CH3LpMFzAdFB@^d1hh)8y0X_4|wWZ
n4yv|ZD0 zV4jby`cu8h?)x%pW)w0H9$Uwd-q=43-U0eT^zJa><8{L%W3mHGASX10Et}+lg_Io$ zI0SD|!3=dKeApCm@Cj6qzhQ=PO7Z#aoXpeDh;+t0-~}|6g7}7aPC~SM%!-QSv+LkU z{)~Nw*FHH4V~^ko<2P`BJ4Jo?WR6}TxN@||pXn3s^@IBEN=Q8P$0p|tx{a?^N}$nu zm4Sn5O*NJ&3)B-2pj4F?iugK{lWIouhEnif2t(0k_pCOFcBciCDRs4(Q8S%ruZ3p< ztv^qbtV`-@6H-Hkkv#Sy;;v>7A|6n}e1PZN_8xm(k@?e77g6GW1OuJo?uxbzu=wOq zQw0&KDQ+R^@J$G@Kfh-K!=OtDCdHg^hb-QT+iUE>*r7WTdn9ujXb;}G@Rs>I?5G4a z;Ouy#7){SoPzPWKB;|L23R^N`ya7U65;DSw-!xHqBKC?W%q=1C#uKzD@TOBd`554a z5O^R8+9CK3Q9)RLS7GK&petpk3}+}~g_0Iqa3;&fkLVMiAiGZvMjC0`5H}H5FQg9u zu#k(RD)t?y!XXo@k^HSlgwUxJ9usXy$yOa_wi70hTg5HBMVPy=s#@9Q(jUW@M90kY zhuKCHRg;L}^ cdNPLH)cWGRj7h2lp2$YxuVMWwu9KtDaY)hF~lOFX5;H zb8unG1+zeK8D7|T;Ddj*#*CL+>AVz=g}||nAZpEUFqC>cPtp+Y+X*(cY-rM;Fw`M9 z%Yn|pIu6! {%SxgzElIww?cwHpbiR3!sDmC%Eg zV=A{P1F*0dV98(z#ydjz4zU)X2u5a-&KQ+R8s|=`8e=(OOm9P(nGhlN3&tuqUy!>j zn#OaEgazU6o%3dlx!K@ivuq%U$}Y(zRxEZyWWv}+g5KDH@mIL(=NtYF;q+sLiiZ mNeMGfV3L4^>y*DX=4lM{pe*69DJmV{y~m4I!pp~^?EgyZ z2Vi;I7kPsM7976$EA1zsYmiz`bZ&?jU;~eTD;ss1f}9E`d3-rU8?d%nSDAlB$E1ZK zJp2q|W!9`7Xn4313~86P-3yIQ)0eX{$%n{|g1uq>tTds2g8m^&lQL`Iigy0e6cx$n z=$ba;bShOq%x9?V#ye-eN&c^Y{PV9E;8)2lgrL(j3=yKT^7x;cGIJ8x3Z=XwsHSdK z8>t_i)0Imor{E}>T~pU^wIZ5qlQt1e_LRG1kDkV}azXYdgbDj?*gnV)E*w@U?6A{M z)FZxdRN3dxecBc!yl%fMW+loL<6r;yKkvaYxfvY)^^cd#H32Dq|H6$o%wU$H{6`2M z9@}S6xn=u(Q)inw1;d1bC;i!TaKbG_p^)jXNd@QK!YR#D{Y=U^m6HpyKU1cw{_lSm zeXea>#>21ynGm?K%qd0SU{gXWy5ES90w2*%Ya9^`w8FM$Kf`9~8sA7VA^}6nmPX|) zRM%HGgYLGx7J>MG=({cnw~m$E;~8Rx0C!;cWY5kMnMWFP)W(U8(EDQQh%*1)Qyf&H zGOM;dO=oO6pC5}BOflE@4}H5~ sFQaT%gghHTA@xZH-NHS`ufh)AtqhC$4ca<^HD zR%qYvH_p6J!tvc8>Oj-xi6rl@&g@lPm5a-pF=NbsykNxI30>1_zX@#WCiG^I&}3+` z!t-bp3&Il@f7@W#%5Y!#tu`o_QsRvLb%DbkP8$Ku!k^$D7cTj-r=29ED&Ad?Yxdoc zI$?w!pmX8P?m)<00DrP>v) XVC zb>ZWGQ`q6)82kkOcY)HVb;X9|Uj(=&c7q=Yez>?|Nm%&XAXvQR)W(8yDRjpRP_36} z-+(29u81d7B+>6metSuyx!Qm##{#m7jK3dg-7TY FDVB+veQzh)ojF9F_6L7!He5*piz=I-9#ZTifN4WqZ5PYejs}uq_PiuZd z{!`tQxhIj-p!#tWd7K#id^G&+$z8zZ0R!nEdd7c*@QD*D(j>sMjBp&g1!#UsJQg&6 z3L#^9lQt-vGU=b-_jk5I{**XooM51i881w@_0+@Ty#dEuO={SX^o+oV0L%x1KUT#T z_0EQ^{43#D;RlDbEI#9-mR$VBG#*za;E1;fuB4+=i~ACc4d=8!k*K`4 z&@_5o@D=+?@XJY Bls`Sf?zegL>j)Y%x z7r4{%pMN!%t2zNVe>xYwSYL3jbMSR4sGB&API;5~8_gW5KNr|$T~>8;n3)r(c4_c> zfToNNl#Y=ugm(ho-+_0scPtmEDu(wyx<=t$kA=;9szB$ 0}T?<5gUYn<$X|Omts2s8-G?h2E?|mNcx<; z#1~Ut@B{k_=-AoINpVzMguS)ofqx>+Q$e1i@P*6={=>;Iua8lruEKhch7Qq46Q41f z+_m!IWa~&tpb4MDIFY@T4#_(|GwpN#zNz78aSZ1m1;;)A3x7I!`hALLKyujriH>8x z9}9onr+8fCwRCdQ!+#Q<+=jyUDaBMFPy;i-C+5l)uJM&i--P1J%im+Eg-FPJg@=vp zTfa}ZgAW|nh#)KI?|_}|aXcpCGypCyK~~b=#=Y-0ecKl}d~%gl^w$h#vyQO65+sJdnL0<+B;Otx~NSQSkW?|;w@Z2n1IysEVQ{jTV^ zt%RAn7%^_7V}v%(k6D)%ZQAxlCmv0lua^hy6ZKBueHiYIc`0@MlR?=JYOiT6+#(dW zBVsQUG9av9^xPzzCypBUASHhISf1Oqs~hhOYr-?g4L?0x_gUjTPci1 PPXK)ily&zQUB{)A_~B!z%euMS zWzFY)ADMwDnhH@3$V |dNw~vm$+kH2KP H~c}RD{`e!f~O2B_! gFUy7#}ncM*3;|j1XHQ`}0JF_{d5q_wdrwNH7xN{hF8q @7x&1(7t9N(YtGa1XN{V_hF!`$Hre}4oCA^h-sqJa45^h5LEY=hkJ)62z9>D~n# z$DZ K;Cv9W$SpmLMQ4+r;CHBR6*spkFG0X nLtcHIz{I-D0#cvp!f;}%h)?9A_x$NT7fV}FJ L{IDKvFvh#BJOcsDIuN$fGA9Lv-j=1s-yEiBoPOtr^_M6y!buYD^=D zTkTN9; Y*O*1pg@`x2zVNJKn2#y%}9PjsXKr+;Z_qQjlT zClbaq6%$U0bh0ph>1bC;!-luSBaw6d>1vZ7NtRnJ&yMkB;Gg&pGp0Q08w5IpmPdds zuvK(|j6^Ofe}WWrB2sMbYs+wS!hpe341a;Yzk5}exfwfLaTfBOUCpv+yHF?y`40X! zL+xJF@)-s?mbrYnxg83$g_m$a0To9L`)dKL`({IjP6gbnm2cw)!5bxS&@} At#8V)rLLT1cz+*Wwr^64#=lAfREJkyK9%sK>-?n!oL#u zvQpqk4IhIg?A^nh>}f&F>}Ns@tZtCM@IfCBfTIF6fLS;G+;@-)BJ3yj*8 =D Q?6G#ej^t%pnvd70sJmGFBE*pjT-JO=0UB=`+F*z>u4q(k;i-+6&$ zxEt|n3}t-`egdY3yj9+C9|6Lm5oR&HrZ|Bc!hICKB-BNfUKN*`LjfEsr}C!_UD{_L zT`0aLBJ4Qakj}>uiEn7@Cb+cas>@O=;$)j?*X&?13ZD&^;X?r BYfGH^>}h w#2<&Ex4;M%GT$gY}0WN>N zuPb|eM)0b{EBW(JR)S4dr3Ia@wjI2~-qt(v{7CF2WXxt0Kg+7*A^~@J&Rx3O^%xqS zQF;a_VU&$ZW{Y7nJLMqoM*OnJ4HoOGF8vJki4Obl;~7i|&?YX2`t<^)1hy1t2NgY~ zDf+j*9l|tym1gWI) mUE@62MBnp`%dY0HL8V&g*Y!d+?GdfJsUP z0a6B{kV%FO<-a+S3H7D*z1Z-kACxcBY)5Bxyi2Upl8))B@PvrKykL>Uz`T$7RYGHY zkz~7shla>tXkRpTFM_Y_`iBQ>MaQ%~?dHY@T)c6K0Ok?ez3|v1D1oi_I8J|5g4R@f z=D0iZv8p^YW3^X|mNZZHK6wnvL*L*ZJ1AZbq=mdlD?+DLG&L~U=wGO%Y<tq-W*NX@dh#ef_tcX>de({40 qn_3Hz9@ zBP`;lu=NUW8`2&mU#<`spignr0QYuj2Lyf4>+`v~-wR)H>}wr?`KM)i%5i*@Crl zY;hM-c#L|B-(d6{+iJVAS6S12Z-8fSr>1A>LV~Zw3dG_|zU*;Ub}cWFPtzU@KD;W+ zZvdLtLKcaHjcLWW;d(E(TA;D65j{KE8TSF(16nK>iR44E?eX|Kn2UIRtf3QrEV?zK zXrp?=-4n1*LEWL#r|y4?L~oaUW{eHqpCDbjhi%NZ3-2YO;^^eNM9&0XM_``G;JHX_ zjhi>iL`*=7ot|h^afB=Vb6;#evv)NQY3U4j+$J&Ff|m^hR3UM=jLlpY(Oqf$GTfg_ zX(k?=^tMPDsd&?uv3=Kba9ciVhC}Hq#EP-V2r oMcYrj!T?P4qA8zjA2M(pVey+v zqMK&3`-3&)JNTQjZzo$&i)gH(pUI!g=q*Pv8+^mAT}6NW35m>tQ|_{CWZ>9pHF+|A z;mAl58JRQgvTS77;Bwu#2o4z)Hhf(;CSU}pO{J-{mY)+SR*sy5R>l_$nzp}!9OQwp zDFf4{3#UQ5X^Q>I5f&UWb~nsn*_d>X(|a@vM}$+X(O|=c6MP9BvY5Sejl~2H8Rle- zX!$7LF@G9X>ahG_sZ8*!V?JZ_`}%KLwXM^id(sr-u$M1M0Tn}3dA3f$&%H{%G);3B zOr8N#BRfC;4AC{w+sKceGF4S~rbF+`L|j2X9eyvN_%N_pLva;-7&k4V_`^covPta$ z`;C`}NdX~$Ef0<@p$yKhee>YzgDDH7P)TUJ3=3c#oQilR4SBB1hjfLcFf%3ZNcXRQ z{IgA{PXa!P^!e96{=X$+$bYi)Cv5MS*5?%>Xd(JDZy@nZ%ZF>&rhfn7cBz=Xz#a@* zfi&N a zRmu06>IZ&ESgaj!!UHqS8QCEI(@MS g=Ff(WVD)vAZL!^01S11)Vf>e~ORITV`ZqnMP*}Hf?NRNj$0OZwQ*a zE}FxCHMZZ T>SWM8Ku>di(3UWU1AU9#l^(Uc!Yd1o#kC9ZUP$re7B^!aO-eI zl~ab#^oHMyDqq&yc1`6OK2sikFQmNnqU1u_tN6 @$kYA$FDrdF>zfAw>1Vh zFjZy`%@0YJuH3u0I6u(IIr=GCnJnFZx3v5iEx!;2uV>RrHk_$gE#_Y08-AvjpB12k zTBy~-L5}6p;28a?&C<_ek?8k1KZ{kC>Y11VF7TIiy 1ldXbnM~R4?|6zJB74?@(aY`{9^{@6N?6K3vRM1X$x8}tL5UL-pN~kX35hT zu?d&BjyL-ro-1PVoN1O~D&ieXupL5EF+KQ{r8}ZN?xW_gxbOXx(V(=||9&`+OB+KR z)SwP)CP=6b;xal9mwf-DG<^jPGY+gE;JPXFgS;cpOq{Z2 8@9zX{ozW`%E@8m c#Go8YAOjl=oysTsyF(H+z2Ph%$d7OsbHIH9mfSeZ{!@sCgoE?6oqP z3<(dGoMEtKQbRYfyXPfsjmVpsE;W2xr_}9bEFP7VqsEP7y?3bCUu!( z%hf*D%{m$5p!+K~L4*cW;4v0x9MS9F;-iZ0%bfbsp=5WBbHPvSNOSU-J&{9|WaqWp z_V8JaL1T&hj{RLiS=uDR#QB*W_)Z}WR#4o;vQY9f3zEz(W?`{^VY?hED>-OAkQtkV zMwZ*8R4pPd7!fvE1`EZx;Q^P0qoy;Ru@Cm{%hEAgYWnYu&_eTnXLQ7g-bYfF^&+MX zJkc@{ietk+fg3y8v~V;ZQt|rCs*xLL t>gKt=xuijuZCxn{OA60(+@WzMF(*FW6g+I~uGcD;G{b{e=j@UU)_8 zvFy1>9%AVPfp2Cl8PwuNmF@O{7f%sC|IvHQ!er-p@rZL0{&(Rh@bx~hInOMsZkufX zSZr1<-*#HQ& HL%JtYxDHgkU)-u<{BipvjDBKpG;KTA}dHQPkSUb6|n0F$*(Y(8S zRcqOFfDs&jt|LP$O4Z w)ua1FSOP7885< zZc-wSB;ii=+%vEaZkVSk&PCOBS+!YefN6`Zh4V~_taM!~x^S!n7G%=RV^QV}sg4xo zDX)k&9Av?DBjK}j)Q55XA|`} C%zP?;G;4a)cPi5E=YlIwGIR%gWIJh9MI4Yw0MI^(I?j9mE$8 zNi#%7I4vEcF59kM{gGmb$!)e>yyDC2FKb7CMe-=|5pGLH3f$n~_C;nou2_wT)*Dm| zbZirXci=1;*NvY_$U9mkqHM#1pKfKo3&nVm@wz2)hmO)s3ghVynBd z6#t+mV zFNaZocmwuvkY*uga{d#DVgVM$C)E&FWQuiG ?^J;p!PK9|tH z+&^Zp`arU%H;h8n*Wgd#E4gN03n+h2Itjif&7O2U4F;~u$3*2yM`W+yKOU{`u7n>t zFA>Y(v6!XfB#^~z-37FrW$z$RUj;kVctM!XbuMgfcZAMBlzt%FOWJ3ao}LQ3A a0x|PQq~hlw8npYW=H(A|-i^ zD?^9`uZOgMP *#+~CU47rCdGYW-)4%HA-Sh$;1`^pu z^W}wmubl)lwK{Ehp@9h#$R$!P5psV5b)oElAopLqz%10u`qF8E8M-?j8)-(Pg^K +s;_a1@li(1;kON(7(ck>K?*`!!S^&Yb_E1@!xSrCyx3P9FH zPx_59+w*h!k`wN6K>&!0M*zur=w>Ctefe^aKp^gM+cuwy8s{o7?6+{T%`q=w B9!R#iH z<@#`cwjd1df&`Cpo^SvVC`QR=2{&ARc5K;KqAK= H5_NOXu zp&$H&cbQi3WrBsgRe4~2c>%# ?Bh=XUS#hCVGg+zVvs07`9?K94=-5hc$AnnVF}3dBC}(97PLQ zdQ~+K{2&OvhbnMtF*aw<#T;@|W(wv9V8fkvkjcd`0-A8_gtfEt1h64-la=c`zh6n(lxE{(U&H_8^F!Iyg ?~-DFB+FGIj}|*T}2B27Lw4M1b;! z3NE mSx`gZ9mjZ87+w?B>~<+$r&xCUp7rBC 881D&R6ZxQT!5B4%Cnynr zgO6bjZ#TT;x6BYTFcg@&!55vON*!qPRMqDR_<5*{tif^39Cx6L%etf>6mkHE&p3i7 z99+Bu-zV?dq;3+9o=7EVuvOK6S#yznc 4e2wH)^kq6{x;#bi9pf%Lh=dbC9cWr6Nw9-4~ct*Ji~2Va^Wu48xI9G zOqtjBO?6^5b=SyK*5MH1P2RRopu_5evSuB%G(R*axbp( Lt!`5ei{IbDah4Q`` ztO_|M V^jG&+-K@$!tuCG0Od7iw2ArolIBX{V}9r7M(ld{%6t!av~ zHAV$$`)&TjOLxI1OZd*buE@LdH(KemgGghZ!T1lrV$h)n%3 B9Zo%&{Js!r3bEV{M2l) zaWo1KhH0DQ=O~`% QQS1O(cT}IcO(4w%7y#6Nxa9poz0&>O(0O zcZ(Gs1r9CupCLPJmLZUkh9#V@G>4fUNLxJu<&Ka0iMI$({SXr)IiEDa&tCTlxFX?g zu|a{I7`}y_4Mop?vhD1%Wb1N$y@NyZ)i^SqY9eNIa-7fkZ31u!!twmza7nonqsy>q zL%^+{G2PHvL*KSVw`t2GR)l z>$$*tq6@IMMP5H5npkJZ9XzXG(_rE2iX$sW>ONO+Rn(||SXp*Gp5)Iu-Sww5-)ykm zf1g*U&yX$a&}8|6=Pm#c >R|JJ&<~i zORxB`{BZ6nNI{qX#q00S6dpOZu6-Vl4IG+zLV8*)!!MCzCMv$D?7qz9NytTBi^2EX zQ&kl``w-kVdAt2gt0vFvgUBDbQb7CggOy}v1@5hXl2&jShFOs(LW31P=P sEPF3}1m^phC)>D@w!ATni_5LrE&?UDLvyNN{^M&UT0m z5b)scbYL9=R5;|_XPDn#kEe+AFlvZMP^u*oUPF#kFmlTWdw@t>K_IQ47pv@C@kVm# zHWs&k6MO)duR9WfFQ76gH=VwAd+0R6azTDLVt3kXieignA-lY+&K-$Wsq*1vz9vc( z6AAXcJ`6c@Z(*6EI0sswK@%U*zCUZO9E&=yaQ!o@wztKu$ni#VR=#mG6=tZ?zn@Ch zqHc@sm_O8fAfHv$$F}UwzIc6IuA_WWXwasA;Ar0`? Jp7efGRMO_>q za9vaB+bEcXoMb%z3b_Aa=P>itI5r<-0`o8``U#sMa=Gy^Mg{hh!9Fx|g#GW6AD$9_ zK_C$XzE3VW1GT$^$!HYLQ(Q_B&pzMn(z~)~;b5Pq@f;hIxo6c+Rps(p3JguBjTDIr z4lg%@<~FVYOj)a~_#DOJ{7zu@mm>4QOrp$;CJw)cp%-CCT`Pokv|%t&f8%v;%1#1y z*3V;jO|(|KK6KaSyPi4wkba&4h9D|`zry>a^#k-FLJ(%bdmtVI8yPe#Ib*t?YPkOZ zj+?tH$~LWYzBC$F%d4lyyQi+)Ftq%5ESUEB*Ke&(7lV&QdYl6Y2rXDtP3oL4-^Nw^ z>Zt@w2EZj5^eb-Td)cI~Q `Hca`0tfnQ#}E!C$af<=CW$EsJakXyYh$MpTkww+CjUArZ4aL zYK$GWaKya{pTl`S2idB^XbfV1c*ZG;!CsOx1Ze!4ojVj0Yk^;xZw)3d#(QBXpF=l{ zI!WM(bz7*rUObTS!Nb*exC{!%h~;Gr^nep+Tdlmn6?%O27K|N>=S!Ws%{QNLmw#BF zm*U9?`UmaDQqI~cjKI^FDYU2P+A0nI`O5_I4NKjK8(;LLW|0>)l3XHx*}PCv*fAXZ zrr*!#cONbpfGf#x GWJyjk-#4eL5F$6x&u6MmRCg?P|0-hPs&y6o}Z z$n`%NBj}IpM{>n~#Btt#7xm&M1;gO&iJ?CHNv-ycriJZ^ Q9F2S2Wt? jQc(8~$> _cLn$EZl;XO^i zu+)sb3Ot!F5bhh+`C8 z2){()xHY}px9)*e?|8^89ts1qeR h0?8*)4GoFGV`*oQm{>r!R7{W!>B6koGV| zvTEf#2L6D*68>v{5#f&2qOuTlcSX^!NqP=`$)E7qJ9x5;JUoJn-g{h|jhhwHwQFj- zkxQO}3%Lrhb2K?Dt+o3n88RrxaQXAT2)t0x>yy>S)sxH}Oh{xxghvf)u-Ds#<6;6t zUZKoa3(KeRr1%Fu6&o%!q6^}yQ=Nk^=l=3k?~7(xr$Asi@Nm9-V&5y6AY{#J(OfOI zi4ckAhkKm| {bNeqo*;O1m)c+m~r$0VM(AmycrsDS!VyP>YYaMs9?< zi0B7(BvEY45MkWsA)G#BN79 2!}|* zFaB_e2hHY_Y&jnDet)yV^nvby3H>d9h{Z@gT;xHUSFkv%*nC=(xrX`{e+ah-3&gyQ1w!+(e(e~q8k85Ec>onZ6SC(>ZR z?<_;4zY8Dy_Csld-@nVm6bNo=dnm-6+1sUTLKzeE0kXtaF#Qa=@(bLvfoPWfzK4fE*aS GlmNJd2yNR^J>TViYtW3X4^&Ol1 z0 V)@DgU-x5gmr- z02grC&&%O~pF?ptReU9zJUO>-__52-z1kH;#m`^PnVnCkwmAfo46~4eiC0oZg|=^! zH*gp;bnAX(D#;tT9O4Cr`}v1=ZwZcSDQM`_*$%~VdSix(EdqGS$u2*zHfi39odCg{ zjDH}Pa52h{;vuUp;h~Ao+mDw&lS=&{I4|{(W_MZBgce1*D_gwcsyL=%)=q4JI6!%p zj(Ec`Aw&m$k)U7#f(aLt`z=5)k%9zYHvC*eoOon~wlDEAwIYJN73qaaVJ#sZPb3 zRE$H@a$KAn5cdHepZYuY`yP%)-}M_lc7GDa*amKZzR*SagoL<>_dN M2B%uc0Trje31{ICXc#YH`ZR0ux(D)WsuzkHeX0s=u&5@g*l%WK9UTDuM+RR)4YL z32gX%!rL8!Nx0Ge#FHVP{-o0J)AlD6FtODx3rIWGNK;2O*(+?5%Dn0x-SQx$s08rH z%u`uyd9^j1Rb@Z-gGA5;`h!Rs-NrCF_=Cb)T|5=fQ9)dYKLYIwuMQ1sz?B>O4h1qB z6W|ac{c#-ArI|WKT9SSI%nOu}w|`@*8%tL#hhcWaNgViEy%1Mzs(VjYaJNID{o$Oh z5^Sh*SisMp-mc@KZ%rG`2_5C-e9;<(NI|J| c zLMj^q|I=F~7US3Pu;d*C?e}kk-YolqYnn;J<+BvCU7xqSYj|4nT^hk$iXU*BXb6|# z>OQ=b5#<(eGQz=#G_Klzi+>NX0uSXl)SbgsR||O>A+PY3JDD)tcNN69EauH~_&(&G zBPNO5DezZiG4BV!rzoEvF^T`AFulNcN2R|O<^Ile^p-_Z>>w%c<@UNRdB6mZ1zft% zwA3Ejhr#ePHZIdfkT^P3c_{m|tXWR K3Lw~*ji9|`jwNk 3)K5vd*EU_(+*@9H7o9nRjEs8Xr@_ABSYe1qY5o8^9woFG zaS3Hc0%Z*YsD;KtvVUcea3Mc`JQSm7yOMo8mgKDs2T#^e&prA3@}!+)?t15>pj>4r zdWLw8S`Tr7dsd-B-j#LP-MOuey1IBw8$j@@TA4V9AOvJYih#HRZB b$HeSNF9aK& z8<^%U jFArbq-{&yk0_Cpc&W7h2W(svx`;R_<1;Us*>JPJi=&^?Q&Y^Z5HQMd&l9cze1n zXO)DydWPSSfOE*3yejH#-s1cjezv<~G3`qX2v{x17X@yUC_CtX@+%8YEl%5E*S;?; zrzw~?gC`H1!c6|;? z+jZE^(SHnlr4WU&x}1ZbxGofM1{dvO38Pb{!7VM;UD4w>+3Bc72q&(VggXfJWWDoa zV9yUOyzSPuZQI=1wzkIBc6(~uwymwVwz;)!yW76~eDA$Kz5l?R$>dBX$&)-ufTb)g z!~oJJpkTYr61#=t!Pf!{>kn!PfB!Is)BZ~nRJdcPJgjx1Aeo+2+hh(6V3-le=b>H- zZTFutkmUH2;aO7lQ4ETA@-FeLg@e_u9k3{L0eGNdA7AOmQ@XO&j~_Ki7r_-9H{r~I z6}q++?p$zok-H-mo@@RG;*l9sG7qKwL-+y(d$1nT>zYscFZc$ARgW )-5fqMueBsabc8au_U4kXHdqyew z0LPH0$wFd|RZC&VWP+URzTmLG5@+I3hIw(bL}r06XrPlA2+#IOd^q9AaOW%=5eCj6 zCi{k3lT%)=@ZrheSIJz~l`A{(-xK9*!E(s+HN}u0L25Ow4O+QsX>NjiMqO<#H}Pd0 zd*I( QX@W%{nb87ik1hMCfp{io@7Bq;`#E* b*Q2y<{9tR6;W3vcn;|?-ZO~VX3@XS=i>@%wg`* z`HNw(m !WtOrHr_qrkPjV58%Xg&OcvoqeN0QmOXTn~8fPK7f z`zaUns7!wlu){ksQHrN_t`)dng<-??4MOzgq$Y)wHupb8sp_ditT)JSM}LTgeK1uC z`07|+Mm-d0B`rm+q8#`@%j_c1jhdS_q~M^>2eJvetqS!7pvqaf_1$s&=!`UARsKW< z$l_L&tRp>`6c16|Gdn|~eNzI%fDKtZ10x>zJKRzbE#&|y(UkXnfmTXTg|~3{6nH85 zqDA`~Fao@N_#HLarTsY=#<3}ByI3eJgx2UuJGsmSDlHREn_r(;t&&(j2CO062Xf;^ zEbKse`Wx}H!}AXUbZ|IbiofNk1sunG@8=i2FgR5Q<@*L69)k$$mS93Z4HP7Ys;UR` zF;s1H7^Qh4>4%$~M?{)f*BY=yH(DMI%&3f2w289NQ1&^9g*_W}Xt&FwxYltRspF@* z-@66pznl?K(`4pHX)?OsBe8uC=dq%)cukI3WiOQ*N4nc|-%XaXW>bN$R54_a>^sKw zZJqwv!Lt^|vY_S{Z;8be4g^X-XvHox&lL#O^!<6fhpK{u6w|zAw|UB}KB?Kq|LKKd z@i!>%$Y*m$j9P%CBjL#;BO~_(Z^WqNgA|CXgG?h-ebe*T^Bs2h>x*IxH!8{}#<6L? zy=h0~WW?;H(IdP`k`#{)(Grgc9WHx)6L29?rJ|nQoIj|t)M<(G0z6G@%Lur@I0XGZ zIazx@t`LOV?IiGTBwps!(S6Uv!-BKYOAoXIoz=l^b>sSi<^J(}rA`wpHGlm3z{ph! z5BGH-!!Gyf{Vc{YEzTtG3mxHMJ#66zc|rEw6~^#!oESD?0U6n)J~|}T;{Hb27_Nu| z4wp`UUOT3ugoKP20=WHqh|I3}?htGgyGFF?*pYOI2l=F2N68h3FC0$z^~X_sHF5?L zK9Mi|?gAVV>aXD$}l|rkt9SQC(gIR(`8bR5S$j{&%BUp8(Fn*kWtE40haJ68y!f zapI%)k=3L6FZelqTcO*fwJz4pj|;Ha-Om4InhN@9An>!N3<&!}udV4f>(+Iy6hPyZ z5a_)xjxjISu-wC3C-K}%Q<*3TW8C4I7b)%oZXyf{?Q46=goYKoGp*u#{DX>{cTUG6 zMmoPB#ULV=VB9SjL;hD4ewr1_nBqVNDXn8&(*cI19|;MMZ4+(0gQ7Muy2jAR!sqbF zgGjucr|=}n0nijtoLteM;9wnzfDr76qkQ#SRpTE<`6c35SQH|C+}T^_;OdL;m7ESJ zYqA<-lgld4J(=ATrM2oi#u&r7Oh9Riz4|%wVb*wbK0}sJWV5=#vhl%u|I5 zy}$a$DhE(tZ36hVHb`>B~0^?z>3rBP{WfMzl{o^S~>$SqLj!o89IrH#75!#w2}P zzX=6P@G~?JI_t-NF|H|#wAnMwgkVW~A6Jdc2S?@jbg%eR(mQ51U00 Zv<{;yVtm@b2w{p5yu>*sEYx8Gpb%geURp!uwszBSZ aal)LbU%CXe~TZ?nImM^_FBZXAS(C%tk zcuRYl4bF(he(3$VpS#lVb8mW;t)n`dDe;gV{I{Fj8V5Cnl5dWD!&<(9JCv;j`rU04 zvkojd>l~u}PUZbPN0yZtMZSBO6PFM}=)?N(JCKr_KrrYSk|A$Mu9FifyUQ&}76=wE zD1Us5i>d|vOZ%*i_UDv1Sr(f565nm8vzd2_=vpMLt-NdP`}N)ZPK~-PJL>U2f+bwr zJAu&f6*1eHJa)(+G&m@Kw2ALq;N0_jk_w|Vrxix@t3Ljm8WQoGB6>T%%?WBxYRMy| ztbilo8NJBGpkq~Ji4p$*EqA(6d7d>-X9i9&MOub#I)!o-6Ic2|@}&Wnl>I- kbm02sL6NJ7*oKA}XL4c`M&wgW$xF)wy9uY9|Mn( }K~?tE4Fhm%1dOW^E^sv${0rcN @)tWxin?s zQdgmw(mO$9CAF}22=dc3Wx8r^BUgH>vmiVN@+w$X!S~=KTvCB)L&04I-2*;R#0bct z;tOyJf^`RNl)eqm4Y{YWBb>K!pj&=ZvKu4Gibg;F9R`~ye-FmOY29yOrwc}lzx&&h zY^$G$qA4~eF+6A{O|zR$g(6W)%wo$xgirx4g)%4Dk$Fg1%U>Z>h(LSn$)ZPj(-2 zE47EF*WfQgnP0`DMk{ox%a5NIuI>OsN}+siSWF5=c+ $^ccVu=`uN?N`r zfJBWFL}+-Z-)2N2-UC+} YJcVI#$v&tQ5 zxNDlT|Hro!c<=p{YN34TZvZj5yE*#UR<~39i#$RAXTQIz`%e46W%GjX;+??GkIvkM zeuES^M2O$Fw$y(>jsrfWuQjlU`#!*M@{!|AWkAD`7-ag2eFur{1nFVt@h*h uiUtmJ#(s4?t(xzXR+!YXmKsu|6yG18(2TMoB8c;4`jz-l~PY^mVM1;tg1b{=wU zILN=o } zz!j5r9aGV9?4-zSjS^I}dtKN5*1>#P-{N%eHA|{PCR0iyX4blGP$Kd(zdzzZ>D-JW zKJ4+6aRI0m$qq|m=x#Hu7wozH8~J;{e5?II#0;}|pTS>n X*%w6R43aB1ZKB9a}q{OfGCypogSP zut8@N!(Nr@ku*)D>kUH|>>P?w> ?8v?z(r|btBSt^ao(@T!*i?t-0Na-)QjW zEVx}SqwDT&&PqK>E -|B{;W$?yV#TR%v m$2Z?h>(TYCiC{x8R-Nh cOmTFR%4GaR$dFYR#UnVq5=WTk(MM$Xq%acxm2XS#YD z0qv?5D-^uP-U6#FvscX=i?K&|0_ev1npJ1+{4O4uttAl2KqbQZ>nDtiLK$x2kdSYa ztM(N3zSq*(n6#>z<|wO$C&|7fEtPvb2^ RN) zA%R?io$Z~{`kjDHc&wJ@`ZmM-^ GpR;o>@at!e*YPQ@JJvB$;T|{Tq&F_&Iuzxj|G5@qpi8@a z_QgFUCn4>^Gzqa1G&DurbFY&_T1yM`;kH>oxKCvzD2FEoxb oO$NG?nT;UYOJBxV&-EhrDc}EM=p0b8Kl&6Xl#-Z_w?>!WxH2JJd}Lz=Gh+P^K?S zrLi18q;4sRAD9?M>2f1NhK&yr)^j!5z)J`%K+wiSg^H9H5Zfm_S9Gwm%<%;N_BAQC z-B>N?e?zP%i{l46&?aLGhTf>hRjz;-G+S&FMmuC+%fm%J2?5@1z-$DNPAq8oU6AFvHHj z8ne _#dU&^LwN^(Qcv=(e?3RYXnZnPM4DE`tM5;iU;K&g% zHou?PP!AN7B6O_G1TWtb0T$Ez2d8FP@tRR;ZiT?ev#JJ`Y!?#Z0%Rr4j`iXA{LONc zPXuPjBrdrV@hnwukSN)m&2-vOi!p?UGK_s$qH1Q7tT3 Kc F0nvFmA&uraaEy&>kru{6 z`oacV9D-Jx{)X7j3y)-y%~YZ{P$GO%?`?%#pr>?K?~aMP{0ZHg#<6n%Z4*U{CO>QC z?O8nlq?J&<;wMtW45$B-5{3u)nM=uG2mdwq8^Td1M!;`y;GGCvypR2M*Pim5R*n~0 zmQn5#-_CDCt;l}uw7|q0%tjfXMF$ZpRW_Ij?P1+NZTqsH*{Xlu-~0YmW1ieicS epUKvco@hhUdU$w`W#&*ot7EM3 zoM^V>84EGne1rne0+|wLB}Nqz0)ed36k{`s0SG4BpNknx#j0(cb@Pdv!qU>fmW(xk zh{O7B0UTA@RP7xlC-jAouJbAfl{a>YC#f?vmi*{om>G+R&$HXVT#rYiC0jwS2Wp?z z+3EA=W}-U$n=<1WL`kYlhebIB>s^#=NRGBj`mJHpL$kk&TZgJ<&N`GrQ?#YqL>e#h z{gULOac#U_WDEY#Z~vUx%P)H)DnY)UNmiqIpCP0J63-V^I|=?; z!t<;S)= BFw<5`MzF)H2M*<81+_0A_Ce8M!Z-P`~in5 z4Fts*TpdO)5v6uCnZ#9ze8x3??#%KS4i13?wos>b?6cEuK72(L`sdIx!MJ3bovofO z9uKv^$I}x 1Svd0%}872^q#31H9nbssUhGIvX^5spuZuFNcgW( zlyUM^kaVfktOafqzH_Xt_1R1D#>b+=DM0LPr68_4(F~SsW^bnvVA)pVba8{z00hI? z&?ZA{=djce#;wY9F9B-Kg_#WS&K5Mfv>5g@p10=n>GhJ{tL!A-m|FWZWsl=o44H z_h?o**{3#S?B8c_U*HZ~QM|>Az;ol(NX$S3u9S6~LSh3og__65X>NmC4E~9|nHd&` z#fHD{bDAd4tn}=MMj-XY4*O)<0X~E@#N-T`Lxe_;9qx25zE^XsVN}FT`CD(bAJ6zz z*Z*E=Yu|W4 kRGI_ckN9+uAFnGK1Qe7fFt*WXH9=~fq-J29gR{8S z$4;?o9&5_078vamW&Y&?4%Et{WTCz*=eJrsf0##pSRc>yW;cf1*!%;<13bq5zW=2g z?`aiN+wdh-IO+4MvmSb(s(IPO?brxU!TYDSw82#!4|DlGewqonJ^${dZlpD=EeA4b zZZvmj!IRV{P7HS&7)NlJad;;%imCiAQ;B;&lxI@@%RR$m)f0+aW94D;MzZWk!iv~z zjBvrp0iO-9&Hr{}5KgXc4?OTq-m9K8Pz^i+o!y(35zTZHCewM;e|^$RPRvsrh{QH? z#ev`Op5CouKRXWH%iB_{&Suv)MIq%qUW4@&*knonRMIZ9dX@9o6e2d{j0q0Bk6M&I zN JThY*?~Vua;3p)!1e9- N(N?3N6qbp9id}9 zl=$$VY^BGC@NHb91D`gmbJhYj`QCjOP@=S?$(*~Gbl`M!;y52`Jlkw7%yUGlrrvks zvm9&YOnKDT*(?$^D0VQ6nZ$*WM-ueNe+Nu{D;nFHOizY>^Tjebg2!FyI%rUTRdYbx zyVcVOM|bF)uE75$ejxYbl_)4-e4Nw!gmrjc0jrT|vAMe<1GtN`yZixFYAgIxi6*VN zRDH2uIA$80TVKTm+xRApFh&h|z-C5yi8BI{!wP>(70PNqT+F8m)B`k`yehxD32Uc= z&*E4(60(dq?Wsn-m;cB{4Mc^(7bKJWe=&^!p=~)u5`utF%rMv!$6Fn7d3QCp@E; z7w-;j{G>(U1u%HJzG;X}-zlG2&}jX}s#Vfg9zCcms}qw+#msBv021-Opu8ftFrY@Y zTe^W$NfN<-*;DVE7 zG idmXbOjNx8>W7vQ>0zfgg;Lhz7hpbjugdXv;9M4Da ze=}iqn)G{8duYNRZ#q|Z8I)P!B&?lfSvyzAUcT(K5|)j*XSiuuhWcZr3vtnph#@1q z uxvWH;{tqv- zMC0(#32GJnKJW$_VL~>DDd^HU527r;n|pfbpDMNHR}j4;dMCK7@H6JOkXYlSyue_! zo8}X~1S3nlKPu%bzqvm9vDf}d%)>MRU8T% -%}K_i$7t ztaS;vf=p^P828Y(D~75HDmODeAJRM*$sq%y0+UrFLCz+-=c({9N4WCQDaj+sXX22< zDs^!yrvc%=t8)u%T1}_1e;>jIYaeD%vRRRXBN5d>lm{F9rTeSS$5vv8=>>zAd4MFQ z <6pkQDvYh zOwt_?iG${^#D)9$I>Y0xj!9V|`+JoWSz~0I*N1V^>D#7USXQuN2>Z;k&epjbg>ZZ9 zBak_uC_|^y%a9OQSXA Whrn^(thSyZh7 zgs+e^5+MUupBKh@eTwYPyAiVpGfDxSa%S&H1sp0GK}X+EPvU#J58eYP_*xG!4okm= zCiA_qJ=%D9^$~SibKK$(`fi}+ga)o!Dt?Gn`$3!o a!wV)EsW`N61od2q-gl_@bXOwZ5Nrs#)jYA`f_R5@65iz z6}hh=1$+}u`Sv3LpSy9*iMN_g8(%!{8&7EG)YG0`HUoEL2g%|u5~o$yw`!f1c7`3$ zmHOAb+aq? A9TU Wz%Arl-qR13Hj<4xD5R(mNgP51U;#lxNL= }+LlH&|dAantmJvuCsy#3p>zJZeB+oC`?{6q0 h zCJ2|v;Ab7U6yDpF@?=&sKk;nUS|IUu-?GioS9c}1%s0`B`Ji{jI5}vK7Aa~mmhAY} zw!6N8sSHY$=ir~#h^BIggpzLokSt(@*#4-@))C2q7EphJ-fTAQE(e6M9oL=76`q}y zcoL(gQZeSSjqNNXLjD5wSE}l3qcH{v0gOGuQD*#wH>411=EsO-Y;`l}AEWKi)ilGF zIe9U`BF`oSZD*O+o(n%Va4)2i{@y!#kGTFg5B***HLI~}SoO|rz)jA#4sOW+2eI_f zX8e0 Q-?4g@3s%oGg*afoDx)4}1W zLfFg>ff<+?ql v&^4i6 @vi3NjR8wjNIIBN>*cSLx^aA>W# AAkOGx835FM{I6g@l zfF#96hFBRzQH((n1{himgHU4?Oc(p~WXqz0ukw#)IADlH1%PnC`-n0=qZhz{6oH8! z6f@FdLE^HrZf@ylC~K~Np<3v7RH7QZE;`D))KvXAsR=&JVe_2|TW4SV`x_#*06)b} zmok8ie~GQMfJM%UmTfxdgcYKY_Q~ZZAhvWU%uhERqztFvS#uI2W}11aZP6vQcN8Tl zJMK`0mtwWwJgXU)W9$$u7ATY7CT2-7H0+P(53VNLx J}j~pSn)_irTP;o|vh#0E~^kg)58e^J0!q%BNhH-9ni} @<5d9-L`xoRP?adl9paMNQo>p72QoDUl>MfTlMoNSLOM ratH#jW+EcoMAn0&aT-^SB_ZVPcZ5m zB6Jyj3ZKKY8dV+)^eDCGP>j$;m_8g+B96B`(&3LeTabteH*l1kGiml5z(X@87C&a{ zs(zfgjUVZS?gl1eu3=eJ++-uxKuZMk`S5vRi{0=~U_3>>Xzc#?aQ?M@HJ3~~0gvei z7%>=ffkpk}u+mnC4J!?_ oMQ(v~*d(1uX`H6<51@_Nb;WcOOKDL# zcCx%WX+N5_vQH-yCh&g*0F7>n(dGmxgQ&5_tRA~gq8wJD0x~`AaykTW =xdVd%l* zj+vPm2q4$easr2~U}7dpbf7YK75Ku-H7LyC>}AMf$3%F2<|q4=sMKLD3#$1l8!F8| z-2Q}X07R0tdA#NVDpaYMOCt%mI$@!L-*0u_cm--HW7=u4kmQv#-|p7yq3ynW^Ztgo zWs6KpFcV!_*1yL9Dt8MM{SrBH-W$P{OISCpuZ4Upr@QVb{8y!vI*dd`5(}3y)Il@J zV(`S0%Ya6+eC(3$tM;#0f}j*GJ1UD@A@fb|Ap`M+90