Server Configuration

From Eco - English Wiki
Revision as of 06:27, 19 May 2024 by StalEF (talk | contribs)

Server Configuration can be done either through the server GUI or by directly editing configuration files. The latter option is only recommended for advanced users. Many aspects of the world, items, and player settings can be changed in this way.

This configuration guide is based on player tests and crowd-sourcing. No information in this guide has been confirmed by Strange Loop Games.

Basic server configuration

Setting a server's public status to "True" and adding a server description, both done in the Config tab of the Network plugin.

The most common and important server configurations can be made through the server GUI. Each tab in the server window will have at least 1 sub-tab. Usually, there will be at least 2 sub-tabs: Display and Config. The Display tab shows relevant information and stats about that plugin (each tab represents a server plugin).

Opening the Config tab in each plugin will present a list of options that can be changed through drop-down menus or collections (look for the arrow or breadcrumbs on the right) or direct data entry.

Common configurations

Below is a guide to the most commonly configured settings that can be changed through the server GUI.

Server Listing Settings

Network > Config

Make server public/private
  • Public Server — Set to True to have the server listed in the Eco client server browser.
Set playtime table
  • Playtime — This is automatically filled in if you created the server in the Eco client and made a Timetable (schedule of preferred playtimes). If this is blank, the best way to fill it in is to “Set Playtime” through the Game Menu (Esc), and copy and paste the data from playtime.eco.
    • On Windows 10, this file will be found at Users > [username] > AppData > LocalLow > StrangeLoopGames > Eco. Adding a timetable helps the server show up more prominently in the server browser.
  • Playtime (Version 0.8.3.x) - You declare the playtime in the network.eco file. Here is an example:
    •  "Playtime": "110000011111111122222222 110000011111111122222222 110000011111111122222222 110000011111111122222222 111110011111111122222222 221110012222222222222222 221110012222222222222222",
    • Remove the spaces in the "Playtime" string, otherwise this will result in the server summary (Exhaustion Limit, Max Active Players, Meteor, ect.) to not load.
    • 1=Sometimes, 2= Regular, 0=Rarely.
    • Each line here represents a day. Remove all spaces and linebreaks when adding it to the config. If it contains and spaces or linebreaks it will cause issues with the display of the server in the server list.
Set server Discord
  • Discord Address — Adding the unique ID of a Discord server (after the “discord.gg/”) will provide a link to the Discord server from the tutorial.
Set server password
  • Password — Set a password for the server, or leave this blank to not require a password. Players on the whitelist will not have to enter a password.
Set server name
  • Description — Sets the name of your server in the client server browser. Text markup can be used to add color or modify the appearance of the text.
Set server description
  • DetailedDescription — Sets the long-form description of your server when people click on it in the server browser. Adding this description helps the server show up more prominently in the browser.
Set server category
  • ServerCategory — Choose from 1 of 4 categories that will show up when players first click on “New Game” in the Eco client. Selecting a category makes it much more likely new players will join your server. Strings available for this option are:
    • None
    • Beginner
    • Established
    • BeginnerHard
    • Strange

For more information, see the Server Browser page.

Sleep Settings

Sleep > Config

  • Allow Fast Forward — Enable or disable sleep. This defaults to “False” on public servers and “True” on local servers. Enabling sleep is not recommended on larger servers or public servers. Players can use this to accelerate voting for laws, and some things are not 100% simulated during sleep. Use it at your own risk.
  • Sleep Time Pass Multiplier — Maximum multiplier applied to time while sleeping
  • Time to Reach Maximum Time Rate — Time it takes to reach Sleep Time Pass Multiplier

XP/Specialty Progression Speed

Difficulty Settings > Config

  • Collaboration Preset — Change collaboration settings to adjust how quickly players gain skill points. Sticking with the collaboration presets is recommended.
  • Specialty Cost Multiplier — Adjusts the required amount of XP required to reach the next star using a multiplier based on the following baseline values 0, 20, 50, 100, 200, 400, 800, 1600 after the 8th each stars baseline is 1600).
  • Skill Gain Multiplier — Adjusts the rate of skill points gained over time from food and housing.
  • Specialty Experience Divisor — Reduces experience rate based on number of specialties learned. Has no effect as of Beta 8.0.1.
  • Specialty Experience PerLevel — Experience required to level up each specialty tier.
  • Craft Resource Multiplier — Adjusts the amount of materials required to craft a recipe. Note: Effective maximum of 4.5 in vanilla game. Values higher than 4.5 cannot produce workstations from a single tent stockpile.
  • Craft Time Multiplier — Adjusts the amount of time that a recipe takes to craft.
  • Player Experience per Specialty — Gives player XP for improving at your chosen field. Note: This is not recommended for public servers because it essentially means that those in front will generally get further in front.
  • Unlearn Refund Rate — Obsolete as of Beta 8.0. Has no effect.
  • End Game Craft Cost — Includes two options, "Normal and "Expensive" which will alter the crafting costs for the Laser and Computer Lab. Does not affect work orders in process.

Meteor Settings

Disasters > Config

  • Create Meteor — Enable or disable meteor. Changing from True to False while world is running will destroy the meteor. Changing from False to True while world is running will have disastrous consequences. If you wish to enable the meteor, regenerate the world first.
  • Meteor Impact Days — Number of real-life days until meteor makes impact, counting from the date/time the server was first started. To time the meteor impact precisely decimal points seem to be allowed (thus allowing you to align the meteor impact to a desired hour/minute). Editing this setting may require server restart or regeneration to take effect.

User Settings

Users > Config

  • Require Authentication — True/False. Validates users with Eco servers. Set to True by default. False has unknown effects and is not recommended.
  • Allow Debug Calls — True/False. Allows debug calls to be made to the webserver. Unknown effect.
  • White List — Whitelist selected players. Enter each individual player ID. Press Enter between each ID.
  • Black List — Blacklist selected players. Enter each individual player ID. Press Enter between each ID.
  • Admins — Give selected players full admin rights. Enter each individual player ID. Press Enter between each ID. Having an admin online helps the server show up more prominently in the server browser.

Note: Whitelist, Blacklist, and Admins all use player IDs. Use the /whois command to see their ID. You will need to enter the proper ID when editing these lists manually.

Use the Strange Loop Games ID unless the user is a Steam-only user.

Strange Loop Games only account use Strange Loop Games ID
Steam only account use STEAMID64
Strange Loop Games + Steam linked account use Strange Loop Games ID

You are able to use the player's name when running the corresponding commands from inside the game.

  • Reputations — Manage reputation tiers and change their titles (this can be fun on a themed server!).
  • Unstuck Disable Time — Sets (in seconds) the /unstuck cooldown to prevent exploits.
  • AdminCommandsLoggingLevel — Sets the level of logging that happens when an admin invokes admin commands. There are four different levels:
    • None — No logging and no notification is given.
    • LogFile — Log to file.
    • LogFileAndNotifyAdmins — Log to file and notifies the all admins connected to the server.
    • LogFileAndNotifyEveryone — Log to file and notifies the all users connected to the server.
  • UseExactSpawnLocation — Toggles rather exact spawn location should be used for new players, or if the spawn location should be automatically changed dynamically to where there is wild food to gather. Default set to false.

World Generation Settings

WorldGenerator > Config

Note: Settings that affect world size, shape, and contents will not take effect until the world is re-generated)

Change World Seed
  • Seed — Change the randomly generated seed that the world generation is based off.

Note: If you want to duplicate a world off of a seed, you need to match the WorldGenerator.eco settings for that world. This is easy if you just replace your WorldGenerator.eco with a copy of the file from the generated server (the file must have been unchanged since the server was generated). All the random values are generated off the seed, but within ranges defined by the config, so you need both if you want the same end result.

Change World Size
  • Dimensions — Changes the size of the world. The X and Y values ​​must be the same and divisible by 4. However, not all worlds with dimensions that follow these rules will be stable.

NOTE: The server (EcoServer32.exe) that is bundled with the Eco game client can only run worlds up to 100x100. To run larger worlds, the server must be downloaded separately, through Steam or the Strange Loop Games website.

Below are the current recommendations for world sizes. Worlds built outside these recommendations may experience playability, performance, and stability issues that are outside the capabilities of Strange Loop Games support staff:

  • (72,72) — 0.52 km2 — This is the default size, recommended for singleplayer and coop games.
  • (100,100) — 1 km2 — This is the maximum size the 32-bit Server (executed by Singleplayer) can handle and the recommended size for small public servers. (Used by official servers to create a challenge-focused experience, despite them being medium to large sized)
  • (140,140) — 1.96 km2 — This is the recommended size for medium to large public servers.
  • (160,160) — 2.56 km2 — The biggest size supported by Strange Loop Games, recommended for the biggest public servers out there. (Used by official server White-Tiger)


The following world sizes are known to be stable on servers with an above average performance, but are not recommended to be used, given they will not allow any meaningful impact on Ecology. Strange Loop Games does not guarantee to provide support for worlds of this size.

  • (172,172) — 2.96 km2
  • (200,200) — 4 km2


The following world sizes can be stable on servers and for clients that are both having strong to extremely strong performance, but are not recommended to be used, given they will not allow any meaningful impact on Ecology and are not suitable for the vast majority of use cases. Strange Loop Games does not provide support for worlds of these sizes and does not guarantee to take bug reports that involve worlds of these sizes.


Worlds over 400x400 may be possible to generate without the server crashing, but are extremely likely to be unstable, even with the most performant hardware available on clients and the server. Strange Loop Games does generally not provide any support nor take bug reports for worlds with such sizes.

NOTE: The maximum world volume ((L*10)*(W*10)*H) = 2,147,483,647. Attempting to create a world larger than this will cause a server crash. For example, a (400,400) world with a height of 160 would be ((400*10)*(400*10)*160) = 2,560,000,000, which would cause a crash.

Change World Shape
  • WaterLevel — Sea level height.
  • Height — Maximum height of terrain.
Player Spawn Location
  • Spawn Location — Set new player spawn location coordinates.
  • Use Exact Spawn Location — Set to True to spawn players at exactly the same coordinates. Defaults to False, which spawns players in a flat area nearby.


Editing config files (advanced)

Editing config files can allow for more detailed changes. You can alter world generation, potentially drastically, in many ways. Player starting items can be added or removed. Objects can be edited and have their storage space changed.

Before you begin editing

Before making any changes, make sure you create backups for each configuration file. You should save copies of your edited config files as well, because patches can overwrite your changes.

To make changing the files easier, consider using an editor like Notepad++.

When updating a server, you will want to manually edit the new config files with all your edits, so make sure you document every config change. You can use a text comparison tool to find differences in configs if you are unsure about changes.

Some changes require additional steps to take effect as intended:

  • Changes in the area of world generation require a complete restart of the world.
  • Changes in EcoSim.eco are accepted when the server is restarted. However, the new values ​​will only occur in newly planted / grown plants and trees.
  • Changes in the full range of mods require the deletion of "Eco.Mods.dll" to take effect.


Note: This configuration guide is based on player tests and crowd-sourcing. No information in this guide has been confirmed by Strange Loop Games.

List of configuration files

The standard configuration files are located in Eco\Eco_Data\Server\configs

Many of the settings found within these files can also be edited through the server GUI. Generally, each configuration file has a tab in the server GUI that corresponds to it. Clicking on each particular setting in the GUI will explain what the setting does at the bottom of the window.

Backup.eco

Controls whether to keep backup save files, and how often to create them.

Difficulty.eco

Setting Default Options Description
CollaborationPreset MediumCollaboration
  • NoCollaboration
  • LowCollaboration
  • MediumCollaboration
  • HighCollaboration
Change collaboration settings to adjust how quickly players gain skill points.
SpecialtyCostMultiplier 1.0 Multiplier applied to the cost of learning a specialty. Values below 1 decrease specialty cost, above 1 increase specialty cost.
SkillGainMultiplier 1.0 Multiplier applied to the rate of skill points gained over time. Values below 1 decrease the rate, above 1 increase the rate. See EcoSim.eco for the base skill gain rate.
SpecialtyExperiencePerLevel 25.0 Factors into experience per level for specialties. Higher values increase experience requirement, lower values reduce it.
CraftResourceModifier 1.0 Multiplier applied to crafting resource cost. Values below 1 decrease crafting resource cost, above 1 increase resource cost.
CraftTimeMultiplier 1.0 Multiplier applied to crafting time. Values below 1 decrease crafting time, above 1 increase crafting time.
SpecialtyRefundPercentage(deprecated in v0.8) 0.5 Percentage to refund the player when they remove a specialty.
GiveStakesAndClaimsEvenWhenSettlementsAreEnabled false
  • true
  • false
If false, the parameters for giving stakes and claims below will be ignored if settlements are enabled. If true, you will get claims and stakes even on level-up even when settlements are enabled.
ClaimStakesGrantedUponSkillscrollConsumed 1 How many claim stakes, if any, are granted to a player upon unlocking a new skill by reading a skillscroll.
ClaimPapersGrantedUponSkillscrollConsumed 5 How many claim papers, if any, are granted to a player upon unlocking a new skill by reading a skillscroll.
PlayerExperiencePerSpecialtyExperience 0.0 Percentage of specialty experience that is also gained as level experience. Not recommended for public servers.
StackSizeModifier 1.0 Multiplier applied to item max stack size. Values below 1 decrease max size, above 1 increase max size. A server restart is required for correct calculation.
WeightModifier 1.0 Multiplier applied to item weight. Values below 1 decrease item weight, above 1 increase item weight. A server restart is required for correct calculations.
FuelModifier 1.0 Multiplier applied to fuel yield per unit. Values below 1 decrease yield, above 1 increase yield. A server restart is required for correct calculations.
GrowthRateModifier 1.0 Global scale for how quickly plants mature. The higher the value, the faster the plant will grow.
ConnectionRangeModifier 1.0 Multiplier applied to storage connection range. Values below 1 decrease range, above 1 increase range. A server restart is required for correct calculation.
EndgameCraftCost Normal
  • Normal
  • Expensive
Endgame crafting cost presets for Laser and Computer Lab. Does not affect work orders in progress.
SkillbookCraftCost Normal
  • Normal
  • Expensive
Skillbook crafting cost presets. Does not affect work orders in progress.
SwimSpeed Ocean: 0.75
DeepOcean: 0.25
Multiplier applied to Player's swim speed when in a specific biome.
AllowDeepOceanBuilding false
  • true
  • false
Allows or prevents building in deep ocean biome.
PlayerCanDrownWhenSwimming true
  • true
  • false
If this is enabled, player will be teleported to nearest land once calories run out while swimming.

The following presets are available by default (only changes affected by presets are listed):

No Collaboration (1-3 players)
Specialty Cost Multiplier 0.1
Skill Gain Multiplier 5
Craft Resource Modifier 0.5
Craft Time Multiplier 0.5
Give Stakes and Claims Even When Settlements Are Enabled True
Endgame Craft Cost Normal
Skillbook Craft Cost Normal
Low Collaboration (3-10 players)
Specialty Cost Multiplier 0.5
Skill Gain Multiplier 2
Craft Resource Modifier 1
Craft Time Multiplier 1
Give Stakes and Claims Even When Settlements Are Enabled False
Endgame Craft Cost Normal
Skillbook Craft Cost Normal
Medium Collaboration (10-30 players)
Specialty Cost Multiplier 1
Skill Gain Multiplier 1
Craft Resource Modifier 1
Craft Time Multiplier 1
Give Stakes and Claims Even When Settlements Are Enabled False
Endgame Craft Cost Normal
Skillbook Craft Cost Normal
High Collaboration (30+ players)
Specialty Cost Multiplier 2
Skill Gain Multiplier 1
Craft Resource Modifier 1
Craft Time Multiplier 1
Give Stakes and Claims Even When Settlements Are Enabled False
Endgame Craft Cost Expensive
Skillbook Craft Cost Expensive

Backup.eco

Disasters.eco

File use to configure the meteor.

Setting Default Options Description
CreateMeteor true
  • true
  • false
Defines if there is a meteor or not.
MeteorImpactDays 30.0 Number of days before meteor. Real time defined.

Initial Spawn.eco

ModKit.eco

Profanity.eco

Sleep.eco

UserTextures.eco

World.eco

Balance.eco

Setting Default Options Description
MaxActivePlayers 0
ShelfLifeMultiplier 1.0 Multiplier applied to food shelf life (conservation). the higher the multiplier, the longest the food can be preserved.
CalorieMultiplierOnMove 5
RetroactiveExperienceRate 0

EcoSim.eco

Contains settings for atmosphere, pollution rates (e.g. from tailings) and sea level rise, as well as biome definitions and simulation interactions like rainfall.

Also sets configurations for the time multiplier, day & night length and the base skill gain rate.

  • TimeMult An optional multiplier to make game time (including crafting, simulations, etc.) run faster or slower.
  • TimeOfDayScale Adjusts the speed at which the day/night cycle runs, as a value of X seconds per real-world second. Does not affect simulation speed.
  • BaseSkillGainRate The default experience gain for all players, regardless of their other sources of experience points and difficulty settings.

Localization.eco

File use to configure language.

  • Language (default : "English") Defines the language.
    • English English
    • French Français
    • GermanDeutsch

Maintenance.eco

  • Auto Shutdow Hour Specifies what UTC hour of the day automatic shutdown should occur. The is best paired with systems that automatically restart the server
  • Auto Shutdow Message Specifies the message to be sent when the automatic shutdown occurs.

ModKit.eco

Controls mod loading.

  • WhitelistEnabled Whether to use a whitelist to select mods to load. If disabled, all listed mods will be loaded.
  • Whitelist Which mods to load when whitelist is enabled.
  • LiveUpdateUnityFiles Whether to check for unity file updates continuously, e.g. when switching mods around for testing.
  • PreserveGeneratedModsAssembly Controls if the Eco.Mods.dll assembly is saved on server start.

Network.eco

File use to configure networking.

  • PublicServer (default : false) Defines if other players can see server.
  • Playtime See #Set_playtime_table.
  • DiscordAddress Invite link ID for a Discord server (the ID after the “discord.gg/”).
  • Password Defines if a server's password.
  • Description Defines the name of the server.
  • DetailedDescription Defines the server's description.
  • ServerCategory See #Set_server_category.
  • IPAddress (default : Any) Internal server IP-address the server should bind to.
  • RemoteAddress (default : ) Public/external IP-address and port number needed to reach the server. Can be a domain name, but still has to have the external game server port. Examples "10.1.1.1:3000/", "gs2.play.eco:3000/".
  • GameServerPort (default : 3000) Port to join server.
  • WebServerPort (default : 3001) Web application port.
  • WebServerUrl (default : ) Public/external web sever URL. Examples "http://10.1.1.1:3001", "http://gs2.play.eco:3001"
  • Rate The network rate used to communicate between server and client.
    • A low rate will cause slow updates in the world.
    • A high rate will risk lost packets and thus desync, as the network protocol uses UDP connections which does not retransmit lost packets.
    • Actual meaning of this value is unknown.
  • MaxConnections (default : -1) Maximum number of concurrent players (-1 no limits).
  • UPnPEnabled (default : true)

Pause.eco

  • Paused Pauses the game world when true.
  • UnpauseAtFirstLogin Allows newly created worlds to be paused until someone joins them for the first time.

Profanity.eco

Contains a list of offensive words (including such offenders as 'commie' and 'shinola'), presumably for chat protection.

Rooms.eco

  • EmptyBlocksCountAsWindows Disable to require window blocks for windows.
  • WallBlocksPerWindow Defines how many wall blocks are needed for each empty window or door block.

Sleep.eco

This file is used to configure the Sleep feature. It is default disabled for dedicated servers, and enabled for local servers.

  • AllowFastForward (default depends on server type) will allow players to use beds to fast-forward time.
  • SleepTimePassMultiplier (defaulted to "500") defines the maximum fast-forward speed.
  • TimeToReachMaximumTimeRate (defaulted "10") defines how long the windup time is to reach that maximum fast-forward speed.

Stats.eco

Controls reading and writing statistics information to the stats database. Disabling these will cause issues with the web interface.

Storage.eco

File use to configure world's saves.

  • SaveName The name of the world
  • SaveFrequency (default : "60") Time between saves.
  • CleanupFilesOnExceptions (default : false) Defines if we clean files when exceptions occured.
  • StorageDirectory (default : "Storage") Defines the name of the directory where saves files is stored.

Users.eco

Contains user controls like whitelisted and blacklisted players, who has admin privileges and the various titles players get through reputation. Also contains settings for how food plants are spawned around new players when they first join.

  • MaxRepFromOnePerson The most positive reputation a player can receive from one other player.
  • MinRepFromOnePerson The most negative reputation a player can receive from one other player.
  • WhiteList Users who can enter the server without inputting a password.
  • BlackList Users who are denied entry to the server.
  • Admins Users with admin privileges, able to use admin commands.
  • Reputations A list of titles given to users with corresponding reputation levels, and the color of those titles in hexcode.
  • UnStuckDisableTime A cooldown for using the unstuck command, to prevent abuse.
  • AdminCommandsLoggingLevel — Sets the level of logging that happens when an admin invokes admin commands. There are four different levels:
    • None — No logging and no notification is given.
    • LogFile — Log to file.
    • LogFileAndNotifyAdmins — Log to file and notifies the all admins connected to the server.
    • LogFileAndNotifyEveryone — Log to file and notifies the all users connected to the server.
  • UseExactSpawnLocation See User Settings.
  • SpawnLocation Where new players will be placed in the world. Written in X, Y and Z coordinates.

IgnoreVersionMismatch Controls if clients with a different version to the server should be allowed to connect. Defaults to false, and is used for Debug purposes only as it will likely result in strange behaviour if changed.

World.eco

  • WorldTickCPUMax Determines how much of any CPU core can be used by the server. Defaults to 25%, and should supposedly not be set higher than 75%.

WorldGenerator.eco

File use to configure world's generator. Settings here will only take effect when generating a new world.

  • Seed Determines the randomizer seed used for world generation. Two identical config files with the same seed will generate identical worlds. Identical config files with different seeds will generate similar (i.e. based on the same parameters) but different worlds.
  • Dimensions Both values must be equal, and must be multiples of 4 (or the server won't launch). Larger world will be more resistant to pollution and have more natural resources. These values correspond to tens of meters (not blocks), so the default 72x72 world is 720 meters in each direction, or Template:Unit. See also Server Configuration#Change World Size.
  • WaterLevel At which height level the water's surface is. Defaults to a multiple of 4. Other values (e.g. 62 instead of the default 60) will cause water to reach only partially up the side of blocks. If that is a problem is unknown.
  • Height The maximum world terrain elevation, probably.
  • LandPercentageRange an upper and lower bound for how much of the world can be made into landmass during world generation. Anything that isn't land will be made into ocean. Keep in mind that more land will mean more vegetation and animals, which may shift the difficulty of the game as these affect pollution outcomes and available resources.
  • CoastlineSize Size of land coast (beach)
  • ShallowOceanSize Unknown, may be related to how much shallow water surrounds landmasses.
  • BiomePercent How much of the landmass will be of a certain biome type, adjustable for each kind of biome (e.g. WarmForestPercent). Uses a decimal value rather than percentages in the config file. The sum of these values must add up to less than a hundred percent so that the remainder can be made into grasslands.
  • NumContinentsRange Determines how many continents may be created. Set max and min values to the same (e.g. 2) to ensure exactly that many continents are generated.
  • ContinentAvoidRange How far apart continents will be. Unknown what the values actually mean.
  • IslandPercent How much of the world (or remaining ocean, maybe) will be dotted with islands.
  • NumSmallIslandsRange Determines the number of islands. Combined with IslandPercent, determines the size and number of islands present.
  • IslandAvoidRange Determines how far from other landmasses islands will be generated. Unknown what the values actually mean.
  • NumBiome One setting for each type (e.g. NumRainforests, etc.), determining how many will be generated. Combine with BiomePercent to make, for example, many small or fewer large such biomes.
  • LakeSizeRange Range of how many blocks the lakes will take up.
  • NumLakesRange Range of how many lakes canspawn.
  • NumRiversRange Range of how many rivers can spawn.
  • RiverAvoidance Distance between the spawned rivers.
  • RiverWidth Width of the River in blocks.
  • MaxElevationOceanDistance Unknown.
  • ElevationPower Unknown.
  • AutoScale Unknown.
  • AutoScaleExponent Unknown.
  • SaveTerrainImage Creates a biomes.png image in the server folder after worldgen if set to true.

WorldObjects.eco

Controls world object tick (update) behavior. This may be connected to when world object check to see if their stats have changed, and thus update their appearance.

For example, as of 0.8, fertilizing crops requires waiting for (or forcing) a tick update for the new soil statistics to show up when using a soil sampler.

  • TargetTickDeltaTimeMS Time between world object ticks, in milliseconds. Defaults to 0, which makes it variable. Appears to target a 10 minute interval when variable.
  • ParallelWorldObjectTicks An experimental feature that allows parallel (as opposed to sequential) world object ticks. May increase performance at the cost of stability.