From 002085cb98ea54ae263ba51e4e14b8b9f7ff4e99 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 23 Dec 2023 14:37:46 +0000 Subject: [PATCH] Deploy to GitHub pages --- CNAME | 1 + ...rd.BLSE.BLSEExceptionHandlerAttribute.html | 277 + api/Bannerlord.BLSE.html | 116 + ...ed.Utils.MBSubModuleBaseSimpleWrapper.html | 938 ++++ api/Bannerlord.BUTR.Shared.Utils.html | 118 + ...utterLib.ButterLibSaveableTypeDefiner.html | 264 + ...nnerlord.ButterLib.ButterLibSubModule.html | 559 +++ ...tensions.ApplicationVersionExtensions.html | 261 + ....Common.Extensions.CampaignExtensions.html | 305 ++ ...ensions.DependencyInjectionExtensions.html | 555 ++ ...b.Common.Extensions.MbEventExtensions.html | 496 ++ ...annerlord.ButterLib.Common.Extensions.html | 132 + ...on.Helpers.ApplicationVersionComparer.html | 215 + ...rLib.Common.Helpers.ElegantPairHelper.html | 587 +++ ...Helpers.LocalizationHelper.PluralForm.html | 146 + ...rs.LocalizationHelper.RecursiveCaller.html | 148 + ...Lib.Common.Helpers.LocalizationHelper.html | 675 +++ api/Bannerlord.ButterLib.Common.Helpers.html | 136 + ...ayedSubModule.DelayedSubModuleManager.html | 458 ++ ...elayedSubModule.SubscriptionEventArgs.html | 259 + ...SubModule.SubscriptionGlobalEventArgs.html | 468 ++ ...Lib.DelayedSubModule.SubscriptionType.html | 142 + ...Bannerlord.ButterLib.DelayedSubModule.html | 137 + ...erLib.DistanceMatrix.DistanceMatrix-1.html | 526 ++ ...tterLib.DistanceMatrix.DistanceMatrix.html | 465 ++ ...b.DistanceMatrix.DistanceMatrixResult.html | 309 ++ api/Bannerlord.ButterLib.DistanceMatrix.html | 129 + ...b.DynamicAPI.DynamicAPIClassAttribute.html | 348 ++ ...tterLib.DynamicAPI.DynamicAPIInstance.html | 215 + ....DynamicAPI.DynamicAPIMethodAttribute.html | 347 ++ ...tterLib.DynamicAPI.DynamicAPIProvider.html | 255 + api/Bannerlord.ButterLib.DynamicAPI.html | 132 + ...ib.ExceptionHandler.ExceptionReporter.html | 233 + ...nHandler.WinForms.HtmlCrashReportForm.html | 2024 ++++++++ ...d.ButterLib.ExceptionHandler.WinForms.html | 116 + ...Bannerlord.ButterLib.ExceptionHandler.html | 116 + ...ib.Extensions.IInputContextExtensions.html | 466 ++ api/Bannerlord.ButterLib.Extensions.html | 116 + ...nnerlord.ButterLib.HotKeys.HotKeyBase.html | 757 +++ ...lord.ButterLib.HotKeys.HotKeyCategory.html | 148 + ...rlord.ButterLib.HotKeys.HotKeyManager.html | 423 ++ api/Bannerlord.ButterLib.HotKeys.html | 128 + ...tterLib.ImplementationLoaderSubModule.html | 308 ++ ...ib.Logger.Extensions.LoggerExtensions.html | 679 +++ ...annerlord.ButterLib.Logger.Extensions.html | 116 + ...ModuleBaseExtended.IMBSubModuleBaseEx.html | 260 + ...bModuleBaseExtended.MBSubModuleBaseEx.html | 384 ++ ...ord.ButterLib.MBSubModuleBaseExtended.html | 124 + ...tem.Extensions.MBObjectBaseExtensions.html | 296 ++ ...ord.ButterLib.ObjectSystem.Extensions.html | 117 + ...utterLib.ObjectSystem.IMBObjectFinder.html | 178 + ...utterLib.ObjectSystem.IMBObjectKeeper.html | 202 + api/Bannerlord.ButterLib.ObjectSystem.html | 122 + ...rd.ButterLib.Options.ButterLibOptions.html | 199 + api/Bannerlord.ButterLib.Options.html | 116 + ...SaveSystem.DictionaryToArrayConverter.html | 288 ++ ...ystem.Extensions.IDataStoreExtensions.html | 265 + ...rlord.ButterLib.SaveSystem.Extensions.html | 116 + ....ButterLib.SaveSystem.MBGUIDConverter.html | 288 ++ ...rLib.SaveSystem.MBObjectBaseConverter.html | 288 ++ ...SaveSystem.TaleWorldsContractResolver.html | 307 ++ ...tractResolverBase.IsContainerDelegate.html | 145 + ...System.TaleWorldsContractResolverBase.html | 341 ++ api/Bannerlord.ButterLib.SaveSystem.html | 138 + ...eWrappers2.MBSubModuleBaseListWrapper.html | 970 ++++ ...oduleWrappers2.MBSubModuleBaseWrapper.html | 965 ++++ ...nnerlord.ButterLib.SubModuleWrappers2.html | 124 + ...rlord.ButterLib.SubSystems.ISubSystem.html | 381 ++ ...Systems.Settings.ISubSystemSettings-1.html | 179 + ...ttings.SubSystemSettingsDeclaration-1.html | 294 ++ ....Settings.SubSystemSettingsProperty-2.html | 280 ++ ...tings.SubSystemSettingsPropertyBool-1.html | 236 + ...s.SubSystemSettingsPropertyDropdown-1.html | 270 + ...ings.SubSystemSettingsPropertyFloat-1.html | 303 ++ ...ttings.SubSystemSettingsPropertyInt-1.html | 303 ++ ...tings.SubSystemSettingsPropertyText-1.html | 236 + ...nerlord.ButterLib.SubSystems.Settings.html | 154 + api/Bannerlord.ButterLib.SubSystems.html | 116 + api/Bannerlord.ButterLib.html | 127 + api/toc.html | 341 ++ api/toc.json | 2 + articles/AssemblyVerifier/Overview.html | 119 + articles/CampaignIdentifier/Overview.html | 113 + articles/Common/Extensions/Overview.html | 108 + articles/Common/Helpers/Overview.html | 104 + articles/Common/index.html | 102 + articles/DelayedSubModule/Overview.html | 149 + articles/Development/Overview.html | 144 + articles/DistanceMatrix/Overview.html | 102 + articles/HotKeys/Overview.html | 166 + .../MBSubModuleBaseExtended/Overview.html | 153 + .../Initialization-Stages.html | 116 + .../DependencyInjection/Overview.html | 104 + .../Optional/DependencyInjection/Stage-1.html | 106 + .../Optional/DependencyInjection/Stage-2.html | 106 + .../Optional/DependencyInjection/Stage-3.html | 105 + articles/Optional/Logging/Overview.html | 110 + articles/Optional/index.html | 102 + articles/SaveSystem/Overview.html | 166 + articles/SubModuleWrappers/Overview.html | 129 + articles/index.html | 102 + articles/toc.html | 175 + articles/toc.json | 2 + favicon.ico | Bin 0 -> 99678 bytes images/BUTR48.svg | 21 + index.html | 195 + index.json | 497 ++ logo.svg | 25 + manifest.json | 1085 ++++ search-stopwords.json | 121 + styles/bootstrap-icons-AJUF3K7A.woff2 | Bin 0 -> 121340 bytes styles/bootstrap-icons-QRR4WHQW.woff | Bin 0 -> 164360 bytes styles/docfx.css | 1036 ++++ styles/docfx.js | 1223 +++++ styles/docfx.min.css | 26 + styles/docfx.min.css.map | 7 + styles/docfx.min.js | 1851 +++++++ styles/docfx.min.js.map | 7 + styles/docfx.vendor.min.css | 25 + styles/docfx.vendor.min.css.map | 7 + styles/docfx.vendor.min.js | 58 + styles/docfx.vendor.min.js.map | 7 + .../glyphicons-halflings-regular-ACNUA6UY.ttf | Bin 0 -> 45404 bytes ...glyphicons-halflings-regular-JOUF32XT.woff | Bin 0 -> 23424 bytes .../glyphicons-halflings-regular-PIHUWCJO.eot | Bin 0 -> 20127 bytes .../glyphicons-halflings-regular-QXYEM3FU.svg | 288 ++ ...lyphicons-halflings-regular-W4DYDFZM.woff2 | Bin 0 -> 18028 bytes styles/main.css | 0 styles/main.js | 1 + styles/search-worker.min.js | 57 + styles/search-worker.min.js.map | 7 + toc.html | 38 + toc.json | 2 + xrefmap.yml | 4456 +++++++++++++++++ 134 files changed, 38827 insertions(+) create mode 100644 CNAME create mode 100644 api/Bannerlord.BLSE.BLSEExceptionHandlerAttribute.html create mode 100644 api/Bannerlord.BLSE.html create mode 100644 api/Bannerlord.BUTR.Shared.Utils.MBSubModuleBaseSimpleWrapper.html create mode 100644 api/Bannerlord.BUTR.Shared.Utils.html create mode 100644 api/Bannerlord.ButterLib.ButterLibSaveableTypeDefiner.html create mode 100644 api/Bannerlord.ButterLib.ButterLibSubModule.html create mode 100644 api/Bannerlord.ButterLib.Common.Extensions.ApplicationVersionExtensions.html create mode 100644 api/Bannerlord.ButterLib.Common.Extensions.CampaignExtensions.html create mode 100644 api/Bannerlord.ButterLib.Common.Extensions.DependencyInjectionExtensions.html create mode 100644 api/Bannerlord.ButterLib.Common.Extensions.MbEventExtensions.html create mode 100644 api/Bannerlord.ButterLib.Common.Extensions.html create mode 100644 api/Bannerlord.ButterLib.Common.Helpers.ApplicationVersionComparer.html create mode 100644 api/Bannerlord.ButterLib.Common.Helpers.ElegantPairHelper.html create mode 100644 api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.PluralForm.html create mode 100644 api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.RecursiveCaller.html create mode 100644 api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.html create mode 100644 api/Bannerlord.ButterLib.Common.Helpers.html create mode 100644 api/Bannerlord.ButterLib.DelayedSubModule.DelayedSubModuleManager.html create mode 100644 api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionEventArgs.html create mode 100644 api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionGlobalEventArgs.html create mode 100644 api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionType.html create mode 100644 api/Bannerlord.ButterLib.DelayedSubModule.html create mode 100644 api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix-1.html create mode 100644 api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix.html create mode 100644 api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrixResult.html create mode 100644 api/Bannerlord.ButterLib.DistanceMatrix.html create mode 100644 api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIClassAttribute.html create mode 100644 api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIInstance.html create mode 100644 api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIMethodAttribute.html create mode 100644 api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIProvider.html create mode 100644 api/Bannerlord.ButterLib.DynamicAPI.html create mode 100644 api/Bannerlord.ButterLib.ExceptionHandler.ExceptionReporter.html create mode 100644 api/Bannerlord.ButterLib.ExceptionHandler.WinForms.HtmlCrashReportForm.html create mode 100644 api/Bannerlord.ButterLib.ExceptionHandler.WinForms.html create mode 100644 api/Bannerlord.ButterLib.ExceptionHandler.html create mode 100644 api/Bannerlord.ButterLib.Extensions.IInputContextExtensions.html create mode 100644 api/Bannerlord.ButterLib.Extensions.html create mode 100644 api/Bannerlord.ButterLib.HotKeys.HotKeyBase.html create mode 100644 api/Bannerlord.ButterLib.HotKeys.HotKeyCategory.html create mode 100644 api/Bannerlord.ButterLib.HotKeys.HotKeyManager.html create mode 100644 api/Bannerlord.ButterLib.HotKeys.html create mode 100644 api/Bannerlord.ButterLib.ImplementationLoaderSubModule.html create mode 100644 api/Bannerlord.ButterLib.Logger.Extensions.LoggerExtensions.html create mode 100644 api/Bannerlord.ButterLib.Logger.Extensions.html create mode 100644 api/Bannerlord.ButterLib.MBSubModuleBaseExtended.IMBSubModuleBaseEx.html create mode 100644 api/Bannerlord.ButterLib.MBSubModuleBaseExtended.MBSubModuleBaseEx.html create mode 100644 api/Bannerlord.ButterLib.MBSubModuleBaseExtended.html create mode 100644 api/Bannerlord.ButterLib.ObjectSystem.Extensions.MBObjectBaseExtensions.html create mode 100644 api/Bannerlord.ButterLib.ObjectSystem.Extensions.html create mode 100644 api/Bannerlord.ButterLib.ObjectSystem.IMBObjectFinder.html create mode 100644 api/Bannerlord.ButterLib.ObjectSystem.IMBObjectKeeper.html create mode 100644 api/Bannerlord.ButterLib.ObjectSystem.html create mode 100644 api/Bannerlord.ButterLib.Options.ButterLibOptions.html create mode 100644 api/Bannerlord.ButterLib.Options.html create mode 100644 api/Bannerlord.ButterLib.SaveSystem.DictionaryToArrayConverter.html create mode 100644 api/Bannerlord.ButterLib.SaveSystem.Extensions.IDataStoreExtensions.html create mode 100644 api/Bannerlord.ButterLib.SaveSystem.Extensions.html create mode 100644 api/Bannerlord.ButterLib.SaveSystem.MBGUIDConverter.html create mode 100644 api/Bannerlord.ButterLib.SaveSystem.MBObjectBaseConverter.html create mode 100644 api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolver.html create mode 100644 api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.IsContainerDelegate.html create mode 100644 api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.html create mode 100644 api/Bannerlord.ButterLib.SaveSystem.html create mode 100644 api/Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseListWrapper.html create mode 100644 api/Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseWrapper.html create mode 100644 api/Bannerlord.ButterLib.SubModuleWrappers2.html create mode 100644 api/Bannerlord.ButterLib.SubSystems.ISubSystem.html create mode 100644 api/Bannerlord.ButterLib.SubSystems.Settings.ISubSystemSettings-1.html create mode 100644 api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsDeclaration-1.html create mode 100644 api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsProperty-2.html create mode 100644 api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyBool-1.html create mode 100644 api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyDropdown-1.html create mode 100644 api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyFloat-1.html create mode 100644 api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyInt-1.html create mode 100644 api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyText-1.html create mode 100644 api/Bannerlord.ButterLib.SubSystems.Settings.html create mode 100644 api/Bannerlord.ButterLib.SubSystems.html create mode 100644 api/Bannerlord.ButterLib.html create mode 100644 api/toc.html create mode 100644 api/toc.json create mode 100644 articles/AssemblyVerifier/Overview.html create mode 100644 articles/CampaignIdentifier/Overview.html create mode 100644 articles/Common/Extensions/Overview.html create mode 100644 articles/Common/Helpers/Overview.html create mode 100644 articles/Common/index.html create mode 100644 articles/DelayedSubModule/Overview.html create mode 100644 articles/Development/Overview.html create mode 100644 articles/DistanceMatrix/Overview.html create mode 100644 articles/HotKeys/Overview.html create mode 100644 articles/MBSubModuleBaseExtended/Overview.html create mode 100644 articles/Optional/DependencyInjection/Initialization-Stages.html create mode 100644 articles/Optional/DependencyInjection/Overview.html create mode 100644 articles/Optional/DependencyInjection/Stage-1.html create mode 100644 articles/Optional/DependencyInjection/Stage-2.html create mode 100644 articles/Optional/DependencyInjection/Stage-3.html create mode 100644 articles/Optional/Logging/Overview.html create mode 100644 articles/Optional/index.html create mode 100644 articles/SaveSystem/Overview.html create mode 100644 articles/SubModuleWrappers/Overview.html create mode 100644 articles/index.html create mode 100644 articles/toc.html create mode 100644 articles/toc.json create mode 100644 favicon.ico create mode 100644 images/BUTR48.svg create mode 100644 index.html create mode 100644 index.json create mode 100644 logo.svg create mode 100644 manifest.json create mode 100644 search-stopwords.json create mode 100644 styles/bootstrap-icons-AJUF3K7A.woff2 create mode 100644 styles/bootstrap-icons-QRR4WHQW.woff create mode 100644 styles/docfx.css create mode 100644 styles/docfx.js create mode 100644 styles/docfx.min.css create mode 100644 styles/docfx.min.css.map create mode 100644 styles/docfx.min.js create mode 100644 styles/docfx.min.js.map create mode 100644 styles/docfx.vendor.min.css create mode 100644 styles/docfx.vendor.min.css.map create mode 100644 styles/docfx.vendor.min.js create mode 100644 styles/docfx.vendor.min.js.map create mode 100644 styles/glyphicons-halflings-regular-ACNUA6UY.ttf create mode 100644 styles/glyphicons-halflings-regular-JOUF32XT.woff create mode 100644 styles/glyphicons-halflings-regular-PIHUWCJO.eot create mode 100644 styles/glyphicons-halflings-regular-QXYEM3FU.svg create mode 100644 styles/glyphicons-halflings-regular-W4DYDFZM.woff2 create mode 100644 styles/main.css create mode 100644 styles/main.js create mode 100644 styles/search-worker.min.js create mode 100644 styles/search-worker.min.js.map create mode 100644 toc.html create mode 100644 toc.json create mode 100644 xrefmap.yml diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..865f270f --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +butterlib.butr.link diff --git a/api/Bannerlord.BLSE.BLSEExceptionHandlerAttribute.html b/api/Bannerlord.BLSE.BLSEExceptionHandlerAttribute.html new file mode 100644 index 00000000..a464c6f9 --- /dev/null +++ b/api/Bannerlord.BLSE.BLSEExceptionHandlerAttribute.html @@ -0,0 +1,277 @@ + + + + + Class BLSEExceptionHandlerAttribute + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class BLSEExceptionHandlerAttribute + +

+ +
+
Namespace
Bannerlord.BLSE
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
[AttributeUsage(AttributeTargets.Class)]
+public sealed class BLSEExceptionHandlerAttribute : Attribute, _Attribute
+
+ + + + +
+
Inheritance
+
+ + +
BLSEExceptionHandlerAttribute
+
+
+ +
+
Implements
+
+ +
+
+ + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.BLSE.html b/api/Bannerlord.BLSE.html new file mode 100644 index 00000000..d2341741 --- /dev/null +++ b/api/Bannerlord.BLSE.html @@ -0,0 +1,116 @@ + + + + + Namespace Bannerlord.BLSE + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ + + +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.BUTR.Shared.Utils.MBSubModuleBaseSimpleWrapper.html b/api/Bannerlord.BUTR.Shared.Utils.MBSubModuleBaseSimpleWrapper.html new file mode 100644 index 00000000..591d6c4c --- /dev/null +++ b/api/Bannerlord.BUTR.Shared.Utils.MBSubModuleBaseSimpleWrapper.html @@ -0,0 +1,938 @@ + + + + + Class MBSubModuleBaseSimpleWrapper + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class MBSubModuleBaseSimpleWrapper + +

+ +
+
Namespace
Bannerlord.BUTR.Shared.Utils
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

Wraps a MBSubModuleBase so protected methods could be called +without a performance hit

+
+
+ +
+
public class MBSubModuleBaseSimpleWrapper : MBSubModuleBase
+
+ + + + +
+
Inheritance
+
+ + +
MBSubModuleBaseSimpleWrapper
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + +
+ + + + + +

Constructors +

+ + + + +

+ MBSubModuleBaseSimpleWrapper(MBSubModuleBase) + +

+ +
+
+ +
+
public MBSubModuleBaseSimpleWrapper(MBSubModuleBase subModule)
+
+ +

Parameters

+
+
subModule MBSubModuleBase
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ SubModule + +

+ +
+
+ +
+
public MBSubModuleBase SubModule { get; }
+
+ + + + + +

Property Value

+
+
MBSubModuleBase
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ AfterAsyncTickTick(float) + +

+ +
+
+ +
+
protected override void AfterAsyncTickTick(float dt)
+
+ +

Parameters

+
+
dt float
+
+
+ + + + + + + + + + + + + + +

+ AfterRegisterSubModuleObjects(bool) + +

+ +
+
+ +
+
public override void AfterRegisterSubModuleObjects(bool isSavedCampaign)
+
+ +

Parameters

+
+
isSavedCampaign bool
+
+
+ + + + + + + + + + + + + + +

+ BeginGameStart(Game) + +

+ +
+
+ +
+
public override void BeginGameStart(Game game)
+
+ +

Parameters

+
+
game Game
+
+
+ + + + + + + + + + + + + + +

+ DoLoading(Game) + +

+ +
+
+ +
+
public override bool DoLoading(Game game)
+
+ +

Parameters

+
+
game Game
+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + + + + +

+ InitializeGameStarter(Game, IGameStarter) + +

+ +
+
+ +
+
protected override void InitializeGameStarter(Game game, IGameStarter starterObject)
+
+ +

Parameters

+
+
game Game
+
+
starterObject IGameStarter
+
+
+ + + + + + + + + + + + + + +

+ OnAfterGameInitializationFinished(Game, object) + +

+ +
+
+ +
+
public override void OnAfterGameInitializationFinished(Game game, object starterObject)
+
+ +

Parameters

+
+
game Game
+
+
starterObject object
+
+
+ + + + + + + + + + + + + + +

+ OnApplicationTick(float) + +

+ +
+
+ +
+
protected override void OnApplicationTick(float dt)
+
+ +

Parameters

+
+
dt float
+
+
+ + + + + + + + + + + + + + +

+ OnBeforeInitialModuleScreenSetAsRoot() + +

+ +
+
+ +
+
protected override void OnBeforeInitialModuleScreenSetAsRoot()
+
+ + + + + + + + + + + + + + + +

+ OnBeforeMissionBehaviorInitialize(Mission) + +

+ +
+
+ +
+
public override void OnBeforeMissionBehaviorInitialize(Mission mission)
+
+ +

Parameters

+
+
mission Mission
+
+
+ + + + + + + + + + + + + + +

+ OnCampaignStart(Game, object) + +

+ +
+
+ +
+
public override void OnCampaignStart(Game game, object starterObject)
+
+ +

Parameters

+
+
game Game
+
+
starterObject object
+
+
+ + + + + + + + + + + + + + +

+ OnConfigChanged() + +

+ +
+
+ +
+
public override void OnConfigChanged()
+
+ + + + + + + + + + + + + + + +

+ OnGameEnd(Game) + +

+ +
+
+ +
+
public override void OnGameEnd(Game game)
+
+ +

Parameters

+
+
game Game
+
+
+ + + + + + + + + + + + + + +

+ OnGameInitializationFinished(Game) + +

+ +
+
+ +
+
public override void OnGameInitializationFinished(Game game)
+
+ +

Parameters

+
+
game Game
+
+
+ + + + + + + + + + + + + + +

+ OnGameLoaded(Game, object) + +

+ +
+
+ +
+
public override void OnGameLoaded(Game game, object initializerObject)
+
+ +

Parameters

+
+
game Game
+
+
initializerObject object
+
+
+ + + + + + + + + + + + + + +

+ OnGameStart(Game, IGameStarter) + +

+ +
+
+ +
+
protected override void OnGameStart(Game game, IGameStarter gameStarterObject)
+
+ +

Parameters

+
+
game Game
+
+
gameStarterObject IGameStarter
+
+
+ + + + + + + + + + + + + + +

+ OnInitialState() + +

+ +
+
+ +
+
public override void OnInitialState()
+
+ + + + + + + + + + + + + + + +

+ OnMissionBehaviorInitialize(Mission) + +

+ +
+
+ +
+
public override void OnMissionBehaviorInitialize(Mission mission)
+
+ +

Parameters

+
+
mission Mission
+
+
+ + + + + + + + + + + + + + +

+ OnMultiplayerGameStart(Game, object) + +

+ +
+
+ +
+
public override void OnMultiplayerGameStart(Game game, object starterObject)
+
+ +

Parameters

+
+
game Game
+
+
starterObject object
+
+
+ + + + + + + + + + + + + + +

+ OnNewGameCreated(Game, object) + +

+ +
+
+ +
+
public override void OnNewGameCreated(Game game, object initializerObject)
+
+ +

Parameters

+
+
game Game
+
+
initializerObject object
+
+
+ + + + + + + + + + + + + + +

+ OnSubModuleLoad() + +

+ +
+
+ +
+
protected override void OnSubModuleLoad()
+
+ + + + + + + + + + + + + + + +

+ OnSubModuleUnloaded() + +

+ +
+
+ +
+
protected override void OnSubModuleUnloaded()
+
+ + + + + + + + + + + + + + + +

+ RegisterSubModuleObjects(bool) + +

+ +
+
+ +
+
public override void RegisterSubModuleObjects(bool isSavedCampaign)
+
+ +

Parameters

+
+
isSavedCampaign bool
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.BUTR.Shared.Utils.html b/api/Bannerlord.BUTR.Shared.Utils.html new file mode 100644 index 00000000..667460c5 --- /dev/null +++ b/api/Bannerlord.BUTR.Shared.Utils.html @@ -0,0 +1,118 @@ + + + + + Namespace Bannerlord.BUTR.Shared.Utils + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ + + +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.ButterLibSaveableTypeDefiner.html b/api/Bannerlord.ButterLib.ButterLibSaveableTypeDefiner.html new file mode 100644 index 00000000..f9f67ba3 --- /dev/null +++ b/api/Bannerlord.ButterLib.ButterLibSaveableTypeDefiner.html @@ -0,0 +1,264 @@ + + + + + Class ButterLibSaveableTypeDefiner + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class ButterLibSaveableTypeDefiner + +

+ +
+
Namespace
Bannerlord.ButterLib
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

Base class of ButterLib's saving system.

+
+
+ +
+
public abstract class ButterLibSaveableTypeDefiner : SaveableTypeDefiner
+
+ + + + +
+
Inheritance
+
+ + +
ButterLibSaveableTypeDefiner
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ ButterLibSaveableTypeDefiner(int) + +

+ +
+
+ +
+
protected ButterLibSaveableTypeDefiner(int saveBaseId)
+
+ +

Parameters

+
+
saveBaseId int
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.ButterLibSubModule.html b/api/Bannerlord.ButterLib.ButterLibSubModule.html new file mode 100644 index 00000000..57cb2c7e --- /dev/null +++ b/api/Bannerlord.ButterLib.ButterLibSubModule.html @@ -0,0 +1,559 @@ + + + + + Class ButterLibSubModule + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class ButterLibSubModule + +

+ +
+
Namespace
Bannerlord.ButterLib
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

Main SubModule. Performs initialization of all 3 stages.

+
+
+ +
+
public sealed class ButterLibSubModule : MBSubModuleBase
+
+ + + + +
+
Inheritance
+
+ + +
ButterLibSubModule
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + +
+ +
+
Extension Methods
+
+ + + + + +
+ + + + + +

Constructors +

+ + + + +

+ ButterLibSubModule() + +

+ +
+
+ +
+
public ButterLibSubModule()
+
+ + + + + + + + + + + + + +

Properties +

+ + + + +

+ CanBeConfigured + +

+ +
+
+ +
+
public static bool CanBeConfigured { get; }
+
+ + + + + +

Property Value

+
+
bool
+
+
+ + + + + + + + + + +

+ Instance + +

+ +
+
+ +
+
public static ButterLibSubModule? Instance { get; set; }
+
+ + + + + +

Property Value

+
+
ButterLibSubModule
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ ConfigureBeforeInitialization(Action<IServiceCollection>) + +

+ +

The only way to inject your stuff before ButterLib will start it's initialization +Can be used to inject a custom ButterLibOptions provider, but it needs to load before ButterLib

+
+
+ +
+
public static void ConfigureBeforeInitialization(Action<IServiceCollection> action)
+
+ +

Parameters

+
+
action Action<IServiceCollection>
+
+
+ + + + + + + + + + + + + + +

+ OnApplicationTick(float) + +

+ +
+
+ +
+
protected override void OnApplicationTick(float dt)
+
+ +

Parameters

+
+
dt float
+
+
+ + + + + + + + + + + + + + +

+ OnBeforeInitialModuleScreenSetAsRoot() + +

+ +
+
+ +
+
protected override void OnBeforeInitialModuleScreenSetAsRoot()
+
+ + + + + + + + + + + + + + + +

+ OnGameEnd(Game) + +

+ +
+
+ +
+
public override void OnGameEnd(Game game)
+
+ +

Parameters

+
+
game Game
+
+
+ + + + + + + + + + + + + + +

+ OnGameStart(Game, IGameStarter) + +

+ +
+
+ +
+
protected override void OnGameStart(Game game, IGameStarter gameStarterObject)
+
+ +

Parameters

+
+
game Game
+
+
gameStarterObject IGameStarter
+
+
+ + + + + + + + + + + + + + +

+ OnServiceRegistration() + +

+ +
+
+ +
+
public void OnServiceRegistration()
+
+ + + + + + + + + + + + + + + +

+ OnSubModuleLoad() + +

+ +
+
+ +
+
protected override void OnSubModuleLoad()
+
+ + + + + + + + + + + + + + + +

+ OnSubModuleUnloaded() + +

+ +
+
+ +
+
protected override void OnSubModuleUnloaded()
+
+ + + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.Common.Extensions.ApplicationVersionExtensions.html b/api/Bannerlord.ButterLib.Common.Extensions.ApplicationVersionExtensions.html new file mode 100644 index 00000000..fc76e087 --- /dev/null +++ b/api/Bannerlord.ButterLib.Common.Extensions.ApplicationVersionExtensions.html @@ -0,0 +1,261 @@ + + + + + Class ApplicationVersionExtensions + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class ApplicationVersionExtensions + +

+ +
+
Namespace
Bannerlord.ButterLib.Common.Extensions
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

An extension class for the ApplicationVersion.

+
+
+ +
+
public static class ApplicationVersionExtensions
+
+ + + + +
+
Inheritance
+
+ +
ApplicationVersionExtensions
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ IsSameWithRevision(ApplicationVersion, ApplicationVersion) + +

+ +

Determines whether two source ApplicationVersion structs +are equal up to the revisions.

+
+
+ +
+
public static bool IsSameWithRevision(this ApplicationVersion @this, ApplicationVersion other)
+
+ +

Parameters

+
+
this ApplicationVersion
+

An ApplicationVersion struct to compare to second.

+
+
other ApplicationVersion
+

An ApplicationVersion struct to compare to the first.

+
+
+ +

Returns

+
+
bool
+

true if corresponding elements of two source ApplicationVersion structs +are equal according to the default equality comparer for their type; otherwise, false.

+
+
+ + + + + + + + + + + + + +

+ IsSameWithoutRevision(ApplicationVersion, ApplicationVersion) + +

+ +

Determines whether two source ApplicationVersion structs +are equal, disregarding revisions.

+
+
+ +
+
public static bool IsSameWithoutRevision(this ApplicationVersion @this, ApplicationVersion other)
+
+ +

Parameters

+
+
this ApplicationVersion
+

An ApplicationVersion struct to compare to second.

+
+
other ApplicationVersion
+

An ApplicationVersion struct to compare to the first.

+
+
+ +

Returns

+
+
bool
+

true if corresponding elements of two source ApplicationVersion structs +are equal according to the default equality comparer for their type; otherwise, false. +Differences in the revisions between two source ApplicationVersion structs do not affect the result.

+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.Common.Extensions.CampaignExtensions.html b/api/Bannerlord.ButterLib.Common.Extensions.CampaignExtensions.html new file mode 100644 index 00000000..4347f42b --- /dev/null +++ b/api/Bannerlord.ButterLib.Common.Extensions.CampaignExtensions.html @@ -0,0 +1,305 @@ + + + + + Class CampaignExtensions + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class CampaignExtensions + +

+ +
+
Namespace
Bannerlord.ButterLib.Common.Extensions
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

Helper extension of the Campaign class +returning additional information, provided by the ButterLib.

+
+
+ +
+
public static class CampaignExtensions
+
+ + + + +
+
Inheritance
+
+ +
CampaignExtensions
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + +

Remarks

+

Contains easy accessible getters for the current CampaignId

+
+ + +

Methods +

+ + + + +

+ GetDefaultClanDistanceMatrix(Campaign) + +

+ +

Gets the DistanceMatrix<T> +calculated by default for the Clan object type.

+
+
+ +
+
public static DistanceMatrix<Clan>? GetDefaultClanDistanceMatrix(this Campaign campaign)
+
+ +

Parameters

+
+
campaign Campaign
+

The campaign

+
+
+ +

Returns

+
+
DistanceMatrix<Clan>
+

Distance matrix for all the active clans of the current campaign, +or null if the campaign has not started yet.

+
+
+ + + + + + + +

Remarks

+

Calculation is based on the average distance between clans fiefs weighted by the fief type.

+
+ + + + + + +

+ GetDefaultKingdomDistanceMatrix(Campaign) + +

+ +

Gets the DistanceMatrix<T> +calculated by default for the Kingdom object type.

+
+
+ +
+
public static DistanceMatrix<Kingdom>? GetDefaultKingdomDistanceMatrix(this Campaign campaign)
+
+ +

Parameters

+
+
campaign Campaign
+

The campaign

+
+
+ +

Returns

+
+
DistanceMatrix<Kingdom>
+

Distance matrix for all the active kingdoms of the current campaign, +or null if the campaign has not started yet.

+
+
+ + + + + + + +

Remarks

+

Calculation is based on the average distance between kingdoms fiefs weighted by the fief type.

+
+ + + + + + +

+ GetDefaultSettlementDistanceMatrix(Campaign) + +

+ +

Gets the DistanceMatrix<T> +calculated by default for the Settlement object type.

+
+
+ +
+
public static DistanceMatrix<Settlement>? GetDefaultSettlementDistanceMatrix(this Campaign campaign)
+
+ +

Parameters

+
+
campaign Campaign
+

The campaign

+
+
+ +

Returns

+
+
DistanceMatrix<Settlement>
+

Distance matrix for all the towns, castles and villages of the current campaign, +or null if the campaign has not started yet.

+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.Common.Extensions.DependencyInjectionExtensions.html b/api/Bannerlord.ButterLib.Common.Extensions.DependencyInjectionExtensions.html new file mode 100644 index 00000000..f3517c57 --- /dev/null +++ b/api/Bannerlord.ButterLib.Common.Extensions.DependencyInjectionExtensions.html @@ -0,0 +1,555 @@ + + + + + Class DependencyInjectionExtensions + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class DependencyInjectionExtensions + +

+ +
+
Namespace
Bannerlord.ButterLib.Common.Extensions
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public static class DependencyInjectionExtensions
+
+ + + + +
+
Inheritance
+
+ +
DependencyInjectionExtensions
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ AddSerilogLoggerProvider(MBSubModuleBase, string, IEnumerable<Assembly>) + +

+ +

Don't forget to get a new ILogger after adding a new ILoggerProvider

+
+
+ +
+
public static IServiceCollection AddSerilogLoggerProvider(this MBSubModuleBase subModule, string filename, IEnumerable<Assembly> filter)
+
+ +

Parameters

+
+
subModule MBSubModuleBase
+
+
filename string
+
+
filter IEnumerable<Assembly>
+
+
+ +

Returns

+
+
IServiceCollection
+
+
+ + + + + + + + + + + + + +

+ AddSerilogLoggerProvider(MBSubModuleBase, string, IEnumerable<string>?, Action<LoggerConfiguration>?) + +

+ +

Don't forget to get a new ILogger after adding a new ILoggerProvider

+
+
+ +
+
public static IServiceCollection AddSerilogLoggerProvider(this MBSubModuleBase subModule, string filename, IEnumerable<string>? filter = null, Action<LoggerConfiguration>? configure = null)
+
+ +

Parameters

+
+
subModule MBSubModuleBase
+
+
filename string
+
+
filter IEnumerable<string>
+
+
configure Action<LoggerConfiguration>
+
+
+ +

Returns

+
+
IServiceCollection
+
+
+ + + + + + + + + + + + + +

+ AddSubSystem<TImplementation>(IServiceCollection) + +

+ +
+
+ +
+
public static IServiceCollection AddSubSystem<TImplementation>(this IServiceCollection services) where TImplementation : class, ISubSystem, new()
+
+ +

Parameters

+
+
services IServiceCollection
+
+
+ +

Returns

+
+
IServiceCollection
+
+
+ +

Type Parameters

+
+
TImplementation
+
+
+ + + + + + + + + + + + +

+ FromSources(IEnumerable<string>) + +

+ +
+
+ +
+
public static Func<LogEvent, bool> FromSources(IEnumerable<string> sources)
+
+ +

Parameters

+
+
sources IEnumerable<string>
+
+
+ +

Returns

+
+
Func<LogEvent, bool>
+
+
+ + + + + + + + + + + + + +

+ GetServiceProvider(CampaignBehaviorBase) + +

+ +

For Stage 3.

+
+
+ +
+
public static IServiceProvider? GetServiceProvider(this CampaignBehaviorBase _)
+
+ +

Parameters

+
+
_ CampaignBehaviorBase
+
+
+ +

Returns

+
+
IServiceProvider
+
+
+ + + + + + + + + + + + + +

+ GetServiceProvider(Game) + +

+ +

For Stage 3.

+
+
+ +
+
public static IServiceProvider? GetServiceProvider(this Game _)
+
+ +

Parameters

+
+
_ Game
+
+
+ +

Returns

+
+
IServiceProvider
+
+
+ + + + + + + + + + + + + +

+ GetServiceProvider(MBSubModuleBase) + +

+ +

For Stage 3.

+
+
+ +
+
public static IServiceProvider? GetServiceProvider(this MBSubModuleBase _)
+
+ +

Parameters

+
+
_ MBSubModuleBase
+
+
+ +

Returns

+
+
IServiceProvider
+
+
+ + + + + + + + + + + + + +

+ GetServices(MBSubModuleBase) + +

+ +

For Stage 2.

+
+
+ +
+
public static IServiceCollection? GetServices(this MBSubModuleBase _)
+
+ +

Parameters

+
+
_ MBSubModuleBase
+
+
+ +

Returns

+
+
IServiceCollection
+
+
+ + + + + + + + + + + + + +

+ GetSubSystem(IServiceProvider, string) + +

+ +
+
+ +
+
public static ISubSystem? GetSubSystem(this IServiceProvider sp, string id)
+
+ +

Parameters

+
+
sp IServiceProvider
+
+
id string
+
+
+ +

Returns

+
+
ISubSystem
+
+
+ + + + + + + + + + + + + +

+ GetTempServiceProvider(MBSubModuleBase) + +

+ +

For Stage 2.

+
+
+ +
+
public static IServiceProvider? GetTempServiceProvider(this MBSubModuleBase _)
+
+ +

Parameters

+
+
_ MBSubModuleBase
+
+
+ +

Returns

+
+
IServiceProvider
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.Common.Extensions.MbEventExtensions.html b/api/Bannerlord.ButterLib.Common.Extensions.MbEventExtensions.html new file mode 100644 index 00000000..2086d328 --- /dev/null +++ b/api/Bannerlord.ButterLib.Common.Extensions.MbEventExtensions.html @@ -0,0 +1,496 @@ + + + + + Class MbEventExtensions + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class MbEventExtensions + +

+ +
+
Namespace
Bannerlord.ButterLib.Common.Extensions
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

Extension class of the TaleWorlds.CampaignSystem.MbEvent class and its generic variations.

+
+
+ +
+
public static class MbEventExtensions
+
+ + + + +
+
Inheritance
+
+ +
MbEventExtensions
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + +

Remarks

+

For some reason TW hid "Invoke" methods of the MbEvent classes with number of generic arguments greater than one. +This extension class corrects said misconception.

+
+ + +

Methods +

+ + + + +

+ Invoke<T1, T2>(MbEvent<T1, T2>, T1, T2) + +

+ +

Invokes all the listeners to the specified TaleWorlds.CampaignSystem.MbEvent<T1, T2>.

+
+
+ +
+
public static void Invoke<T1, T2>(this MbEvent<T1, T2> instance, T1 arg1, T2 arg2)
+
+ +

Parameters

+
+
instance MbEvent<T1, T2>
+

An instance of TaleWorlds.CampaignSystem.MbEvent<T1, T2> to call "Invoke" against.

+
+
arg1 T1
+

Fist argument of the event.

+
+
arg2 T2
+

Second argument of the event.

+
+
+ + +

Type Parameters

+
+
T1
+

The type of the first event argument.

+
+
T2
+

The type of the second event argument.

+
+
+ + + + + + +

Remarks

+

This is accomplished by calling a delegate on the private method called "Invoke" of the TaleWorlds.CampaignSystem.MbEvent<T1, T2>, +which guarantees fast and native execution.

+
+ + + + + + +

+ Invoke<T1, T2, T3>(MbEvent<T1, T2, T3>, T1, T2, T3) + +

+ +

Invokes all the listeners to the specified TaleWorlds.CampaignSystem.MbEvent<T1, T2, T3>.

+
+
+ +
+
public static void Invoke<T1, T2, T3>(this MbEvent<T1, T2, T3> instance, T1 arg1, T2 arg2, T3 arg3)
+
+ +

Parameters

+
+
instance MbEvent<T1, T2, T3>
+

An instance of TaleWorlds.CampaignSystem.MbEvent<T1, T2, T3> to call "Invoke" against.

+
+
arg1 T1
+

Fist argument of the event.

+
+
arg2 T2
+

Second argument of the event.

+
+
arg3 T3
+

Third argument of the event.

+
+
+ + +

Type Parameters

+
+
T1
+

The type of the first event argument.

+
+
T2
+

The type of the second event argument.

+
+
T3
+

The type of the third event argument.

+
+
+ + + + + + +

Remarks

+

This is accomplished by calling a delegate on the private method called "Invoke" of the TaleWorlds.CampaignSystem.MbEvent<T1, T2, T3>, +which guarantees fast and native execution.

+
+ + + + + + +

+ Invoke<T1, T2, T3, T4>(MbEvent<T1, T2, T3, T4>, T1, T2, T3, T4) + +

+ +

Invokes all the listeners to the specified TaleWorlds.CampaignSystem.MbEvent<T1, T2, T3, T4>.

+
+
+ +
+
public static void Invoke<T1, T2, T3, T4>(this MbEvent<T1, T2, T3, T4> instance, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
+
+ +

Parameters

+
+
instance MbEvent<T1, T2, T3, T4>
+

An instance of TaleWorlds.CampaignSystem.MbEvent<T1, T2, T3, T4> to call "Invoke" against.

+
+
arg1 T1
+

Fist argument of the event.

+
+
arg2 T2
+

Second argument of the event.

+
+
arg3 T3
+

Third argument of the event.

+
+
arg4 T4
+

Fourth argument of the event.

+
+
+ + +

Type Parameters

+
+
T1
+

The type of the first event argument.

+
+
T2
+

The type of the second event argument.

+
+
T3
+

The type of the third event argument.

+
+
T4
+

The type of the fourth event argument.

+
+
+ + + + + + +

Remarks

+

This is accomplished by calling a delegate on the private method called "Invoke" of the TaleWorlds.CampaignSystem.MbEvent<T1, T2, T3, T4>, +which guarantees fast and native execution.

+
+ + + + + + +

+ Invoke<T1, T2, T3, T4, T5>(MbEvent<T1, T2, T3, T4, T5>, T1, T2, T3, T4, T5) + +

+ +

Invokes all the listeners to the specified TaleWorlds.CampaignSystem.MbEvent<T1, T2, T3, T4, T5>.

+
+
+ +
+
public static void Invoke<T1, T2, T3, T4, T5>(this MbEvent<T1, T2, T3, T4, T5> instance, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
+
+ +

Parameters

+
+
instance MbEvent<T1, T2, T3, T4, T5>
+

An instance of TaleWorlds.CampaignSystem.MbEvent<T1, T2, T3, T4, T5> to call "Invoke" against.

+
+
arg1 T1
+

Fist argument of the event.

+
+
arg2 T2
+

Second argument of the event.

+
+
arg3 T3
+

Third argument of the event.

+
+
arg4 T4
+

Fourth argument of the event.

+
+
arg5 T5
+

Fifth argument of the event.

+
+
+ + +

Type Parameters

+
+
T1
+

The type of the first event argument.

+
+
T2
+

The type of the second event argument.

+
+
T3
+

The type of the third event argument.

+
+
T4
+

The type of the fourth event argument.

+
+
T5
+

The type of the fifth event argument.

+
+
+ + + + + + +

Remarks

+

This is accomplished by calling a delegate on the private method called "Invoke" of the TaleWorlds.CampaignSystem.MbEvent<T1, T2, T3, T4, T5>, +which guarantees fast and native execution.

+
+ + + + + + +

+ Invoke<T1, T2, T3, T4, T5, T6>(MbEvent<T1, T2, T3, T4, T5, T6>, T1, T2, T3, T4, T5, T6) + +

+ +

Invokes all the listeners to the specified TaleWorlds.CampaignSystem.MbEvent<T1, T2, T3, T4, T5, T6>.

+
+
+ +
+
public static void Invoke<T1, T2, T3, T4, T5, T6>(this MbEvent<T1, T2, T3, T4, T5, T6> instance, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6)
+
+ +

Parameters

+
+
instance MbEvent<T1, T2, T3, T4, T5, T6>
+

An instance of TaleWorlds.CampaignSystem.MbEvent<T1, T2, T3, T4, T5, T6> to call "Invoke" against.

+
+
arg1 T1
+

Fist argument of the event.

+
+
arg2 T2
+

Second argument of the event.

+
+
arg3 T3
+

Third argument of the event.

+
+
arg4 T4
+

Fourth argument of the event.

+
+
arg5 T5
+

Fifth argument of the event.

+
+
arg6 T6
+

Sixth argument of the event.

+
+
+ + +

Type Parameters

+
+
T1
+

The type of the first event argument.

+
+
T2
+

The type of the second event argument.

+
+
T3
+

The type of the third event argument.

+
+
T4
+

The type of the fourth event argument.

+
+
T5
+

The type of the fifth event argument.

+
+
T6
+

The type of the sixth event argument.

+
+
+ + + + + + +

Remarks

+

This is accomplished by calling a delegate on the private method called "Invoke" of the TaleWorlds.CampaignSystem.MbEvent<T1, T2, T3, T4, T5, T6>, +which guarantees fast and native execution.

+
+ + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.Common.Extensions.html b/api/Bannerlord.ButterLib.Common.Extensions.html new file mode 100644 index 00000000..0a2e4cf8 --- /dev/null +++ b/api/Bannerlord.ButterLib.Common.Extensions.html @@ -0,0 +1,132 @@ + + + + + Namespace Bannerlord.ButterLib.Common.Extensions + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ + + +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.Common.Helpers.ApplicationVersionComparer.html b/api/Bannerlord.ButterLib.Common.Helpers.ApplicationVersionComparer.html new file mode 100644 index 00000000..6b7189f4 --- /dev/null +++ b/api/Bannerlord.ButterLib.Common.Helpers.ApplicationVersionComparer.html @@ -0,0 +1,215 @@ + + + + + Class ApplicationVersionComparer + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class ApplicationVersionComparer + +

+ +
+
Namespace
Bannerlord.ButterLib.Common.Helpers
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public class ApplicationVersionComparer : IComparer<ApplicationVersion>
+
+ + + + +
+
Inheritance
+
+ +
ApplicationVersionComparer
+
+
+ +
+
Implements
+
+ +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ Compare(ApplicationVersion, ApplicationVersion) + +

+ +
+
+ +
+
public int Compare(ApplicationVersion x, ApplicationVersion y)
+
+ +

Parameters

+
+
x ApplicationVersion
+
+
y ApplicationVersion
+
+
+ +

Returns

+
+
int
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.Common.Helpers.ElegantPairHelper.html b/api/Bannerlord.ButterLib.Common.Helpers.ElegantPairHelper.html new file mode 100644 index 00000000..36db3bd8 --- /dev/null +++ b/api/Bannerlord.ButterLib.Common.Helpers.ElegantPairHelper.html @@ -0,0 +1,587 @@ + + + + + Class ElegantPairHelper + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class ElegantPairHelper + +

+ +
+
Namespace
Bannerlord.ButterLib.Common.Helpers
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

Helper class that implements the pairing function created by Matthew Szudzik.

+
+
+ +
+
public static class ElegantPairHelper
+
+ + + + +
+
Inheritance
+
+ +
ElegantPairHelper
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + +

Remarks

+

A pairing function on a set A associates each pair of members from A with a single member of B, +so that any two distinct pairs of members from A are associated with two distinct members of B.

+
+ + +

Methods +

+ + + + +

+ Pair(short, short) + +

+ +

Pairs two 16-bit signed integers based on their position.

+
+
+ +
+
public static int Pair(short a, short b)
+
+ +

Parameters

+
+
a short
+

First 16-bit signed integer in a pair.

+
+
b short
+

Second 16-bit signed integer in a pair.

+
+
+ +

Returns

+
+
int
+

A 32-bit signed integer representing the initial pair.

+
+
+ + + + + + + + + + + + + +

+ Pair(int, int) + +

+ +

Pairs two 32-bit signed integers based on their position.

+
+
+ +
+
public static long Pair(int a, int b)
+
+ +

Parameters

+
+
a int
+

First 32-bit signed integer in a pair.

+
+
b int
+

Second 32-bit signed integer in a pair.

+
+
+ +

Returns

+
+
long
+

A 64-bit signed integer representing the initial pair.

+
+
+ + + + + + + + + + + + + +

+ Pair(ushort, ushort) + +

+ +

Pairs two 16-bit unsigned integers based on their position.

+
+
+ +
+
public static uint Pair(ushort a, ushort b)
+
+ +

Parameters

+
+
a ushort
+

First 16-bit unsigned integer in a pair.

+
+
b ushort
+

Second 16-bit unsigned integer in a pair.

+
+
+ +

Returns

+
+
uint
+

A 32-bit unsigned integer representing the initial pair.

+
+
+ + + + + + + + + + + + + +

+ Pair(uint, uint) + +

+ +

Pairs two 32-bit unsigned integers based on their position.

+
+
+ +
+
public static ulong Pair(uint a, uint b)
+
+ +

Parameters

+
+
a uint
+

First 32-bit unsigned integer in a pair.

+
+
b uint
+

Second 32-bit unsigned integer in a pair.

+
+
+ +

Returns

+
+
ulong
+

A 64-bit unsigned integer representing the initial pair.

+
+
+ + + + + + + + + + + + + +

+ Pair(MBGUID, MBGUID) + +

+ +

Pairs two MBGUID objects based on their position.

+
+
+ +
+
public static ulong Pair(MBGUID a, MBGUID b)
+
+ +

Parameters

+
+
a MBGUID
+

First MBGUID object in a pair.

+
+
b MBGUID
+

Second MBGUID object in a pair.

+
+
+ +

Returns

+
+
ulong
+

A 64-bit unsigned integer representing the initial pair.

+
+
+ + + + + + + + + + + + + +

+ UnPair(int) + +

+ +

Unpairs an 32-bit signed integer representing the pair into two 16-bit signed integers with regard to their initial positions before pairing.

+
+
+ +
+
public static (short A, short B) UnPair(int pairValue)
+
+ +

Parameters

+
+
pairValue int
+

A 32-bit signed integer representing the pair.

+
+
+ +

Returns

+
+
(short A, short B)
+

A tuple of 16-bit signed integers that were paired.

+
+
+ + + + + + + +

Remarks

+

Due to some imperfections of the negative pairing algorithm, this method could be rather slow.

+
+ + + + + + +

+ UnPair(long) + +

+ +

Unpairs an 64-bit signed integer representing the pair into two 32-bit signed integers with regard to their initial positions before pairing.

+
+
+ +
+
public static (int A, int B) UnPair(long pairValue)
+
+ +

Parameters

+
+
pairValue long
+

A 64-bit signed integer representing the pair.

+
+
+ +

Returns

+
+
(int A, int B)
+

A tuple of 32-bit signed integers that were paired.

+
+
+ + + + + + + +

Remarks

+

Due to some imperfections of the negative pairing algorithm, this method could be rather slow.

+
+ + + + + + +

+ UnPair(uint) + +

+ +

Unpairs an 32-bit unsigned integer representing the pair into two 16-bit unsigned integers with regard to their initial positions before pairing.

+
+
+ +
+
public static (ushort A, ushort B) UnPair(uint pairValue)
+
+ +

Parameters

+
+
pairValue uint
+

A 32-bit unsigned integer representing the pair.

+
+
+ +

Returns

+
+
(ushort A, ushort B)
+

A tuple of 16-bit unsigned integers that were paired.

+
+
+ + + + + + + + + + + + + +

+ UnPair(ulong) + +

+ +

Unpairs an 64-bit unsigned integer representing the pair into two 32-bit unsigned integers with regard to their initial positions before pairing.

+
+
+ +
+
public static (uint A, uint B) UnPair(ulong pairValue)
+
+ +

Parameters

+
+
pairValue ulong
+

A 64-bit unsigned integer representing the pair.

+
+
+ +

Returns

+
+
(uint A, uint B)
+

A tuple of 32-bit unsigned integers that were paired.

+
+
+ + + + + + + + + + + + + +

+ UnPairMBGUID(ulong) + +

+ +

Unpairs an 64-bit unsigned integer representing the pair into two MBGUID objects with regard to their initial positions before pairing.

+
+
+ +
+
public static (MBGUID A, MBGUID B) UnPairMBGUID(ulong pairValue)
+
+ +

Parameters

+
+
pairValue ulong
+

A 64-bit unsigned integer representing the pair.

+
+
+ +

Returns

+
+
(MBGUID A, MBGUID B)
+

A tuple of MBGUID objects that were paired.

+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.PluralForm.html b/api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.PluralForm.html new file mode 100644 index 00000000..2eab0f4f --- /dev/null +++ b/api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.PluralForm.html @@ -0,0 +1,146 @@ + + + + + Enum LocalizationHelper.PluralForm + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + + +

+ Enum LocalizationHelper.PluralForm + +

+ +
+
Namespace
Bannerlord.ButterLib.Common.Helpers
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public enum LocalizationHelper.PluralForm : byte
+
+ + + + + + + + + +

Fields +

+
+
Plural = 3
+
+
Singular = 0
+
+
SpecificPlural = 2
+
+
SpecificSingular = 1
+
+
+ + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.RecursiveCaller.html b/api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.RecursiveCaller.html new file mode 100644 index 00000000..386ea8d3 --- /dev/null +++ b/api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.RecursiveCaller.html @@ -0,0 +1,148 @@ + + + + + Enum LocalizationHelper.RecursiveCaller + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + + +

+ Enum LocalizationHelper.RecursiveCaller + +

+ +
+
Namespace
Bannerlord.ButterLib.Common.Helpers
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public enum LocalizationHelper.RecursiveCaller : byte
+
+ + + + + + + + + +

Fields +

+
+
Clan = 3
+
+
Hero = 1
+
+
Kingdom = 4
+
+
None = 0
+
+
Settlement = 2
+
+
+ + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.html b/api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.html new file mode 100644 index 00000000..d33bac96 --- /dev/null +++ b/api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.html @@ -0,0 +1,675 @@ + + + + + Class LocalizationHelper + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class LocalizationHelper + +

+ +
+
Namespace
Bannerlord.ButterLib.Common.Helpers
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

Helper class used to store numeric variables or complex entities in the TextObject.

+
+
+ +
+
public static class LocalizationHelper
+
+ + + + +
+
Inheritance
+
+ +
LocalizationHelper
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Fields +

+ + + +

+ LIST_END_TAG + +

+ +

A string tag used in SetListVariable(TextObject?, string, List<string>, string, bool) method. +Will contain the last element of the list.

+
+
+ +
+
public const string LIST_END_TAG = "END"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ LIST_HAS_ITEMS_TAG + +

+ +

A string tag used in SetListVariable(TextObject?, string, List<string>, string, bool) method. +Indicates that list has at least 1 element.

+
+
+ +
+
public const string LIST_HAS_ITEMS_TAG = "ANY"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ LIST_HAS_MULTIPLE_ITEMS_TAG + +

+ +

A string tag used in SetListVariable(TextObject?, string, List<string>, string, bool) method. +Indicates that list has more than 1 elements.

+
+
+ +
+
public const string LIST_HAS_MULTIPLE_ITEMS_TAG = "IS_PLURAL"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ LIST_START_TAG + +

+ +

A string tag used in SetListVariable(TextObject?, string, List<string>, string, bool) method. +Will contain all the elements of the list except the last one, separated by a comma. +For empty lists or lists with a single element it will contain an empty string.

+
+
+ +
+
public const string LIST_START_TAG = "START"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ PLURAL_FORM_TAG + +

+ +

A string tag that corresponds with Plural +and could be stored as an attribute of the numeric variable by the "SetNumericVariable" method.

+
+
+ +
+
public const string PLURAL_FORM_TAG = "PLURAL_FORM"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ SPECIFIC_PLURAL_FORM_TAG + +

+ +

A string tag that corresponds with SpecificPlural +and could be stored as an attribute of the numeric variable by the "SetNumericVariable" method.

+
+
+ +
+
public const string SPECIFIC_PLURAL_FORM_TAG = "SPECIFIC_PLURAL_FORM"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ SPECIFIC_SINGULAR_FORM_TAG + +

+ +

A string tag that corresponds with SpecificSingular +and could be stored as an attribute of the numeric variable by the "SetNumericVariable" method.

+
+
+ +
+
public const string SPECIFIC_SINGULAR_FORM_TAG = "SPECIFIC_SINGULAR_FORM"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + +

Methods +

+ + + + +

+ GetPluralForm(int) + +

+ +

Gets which LocalizationHelper.PluralForm should be used with the given number according to the grammar rules of the game language.

+
+
+ +
+
public static LocalizationHelper.PluralForm GetPluralForm(int number)
+
+ +

Parameters

+
+
number int
+

An integer number to get appropriate LocalizationHelper.PluralForm for.

+
+
+ +

Returns

+
+
LocalizationHelper.PluralForm
+

The appropriate LocalizationHelper.PluralForm that should be used with the given number in accordance with the grammar rules of the game language.

+
+
+ + + + + + + + + + + + + +

+ GetPluralForm(float) + +

+ +

Gets which LocalizationHelper.PluralForm should be used with the given number according to the grammar rules of the game language.

+
+
+ +
+
public static LocalizationHelper.PluralForm GetPluralForm(float number)
+
+ +

Parameters

+
+
number float
+

A floating-point number to get appropriate LocalizationHelper.PluralForm for.

+
+
+ +

Returns

+
+
LocalizationHelper.PluralForm
+

The appropriate LocalizationHelper.PluralForm that should be used with the given number in accordance with the grammar rules of the game language.

+
+
+ + + + + + + + + + + + + +

+ SetEntityProperties<T>(TextObject?, string, T?, bool, RecursiveCaller) + +

+ +

Sets complex entity into specified text variable, along with additional information on other related entities.

+
+
+ +
+
public static void SetEntityProperties<T>(TextObject? parentTextObject, string tag, T? entity, bool addLeaderInfo = false, LocalizationHelper.RecursiveCaller recursiveCaller = RecursiveCaller.None) where T : class
+
+ +

Parameters

+
+
parentTextObject TextObject
+

The TextObject to store entity information into. +Null means that information will be stored into MBTextManager.

+
+
tag string
+

A string tag that will be used to store information about entity and also as a prefix for tags that will store other relevant entities.

+
+
entity T
+

An instance of the entity to be stored.

+
+
addLeaderInfo bool
+

An optional argument, specifying if information about leaders should be also stored, when applicable.

+
+
recursiveCaller LocalizationHelper.RecursiveCaller
+

An optional argument, specifying if method is called from itself, adding information on some related entity.

+
+
+ + +

Type Parameters

+
+
T
+

The type of the entity to be stored.

+
+
+ + + + + + + + + + + + +

+ SetListVariable(TextObject?, string, List<string>, string, bool) + +

+ +

Sets a variable containing a list of strings to the specified tag so that all elements are correctly listed according to the grammar rules of the game language.

+
+
+ +
+
public static void SetListVariable(TextObject? textObject, string tag, List<string> valuesList, string separator = ", ", bool useDistinctValues = true)
+
+ +

Parameters

+
+
textObject TextObject
+

The TextObject to set a List<T> variable into. +Null means that information will be stored into MBTextManager.

+
+
tag string
+

A string tag that will be used to store information about the strings in the provided list.

+
+
valuesList List<string>
+

A set of strings that has to be listed.

+
+
separator string
+

An optional argument specifying the string separator to be used for the listing.

+
+
useDistinctValues bool
+

An optional argument specifying whether only unique strings should be listed.

+
+
+ + + + + + + +

Examples

+
var lst = new [] { "First Entry", "Second Entry", "Third Entry", "Second Entry" }.ToList();
+var txt = new TextObject("Here is the built-in text: '{TEST_TAG}'. Here is custom text: '{TEST_TAG.START}{?TEST_TAG.IS_PLURAL} and last but not least the {?}{\\?}{TEST_TAG.END}'");
+LocalizationHelper.SetListVariable(txt, "TEST_TAG", lst);
+InformationManager.DisplayMessage(new InformationMessage(txt!.ToString(), Color.FromUint(0x00F16D26)));
+ + +

Remarks

+

The tag parameter will contain a TextObject with both the ready-to-use result of the built-in concatenation of the provided list of strings +and all the necessary attributes to create custom concatenations. +Please note that built-in concatenation uses the "{=JLkq0ZkOSI}{START}{?IS_PLURAL} and {?}{\?}{END}" string from the "..\Bannerlord.ButterLib\ModuleData\Languages\EN\sta_strings.xml". +If you are planning to use it explicitly, it is advised to duplicate it in your own localization xml files for the sake of clarity.

+
+ + + + + + +

+ SetNumericVariable(TextObject?, string, int, string?) + +

+ +

Sets a numeric variable along with the appropriate LocalizationHelper.PluralForm tag in accordance with the grammar rules of the game language.

+
+
+ +
+
public static void SetNumericVariable(TextObject? textObject, string tag, int variableValue, string? format = null)
+
+ +

Parameters

+
+
textObject TextObject
+

The TextObject to set a numeric variable into. +Null means that information will be stored into MBTextManager.

+
+
tag string
+

A string tag that will be used to store information about the numeric variable.

+
+
variableValue int
+

An integer number to be set.

+
+
format string
+

An optional argument, specifying string format to be used with the number.

+
+
+ + + + + + + + + + + + + + +

+ SetNumericVariable(TextObject?, string, float, string?) + +

+ +

Sets a numeric variable along with the appropriate LocalizationHelper.PluralForm tag in accordance with the grammar rules of the game language.

+
+
+ +
+
public static void SetNumericVariable(TextObject? textObject, string tag, float variableValue, string? format = null)
+
+ +

Parameters

+
+
textObject TextObject
+

The TextObject to set a numeric variable into. +Null means that information will be stored into MBTextManager.

+
+
tag string
+

A string tag that will be used to store information about the numeric variable.

+
+
variableValue float
+

An floating-point number to be set.

+
+
format string
+

An optional argument, specifying string format to be used with the number.

+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.Common.Helpers.html b/api/Bannerlord.ButterLib.Common.Helpers.html new file mode 100644 index 00000000..05c8ee02 --- /dev/null +++ b/api/Bannerlord.ButterLib.Common.Helpers.html @@ -0,0 +1,136 @@ + + + + + Namespace Bannerlord.ButterLib.Common.Helpers + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ + + +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.DelayedSubModule.DelayedSubModuleManager.html b/api/Bannerlord.ButterLib.DelayedSubModule.DelayedSubModuleManager.html new file mode 100644 index 00000000..d5b48427 --- /dev/null +++ b/api/Bannerlord.ButterLib.DelayedSubModule.DelayedSubModuleManager.html @@ -0,0 +1,458 @@ + + + + + Class DelayedSubModuleManager + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class DelayedSubModuleManager + +

+ +
+
Namespace
Bannerlord.ButterLib.DelayedSubModule
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

Allows you to inject your own code into the load / unload sequence +of other modules without specifying them directly as a dependency +in 'SubModule.xml'.

+
+
+ +
+
public static class DelayedSubModuleManager
+
+ + + + +
+
Inheritance
+
+ +
DelayedSubModuleManager
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + +

Remarks

+

Supported methods are: 'OnSubModuleLoad', 'OnSubModuleUnloaded', +'OnBeforeInitialModuleScreenSetAsRoot', 'OnGameStart', 'OnGameEnd'. +The basic loading order still applies, so while you can technically +subscribe to the 'OnSubModuleLoad' methods of the already loaded modules, +it won't affect them as they will be executed before. The delegate passed +will still be executed.

+
+ + +

Methods +

+ + + + +

+ Register(Type) + +

+ +

Registers a module to be a target of the DelayedSubModuleManager.

+
+
+ +
+
public static void Register(Type subModule)
+
+ +

Parameters

+
+
subModule Type
+

The exact type of the SubModule to be registered.

+
+
+ + + + + + + + + + + + + + +

+ Register(Type, int, string[]?, string[]?) + +

+ +

Registers a module to be a target of the DelayedSubModuleManager Harmony patching.

+
+
+ +
+
public static void Register(Type subModule, int priority, string[]? before, string[]? after)
+
+ +

Parameters

+
+
subModule Type
+

The exact type of the SubModule to be patched.

+
+
priority int
+

The HarmonyLib.HarmonyPriority that would be assigned to the patches that would be made.

+
+
before string[]
+

A list of HarmonyLib.Harmony.Ids that should come after the patches that would be made.

+
+
after string[]
+

A list of HarmonyLib.Harmony.Ids that should come before the patches that would be made.

+
+
+ + + + + + + + + + + + + + +

+ Register<TSubModule>() + +

+ +

Registers a module to be a target of the DelayedSubModuleManager.

+
+
+ +
+
public static void Register<TSubModule>() where TSubModule : MBSubModuleBase
+
+ + + +

Type Parameters

+
+
TSubModule
+

The exact type of the SubModule to be registered.

+
+
+ + + + + + + + + + + + +

+ Register<TSubModule>(int, string[]?, string[]?) + +

+ +

Registers a module to be a target of the DelayedSubModuleManager Harmony patching.

+
+
+ +
+
public static void Register<TSubModule>(int priority, string[]? before, string[]? after) where TSubModule : MBSubModuleBase
+
+ +

Parameters

+
+
priority int
+

The HarmonyLib.HarmonyPriority that would be assigned to the patches that would be made.

+
+
before string[]
+

A list of HarmonyLib.Harmony.Ids that should come after the patches that would be made.

+
+
after string[]
+

A list of HarmonyLib.Harmony.Ids that should come before the patches that would be made.

+
+
+ + +

Type Parameters

+
+
TSubModule
+

The exact type of the SubModule to be patched.

+
+
+ + + + + + + + + + + + +

+ Subscribe(Type, MBSubModuleBase, string, SubscriptionType, EventHandler<SubscriptionEventArgs>) + +

+ +
+
+ +
+
public static void Subscribe(Type mbSubModuleType, MBSubModuleBase caller, string method, SubscriptionType subscriptionType, EventHandler<SubscriptionEventArgs> @delegate)
+
+ +

Parameters

+
+
mbSubModuleType Type
+
+
caller MBSubModuleBase
+
+
method string
+
+
subscriptionType SubscriptionType
+
+
delegate EventHandler<SubscriptionEventArgs>
+
+
+ + + + + + + + + + + + + + +

+ Subscribe<T>(MBSubModuleBase, string, SubscriptionType, EventHandler<SubscriptionEventArgs>) + +

+ +
+
+ +
+
public static void Subscribe<T>(MBSubModuleBase caller, string method, SubscriptionType subscriptionType, EventHandler<SubscriptionEventArgs> @delegate) where T : MBSubModuleBase
+
+ +

Parameters

+
+
caller MBSubModuleBase
+
+
method string
+
+
subscriptionType SubscriptionType
+
+
delegate EventHandler<SubscriptionEventArgs>
+
+
+ + +

Type Parameters

+
+
T
+
+
+ + + + + + + + + + + + +

+ Subscribe<T1, T2>(string, SubscriptionType, EventHandler<SubscriptionEventArgs>) + +

+ +
+
+ +
+
public static void Subscribe<T1, T2>(string method, SubscriptionType subscriptionType, EventHandler<SubscriptionEventArgs> @delegate) where T1 : MBSubModuleBase where T2 : MBSubModuleBase
+
+ +

Parameters

+
+
method string
+
+
subscriptionType SubscriptionType
+
+
delegate EventHandler<SubscriptionEventArgs>
+
+
+ + +

Type Parameters

+
+
T1
+
+
T2
+
+
+ + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionEventArgs.html b/api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionEventArgs.html new file mode 100644 index 00000000..852c9a9b --- /dev/null +++ b/api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionEventArgs.html @@ -0,0 +1,259 @@ + + + + + Class SubscriptionEventArgs + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class SubscriptionEventArgs + +

+ +
+
Namespace
Bannerlord.ButterLib.DelayedSubModule
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

A container class for the arguments of the events, +that are added to the MBSubModuleBase public and protected method calls.

+
+
+ +
+
public class SubscriptionEventArgs : EventArgs
+
+ + + + +
+
Inheritance
+
+ + +
SubscriptionEventArgs
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + +
+ + + + +

Remarks

+

These Events are injected via Harmony patching of the respective methods +with HarmonyLib.HarmonyPatchType.Prefix and HarmonyLib.HarmonyPatchType.Postfix.

+
+ + +

Constructors +

+ + + + +

+ SubscriptionEventArgs(bool) + +

+ +

Initializes a new instance of the SubscriptionGlobalEventArgs class with the supplied values.

+
+
+ +
+
public SubscriptionEventArgs(bool isBase)
+
+ +

Parameters

+
+
isBase bool
+

An indicator that the underlying virtual implementation of the MBSubModuleBase +method was called, not a derived class override.

+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ IsBase + +

+ +

An indicator that the underlying virtual implementation of the MBSubModuleBase +method was called, not a derived class override.

+
+
+ +
+
public bool IsBase { get; }
+
+ + + + + +

Property Value

+
+
bool
+

+ true, if base MBSubModuleBase virtual method was called. +

+

+ false, if corresponding override method of the derived class specified + in Type was called. +

+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionGlobalEventArgs.html b/api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionGlobalEventArgs.html new file mode 100644 index 00000000..81e02b3d --- /dev/null +++ b/api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionGlobalEventArgs.html @@ -0,0 +1,468 @@ + + + + + Class SubscriptionGlobalEventArgs + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class SubscriptionGlobalEventArgs + +

+ +
+
Namespace
Bannerlord.ButterLib.DelayedSubModule
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

A container class for the arguments of the events, +that are added to the MBSubModuleBase public and protected method calls.

+
+
+ +
+
public class SubscriptionGlobalEventArgs : EventArgs
+
+ + + + +
+
Inheritance
+
+ + +
SubscriptionGlobalEventArgs
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + +
+ + + + +

Remarks

+

These Events are injected via Harmony patching of the respective methods +with HarmonyLib.HarmonyPatchType.Prefix and HarmonyLib.HarmonyPatchType.Postfix.

+
+ + +

Constructors +

+ + + + +

+ SubscriptionGlobalEventArgs(Type, bool, SubscriptionType, string) + +

+ +

Initializes a new instance of the SubscriptionGlobalEventArgs class with the supplied values.

+
+
+ +
+
public SubscriptionGlobalEventArgs(Type type, bool isBase, SubscriptionType subscriptionType, string methodName)
+
+ +

Parameters

+
+
type Type
+

The type of submodule for which the method was called.

+
+
isBase bool
+

An indicator that the underlying virtual implementation of the MBSubModuleBase +method was called, not a derived class override.

+
+
subscriptionType SubscriptionType
+

A type of the Harmony patch that was used to raise the event.

+
+
methodName string
+

A method of the ArgumentException derived class that was used to raise the event.

+
+
+ + + + + + + + + +

Exceptions

+
+
ArgumentException
+

Thrown when type +does not point to a subclass of the ArgumentOutOfRangeException.

+
+
ArgumentOutOfRangeException
+

Thrown when subscriptionType +is not a valid SubscriptionGlobalEventArgs enum.

+
+
+ + + +

Properties +

+ + + + +

+ IsBase + +

+ +

An indicator that the underlying virtual implementation of the MBSubModuleBase +method was called, not a derived class override.

+
+
+ +
+
public bool IsBase { get; }
+
+ + + + + +

Property Value

+
+
bool
+

+ true, if base MBSubModuleBase virtual method was called. + SubscriptionType can only be a AfterMethod in that case. +

+

+ false, if corresponding override method of the derived class specified + in Type was called. SubscriptionType could be both + BeforeMethod and AfterMethod in that case. +

+
+
+ + + + + + + + + + +

+ MethodName + +

+ +

A method of the MBSubModuleBase derived class that was used to raise the event.

+
+
+ +
+
public string MethodName { get; }
+
+ + + + + +

Property Value

+
+
string
+

A string containing the name of the method.

+
+
+ + + + + + + + + + +

+ SubscriptionType + +

+ +

A type of the Harmony patch that was used to raise the event.

+
+
+ +
+
public SubscriptionType SubscriptionType { get; }
+
+ + + + + +

Property Value

+
+
SubscriptionType
+

BeforeMethod, when event is raised before the execution of the method; +AfterMethod, when event is raised after the execution of the method.

+
+
+ + + + + + + + + + +

+ Type + +

+ +

The type of submodule for which the method was called.

+
+
+ +
+
public Type Type { get; }
+
+ + + + + +

Property Value

+
+
Type
+

Exact Type of the MBSubModuleBase derived class.

+
+
+ + + + + + + + +

Methods +

+ + + + +

+ IsValid(Type, string, SubscriptionType) + +

+ +
+
+ +
+
public bool IsValid(Type type, string methodName, SubscriptionType subscriptionType)
+
+ +

Parameters

+
+
type Type
+
+
methodName string
+
+
subscriptionType SubscriptionType
+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + + + + +

+ IsValid<T>(string, SubscriptionType) + +

+ +
+
+ +
+
public bool IsValid<T>(string methodName, SubscriptionType subscriptionType) where T : MBSubModuleBase
+
+ +

Parameters

+
+
methodName string
+
+
subscriptionType SubscriptionType
+
+
+ +

Returns

+
+
bool
+
+
+ +

Type Parameters

+
+
T
+
+
+ + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionType.html b/api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionType.html new file mode 100644 index 00000000..e04dd06e --- /dev/null +++ b/api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionType.html @@ -0,0 +1,142 @@ + + + + + Enum SubscriptionType + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + + +

+ Enum SubscriptionType + +

+ +
+
Namespace
Bannerlord.ButterLib.DelayedSubModule
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public enum SubscriptionType : byte
+
+ + + + + + + + + +

Fields +

+
+
AfterMethod = 1
+
+
BeforeMethod = 0
+
+
+ + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.DelayedSubModule.html b/api/Bannerlord.ButterLib.DelayedSubModule.html new file mode 100644 index 00000000..81b0d566 --- /dev/null +++ b/api/Bannerlord.ButterLib.DelayedSubModule.html @@ -0,0 +1,137 @@ + + + + + Namespace Bannerlord.ButterLib.DelayedSubModule + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

Namespace Bannerlord.ButterLib.DelayedSubModule +

+
+
+
+ +

Classes +

+
+
DelayedSubModuleManager
+

Allows you to inject your own code into the load / unload sequence +of other modules without specifying them directly as a dependency +in 'SubModule.xml'.

+
+
+
+
SubscriptionEventArgs
+

A container class for the arguments of the events, +that are added to the MBSubModuleBase public and protected method calls.

+
+
+
+
SubscriptionGlobalEventArgs
+

A container class for the arguments of the events, +that are added to the MBSubModuleBase public and protected method calls.

+
+
+

Enums +

+
+
SubscriptionType
+
+
+ + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix-1.html b/api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix-1.html new file mode 100644 index 00000000..4ad23f01 --- /dev/null +++ b/api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix-1.html @@ -0,0 +1,526 @@ + + + + + Class DistanceMatrix<T> + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class DistanceMatrix<T> + +

+ +
+
Namespace
Bannerlord.ButterLib.DistanceMatrix
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

A generic class that pairs given objects of type T +and for each pair calculates the distance between the objects that formed it.

+
+
+ +
+
public abstract class DistanceMatrix<T> : DistanceMatrix where T : MBObjectBase
+
+ + + +

Type Parameters

+
+
T
+

The type of objects for which the distance matrix should be calculated.

+
+
+ +
+
Inheritance
+
+ + +
DistanceMatrix<T>
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + +
+ + + + +

Remarks

+

DistanceMatrix<T> implements built-in calculation for the Hero, +Settlement, Clan and Kingdom objects. +For any other MBObjectBase subtypes custom EntityListGetter and DistanceCalculator methods +should be provided using special constructor Create(Func<IEnumerable<T>>, Func<T, T, float>) .

+
+ + +

Constructors +

+ + + + +

+ DistanceMatrix() + +

+ +

Initializes a new instance of the DistanceMatrix<T> class +with default EntityListGetter and DistanceCalculator methods.

+
+
+ +
+
protected DistanceMatrix()
+
+ + + + + + + + + + +

Exceptions

+
+
ArgumentException
+
+
+ + + + + +

+ DistanceMatrix(Func<IEnumerable<T>>, Func<T, T, float>) + +

+ +

Initializes a new instance of the DistanceMatrix<T> class +with custom methods that will be used to get the list of analyzed objects and calculate the distances between them.

+
+
+ +
+
protected DistanceMatrix(Func<IEnumerable<T>> customListGetter, Func<T, T, float> customDistanceCalculator)
+
+ +

Parameters

+
+
customListGetter Func<IEnumerable<T>>
+

A delegate to the method that will be used to get a list of objects of type T +for calculating the distances between them.

+
+
customDistanceCalculator Func<T, T, float>
+

A delegate to the method that will be used to calculate the distance between two given type T objects.

+
+
+ + + + + + + + + +

Exceptions

+
+
ArgumentException
+
+
+ + + +

Properties +

+ + + + +

+ AsDictionary + +

+ +

Raw distance matrix representation

+
+
+ +
+
public abstract Dictionary<ulong, float> AsDictionary { get; }
+
+ + + + + +

Property Value

+
+
Dictionary<ulong, float>
+

A dictionary of paired type T objects +represented by unique 64-bit unsigned number as key +and floating-point numbers, representing distances between those objects as value.

+
+
+ + + + + + + + + + +

+ AsTypedDictionary + +

+ +

Objectified distance matrix representation

+
+
+ +
+
public abstract Dictionary<(T Object1, T Object2), float> AsTypedDictionary { get; }
+
+ + + + + +

Property Value

+
+
Dictionary<(T Object1, T Object2), float>
+

A dictionary of paired type T objects as key +and floating-point numbers, representing distances between those objects as value.

+
+
+ + + + + + + + +

Methods +

+ + + + +

+ Create() + +

+ +

Initializes and returns a new instance of the DistanceMatrix<T> class +as per actual implementation with the default EntityListGetter and DistanceCalculator methods.

+
+
+ +
+
public static DistanceMatrix<T>? Create()
+
+ + +

Returns

+
+
DistanceMatrix<T>
+
+
+ + + + + + + + +

Exceptions

+
+
ArgumentException
+
+
+ + + + + +

+ Create(Func<IEnumerable<T>>, Func<T, T, float>) + +

+ +

Initializes and returns a new instance of the DistanceMatrix<T> class +as per actual implementation with custom methods that will be used to get the list of analyzed objects +and calculate the distances between them.

+
+
+ +
+
public static DistanceMatrix<T>? Create(Func<IEnumerable<T>> customListGetter, Func<T, T, float> customDistanceCalculator)
+
+ +

Parameters

+
+
customListGetter Func<IEnumerable<T>>
+

A delegate to the method that will be used to get a list of objects of type T +for calculating the distances between them.

+
+
customDistanceCalculator Func<T, T, float>
+

A delegate to the method that will be used to calculate the distance between two given type T objects.

+
+
+ +

Returns

+
+
DistanceMatrix<T>
+
+
+ + + + + + + + +

Exceptions

+
+
ArgumentException
+
+
+ + + + + +

+ GetDistance(T, T) + +

+ +

Gets calculated distance between specified type T objects.

+
+
+ +
+
public abstract float GetDistance(T object1, T object2)
+
+ +

Parameters

+
+
object1 T
+

The first of the objects between which it is necessary to determine the distance.

+
+
object2 T
+

The second of the objects between which it is necessary to determine the distance.

+
+
+ +

Returns

+
+
float
+

A floating-point number representing the distance between two specified MBObjectBase objects; +or NaN, if distance was not calculated or it is uncomputable.

+
+
+ + + + + + + + + + + + + +

+ SetDistance(T, T, float) + +

+ +

Sets new distance value for the specified type T objects.

+
+
+ +
+
public abstract void SetDistance(T object1, T object2, float distance)
+
+ +

Parameters

+
+
object1 T
+

The first of the objects between which it is necessary to change the predetermined distance.

+
+
object2 T
+

The second of the objects between which it is necessary to change the predetermined distance.

+
+
distance float
+

New distance value.

+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix.html b/api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix.html new file mode 100644 index 00000000..90c66833 --- /dev/null +++ b/api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix.html @@ -0,0 +1,465 @@ + + + + + Class DistanceMatrix + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class DistanceMatrix + +

+ +
+
Namespace
Bannerlord.ButterLib.DistanceMatrix
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

An abstract class used in a DistanceMatrix<T> derived class, +that pairs given objects of type T +and for each pair calculates the distance between the objects that formed it.

+
+
+ +
+
public abstract class DistanceMatrix
+
+ + + + +
+
Inheritance
+
+ +
DistanceMatrix
+
+
+ + +
+
Derived
+
+ +
+
+ +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ CalculateDistanceBetweenClans(Clan, Clan, IEnumerable<DistanceMatrixResult>) + +

+ +

Calculates distance between two given Clan objects.

+
+
+ +
+
public static float? CalculateDistanceBetweenClans(Clan clan1, Clan clan2, IEnumerable<DistanceMatrixResult> settlementOwnersPairedList)
+
+ +

Parameters

+
+
clan1 Clan
+

First of the clans to calculate distance between.

+
+
clan2 Clan
+

Second of the clans to calculate distance between.

+
+
settlementOwnersPairedList IEnumerable<DistanceMatrixResult>
+

List of the distances between pairs of settlements and of the weights of the paired settlements, +except that the owner clan pairs are used instead of the settlements themselves to speed up the process.

+
+
+ +

Returns

+
+
float?
+

A floating-point number representing the distance between two specified Clan objects +or NaN if distance could not be calculated (usually when clan has no fiefs).

+
+
+ + + + + + + +

Remarks

+

Calculation is based on the average distance between clans fiefs weighted by the fief type.

+
+ + + + + + +

+ CalculateDistanceBetweenHeroes(Hero, Hero) + +

+ +

Calculates distance between two given Hero objects.

+
+
+ +
+
public static float? CalculateDistanceBetweenHeroes(Hero hero1, Hero hero2)
+
+ +

Parameters

+
+
hero1 Hero
+

The first of the heroes to calculate distance between.

+
+
hero2 Hero
+

The second of the heroes to calculate distance between.

+
+
+ +

Returns

+
+
float?
+

A floating-point number representing the distance between two specified Hero objects +or NaN if distance could not be calculated.

+
+
+ + + + + + + + + + + + + +

+ CalculateDistanceBetweenKingdoms(Kingdom, Kingdom, DistanceMatrix<Clan>) + +

+ +

Calculates distance between two given Kingdom objects.

+
+
+ +
+
public static float? CalculateDistanceBetweenKingdoms(Kingdom kingdom1, Kingdom kingdom2, DistanceMatrix<Clan> clanDistanceMatrix)
+
+ +

Parameters

+
+
kingdom1 Kingdom
+

First of the kingdoms to calculate distance between.

+
+
kingdom2 Kingdom
+

Second of the kingdoms to calculate distance between.

+
+
clanDistanceMatrix DistanceMatrix<Clan>
+

Settlement distance matrix .

+
+
+ +

Returns

+
+
float?
+

A floating-point number representing the distance between two specified Kingdom objects +or NaN if distance could not be calculated.

+
+
+ + + + + + + +

Remarks

+

Calculation is based on the average distance between kingdoms fiefs weighted by the fief type.

+
+ + + + + + +

+ Create<T>() + +

+ +

Initializes a new instance of the DistanceMatrix<T> class +as per actual implementation with the default EntityListGetter and DistanceCalculator methods.

+
+
+ +
+
public static DistanceMatrix<T>? Create<T>() where T : MBObjectBase
+
+ + +

Returns

+
+
DistanceMatrix<T>
+
+
+ +

Type Parameters

+
+
T
+
+
+ + + + + + + +

Exceptions

+
+
ArgumentException
+
+
+ + + + + +

+ Create<T>(Func<IEnumerable<T>>, Func<T, T, float>) + +

+ +

Initializes and returns a new instance of the DistanceMatrix<T> class +as per actual implementation with custom methods that will be used to get the list of analyzed objects +and calculate the distances between them.

+
+
+ +
+
public static DistanceMatrix<T>? Create<T>(Func<IEnumerable<T>> customListGetter, Func<T, T, float> customDistanceCalculator) where T : MBObjectBase
+
+ +

Parameters

+
+
customListGetter Func<IEnumerable<T>>
+

A delegate to the method that will be used to get a list of objects of type T +for calculating the distances between them.

+
+
customDistanceCalculator Func<T, T, float>
+

A delegate to the method that will be used to calculate the distance between two given type T objects.

+
+
+ +

Returns

+
+
DistanceMatrix<T>
+
+
+ +

Type Parameters

+
+
T
+
+
+ + + + + + + +

Exceptions

+
+
ArgumentException
+
+
+ + + + + +

+ GetSettlementOwnersPairedList(DistanceMatrix<Settlement>) + +

+ +

Transforms given Settlement distance matrix into list of the weighted distances +between pairs of settlements, except that the owner clan pairs are used instead of the settlements themselves.

+
+
+ +
+
public static List<DistanceMatrixResult>? GetSettlementOwnersPairedList(DistanceMatrix<Settlement> settlementDistanceMatrix)
+
+ +

Parameters

+
+
settlementDistanceMatrix DistanceMatrix<Settlement>
+

Settlement distance matrix to transform into list.

+
+
+ +

Returns

+
+
List<DistanceMatrixResult>
+

A list of tuples holding information about pair of initial settlements owners, distance between settlements +and combined settlement weight.

+
+
+ + + + + + + +

Remarks

+

This method could be used to supply +CalculateDistanceBetweenClans(Clan, Clan, IEnumerable<DistanceMatrixResult>) +method with required list argument.

+
+ + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrixResult.html b/api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrixResult.html new file mode 100644 index 00000000..79d72cfd --- /dev/null +++ b/api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrixResult.html @@ -0,0 +1,309 @@ + + + + + Class DistanceMatrixResult + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class DistanceMatrixResult + +

+ +
+
Namespace
Bannerlord.ButterLib.DistanceMatrix
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public record DistanceMatrixResult : IEquatable<DistanceMatrixResult>
+
+ + + + +
+
Inheritance
+
+ +
DistanceMatrixResult
+
+
+ +
+
Implements
+
+ +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ DistanceMatrixResult(ulong, float, float) + +

+ +
+
+ +
+
public DistanceMatrixResult(ulong Owners, float Distance, float Weight)
+
+ +

Parameters

+
+
Owners ulong
+
+
Distance float
+
+
Weight float
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Distance + +

+ +
+
+ +
+
public float Distance { get; init; }
+
+ + + + + +

Property Value

+
+
float
+
+
+ + + + + + + + + + +

+ Owners + +

+ +
+
+ +
+
public ulong Owners { get; init; }
+
+ + + + + +

Property Value

+
+
ulong
+
+
+ + + + + + + + + + +

+ Weight + +

+ +
+
+ +
+
public float Weight { get; init; }
+
+ + + + + +

Property Value

+
+
float
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.DistanceMatrix.html b/api/Bannerlord.ButterLib.DistanceMatrix.html new file mode 100644 index 00000000..da9c2abf --- /dev/null +++ b/api/Bannerlord.ButterLib.DistanceMatrix.html @@ -0,0 +1,129 @@ + + + + + Namespace Bannerlord.ButterLib.DistanceMatrix + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

Namespace Bannerlord.ButterLib.DistanceMatrix +

+
+
+
+ +

Classes +

+
+
DistanceMatrix
+

An abstract class used in a DistanceMatrix<T> derived class, +that pairs given objects of type T +and for each pair calculates the distance between the objects that formed it.

+
+
+
+
DistanceMatrixResult
+
+
+
+
DistanceMatrix<T>
+

A generic class that pairs given objects of type T +and for each pair calculates the distance between the objects that formed it.

+
+
+ + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIClassAttribute.html b/api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIClassAttribute.html new file mode 100644 index 00000000..95bdc3cf --- /dev/null +++ b/api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIClassAttribute.html @@ -0,0 +1,348 @@ + + + + + Class DynamicAPIClassAttribute + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class DynamicAPIClassAttribute + +

+ +
+
Namespace
Bannerlord.ButterLib.DynamicAPI
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

Requires a public empty constructor for instance methods

+
+
+ +
+
[AttributeUsage(AttributeTargets.Class)]
+public sealed class DynamicAPIClassAttribute : Attribute, _Attribute
+
+ + + + +
+
Inheritance
+
+ + +
DynamicAPIClassAttribute
+
+
+ +
+
Implements
+
+ +
+
+ + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ DynamicAPIClassAttribute(string) + +

+ +
+
+ +
+
public DynamicAPIClassAttribute(string @class)
+
+ +

Parameters

+
+
class string
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Class + +

+ +
+
+ +
+
public string Class { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIInstance.html b/api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIInstance.html new file mode 100644 index 00000000..f617c2ae --- /dev/null +++ b/api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIInstance.html @@ -0,0 +1,215 @@ + + + + + Class DynamicAPIInstance + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class DynamicAPIInstance + +

+ +
+
Namespace
Bannerlord.ButterLib.DynamicAPI
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

Represents a wrapper of an object marked with DynamicAPIClassAttribute.

+
+
+ +
+
public class DynamicAPIInstance
+
+ + + + +
+
Inheritance
+
+ +
DynamicAPIInstance
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ RequestMethod<TDelegate>(string?) + +

+ +

Return an instance API method, see DynamicAPIMethodAttribute. +We recommend to save the delegate instead of calling this function multiple times.

+
+
+ +
+
public TDelegate? RequestMethod<TDelegate>(string? method) where TDelegate : Delegate
+
+ +

Parameters

+
+
method string
+
+
+ +

Returns

+
+
TDelegate
+
+
+ +

Type Parameters

+
+
TDelegate
+
+
+ + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIMethodAttribute.html b/api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIMethodAttribute.html new file mode 100644 index 00000000..b36d230a --- /dev/null +++ b/api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIMethodAttribute.html @@ -0,0 +1,347 @@ + + + + + Class DynamicAPIMethodAttribute + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class DynamicAPIMethodAttribute + +

+ +
+
Namespace
Bannerlord.ButterLib.DynamicAPI
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
[AttributeUsage(AttributeTargets.Method)]
+public sealed class DynamicAPIMethodAttribute : Attribute, _Attribute
+
+ + + + +
+
Inheritance
+
+ + +
DynamicAPIMethodAttribute
+
+
+ +
+
Implements
+
+ +
+
+ + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ DynamicAPIMethodAttribute(string) + +

+ +
+
+ +
+
public DynamicAPIMethodAttribute(string method)
+
+ +

Parameters

+
+
method string
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Method + +

+ +
+
+ +
+
public string Method { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIProvider.html b/api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIProvider.html new file mode 100644 index 00000000..1a944f3a --- /dev/null +++ b/api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIProvider.html @@ -0,0 +1,255 @@ + + + + + Class DynamicAPIProvider + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class DynamicAPIProvider + +

+ +
+
Namespace
Bannerlord.ButterLib.DynamicAPI
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

Requests will be available on OnBeforeInitialModuleScreenSetAsRoot() stage.
+The reason is, we need to wait for all SubModules to have OnSubModuleLoad() executed.

+
+
+ +
+
public static class DynamicAPIProvider
+
+ + + + +
+
Inheritance
+
+ +
DynamicAPIProvider
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ RequestAPIClass(string?) + +

+ +

Return an API instance, see DynamicAPIClassAttribute.

+
+
+ +
+
public static DynamicAPIInstance? RequestAPIClass(string? @class)
+
+ +

Parameters

+
+
class string
+
+
+ +

Returns

+
+
DynamicAPIInstance
+
+
+ + + + + + + + + + + + + +

+ RequestAPIMethod<TDelegate>(string?, string?) + +

+ +

Return a static API method, see DynamicAPIMethodAttribute. +We recommend to save the delegate instead of calling this function multiple times.

+
+
+ +
+
public static TDelegate? RequestAPIMethod<TDelegate>(string? @class, string? method) where TDelegate : Delegate
+
+ +

Parameters

+
+
class string
+
+
method string
+
+
+ +

Returns

+
+
TDelegate
+
+
+ +

Type Parameters

+
+
TDelegate
+
+
+ + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.DynamicAPI.html b/api/Bannerlord.ButterLib.DynamicAPI.html new file mode 100644 index 00000000..5181cb55 --- /dev/null +++ b/api/Bannerlord.ButterLib.DynamicAPI.html @@ -0,0 +1,132 @@ + + + + + Namespace Bannerlord.ButterLib.DynamicAPI + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ + + +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.ExceptionHandler.ExceptionReporter.html b/api/Bannerlord.ButterLib.ExceptionHandler.ExceptionReporter.html new file mode 100644 index 00000000..a8b603cd --- /dev/null +++ b/api/Bannerlord.ButterLib.ExceptionHandler.ExceptionReporter.html @@ -0,0 +1,233 @@ + + + + + Class ExceptionReporter + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class ExceptionReporter + +

+ +
+
Namespace
Bannerlord.ButterLib.ExceptionHandler
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public static class ExceptionReporter
+
+ + + + +
+
Inheritance
+
+ +
ExceptionReporter
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ BuildAndShow(CrashReportInfo) + +

+ +
+
+ +
+
public static void BuildAndShow(CrashReportInfo crashReport)
+
+ +

Parameters

+
+
crashReport CrashReportInfo
+
+
+ + + + + + + + + + + + + + +

+ Show(Exception) + +

+ +
+
+ +
+
public static void Show(Exception exception)
+
+ +

Parameters

+
+
exception Exception
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.ExceptionHandler.WinForms.HtmlCrashReportForm.html b/api/Bannerlord.ButterLib.ExceptionHandler.WinForms.HtmlCrashReportForm.html new file mode 100644 index 00000000..e405fc9d --- /dev/null +++ b/api/Bannerlord.ButterLib.ExceptionHandler.WinForms.HtmlCrashReportForm.html @@ -0,0 +1,2024 @@ + + + + + Class HtmlCrashReportForm + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class HtmlCrashReportForm + +

+ +
+
Namespace
Bannerlord.ButterLib.ExceptionHandler.WinForms
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public class HtmlCrashReportForm : Form, IDropTarget, ISynchronizeInvoke, IWin32Window, IBindableComponent, IComponent, IDisposable, IContainerControl
+
+ + + + +
+
Inheritance
+
+ + + + + + + +
HtmlCrashReportForm
+
+
+ +
+
Implements
+
+ + + + + + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Form.Icon +
+ + + + + + + + +
+ Form.Menu +
+ + + + + + + + + + + + + + + +
+ Form.Size +
+ + +
+ Form.Text +
+ + + + + + + + + + + + + + +
+ Form.Load +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +

Properties +

+ + + + +

+ IncludeMiniDump + +

+ +
+
+ +
+
public bool IncludeMiniDump { get; set; }
+
+ + + + + +

Property Value

+
+
bool
+
+
+ + + + + + + + + + +

+ IncludeSaveFile + +

+ +
+
+ +
+
public bool IncludeSaveFile { get; set; }
+
+ + + + + +

Property Value

+
+
bool
+
+
+ + + + + + + + + + +

+ IncludeScreenshot + +

+ +
+
+ +
+
public bool IncludeScreenshot { get; set; }
+
+ + + + + +

Property Value

+
+
bool
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ CopyAsHTML() + +

+ +
+
+ +
+
public void CopyAsHTML()
+
+ + + + + + + + + + + + + + + +

+ Dispose(bool) + +

+ +

Clean up any resources being used.

+
+
+ +
+
protected override void Dispose(bool disposing)
+
+ +

Parameters

+
+
disposing bool
+

true if managed resources should be disposed; otherwise, false.

+
+
+ + + + + + + + + + + + + + +

+ SaveReportHTML() + +

+ +
+
+ +
+
[UsedImplicitly]
+public void SaveReportHTML()
+
+ + + + + + + + + + + + + + + +

+ SaveReportZIP() + +

+ +
+
+ +
+
[UsedImplicitly]
+public void SaveReportZIP()
+
+ + + + + + + + + + + + + + + +

+ SetIncludeMiniDump(bool) + +

+ +
+
+ +
+
public void SetIncludeMiniDump(bool value)
+
+ +

Parameters

+
+
value bool
+
+
+ + + + + + + + + + + + + + +

+ SetIncludeSaveFile(bool) + +

+ +
+
+ +
+
public void SetIncludeSaveFile(bool value)
+
+ +

Parameters

+
+
value bool
+
+
+ + + + + + + + + + + + + + +

+ SetIncludeScreenshot(bool) + +

+ +
+
+ +
+
public void SetIncludeScreenshot(bool value)
+
+ +

Parameters

+
+
value bool
+
+
+ + + + + + + + + + + + + + +

+ UploadReport() + +

+ +
+
+ +
+
public void UploadReport()
+
+ + + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.ExceptionHandler.WinForms.html b/api/Bannerlord.ButterLib.ExceptionHandler.WinForms.html new file mode 100644 index 00000000..ff545b7d --- /dev/null +++ b/api/Bannerlord.ButterLib.ExceptionHandler.WinForms.html @@ -0,0 +1,116 @@ + + + + + Namespace Bannerlord.ButterLib.ExceptionHandler.WinForms + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

Namespace Bannerlord.ButterLib.ExceptionHandler.WinForms +

+
+
+
+ +

Classes +

+
+
HtmlCrashReportForm
+
+
+ + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.ExceptionHandler.html b/api/Bannerlord.ButterLib.ExceptionHandler.html new file mode 100644 index 00000000..d57cefbf --- /dev/null +++ b/api/Bannerlord.ButterLib.ExceptionHandler.html @@ -0,0 +1,116 @@ + + + + + Namespace Bannerlord.ButterLib.ExceptionHandler + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

Namespace Bannerlord.ButterLib.ExceptionHandler +

+
+
+
+ +

Classes +

+
+
ExceptionReporter
+
+
+ + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.Extensions.IInputContextExtensions.html b/api/Bannerlord.ButterLib.Extensions.IInputContextExtensions.html new file mode 100644 index 00000000..35621aca --- /dev/null +++ b/api/Bannerlord.ButterLib.Extensions.IInputContextExtensions.html @@ -0,0 +1,466 @@ + + + + + Class IInputContextExtensions + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class IInputContextExtensions + +

+ +
+
Namespace
Bannerlord.ButterLib.Extensions
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public static class IInputContextExtensions
+
+ + + + +
+
Inheritance
+
+ +
IInputContextExtensions
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ IsHotKeyDown<THotKeyBase>(IInputContext) + +

+ +
+
+ +
+
public static bool IsHotKeyDown<THotKeyBase>(this IInputContext inputContext) where THotKeyBase : HotKeyBase
+
+ +

Parameters

+
+
inputContext IInputContext
+
+
+ +

Returns

+
+
bool
+
+
+ +

Type Parameters

+
+
THotKeyBase
+
+
+ + + + + + + + + + + + +

+ IsHotKeyPressed<THotKeyBase>(IInputContext) + +

+ +
+
+ +
+
public static bool IsHotKeyPressed<THotKeyBase>(this IInputContext inputContext) where THotKeyBase : HotKeyBase
+
+ +

Parameters

+
+
inputContext IInputContext
+
+
+ +

Returns

+
+
bool
+
+
+ +

Type Parameters

+
+
THotKeyBase
+
+
+ + + + + + + + + + + + +

+ IsHotKeyReleased<THotKeyBase>(IInputContext) + +

+ +
+
+ +
+
public static bool IsHotKeyReleased<THotKeyBase>(this IInputContext inputContext) where THotKeyBase : HotKeyBase
+
+ +

Parameters

+
+
inputContext IInputContext
+
+
+ +

Returns

+
+
bool
+
+
+ +

Type Parameters

+
+
THotKeyBase
+
+
+ + + + + + + + + + + + +

+ SubscribeToIsDownAndReleasedEvent<THotKeyBase>(IInputContext, Action) + +

+ +
+
+ +
+
public static IDisposable? SubscribeToIsDownAndReleasedEvent<THotKeyBase>(this IInputContext inputContext, Action action) where THotKeyBase : HotKeyBase
+
+ +

Parameters

+
+
inputContext IInputContext
+
+
action Action
+
+
+ +

Returns

+
+
IDisposable
+
+
+ +

Type Parameters

+
+
THotKeyBase
+
+
+ + + + + + + + + + + + +

+ SubscribeToIsDownEvent<THotKeyBase>(IInputContext, Action) + +

+ +
+
+ +
+
public static IDisposable? SubscribeToIsDownEvent<THotKeyBase>(this IInputContext inputContext, Action action) where THotKeyBase : HotKeyBase
+
+ +

Parameters

+
+
inputContext IInputContext
+
+
action Action
+
+
+ +

Returns

+
+
IDisposable
+
+
+ +

Type Parameters

+
+
THotKeyBase
+
+
+ + + + + + + + + + + + +

+ SubscribeToOnPressedEvent<THotKeyBase>(IInputContext, Action) + +

+ +
+
+ +
+
public static IDisposable? SubscribeToOnPressedEvent<THotKeyBase>(this IInputContext inputContext, Action action) where THotKeyBase : HotKeyBase
+
+ +

Parameters

+
+
inputContext IInputContext
+
+
action Action
+
+
+ +

Returns

+
+
IDisposable
+
+
+ +

Type Parameters

+
+
THotKeyBase
+
+
+ + + + + + + + + + + + +

+ SubscribeToOnReleasedEvent<THotKeyBase>(IInputContext, Action) + +

+ +
+
+ +
+
public static IDisposable? SubscribeToOnReleasedEvent<THotKeyBase>(this IInputContext inputContext, Action action) where THotKeyBase : HotKeyBase
+
+ +

Parameters

+
+
inputContext IInputContext
+
+
action Action
+
+
+ +

Returns

+
+
IDisposable
+
+
+ +

Type Parameters

+
+
THotKeyBase
+
+
+ + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.Extensions.html b/api/Bannerlord.ButterLib.Extensions.html new file mode 100644 index 00000000..2e263c4a --- /dev/null +++ b/api/Bannerlord.ButterLib.Extensions.html @@ -0,0 +1,116 @@ + + + + + Namespace Bannerlord.ButterLib.Extensions + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ + + +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.HotKeys.HotKeyBase.html b/api/Bannerlord.ButterLib.HotKeys.HotKeyBase.html new file mode 100644 index 00000000..6034d88e --- /dev/null +++ b/api/Bannerlord.ButterLib.HotKeys.HotKeyBase.html @@ -0,0 +1,757 @@ + + + + + Class HotKeyBase + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class HotKeyBase + +

+ +
+
Namespace
Bannerlord.ButterLib.HotKeys
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

Base type for all HotKey definitions to derive from.

+
+
+ +
+
public abstract class HotKeyBase
+
+ + + + +
+
Inheritance
+
+ +
HotKeyBase
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ HotKeyBase(string) + +

+ +

The required constructor which has the bare minimum needed to register a key.

+
+
+ +
+
protected HotKeyBase(string uid)
+
+ +

Parameters

+
+
uid string
+

The (unique to your mod) id for your hotkey.

+
+
+ + + + + + + + + + + + + + +

+ HotKeyBase(string, string, string, InputKey, string) + +

+ +
+
+ +
+
protected HotKeyBase(string uid, string displayName, string description, InputKey defaultKey, string category)
+
+ +

Parameters

+
+
uid string
+
+
displayName string
+
+
description string
+
+
defaultKey InputKey
+
+
category string
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Category + +

+ +

The Category in the options menu under which this hotkey will appear. +Categories

+
+
+ +
+
protected virtual string Category { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ DefaultKey + +

+ +

The default key for your HotKey, if this is not set in your constructor it will default to Invalid

+
+
+ +
+
protected virtual InputKey DefaultKey { get; }
+
+ + + + + +

Property Value

+
+
InputKey
+
+
+ + + + + + + + + + +

+ Description + +

+ +

The description text that will appear in the options menu next to your hotkey.

+
+
+ +
+
protected virtual string Description { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ DisplayName + +

+ +

The display name for your hotkey that will appear in the options menu.

+
+
+ +
+
protected virtual string DisplayName { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ IsEnabled + +

+ +

Tells the input manager whether or not to process input for this key. +Setting this infrequently is cheaper than using Predicate but it is less convenient.

+
+
+ +
+
public bool IsEnabled { get; set; }
+
+ + + + + +

Property Value

+
+
bool
+
+
+ + + + + + + + + + +

+ Predicate + +

+ +

Provide none, one or many functions which all must evaluate to true in order for the key to process input. +This does not need to be set, and can be reset with Predicate = null;

+
+
+ +
+
public Func<bool>? Predicate { get; set; }
+
+ + + + + +

Property Value

+
+
Func<bool>
+
+
+ + + + + + + + + + +

+ Uid + +

+ +

The unique (to your mod) Id for this hotkey.

+
+
+ +
+
protected string Uid { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ IsDown() + +

+ +

Called once every frame a key remains down.

+
+
+ +
+
protected virtual void IsDown()
+
+ + + + + + + + + + + + + + + +

+ IsDownAndReleased() + +

+ +
+
+ +
+
protected virtual void IsDownAndReleased()
+
+ + + + + + + + + + + + + + + +

+ OnPressed() + +

+ +

Called once on the frame a key was pressed.

+
+
+ +
+
protected virtual void OnPressed()
+
+ + + + + + + + + + + + + + + +

+ OnReleased() + +

+ +

Called once on the frame a key was released.

+
+
+ +
+
protected virtual void OnReleased()
+
+ + + + + + + + + + + + + +

Events +

+ + + +

+ IsDownAndReleasedEvent + +

+ +

Called once they key was pressed and released.

+
+
+ +
+
public event Action? IsDownAndReleasedEvent
+
+ + + + + + +

Event Type

+
+
Action
+
+
+ + + + + + + + +

+ IsDownEvent + +

+ +

Called once every frame a key remains down.

+
+
+ +
+
public event Action? IsDownEvent
+
+ + + + + + +

Event Type

+
+
Action
+
+
+ + + + + + + + +

+ OnPressedEvent + +

+ +

Called once on the frame a key was pressed.

+
+
+ +
+
public event Action? OnPressedEvent
+
+ + + + + + +

Event Type

+
+
Action
+
+
+ + + + + + + + +

+ OnReleasedEvent + +

+ +

Called once on the frame a key was released.

+
+
+ +
+
public event Action? OnReleasedEvent
+
+ + + + + + +

Event Type

+
+
Action
+
+
+ + + + + + + +

Operators +

+ + + + +

+ implicit operator GameKey(HotKeyBase) + +

+ +

Allows you to supply a HotKeyBase derived class wherever a GameKey might normally be used.

+
+
+ +
+
public static implicit operator GameKey(HotKeyBase hotKey)
+
+ +

Parameters

+
+
hotKey HotKeyBase
+

HotKeyBase to convert.

+
+
+ +

Returns

+
+
GameKey
+

The GameKey stored internally.

+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.HotKeys.HotKeyCategory.html b/api/Bannerlord.ButterLib.HotKeys.HotKeyCategory.html new file mode 100644 index 00000000..808f6e66 --- /dev/null +++ b/api/Bannerlord.ButterLib.HotKeys.HotKeyCategory.html @@ -0,0 +1,148 @@ + + + + + Enum HotKeyCategory + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + + +

+ Enum HotKeyCategory + +

+ +
+
Namespace
Bannerlord.ButterLib.HotKeys
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public enum HotKeyCategory
+
+ + + + + + + + + +

Fields +

+
+
Action = 0
+
+
CampaignMap = 1
+
+
Chat = 4
+
+
MenuShortcut = 2
+
+
OrderMenu = 3
+
+
+ + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.HotKeys.HotKeyManager.html b/api/Bannerlord.ButterLib.HotKeys.HotKeyManager.html new file mode 100644 index 00000000..e5c439aa --- /dev/null +++ b/api/Bannerlord.ButterLib.HotKeys.HotKeyManager.html @@ -0,0 +1,423 @@ + + + + + Class HotKeyManager + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class HotKeyManager + +

+ +
+
Namespace
Bannerlord.ButterLib.HotKeys
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

Describes a single HotKey group to which you can add individual HotKeyManager before building.

+
+
+ +
+
public abstract class HotKeyManager
+
+ + + + +
+
Inheritance
+
+ +
HotKeyManager
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Fields +

+ + + +

+ Categories + +

+ +

The available categories in the main menu for your hotkey to appear under.

+
+
+ +
+
public static readonly IReadOnlyDictionary<HotKeyCategory, string> Categories
+
+ + + + +

Field Value

+
+
IReadOnlyDictionary<HotKeyCategory, string>
+
+
+ + + + + + + + + +

Methods +

+ + + + +

+ Add<T>() + +

+ +

Adds a hotkey to he manager ready for building.

+
+
+ +
+
public abstract T Add<T>() where T : HotKeyBase, new()
+
+ + +

Returns

+
+
T
+

A new instance of HotKeyBase

+
+
+ +

Type Parameters

+
+
T
+

The HotKeyBase derived type to add.

+
+
+ + + + + + + + + + + + +

+ Add<T>(T) + +

+ +

Adds a hotkey to the manager ready for building.

+
+
+ +
+
public abstract T Add<T>(T hotkey) where T : HotKeyBase
+
+ +

Parameters

+
+
hotkey T
+

The HotKeyBase to add.

+
+
+ +

Returns

+
+
T
+

The provided HotKeyBase (now initialized)

+
+
+ +

Type Parameters

+
+
T
+

The HotKeyBase derived type to add.

+
+
+ + + + + + + +

Exceptions

+
+
ArgumentException
+

Thrown when a hotkey with the same IdName exists.

+
+
+ + + + + +

+ Build() + +

+ +

Builds up the hotkeys and registers them with Bannerlord.

+
+
+ +
+
public abstract IReadOnlyList<HotKeyBase> Build()
+
+ + +

Returns

+
+
IReadOnlyList<HotKeyBase>
+

Returns all the hotkeys that were built up.

+
+
+ + + + + + + + + + + + + +

+ Create(string) + +

+ +

Create a new HotKey group for your mod.

+
+
+ +
+
public static HotKeyManager? Create(string modName)
+
+ +

Parameters

+
+
modName string
+

The name of your mod.

+
+
+ +

Returns

+
+
HotKeyManager
+

A HotKeyManager object for you to start adding new HotKeyManager to.

+
+
+ + + + + + + + +

Exceptions

+
+
ArgumentException
+

Thrown if a mod with the same name has already begun registering hotkeys.

+
+
+ + + + + +

+ CreateWithOwnCategory(string, string) + +

+ +

Create a new HotKey group for your mod with a separate entry on the Options Menu.

+
+
+ +
+
public static HotKeyManager? CreateWithOwnCategory(string modName, string categoryName)
+
+ +

Parameters

+
+
modName string
+

The name of your mod.

+
+
categoryName string
+

Category entry name in the Options Menu, supports translation

+
+
+ +

Returns

+
+
HotKeyManager
+

A HotKeyManager object for you to start adding new HotKeyManager to.

+
+
+ + + + + + + + +

Exceptions

+
+
ArgumentException
+

Thrown if a mod with the same name has already begun registering hotkeys.

+
+
+ + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.HotKeys.html b/api/Bannerlord.ButterLib.HotKeys.html new file mode 100644 index 00000000..d0cff96c --- /dev/null +++ b/api/Bannerlord.ButterLib.HotKeys.html @@ -0,0 +1,128 @@ + + + + + Namespace Bannerlord.ButterLib.HotKeys + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

Namespace Bannerlord.ButterLib.HotKeys +

+
+
+
+ +

Classes +

+
+
HotKeyBase
+

Base type for all HotKey definitions to derive from.

+
+
+
+
HotKeyManager
+

Describes a single HotKey group to which you can add individual HotKeyManager before building.

+
+
+

Enums +

+
+
HotKeyCategory
+
+
+ + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.ImplementationLoaderSubModule.html b/api/Bannerlord.ButterLib.ImplementationLoaderSubModule.html new file mode 100644 index 00000000..43c74e3d --- /dev/null +++ b/api/Bannerlord.ButterLib.ImplementationLoaderSubModule.html @@ -0,0 +1,308 @@ + + + + + Class ImplementationLoaderSubModule + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class ImplementationLoaderSubModule + +

+ +
+
Namespace
Bannerlord.ButterLib
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

Loads all ButterLib's implementation libraries that are supported by the game.

+
+
+ +
+
public sealed class ImplementationLoaderSubModule : MBSubModuleBaseListWrapper
+
+ + + + +
+
Inheritance
+
+ + + +
ImplementationLoaderSubModule
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
Extension Methods
+
+ + + + + +
+ + + + + +

Methods +

+ + + + +

+ OnServiceRegistration() + +

+ +
+
+ +
+
public override void OnServiceRegistration()
+
+ + + + + + + + + + + + + + + +

+ OnSubModuleLoad() + +

+ +
+
+ +
+
public override void OnSubModuleLoad()
+
+ + + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.Logger.Extensions.LoggerExtensions.html b/api/Bannerlord.ButterLib.Logger.Extensions.LoggerExtensions.html new file mode 100644 index 00000000..c73f7b85 --- /dev/null +++ b/api/Bannerlord.ButterLib.Logger.Extensions.LoggerExtensions.html @@ -0,0 +1,679 @@ + + + + + Class LoggerExtensions + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class LoggerExtensions + +

+ +
+
Namespace
Bannerlord.ButterLib.Logger.Extensions
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public static class LoggerExtensions
+
+ + + + +
+
Inheritance
+
+ +
LoggerExtensions
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ LogAndDisplay(ILogger, LogLevel, Exception, string, params object[]) + +

+ +
+
+ +
+
public static void LogAndDisplay(this ILogger logger, LogLevel logLevel, Exception exception, string message, params object[] args)
+
+ +

Parameters

+
+
logger ILogger
+
+
logLevel LogLevel
+
+
exception Exception
+
+
message string
+
+
args object[]
+
+
+ + + + + + + + + + + + + + +

+ LogAndDisplay(ILogger, LogLevel, string, params object[]) + +

+ +
+
+ +
+
public static void LogAndDisplay(this ILogger logger, LogLevel logLevel, string message, params object[] args)
+
+ +

Parameters

+
+
logger ILogger
+
+
logLevel LogLevel
+
+
message string
+
+
args object[]
+
+
+ + + + + + + + + + + + + + +

+ LogCriticalAndDisplay(ILogger, Exception, string, params object[]) + +

+ +
+
+ +
+
public static void LogCriticalAndDisplay(this ILogger logger, Exception exception, string message, params object[] args)
+
+ +

Parameters

+
+
logger ILogger
+
+
exception Exception
+
+
message string
+
+
args object[]
+
+
+ + + + + + + + + + + + + + +

+ LogCriticalAndDisplay(ILogger, string, params object[]) + +

+ +
+
+ +
+
public static void LogCriticalAndDisplay(this ILogger logger, string message, params object[] args)
+
+ +

Parameters

+
+
logger ILogger
+
+
message string
+
+
args object[]
+
+
+ + + + + + + + + + + + + + +

+ LogDebugAndDisplay(ILogger, Exception, string, params object[]) + +

+ +
+
+ +
+
public static void LogDebugAndDisplay(this ILogger logger, Exception exception, string message, params object[] args)
+
+ +

Parameters

+
+
logger ILogger
+
+
exception Exception
+
+
message string
+
+
args object[]
+
+
+ + + + + + + + + + + + + + +

+ LogDebugAndDisplay(ILogger, string, params object[]) + +

+ +
+
+ +
+
public static void LogDebugAndDisplay(this ILogger logger, string message, params object[] args)
+
+ +

Parameters

+
+
logger ILogger
+
+
message string
+
+
args object[]
+
+
+ + + + + + + + + + + + + + +

+ LogErrorAndDisplay(ILogger, Exception, string, params object[]) + +

+ +
+
+ +
+
public static void LogErrorAndDisplay(this ILogger logger, Exception exception, string message, params object[] args)
+
+ +

Parameters

+
+
logger ILogger
+
+
exception Exception
+
+
message string
+
+
args object[]
+
+
+ + + + + + + + + + + + + + +

+ LogErrorAndDisplay(ILogger, string, params object[]) + +

+ +
+
+ +
+
public static void LogErrorAndDisplay(this ILogger logger, string message, params object[] args)
+
+ +

Parameters

+
+
logger ILogger
+
+
message string
+
+
args object[]
+
+
+ + + + + + + + + + + + + + +

+ LogInformationAndDisplay(ILogger, Exception, string, params object[]) + +

+ +
+
+ +
+
public static void LogInformationAndDisplay(this ILogger logger, Exception exception, string message, params object[] args)
+
+ +

Parameters

+
+
logger ILogger
+
+
exception Exception
+
+
message string
+
+
args object[]
+
+
+ + + + + + + + + + + + + + +

+ LogInformationAndDisplay(ILogger, string, params object[]) + +

+ +
+
+ +
+
public static void LogInformationAndDisplay(this ILogger logger, string message, params object[] args)
+
+ +

Parameters

+
+
logger ILogger
+
+
message string
+
+
args object[]
+
+
+ + + + + + + + + + + + + + +

+ LogTraceAndDisplay(ILogger, Exception, string, params object[]) + +

+ +
+
+ +
+
public static void LogTraceAndDisplay(this ILogger logger, Exception exception, string message, params object[] args)
+
+ +

Parameters

+
+
logger ILogger
+
+
exception Exception
+
+
message string
+
+
args object[]
+
+
+ + + + + + + + + + + + + + +

+ LogTraceAndDisplay(ILogger, string, params object[]) + +

+ +
+
+ +
+
public static void LogTraceAndDisplay(this ILogger logger, string message, params object[] args)
+
+ +

Parameters

+
+
logger ILogger
+
+
message string
+
+
args object[]
+
+
+ + + + + + + + + + + + + + +

+ LogWarningAndDisplay(ILogger, Exception, string, params object[]) + +

+ +
+
+ +
+
public static void LogWarningAndDisplay(this ILogger logger, Exception exception, string message, params object[] args)
+
+ +

Parameters

+
+
logger ILogger
+
+
exception Exception
+
+
message string
+
+
args object[]
+
+
+ + + + + + + + + + + + + + +

+ LogWarningAndDisplay(ILogger, string, params object[]) + +

+ +
+
+ +
+
public static void LogWarningAndDisplay(this ILogger logger, string message, params object[] args)
+
+ +

Parameters

+
+
logger ILogger
+
+
message string
+
+
args object[]
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.Logger.Extensions.html b/api/Bannerlord.ButterLib.Logger.Extensions.html new file mode 100644 index 00000000..1e7fc911 --- /dev/null +++ b/api/Bannerlord.ButterLib.Logger.Extensions.html @@ -0,0 +1,116 @@ + + + + + Namespace Bannerlord.ButterLib.Logger.Extensions + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

Namespace Bannerlord.ButterLib.Logger.Extensions +

+
+
+
+ +

Classes +

+
+
LoggerExtensions
+
+
+ + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.MBSubModuleBaseExtended.IMBSubModuleBaseEx.html b/api/Bannerlord.ButterLib.MBSubModuleBaseExtended.IMBSubModuleBaseEx.html new file mode 100644 index 00000000..b28adc41 --- /dev/null +++ b/api/Bannerlord.ButterLib.MBSubModuleBaseExtended.IMBSubModuleBaseEx.html @@ -0,0 +1,260 @@ + + + + + Interface IMBSubModuleBaseEx + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Interface IMBSubModuleBaseEx + +

+ +
+
Namespace
Bannerlord.ButterLib.MBSubModuleBaseExtended
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

An interface to use in your MBSubModuleBase-derived class. Provides new SubModule events.

+
+
+ +
+
public interface IMBSubModuleBaseEx
+
+ + + + + + + + + + + + + +

Methods +

+ + + + +

+ OnAllSubModulesUnLoaded() + +

+ +

Event that takes place right after OnSubModuleUnloaded events of all loaded submodules were handled.

+
+
+ +
+
void OnAllSubModulesUnLoaded()
+
+ + + + + + + + + + + + + + + +

+ OnBeforeInitialModuleScreenSetAsRootDelayed() + +

+ +

Event that takes place right after OnBeforeInitialModuleScreenSetAsRoot events of all loaded submodules were handled.

+
+
+ +
+
void OnBeforeInitialModuleScreenSetAsRootDelayed()
+
+ + + + + + + + + + + + + + + +

+ OnGameEndDelayed(Game) + +

+ +

Event that takes place right after OnGameEnd events of all loaded submodules were handled.

+
+
+ +
+
void OnGameEndDelayed(Game game)
+
+ +

Parameters

+
+
game Game
+
+
+ + + + + + + + + + + + + + +

+ OnGameStartDelayed(Game, IGameStarter) + +

+ +

Event that takes place right after OnGameStart events of all loaded submodules were handled.

+
+
+ +
+
void OnGameStartDelayed(Game game, IGameStarter gameStarterObject)
+
+ +

Parameters

+
+
game Game
+
+
gameStarterObject IGameStarter
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.MBSubModuleBaseExtended.MBSubModuleBaseEx.html b/api/Bannerlord.ButterLib.MBSubModuleBaseExtended.MBSubModuleBaseEx.html new file mode 100644 index 00000000..4bbd50e6 --- /dev/null +++ b/api/Bannerlord.ButterLib.MBSubModuleBaseExtended.MBSubModuleBaseEx.html @@ -0,0 +1,384 @@ + + + + + Class MBSubModuleBaseEx + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class MBSubModuleBaseEx + +

+ +
+
Namespace
Bannerlord.ButterLib.MBSubModuleBaseExtended
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

A MBSubModuleBase-derived abstract class, that provides new SubModule events.

+
+
+ +
+
public abstract class MBSubModuleBaseEx : MBSubModuleBase, IMBSubModuleBaseEx
+
+ + + + +
+
Inheritance
+
+ + +
MBSubModuleBaseEx
+
+
+ +
+
Implements
+
+ +
+
+ + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
Extension Methods
+
+ + + + + +
+ + + + + +

Methods +

+ + + + +

+ OnAllSubModulesUnLoaded() + +

+ +

Event that takes place right after OnSubModuleUnloaded events of all loaded submodules were handled.

+
+
+ +
+
public virtual void OnAllSubModulesUnLoaded()
+
+ + + + + + + + + + + + + + + +

+ OnBeforeInitialModuleScreenSetAsRootDelayed() + +

+ +

Event that takes place right after OnBeforeInitialModuleScreenSetAsRoot events of all loaded submodules were handled.

+
+
+ +
+
public virtual void OnBeforeInitialModuleScreenSetAsRootDelayed()
+
+ + + + + + + + + + + + + + + +

+ OnGameEndDelayed(Game) + +

+ +

Event that takes place right after OnGameEnd events of all loaded submodules were handled.

+
+
+ +
+
public virtual void OnGameEndDelayed(Game game)
+
+ +

Parameters

+
+
game Game
+
+
+ + + + + + + + + + + + + + +

+ OnGameStartDelayed(Game, IGameStarter) + +

+ +

Event that takes place right after OnGameStart events of all loaded submodules were handled.

+
+
+ +
+
public virtual void OnGameStartDelayed(Game game, IGameStarter gameStarterObject)
+
+ +

Parameters

+
+
game Game
+
+
gameStarterObject IGameStarter
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.MBSubModuleBaseExtended.html b/api/Bannerlord.ButterLib.MBSubModuleBaseExtended.html new file mode 100644 index 00000000..cf3c5eb0 --- /dev/null +++ b/api/Bannerlord.ButterLib.MBSubModuleBaseExtended.html @@ -0,0 +1,124 @@ + + + + + Namespace Bannerlord.ButterLib.MBSubModuleBaseExtended + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

Namespace Bannerlord.ButterLib.MBSubModuleBaseExtended +

+
+
+
+ +

Classes +

+
+
MBSubModuleBaseEx
+

A MBSubModuleBase-derived abstract class, that provides new SubModule events.

+
+
+

Interfaces +

+
+
IMBSubModuleBaseEx
+

An interface to use in your MBSubModuleBase-derived class. Provides new SubModule events.

+
+
+ + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.ObjectSystem.Extensions.MBObjectBaseExtensions.html b/api/Bannerlord.ButterLib.ObjectSystem.Extensions.MBObjectBaseExtensions.html new file mode 100644 index 00000000..80600d47 --- /dev/null +++ b/api/Bannerlord.ButterLib.ObjectSystem.Extensions.MBObjectBaseExtensions.html @@ -0,0 +1,296 @@ + + + + + Class MBObjectBaseExtensions + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class MBObjectBaseExtensions + +

+ +
+
Namespace
Bannerlord.ButterLib.ObjectSystem.Extensions
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

MBObjectBase extension methods for Object Extension Data (dynamic variable / flag storage)

+
+
+ +
+
public static class MBObjectBaseExtensions
+
+ + + + +
+
Inheritance
+
+ +
MBObjectBaseExtensions
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ HasFlag(MBObjectBase, string) + +

+ +

Check whether the flag name is set upon object.

+
+
+ +
+
public static bool HasFlag(this MBObjectBase @object, string name)
+
+ +

Parameters

+
+
object MBObjectBase
+

A game object.

+
+
name string
+

A string flag.

+
+
+ +

Returns

+
+
bool
+

true if the flag is set, else false.

+
+
+ + + + + + +

Examples

+
if (thisKingdom.HasFlag("IsRevoltFaction"))
+    continue;
+ + + + + + + + +

+ RemoveFlag(MBObjectBase, string) + +

+ +

Remove the flag name from object, if set.

+
+
+ +
+
public static void RemoveFlag(this MBObjectBase @object, string name)
+
+ +

Parameters

+
+
object MBObjectBase
+

A game object.

+
+
name string
+

A string flag.

+
+
+ + + + + + + +

Examples

+
myHero.RemoveFlag("IsImmortal");
+ + + + + + + + +

+ SetFlag(MBObjectBase, string) + +

+ +

Set the flag name upon object.

+
+
+ +
+
public static void SetFlag(this MBObjectBase @object, string name)
+
+ +

Parameters

+
+
object MBObjectBase
+

A game object.

+
+
name string
+

A string flag.

+
+
+ + + + + + + +

Examples

+
myKingdom.SetFlag("IsRevoltFaction");
+ + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.ObjectSystem.Extensions.html b/api/Bannerlord.ButterLib.ObjectSystem.Extensions.html new file mode 100644 index 00000000..b4c78c58 --- /dev/null +++ b/api/Bannerlord.ButterLib.ObjectSystem.Extensions.html @@ -0,0 +1,117 @@ + + + + + Namespace Bannerlord.ButterLib.ObjectSystem.Extensions + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

Namespace Bannerlord.ButterLib.ObjectSystem.Extensions +

+
+
+
+ +

Classes +

+
+
MBObjectBaseExtensions
+

MBObjectBase extension methods for Object Extension Data (dynamic variable / flag storage)

+
+
+ + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.ObjectSystem.IMBObjectFinder.html b/api/Bannerlord.ButterLib.ObjectSystem.IMBObjectFinder.html new file mode 100644 index 00000000..febde317 --- /dev/null +++ b/api/Bannerlord.ButterLib.ObjectSystem.IMBObjectFinder.html @@ -0,0 +1,178 @@ + + + + + Interface IMBObjectFinder + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Interface IMBObjectFinder + +

+ +
+
Namespace
Bannerlord.ButterLib.ObjectSystem
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

Finds MBObjectBase objects based on their MBGUID

+
+
+ +
+
public interface IMBObjectFinder
+
+ + + + + + + + + + + + + +

Methods +

+ + + + +

+ Find(MBGUID, Type?) + +

+ +
+
+ +
+
MBObjectBase? Find(MBGUID id, Type? type = null)
+
+ +

Parameters

+
+
id MBGUID
+
+
type Type
+
+
+ +

Returns

+
+
MBObjectBase
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.ObjectSystem.IMBObjectKeeper.html b/api/Bannerlord.ButterLib.ObjectSystem.IMBObjectKeeper.html new file mode 100644 index 00000000..35c95904 --- /dev/null +++ b/api/Bannerlord.ButterLib.ObjectSystem.IMBObjectKeeper.html @@ -0,0 +1,202 @@ + + + + + Interface IMBObjectKeeper + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Interface IMBObjectKeeper + +

+ +
+
Namespace
Bannerlord.ButterLib.ObjectSystem
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

Keeps all MBObjectBase references for custom serialization

+
+
+ +
+
public interface IMBObjectKeeper
+
+ + + + + + + + + + + + + +

Methods +

+ + + + +

+ Keep(MBObjectBase) + +

+ +
+
+ +
+
void Keep(MBObjectBase mbObject)
+
+ +

Parameters

+
+
mbObject MBObjectBase
+
+
+ + + + + + + + + + + + + + +

+ Sync(IDataStore) + +

+ +
+
+ +
+
void Sync(IDataStore dataStore)
+
+ +

Parameters

+
+
dataStore IDataStore
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.ObjectSystem.html b/api/Bannerlord.ButterLib.ObjectSystem.html new file mode 100644 index 00000000..ff338bcc --- /dev/null +++ b/api/Bannerlord.ButterLib.ObjectSystem.html @@ -0,0 +1,122 @@ + + + + + Namespace Bannerlord.ButterLib.ObjectSystem + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

Namespace Bannerlord.ButterLib.ObjectSystem +

+
+
+
+ +

Interfaces +

+
+
IMBObjectFinder
+

Finds MBObjectBase objects based on their MBGUID

+
+
+
+
IMBObjectKeeper
+

Keeps all MBObjectBase references for custom serialization

+
+
+ + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.Options.ButterLibOptions.html b/api/Bannerlord.ButterLib.Options.ButterLibOptions.html new file mode 100644 index 00000000..f0cc89ee --- /dev/null +++ b/api/Bannerlord.ButterLib.Options.ButterLibOptions.html @@ -0,0 +1,199 @@ + + + + + Class ButterLibOptions + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class ButterLibOptions + +

+ +
+
Namespace
Bannerlord.ButterLib.Options
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public sealed class ButterLibOptions
+
+ + + + +
+
Inheritance
+
+ +
ButterLibOptions
+
+
+ + + +
+
Inherited Members
+
+ + + + + + +
+ + + + + + +

Properties +

+ + + + +

+ MinLogLevel + +

+ +
+
+ +
+
public int MinLogLevel { get; set; }
+
+ + + + + +

Property Value

+
+
int
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.Options.html b/api/Bannerlord.ButterLib.Options.html new file mode 100644 index 00000000..4cd57cfb --- /dev/null +++ b/api/Bannerlord.ButterLib.Options.html @@ -0,0 +1,116 @@ + + + + + Namespace Bannerlord.ButterLib.Options + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

Namespace Bannerlord.ButterLib.Options +

+
+
+
+ +

Classes +

+
+
ButterLibOptions
+
+
+ + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SaveSystem.DictionaryToArrayConverter.html b/api/Bannerlord.ButterLib.SaveSystem.DictionaryToArrayConverter.html new file mode 100644 index 00000000..17ec1f7a --- /dev/null +++ b/api/Bannerlord.ButterLib.SaveSystem.DictionaryToArrayConverter.html @@ -0,0 +1,288 @@ + + + + + Class DictionaryToArrayConverter + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class DictionaryToArrayConverter + +

+ +
+
Namespace
Bannerlord.ButterLib.SaveSystem
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public sealed class DictionaryToArrayConverter : JsonConverter
+
+ + + + +
+
Inheritance
+
+ + +
DictionaryToArrayConverter
+
+
+ + + +
+
Inherited Members
+
+
+ JsonConverter.CanRead +
+
+ JsonConverter.CanWrite +
+ + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ CanConvert(Type) + +

+ +
+
+ +
+
public override bool CanConvert(Type objectType)
+
+ +

Parameters

+
+
objectType Type
+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + + + + +

+ ReadJson(JsonReader, Type, object?, JsonSerializer) + +

+ +
+
+ +
+
public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer)
+
+ +

Parameters

+
+
reader JsonReader
+
+
objectType Type
+
+
existingValue object
+
+
serializer JsonSerializer
+
+
+ +

Returns

+
+
object
+
+
+ + + + + + + + + + + + + +

+ WriteJson(JsonWriter, object?, JsonSerializer) + +

+ +
+
+ +
+
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
+
+ +

Parameters

+
+
writer JsonWriter
+
+
value object
+
+
serializer JsonSerializer
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SaveSystem.Extensions.IDataStoreExtensions.html b/api/Bannerlord.ButterLib.SaveSystem.Extensions.IDataStoreExtensions.html new file mode 100644 index 00000000..74f0271d --- /dev/null +++ b/api/Bannerlord.ButterLib.SaveSystem.Extensions.IDataStoreExtensions.html @@ -0,0 +1,265 @@ + + + + + Class IDataStoreExtensions + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class IDataStoreExtensions + +

+ +
+
Namespace
Bannerlord.ButterLib.SaveSystem.Extensions
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public static class IDataStoreExtensions
+
+ + + + +
+
Inheritance
+
+ +
IDataStoreExtensions
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ SyncDataAsJson<T>(IDataStore, string, ref T?, JsonSerializer) + +

+ +
+
+ +
+
public static bool SyncDataAsJson<T>(this IDataStore dataStore, string key, ref T? data, JsonSerializer serializer)
+
+ +

Parameters

+
+
dataStore IDataStore
+
+
key string
+
+
data T
+
+
serializer JsonSerializer
+
+
+ +

Returns

+
+
bool
+
+
+ +

Type Parameters

+
+
T
+
+
+ + + + + + + + + + + + +

+ SyncDataAsJson<T>(IDataStore, string, ref T?, JsonSerializerSettings?) + +

+ +
+
+ +
+
public static bool SyncDataAsJson<T>(this IDataStore dataStore, string key, ref T? data, JsonSerializerSettings? settings = null)
+
+ +

Parameters

+
+
dataStore IDataStore
+
+
key string
+
+
data T
+
+
settings JsonSerializerSettings
+
+
+ +

Returns

+
+
bool
+
+
+ +

Type Parameters

+
+
T
+
+
+ + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SaveSystem.Extensions.html b/api/Bannerlord.ButterLib.SaveSystem.Extensions.html new file mode 100644 index 00000000..b12c54ae --- /dev/null +++ b/api/Bannerlord.ButterLib.SaveSystem.Extensions.html @@ -0,0 +1,116 @@ + + + + + Namespace Bannerlord.ButterLib.SaveSystem.Extensions + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

Namespace Bannerlord.ButterLib.SaveSystem.Extensions +

+
+
+
+ +

Classes +

+
+
IDataStoreExtensions
+
+
+ + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SaveSystem.MBGUIDConverter.html b/api/Bannerlord.ButterLib.SaveSystem.MBGUIDConverter.html new file mode 100644 index 00000000..ee3da5e3 --- /dev/null +++ b/api/Bannerlord.ButterLib.SaveSystem.MBGUIDConverter.html @@ -0,0 +1,288 @@ + + + + + Class MBGUIDConverter + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class MBGUIDConverter + +

+ +
+
Namespace
Bannerlord.ButterLib.SaveSystem
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public sealed class MBGUIDConverter : JsonConverter
+
+ + + + +
+
Inheritance
+
+ + +
MBGUIDConverter
+
+
+ + + +
+
Inherited Members
+
+
+ JsonConverter.CanRead +
+
+ JsonConverter.CanWrite +
+ + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ CanConvert(Type) + +

+ +
+
+ +
+
public override bool CanConvert(Type objectType)
+
+ +

Parameters

+
+
objectType Type
+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + + + + +

+ ReadJson(JsonReader, Type, object?, JsonSerializer) + +

+ +
+
+ +
+
public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer)
+
+ +

Parameters

+
+
reader JsonReader
+
+
objectType Type
+
+
existingValue object
+
+
serializer JsonSerializer
+
+
+ +

Returns

+
+
object
+
+
+ + + + + + + + + + + + + +

+ WriteJson(JsonWriter, object?, JsonSerializer) + +

+ +
+
+ +
+
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
+
+ +

Parameters

+
+
writer JsonWriter
+
+
value object
+
+
serializer JsonSerializer
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SaveSystem.MBObjectBaseConverter.html b/api/Bannerlord.ButterLib.SaveSystem.MBObjectBaseConverter.html new file mode 100644 index 00000000..0a771236 --- /dev/null +++ b/api/Bannerlord.ButterLib.SaveSystem.MBObjectBaseConverter.html @@ -0,0 +1,288 @@ + + + + + Class MBObjectBaseConverter + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class MBObjectBaseConverter + +

+ +
+
Namespace
Bannerlord.ButterLib.SaveSystem
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public sealed class MBObjectBaseConverter : JsonConverter
+
+ + + + +
+
Inheritance
+
+ + +
MBObjectBaseConverter
+
+
+ + + +
+
Inherited Members
+
+
+ JsonConverter.CanRead +
+
+ JsonConverter.CanWrite +
+ + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ CanConvert(Type) + +

+ +
+
+ +
+
public override bool CanConvert(Type objectType)
+
+ +

Parameters

+
+
objectType Type
+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + + + + +

+ ReadJson(JsonReader, Type, object?, JsonSerializer) + +

+ +
+
+ +
+
public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer)
+
+ +

Parameters

+
+
reader JsonReader
+
+
objectType Type
+
+
existingValue object
+
+
serializer JsonSerializer
+
+
+ +

Returns

+
+
object
+
+
+ + + + + + + + + + + + + +

+ WriteJson(JsonWriter, object?, JsonSerializer) + +

+ +
+
+ +
+
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
+
+ +

Parameters

+
+
writer JsonWriter
+
+
value object
+
+
serializer JsonSerializer
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolver.html b/api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolver.html new file mode 100644 index 00000000..3412a4a7 --- /dev/null +++ b/api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolver.html @@ -0,0 +1,307 @@ + + + + + Class TaleWorldsContractResolver + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class TaleWorldsContractResolver + +

+ +
+
Namespace
Bannerlord.ButterLib.SaveSystem
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public class TaleWorldsContractResolver : TaleWorldsContractResolverBase, IContractResolver
+
+ + + + +
+
Inheritance
+
+ + + +
TaleWorldsContractResolver
+
+
+ +
+
Implements
+
+ +
+
+ + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + +
+ DefaultContractResolver.DynamicCodeGeneration +
+
+ DefaultContractResolver.DefaultMembersSearchFlags +
+
+ DefaultContractResolver.SerializeCompilerGeneratedMembers +
+
+ DefaultContractResolver.IgnoreSerializableInterface +
+
+ DefaultContractResolver.IgnoreSerializableAttribute +
+
+ DefaultContractResolver.IgnoreIsSpecifiedMembers +
+
+ DefaultContractResolver.IgnoreShouldSerializeMembers +
+
+ DefaultContractResolver.NamingStrategy +
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ CreateProperties(Type, MemberSerialization) + +

+ +
+
+ +
+
protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
+
+ +

Parameters

+
+
type Type
+
+
memberSerialization MemberSerialization
+
+
+ +

Returns

+
+
IList<JsonProperty>
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.IsContainerDelegate.html b/api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.IsContainerDelegate.html new file mode 100644 index 00000000..a598df29 --- /dev/null +++ b/api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.IsContainerDelegate.html @@ -0,0 +1,145 @@ + + + + + Delegate TaleWorldsContractResolverBase.IsContainerDelegate + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Delegate TaleWorldsContractResolverBase.IsContainerDelegate + +

+ +
+
Namespace
Bannerlord.ButterLib.SaveSystem
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
protected delegate bool TaleWorldsContractResolverBase.IsContainerDelegate(Type type)
+
+ +

Parameters

+
+
type Type
+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.html b/api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.html new file mode 100644 index 00000000..2e2c330f --- /dev/null +++ b/api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.html @@ -0,0 +1,341 @@ + + + + + Class TaleWorldsContractResolverBase + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class TaleWorldsContractResolverBase + +

+ +
+
Namespace
Bannerlord.ButterLib.SaveSystem
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public class TaleWorldsContractResolverBase : DefaultContractResolver, IContractResolver
+
+ + + + +
+
Inheritance
+
+ + +
TaleWorldsContractResolverBase
+
+
+ +
+
Implements
+
+ +
+
+ +
+
Derived
+
+ +
+
+ +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + +
+ DefaultContractResolver.DynamicCodeGeneration +
+
+ DefaultContractResolver.DefaultMembersSearchFlags +
+
+ DefaultContractResolver.SerializeCompilerGeneratedMembers +
+
+ DefaultContractResolver.IgnoreSerializableInterface +
+
+ DefaultContractResolver.IgnoreSerializableAttribute +
+
+ DefaultContractResolver.IgnoreIsSpecifiedMembers +
+
+ DefaultContractResolver.IgnoreShouldSerializeMembers +
+
+ DefaultContractResolver.NamingStrategy +
+ + + + + + + +
+ + + + + + +

Fields +

+ + + +

+ _isContainerDelegate + +

+ +
+
+ +
+
protected static readonly TaleWorldsContractResolverBase.IsContainerDelegate? _isContainerDelegate
+
+ + + + +

Field Value

+
+
TaleWorldsContractResolverBase.IsContainerDelegate
+
+
+ + + + + + + + + +

Methods +

+ + + + +

+ IsContainerFallback(Type) + +

+ +
+
+ +
+
protected static bool IsContainerFallback(Type type)
+
+ +

Parameters

+
+
type Type
+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SaveSystem.html b/api/Bannerlord.ButterLib.SaveSystem.html new file mode 100644 index 00000000..5fb85a2e --- /dev/null +++ b/api/Bannerlord.ButterLib.SaveSystem.html @@ -0,0 +1,138 @@ + + + + + Namespace Bannerlord.ButterLib.SaveSystem + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ + + +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseListWrapper.html b/api/Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseListWrapper.html new file mode 100644 index 00000000..1cc158d4 --- /dev/null +++ b/api/Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseListWrapper.html @@ -0,0 +1,970 @@ + + + + + Class MBSubModuleBaseListWrapper + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class MBSubModuleBaseListWrapper + +

+ +
+
Namespace
Bannerlord.ButterLib.SubModuleWrappers2
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

Wraps several MBSubModuleBase so when the game calls any method, it +will be passed to its children.

+
+
+ +
+
public class MBSubModuleBaseListWrapper : MBSubModuleBase
+
+ + + + +
+
Inheritance
+
+ + +
MBSubModuleBaseListWrapper
+
+
+ + +
+
Derived
+
+ +
+
+ +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + +
+ + + + + +

Fields +

+ + + +

+ _subModules + +

+ +
+
+ +
+
protected readonly List<MBSubModuleBaseWrapper> _subModules
+
+ + + + +

Field Value

+
+
List<MBSubModuleBaseWrapper>
+
+
+ + + + + + + + + +

Properties +

+ + + + +

+ SubModules + +

+ +
+
+ +
+
public IReadOnlyList<MBSubModuleBaseWrapper> SubModules { get; }
+
+ + + + + +

Property Value

+
+
IReadOnlyList<MBSubModuleBaseWrapper>
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ AfterAsyncTickTick(float) + +

+ +
+
+ +
+
public virtual void AfterAsyncTickTick(float dt)
+
+ +

Parameters

+
+
dt float
+
+
+ + + + + + + + + + + + + + +

+ AfterRegisterSubModuleObjects(bool) + +

+ +
+
+ +
+
public virtual void AfterRegisterSubModuleObjects(bool isSavedCampaign)
+
+ +

Parameters

+
+
isSavedCampaign bool
+
+
+ + + + + + + + + + + + + + +

+ BeginGameStart(Game) + +

+ +
+
+ +
+
public virtual void BeginGameStart(Game game)
+
+ +

Parameters

+
+
game Game
+
+
+ + + + + + + + + + + + + + +

+ DoLoading(Game) + +

+ +
+
+ +
+
public virtual bool DoLoading(Game game)
+
+ +

Parameters

+
+
game Game
+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + + + + +

+ InitializeGameStarter(Game, IGameStarter) + +

+ +
+
+ +
+
public virtual void InitializeGameStarter(Game game, IGameStarter starterObject)
+
+ +

Parameters

+
+
game Game
+
+
starterObject IGameStarter
+
+
+ + + + + + + + + + + + + + +

+ OnAfterGameInitializationFinished(Game, object) + +

+ +
+
+ +
+
public virtual void OnAfterGameInitializationFinished(Game game, object starterObject)
+
+ +

Parameters

+
+
game Game
+
+
starterObject object
+
+
+ + + + + + + + + + + + + + +

+ OnApplicationTick(float) + +

+ +
+
+ +
+
public virtual void OnApplicationTick(float dt)
+
+ +

Parameters

+
+
dt float
+
+
+ + + + + + + + + + + + + + +

+ OnBeforeInitialModuleScreenSetAsRoot() + +

+ +
+
+ +
+
public virtual void OnBeforeInitialModuleScreenSetAsRoot()
+
+ + + + + + + + + + + + + + + +

+ OnBeforeMissionBehaviorInitialize(Mission) + +

+ +
+
+ +
+
public virtual void OnBeforeMissionBehaviorInitialize(Mission mission)
+
+ +

Parameters

+
+
mission Mission
+
+
+ + + + + + + + + + + + + + +

+ OnCampaignStart(Game, object) + +

+ +
+
+ +
+
public virtual void OnCampaignStart(Game game, object starterObject)
+
+ +

Parameters

+
+
game Game
+
+
starterObject object
+
+
+ + + + + + + + + + + + + + +

+ OnConfigChanged() + +

+ +
+
+ +
+
public virtual void OnConfigChanged()
+
+ + + + + + + + + + + + + + + +

+ OnGameEnd(Game) + +

+ +
+
+ +
+
public virtual void OnGameEnd(Game game)
+
+ +

Parameters

+
+
game Game
+
+
+ + + + + + + + + + + + + + +

+ OnGameInitializationFinished(Game) + +

+ +
+
+ +
+
public virtual void OnGameInitializationFinished(Game game)
+
+ +

Parameters

+
+
game Game
+
+
+ + + + + + + + + + + + + + +

+ OnGameLoaded(Game, object) + +

+ +
+
+ +
+
public virtual void OnGameLoaded(Game game, object initializerObject)
+
+ +

Parameters

+
+
game Game
+
+
initializerObject object
+
+
+ + + + + + + + + + + + + + +

+ OnGameStart(Game, IGameStarter) + +

+ +
+
+ +
+
public virtual void OnGameStart(Game game, IGameStarter gameStarterObject)
+
+ +

Parameters

+
+
game Game
+
+
gameStarterObject IGameStarter
+
+
+ + + + + + + + + + + + + + +

+ OnInitialState() + +

+ +
+
+ +
+
public virtual void OnInitialState()
+
+ + + + + + + + + + + + + + + +

+ OnMissionBehaviorInitialize(Mission) + +

+ +
+
+ +
+
public virtual void OnMissionBehaviorInitialize(Mission mission)
+
+ +

Parameters

+
+
mission Mission
+
+
+ + + + + + + + + + + + + + +

+ OnMultiplayerGameStart(Game, object) + +

+ +
+
+ +
+
public virtual void OnMultiplayerGameStart(Game game, object starterObject)
+
+ +

Parameters

+
+
game Game
+
+
starterObject object
+
+
+ + + + + + + + + + + + + + +

+ OnNewGameCreated(Game, object) + +

+ +
+
+ +
+
public virtual void OnNewGameCreated(Game game, object initializerObject)
+
+ +

Parameters

+
+
game Game
+
+
initializerObject object
+
+
+ + + + + + + + + + + + + + +

+ OnServiceRegistration() + +

+ +
+
+ +
+
public virtual void OnServiceRegistration()
+
+ + + + + + + + + + + + + + + +

+ OnSubModuleLoad() + +

+ +
+
+ +
+
public virtual void OnSubModuleLoad()
+
+ + + + + + + + + + + + + + + +

+ OnSubModuleUnloaded() + +

+ +
+
+ +
+
public virtual void OnSubModuleUnloaded()
+
+ + + + + + + + + + + + + + + +

+ RegisterSubModuleObjects(bool) + +

+ +
+
+ +
+
public virtual void RegisterSubModuleObjects(bool isSavedCampaign)
+
+ +

Parameters

+
+
isSavedCampaign bool
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseWrapper.html b/api/Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseWrapper.html new file mode 100644 index 00000000..875f947d --- /dev/null +++ b/api/Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseWrapper.html @@ -0,0 +1,965 @@ + + + + + Class MBSubModuleBaseWrapper + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class MBSubModuleBaseWrapper + +

+ +
+
Namespace
Bannerlord.ButterLib.SubModuleWrappers2
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

Wraps a MBSubModuleBase so protected methods could be called +without a performance hit

+
+
+ +
+
public class MBSubModuleBaseWrapper : MBSubModuleBase
+
+ + + + +
+
Inheritance
+
+ + +
MBSubModuleBaseWrapper
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + +
+ + + + + +

Constructors +

+ + + + +

+ MBSubModuleBaseWrapper(MBSubModuleBase) + +

+ +
+
+ +
+
public MBSubModuleBaseWrapper(MBSubModuleBase subModule)
+
+ +

Parameters

+
+
subModule MBSubModuleBase
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ SubModule + +

+ +
+
+ +
+
public MBSubModuleBase SubModule { get; }
+
+ + + + + +

Property Value

+
+
MBSubModuleBase
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ AfterAsyncTickTick(float) + +

+ +
+
+ +
+
public virtual void AfterAsyncTickTick(float dt)
+
+ +

Parameters

+
+
dt float
+
+
+ + + + + + + + + + + + + + +

+ AfterRegisterSubModuleObjects(bool) + +

+ +
+
+ +
+
public virtual void AfterRegisterSubModuleObjects(bool isSavedCampaign)
+
+ +

Parameters

+
+
isSavedCampaign bool
+
+
+ + + + + + + + + + + + + + +

+ BeginGameStart(Game) + +

+ +
+
+ +
+
public virtual void BeginGameStart(Game game)
+
+ +

Parameters

+
+
game Game
+
+
+ + + + + + + + + + + + + + +

+ DoLoading(Game) + +

+ +
+
+ +
+
public virtual bool DoLoading(Game game)
+
+ +

Parameters

+
+
game Game
+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + + + + +

+ InitializeGameStarter(Game, IGameStarter) + +

+ +
+
+ +
+
public virtual void InitializeGameStarter(Game game, IGameStarter starterObject)
+
+ +

Parameters

+
+
game Game
+
+
starterObject IGameStarter
+
+
+ + + + + + + + + + + + + + +

+ OnAfterGameInitializationFinished(Game, object) + +

+ +
+
+ +
+
public virtual void OnAfterGameInitializationFinished(Game game, object starterObject)
+
+ +

Parameters

+
+
game Game
+
+
starterObject object
+
+
+ + + + + + + + + + + + + + +

+ OnApplicationTick(float) + +

+ +
+
+ +
+
public virtual void OnApplicationTick(float dt)
+
+ +

Parameters

+
+
dt float
+
+
+ + + + + + + + + + + + + + +

+ OnBeforeInitialModuleScreenSetAsRoot() + +

+ +
+
+ +
+
public virtual void OnBeforeInitialModuleScreenSetAsRoot()
+
+ + + + + + + + + + + + + + + +

+ OnBeforeMissionBehaviorInitialize(Mission) + +

+ +
+
+ +
+
public virtual void OnBeforeMissionBehaviorInitialize(Mission mission)
+
+ +

Parameters

+
+
mission Mission
+
+
+ + + + + + + + + + + + + + +

+ OnCampaignStart(Game, object) + +

+ +
+
+ +
+
public virtual void OnCampaignStart(Game game, object starterObject)
+
+ +

Parameters

+
+
game Game
+
+
starterObject object
+
+
+ + + + + + + + + + + + + + +

+ OnConfigChanged() + +

+ +
+
+ +
+
public virtual void OnConfigChanged()
+
+ + + + + + + + + + + + + + + +

+ OnGameEnd(Game) + +

+ +
+
+ +
+
public virtual void OnGameEnd(Game game)
+
+ +

Parameters

+
+
game Game
+
+
+ + + + + + + + + + + + + + +

+ OnGameInitializationFinished(Game) + +

+ +
+
+ +
+
public virtual void OnGameInitializationFinished(Game game)
+
+ +

Parameters

+
+
game Game
+
+
+ + + + + + + + + + + + + + +

+ OnGameLoaded(Game, object) + +

+ +
+
+ +
+
public virtual void OnGameLoaded(Game game, object initializerObject)
+
+ +

Parameters

+
+
game Game
+
+
initializerObject object
+
+
+ + + + + + + + + + + + + + +

+ OnGameStart(Game, IGameStarter) + +

+ +
+
+ +
+
public virtual void OnGameStart(Game game, IGameStarter gameStarterObject)
+
+ +

Parameters

+
+
game Game
+
+
gameStarterObject IGameStarter
+
+
+ + + + + + + + + + + + + + +

+ OnInitialState() + +

+ +
+
+ +
+
public virtual void OnInitialState()
+
+ + + + + + + + + + + + + + + +

+ OnMissionBehaviorInitialize(Mission) + +

+ +
+
+ +
+
public virtual void OnMissionBehaviorInitialize(Mission mission)
+
+ +

Parameters

+
+
mission Mission
+
+
+ + + + + + + + + + + + + + +

+ OnMultiplayerGameStart(Game, object) + +

+ +
+
+ +
+
public virtual void OnMultiplayerGameStart(Game game, object starterObject)
+
+ +

Parameters

+
+
game Game
+
+
starterObject object
+
+
+ + + + + + + + + + + + + + +

+ OnNewGameCreated(Game, object) + +

+ +
+
+ +
+
public virtual void OnNewGameCreated(Game game, object initializerObject)
+
+ +

Parameters

+
+
game Game
+
+
initializerObject object
+
+
+ + + + + + + + + + + + + + +

+ OnServiceRegistration() + +

+ +
+
+ +
+
public virtual void OnServiceRegistration()
+
+ + + + + + + + + + + + + + + +

+ OnSubModuleLoad() + +

+ +
+
+ +
+
public virtual void OnSubModuleLoad()
+
+ + + + + + + + + + + + + + + +

+ OnSubModuleUnloaded() + +

+ +
+
+ +
+
public virtual void OnSubModuleUnloaded()
+
+ + + + + + + + + + + + + + + +

+ RegisterSubModuleObjects(bool) + +

+ +
+
+ +
+
public virtual void RegisterSubModuleObjects(bool isSavedCampaign)
+
+ +

Parameters

+
+
isSavedCampaign bool
+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SubModuleWrappers2.html b/api/Bannerlord.ButterLib.SubModuleWrappers2.html new file mode 100644 index 00000000..a1ed69f6 --- /dev/null +++ b/api/Bannerlord.ButterLib.SubModuleWrappers2.html @@ -0,0 +1,124 @@ + + + + + Namespace Bannerlord.ButterLib.SubModuleWrappers2 + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ + + +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SubSystems.ISubSystem.html b/api/Bannerlord.ButterLib.SubSystems.ISubSystem.html new file mode 100644 index 00000000..1aabe7fa --- /dev/null +++ b/api/Bannerlord.ButterLib.SubSystems.ISubSystem.html @@ -0,0 +1,381 @@ + + + + + Interface ISubSystem + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Interface ISubSystem + +

+ +
+
Namespace
Bannerlord.ButterLib.SubSystems
+
Assembly
Bannerlord.ButterLib.dll
+
+ +
+
+ +
+
public interface ISubSystem
+
+ + + + + + + + + + + + + +

Properties +

+ + + + +

+ CanBeDisabled + +

+ +
+
+ +
+
bool CanBeDisabled { get; }
+
+ + + + + +

Property Value

+
+
bool
+
+
+ + + + + + + + + + +

+ CanBeSwitchedAtRuntime + +

+ +
+
+ +
+
bool CanBeSwitchedAtRuntime { get; }
+
+ + + + + +

Property Value

+
+
bool
+
+
+ + + + + + + + + + +

+ Description + +

+ +
+
+ +
+
string Description { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ Id + +

+ +
+
+ +
+
string Id { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ IsEnabled + +

+ +
+
+ +
+
bool IsEnabled { get; }
+
+ + + + + +

Property Value

+
+
bool
+
+
+ + + + + + + + + + +

+ Name + +

+ +
+
+ +
+
string Name { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ Disable() + +

+ +
+
+ +
+
void Disable()
+
+ + + + + + + + + + + + + + + +

+ Enable() + +

+ +
+
+ +
+
void Enable()
+
+ + + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SubSystems.Settings.ISubSystemSettings-1.html b/api/Bannerlord.ButterLib.SubSystems.Settings.ISubSystemSettings-1.html new file mode 100644 index 00000000..6b46a42d --- /dev/null +++ b/api/Bannerlord.ButterLib.SubSystems.Settings.ISubSystemSettings-1.html @@ -0,0 +1,179 @@ + + + + + Interface ISubSystemSettings<TSubSystem> + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Interface ISubSystemSettings<TSubSystem> + +

+ +
+
Namespace
Bannerlord.ButterLib.SubSystems.Settings
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

An interface for foreign entities like MCM to get settings of the TSubSystem.

+
+
+ +
+
public interface ISubSystemSettings<TSubSystem> where TSubSystem : ISubSystem
+
+ + + +

Type Parameters

+
+
TSubSystem
+

The ISubSystem that exposes the settings.

+
+
+ + + + + + + + + + +

Properties +

+ + + + +

+ Declarations + +

+ + +
+ +
+
IReadOnlyCollection<SubSystemSettingsDeclaration<TSubSystem>> Declarations { get; }
+
+ + + + + +

Property Value

+
+
IReadOnlyCollection<SubSystemSettingsDeclaration<TSubSystem>>
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsDeclaration-1.html b/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsDeclaration-1.html new file mode 100644 index 00000000..b86abf79 --- /dev/null +++ b/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsDeclaration-1.html @@ -0,0 +1,294 @@ + + + + + Class SubSystemSettingsDeclaration<TSubSystem> + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class SubSystemSettingsDeclaration<TSubSystem> + +

+ +
+
Namespace
Bannerlord.ButterLib.SubSystems.Settings
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

The basic declaration entity.

+
+
+ +
+
public abstract record SubSystemSettingsDeclaration<TSubSystem> : IEquatable<SubSystemSettingsDeclaration<TSubSystem>> where TSubSystem : ISubSystem
+
+ + + +

Type Parameters

+
+
TSubSystem
+

The ISubSystem that exposes the settings.

+
+
+ +
+
Inheritance
+
+ +
SubSystemSettingsDeclaration<TSubSystem>
+
+
+ +
+
Implements
+
+ +
+
+ +
+
Derived
+
+ +
+
+ +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ SubSystemSettingsDeclaration(string, string) + +

+ +

The basic declaration entity.

+
+
+ +
+
protected SubSystemSettingsDeclaration(string Name, string Description)
+
+ +

Parameters

+
+
Name string
+

The name of the settings entry.

+
+
Description string
+

The description of the settings entry.

+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Description + +

+ +

The description of the settings entry.

+
+
+ +
+
public string Description { get; init; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ Name + +

+ +

The name of the settings entry.

+
+
+ +
+
public string Name { get; init; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsProperty-2.html b/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsProperty-2.html new file mode 100644 index 00000000..b54bcbb7 --- /dev/null +++ b/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsProperty-2.html @@ -0,0 +1,280 @@ + + + + + Class SubSystemSettingsProperty<TSubSystem, TProperty> + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class SubSystemSettingsProperty<TSubSystem, TProperty> + +

+ +
+
Namespace
Bannerlord.ButterLib.SubSystems.Settings
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

A property based declaration.

+
+
+ +
+
public abstract record SubSystemSettingsProperty<TSubSystem, TProperty> : SubSystemSettingsDeclaration<TSubSystem>, IEquatable<SubSystemSettingsDeclaration<TSubSystem>>, IEquatable<SubSystemSettingsProperty<TSubSystem, TProperty>> where TSubSystem : ISubSystem
+
+ + + +

Type Parameters

+
+
TSubSystem
+

The ISubSystem that exposes the settings.

+
+
TProperty
+

Type of the property.

+
+
+ +
+
Inheritance
+
+ + +
SubSystemSettingsProperty<TSubSystem, TProperty>
+
+
+ +
+
Implements
+
+ +
IEquatable<SubSystemSettingsProperty<TSubSystem, TProperty>>
+
+
+ +
+
Derived
+
+ + + + + +
+
+ +
+
Inherited Members
+
+ + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ SubSystemSettingsProperty(string, string, Expression<Func<TSubSystem, TProperty>>) + +

+ +

A property based declaration.

+
+
+ +
+
protected SubSystemSettingsProperty(string Name, string Description, Expression<Func<TSubSystem, TProperty>> Property)
+
+ +

Parameters

+
+
Name string
+

The name of the settings entry.

+
+
Description string
+

The description of the settings entry.

+
+
Property Expression<Func<TSubSystem, TProperty>>
+

And expression that references the property.

+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Property + +

+ +

And expression that references the property.

+
+
+ +
+
public Expression<Func<TSubSystem, TProperty>> Property { get; init; }
+
+ + + + + +

Property Value

+
+
Expression<Func<TSubSystem, TProperty>>
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyBool-1.html b/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyBool-1.html new file mode 100644 index 00000000..da7973b1 --- /dev/null +++ b/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyBool-1.html @@ -0,0 +1,236 @@ + + + + + Class SubSystemSettingsPropertyBool<TSubSystem> + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class SubSystemSettingsPropertyBool<TSubSystem> + +

+ +
+
Namespace
Bannerlord.ButterLib.SubSystems.Settings
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

A property based declaration.

+
+
+ +
+
public record SubSystemSettingsPropertyBool<TSubSystem> : SubSystemSettingsProperty<TSubSystem, bool>, IEquatable<SubSystemSettingsDeclaration<TSubSystem>>, IEquatable<SubSystemSettingsProperty<TSubSystem, bool>>, IEquatable<SubSystemSettingsPropertyBool<TSubSystem>> where TSubSystem : ISubSystem
+
+ + + +

Type Parameters

+
+
TSubSystem
+

The ISubSystem that exposes the settings.

+
+
+ +
+
Inheritance
+
+ + + +
SubSystemSettingsPropertyBool<TSubSystem>
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ SubSystemSettingsPropertyBool(string, string, Expression<Func<TSubSystem, bool>>) + +

+ +

A property based declaration.

+
+
+ +
+
public SubSystemSettingsPropertyBool(string Name, string Description, Expression<Func<TSubSystem, bool>> Property)
+
+ +

Parameters

+
+
Name string
+

The name of the settings entry.

+
+
Description string
+

The description of the settings entry.

+
+
Property Expression<Func<TSubSystem, bool>>
+

And expression that references the property.

+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyDropdown-1.html b/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyDropdown-1.html new file mode 100644 index 00000000..43ad1352 --- /dev/null +++ b/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyDropdown-1.html @@ -0,0 +1,270 @@ + + + + + Class SubSystemSettingsPropertyDropdown<TSubSystem> + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class SubSystemSettingsPropertyDropdown<TSubSystem> + +

+ +
+
Namespace
Bannerlord.ButterLib.SubSystems.Settings
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

A property based declaration.

+
+
+ +
+
public record SubSystemSettingsPropertyDropdown<TSubSystem> : SubSystemSettingsProperty<TSubSystem, IList<string>>, IEquatable<SubSystemSettingsDeclaration<TSubSystem>>, IEquatable<SubSystemSettingsProperty<TSubSystem, IList<string>>>, IEquatable<SubSystemSettingsPropertyDropdown<TSubSystem>> where TSubSystem : ISubSystem
+
+ + + +

Type Parameters

+
+
TSubSystem
+

The ISubSystem that exposes the settings.

+
+
+ +
+
Inheritance
+
+ + + +
SubSystemSettingsPropertyDropdown<TSubSystem>
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ SubSystemSettingsPropertyDropdown(string, string, Expression<Func<TSubSystem, IList<string>>>, int) + +

+ + +
+ +
+
public SubSystemSettingsPropertyDropdown(string Name, string Description, Expression<Func<TSubSystem, IList<string>>> Property, int SelectedIndex)
+
+ +

Parameters

+
+
Name string
+
+
Description string
+
+
Property Expression<Func<TSubSystem, IList<string>>>
+
+
SelectedIndex int
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ SelectedIndex + +

+ +
+
+ +
+
public int SelectedIndex { get; init; }
+
+ + + + + +

Property Value

+
+
int
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyFloat-1.html b/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyFloat-1.html new file mode 100644 index 00000000..061d0383 --- /dev/null +++ b/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyFloat-1.html @@ -0,0 +1,303 @@ + + + + + Class SubSystemSettingsPropertyFloat<TSubSystem> + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class SubSystemSettingsPropertyFloat<TSubSystem> + +

+ +
+
Namespace
Bannerlord.ButterLib.SubSystems.Settings
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

A property based declaration.

+
+
+ +
+
public record SubSystemSettingsPropertyFloat<TSubSystem> : SubSystemSettingsProperty<TSubSystem, float>, IEquatable<SubSystemSettingsDeclaration<TSubSystem>>, IEquatable<SubSystemSettingsProperty<TSubSystem, float>>, IEquatable<SubSystemSettingsPropertyFloat<TSubSystem>> where TSubSystem : ISubSystem
+
+ + + +

Type Parameters

+
+
TSubSystem
+

The ISubSystem that exposes the settings.

+
+
+ +
+
Inheritance
+
+ + + +
SubSystemSettingsPropertyFloat<TSubSystem>
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ SubSystemSettingsPropertyFloat(string, string, Expression<Func<TSubSystem, float>>, float, float) + +

+ +

A numeric based on a float property.

+
+
+ +
+
public SubSystemSettingsPropertyFloat(string Name, string Description, Expression<Func<TSubSystem, float>> Property, float MinValue, float MaxValue)
+
+ +

Parameters

+
+
Name string
+
+
Description string
+
+
Property Expression<Func<TSubSystem, float>>
+
+
MinValue float
+
+
MaxValue float
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ MaxValue + +

+ +
+
+ +
+
public float MaxValue { get; init; }
+
+ + + + + +

Property Value

+
+
float
+
+
+ + + + + + + + + + +

+ MinValue + +

+ +
+
+ +
+
public float MinValue { get; init; }
+
+ + + + + +

Property Value

+
+
float
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyInt-1.html b/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyInt-1.html new file mode 100644 index 00000000..10ddb114 --- /dev/null +++ b/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyInt-1.html @@ -0,0 +1,303 @@ + + + + + Class SubSystemSettingsPropertyInt<TSubSystem> + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class SubSystemSettingsPropertyInt<TSubSystem> + +

+ +
+
Namespace
Bannerlord.ButterLib.SubSystems.Settings
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

A property based declaration.

+
+
+ +
+
public record SubSystemSettingsPropertyInt<TSubSystem> : SubSystemSettingsProperty<TSubSystem, int>, IEquatable<SubSystemSettingsDeclaration<TSubSystem>>, IEquatable<SubSystemSettingsProperty<TSubSystem, int>>, IEquatable<SubSystemSettingsPropertyInt<TSubSystem>> where TSubSystem : ISubSystem
+
+ + + +

Type Parameters

+
+
TSubSystem
+

The ISubSystem that exposes the settings.

+
+
+ +
+
Inheritance
+
+ + + +
SubSystemSettingsPropertyInt<TSubSystem>
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ SubSystemSettingsPropertyInt(string, string, Expression<Func<TSubSystem, int>>, int, int) + +

+ +

A numeric based on a float property.

+
+
+ +
+
public SubSystemSettingsPropertyInt(string Name, string Description, Expression<Func<TSubSystem, int>> Property, int MinValue, int MaxValue)
+
+ +

Parameters

+
+
Name string
+
+
Description string
+
+
Property Expression<Func<TSubSystem, int>>
+
+
MinValue int
+
+
MaxValue int
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ MaxValue + +

+ +
+
+ +
+
public int MaxValue { get; init; }
+
+ + + + + +

Property Value

+
+
int
+
+
+ + + + + + + + + + +

+ MinValue + +

+ +
+
+ +
+
public int MinValue { get; init; }
+
+ + + + + +

Property Value

+
+
int
+
+
+ + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyText-1.html b/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyText-1.html new file mode 100644 index 00000000..e551fc19 --- /dev/null +++ b/api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyText-1.html @@ -0,0 +1,236 @@ + + + + + Class SubSystemSettingsPropertyText<TSubSystem> + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+ Class SubSystemSettingsPropertyText<TSubSystem> + +

+ +
+
Namespace
Bannerlord.ButterLib.SubSystems.Settings
+
Assembly
Bannerlord.ButterLib.dll
+
+ +

A property based declaration.

+
+
+ +
+
public record SubSystemSettingsPropertyText<TSubSystem> : SubSystemSettingsProperty<TSubSystem, string>, IEquatable<SubSystemSettingsDeclaration<TSubSystem>>, IEquatable<SubSystemSettingsProperty<TSubSystem, string>>, IEquatable<SubSystemSettingsPropertyText<TSubSystem>> where TSubSystem : ISubSystem
+
+ + + +

Type Parameters

+
+
TSubSystem
+

The ISubSystem that exposes the settings.

+
+
+ +
+
Inheritance
+
+ + + +
SubSystemSettingsPropertyText<TSubSystem>
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + + + + +
+ + + + + + +

Constructors +

+ + + + +

+ SubSystemSettingsPropertyText(string, string, Expression<Func<TSubSystem, string>>) + +

+ +

A property based declaration.

+
+
+ +
+
public SubSystemSettingsPropertyText(string Name, string Description, Expression<Func<TSubSystem, string>> Property)
+
+ +

Parameters

+
+
Name string
+

The name of the settings entry.

+
+
Description string
+

The description of the settings entry.

+
+
Property Expression<Func<TSubSystem, string>>
+

And expression that references the property.

+
+
+ + + + + + + + + + + + + +
+ + + + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SubSystems.Settings.html b/api/Bannerlord.ButterLib.SubSystems.Settings.html new file mode 100644 index 00000000..f16e8395 --- /dev/null +++ b/api/Bannerlord.ButterLib.SubSystems.Settings.html @@ -0,0 +1,154 @@ + + + + + Namespace Bannerlord.ButterLib.SubSystems.Settings + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

Namespace Bannerlord.ButterLib.SubSystems.Settings +

+
+
+
+ +

Classes +

+
+
SubSystemSettingsDeclaration<TSubSystem>
+

The basic declaration entity.

+
+
+
+
SubSystemSettingsPropertyBool<TSubSystem>
+

A property based declaration.

+
+
+
+
SubSystemSettingsPropertyDropdown<TSubSystem>
+

A property based declaration.

+
+
+
+
SubSystemSettingsPropertyFloat<TSubSystem>
+

A property based declaration.

+
+
+
+
SubSystemSettingsPropertyInt<TSubSystem>
+

A property based declaration.

+
+
+
+
SubSystemSettingsPropertyText<TSubSystem>
+

A property based declaration.

+
+
+
+
SubSystemSettingsProperty<TSubSystem, TProperty>
+

A property based declaration.

+
+
+

Interfaces +

+
+
ISubSystemSettings<TSubSystem>
+

An interface for foreign entities like MCM to get settings of the TSubSystem.

+
+
+ + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.SubSystems.html b/api/Bannerlord.ButterLib.SubSystems.html new file mode 100644 index 00000000..44d82940 --- /dev/null +++ b/api/Bannerlord.ButterLib.SubSystems.html @@ -0,0 +1,116 @@ + + + + + Namespace Bannerlord.ButterLib.SubSystems + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

Namespace Bannerlord.ButterLib.SubSystems +

+
+
+
+ +

Interfaces +

+
+
ISubSystem
+
+
+ + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/Bannerlord.ButterLib.html b/api/Bannerlord.ButterLib.html new file mode 100644 index 00000000..fde0503e --- /dev/null +++ b/api/Bannerlord.ButterLib.html @@ -0,0 +1,127 @@ + + + + + Namespace Bannerlord.ButterLib + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ + + +
+
+ + +
+ +
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/api/toc.html b/api/toc.html new file mode 100644 index 00000000..4bb7cfef --- /dev/null +++ b/api/toc.html @@ -0,0 +1,341 @@ + +
+
+
+
+ + + +
+
+
+
+ + +
+
+
+
\ No newline at end of file diff --git a/api/toc.json b/api/toc.json new file mode 100644 index 00000000..45a757f9 --- /dev/null +++ b/api/toc.json @@ -0,0 +1,2 @@ + +{"items":[{"name":"Bannerlord.BLSE","href":"Bannerlord.BLSE.html","topicHref":"Bannerlord.BLSE.html","topicUid":"Bannerlord.BLSE","items":[{"name":"BLSEExceptionHandlerAttribute","href":"Bannerlord.BLSE.BLSEExceptionHandlerAttribute.html","topicHref":"Bannerlord.BLSE.BLSEExceptionHandlerAttribute.html","topicUid":"Bannerlord.BLSE.BLSEExceptionHandlerAttribute"}]},{"name":"Bannerlord.BUTR.Shared.Utils","href":"Bannerlord.BUTR.Shared.Utils.html","topicHref":"Bannerlord.BUTR.Shared.Utils.html","topicUid":"Bannerlord.BUTR.Shared.Utils","items":[{"name":"MBSubModuleBaseSimpleWrapper","href":"Bannerlord.BUTR.Shared.Utils.MBSubModuleBaseSimpleWrapper.html","topicHref":"Bannerlord.BUTR.Shared.Utils.MBSubModuleBaseSimpleWrapper.html","topicUid":"Bannerlord.BUTR.Shared.Utils.MBSubModuleBaseSimpleWrapper"}]},{"name":"Bannerlord.ButterLib","href":"Bannerlord.ButterLib.html","topicHref":"Bannerlord.ButterLib.html","topicUid":"Bannerlord.ButterLib","items":[{"name":"ButterLibSaveableTypeDefiner","href":"Bannerlord.ButterLib.ButterLibSaveableTypeDefiner.html","topicHref":"Bannerlord.ButterLib.ButterLibSaveableTypeDefiner.html","topicUid":"Bannerlord.ButterLib.ButterLibSaveableTypeDefiner"},{"name":"ButterLibSubModule","href":"Bannerlord.ButterLib.ButterLibSubModule.html","topicHref":"Bannerlord.ButterLib.ButterLibSubModule.html","topicUid":"Bannerlord.ButterLib.ButterLibSubModule"},{"name":"ImplementationLoaderSubModule","href":"Bannerlord.ButterLib.ImplementationLoaderSubModule.html","topicHref":"Bannerlord.ButterLib.ImplementationLoaderSubModule.html","topicUid":"Bannerlord.ButterLib.ImplementationLoaderSubModule"}]},{"name":"Bannerlord.ButterLib.Common.Extensions","href":"Bannerlord.ButterLib.Common.Extensions.html","topicHref":"Bannerlord.ButterLib.Common.Extensions.html","topicUid":"Bannerlord.ButterLib.Common.Extensions","items":[{"name":"ApplicationVersionExtensions","href":"Bannerlord.ButterLib.Common.Extensions.ApplicationVersionExtensions.html","topicHref":"Bannerlord.ButterLib.Common.Extensions.ApplicationVersionExtensions.html","topicUid":"Bannerlord.ButterLib.Common.Extensions.ApplicationVersionExtensions"},{"name":"CampaignExtensions","href":"Bannerlord.ButterLib.Common.Extensions.CampaignExtensions.html","topicHref":"Bannerlord.ButterLib.Common.Extensions.CampaignExtensions.html","topicUid":"Bannerlord.ButterLib.Common.Extensions.CampaignExtensions"},{"name":"DependencyInjectionExtensions","href":"Bannerlord.ButterLib.Common.Extensions.DependencyInjectionExtensions.html","topicHref":"Bannerlord.ButterLib.Common.Extensions.DependencyInjectionExtensions.html","topicUid":"Bannerlord.ButterLib.Common.Extensions.DependencyInjectionExtensions"},{"name":"MbEventExtensions","href":"Bannerlord.ButterLib.Common.Extensions.MbEventExtensions.html","topicHref":"Bannerlord.ButterLib.Common.Extensions.MbEventExtensions.html","topicUid":"Bannerlord.ButterLib.Common.Extensions.MbEventExtensions"}]},{"name":"Bannerlord.ButterLib.Common.Helpers","href":"Bannerlord.ButterLib.Common.Helpers.html","topicHref":"Bannerlord.ButterLib.Common.Helpers.html","topicUid":"Bannerlord.ButterLib.Common.Helpers","items":[{"name":"ApplicationVersionComparer","href":"Bannerlord.ButterLib.Common.Helpers.ApplicationVersionComparer.html","topicHref":"Bannerlord.ButterLib.Common.Helpers.ApplicationVersionComparer.html","topicUid":"Bannerlord.ButterLib.Common.Helpers.ApplicationVersionComparer"},{"name":"ElegantPairHelper","href":"Bannerlord.ButterLib.Common.Helpers.ElegantPairHelper.html","topicHref":"Bannerlord.ButterLib.Common.Helpers.ElegantPairHelper.html","topicUid":"Bannerlord.ButterLib.Common.Helpers.ElegantPairHelper"},{"name":"LocalizationHelper","href":"Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.html","topicHref":"Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.html","topicUid":"Bannerlord.ButterLib.Common.Helpers.LocalizationHelper"},{"name":"LocalizationHelper.PluralForm","href":"Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.PluralForm.html","topicHref":"Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.PluralForm.html","topicUid":"Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.PluralForm"},{"name":"LocalizationHelper.RecursiveCaller","href":"Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.RecursiveCaller.html","topicHref":"Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.RecursiveCaller.html","topicUid":"Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.RecursiveCaller"}]},{"name":"Bannerlord.ButterLib.DelayedSubModule","href":"Bannerlord.ButterLib.DelayedSubModule.html","topicHref":"Bannerlord.ButterLib.DelayedSubModule.html","topicUid":"Bannerlord.ButterLib.DelayedSubModule","items":[{"name":"DelayedSubModuleManager","href":"Bannerlord.ButterLib.DelayedSubModule.DelayedSubModuleManager.html","topicHref":"Bannerlord.ButterLib.DelayedSubModule.DelayedSubModuleManager.html","topicUid":"Bannerlord.ButterLib.DelayedSubModule.DelayedSubModuleManager"},{"name":"SubscriptionEventArgs","href":"Bannerlord.ButterLib.DelayedSubModule.SubscriptionEventArgs.html","topicHref":"Bannerlord.ButterLib.DelayedSubModule.SubscriptionEventArgs.html","topicUid":"Bannerlord.ButterLib.DelayedSubModule.SubscriptionEventArgs"},{"name":"SubscriptionGlobalEventArgs","href":"Bannerlord.ButterLib.DelayedSubModule.SubscriptionGlobalEventArgs.html","topicHref":"Bannerlord.ButterLib.DelayedSubModule.SubscriptionGlobalEventArgs.html","topicUid":"Bannerlord.ButterLib.DelayedSubModule.SubscriptionGlobalEventArgs"},{"name":"SubscriptionType","href":"Bannerlord.ButterLib.DelayedSubModule.SubscriptionType.html","topicHref":"Bannerlord.ButterLib.DelayedSubModule.SubscriptionType.html","topicUid":"Bannerlord.ButterLib.DelayedSubModule.SubscriptionType"}]},{"name":"Bannerlord.ButterLib.DistanceMatrix","href":"Bannerlord.ButterLib.DistanceMatrix.html","topicHref":"Bannerlord.ButterLib.DistanceMatrix.html","topicUid":"Bannerlord.ButterLib.DistanceMatrix","items":[{"name":"DistanceMatrix","href":"Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix.html","topicHref":"Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix.html","topicUid":"Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix"},{"name":"DistanceMatrix","href":"Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix-1.html","topicHref":"Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix-1.html","topicUid":"Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix`1","name.vb":"DistanceMatrix(Of T)"},{"name":"DistanceMatrixResult","href":"Bannerlord.ButterLib.DistanceMatrix.DistanceMatrixResult.html","topicHref":"Bannerlord.ButterLib.DistanceMatrix.DistanceMatrixResult.html","topicUid":"Bannerlord.ButterLib.DistanceMatrix.DistanceMatrixResult"}]},{"name":"Bannerlord.ButterLib.DynamicAPI","href":"Bannerlord.ButterLib.DynamicAPI.html","topicHref":"Bannerlord.ButterLib.DynamicAPI.html","topicUid":"Bannerlord.ButterLib.DynamicAPI","items":[{"name":"DynamicAPIClassAttribute","href":"Bannerlord.ButterLib.DynamicAPI.DynamicAPIClassAttribute.html","topicHref":"Bannerlord.ButterLib.DynamicAPI.DynamicAPIClassAttribute.html","topicUid":"Bannerlord.ButterLib.DynamicAPI.DynamicAPIClassAttribute"},{"name":"DynamicAPIInstance","href":"Bannerlord.ButterLib.DynamicAPI.DynamicAPIInstance.html","topicHref":"Bannerlord.ButterLib.DynamicAPI.DynamicAPIInstance.html","topicUid":"Bannerlord.ButterLib.DynamicAPI.DynamicAPIInstance"},{"name":"DynamicAPIMethodAttribute","href":"Bannerlord.ButterLib.DynamicAPI.DynamicAPIMethodAttribute.html","topicHref":"Bannerlord.ButterLib.DynamicAPI.DynamicAPIMethodAttribute.html","topicUid":"Bannerlord.ButterLib.DynamicAPI.DynamicAPIMethodAttribute"},{"name":"DynamicAPIProvider","href":"Bannerlord.ButterLib.DynamicAPI.DynamicAPIProvider.html","topicHref":"Bannerlord.ButterLib.DynamicAPI.DynamicAPIProvider.html","topicUid":"Bannerlord.ButterLib.DynamicAPI.DynamicAPIProvider"}]},{"name":"Bannerlord.ButterLib.ExceptionHandler","href":"Bannerlord.ButterLib.ExceptionHandler.html","topicHref":"Bannerlord.ButterLib.ExceptionHandler.html","topicUid":"Bannerlord.ButterLib.ExceptionHandler","items":[{"name":"ExceptionReporter","href":"Bannerlord.ButterLib.ExceptionHandler.ExceptionReporter.html","topicHref":"Bannerlord.ButterLib.ExceptionHandler.ExceptionReporter.html","topicUid":"Bannerlord.ButterLib.ExceptionHandler.ExceptionReporter"}]},{"name":"Bannerlord.ButterLib.ExceptionHandler.WinForms","href":"Bannerlord.ButterLib.ExceptionHandler.WinForms.html","topicHref":"Bannerlord.ButterLib.ExceptionHandler.WinForms.html","topicUid":"Bannerlord.ButterLib.ExceptionHandler.WinForms","items":[{"name":"HtmlCrashReportForm","href":"Bannerlord.ButterLib.ExceptionHandler.WinForms.HtmlCrashReportForm.html","topicHref":"Bannerlord.ButterLib.ExceptionHandler.WinForms.HtmlCrashReportForm.html","topicUid":"Bannerlord.ButterLib.ExceptionHandler.WinForms.HtmlCrashReportForm"}]},{"name":"Bannerlord.ButterLib.Extensions","href":"Bannerlord.ButterLib.Extensions.html","topicHref":"Bannerlord.ButterLib.Extensions.html","topicUid":"Bannerlord.ButterLib.Extensions","items":[{"name":"IInputContextExtensions","href":"Bannerlord.ButterLib.Extensions.IInputContextExtensions.html","topicHref":"Bannerlord.ButterLib.Extensions.IInputContextExtensions.html","topicUid":"Bannerlord.ButterLib.Extensions.IInputContextExtensions"}]},{"name":"Bannerlord.ButterLib.HotKeys","href":"Bannerlord.ButterLib.HotKeys.html","topicHref":"Bannerlord.ButterLib.HotKeys.html","topicUid":"Bannerlord.ButterLib.HotKeys","items":[{"name":"HotKeyBase","href":"Bannerlord.ButterLib.HotKeys.HotKeyBase.html","topicHref":"Bannerlord.ButterLib.HotKeys.HotKeyBase.html","topicUid":"Bannerlord.ButterLib.HotKeys.HotKeyBase"},{"name":"HotKeyCategory","href":"Bannerlord.ButterLib.HotKeys.HotKeyCategory.html","topicHref":"Bannerlord.ButterLib.HotKeys.HotKeyCategory.html","topicUid":"Bannerlord.ButterLib.HotKeys.HotKeyCategory"},{"name":"HotKeyManager","href":"Bannerlord.ButterLib.HotKeys.HotKeyManager.html","topicHref":"Bannerlord.ButterLib.HotKeys.HotKeyManager.html","topicUid":"Bannerlord.ButterLib.HotKeys.HotKeyManager"}]},{"name":"Bannerlord.ButterLib.Logger.Extensions","href":"Bannerlord.ButterLib.Logger.Extensions.html","topicHref":"Bannerlord.ButterLib.Logger.Extensions.html","topicUid":"Bannerlord.ButterLib.Logger.Extensions","items":[{"name":"LoggerExtensions","href":"Bannerlord.ButterLib.Logger.Extensions.LoggerExtensions.html","topicHref":"Bannerlord.ButterLib.Logger.Extensions.LoggerExtensions.html","topicUid":"Bannerlord.ButterLib.Logger.Extensions.LoggerExtensions"}]},{"name":"Bannerlord.ButterLib.MBSubModuleBaseExtended","href":"Bannerlord.ButterLib.MBSubModuleBaseExtended.html","topicHref":"Bannerlord.ButterLib.MBSubModuleBaseExtended.html","topicUid":"Bannerlord.ButterLib.MBSubModuleBaseExtended","items":[{"name":"IMBSubModuleBaseEx","href":"Bannerlord.ButterLib.MBSubModuleBaseExtended.IMBSubModuleBaseEx.html","topicHref":"Bannerlord.ButterLib.MBSubModuleBaseExtended.IMBSubModuleBaseEx.html","topicUid":"Bannerlord.ButterLib.MBSubModuleBaseExtended.IMBSubModuleBaseEx"},{"name":"MBSubModuleBaseEx","href":"Bannerlord.ButterLib.MBSubModuleBaseExtended.MBSubModuleBaseEx.html","topicHref":"Bannerlord.ButterLib.MBSubModuleBaseExtended.MBSubModuleBaseEx.html","topicUid":"Bannerlord.ButterLib.MBSubModuleBaseExtended.MBSubModuleBaseEx"}]},{"name":"Bannerlord.ButterLib.ObjectSystem","href":"Bannerlord.ButterLib.ObjectSystem.html","topicHref":"Bannerlord.ButterLib.ObjectSystem.html","topicUid":"Bannerlord.ButterLib.ObjectSystem","items":[{"name":"IMBObjectFinder","href":"Bannerlord.ButterLib.ObjectSystem.IMBObjectFinder.html","topicHref":"Bannerlord.ButterLib.ObjectSystem.IMBObjectFinder.html","topicUid":"Bannerlord.ButterLib.ObjectSystem.IMBObjectFinder"},{"name":"IMBObjectKeeper","href":"Bannerlord.ButterLib.ObjectSystem.IMBObjectKeeper.html","topicHref":"Bannerlord.ButterLib.ObjectSystem.IMBObjectKeeper.html","topicUid":"Bannerlord.ButterLib.ObjectSystem.IMBObjectKeeper"}]},{"name":"Bannerlord.ButterLib.ObjectSystem.Extensions","href":"Bannerlord.ButterLib.ObjectSystem.Extensions.html","topicHref":"Bannerlord.ButterLib.ObjectSystem.Extensions.html","topicUid":"Bannerlord.ButterLib.ObjectSystem.Extensions","items":[{"name":"MBObjectBaseExtensions","href":"Bannerlord.ButterLib.ObjectSystem.Extensions.MBObjectBaseExtensions.html","topicHref":"Bannerlord.ButterLib.ObjectSystem.Extensions.MBObjectBaseExtensions.html","topicUid":"Bannerlord.ButterLib.ObjectSystem.Extensions.MBObjectBaseExtensions"}]},{"name":"Bannerlord.ButterLib.Options","href":"Bannerlord.ButterLib.Options.html","topicHref":"Bannerlord.ButterLib.Options.html","topicUid":"Bannerlord.ButterLib.Options","items":[{"name":"ButterLibOptions","href":"Bannerlord.ButterLib.Options.ButterLibOptions.html","topicHref":"Bannerlord.ButterLib.Options.ButterLibOptions.html","topicUid":"Bannerlord.ButterLib.Options.ButterLibOptions"}]},{"name":"Bannerlord.ButterLib.SaveSystem","href":"Bannerlord.ButterLib.SaveSystem.html","topicHref":"Bannerlord.ButterLib.SaveSystem.html","topicUid":"Bannerlord.ButterLib.SaveSystem","items":[{"name":"DictionaryToArrayConverter","href":"Bannerlord.ButterLib.SaveSystem.DictionaryToArrayConverter.html","topicHref":"Bannerlord.ButterLib.SaveSystem.DictionaryToArrayConverter.html","topicUid":"Bannerlord.ButterLib.SaveSystem.DictionaryToArrayConverter"},{"name":"MBGUIDConverter","href":"Bannerlord.ButterLib.SaveSystem.MBGUIDConverter.html","topicHref":"Bannerlord.ButterLib.SaveSystem.MBGUIDConverter.html","topicUid":"Bannerlord.ButterLib.SaveSystem.MBGUIDConverter"},{"name":"MBObjectBaseConverter","href":"Bannerlord.ButterLib.SaveSystem.MBObjectBaseConverter.html","topicHref":"Bannerlord.ButterLib.SaveSystem.MBObjectBaseConverter.html","topicUid":"Bannerlord.ButterLib.SaveSystem.MBObjectBaseConverter"},{"name":"TaleWorldsContractResolver","href":"Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolver.html","topicHref":"Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolver.html","topicUid":"Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolver"},{"name":"TaleWorldsContractResolverBase","href":"Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.html","topicHref":"Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.html","topicUid":"Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase"},{"name":"TaleWorldsContractResolverBase.IsContainerDelegate","href":"Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.IsContainerDelegate.html","topicHref":"Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.IsContainerDelegate.html","topicUid":"Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.IsContainerDelegate"}]},{"name":"Bannerlord.ButterLib.SaveSystem.Extensions","href":"Bannerlord.ButterLib.SaveSystem.Extensions.html","topicHref":"Bannerlord.ButterLib.SaveSystem.Extensions.html","topicUid":"Bannerlord.ButterLib.SaveSystem.Extensions","items":[{"name":"IDataStoreExtensions","href":"Bannerlord.ButterLib.SaveSystem.Extensions.IDataStoreExtensions.html","topicHref":"Bannerlord.ButterLib.SaveSystem.Extensions.IDataStoreExtensions.html","topicUid":"Bannerlord.ButterLib.SaveSystem.Extensions.IDataStoreExtensions"}]},{"name":"Bannerlord.ButterLib.SubModuleWrappers2","href":"Bannerlord.ButterLib.SubModuleWrappers2.html","topicHref":"Bannerlord.ButterLib.SubModuleWrappers2.html","topicUid":"Bannerlord.ButterLib.SubModuleWrappers2","items":[{"name":"MBSubModuleBaseListWrapper","href":"Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseListWrapper.html","topicHref":"Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseListWrapper.html","topicUid":"Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseListWrapper"},{"name":"MBSubModuleBaseWrapper","href":"Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseWrapper.html","topicHref":"Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseWrapper.html","topicUid":"Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseWrapper"}]},{"name":"Bannerlord.ButterLib.SubSystems","href":"Bannerlord.ButterLib.SubSystems.html","topicHref":"Bannerlord.ButterLib.SubSystems.html","topicUid":"Bannerlord.ButterLib.SubSystems","items":[{"name":"ISubSystem","href":"Bannerlord.ButterLib.SubSystems.ISubSystem.html","topicHref":"Bannerlord.ButterLib.SubSystems.ISubSystem.html","topicUid":"Bannerlord.ButterLib.SubSystems.ISubSystem"}]},{"name":"Bannerlord.ButterLib.SubSystems.Settings","href":"Bannerlord.ButterLib.SubSystems.Settings.html","topicHref":"Bannerlord.ButterLib.SubSystems.Settings.html","topicUid":"Bannerlord.ButterLib.SubSystems.Settings","items":[{"name":"ISubSystemSettings","href":"Bannerlord.ButterLib.SubSystems.Settings.ISubSystemSettings-1.html","topicHref":"Bannerlord.ButterLib.SubSystems.Settings.ISubSystemSettings-1.html","topicUid":"Bannerlord.ButterLib.SubSystems.Settings.ISubSystemSettings`1","name.vb":"ISubSystemSettings(Of TSubSystem)"},{"name":"SubSystemSettingsDeclaration","href":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsDeclaration-1.html","topicHref":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsDeclaration-1.html","topicUid":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsDeclaration`1","name.vb":"SubSystemSettingsDeclaration(Of TSubSystem)"},{"name":"SubSystemSettingsProperty","href":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsProperty-2.html","topicHref":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsProperty-2.html","topicUid":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsProperty`2","name.vb":"SubSystemSettingsProperty(Of TSubSystem, TProperty)"},{"name":"SubSystemSettingsPropertyBool","href":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyBool-1.html","topicHref":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyBool-1.html","topicUid":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyBool`1","name.vb":"SubSystemSettingsPropertyBool(Of TSubSystem)"},{"name":"SubSystemSettingsPropertyDropdown","href":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyDropdown-1.html","topicHref":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyDropdown-1.html","topicUid":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyDropdown`1","name.vb":"SubSystemSettingsPropertyDropdown(Of TSubSystem)"},{"name":"SubSystemSettingsPropertyFloat","href":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyFloat-1.html","topicHref":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyFloat-1.html","topicUid":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyFloat`1","name.vb":"SubSystemSettingsPropertyFloat(Of TSubSystem)"},{"name":"SubSystemSettingsPropertyInt","href":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyInt-1.html","topicHref":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyInt-1.html","topicUid":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyInt`1","name.vb":"SubSystemSettingsPropertyInt(Of TSubSystem)"},{"name":"SubSystemSettingsPropertyText","href":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyText-1.html","topicHref":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyText-1.html","topicUid":"Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyText`1","name.vb":"SubSystemSettingsPropertyText(Of TSubSystem)"}]}],"memberLayout":"SamePage"} \ No newline at end of file diff --git a/articles/AssemblyVerifier/Overview.html b/articles/AssemblyVerifier/Overview.html new file mode 100644 index 00000000..d8b3ff4e --- /dev/null +++ b/articles/AssemblyVerifier/Overview.html @@ -0,0 +1,119 @@ + + + + + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +
+
Important
+

This SubSystem is obsolete!

+
+

AssembliVerifier gives the ability to pre-load an assembly and check if it's compatible with the game by calling Assembly.GetTypes()

+
string dependencyPath;
+string assemblyPath;
+
+using var verifier = new AssemblyVerifier("Test");
+var loader = verifier.GetLoader(out var exception);
+
+// The AssemblyVerifier will have every loaded assembly by the game within itself.
+// You can load additional assemblies if needed.
+loader.LoadFile(dependencyPath);
+
+var isCompatible = loader.LoadFileAndTest(assemblyPath);
+
+
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/CampaignIdentifier/Overview.html b/articles/CampaignIdentifier/Overview.html new file mode 100644 index 00000000..2eb5ff34 --- /dev/null +++ b/articles/CampaignIdentifier/Overview.html @@ -0,0 +1,113 @@ + + + + + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +
+
Important
+

This SubSystem is obsolete!

+
+

CampaignIdentifier associates unique string ID with every campaign basing on the initial character.

+
// Get current campaign ID
+string campaignID = Camapaign.Current.GetCampaignId();
+
+// Get current campaign descriptor
+var campaignDescriptor = Camapaign.Current.GetCampaignDescriptor();
+
+
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/Common/Extensions/Overview.html b/articles/Common/Extensions/Overview.html new file mode 100644 index 00000000..3f335558 --- /dev/null +++ b/articles/Common/Extensions/Overview.html @@ -0,0 +1,108 @@ + + + + + ApplicationVersionExtensions | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ + + +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/Common/Helpers/Overview.html b/articles/Common/Helpers/Overview.html new file mode 100644 index 00000000..2c6a7f7c --- /dev/null +++ b/articles/Common/Helpers/Overview.html @@ -0,0 +1,104 @@ + + + + + ApplicationVersionComparer | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ + + + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/Common/index.html b/articles/Common/index.html new file mode 100644 index 00000000..60d06851 --- /dev/null +++ b/articles/Common/index.html @@ -0,0 +1,102 @@ + + + + + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/DelayedSubModule/Overview.html b/articles/DelayedSubModule/Overview.html new file mode 100644 index 00000000..bdd78005 --- /dev/null +++ b/articles/DelayedSubModule/Overview.html @@ -0,0 +1,149 @@ + + + + + Note: | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

Consider this case:
+You have a piece of code that should be executed after some SubModule, e.g. StoryModeSubModule, but you don't want to add StoryMode as a DependedModule.
+This is not supported out-of-the-box, but ButterLib provides one possible solution.

+
protected override void OnSubModuleLoad()
+ {
+    base.OnSubModuleLoad();
+
+    // You first call Register() so the SubModule will be tracked by ButterLib
+    DelayedSubModuleManager.Register<StoryModeSubModule>();
+    // You subscribe to the module's method call.
+    // In this case, we do something after StoryModeSubModule.OnSubModuleLoad
+    // is executed.
+    DelayedSubModuleManager.Subscribe<StoryModeSubModule, SubModule>(
+        nameof(OnSubModuleLoad), SubscriptionType.AfterMethod, (s, e) =>
+        {
+            // StoryModeSubModule does not implement OnSubModuleLoad(),
+            // so we can only catch the base virtual method call.
+            if (e.IsBase)
+                return;
+
+            // SOME CODE
+        });
+}
+
+
protected override void OnBeforeInitialModuleScreenSetAsRoot()
+ {
+    base.OnBeforeInitialModuleScreenSetAsRoot();
+
+    DelayedSubModuleManager.Register<GauntletUISubModule>();
+    DelayedSubModuleManager.Subscribe<GauntletUISubModule, SubModule>(
+        nameof(OnBeforeInitialModuleScreenSetAsRoot), SubscriptionType.AfterMethod, (s, e) =>
+        {
+            // GauntletUISubModule overrides OnBeforeInitialModuleScreenSetAsRoot, so we can
+            // catch the override method call.
+            if (!e.IsBase)
+                return;
+
+            // SOME CODE
+        });
+}
+
+

Note:

+ +
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/Development/Overview.html b/articles/Development/Overview.html new file mode 100644 index 00000000..027406ce --- /dev/null +++ b/articles/Development/Overview.html @@ -0,0 +1,144 @@ + + + + + Used Terminology: | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +
+
Warning
+

This article is an work in progress!

+
+

Used Terminology:

+
    +
  • Game Reference Assemblies -
  • +
  • Game Stable Version -
  • +
  • Game Beta Version -
  • +
+

Used Environment Variables:

+
    +
  • GITHUB_ACTIONS - used to indicate that the current environment is a CI.
  • +
  • BANNERLORD_GAME_DIR - path to the Bannerlord game directory.
  • +
+

There are also two additional game path variables, used in the case when you can setup two game installations - the current Stable game version and the current Beta game version.

+
    +
  • BANNERLORD_STABLE_DIR - points to the Stable game installation.
  • +
  • BANNERLORD_BETA_DIR - points to the Beta game installation.
  • +
+

An example of such case is to buy the game on Steam and GOG. Steam provides a Beta version, while GOG provides the Stable one.

+

Solution

+

The solution (Bannerlord.ButterLib.sln) has 4 configurations available.

+
    +
  • Stable Debug
  • +
  • Stable Release
  • +
  • Beta Debug
  • +
  • Beta Release
  • +
+

They are used to the full potential if you have set up the additional variables BANNERLORD_STABLE_DIR and BANNERLORD_BETA_DIR. +Basically, when a Stable configuration is chosen, the modules will be copied after the project build into %Stable Game Path%/Modules.
+Same with Beta, will be copied into %Beta Game Path%/Modules.
+When those variables are not provided, the BANNERLORD_GAME_DIR is used for both. This means that in both configurations the modules will be copied to the same game installations for Stable and Beta game versions.

+

supported-game-versions.txt

+

This is a TXT file that contains all supported game version by ButterLib currently, in specific order:

+
    +
  • First version entry is the current Beta.
  • +
  • Second is the current Stable.
  • +
  • Last is the minimal version supported.
  • +
  • Everything in-between can be in any order.
  • +
+

The solution parses the file and uses the version to get the right Game Reference Assemblies to build against.

+
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/DistanceMatrix/Overview.html b/articles/DistanceMatrix/Overview.html new file mode 100644 index 00000000..32058111 --- /dev/null +++ b/articles/DistanceMatrix/Overview.html @@ -0,0 +1,102 @@ + + + + + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/HotKeys/Overview.html b/articles/HotKeys/Overview.html new file mode 100644 index 00000000..b31fb0cb --- /dev/null +++ b/articles/HotKeys/Overview.html @@ -0,0 +1,166 @@ + + + + + HotKeys | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+

HotKeys

+ +

The HotKeyManager type and associated views and functionality inside of Bannerlord is incredibly convoluted to work with, there are lots of gotchas and having conflicts between different mods registering hotkeys with the same ID's or mod names is almost a certainty, so this simple wrapper around it was created that handles the finer details and handles input polling so the entire thing is event based.

+

Usage

+
public class MySubModule : MBSubModuleBase
+{
+    private bool _campaignIsStarted;
+    protected override void OnBeforeInitialModuleScreenSetAsRoot()
+    {
+        // Create a new HotKeyManager for your mod.
+        var hkm = HotKeyManager.Create("MyMod");
+        // Add your HotKeyBase derived class to the manager.
+        // You can add as many hotkeys as you'd like before building them up.
+        // You can also use `hkm.Add(new TestKey(SomeExampleArgument))` if you'd like to have a non-default constructor.
+        var rslt = hkm.Add<TestKey1>();
+        // var rslt = hkm.Add<TestKey2>();
+        // It's not necessary to supply a predicate, it's just a convenience.
+        // You can also manually set IsEnabled to more simply enable/disable a keys functionality.
+        rslt.Predicate = () => _campaignIsStarted;
+        // Subscribe to each of the events on the hotkey at any time.
+        rslt.OnReleasedEvent += () =>
+            InformationManager.DisplayMessage(new InformationMessage("Test Key Released!", Colors.Magenta));
+        // Call this to build up all the hotkeys you added.
+        hkm.Build();
+    }
+
+    protected override void OnGameStart(Game game, IGameStarter gameStarterObject)
+    {
+        // An example just to demonstrate functionality.
+        if (game.GameType is Campaign) _campaignIsStarted = true;
+    }
+}
+
+public class TestKey1 : HotKeyBase
+{
+    protected override string DisplayName { get; }
+    protected override string Description { get; }
+    protected override InputKey DefaultKey { get; }
+    protected override string Category { get; }
+
+    public TestKey1() : base(nameof(TestKey1))
+    {
+        DisplayName = "My Test Key";
+        Description = "This is a test key.";
+        DefaultKey = InputKey.Comma;
+        Category = HotKeyManager.Categories[HotKeyCategory.CampaignMap];
+    }
+
+    protected override void OnReleased()
+    {
+        // You can also override methods relating to keypresses within the key itself.
+    }
+}
+public class TestKey2 : HotKeyBase
+{
+    public TestKey2() : base(nameof(TestKey2), "My Test Key", "This is a test key.", InputKey.Comma, HotKeyManager.Categories[HotKeyCategory.CampaignMap]) { }
+
+    protected override void OnReleased()
+    {
+        // You can also override methods relating to keypresses within the key itself.
+    }
+}
+
+

Credit

+

Original code taken from BannerLib by sirdoombox.

+
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/MBSubModuleBaseExtended/Overview.html b/articles/MBSubModuleBaseExtended/Overview.html new file mode 100644 index 00000000..25cf092a --- /dev/null +++ b/articles/MBSubModuleBaseExtended/Overview.html @@ -0,0 +1,153 @@ + + + + + MBSubModuleBase extended | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+

MBSubModuleBase extended

+ +

Introduces an interface to use in your MBSubModuleBase-derived class, that provides new SubModule events for additional control over crucial parts of game and campaign loading or unloading.

+

Usage

+

To access additional events you should derive your submodule from MBSubModuleBaseEx instead of MBSubModuleBase.

+
public class SubModule : MBSubModuleBaseEx
+{
+    public override void OnAllSubModulesUnLoaded()
+    {
+        base.OnAllSubModulesUnLoaded();
+    }
+
+    public override void OnBeforeInitialModuleScreenSetAsRootDelayed()
+    {
+        base.OnBeforeInitialModuleScreenSetAsRootDelayed();
+    }
+
+    public override void OnGameStartDelayed(Game game, IGameStarter gameStarterObject)
+    {
+        base.OnGameStartDelayed(game, gameStarterObject);
+    }
+
+    public override void OnGameEndDelayed(Game game)
+    {
+        base.OnGameEndDelayed(game);
+    }
+}
+
+

Alternatively, you can derive directly from the IMBSubModuleBaseEx interface. This way you can derive from other virual or abstract classes and still access all the additional events, introduced by the MBSubModuleBase extended.

+
public class SubModule : MBSubModuleBaseWrapper, IMBSubModuleBaseEx
+{
+        public void OnAllSubModulesUnLoaded()
+        {
+            //Leave empty or add an implementation here
+        }
+
+        public void OnBeforeInitialModuleScreenSetAsRootDelayed()
+        {
+            //Leave empty or add an implementation here
+        }
+
+        public void OnGameStartDelayed(Game game, IGameStarter gameStarterObject)
+        {
+            //Leave empty or add an implementation here
+        }
+
+        public void OnGameEndDelayed(Game game)
+        {
+            //Leave empty or add an implementation here
+        }
+}
+
+
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/Optional/DependencyInjection/Initialization-Stages.html b/articles/Optional/DependencyInjection/Initialization-Stages.html new file mode 100644 index 00000000..9d71ab33 --- /dev/null +++ b/articles/Optional/DependencyInjection/Initialization-Stages.html @@ -0,0 +1,116 @@ + + + + + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

Initialization Stages:

+ +
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/Optional/DependencyInjection/Overview.html b/articles/Optional/DependencyInjection/Overview.html new file mode 100644 index 00000000..23249484 --- /dev/null +++ b/articles/Optional/DependencyInjection/Overview.html @@ -0,0 +1,104 @@ + + + + + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

This is an optional implementation of the new Dependency Injection framework created for .NET Core based on ServiceCollection.
+You are not required to use it. We have made sure that it does not leak into any classes ButterLib provides for the developers when using ButterLib as a standard library.

+
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/Optional/DependencyInjection/Stage-1.html b/articles/Optional/DependencyInjection/Stage-1.html new file mode 100644 index 00000000..d1d2cfee --- /dev/null +++ b/articles/Optional/DependencyInjection/Stage-1.html @@ -0,0 +1,106 @@ + + + + + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

This is the stage before ButterLib gets the opportunity to do the first initialization steps.
+It is useful for overriding ButterLib's default behavior.
+MBSubModuleBase.GetServices() is not available at this stage.

+

Right now ButterLib is loading it's options from a fixed file. This can be overriden, so the config file would be loaded from another place, e.g from MCM's ModOptions folder.

+
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/Optional/DependencyInjection/Stage-2.html b/articles/Optional/DependencyInjection/Stage-2.html new file mode 100644 index 00000000..ab7a4736 --- /dev/null +++ b/articles/Optional/DependencyInjection/Stage-2.html @@ -0,0 +1,106 @@ + + + + + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ + + + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/Optional/DependencyInjection/Stage-3.html b/articles/Optional/DependencyInjection/Stage-3.html new file mode 100644 index 00000000..fedfb3b5 --- /dev/null +++ b/articles/Optional/DependencyInjection/Stage-3.html @@ -0,0 +1,105 @@ + + + + + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

The last stage. ButterLib will create a permanent IServiceProvider for usage.
+MBSubModuleBase.GetServices() will not be available anymore, thus disabling any configuration/service registering.

+

There's also a substage. When Creating/Loading a Campaign, the IServiceProvider will create a scope that will span across the whole Campiagn. Should be userful for per-campaign services.

+
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/Optional/Logging/Overview.html b/articles/Optional/Logging/Overview.html new file mode 100644 index 00000000..814c89b3 --- /dev/null +++ b/articles/Optional/Logging/Overview.html @@ -0,0 +1,110 @@ + + + + + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

By default, the ILogger implementation will write it's logs in %GAME CONFIG%/ModLogs/default*.log.
+You can create your own log file with this code:

+
this.AddSerilogLoggerProvider("FILENAME.txt", new[] { FILTER });
+
+// EXAMPLE:
+this.AddSerilogLoggerProvider($"butterlib_{DateTimeOffset.Now:yyyyMMdd_HHmmss}.txt", new[] { "Bannerlord.ButterLib.*" });
+
+

Any log from a class from namespace Bannerlord.ButterLib.* will be written to the default*.log file and to your own file.

+
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/Optional/index.html b/articles/Optional/index.html new file mode 100644 index 00000000..a4e08be7 --- /dev/null +++ b/articles/Optional/index.html @@ -0,0 +1,102 @@ + + + + + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/SaveSystem/Overview.html b/articles/SaveSystem/Overview.html new file mode 100644 index 00000000..e893fd38 --- /dev/null +++ b/articles/SaveSystem/Overview.html @@ -0,0 +1,166 @@ + + + + + SyncDataAsJson | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

SaveSystem provides wrappers and extensions to the game's save system.

+

SyncDataAsJson

+

The Old Way

+

To sync your custom data to savegames, you need to define a CampaignBehaviorBase and override its SyncData(IDataStore dataStore) method. From there, you'd make one or more calls to dataStore.SyncData<T>(string key, ref T myObject) to actually synchronize the data to the savegame.

+

This seems dandy right up until you realize that it's actually quite a pain in practice, because in many cases, SyncData<T> will not only fail to work correctly with some standard types (e.g., simple containers like Dictionary<string, string> but also the game's implementation will often force the save files to depend upon your mod being loaded — not to mention the need to define your own SaveableTypeDefiner and pick arbitrary unique "base IDs" for your mod just to get anything done. If the save file ends up depending upon your mod being loaded, then your users are unnecessarily screwed when they disable it.

+

In short, the old way is a pretty decent try, but it falls short on safely removing your mod from a savegame in all cases, the general amount of error-prone configuration required, too many of your wasted hours trying to synchronize data types that should obviously be handled by default but simply aren't, and wasted time marshalling things like MBGUIDs back to object references.

+

The New Way: SyncDataAsJson

+

We've developed a drop-in replacement for the aforementioned SyncData<T>: SyncDataAsJson<T>. It doesn't suffer from any of the aforementioned issues, and as an extension method of IDataStore, you use it exactly like you would've used SyncData<T>. However, your custom data is now, behind the scenes, serialized by ButterLib into a simple string (or similar primitive type).

+

SyncDataAsJson<T> doing its own serialization to a primitive type behind the scenes means:

+
    +
  • Your mod will never save custom data that prevents the game from loading properly when your mod is disabled

    +
  • +
  • You will never need to define another SaveableTypeDefiner

    +
  • +
  • Far more standard types, especially involving standard containers, will be handled automatically, and in the off chance that they aren't, you (and we) have the power to add custom type serializers.

    +
  • +
  • You will never again need to manually save MBGUID values or manually restore them to MBObjectBase-derived object references in order to properly save, say, a Clan reference again.

    +
  • +
+

The serialization engine, Newtonsoft.Json, in order to allow SyncDataAsJson<T> to operate as a drop-in replacement for the old method, has been outfit with a custom contract resolver and a number of special type converters.

+

The engine's custom contract resolver will only serialize data tagged with the TaleWorlds SaveableField or SaveableProperty attributes. Likewise, custom types intended for serialization must still use the SaveableClass or SaveableStruct attributes. Note that the ID numbers required by these attributes are an artifact of the old system and don't actually matter to SyncDataAsJson<T>, but you're advised to fill them out like normal for new types in the event that you need to go back to SyncData<T> for some reason.

+

An example usage follows. Remember, the only thing that's really changed here is using SyncDataAsJson<T> instead of SyncData<T>.

+
using Bannerlord.ButterLib.SaveSystem.Extensions;
+
+public class CustomBehavior : CampaignBehaviorBase
+{
+    public override void SyncData(IDataStore dataStore)
+    {
+        dataStore.SyncDataAsJson("KeyForMyClass", ref _myClassObj);
+        // ... perhaps more SyncDataAsJson calls for other data ...
+    }
+
+    [Serializable] // If the struct/class has the Serializable attribute`SaveableField and SaveableProperty will be ignored
+    public MyStruct
+    {
+        public int X;
+        public int Y;
+        public int Z;
+    }
+
+    private MyClass // Why private? Just to point out that access levels aren't an issue.
+    {
+        public int _unsavedField = 42;
+
+        [SaveableField(1)]
+        public Dictionary<Hero, int> _heroButterGiftAmounts = new Dictionary<Hero, int>();
+
+        [SaveableProperty(2)]
+        public string Name { get; set; } = "The Butter Lord";
+    }
+
+    private MyClass _myClassObj = new MyClass();
+
+    // ... other campaign behavior code to, presumably, give a lot of butter away everyday
+}
+
+

This extension is the next step in the evolution of best practices and just plain less frustrating practices for the synchronization of your mod's custom data to savegames.

+

Notes:

+
    +
  • Built-in MBObjectBase-derived types (e.g., Hero or Town) have a custom converter. They are serialized as their Id property. MBObjectManager is used to resolve these numeric IDs to the correct, live game object references at deserialization time.

    +
  • +
  • Custom MBObjectBase types are not serialized (i.e., custom types derived from MBObjectBase that aren't registered with the game's official object manager). While we do not know if such types even exist, we consider this to be non-ideal and intend to fix it in the future for completeness. One of the proposed solutions is to have our own registry of such custom objects and to resolve them from it — basically a custom MBObjectManager.

    +
  • +
+
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/SubModuleWrappers/Overview.html b/articles/SubModuleWrappers/Overview.html new file mode 100644 index 00000000..da714579 --- /dev/null +++ b/articles/SubModuleWrappers/Overview.html @@ -0,0 +1,129 @@ + + + + + MBSubModuleBaseWrapper | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+

MBSubModuleBaseWrapper

+ +

Wraps a MBSubModuleBase and gives the ability to easy call the protected internal methods like OnSubModuleLoad().

+

MBSubModuleBaseListWrapper

+

The same as previous, wraps multiple MBSubModuleBase instead of one.

+

Usage

+

MBSubModuleBaseListWrapper could be used if you need to dynamically load specific SubModules based on some condition. +You need to create a MBSubModuleBase class that derives from MBSubModuleBaseListWrapper, in which you decide what assemblies to load.
+MBSubModuleBaseListWrapper will check the SubModules property for the SubModules and proxy any game call to them.
+Dont forget to include the new SubModule in SubModule.xml!

+
<SubModule>
+  <Name value="Dynamic SubModule Loader" />
+  <DLLName value="Module.dll" />
+  <SubModuleClassType value="Module.DynamicSubModuleLoader" />
+  <Tags/>
+</SubModule>
+
+
    public sealed class DynamicSubModuleLoader : MBSubModuleBaseListWrapper
+    {
+        protected override void OnSubModuleLoad()
+        {
+            // Add any MBSubModuleBase instance that should be handled.
+            SubModules.AddRange(...);
+            base.OnSubModuleLoad();
+        }
+    }
+
+

See ImplementationLoaderSubModule for an example.

+
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/index.html b/articles/index.html new file mode 100644 index 00000000..fd89827a --- /dev/null +++ b/articles/index.html @@ -0,0 +1,102 @@ + + + + + | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/articles/toc.html b/articles/toc.html new file mode 100644 index 00000000..2b379672 --- /dev/null +++ b/articles/toc.html @@ -0,0 +1,175 @@ + +
+
+
+
+ + + +
+
+
+
+ + +
+
+
+
\ No newline at end of file diff --git a/articles/toc.json b/articles/toc.json new file mode 100644 index 00000000..ff04f32a --- /dev/null +++ b/articles/toc.json @@ -0,0 +1,2 @@ + +{"items":[{"name":"Development","includedFrom":"~/articles/Development/toc.yml","items":[{"name":"Overview","href":"Development/Overview.html","topicHref":"Development/Overview.html"}]},{"name":"AssemblyVerifier","includedFrom":"~/articles/AssemblyVerifier/toc.yml","items":[{"name":"Overview","href":"AssemblyVerifier/Overview.html","topicHref":"AssemblyVerifier/Overview.html"}]},{"name":"Common","includedFrom":"~/articles/Common/toc.yml","items":[{"name":"Extensions","href":"Common/Extensions/Overview.html","topicHref":"Common/Extensions/Overview.html","includedFrom":"~/articles/Common/Extensions/toc.yml","homepage":"Common/Extensions/Overview.html","items":[{"name":"Overview","href":"Common/Extensions/Overview.html","topicHref":"Common/Extensions/Overview.html"}]},{"name":"Helpers","href":"Common/Helpers/Overview.html","topicHref":"Common/Helpers/Overview.html","includedFrom":"~/articles/Common/Helpers/toc.yml","homepage":"Common/Helpers/Overview.html","items":[{"name":"Overview","href":"Common/Helpers/Overview.html","topicHref":"Common/Helpers/Overview.html"}]}]},{"name":"DelayedSubModule","includedFrom":"~/articles/DelayedSubModule/toc.yml","items":[{"name":"Overview","href":"DelayedSubModule/Overview.html","topicHref":"DelayedSubModule/Overview.html"}]},{"name":"CampaignIdentifier","includedFrom":"~/articles/CampaignIdentifier/toc.yml","items":[{"name":"Overview","href":"CampaignIdentifier/Overview.html","topicHref":"CampaignIdentifier/Overview.html"}]},{"name":"DistanceMatrix","includedFrom":"~/articles/DistanceMatrix/toc.yml","items":[{"name":"Overview","href":"DistanceMatrix/Overview.html","topicHref":"DistanceMatrix/Overview.html"}]},{"name":"HotKeys","includedFrom":"~/articles/HotKeys/toc.yml","items":[{"name":"Overview","href":"HotKeys/Overview.html","topicHref":"HotKeys/Overview.html"}]},{"name":"MBSubModuleBaseExtended","includedFrom":"~/articles/MBSubModuleBaseExtended/toc.yml","items":[{"name":"Overview","href":"MBSubModuleBaseExtended/Overview.html","topicHref":"MBSubModuleBaseExtended/Overview.html"}]},{"name":"Optional","includedFrom":"~/articles/Optional/toc.yml","items":[{"name":"Dependency Injection","includedFrom":"~/articles/Optional/DependencyInjection/toc.yml","items":[{"name":"Overview","href":"Optional/DependencyInjection/Overview.html","topicHref":"Optional/DependencyInjection/Overview.html"},{"name":"Initialization Stages","href":"Optional/DependencyInjection/Initialization-Stages.html","topicHref":"Optional/DependencyInjection/Initialization-Stages.html"},{"name":"Stage 1","href":"Optional/DependencyInjection/Stage-1.html","topicHref":"Optional/DependencyInjection/Stage-1.html"},{"name":"Stage 2","href":"Optional/DependencyInjection/Stage-2.html","topicHref":"Optional/DependencyInjection/Stage-2.html"},{"name":"Stage 3","href":"Optional/DependencyInjection/Stage-3.html","topicHref":"Optional/DependencyInjection/Stage-3.html"}]},{"name":"Logging","includedFrom":"~/articles/Optional/Logging/toc.yml","items":[{"name":"Overview","href":"Optional/Logging/Overview.html","topicHref":"Optional/Logging/Overview.html"}]}]},{"name":"SaveSystem","includedFrom":"~/articles/SaveSystem/toc.yml","items":[{"name":"Overview","href":"SaveSystem/Overview.html","topicHref":"SaveSystem/Overview.html"}]},{"name":"SubModuleWrappers","includedFrom":"~/articles/SubModuleWrappers/toc.yml","items":[{"name":"Overview","href":"SubModuleWrappers/Overview.html","topicHref":"SubModuleWrappers/Overview.html"}]}]} \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..71570f61efd250abdc3bffd77a96c6986109bb85 GIT binary patch literal 99678 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 IhS>=GA3>?ZjsO4v literal 0 HcmV?d00001 diff --git a/images/BUTR48.svg b/images/BUTR48.svg new file mode 100644 index 00000000..0ea7e850 --- /dev/null +++ b/images/BUTR48.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/index.html b/index.html new file mode 100644 index 00000000..77092efb --- /dev/null +++ b/index.html @@ -0,0 +1,195 @@ + + + + + Bannerlord.ButterLib | ButterLib Documentation + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+

Bannerlord.ButterLib

+ +

+ + + +
+ + + + + CodeFactor + + + Code Climate maintainability + + + + + + + +
+ + GitHub Workflow Status (event) + + + GitHub Workflow Status (event) + + + + +
+ + + +
+ + + + + + + + + + + + + + + +
+ + Steam Mod Configuration Menu + + + Steam Downloads + + + Steam Views + + + Steam Subscriptions + + + Steam Favorites + +
+

+

Extension library for Mount & Blade II: Bannerlord.

+

Highlighted features:

+
    +
  • CampaignIdentifier - Associates unique string ID with every campaign based on the initial character.
  • +
  • DistanceMatrix - A generic class that pairs given objects of type MBObject and for each pair calculates the distance between the objects that formed it.
  • +
  • DelayedSubModule - Execute code after specific SubModule method.
  • +
  • SubModuleWrappers - Wraps MBSubModulebase for easier calling of protected internal metods.
  • +
  • SaveSystem - Provides helper methods for the game's save system.
  • +
  • AccessTools2 - Adds delegate related functions.
  • +
  • SymbolExtensions2 - More lambda functions.
  • +
  • AlphanumComparatorFast - Alphanumeric sort. This sorting algorithm logically handles numbers in strings.
  • +
+

Check the /Articles section in the documentation to see all available features!

+

Installation

+

Players

+

This module should be one of the highest in loading order. Ideally, it should be second in load order after Bannerlord.Harmony.

+

Developers

+

Add this to your .csproj. Please note that IncludeAssets="compile" is very important!

+
  <ItemGroup>
+    <PackageReference Include="Bannerlord.ButterLib" Version="1.0.31" IncludeAssets="compile" />
+  </ItemGroup>
+
+

For Players

+

This mod is a dependency mod that does not provide anything by itself. You need to additionaly install mods that use it.

+
+ + + + + +
+ +
+ +
+
+ +
+ +
+
+
+ © 2020-2023 Bannerlord's Unofficial Tools & Resources +
+
+
+ + \ No newline at end of file diff --git a/index.json b/index.json new file mode 100644 index 00000000..114d524d --- /dev/null +++ b/index.json @@ -0,0 +1,497 @@ +{ + "api/Bannerlord.BLSE.BLSEExceptionHandlerAttribute.html": { + "href": "api/Bannerlord.BLSE.BLSEExceptionHandlerAttribute.html", + "title": "Class BLSEExceptionHandlerAttribute | ButterLib Documentation", + "keywords": "Class BLSEExceptionHandlerAttribute Namespace Bannerlord.BLSE Assembly Bannerlord.ButterLib.dll [AttributeUsage(AttributeTargets.Class)] public sealed class BLSEExceptionHandlerAttribute : Attribute, _Attribute Inheritance object Attribute BLSEExceptionHandlerAttribute Implements _Attribute Inherited Members Attribute.GetCustomAttributes(MemberInfo, Type) Attribute.GetCustomAttributes(MemberInfo, Type, bool) Attribute.GetCustomAttributes(MemberInfo) Attribute.GetCustomAttributes(MemberInfo, bool) Attribute.IsDefined(MemberInfo, Type) Attribute.IsDefined(MemberInfo, Type, bool) Attribute.GetCustomAttribute(MemberInfo, Type) Attribute.GetCustomAttribute(MemberInfo, Type, bool) Attribute.GetCustomAttributes(ParameterInfo) Attribute.GetCustomAttributes(ParameterInfo, Type) Attribute.GetCustomAttributes(ParameterInfo, Type, bool) Attribute.GetCustomAttributes(ParameterInfo, bool) Attribute.IsDefined(ParameterInfo, Type) Attribute.IsDefined(ParameterInfo, Type, bool) Attribute.GetCustomAttribute(ParameterInfo, Type) Attribute.GetCustomAttribute(ParameterInfo, Type, bool) Attribute.GetCustomAttributes(Module, Type) Attribute.GetCustomAttributes(Module) Attribute.GetCustomAttributes(Module, bool) Attribute.GetCustomAttributes(Module, Type, bool) Attribute.IsDefined(Module, Type) Attribute.IsDefined(Module, Type, bool) Attribute.GetCustomAttribute(Module, Type) Attribute.GetCustomAttribute(Module, Type, bool) Attribute.GetCustomAttributes(Assembly, Type) Attribute.GetCustomAttributes(Assembly, Type, bool) Attribute.GetCustomAttributes(Assembly) Attribute.GetCustomAttributes(Assembly, bool) Attribute.IsDefined(Assembly, Type) Attribute.IsDefined(Assembly, Type, bool) Attribute.GetCustomAttribute(Assembly, Type) Attribute.GetCustomAttribute(Assembly, Type, bool) Attribute.Equals(object) Attribute.GetHashCode() Attribute.Match(object) Attribute.IsDefaultAttribute() Attribute.TypeId object.ToString() object.Equals(object, object) object.ReferenceEquals(object, object) object.GetType()" + }, + "api/Bannerlord.BLSE.html": { + "href": "api/Bannerlord.BLSE.html", + "title": "Namespace Bannerlord.BLSE | ButterLib Documentation", + "keywords": "Namespace Bannerlord.BLSE Classes BLSEExceptionHandlerAttribute" + }, + "api/Bannerlord.BUTR.Shared.Utils.html": { + "href": "api/Bannerlord.BUTR.Shared.Utils.html", + "title": "Namespace Bannerlord.BUTR.Shared.Utils | ButterLib Documentation", + "keywords": "Namespace Bannerlord.BUTR.Shared.Utils Classes MBSubModuleBaseSimpleWrapper Wraps a MBSubModuleBase so protected methods could be called without a performance hit" + }, + "api/Bannerlord.BUTR.Shared.Utils.MBSubModuleBaseSimpleWrapper.html": { + "href": "api/Bannerlord.BUTR.Shared.Utils.MBSubModuleBaseSimpleWrapper.html", + "title": "Class MBSubModuleBaseSimpleWrapper | ButterLib Documentation", + "keywords": "Class MBSubModuleBaseSimpleWrapper Namespace Bannerlord.BUTR.Shared.Utils Assembly Bannerlord.ButterLib.dll Wraps a MBSubModuleBase so protected methods could be called without a performance hit public class MBSubModuleBaseSimpleWrapper : MBSubModuleBase Inheritance object MBSubModuleBase MBSubModuleBaseSimpleWrapper Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Extension Methods DependencyInjectionExtensions.AddSerilogLoggerProvider(MBSubModuleBase, string, IEnumerable) DependencyInjectionExtensions.AddSerilogLoggerProvider(MBSubModuleBase, string, IEnumerable?, Action?) DependencyInjectionExtensions.GetServiceProvider(MBSubModuleBase) DependencyInjectionExtensions.GetServices(MBSubModuleBase) DependencyInjectionExtensions.GetTempServiceProvider(MBSubModuleBase) Constructors MBSubModuleBaseSimpleWrapper(MBSubModuleBase) public MBSubModuleBaseSimpleWrapper(MBSubModuleBase subModule) Parameters subModule MBSubModuleBase Properties SubModule public MBSubModuleBase SubModule { get; } Property Value MBSubModuleBase Methods AfterAsyncTickTick(float) protected override void AfterAsyncTickTick(float dt) Parameters dt float AfterRegisterSubModuleObjects(bool) public override void AfterRegisterSubModuleObjects(bool isSavedCampaign) Parameters isSavedCampaign bool BeginGameStart(Game) public override void BeginGameStart(Game game) Parameters game Game DoLoading(Game) public override bool DoLoading(Game game) Parameters game Game Returns bool InitializeGameStarter(Game, IGameStarter) protected override void InitializeGameStarter(Game game, IGameStarter starterObject) Parameters game Game starterObject IGameStarter OnAfterGameInitializationFinished(Game, object) public override void OnAfterGameInitializationFinished(Game game, object starterObject) Parameters game Game starterObject object OnApplicationTick(float) protected override void OnApplicationTick(float dt) Parameters dt float OnBeforeInitialModuleScreenSetAsRoot() protected override void OnBeforeInitialModuleScreenSetAsRoot() OnBeforeMissionBehaviorInitialize(Mission) public override void OnBeforeMissionBehaviorInitialize(Mission mission) Parameters mission Mission OnCampaignStart(Game, object) public override void OnCampaignStart(Game game, object starterObject) Parameters game Game starterObject object OnConfigChanged() public override void OnConfigChanged() OnGameEnd(Game) public override void OnGameEnd(Game game) Parameters game Game OnGameInitializationFinished(Game) public override void OnGameInitializationFinished(Game game) Parameters game Game OnGameLoaded(Game, object) public override void OnGameLoaded(Game game, object initializerObject) Parameters game Game initializerObject object OnGameStart(Game, IGameStarter) protected override void OnGameStart(Game game, IGameStarter gameStarterObject) Parameters game Game gameStarterObject IGameStarter OnInitialState() public override void OnInitialState() OnMissionBehaviorInitialize(Mission) public override void OnMissionBehaviorInitialize(Mission mission) Parameters mission Mission OnMultiplayerGameStart(Game, object) public override void OnMultiplayerGameStart(Game game, object starterObject) Parameters game Game starterObject object OnNewGameCreated(Game, object) public override void OnNewGameCreated(Game game, object initializerObject) Parameters game Game initializerObject object OnSubModuleLoad() protected override void OnSubModuleLoad() OnSubModuleUnloaded() protected override void OnSubModuleUnloaded() RegisterSubModuleObjects(bool) public override void RegisterSubModuleObjects(bool isSavedCampaign) Parameters isSavedCampaign bool" + }, + "api/Bannerlord.ButterLib.ButterLibSaveableTypeDefiner.html": { + "href": "api/Bannerlord.ButterLib.ButterLibSaveableTypeDefiner.html", + "title": "Class ButterLibSaveableTypeDefiner | ButterLib Documentation", + "keywords": "Class ButterLibSaveableTypeDefiner Namespace Bannerlord.ButterLib Assembly Bannerlord.ButterLib.dll Base class of ButterLib's saving system. public abstract class ButterLibSaveableTypeDefiner : SaveableTypeDefiner Inheritance object SaveableTypeDefiner ButterLibSaveableTypeDefiner Inherited Members SaveableTypeDefiner.DefineBasicTypes() SaveableTypeDefiner.DefineClassTypes() SaveableTypeDefiner.DefineStructTypes() SaveableTypeDefiner.DefineInterfaceTypes() SaveableTypeDefiner.DefineEnumTypes() SaveableTypeDefiner.DefineRootClassTypes() SaveableTypeDefiner.DefineGenericClassDefinitions() SaveableTypeDefiner.DefineGenericStructDefinitions() SaveableTypeDefiner.DefineContainerDefinitions() SaveableTypeDefiner.ConstructGenericClassDefinition(Type) SaveableTypeDefiner.ConstructGenericStructDefinition(Type) SaveableTypeDefiner.AddBasicTypeDefinition(Type, int, IBasicTypeSerializer) SaveableTypeDefiner.AddClassDefinition(Type, int, IObjectResolver) SaveableTypeDefiner.AddClassDefinitionWithCustomFields(Type, int, IEnumerable>, IObjectResolver) SaveableTypeDefiner.AddStructDefinitionWithCustomFields(Type, int, IEnumerable>, IObjectResolver) SaveableTypeDefiner.AddRootClassDefinition(Type, int, IObjectResolver) SaveableTypeDefiner.AddStructDefinition(Type, int, IObjectResolver) SaveableTypeDefiner.AddInterfaceDefinition(Type, int) SaveableTypeDefiner.AddEnumDefinition(Type, int, IEnumResolver) SaveableTypeDefiner.ConstructContainerDefinition(Type) object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors ButterLibSaveableTypeDefiner(int) protected ButterLibSaveableTypeDefiner(int saveBaseId) Parameters saveBaseId int" + }, + "api/Bannerlord.ButterLib.ButterLibSubModule.html": { + "href": "api/Bannerlord.ButterLib.ButterLibSubModule.html", + "title": "Class ButterLibSubModule | ButterLib Documentation", + "keywords": "Class ButterLibSubModule Namespace Bannerlord.ButterLib Assembly Bannerlord.ButterLib.dll Main SubModule. Performs initialization of all 3 stages. public sealed class ButterLibSubModule : MBSubModuleBase Inheritance object MBSubModuleBase ButterLibSubModule Inherited Members MBSubModuleBase.OnConfigChanged() MBSubModuleBase.OnGameLoaded(Game, object) MBSubModuleBase.OnNewGameCreated(Game, object) MBSubModuleBase.BeginGameStart(Game) MBSubModuleBase.OnCampaignStart(Game, object) MBSubModuleBase.RegisterSubModuleObjects(bool) MBSubModuleBase.AfterRegisterSubModuleObjects(bool) MBSubModuleBase.OnMultiplayerGameStart(Game, object) MBSubModuleBase.OnGameInitializationFinished(Game) MBSubModuleBase.OnAfterGameInitializationFinished(Game, object) MBSubModuleBase.DoLoading(Game) MBSubModuleBase.OnMissionBehaviorInitialize(Mission) MBSubModuleBase.OnBeforeMissionBehaviorInitialize(Mission) MBSubModuleBase.OnInitialState() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Extension Methods DependencyInjectionExtensions.AddSerilogLoggerProvider(MBSubModuleBase, string, IEnumerable) DependencyInjectionExtensions.AddSerilogLoggerProvider(MBSubModuleBase, string, IEnumerable?, Action?) DependencyInjectionExtensions.GetServiceProvider(MBSubModuleBase) DependencyInjectionExtensions.GetServices(MBSubModuleBase) DependencyInjectionExtensions.GetTempServiceProvider(MBSubModuleBase) Constructors ButterLibSubModule() public ButterLibSubModule() Properties CanBeConfigured public static bool CanBeConfigured { get; } Property Value bool Instance public static ButterLibSubModule? Instance { get; set; } Property Value ButterLibSubModule Methods ConfigureBeforeInitialization(Action) The only way to inject your stuff before ButterLib will start it's initialization Can be used to inject a custom ButterLibOptions provider, but it needs to load before ButterLib public static void ConfigureBeforeInitialization(Action action) Parameters action Action OnApplicationTick(float) protected override void OnApplicationTick(float dt) Parameters dt float OnBeforeInitialModuleScreenSetAsRoot() protected override void OnBeforeInitialModuleScreenSetAsRoot() OnGameEnd(Game) public override void OnGameEnd(Game game) Parameters game Game OnGameStart(Game, IGameStarter) protected override void OnGameStart(Game game, IGameStarter gameStarterObject) Parameters game Game gameStarterObject IGameStarter OnServiceRegistration() public void OnServiceRegistration() OnSubModuleLoad() protected override void OnSubModuleLoad() OnSubModuleUnloaded() protected override void OnSubModuleUnloaded()" + }, + "api/Bannerlord.ButterLib.Common.Extensions.ApplicationVersionExtensions.html": { + "href": "api/Bannerlord.ButterLib.Common.Extensions.ApplicationVersionExtensions.html", + "title": "Class ApplicationVersionExtensions | ButterLib Documentation", + "keywords": "Class ApplicationVersionExtensions Namespace Bannerlord.ButterLib.Common.Extensions Assembly Bannerlord.ButterLib.dll An extension class for the ApplicationVersion. public static class ApplicationVersionExtensions Inheritance object ApplicationVersionExtensions Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Methods IsSameWithRevision(ApplicationVersion, ApplicationVersion) Determines whether two source ApplicationVersion structs are equal up to the revisions. public static bool IsSameWithRevision(this ApplicationVersion @this, ApplicationVersion other) Parameters this ApplicationVersion An ApplicationVersion struct to compare to second. other ApplicationVersion An ApplicationVersion struct to compare to the first. Returns bool true if corresponding elements of two source ApplicationVersion structs are equal according to the default equality comparer for their type; otherwise, false. IsSameWithoutRevision(ApplicationVersion, ApplicationVersion) Determines whether two source ApplicationVersion structs are equal, disregarding revisions. public static bool IsSameWithoutRevision(this ApplicationVersion @this, ApplicationVersion other) Parameters this ApplicationVersion An ApplicationVersion struct to compare to second. other ApplicationVersion An ApplicationVersion struct to compare to the first. Returns bool true if corresponding elements of two source ApplicationVersion structs are equal according to the default equality comparer for their type; otherwise, false. Differences in the revisions between two source ApplicationVersion structs do not affect the result." + }, + "api/Bannerlord.ButterLib.Common.Extensions.CampaignExtensions.html": { + "href": "api/Bannerlord.ButterLib.Common.Extensions.CampaignExtensions.html", + "title": "Class CampaignExtensions | ButterLib Documentation", + "keywords": "Class CampaignExtensions Namespace Bannerlord.ButterLib.Common.Extensions Assembly Bannerlord.ButterLib.dll Helper extension of the Campaign class returning additional information, provided by the ButterLib. public static class CampaignExtensions Inheritance object CampaignExtensions Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Remarks Contains easy accessible getters for the current CampaignId Methods GetDefaultClanDistanceMatrix(Campaign) Gets the DistanceMatrix calculated by default for the Clan object type. public static DistanceMatrix? GetDefaultClanDistanceMatrix(this Campaign campaign) Parameters campaign Campaign The campaign Returns DistanceMatrix Distance matrix for all the active clans of the current campaign, or null if the campaign has not started yet. Remarks Calculation is based on the average distance between clans fiefs weighted by the fief type. GetDefaultKingdomDistanceMatrix(Campaign) Gets the DistanceMatrix calculated by default for the Kingdom object type. public static DistanceMatrix? GetDefaultKingdomDistanceMatrix(this Campaign campaign) Parameters campaign Campaign The campaign Returns DistanceMatrix Distance matrix for all the active kingdoms of the current campaign, or null if the campaign has not started yet. Remarks Calculation is based on the average distance between kingdoms fiefs weighted by the fief type. GetDefaultSettlementDistanceMatrix(Campaign) Gets the DistanceMatrix calculated by default for the Settlement object type. public static DistanceMatrix? GetDefaultSettlementDistanceMatrix(this Campaign campaign) Parameters campaign Campaign The campaign Returns DistanceMatrix Distance matrix for all the towns, castles and villages of the current campaign, or null if the campaign has not started yet." + }, + "api/Bannerlord.ButterLib.Common.Extensions.DependencyInjectionExtensions.html": { + "href": "api/Bannerlord.ButterLib.Common.Extensions.DependencyInjectionExtensions.html", + "title": "Class DependencyInjectionExtensions | ButterLib Documentation", + "keywords": "Class DependencyInjectionExtensions Namespace Bannerlord.ButterLib.Common.Extensions Assembly Bannerlord.ButterLib.dll public static class DependencyInjectionExtensions Inheritance object DependencyInjectionExtensions Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Methods AddSerilogLoggerProvider(MBSubModuleBase, string, IEnumerable) Don't forget to get a new ILogger after adding a new ILoggerProvider public static IServiceCollection AddSerilogLoggerProvider(this MBSubModuleBase subModule, string filename, IEnumerable filter) Parameters subModule MBSubModuleBase filename string filter IEnumerable Returns IServiceCollection AddSerilogLoggerProvider(MBSubModuleBase, string, IEnumerable?, Action?) Don't forget to get a new ILogger after adding a new ILoggerProvider public static IServiceCollection AddSerilogLoggerProvider(this MBSubModuleBase subModule, string filename, IEnumerable? filter = null, Action? configure = null) Parameters subModule MBSubModuleBase filename string filter IEnumerable configure Action Returns IServiceCollection AddSubSystem(IServiceCollection) public static IServiceCollection AddSubSystem(this IServiceCollection services) where TImplementation : class, ISubSystem, new() Parameters services IServiceCollection Returns IServiceCollection Type Parameters TImplementation FromSources(IEnumerable) public static Func FromSources(IEnumerable sources) Parameters sources IEnumerable Returns Func GetServiceProvider(CampaignBehaviorBase) For Stage 3. public static IServiceProvider? GetServiceProvider(this CampaignBehaviorBase _) Parameters _ CampaignBehaviorBase Returns IServiceProvider GetServiceProvider(Game) For Stage 3. public static IServiceProvider? GetServiceProvider(this Game _) Parameters _ Game Returns IServiceProvider GetServiceProvider(MBSubModuleBase) For Stage 3. public static IServiceProvider? GetServiceProvider(this MBSubModuleBase _) Parameters _ MBSubModuleBase Returns IServiceProvider GetServices(MBSubModuleBase) For Stage 2. public static IServiceCollection? GetServices(this MBSubModuleBase _) Parameters _ MBSubModuleBase Returns IServiceCollection GetSubSystem(IServiceProvider, string) public static ISubSystem? GetSubSystem(this IServiceProvider sp, string id) Parameters sp IServiceProvider id string Returns ISubSystem GetTempServiceProvider(MBSubModuleBase) For Stage 2. public static IServiceProvider? GetTempServiceProvider(this MBSubModuleBase _) Parameters _ MBSubModuleBase Returns IServiceProvider" + }, + "api/Bannerlord.ButterLib.Common.Extensions.html": { + "href": "api/Bannerlord.ButterLib.Common.Extensions.html", + "title": "Namespace Bannerlord.ButterLib.Common.Extensions | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.Common.Extensions Classes ApplicationVersionExtensions An extension class for the ApplicationVersion. CampaignExtensions Helper extension of the Campaign class returning additional information, provided by the ButterLib. DependencyInjectionExtensions MbEventExtensions Extension class of the TaleWorlds.CampaignSystem.MbEvent class and its generic variations." + }, + "api/Bannerlord.ButterLib.Common.Extensions.MbEventExtensions.html": { + "href": "api/Bannerlord.ButterLib.Common.Extensions.MbEventExtensions.html", + "title": "Class MbEventExtensions | ButterLib Documentation", + "keywords": "Class MbEventExtensions Namespace Bannerlord.ButterLib.Common.Extensions Assembly Bannerlord.ButterLib.dll Extension class of the TaleWorlds.CampaignSystem.MbEvent class and its generic variations. public static class MbEventExtensions Inheritance object MbEventExtensions Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Remarks For some reason TW hid \"Invoke\" methods of the MbEvent classes with number of generic arguments greater than one. This extension class corrects said misconception. Methods Invoke(MbEvent, T1, T2) Invokes all the listeners to the specified TaleWorlds.CampaignSystem.MbEvent. public static void Invoke(this MbEvent instance, T1 arg1, T2 arg2) Parameters instance MbEvent An instance of TaleWorlds.CampaignSystem.MbEvent to call \"Invoke\" against. arg1 T1 Fist argument of the event. arg2 T2 Second argument of the event. Type Parameters T1 The type of the first event argument. T2 The type of the second event argument. Remarks This is accomplished by calling a delegate on the private method called \"Invoke\" of the TaleWorlds.CampaignSystem.MbEvent, which guarantees fast and native execution. Invoke(MbEvent, T1, T2, T3) Invokes all the listeners to the specified TaleWorlds.CampaignSystem.MbEvent. public static void Invoke(this MbEvent instance, T1 arg1, T2 arg2, T3 arg3) Parameters instance MbEvent An instance of TaleWorlds.CampaignSystem.MbEvent to call \"Invoke\" against. arg1 T1 Fist argument of the event. arg2 T2 Second argument of the event. arg3 T3 Third argument of the event. Type Parameters T1 The type of the first event argument. T2 The type of the second event argument. T3 The type of the third event argument. Remarks This is accomplished by calling a delegate on the private method called \"Invoke\" of the TaleWorlds.CampaignSystem.MbEvent, which guarantees fast and native execution. Invoke(MbEvent, T1, T2, T3, T4) Invokes all the listeners to the specified TaleWorlds.CampaignSystem.MbEvent. public static void Invoke(this MbEvent instance, T1 arg1, T2 arg2, T3 arg3, T4 arg4) Parameters instance MbEvent An instance of TaleWorlds.CampaignSystem.MbEvent to call \"Invoke\" against. arg1 T1 Fist argument of the event. arg2 T2 Second argument of the event. arg3 T3 Third argument of the event. arg4 T4 Fourth argument of the event. Type Parameters T1 The type of the first event argument. T2 The type of the second event argument. T3 The type of the third event argument. T4 The type of the fourth event argument. Remarks This is accomplished by calling a delegate on the private method called \"Invoke\" of the TaleWorlds.CampaignSystem.MbEvent, which guarantees fast and native execution. Invoke(MbEvent, T1, T2, T3, T4, T5) Invokes all the listeners to the specified TaleWorlds.CampaignSystem.MbEvent. public static void Invoke(this MbEvent instance, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) Parameters instance MbEvent An instance of TaleWorlds.CampaignSystem.MbEvent to call \"Invoke\" against. arg1 T1 Fist argument of the event. arg2 T2 Second argument of the event. arg3 T3 Third argument of the event. arg4 T4 Fourth argument of the event. arg5 T5 Fifth argument of the event. Type Parameters T1 The type of the first event argument. T2 The type of the second event argument. T3 The type of the third event argument. T4 The type of the fourth event argument. T5 The type of the fifth event argument. Remarks This is accomplished by calling a delegate on the private method called \"Invoke\" of the TaleWorlds.CampaignSystem.MbEvent, which guarantees fast and native execution. Invoke(MbEvent, T1, T2, T3, T4, T5, T6) Invokes all the listeners to the specified TaleWorlds.CampaignSystem.MbEvent. public static void Invoke(this MbEvent instance, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) Parameters instance MbEvent An instance of TaleWorlds.CampaignSystem.MbEvent to call \"Invoke\" against. arg1 T1 Fist argument of the event. arg2 T2 Second argument of the event. arg3 T3 Third argument of the event. arg4 T4 Fourth argument of the event. arg5 T5 Fifth argument of the event. arg6 T6 Sixth argument of the event. Type Parameters T1 The type of the first event argument. T2 The type of the second event argument. T3 The type of the third event argument. T4 The type of the fourth event argument. T5 The type of the fifth event argument. T6 The type of the sixth event argument. Remarks This is accomplished by calling a delegate on the private method called \"Invoke\" of the TaleWorlds.CampaignSystem.MbEvent, which guarantees fast and native execution." + }, + "api/Bannerlord.ButterLib.Common.Helpers.ApplicationVersionComparer.html": { + "href": "api/Bannerlord.ButterLib.Common.Helpers.ApplicationVersionComparer.html", + "title": "Class ApplicationVersionComparer | ButterLib Documentation", + "keywords": "Class ApplicationVersionComparer Namespace Bannerlord.ButterLib.Common.Helpers Assembly Bannerlord.ButterLib.dll public class ApplicationVersionComparer : IComparer Inheritance object ApplicationVersionComparer Implements IComparer Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Methods Compare(ApplicationVersion, ApplicationVersion) public int Compare(ApplicationVersion x, ApplicationVersion y) Parameters x ApplicationVersion y ApplicationVersion Returns int" + }, + "api/Bannerlord.ButterLib.Common.Helpers.ElegantPairHelper.html": { + "href": "api/Bannerlord.ButterLib.Common.Helpers.ElegantPairHelper.html", + "title": "Class ElegantPairHelper | ButterLib Documentation", + "keywords": "Class ElegantPairHelper Namespace Bannerlord.ButterLib.Common.Helpers Assembly Bannerlord.ButterLib.dll Helper class that implements the pairing function created by Matthew Szudzik. public static class ElegantPairHelper Inheritance object ElegantPairHelper Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Remarks A pairing function on a set A associates each pair of members from A with a single member of B, so that any two distinct pairs of members from A are associated with two distinct members of B. Methods Pair(short, short) Pairs two 16-bit signed integers based on their position. public static int Pair(short a, short b) Parameters a short First 16-bit signed integer in a pair. b short Second 16-bit signed integer in a pair. Returns int A 32-bit signed integer representing the initial pair. Pair(int, int) Pairs two 32-bit signed integers based on their position. public static long Pair(int a, int b) Parameters a int First 32-bit signed integer in a pair. b int Second 32-bit signed integer in a pair. Returns long A 64-bit signed integer representing the initial pair. Pair(ushort, ushort) Pairs two 16-bit unsigned integers based on their position. public static uint Pair(ushort a, ushort b) Parameters a ushort First 16-bit unsigned integer in a pair. b ushort Second 16-bit unsigned integer in a pair. Returns uint A 32-bit unsigned integer representing the initial pair. Pair(uint, uint) Pairs two 32-bit unsigned integers based on their position. public static ulong Pair(uint a, uint b) Parameters a uint First 32-bit unsigned integer in a pair. b uint Second 32-bit unsigned integer in a pair. Returns ulong A 64-bit unsigned integer representing the initial pair. Pair(MBGUID, MBGUID) Pairs two MBGUID objects based on their position. public static ulong Pair(MBGUID a, MBGUID b) Parameters a MBGUID First MBGUID object in a pair. b MBGUID Second MBGUID object in a pair. Returns ulong A 64-bit unsigned integer representing the initial pair. UnPair(int) Unpairs an 32-bit signed integer representing the pair into two 16-bit signed integers with regard to their initial positions before pairing. public static (short A, short B) UnPair(int pairValue) Parameters pairValue int A 32-bit signed integer representing the pair. Returns (short A, short B) A tuple of 16-bit signed integers that were paired. Remarks Due to some imperfections of the negative pairing algorithm, this method could be rather slow. UnPair(long) Unpairs an 64-bit signed integer representing the pair into two 32-bit signed integers with regard to their initial positions before pairing. public static (int A, int B) UnPair(long pairValue) Parameters pairValue long A 64-bit signed integer representing the pair. Returns (int A, int B) A tuple of 32-bit signed integers that were paired. Remarks Due to some imperfections of the negative pairing algorithm, this method could be rather slow. UnPair(uint) Unpairs an 32-bit unsigned integer representing the pair into two 16-bit unsigned integers with regard to their initial positions before pairing. public static (ushort A, ushort B) UnPair(uint pairValue) Parameters pairValue uint A 32-bit unsigned integer representing the pair. Returns (ushort A, ushort B) A tuple of 16-bit unsigned integers that were paired. UnPair(ulong) Unpairs an 64-bit unsigned integer representing the pair into two 32-bit unsigned integers with regard to their initial positions before pairing. public static (uint A, uint B) UnPair(ulong pairValue) Parameters pairValue ulong A 64-bit unsigned integer representing the pair. Returns (uint A, uint B) A tuple of 32-bit unsigned integers that were paired. UnPairMBGUID(ulong) Unpairs an 64-bit unsigned integer representing the pair into two MBGUID objects with regard to their initial positions before pairing. public static (MBGUID A, MBGUID B) UnPairMBGUID(ulong pairValue) Parameters pairValue ulong A 64-bit unsigned integer representing the pair. Returns (MBGUID A, MBGUID B) A tuple of MBGUID objects that were paired." + }, + "api/Bannerlord.ButterLib.Common.Helpers.html": { + "href": "api/Bannerlord.ButterLib.Common.Helpers.html", + "title": "Namespace Bannerlord.ButterLib.Common.Helpers | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.Common.Helpers Classes ApplicationVersionComparer ElegantPairHelper Helper class that implements the pairing function created by Matthew Szudzik. LocalizationHelper Helper class used to store numeric variables or complex entities in the TextObject. Enums LocalizationHelper.PluralForm LocalizationHelper.RecursiveCaller" + }, + "api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.html": { + "href": "api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.html", + "title": "Class LocalizationHelper | ButterLib Documentation", + "keywords": "Class LocalizationHelper Namespace Bannerlord.ButterLib.Common.Helpers Assembly Bannerlord.ButterLib.dll Helper class used to store numeric variables or complex entities in the TextObject. public static class LocalizationHelper Inheritance object LocalizationHelper Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Fields LIST_END_TAG A string tag used in SetListVariable(TextObject?, string, List, string, bool) method. Will contain the last element of the list. public const string LIST_END_TAG = \"END\" Field Value string LIST_HAS_ITEMS_TAG A string tag used in SetListVariable(TextObject?, string, List, string, bool) method. Indicates that list has at least 1 element. public const string LIST_HAS_ITEMS_TAG = \"ANY\" Field Value string LIST_HAS_MULTIPLE_ITEMS_TAG A string tag used in SetListVariable(TextObject?, string, List, string, bool) method. Indicates that list has more than 1 elements. public const string LIST_HAS_MULTIPLE_ITEMS_TAG = \"IS_PLURAL\" Field Value string LIST_START_TAG A string tag used in SetListVariable(TextObject?, string, List, string, bool) method. Will contain all the elements of the list except the last one, separated by a comma. For empty lists or lists with a single element it will contain an empty string. public const string LIST_START_TAG = \"START\" Field Value string PLURAL_FORM_TAG A string tag that corresponds with Plural and could be stored as an attribute of the numeric variable by the \"SetNumericVariable\" method. public const string PLURAL_FORM_TAG = \"PLURAL_FORM\" Field Value string SPECIFIC_PLURAL_FORM_TAG A string tag that corresponds with SpecificPlural and could be stored as an attribute of the numeric variable by the \"SetNumericVariable\" method. public const string SPECIFIC_PLURAL_FORM_TAG = \"SPECIFIC_PLURAL_FORM\" Field Value string SPECIFIC_SINGULAR_FORM_TAG A string tag that corresponds with SpecificSingular and could be stored as an attribute of the numeric variable by the \"SetNumericVariable\" method. public const string SPECIFIC_SINGULAR_FORM_TAG = \"SPECIFIC_SINGULAR_FORM\" Field Value string Methods GetPluralForm(int) Gets which LocalizationHelper.PluralForm should be used with the given number according to the grammar rules of the game language. public static LocalizationHelper.PluralForm GetPluralForm(int number) Parameters number int An integer number to get appropriate LocalizationHelper.PluralForm for. Returns LocalizationHelper.PluralForm The appropriate LocalizationHelper.PluralForm that should be used with the given number in accordance with the grammar rules of the game language. GetPluralForm(float) Gets which LocalizationHelper.PluralForm should be used with the given number according to the grammar rules of the game language. public static LocalizationHelper.PluralForm GetPluralForm(float number) Parameters number float A floating-point number to get appropriate LocalizationHelper.PluralForm for. Returns LocalizationHelper.PluralForm The appropriate LocalizationHelper.PluralForm that should be used with the given number in accordance with the grammar rules of the game language. SetEntityProperties(TextObject?, string, T?, bool, RecursiveCaller) Sets complex entity into specified text variable, along with additional information on other related entities. public static void SetEntityProperties(TextObject? parentTextObject, string tag, T? entity, bool addLeaderInfo = false, LocalizationHelper.RecursiveCaller recursiveCaller = RecursiveCaller.None) where T : class Parameters parentTextObject TextObject The TextObject to store entity information into. Null means that information will be stored into MBTextManager. tag string A string tag that will be used to store information about entity and also as a prefix for tags that will store other relevant entities. entity T An instance of the entity to be stored. addLeaderInfo bool An optional argument, specifying if information about leaders should be also stored, when applicable. recursiveCaller LocalizationHelper.RecursiveCaller An optional argument, specifying if method is called from itself, adding information on some related entity. Type Parameters T The type of the entity to be stored. SetListVariable(TextObject?, string, List, string, bool) Sets a variable containing a list of strings to the specified tag so that all elements are correctly listed according to the grammar rules of the game language. public static void SetListVariable(TextObject? textObject, string tag, List valuesList, string separator = \", \", bool useDistinctValues = true) Parameters textObject TextObject The TextObject to set a List variable into. Null means that information will be stored into MBTextManager. tag string A string tag that will be used to store information about the strings in the provided list. valuesList List A set of strings that has to be listed. separator string An optional argument specifying the string separator to be used for the listing. useDistinctValues bool An optional argument specifying whether only unique strings should be listed. Examples var lst = new [] { \"First Entry\", \"Second Entry\", \"Third Entry\", \"Second Entry\" }.ToList(); var txt = new TextObject(\"Here is the built-in text: '{TEST_TAG}'. Here is custom text: '{TEST_TAG.START}{?TEST_TAG.IS_PLURAL} and last but not least the {?}{\\\\?}{TEST_TAG.END}'\"); LocalizationHelper.SetListVariable(txt, \"TEST_TAG\", lst); InformationManager.DisplayMessage(new InformationMessage(txt!.ToString(), Color.FromUint(0x00F16D26))); Remarks The tag parameter will contain a TextObject with both the ready-to-use result of the built-in concatenation of the provided list of strings and all the necessary attributes to create custom concatenations. Please note that built-in concatenation uses the \"{=JLkq0ZkOSI}{START}{?IS_PLURAL} and {?}{\\?}{END}\" string from the \"..\\Bannerlord.ButterLib\\ModuleData\\Languages\\EN\\sta_strings.xml\". If you are planning to use it explicitly, it is advised to duplicate it in your own localization xml files for the sake of clarity. SetNumericVariable(TextObject?, string, int, string?) Sets a numeric variable along with the appropriate LocalizationHelper.PluralForm tag in accordance with the grammar rules of the game language. public static void SetNumericVariable(TextObject? textObject, string tag, int variableValue, string? format = null) Parameters textObject TextObject The TextObject to set a numeric variable into. Null means that information will be stored into MBTextManager. tag string A string tag that will be used to store information about the numeric variable. variableValue int An integer number to be set. format string An optional argument, specifying string format to be used with the number. SetNumericVariable(TextObject?, string, float, string?) Sets a numeric variable along with the appropriate LocalizationHelper.PluralForm tag in accordance with the grammar rules of the game language. public static void SetNumericVariable(TextObject? textObject, string tag, float variableValue, string? format = null) Parameters textObject TextObject The TextObject to set a numeric variable into. Null means that information will be stored into MBTextManager. tag string A string tag that will be used to store information about the numeric variable. variableValue float An floating-point number to be set. format string An optional argument, specifying string format to be used with the number." + }, + "api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.PluralForm.html": { + "href": "api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.PluralForm.html", + "title": "Enum LocalizationHelper.PluralForm | ButterLib Documentation", + "keywords": "Enum LocalizationHelper.PluralForm Namespace Bannerlord.ButterLib.Common.Helpers Assembly Bannerlord.ButterLib.dll public enum LocalizationHelper.PluralForm : byte Fields Plural = 3 Singular = 0 SpecificPlural = 2 SpecificSingular = 1" + }, + "api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.RecursiveCaller.html": { + "href": "api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.RecursiveCaller.html", + "title": "Enum LocalizationHelper.RecursiveCaller | ButterLib Documentation", + "keywords": "Enum LocalizationHelper.RecursiveCaller Namespace Bannerlord.ButterLib.Common.Helpers Assembly Bannerlord.ButterLib.dll public enum LocalizationHelper.RecursiveCaller : byte Fields Clan = 3 Hero = 1 Kingdom = 4 None = 0 Settlement = 2" + }, + "api/Bannerlord.ButterLib.DelayedSubModule.DelayedSubModuleManager.html": { + "href": "api/Bannerlord.ButterLib.DelayedSubModule.DelayedSubModuleManager.html", + "title": "Class DelayedSubModuleManager | ButterLib Documentation", + "keywords": "Class DelayedSubModuleManager Namespace Bannerlord.ButterLib.DelayedSubModule Assembly Bannerlord.ButterLib.dll Allows you to inject your own code into the load / unload sequence of other modules without specifying them directly as a dependency in 'SubModule.xml'. public static class DelayedSubModuleManager Inheritance object DelayedSubModuleManager Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Remarks Supported methods are: 'OnSubModuleLoad', 'OnSubModuleUnloaded', 'OnBeforeInitialModuleScreenSetAsRoot', 'OnGameStart', 'OnGameEnd'. The basic loading order still applies, so while you can technically subscribe to the 'OnSubModuleLoad' methods of the already loaded modules, it won't affect them as they will be executed before. The delegate passed will still be executed. Methods Register(Type) Registers a module to be a target of the DelayedSubModuleManager. public static void Register(Type subModule) Parameters subModule Type The exact type of the SubModule to be registered. Register(Type, int, string[]?, string[]?) Registers a module to be a target of the DelayedSubModuleManager Harmony patching. public static void Register(Type subModule, int priority, string[]? before, string[]? after) Parameters subModule Type The exact type of the SubModule to be patched. priority int The HarmonyLib.HarmonyPriority that would be assigned to the patches that would be made. before string[] A list of HarmonyLib.Harmony.Ids that should come after the patches that would be made. after string[] A list of HarmonyLib.Harmony.Ids that should come before the patches that would be made. Register() Registers a module to be a target of the DelayedSubModuleManager. public static void Register() where TSubModule : MBSubModuleBase Type Parameters TSubModule The exact type of the SubModule to be registered. Register(int, string[]?, string[]?) Registers a module to be a target of the DelayedSubModuleManager Harmony patching. public static void Register(int priority, string[]? before, string[]? after) where TSubModule : MBSubModuleBase Parameters priority int The HarmonyLib.HarmonyPriority that would be assigned to the patches that would be made. before string[] A list of HarmonyLib.Harmony.Ids that should come after the patches that would be made. after string[] A list of HarmonyLib.Harmony.Ids that should come before the patches that would be made. Type Parameters TSubModule The exact type of the SubModule to be patched. Subscribe(Type, MBSubModuleBase, string, SubscriptionType, EventHandler) public static void Subscribe(Type mbSubModuleType, MBSubModuleBase caller, string method, SubscriptionType subscriptionType, EventHandler @delegate) Parameters mbSubModuleType Type caller MBSubModuleBase method string subscriptionType SubscriptionType delegate EventHandler Subscribe(MBSubModuleBase, string, SubscriptionType, EventHandler) public static void Subscribe(MBSubModuleBase caller, string method, SubscriptionType subscriptionType, EventHandler @delegate) where T : MBSubModuleBase Parameters caller MBSubModuleBase method string subscriptionType SubscriptionType delegate EventHandler Type Parameters T Subscribe(string, SubscriptionType, EventHandler) public static void Subscribe(string method, SubscriptionType subscriptionType, EventHandler @delegate) where T1 : MBSubModuleBase where T2 : MBSubModuleBase Parameters method string subscriptionType SubscriptionType delegate EventHandler Type Parameters T1 T2" + }, + "api/Bannerlord.ButterLib.DelayedSubModule.html": { + "href": "api/Bannerlord.ButterLib.DelayedSubModule.html", + "title": "Namespace Bannerlord.ButterLib.DelayedSubModule | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.DelayedSubModule Classes DelayedSubModuleManager Allows you to inject your own code into the load / unload sequence of other modules without specifying them directly as a dependency in 'SubModule.xml'. SubscriptionEventArgs A container class for the arguments of the events, that are added to the MBSubModuleBase public and protected method calls. SubscriptionGlobalEventArgs A container class for the arguments of the events, that are added to the MBSubModuleBase public and protected method calls. Enums SubscriptionType" + }, + "api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionEventArgs.html": { + "href": "api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionEventArgs.html", + "title": "Class SubscriptionEventArgs | ButterLib Documentation", + "keywords": "Class SubscriptionEventArgs Namespace Bannerlord.ButterLib.DelayedSubModule Assembly Bannerlord.ButterLib.dll A container class for the arguments of the events, that are added to the MBSubModuleBase public and protected method calls. public class SubscriptionEventArgs : EventArgs Inheritance object EventArgs SubscriptionEventArgs Inherited Members EventArgs.Empty object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Remarks These Events are injected via Harmony patching of the respective methods with HarmonyLib.HarmonyPatchType.Prefix and HarmonyLib.HarmonyPatchType.Postfix. Constructors SubscriptionEventArgs(bool) Initializes a new instance of the SubscriptionGlobalEventArgs class with the supplied values. public SubscriptionEventArgs(bool isBase) Parameters isBase bool An indicator that the underlying virtual implementation of the MBSubModuleBase method was called, not a derived class override. Properties IsBase An indicator that the underlying virtual implementation of the MBSubModuleBase method was called, not a derived class override. public bool IsBase { get; } Property Value bool true, if base MBSubModuleBase virtual method was called. false, if corresponding override method of the derived class specified in Type was called." + }, + "api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionGlobalEventArgs.html": { + "href": "api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionGlobalEventArgs.html", + "title": "Class SubscriptionGlobalEventArgs | ButterLib Documentation", + "keywords": "Class SubscriptionGlobalEventArgs Namespace Bannerlord.ButterLib.DelayedSubModule Assembly Bannerlord.ButterLib.dll A container class for the arguments of the events, that are added to the MBSubModuleBase public and protected method calls. public class SubscriptionGlobalEventArgs : EventArgs Inheritance object EventArgs SubscriptionGlobalEventArgs Inherited Members EventArgs.Empty object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Remarks These Events are injected via Harmony patching of the respective methods with HarmonyLib.HarmonyPatchType.Prefix and HarmonyLib.HarmonyPatchType.Postfix. Constructors SubscriptionGlobalEventArgs(Type, bool, SubscriptionType, string) Initializes a new instance of the SubscriptionGlobalEventArgs class with the supplied values. public SubscriptionGlobalEventArgs(Type type, bool isBase, SubscriptionType subscriptionType, string methodName) Parameters type Type The type of submodule for which the method was called. isBase bool An indicator that the underlying virtual implementation of the MBSubModuleBase method was called, not a derived class override. subscriptionType SubscriptionType A type of the Harmony patch that was used to raise the event. methodName string A method of the ArgumentException derived class that was used to raise the event. Exceptions ArgumentException Thrown when type does not point to a subclass of the ArgumentOutOfRangeException. ArgumentOutOfRangeException Thrown when subscriptionType is not a valid SubscriptionGlobalEventArgs enum. Properties IsBase An indicator that the underlying virtual implementation of the MBSubModuleBase method was called, not a derived class override. public bool IsBase { get; } Property Value bool true, if base MBSubModuleBase virtual method was called. SubscriptionType can only be a AfterMethod in that case. false, if corresponding override method of the derived class specified in Type was called. SubscriptionType could be both BeforeMethod and AfterMethod in that case. MethodName A method of the MBSubModuleBase derived class that was used to raise the event. public string MethodName { get; } Property Value string A string containing the name of the method. SubscriptionType A type of the Harmony patch that was used to raise the event. public SubscriptionType SubscriptionType { get; } Property Value SubscriptionType BeforeMethod, when event is raised before the execution of the method; AfterMethod, when event is raised after the execution of the method. Type The type of submodule for which the method was called. public Type Type { get; } Property Value Type Exact Type of the MBSubModuleBase derived class. Methods IsValid(Type, string, SubscriptionType) public bool IsValid(Type type, string methodName, SubscriptionType subscriptionType) Parameters type Type methodName string subscriptionType SubscriptionType Returns bool IsValid(string, SubscriptionType) public bool IsValid(string methodName, SubscriptionType subscriptionType) where T : MBSubModuleBase Parameters methodName string subscriptionType SubscriptionType Returns bool Type Parameters T" + }, + "api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionType.html": { + "href": "api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionType.html", + "title": "Enum SubscriptionType | ButterLib Documentation", + "keywords": "Enum SubscriptionType Namespace Bannerlord.ButterLib.DelayedSubModule Assembly Bannerlord.ButterLib.dll public enum SubscriptionType : byte Fields AfterMethod = 1 BeforeMethod = 0" + }, + "api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix-1.html": { + "href": "api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix-1.html", + "title": "Class DistanceMatrix | ButterLib Documentation", + "keywords": "Class DistanceMatrix Namespace Bannerlord.ButterLib.DistanceMatrix Assembly Bannerlord.ButterLib.dll A generic class that pairs given objects of type T and for each pair calculates the distance between the objects that formed it. public abstract class DistanceMatrix : DistanceMatrix where T : MBObjectBase Type Parameters T The type of objects for which the distance matrix should be calculated. Inheritance object DistanceMatrix DistanceMatrix Inherited Members DistanceMatrix.Create() DistanceMatrix.Create(Func>, Func) DistanceMatrix.CalculateDistanceBetweenHeroes(Hero, Hero) DistanceMatrix.CalculateDistanceBetweenClans(Clan, Clan, IEnumerable) DistanceMatrix.CalculateDistanceBetweenKingdoms(Kingdom, Kingdom, DistanceMatrix) DistanceMatrix.GetSettlementOwnersPairedList(DistanceMatrix) object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Remarks DistanceMatrix implements built-in calculation for the Hero, Settlement, Clan and Kingdom objects. For any other MBObjectBase subtypes custom EntityListGetter and DistanceCalculator methods should be provided using special constructor Create(Func>, Func) . Constructors DistanceMatrix() Initializes a new instance of the DistanceMatrix class with default EntityListGetter and DistanceCalculator methods. protected DistanceMatrix() Exceptions ArgumentException DistanceMatrix(Func>, Func) Initializes a new instance of the DistanceMatrix class with custom methods that will be used to get the list of analyzed objects and calculate the distances between them. protected DistanceMatrix(Func> customListGetter, Func customDistanceCalculator) Parameters customListGetter Func> A delegate to the method that will be used to get a list of objects of type T for calculating the distances between them. customDistanceCalculator Func A delegate to the method that will be used to calculate the distance between two given type T objects. Exceptions ArgumentException Properties AsDictionary Raw distance matrix representation public abstract Dictionary AsDictionary { get; } Property Value Dictionary A dictionary of paired type T objects represented by unique 64-bit unsigned number as key and floating-point numbers, representing distances between those objects as value. AsTypedDictionary Objectified distance matrix representation public abstract Dictionary<(T Object1, T Object2), float> AsTypedDictionary { get; } Property Value Dictionary<(T Object1, T Object2), float> A dictionary of paired type T objects as key and floating-point numbers, representing distances between those objects as value. Methods Create() Initializes and returns a new instance of the DistanceMatrix class as per actual implementation with the default EntityListGetter and DistanceCalculator methods. public static DistanceMatrix? Create() Returns DistanceMatrix Exceptions ArgumentException Create(Func>, Func) Initializes and returns a new instance of the DistanceMatrix class as per actual implementation with custom methods that will be used to get the list of analyzed objects and calculate the distances between them. public static DistanceMatrix? Create(Func> customListGetter, Func customDistanceCalculator) Parameters customListGetter Func> A delegate to the method that will be used to get a list of objects of type T for calculating the distances between them. customDistanceCalculator Func A delegate to the method that will be used to calculate the distance between two given type T objects. Returns DistanceMatrix Exceptions ArgumentException GetDistance(T, T) Gets calculated distance between specified type T objects. public abstract float GetDistance(T object1, T object2) Parameters object1 T The first of the objects between which it is necessary to determine the distance. object2 T The second of the objects between which it is necessary to determine the distance. Returns float A floating-point number representing the distance between two specified MBObjectBase objects; or NaN, if distance was not calculated or it is uncomputable. SetDistance(T, T, float) Sets new distance value for the specified type T objects. public abstract void SetDistance(T object1, T object2, float distance) Parameters object1 T The first of the objects between which it is necessary to change the predetermined distance. object2 T The second of the objects between which it is necessary to change the predetermined distance. distance float New distance value." + }, + "api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix.html": { + "href": "api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix.html", + "title": "Class DistanceMatrix | ButterLib Documentation", + "keywords": "Class DistanceMatrix Namespace Bannerlord.ButterLib.DistanceMatrix Assembly Bannerlord.ButterLib.dll An abstract class used in a DistanceMatrix derived class, that pairs given objects of type T and for each pair calculates the distance between the objects that formed it. public abstract class DistanceMatrix Inheritance object DistanceMatrix Derived DistanceMatrix Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Methods CalculateDistanceBetweenClans(Clan, Clan, IEnumerable) Calculates distance between two given Clan objects. public static float? CalculateDistanceBetweenClans(Clan clan1, Clan clan2, IEnumerable settlementOwnersPairedList) Parameters clan1 Clan First of the clans to calculate distance between. clan2 Clan Second of the clans to calculate distance between. settlementOwnersPairedList IEnumerable List of the distances between pairs of settlements and of the weights of the paired settlements, except that the owner clan pairs are used instead of the settlements themselves to speed up the process. Returns float? A floating-point number representing the distance between two specified Clan objects or NaN if distance could not be calculated (usually when clan has no fiefs). Remarks Calculation is based on the average distance between clans fiefs weighted by the fief type. CalculateDistanceBetweenHeroes(Hero, Hero) Calculates distance between two given Hero objects. public static float? CalculateDistanceBetweenHeroes(Hero hero1, Hero hero2) Parameters hero1 Hero The first of the heroes to calculate distance between. hero2 Hero The second of the heroes to calculate distance between. Returns float? A floating-point number representing the distance between two specified Hero objects or NaN if distance could not be calculated. CalculateDistanceBetweenKingdoms(Kingdom, Kingdom, DistanceMatrix) Calculates distance between two given Kingdom objects. public static float? CalculateDistanceBetweenKingdoms(Kingdom kingdom1, Kingdom kingdom2, DistanceMatrix clanDistanceMatrix) Parameters kingdom1 Kingdom First of the kingdoms to calculate distance between. kingdom2 Kingdom Second of the kingdoms to calculate distance between. clanDistanceMatrix DistanceMatrix Settlement distance matrix . Returns float? A floating-point number representing the distance between two specified Kingdom objects or NaN if distance could not be calculated. Remarks Calculation is based on the average distance between kingdoms fiefs weighted by the fief type. Create() Initializes a new instance of the DistanceMatrix class as per actual implementation with the default EntityListGetter and DistanceCalculator methods. public static DistanceMatrix? Create() where T : MBObjectBase Returns DistanceMatrix Type Parameters T Exceptions ArgumentException Create(Func>, Func) Initializes and returns a new instance of the DistanceMatrix class as per actual implementation with custom methods that will be used to get the list of analyzed objects and calculate the distances between them. public static DistanceMatrix? Create(Func> customListGetter, Func customDistanceCalculator) where T : MBObjectBase Parameters customListGetter Func> A delegate to the method that will be used to get a list of objects of type T for calculating the distances between them. customDistanceCalculator Func A delegate to the method that will be used to calculate the distance between two given type T objects. Returns DistanceMatrix Type Parameters T Exceptions ArgumentException GetSettlementOwnersPairedList(DistanceMatrix) Transforms given Settlement distance matrix into list of the weighted distances between pairs of settlements, except that the owner clan pairs are used instead of the settlements themselves. public static List? GetSettlementOwnersPairedList(DistanceMatrix settlementDistanceMatrix) Parameters settlementDistanceMatrix DistanceMatrix Settlement distance matrix to transform into list. Returns List A list of tuples holding information about pair of initial settlements owners, distance between settlements and combined settlement weight. Remarks This method could be used to supply CalculateDistanceBetweenClans(Clan, Clan, IEnumerable) method with required list argument." + }, + "api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrixResult.html": { + "href": "api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrixResult.html", + "title": "Class DistanceMatrixResult | ButterLib Documentation", + "keywords": "Class DistanceMatrixResult Namespace Bannerlord.ButterLib.DistanceMatrix Assembly Bannerlord.ButterLib.dll public record DistanceMatrixResult : IEquatable Inheritance object DistanceMatrixResult Implements IEquatable Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors DistanceMatrixResult(ulong, float, float) public DistanceMatrixResult(ulong Owners, float Distance, float Weight) Parameters Owners ulong Distance float Weight float Properties Distance public float Distance { get; init; } Property Value float Owners public ulong Owners { get; init; } Property Value ulong Weight public float Weight { get; init; } Property Value float" + }, + "api/Bannerlord.ButterLib.DistanceMatrix.html": { + "href": "api/Bannerlord.ButterLib.DistanceMatrix.html", + "title": "Namespace Bannerlord.ButterLib.DistanceMatrix | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.DistanceMatrix Classes DistanceMatrix An abstract class used in a DistanceMatrix derived class, that pairs given objects of type T and for each pair calculates the distance between the objects that formed it. DistanceMatrixResult DistanceMatrix A generic class that pairs given objects of type T and for each pair calculates the distance between the objects that formed it." + }, + "api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIClassAttribute.html": { + "href": "api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIClassAttribute.html", + "title": "Class DynamicAPIClassAttribute | ButterLib Documentation", + "keywords": "Class DynamicAPIClassAttribute Namespace Bannerlord.ButterLib.DynamicAPI Assembly Bannerlord.ButterLib.dll Requires a public empty constructor for instance methods [AttributeUsage(AttributeTargets.Class)] public sealed class DynamicAPIClassAttribute : Attribute, _Attribute Inheritance object Attribute DynamicAPIClassAttribute Implements _Attribute Inherited Members Attribute.GetCustomAttributes(MemberInfo, Type) Attribute.GetCustomAttributes(MemberInfo, Type, bool) Attribute.GetCustomAttributes(MemberInfo) Attribute.GetCustomAttributes(MemberInfo, bool) Attribute.IsDefined(MemberInfo, Type) Attribute.IsDefined(MemberInfo, Type, bool) Attribute.GetCustomAttribute(MemberInfo, Type) Attribute.GetCustomAttribute(MemberInfo, Type, bool) Attribute.GetCustomAttributes(ParameterInfo) Attribute.GetCustomAttributes(ParameterInfo, Type) Attribute.GetCustomAttributes(ParameterInfo, Type, bool) Attribute.GetCustomAttributes(ParameterInfo, bool) Attribute.IsDefined(ParameterInfo, Type) Attribute.IsDefined(ParameterInfo, Type, bool) Attribute.GetCustomAttribute(ParameterInfo, Type) Attribute.GetCustomAttribute(ParameterInfo, Type, bool) Attribute.GetCustomAttributes(Module, Type) Attribute.GetCustomAttributes(Module) Attribute.GetCustomAttributes(Module, bool) Attribute.GetCustomAttributes(Module, Type, bool) Attribute.IsDefined(Module, Type) Attribute.IsDefined(Module, Type, bool) Attribute.GetCustomAttribute(Module, Type) Attribute.GetCustomAttribute(Module, Type, bool) Attribute.GetCustomAttributes(Assembly, Type) Attribute.GetCustomAttributes(Assembly, Type, bool) Attribute.GetCustomAttributes(Assembly) Attribute.GetCustomAttributes(Assembly, bool) Attribute.IsDefined(Assembly, Type) Attribute.IsDefined(Assembly, Type, bool) Attribute.GetCustomAttribute(Assembly, Type) Attribute.GetCustomAttribute(Assembly, Type, bool) Attribute.Equals(object) Attribute.GetHashCode() Attribute.Match(object) Attribute.IsDefaultAttribute() Attribute.TypeId object.ToString() object.Equals(object, object) object.ReferenceEquals(object, object) object.GetType() Constructors DynamicAPIClassAttribute(string) public DynamicAPIClassAttribute(string @class) Parameters class string Properties Class public string Class { get; } Property Value string" + }, + "api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIInstance.html": { + "href": "api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIInstance.html", + "title": "Class DynamicAPIInstance | ButterLib Documentation", + "keywords": "Class DynamicAPIInstance Namespace Bannerlord.ButterLib.DynamicAPI Assembly Bannerlord.ButterLib.dll Represents a wrapper of an object marked with DynamicAPIClassAttribute. public class DynamicAPIInstance Inheritance object DynamicAPIInstance Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Methods RequestMethod(string?) Return an instance API method, see DynamicAPIMethodAttribute. We recommend to save the delegate instead of calling this function multiple times. public TDelegate? RequestMethod(string? method) where TDelegate : Delegate Parameters method string Returns TDelegate Type Parameters TDelegate" + }, + "api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIMethodAttribute.html": { + "href": "api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIMethodAttribute.html", + "title": "Class DynamicAPIMethodAttribute | ButterLib Documentation", + "keywords": "Class DynamicAPIMethodAttribute Namespace Bannerlord.ButterLib.DynamicAPI Assembly Bannerlord.ButterLib.dll [AttributeUsage(AttributeTargets.Method)] public sealed class DynamicAPIMethodAttribute : Attribute, _Attribute Inheritance object Attribute DynamicAPIMethodAttribute Implements _Attribute Inherited Members Attribute.GetCustomAttributes(MemberInfo, Type) Attribute.GetCustomAttributes(MemberInfo, Type, bool) Attribute.GetCustomAttributes(MemberInfo) Attribute.GetCustomAttributes(MemberInfo, bool) Attribute.IsDefined(MemberInfo, Type) Attribute.IsDefined(MemberInfo, Type, bool) Attribute.GetCustomAttribute(MemberInfo, Type) Attribute.GetCustomAttribute(MemberInfo, Type, bool) Attribute.GetCustomAttributes(ParameterInfo) Attribute.GetCustomAttributes(ParameterInfo, Type) Attribute.GetCustomAttributes(ParameterInfo, Type, bool) Attribute.GetCustomAttributes(ParameterInfo, bool) Attribute.IsDefined(ParameterInfo, Type) Attribute.IsDefined(ParameterInfo, Type, bool) Attribute.GetCustomAttribute(ParameterInfo, Type) Attribute.GetCustomAttribute(ParameterInfo, Type, bool) Attribute.GetCustomAttributes(Module, Type) Attribute.GetCustomAttributes(Module) Attribute.GetCustomAttributes(Module, bool) Attribute.GetCustomAttributes(Module, Type, bool) Attribute.IsDefined(Module, Type) Attribute.IsDefined(Module, Type, bool) Attribute.GetCustomAttribute(Module, Type) Attribute.GetCustomAttribute(Module, Type, bool) Attribute.GetCustomAttributes(Assembly, Type) Attribute.GetCustomAttributes(Assembly, Type, bool) Attribute.GetCustomAttributes(Assembly) Attribute.GetCustomAttributes(Assembly, bool) Attribute.IsDefined(Assembly, Type) Attribute.IsDefined(Assembly, Type, bool) Attribute.GetCustomAttribute(Assembly, Type) Attribute.GetCustomAttribute(Assembly, Type, bool) Attribute.Equals(object) Attribute.GetHashCode() Attribute.Match(object) Attribute.IsDefaultAttribute() Attribute.TypeId object.ToString() object.Equals(object, object) object.ReferenceEquals(object, object) object.GetType() Constructors DynamicAPIMethodAttribute(string) public DynamicAPIMethodAttribute(string method) Parameters method string Properties Method public string Method { get; } Property Value string" + }, + "api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIProvider.html": { + "href": "api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIProvider.html", + "title": "Class DynamicAPIProvider | ButterLib Documentation", + "keywords": "Class DynamicAPIProvider Namespace Bannerlord.ButterLib.DynamicAPI Assembly Bannerlord.ButterLib.dll Requests will be available on OnBeforeInitialModuleScreenSetAsRoot() stage. The reason is, we need to wait for all SubModules to have OnSubModuleLoad() executed. public static class DynamicAPIProvider Inheritance object DynamicAPIProvider Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Methods RequestAPIClass(string?) Return an API instance, see DynamicAPIClassAttribute. public static DynamicAPIInstance? RequestAPIClass(string? @class) Parameters class string Returns DynamicAPIInstance RequestAPIMethod(string?, string?) Return a static API method, see DynamicAPIMethodAttribute. We recommend to save the delegate instead of calling this function multiple times. public static TDelegate? RequestAPIMethod(string? @class, string? method) where TDelegate : Delegate Parameters class string method string Returns TDelegate Type Parameters TDelegate" + }, + "api/Bannerlord.ButterLib.DynamicAPI.html": { + "href": "api/Bannerlord.ButterLib.DynamicAPI.html", + "title": "Namespace Bannerlord.ButterLib.DynamicAPI | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.DynamicAPI Classes DynamicAPIClassAttribute Requires a public empty constructor for instance methods DynamicAPIInstance Represents a wrapper of an object marked with DynamicAPIClassAttribute. DynamicAPIMethodAttribute DynamicAPIProvider Requests will be available on OnBeforeInitialModuleScreenSetAsRoot() stage. The reason is, we need to wait for all SubModules to have OnSubModuleLoad() executed." + }, + "api/Bannerlord.ButterLib.ExceptionHandler.ExceptionReporter.html": { + "href": "api/Bannerlord.ButterLib.ExceptionHandler.ExceptionReporter.html", + "title": "Class ExceptionReporter | ButterLib Documentation", + "keywords": "Class ExceptionReporter Namespace Bannerlord.ButterLib.ExceptionHandler Assembly Bannerlord.ButterLib.dll public static class ExceptionReporter Inheritance object ExceptionReporter Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Methods BuildAndShow(CrashReportInfo) public static void BuildAndShow(CrashReportInfo crashReport) Parameters crashReport CrashReportInfo Show(Exception) public static void Show(Exception exception) Parameters exception Exception" + }, + "api/Bannerlord.ButterLib.ExceptionHandler.html": { + "href": "api/Bannerlord.ButterLib.ExceptionHandler.html", + "title": "Namespace Bannerlord.ButterLib.ExceptionHandler | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.ExceptionHandler Classes ExceptionReporter" + }, + "api/Bannerlord.ButterLib.ExceptionHandler.WinForms.html": { + "href": "api/Bannerlord.ButterLib.ExceptionHandler.WinForms.html", + "title": "Namespace Bannerlord.ButterLib.ExceptionHandler.WinForms | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.ExceptionHandler.WinForms Classes HtmlCrashReportForm" + }, + "api/Bannerlord.ButterLib.ExceptionHandler.WinForms.HtmlCrashReportForm.html": { + "href": "api/Bannerlord.ButterLib.ExceptionHandler.WinForms.HtmlCrashReportForm.html", + "title": "Class HtmlCrashReportForm | ButterLib Documentation", + "keywords": "Class HtmlCrashReportForm Namespace Bannerlord.ButterLib.ExceptionHandler.WinForms Assembly Bannerlord.ButterLib.dll public class HtmlCrashReportForm : Form, IDropTarget, ISynchronizeInvoke, IWin32Window, IBindableComponent, IComponent, IDisposable, IContainerControl Inheritance object MarshalByRefObject Component Control ScrollableControl ContainerControl Form HtmlCrashReportForm Implements IDropTarget ISynchronizeInvoke IWin32Window IBindableComponent IComponent IDisposable IContainerControl Inherited Members Form.SetVisibleCore(bool) Form.Activate() Form.ActivateMdiChild(Form) Form.AddOwnedForm(Form) Form.AdjustFormScrollbars(bool) Form.Close() Form.CreateControlsInstance() Form.CreateHandle() Form.DefWndProc(ref Message) Form.ProcessMnemonic(char) Form.CenterToParent() Form.CenterToScreen() Form.LayoutMdi(MdiLayout) Form.OnActivated(EventArgs) Form.OnBackgroundImageChanged(EventArgs) Form.OnBackgroundImageLayoutChanged(EventArgs) Form.OnClosing(CancelEventArgs) Form.OnClosed(EventArgs) Form.OnFormClosing(FormClosingEventArgs) Form.OnFormClosed(FormClosedEventArgs) Form.OnCreateControl() Form.OnDeactivate(EventArgs) Form.OnEnabledChanged(EventArgs) Form.OnEnter(EventArgs) Form.OnFontChanged(EventArgs) Form.OnHandleCreated(EventArgs) Form.OnHandleDestroyed(EventArgs) Form.OnHelpButtonClicked(CancelEventArgs) Form.OnLayout(LayoutEventArgs) Form.OnLoad(EventArgs) Form.OnMaximizedBoundsChanged(EventArgs) Form.OnMaximumSizeChanged(EventArgs) Form.OnMinimumSizeChanged(EventArgs) Form.OnInputLanguageChanged(InputLanguageChangedEventArgs) Form.OnInputLanguageChanging(InputLanguageChangingEventArgs) Form.OnVisibleChanged(EventArgs) Form.OnMdiChildActivate(EventArgs) Form.OnMenuStart(EventArgs) Form.OnMenuComplete(EventArgs) Form.OnPaint(PaintEventArgs) Form.OnResize(EventArgs) Form.OnDpiChanged(DpiChangedEventArgs) Form.OnGetDpiScaledSize(int, int, ref Size) Form.OnRightToLeftLayoutChanged(EventArgs) Form.OnShown(EventArgs) Form.OnTextChanged(EventArgs) Form.ProcessCmdKey(ref Message, Keys) Form.ProcessDialogKey(Keys) Form.ProcessDialogChar(char) Form.ProcessKeyPreview(ref Message) Form.ProcessTabKey(bool) Form.RemoveOwnedForm(Form) Form.Select(bool, bool) Form.GetScaledBounds(Rectangle, SizeF, BoundsSpecified) Form.ScaleControl(SizeF, BoundsSpecified) Form.SetBoundsCore(int, int, int, int, BoundsSpecified) Form.SetClientSizeCore(int, int) Form.SetDesktopBounds(int, int, int, int) Form.SetDesktopLocation(int, int) Form.Show(IWin32Window) Form.ShowDialog() Form.ShowDialog(IWin32Window) Form.ToString() Form.UpdateDefaultButton() Form.OnResizeBegin(EventArgs) Form.OnResizeEnd(EventArgs) Form.OnStyleChanged(EventArgs) Form.ValidateChildren() Form.ValidateChildren(ValidationConstraints) Form.WndProc(ref Message) Form.AcceptButton Form.ActiveForm Form.ActiveMdiChild Form.AllowTransparency Form.AutoScroll Form.AutoSize Form.AutoSizeMode Form.AutoValidate Form.BackColor Form.FormBorderStyle Form.CancelButton Form.ClientSize Form.ControlBox Form.CreateParams Form.DefaultImeMode Form.DefaultSize Form.DesktopBounds Form.DesktopLocation Form.DialogResult Form.HelpButton Form.Icon Form.IsMdiChild Form.IsMdiContainer Form.IsRestrictedWindow Form.KeyPreview Form.Location Form.MaximizedBounds Form.MaximumSize Form.MainMenuStrip Form.Menu Form.MinimumSize Form.MaximizeBox Form.MdiChildren Form.MdiParent Form.MergedMenu Form.MinimizeBox Form.Modal Form.Opacity Form.OwnedForms Form.Owner Form.RestoreBounds Form.RightToLeftLayout Form.ShowInTaskbar Form.ShowIcon Form.ShowWithoutActivation Form.Size Form.SizeGripStyle Form.StartPosition Form.Text Form.TopLevel Form.TopMost Form.TransparencyKey Form.WindowState Form.AutoSizeChanged Form.AutoValidateChanged Form.HelpButtonClicked Form.MaximizedBoundsChanged Form.MaximumSizeChanged Form.MinimumSizeChanged Form.Activated Form.Deactivate Form.FormClosing Form.FormClosed Form.Load Form.MdiChildActivate Form.MenuComplete Form.MenuStart Form.InputLanguageChanged Form.InputLanguageChanging Form.RightToLeftLayoutChanged Form.Shown Form.DpiChanged Form.ResizeBegin Form.ResizeEnd ContainerControl.OnAutoValidateChanged(EventArgs) ContainerControl.OnParentChanged(EventArgs) ContainerControl.PerformAutoScale() ContainerControl.Validate() ContainerControl.Validate(bool) ContainerControl.AutoScaleDimensions ContainerControl.AutoScaleFactor ContainerControl.AutoScaleMode ContainerControl.BindingContext ContainerControl.CanEnableIme ContainerControl.ActiveControl ContainerControl.CurrentAutoScaleDimensions ContainerControl.ParentForm ScrollableControl.ScrollStateAutoScrolling ScrollableControl.ScrollStateHScrollVisible ScrollableControl.ScrollStateVScrollVisible ScrollableControl.ScrollStateUserHasScrolled ScrollableControl.ScrollStateFullDrag ScrollableControl.GetScrollState(int) ScrollableControl.OnMouseWheel(MouseEventArgs) ScrollableControl.OnRightToLeftChanged(EventArgs) ScrollableControl.OnPaintBackground(PaintEventArgs) ScrollableControl.OnPaddingChanged(EventArgs) ScrollableControl.SetDisplayRectLocation(int, int) ScrollableControl.ScrollControlIntoView(Control) ScrollableControl.ScrollToControl(Control) ScrollableControl.OnScroll(ScrollEventArgs) ScrollableControl.SetAutoScrollMargin(int, int) ScrollableControl.SetScrollState(int, bool) ScrollableControl.AutoScrollMargin ScrollableControl.AutoScrollPosition ScrollableControl.AutoScrollMinSize ScrollableControl.DisplayRectangle ScrollableControl.HScroll ScrollableControl.HorizontalScroll ScrollableControl.VScroll ScrollableControl.VerticalScroll ScrollableControl.Scroll Control.GetAccessibilityObjectById(int) Control.SetAutoSizeMode(AutoSizeMode) Control.GetAutoSizeMode() Control.GetPreferredSize(Size) Control.AccessibilityNotifyClients(AccessibleEvents, int) Control.AccessibilityNotifyClients(AccessibleEvents, int, int) Control.BeginInvoke(Delegate) Control.BeginInvoke(Delegate, params object[]) Control.BringToFront() Control.Contains(Control) Control.CreateAccessibilityInstance() Control.CreateGraphics() Control.CreateControl() Control.DestroyHandle() Control.DoDragDrop(object, DragDropEffects) Control.DrawToBitmap(Bitmap, Rectangle) Control.EndInvoke(IAsyncResult) Control.FindForm() Control.GetTopLevel() Control.RaiseKeyEvent(object, KeyEventArgs) Control.RaiseMouseEvent(object, MouseEventArgs) Control.Focus() Control.FromChildHandle(IntPtr) Control.FromHandle(IntPtr) Control.GetChildAtPoint(Point, GetChildAtPointSkip) Control.GetChildAtPoint(Point) Control.GetContainerControl() Control.GetNextControl(Control, bool) Control.GetStyle(ControlStyles) Control.Hide() Control.InitLayout() Control.Invalidate(Region) Control.Invalidate(Region, bool) Control.Invalidate() Control.Invalidate(bool) Control.Invalidate(Rectangle) Control.Invalidate(Rectangle, bool) Control.Invoke(Delegate) Control.Invoke(Delegate, params object[]) Control.InvokePaint(Control, PaintEventArgs) Control.InvokePaintBackground(Control, PaintEventArgs) Control.IsKeyLocked(Keys) Control.IsInputChar(char) Control.IsInputKey(Keys) Control.IsMnemonic(char, string) Control.LogicalToDeviceUnits(int) Control.ScaleBitmapLogicalToDevice(ref Bitmap) Control.NotifyInvalidate(Rectangle) Control.InvokeOnClick(Control, EventArgs) Control.OnAutoSizeChanged(EventArgs) Control.OnBackColorChanged(EventArgs) Control.OnBindingContextChanged(EventArgs) Control.OnCausesValidationChanged(EventArgs) Control.OnContextMenuChanged(EventArgs) Control.OnContextMenuStripChanged(EventArgs) Control.OnCursorChanged(EventArgs) Control.OnDockChanged(EventArgs) Control.OnForeColorChanged(EventArgs) Control.OnNotifyMessage(Message) Control.OnParentBackColorChanged(EventArgs) Control.OnParentBackgroundImageChanged(EventArgs) Control.OnParentBindingContextChanged(EventArgs) Control.OnParentCursorChanged(EventArgs) Control.OnParentEnabledChanged(EventArgs) Control.OnParentFontChanged(EventArgs) Control.OnParentForeColorChanged(EventArgs) Control.OnParentRightToLeftChanged(EventArgs) Control.OnParentVisibleChanged(EventArgs) Control.OnPrint(PaintEventArgs) Control.OnTabIndexChanged(EventArgs) Control.OnTabStopChanged(EventArgs) Control.OnClick(EventArgs) Control.OnClientSizeChanged(EventArgs) Control.OnControlAdded(ControlEventArgs) Control.OnControlRemoved(ControlEventArgs) Control.OnLocationChanged(EventArgs) Control.OnDoubleClick(EventArgs) Control.OnDragEnter(DragEventArgs) Control.OnDragOver(DragEventArgs) Control.OnDragLeave(EventArgs) Control.OnDragDrop(DragEventArgs) Control.OnGiveFeedback(GiveFeedbackEventArgs) Control.InvokeGotFocus(Control, EventArgs) Control.OnGotFocus(EventArgs) Control.OnHelpRequested(HelpEventArgs) Control.OnInvalidated(InvalidateEventArgs) Control.OnKeyDown(KeyEventArgs) Control.OnKeyPress(KeyPressEventArgs) Control.OnKeyUp(KeyEventArgs) Control.OnLeave(EventArgs) Control.InvokeLostFocus(Control, EventArgs) Control.OnLostFocus(EventArgs) Control.OnMarginChanged(EventArgs) Control.OnMouseDoubleClick(MouseEventArgs) Control.OnMouseClick(MouseEventArgs) Control.OnMouseCaptureChanged(EventArgs) Control.OnMouseDown(MouseEventArgs) Control.OnMouseEnter(EventArgs) Control.OnMouseLeave(EventArgs) Control.OnDpiChangedBeforeParent(EventArgs) Control.OnDpiChangedAfterParent(EventArgs) Control.OnMouseHover(EventArgs) Control.OnMouseMove(MouseEventArgs) Control.OnMouseUp(MouseEventArgs) Control.OnMove(EventArgs) Control.OnQueryContinueDrag(QueryContinueDragEventArgs) Control.OnRegionChanged(EventArgs) Control.OnPreviewKeyDown(PreviewKeyDownEventArgs) Control.OnSizeChanged(EventArgs) Control.OnChangeUICues(UICuesEventArgs) Control.OnSystemColorsChanged(EventArgs) Control.OnValidating(CancelEventArgs) Control.OnValidated(EventArgs) Control.RescaleConstantsForDpi(int, int) Control.PerformLayout() Control.PerformLayout(Control, string) Control.PointToClient(Point) Control.PointToScreen(Point) Control.PreProcessMessage(ref Message) Control.PreProcessControlMessage(ref Message) Control.ProcessKeyEventArgs(ref Message) Control.ProcessKeyMessage(ref Message) Control.RaiseDragEvent(object, DragEventArgs) Control.RaisePaintEvent(object, PaintEventArgs) Control.RecreateHandle() Control.RectangleToClient(Rectangle) Control.RectangleToScreen(Rectangle) Control.ReflectMessage(IntPtr, ref Message) Control.Refresh() Control.ResetMouseEventArgs() Control.ResetText() Control.ResumeLayout() Control.ResumeLayout(bool) Control.Scale(SizeF) Control.Select() Control.SelectNextControl(Control, bool, bool, bool, bool) Control.SendToBack() Control.SetBounds(int, int, int, int) Control.SetBounds(int, int, int, int, BoundsSpecified) Control.SizeFromClientSize(Size) Control.SetStyle(ControlStyles, bool) Control.SetTopLevel(bool) Control.RtlTranslateAlignment(HorizontalAlignment) Control.RtlTranslateAlignment(LeftRightAlignment) Control.RtlTranslateAlignment(ContentAlignment) Control.RtlTranslateHorizontal(HorizontalAlignment) Control.RtlTranslateLeftRight(LeftRightAlignment) Control.RtlTranslateContent(ContentAlignment) Control.Show() Control.SuspendLayout() Control.Update() Control.UpdateBounds() Control.UpdateBounds(int, int, int, int) Control.UpdateBounds(int, int, int, int, int, int) Control.UpdateZOrder() Control.UpdateStyles() Control.OnImeModeChanged(EventArgs) Control.AccessibilityObject Control.AccessibleDefaultActionDescription Control.AccessibleDescription Control.AccessibleName Control.AccessibleRole Control.AllowDrop Control.Anchor Control.AutoScrollOffset Control.LayoutEngine Control.BackgroundImage Control.BackgroundImageLayout Control.Bottom Control.Bounds Control.CanFocus Control.CanRaiseEvents Control.CanSelect Control.Capture Control.CausesValidation Control.CheckForIllegalCrossThreadCalls Control.ClientRectangle Control.CompanyName Control.ContainsFocus Control.ContextMenu Control.ContextMenuStrip Control.Controls Control.Created Control.Cursor Control.DataBindings Control.DefaultBackColor Control.DefaultCursor Control.DefaultFont Control.DefaultForeColor Control.DefaultMargin Control.DefaultMaximumSize Control.DefaultMinimumSize Control.DefaultPadding Control.DeviceDpi Control.IsDisposed Control.Disposing Control.Dock Control.DoubleBuffered Control.Enabled Control.Focused Control.Font Control.FontHeight Control.ForeColor Control.Handle Control.HasChildren Control.Height Control.IsHandleCreated Control.InvokeRequired Control.IsAccessible Control.IsMirrored Control.Left Control.Margin Control.ModifierKeys Control.MouseButtons Control.MousePosition Control.Name Control.Parent Control.ProductName Control.ProductVersion Control.RecreatingHandle Control.Region Control.RenderRightToLeft Control.ResizeRedraw Control.Right Control.RightToLeft Control.ScaleChildren Control.Site Control.TabIndex Control.TabStop Control.Tag Control.Top Control.TopLevelControl Control.ShowKeyboardCues Control.ShowFocusCues Control.UseWaitCursor Control.Visible Control.Width Control.PreferredSize Control.Padding Control.ImeMode Control.ImeModeBase Control.PropagatingImeMode Control.BackColorChanged Control.BackgroundImageChanged Control.BackgroundImageLayoutChanged Control.BindingContextChanged Control.CausesValidationChanged Control.ClientSizeChanged Control.ContextMenuChanged Control.ContextMenuStripChanged Control.CursorChanged Control.DockChanged Control.EnabledChanged Control.FontChanged Control.ForeColorChanged Control.LocationChanged Control.MarginChanged Control.RegionChanged Control.RightToLeftChanged Control.SizeChanged Control.TabIndexChanged Control.TabStopChanged Control.TextChanged Control.VisibleChanged Control.Click Control.ControlAdded Control.ControlRemoved Control.DragDrop Control.DragEnter Control.DragOver Control.DragLeave Control.GiveFeedback Control.HandleCreated Control.HandleDestroyed Control.HelpRequested Control.Invalidated Control.PaddingChanged Control.Paint Control.QueryContinueDrag Control.QueryAccessibilityHelp Control.DoubleClick Control.Enter Control.GotFocus Control.KeyDown Control.KeyPress Control.KeyUp Control.Layout Control.Leave Control.LostFocus Control.MouseClick Control.MouseDoubleClick Control.MouseCaptureChanged Control.MouseDown Control.MouseEnter Control.MouseLeave Control.DpiChangedBeforeParent Control.DpiChangedAfterParent Control.MouseHover Control.MouseMove Control.MouseUp Control.MouseWheel Control.Move Control.PreviewKeyDown Control.Resize Control.ChangeUICues Control.StyleChanged Control.SystemColorsChanged Control.Validating Control.Validated Control.ParentChanged Control.ImeModeChanged Component.Dispose() Component.GetService(Type) Component.Events Component.Container Component.DesignMode Component.Disposed MarshalByRefObject.MemberwiseClone(bool) MarshalByRefObject.GetLifetimeService() MarshalByRefObject.InitializeLifetimeService() MarshalByRefObject.CreateObjRef(Type) object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Properties IncludeMiniDump public bool IncludeMiniDump { get; set; } Property Value bool IncludeSaveFile public bool IncludeSaveFile { get; set; } Property Value bool IncludeScreenshot public bool IncludeScreenshot { get; set; } Property Value bool Methods CopyAsHTML() public void CopyAsHTML() Dispose(bool) Clean up any resources being used. protected override void Dispose(bool disposing) Parameters disposing bool true if managed resources should be disposed; otherwise, false. SaveReportHTML() [UsedImplicitly] public void SaveReportHTML() SaveReportZIP() [UsedImplicitly] public void SaveReportZIP() SetIncludeMiniDump(bool) public void SetIncludeMiniDump(bool value) Parameters value bool SetIncludeSaveFile(bool) public void SetIncludeSaveFile(bool value) Parameters value bool SetIncludeScreenshot(bool) public void SetIncludeScreenshot(bool value) Parameters value bool UploadReport() public void UploadReport()" + }, + "api/Bannerlord.ButterLib.Extensions.html": { + "href": "api/Bannerlord.ButterLib.Extensions.html", + "title": "Namespace Bannerlord.ButterLib.Extensions | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.Extensions Classes IInputContextExtensions" + }, + "api/Bannerlord.ButterLib.Extensions.IInputContextExtensions.html": { + "href": "api/Bannerlord.ButterLib.Extensions.IInputContextExtensions.html", + "title": "Class IInputContextExtensions | ButterLib Documentation", + "keywords": "Class IInputContextExtensions Namespace Bannerlord.ButterLib.Extensions Assembly Bannerlord.ButterLib.dll public static class IInputContextExtensions Inheritance object IInputContextExtensions Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Methods IsHotKeyDown(IInputContext) public static bool IsHotKeyDown(this IInputContext inputContext) where THotKeyBase : HotKeyBase Parameters inputContext IInputContext Returns bool Type Parameters THotKeyBase IsHotKeyPressed(IInputContext) public static bool IsHotKeyPressed(this IInputContext inputContext) where THotKeyBase : HotKeyBase Parameters inputContext IInputContext Returns bool Type Parameters THotKeyBase IsHotKeyReleased(IInputContext) public static bool IsHotKeyReleased(this IInputContext inputContext) where THotKeyBase : HotKeyBase Parameters inputContext IInputContext Returns bool Type Parameters THotKeyBase SubscribeToIsDownAndReleasedEvent(IInputContext, Action) public static IDisposable? SubscribeToIsDownAndReleasedEvent(this IInputContext inputContext, Action action) where THotKeyBase : HotKeyBase Parameters inputContext IInputContext action Action Returns IDisposable Type Parameters THotKeyBase SubscribeToIsDownEvent(IInputContext, Action) public static IDisposable? SubscribeToIsDownEvent(this IInputContext inputContext, Action action) where THotKeyBase : HotKeyBase Parameters inputContext IInputContext action Action Returns IDisposable Type Parameters THotKeyBase SubscribeToOnPressedEvent(IInputContext, Action) public static IDisposable? SubscribeToOnPressedEvent(this IInputContext inputContext, Action action) where THotKeyBase : HotKeyBase Parameters inputContext IInputContext action Action Returns IDisposable Type Parameters THotKeyBase SubscribeToOnReleasedEvent(IInputContext, Action) public static IDisposable? SubscribeToOnReleasedEvent(this IInputContext inputContext, Action action) where THotKeyBase : HotKeyBase Parameters inputContext IInputContext action Action Returns IDisposable Type Parameters THotKeyBase" + }, + "api/Bannerlord.ButterLib.HotKeys.HotKeyBase.html": { + "href": "api/Bannerlord.ButterLib.HotKeys.HotKeyBase.html", + "title": "Class HotKeyBase | ButterLib Documentation", + "keywords": "Class HotKeyBase Namespace Bannerlord.ButterLib.HotKeys Assembly Bannerlord.ButterLib.dll Base type for all HotKey definitions to derive from. public abstract class HotKeyBase Inheritance object HotKeyBase Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors HotKeyBase(string) The required constructor which has the bare minimum needed to register a key. protected HotKeyBase(string uid) Parameters uid string The (unique to your mod) id for your hotkey. HotKeyBase(string, string, string, InputKey, string) protected HotKeyBase(string uid, string displayName, string description, InputKey defaultKey, string category) Parameters uid string displayName string description string defaultKey InputKey category string Properties Category The Category in the options menu under which this hotkey will appear. Categories protected virtual string Category { get; } Property Value string DefaultKey The default key for your HotKey, if this is not set in your constructor it will default to Invalid protected virtual InputKey DefaultKey { get; } Property Value InputKey Description The description text that will appear in the options menu next to your hotkey. protected virtual string Description { get; } Property Value string DisplayName The display name for your hotkey that will appear in the options menu. protected virtual string DisplayName { get; } Property Value string IsEnabled Tells the input manager whether or not to process input for this key. Setting this infrequently is cheaper than using Predicate but it is less convenient. public bool IsEnabled { get; set; } Property Value bool Predicate Provide none, one or many functions which all must evaluate to true in order for the key to process input. This does not need to be set, and can be reset with Predicate = null; public Func? Predicate { get; set; } Property Value Func Uid The unique (to your mod) Id for this hotkey. protected string Uid { get; } Property Value string Methods IsDown() Called once every frame a key remains down. protected virtual void IsDown() IsDownAndReleased() protected virtual void IsDownAndReleased() OnPressed() Called once on the frame a key was pressed. protected virtual void OnPressed() OnReleased() Called once on the frame a key was released. protected virtual void OnReleased() Events IsDownAndReleasedEvent Called once they key was pressed and released. public event Action? IsDownAndReleasedEvent Event Type Action IsDownEvent Called once every frame a key remains down. public event Action? IsDownEvent Event Type Action OnPressedEvent Called once on the frame a key was pressed. public event Action? OnPressedEvent Event Type Action OnReleasedEvent Called once on the frame a key was released. public event Action? OnReleasedEvent Event Type Action Operators implicit operator GameKey(HotKeyBase) Allows you to supply a HotKeyBase derived class wherever a GameKey might normally be used. public static implicit operator GameKey(HotKeyBase hotKey) Parameters hotKey HotKeyBase HotKeyBase to convert. Returns GameKey The GameKey stored internally." + }, + "api/Bannerlord.ButterLib.HotKeys.HotKeyCategory.html": { + "href": "api/Bannerlord.ButterLib.HotKeys.HotKeyCategory.html", + "title": "Enum HotKeyCategory | ButterLib Documentation", + "keywords": "Enum HotKeyCategory Namespace Bannerlord.ButterLib.HotKeys Assembly Bannerlord.ButterLib.dll public enum HotKeyCategory Fields Action = 0 CampaignMap = 1 Chat = 4 MenuShortcut = 2 OrderMenu = 3" + }, + "api/Bannerlord.ButterLib.HotKeys.HotKeyManager.html": { + "href": "api/Bannerlord.ButterLib.HotKeys.HotKeyManager.html", + "title": "Class HotKeyManager | ButterLib Documentation", + "keywords": "Class HotKeyManager Namespace Bannerlord.ButterLib.HotKeys Assembly Bannerlord.ButterLib.dll Describes a single HotKey group to which you can add individual HotKeyManager before building. public abstract class HotKeyManager Inheritance object HotKeyManager Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Fields Categories The available categories in the main menu for your hotkey to appear under. public static readonly IReadOnlyDictionary Categories Field Value IReadOnlyDictionary Methods Add() Adds a hotkey to he manager ready for building. public abstract T Add() where T : HotKeyBase, new() Returns T A new instance of HotKeyBase Type Parameters T The HotKeyBase derived type to add. Add(T) Adds a hotkey to the manager ready for building. public abstract T Add(T hotkey) where T : HotKeyBase Parameters hotkey T The HotKeyBase to add. Returns T The provided HotKeyBase (now initialized) Type Parameters T The HotKeyBase derived type to add. Exceptions ArgumentException Thrown when a hotkey with the same IdName exists. Build() Builds up the hotkeys and registers them with Bannerlord. public abstract IReadOnlyList Build() Returns IReadOnlyList Returns all the hotkeys that were built up. Create(string) Create a new HotKey group for your mod. public static HotKeyManager? Create(string modName) Parameters modName string The name of your mod. Returns HotKeyManager A HotKeyManager object for you to start adding new HotKeyManager to. Exceptions ArgumentException Thrown if a mod with the same name has already begun registering hotkeys. CreateWithOwnCategory(string, string) Create a new HotKey group for your mod with a separate entry on the Options Menu. public static HotKeyManager? CreateWithOwnCategory(string modName, string categoryName) Parameters modName string The name of your mod. categoryName string Category entry name in the Options Menu, supports translation Returns HotKeyManager A HotKeyManager object for you to start adding new HotKeyManager to. Exceptions ArgumentException Thrown if a mod with the same name has already begun registering hotkeys." + }, + "api/Bannerlord.ButterLib.HotKeys.html": { + "href": "api/Bannerlord.ButterLib.HotKeys.html", + "title": "Namespace Bannerlord.ButterLib.HotKeys | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.HotKeys Classes HotKeyBase Base type for all HotKey definitions to derive from. HotKeyManager Describes a single HotKey group to which you can add individual HotKeyManager before building. Enums HotKeyCategory" + }, + "api/Bannerlord.ButterLib.html": { + "href": "api/Bannerlord.ButterLib.html", + "title": "Namespace Bannerlord.ButterLib | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib Classes ButterLibSaveableTypeDefiner Base class of ButterLib's saving system. ButterLibSubModule Main SubModule. Performs initialization of all 3 stages. ImplementationLoaderSubModule Loads all ButterLib's implementation libraries that are supported by the game." + }, + "api/Bannerlord.ButterLib.ImplementationLoaderSubModule.html": { + "href": "api/Bannerlord.ButterLib.ImplementationLoaderSubModule.html", + "title": "Class ImplementationLoaderSubModule | ButterLib Documentation", + "keywords": "Class ImplementationLoaderSubModule Namespace Bannerlord.ButterLib Assembly Bannerlord.ButterLib.dll Loads all ButterLib's implementation libraries that are supported by the game. public sealed class ImplementationLoaderSubModule : MBSubModuleBaseListWrapper Inheritance object MBSubModuleBase MBSubModuleBaseListWrapper ImplementationLoaderSubModule Inherited Members MBSubModuleBaseListWrapper.SubModules MBSubModuleBaseListWrapper.OnSubModuleUnloaded() MBSubModuleBaseListWrapper.OnApplicationTick(float) MBSubModuleBaseListWrapper.OnBeforeInitialModuleScreenSetAsRoot() MBSubModuleBaseListWrapper.OnGameStart(Game, IGameStarter) MBSubModuleBaseListWrapper.InitializeGameStarter(Game, IGameStarter) MBSubModuleBaseListWrapper.DoLoading(Game) MBSubModuleBaseListWrapper.OnGameLoaded(Game, object) MBSubModuleBaseListWrapper.OnCampaignStart(Game, object) MBSubModuleBaseListWrapper.BeginGameStart(Game) MBSubModuleBaseListWrapper.OnGameEnd(Game) MBSubModuleBaseListWrapper.OnGameInitializationFinished(Game) MBSubModuleBaseListWrapper.OnBeforeMissionBehaviorInitialize(Mission) MBSubModuleBaseListWrapper.OnMissionBehaviorInitialize(Mission) MBSubModuleBaseListWrapper.OnMultiplayerGameStart(Game, object) MBSubModuleBaseListWrapper.OnNewGameCreated(Game, object) MBSubModuleBaseListWrapper.RegisterSubModuleObjects(bool) MBSubModuleBaseListWrapper.AfterRegisterSubModuleObjects(bool) MBSubModuleBaseListWrapper.OnAfterGameInitializationFinished(Game, object) MBSubModuleBaseListWrapper.OnConfigChanged() MBSubModuleBaseListWrapper.OnInitialState() MBSubModuleBaseListWrapper.AfterAsyncTickTick(float) object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Extension Methods DependencyInjectionExtensions.AddSerilogLoggerProvider(MBSubModuleBase, string, IEnumerable) DependencyInjectionExtensions.AddSerilogLoggerProvider(MBSubModuleBase, string, IEnumerable?, Action?) DependencyInjectionExtensions.GetServiceProvider(MBSubModuleBase) DependencyInjectionExtensions.GetServices(MBSubModuleBase) DependencyInjectionExtensions.GetTempServiceProvider(MBSubModuleBase) Methods OnServiceRegistration() public override void OnServiceRegistration() OnSubModuleLoad() public override void OnSubModuleLoad()" + }, + "api/Bannerlord.ButterLib.Logger.Extensions.html": { + "href": "api/Bannerlord.ButterLib.Logger.Extensions.html", + "title": "Namespace Bannerlord.ButterLib.Logger.Extensions | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.Logger.Extensions Classes LoggerExtensions" + }, + "api/Bannerlord.ButterLib.Logger.Extensions.LoggerExtensions.html": { + "href": "api/Bannerlord.ButterLib.Logger.Extensions.LoggerExtensions.html", + "title": "Class LoggerExtensions | ButterLib Documentation", + "keywords": "Class LoggerExtensions Namespace Bannerlord.ButterLib.Logger.Extensions Assembly Bannerlord.ButterLib.dll public static class LoggerExtensions Inheritance object LoggerExtensions Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Methods LogAndDisplay(ILogger, LogLevel, Exception, string, params object[]) public static void LogAndDisplay(this ILogger logger, LogLevel logLevel, Exception exception, string message, params object[] args) Parameters logger ILogger logLevel LogLevel exception Exception message string args object[] LogAndDisplay(ILogger, LogLevel, string, params object[]) public static void LogAndDisplay(this ILogger logger, LogLevel logLevel, string message, params object[] args) Parameters logger ILogger logLevel LogLevel message string args object[] LogCriticalAndDisplay(ILogger, Exception, string, params object[]) public static void LogCriticalAndDisplay(this ILogger logger, Exception exception, string message, params object[] args) Parameters logger ILogger exception Exception message string args object[] LogCriticalAndDisplay(ILogger, string, params object[]) public static void LogCriticalAndDisplay(this ILogger logger, string message, params object[] args) Parameters logger ILogger message string args object[] LogDebugAndDisplay(ILogger, Exception, string, params object[]) public static void LogDebugAndDisplay(this ILogger logger, Exception exception, string message, params object[] args) Parameters logger ILogger exception Exception message string args object[] LogDebugAndDisplay(ILogger, string, params object[]) public static void LogDebugAndDisplay(this ILogger logger, string message, params object[] args) Parameters logger ILogger message string args object[] LogErrorAndDisplay(ILogger, Exception, string, params object[]) public static void LogErrorAndDisplay(this ILogger logger, Exception exception, string message, params object[] args) Parameters logger ILogger exception Exception message string args object[] LogErrorAndDisplay(ILogger, string, params object[]) public static void LogErrorAndDisplay(this ILogger logger, string message, params object[] args) Parameters logger ILogger message string args object[] LogInformationAndDisplay(ILogger, Exception, string, params object[]) public static void LogInformationAndDisplay(this ILogger logger, Exception exception, string message, params object[] args) Parameters logger ILogger exception Exception message string args object[] LogInformationAndDisplay(ILogger, string, params object[]) public static void LogInformationAndDisplay(this ILogger logger, string message, params object[] args) Parameters logger ILogger message string args object[] LogTraceAndDisplay(ILogger, Exception, string, params object[]) public static void LogTraceAndDisplay(this ILogger logger, Exception exception, string message, params object[] args) Parameters logger ILogger exception Exception message string args object[] LogTraceAndDisplay(ILogger, string, params object[]) public static void LogTraceAndDisplay(this ILogger logger, string message, params object[] args) Parameters logger ILogger message string args object[] LogWarningAndDisplay(ILogger, Exception, string, params object[]) public static void LogWarningAndDisplay(this ILogger logger, Exception exception, string message, params object[] args) Parameters logger ILogger exception Exception message string args object[] LogWarningAndDisplay(ILogger, string, params object[]) public static void LogWarningAndDisplay(this ILogger logger, string message, params object[] args) Parameters logger ILogger message string args object[]" + }, + "api/Bannerlord.ButterLib.MBSubModuleBaseExtended.html": { + "href": "api/Bannerlord.ButterLib.MBSubModuleBaseExtended.html", + "title": "Namespace Bannerlord.ButterLib.MBSubModuleBaseExtended | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.MBSubModuleBaseExtended Classes MBSubModuleBaseEx A MBSubModuleBase-derived abstract class, that provides new SubModule events. Interfaces IMBSubModuleBaseEx An interface to use in your MBSubModuleBase-derived class. Provides new SubModule events." + }, + "api/Bannerlord.ButterLib.MBSubModuleBaseExtended.IMBSubModuleBaseEx.html": { + "href": "api/Bannerlord.ButterLib.MBSubModuleBaseExtended.IMBSubModuleBaseEx.html", + "title": "Interface IMBSubModuleBaseEx | ButterLib Documentation", + "keywords": "Interface IMBSubModuleBaseEx Namespace Bannerlord.ButterLib.MBSubModuleBaseExtended Assembly Bannerlord.ButterLib.dll An interface to use in your MBSubModuleBase-derived class. Provides new SubModule events. public interface IMBSubModuleBaseEx Methods OnAllSubModulesUnLoaded() Event that takes place right after OnSubModuleUnloaded events of all loaded submodules were handled. void OnAllSubModulesUnLoaded() OnBeforeInitialModuleScreenSetAsRootDelayed() Event that takes place right after OnBeforeInitialModuleScreenSetAsRoot events of all loaded submodules were handled. void OnBeforeInitialModuleScreenSetAsRootDelayed() OnGameEndDelayed(Game) Event that takes place right after OnGameEnd events of all loaded submodules were handled. void OnGameEndDelayed(Game game) Parameters game Game OnGameStartDelayed(Game, IGameStarter) Event that takes place right after OnGameStart events of all loaded submodules were handled. void OnGameStartDelayed(Game game, IGameStarter gameStarterObject) Parameters game Game gameStarterObject IGameStarter" + }, + "api/Bannerlord.ButterLib.MBSubModuleBaseExtended.MBSubModuleBaseEx.html": { + "href": "api/Bannerlord.ButterLib.MBSubModuleBaseExtended.MBSubModuleBaseEx.html", + "title": "Class MBSubModuleBaseEx | ButterLib Documentation", + "keywords": "Class MBSubModuleBaseEx Namespace Bannerlord.ButterLib.MBSubModuleBaseExtended Assembly Bannerlord.ButterLib.dll A MBSubModuleBase-derived abstract class, that provides new SubModule events. public abstract class MBSubModuleBaseEx : MBSubModuleBase, IMBSubModuleBaseEx Inheritance object MBSubModuleBase MBSubModuleBaseEx Implements IMBSubModuleBaseEx Inherited Members MBSubModuleBase.OnSubModuleLoad() MBSubModuleBase.OnSubModuleUnloaded() MBSubModuleBase.OnBeforeInitialModuleScreenSetAsRoot() MBSubModuleBase.OnConfigChanged() MBSubModuleBase.OnGameStart(Game, IGameStarter) MBSubModuleBase.OnApplicationTick(float) MBSubModuleBase.AfterAsyncTickTick(float) MBSubModuleBase.InitializeGameStarter(Game, IGameStarter) MBSubModuleBase.OnGameLoaded(Game, object) MBSubModuleBase.OnNewGameCreated(Game, object) MBSubModuleBase.BeginGameStart(Game) MBSubModuleBase.OnCampaignStart(Game, object) MBSubModuleBase.RegisterSubModuleObjects(bool) MBSubModuleBase.AfterRegisterSubModuleObjects(bool) MBSubModuleBase.OnMultiplayerGameStart(Game, object) MBSubModuleBase.OnGameInitializationFinished(Game) MBSubModuleBase.OnAfterGameInitializationFinished(Game, object) MBSubModuleBase.DoLoading(Game) MBSubModuleBase.OnGameEnd(Game) MBSubModuleBase.OnMissionBehaviorInitialize(Mission) MBSubModuleBase.OnBeforeMissionBehaviorInitialize(Mission) MBSubModuleBase.OnInitialState() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Extension Methods DependencyInjectionExtensions.AddSerilogLoggerProvider(MBSubModuleBase, string, IEnumerable) DependencyInjectionExtensions.AddSerilogLoggerProvider(MBSubModuleBase, string, IEnumerable?, Action?) DependencyInjectionExtensions.GetServiceProvider(MBSubModuleBase) DependencyInjectionExtensions.GetServices(MBSubModuleBase) DependencyInjectionExtensions.GetTempServiceProvider(MBSubModuleBase) Methods OnAllSubModulesUnLoaded() Event that takes place right after OnSubModuleUnloaded events of all loaded submodules were handled. public virtual void OnAllSubModulesUnLoaded() OnBeforeInitialModuleScreenSetAsRootDelayed() Event that takes place right after OnBeforeInitialModuleScreenSetAsRoot events of all loaded submodules were handled. public virtual void OnBeforeInitialModuleScreenSetAsRootDelayed() OnGameEndDelayed(Game) Event that takes place right after OnGameEnd events of all loaded submodules were handled. public virtual void OnGameEndDelayed(Game game) Parameters game Game OnGameStartDelayed(Game, IGameStarter) Event that takes place right after OnGameStart events of all loaded submodules were handled. public virtual void OnGameStartDelayed(Game game, IGameStarter gameStarterObject) Parameters game Game gameStarterObject IGameStarter" + }, + "api/Bannerlord.ButterLib.ObjectSystem.Extensions.html": { + "href": "api/Bannerlord.ButterLib.ObjectSystem.Extensions.html", + "title": "Namespace Bannerlord.ButterLib.ObjectSystem.Extensions | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.ObjectSystem.Extensions Classes MBObjectBaseExtensions MBObjectBase extension methods for Object Extension Data (dynamic variable / flag storage)" + }, + "api/Bannerlord.ButterLib.ObjectSystem.Extensions.MBObjectBaseExtensions.html": { + "href": "api/Bannerlord.ButterLib.ObjectSystem.Extensions.MBObjectBaseExtensions.html", + "title": "Class MBObjectBaseExtensions | ButterLib Documentation", + "keywords": "Class MBObjectBaseExtensions Namespace Bannerlord.ButterLib.ObjectSystem.Extensions Assembly Bannerlord.ButterLib.dll MBObjectBase extension methods for Object Extension Data (dynamic variable / flag storage) public static class MBObjectBaseExtensions Inheritance object MBObjectBaseExtensions Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Methods HasFlag(MBObjectBase, string) Check whether the flag name is set upon object. public static bool HasFlag(this MBObjectBase @object, string name) Parameters object MBObjectBase A game object. name string A string flag. Returns bool true if the flag is set, else false. Examples if (thisKingdom.HasFlag(\"IsRevoltFaction\")) continue; RemoveFlag(MBObjectBase, string) Remove the flag name from object, if set. public static void RemoveFlag(this MBObjectBase @object, string name) Parameters object MBObjectBase A game object. name string A string flag. Examples myHero.RemoveFlag(\"IsImmortal\"); SetFlag(MBObjectBase, string) Set the flag name upon object. public static void SetFlag(this MBObjectBase @object, string name) Parameters object MBObjectBase A game object. name string A string flag. Examples myKingdom.SetFlag(\"IsRevoltFaction\");" + }, + "api/Bannerlord.ButterLib.ObjectSystem.html": { + "href": "api/Bannerlord.ButterLib.ObjectSystem.html", + "title": "Namespace Bannerlord.ButterLib.ObjectSystem | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.ObjectSystem Interfaces IMBObjectFinder Finds MBObjectBase objects based on their MBGUID IMBObjectKeeper Keeps all MBObjectBase references for custom serialization" + }, + "api/Bannerlord.ButterLib.ObjectSystem.IMBObjectFinder.html": { + "href": "api/Bannerlord.ButterLib.ObjectSystem.IMBObjectFinder.html", + "title": "Interface IMBObjectFinder | ButterLib Documentation", + "keywords": "Interface IMBObjectFinder Namespace Bannerlord.ButterLib.ObjectSystem Assembly Bannerlord.ButterLib.dll Finds MBObjectBase objects based on their MBGUID public interface IMBObjectFinder Methods Find(MBGUID, Type?) MBObjectBase? Find(MBGUID id, Type? type = null) Parameters id MBGUID type Type Returns MBObjectBase" + }, + "api/Bannerlord.ButterLib.ObjectSystem.IMBObjectKeeper.html": { + "href": "api/Bannerlord.ButterLib.ObjectSystem.IMBObjectKeeper.html", + "title": "Interface IMBObjectKeeper | ButterLib Documentation", + "keywords": "Interface IMBObjectKeeper Namespace Bannerlord.ButterLib.ObjectSystem Assembly Bannerlord.ButterLib.dll Keeps all MBObjectBase references for custom serialization public interface IMBObjectKeeper Methods Keep(MBObjectBase) void Keep(MBObjectBase mbObject) Parameters mbObject MBObjectBase Sync(IDataStore) void Sync(IDataStore dataStore) Parameters dataStore IDataStore" + }, + "api/Bannerlord.ButterLib.Options.ButterLibOptions.html": { + "href": "api/Bannerlord.ButterLib.Options.ButterLibOptions.html", + "title": "Class ButterLibOptions | ButterLib Documentation", + "keywords": "Class ButterLibOptions Namespace Bannerlord.ButterLib.Options Assembly Bannerlord.ButterLib.dll public sealed class ButterLibOptions Inheritance object ButterLibOptions Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Properties MinLogLevel public int MinLogLevel { get; set; } Property Value int" + }, + "api/Bannerlord.ButterLib.Options.html": { + "href": "api/Bannerlord.ButterLib.Options.html", + "title": "Namespace Bannerlord.ButterLib.Options | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.Options Classes ButterLibOptions" + }, + "api/Bannerlord.ButterLib.SaveSystem.DictionaryToArrayConverter.html": { + "href": "api/Bannerlord.ButterLib.SaveSystem.DictionaryToArrayConverter.html", + "title": "Class DictionaryToArrayConverter | ButterLib Documentation", + "keywords": "Class DictionaryToArrayConverter Namespace Bannerlord.ButterLib.SaveSystem Assembly Bannerlord.ButterLib.dll public sealed class DictionaryToArrayConverter : JsonConverter Inheritance object JsonConverter DictionaryToArrayConverter Inherited Members JsonConverter.CanRead JsonConverter.CanWrite object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Methods CanConvert(Type) public override bool CanConvert(Type objectType) Parameters objectType Type Returns bool ReadJson(JsonReader, Type, object?, JsonSerializer) public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer) Parameters reader JsonReader objectType Type existingValue object serializer JsonSerializer Returns object WriteJson(JsonWriter, object?, JsonSerializer) public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) Parameters writer JsonWriter value object serializer JsonSerializer" + }, + "api/Bannerlord.ButterLib.SaveSystem.Extensions.html": { + "href": "api/Bannerlord.ButterLib.SaveSystem.Extensions.html", + "title": "Namespace Bannerlord.ButterLib.SaveSystem.Extensions | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.SaveSystem.Extensions Classes IDataStoreExtensions" + }, + "api/Bannerlord.ButterLib.SaveSystem.Extensions.IDataStoreExtensions.html": { + "href": "api/Bannerlord.ButterLib.SaveSystem.Extensions.IDataStoreExtensions.html", + "title": "Class IDataStoreExtensions | ButterLib Documentation", + "keywords": "Class IDataStoreExtensions Namespace Bannerlord.ButterLib.SaveSystem.Extensions Assembly Bannerlord.ButterLib.dll public static class IDataStoreExtensions Inheritance object IDataStoreExtensions Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Methods SyncDataAsJson(IDataStore, string, ref T?, JsonSerializer) public static bool SyncDataAsJson(this IDataStore dataStore, string key, ref T? data, JsonSerializer serializer) Parameters dataStore IDataStore key string data T serializer JsonSerializer Returns bool Type Parameters T SyncDataAsJson(IDataStore, string, ref T?, JsonSerializerSettings?) public static bool SyncDataAsJson(this IDataStore dataStore, string key, ref T? data, JsonSerializerSettings? settings = null) Parameters dataStore IDataStore key string data T settings JsonSerializerSettings Returns bool Type Parameters T" + }, + "api/Bannerlord.ButterLib.SaveSystem.html": { + "href": "api/Bannerlord.ButterLib.SaveSystem.html", + "title": "Namespace Bannerlord.ButterLib.SaveSystem | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.SaveSystem Classes DictionaryToArrayConverter MBGUIDConverter MBObjectBaseConverter TaleWorldsContractResolver TaleWorldsContractResolverBase Delegates TaleWorldsContractResolverBase.IsContainerDelegate" + }, + "api/Bannerlord.ButterLib.SaveSystem.MBGUIDConverter.html": { + "href": "api/Bannerlord.ButterLib.SaveSystem.MBGUIDConverter.html", + "title": "Class MBGUIDConverter | ButterLib Documentation", + "keywords": "Class MBGUIDConverter Namespace Bannerlord.ButterLib.SaveSystem Assembly Bannerlord.ButterLib.dll public sealed class MBGUIDConverter : JsonConverter Inheritance object JsonConverter MBGUIDConverter Inherited Members JsonConverter.CanRead JsonConverter.CanWrite object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Methods CanConvert(Type) public override bool CanConvert(Type objectType) Parameters objectType Type Returns bool ReadJson(JsonReader, Type, object?, JsonSerializer) public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer) Parameters reader JsonReader objectType Type existingValue object serializer JsonSerializer Returns object WriteJson(JsonWriter, object?, JsonSerializer) public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) Parameters writer JsonWriter value object serializer JsonSerializer" + }, + "api/Bannerlord.ButterLib.SaveSystem.MBObjectBaseConverter.html": { + "href": "api/Bannerlord.ButterLib.SaveSystem.MBObjectBaseConverter.html", + "title": "Class MBObjectBaseConverter | ButterLib Documentation", + "keywords": "Class MBObjectBaseConverter Namespace Bannerlord.ButterLib.SaveSystem Assembly Bannerlord.ButterLib.dll public sealed class MBObjectBaseConverter : JsonConverter Inheritance object JsonConverter MBObjectBaseConverter Inherited Members JsonConverter.CanRead JsonConverter.CanWrite object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() Methods CanConvert(Type) public override bool CanConvert(Type objectType) Parameters objectType Type Returns bool ReadJson(JsonReader, Type, object?, JsonSerializer) public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer) Parameters reader JsonReader objectType Type existingValue object serializer JsonSerializer Returns object WriteJson(JsonWriter, object?, JsonSerializer) public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) Parameters writer JsonWriter value object serializer JsonSerializer" + }, + "api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolver.html": { + "href": "api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolver.html", + "title": "Class TaleWorldsContractResolver | ButterLib Documentation", + "keywords": "Class TaleWorldsContractResolver Namespace Bannerlord.ButterLib.SaveSystem Assembly Bannerlord.ButterLib.dll public class TaleWorldsContractResolver : TaleWorldsContractResolverBase, IContractResolver Inheritance object DefaultContractResolver TaleWorldsContractResolverBase TaleWorldsContractResolver Implements IContractResolver Inherited Members TaleWorldsContractResolverBase._isContainerDelegate TaleWorldsContractResolverBase.IsContainerFallback(Type) DefaultContractResolver.ResolveContract(Type) DefaultContractResolver.GetSerializableMembers(Type) DefaultContractResolver.CreateObjectContract(Type) DefaultContractResolver.CreateConstructorParameters(ConstructorInfo, JsonPropertyCollection) DefaultContractResolver.CreatePropertyFromConstructorParameter(JsonProperty, ParameterInfo) DefaultContractResolver.ResolveContractConverter(Type) DefaultContractResolver.CreateDictionaryContract(Type) DefaultContractResolver.CreateArrayContract(Type) DefaultContractResolver.CreatePrimitiveContract(Type) DefaultContractResolver.CreateLinqContract(Type) DefaultContractResolver.CreateISerializableContract(Type) DefaultContractResolver.CreateDynamicContract(Type) DefaultContractResolver.CreateStringContract(Type) DefaultContractResolver.CreateContract(Type) DefaultContractResolver.CreateMemberValueProvider(MemberInfo) DefaultContractResolver.CreateProperty(MemberInfo, MemberSerialization) DefaultContractResolver.ResolvePropertyName(string) DefaultContractResolver.ResolveExtensionDataName(string) DefaultContractResolver.ResolveDictionaryKey(string) DefaultContractResolver.GetResolvedPropertyName(string) DefaultContractResolver.DynamicCodeGeneration DefaultContractResolver.DefaultMembersSearchFlags DefaultContractResolver.SerializeCompilerGeneratedMembers DefaultContractResolver.IgnoreSerializableInterface DefaultContractResolver.IgnoreSerializableAttribute DefaultContractResolver.IgnoreIsSpecifiedMembers DefaultContractResolver.IgnoreShouldSerializeMembers DefaultContractResolver.NamingStrategy object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Methods CreateProperties(Type, MemberSerialization) protected override IList CreateProperties(Type type, MemberSerialization memberSerialization) Parameters type Type memberSerialization MemberSerialization Returns IList" + }, + "api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.html": { + "href": "api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.html", + "title": "Class TaleWorldsContractResolverBase | ButterLib Documentation", + "keywords": "Class TaleWorldsContractResolverBase Namespace Bannerlord.ButterLib.SaveSystem Assembly Bannerlord.ButterLib.dll public class TaleWorldsContractResolverBase : DefaultContractResolver, IContractResolver Inheritance object DefaultContractResolver TaleWorldsContractResolverBase Implements IContractResolver Derived TaleWorldsContractResolver Inherited Members DefaultContractResolver.ResolveContract(Type) DefaultContractResolver.GetSerializableMembers(Type) DefaultContractResolver.CreateObjectContract(Type) DefaultContractResolver.CreateConstructorParameters(ConstructorInfo, JsonPropertyCollection) DefaultContractResolver.CreatePropertyFromConstructorParameter(JsonProperty, ParameterInfo) DefaultContractResolver.ResolveContractConverter(Type) DefaultContractResolver.CreateDictionaryContract(Type) DefaultContractResolver.CreateArrayContract(Type) DefaultContractResolver.CreatePrimitiveContract(Type) DefaultContractResolver.CreateLinqContract(Type) DefaultContractResolver.CreateISerializableContract(Type) DefaultContractResolver.CreateDynamicContract(Type) DefaultContractResolver.CreateStringContract(Type) DefaultContractResolver.CreateContract(Type) DefaultContractResolver.CreateProperties(Type, MemberSerialization) DefaultContractResolver.CreateMemberValueProvider(MemberInfo) DefaultContractResolver.CreateProperty(MemberInfo, MemberSerialization) DefaultContractResolver.ResolvePropertyName(string) DefaultContractResolver.ResolveExtensionDataName(string) DefaultContractResolver.ResolveDictionaryKey(string) DefaultContractResolver.GetResolvedPropertyName(string) DefaultContractResolver.DynamicCodeGeneration DefaultContractResolver.DefaultMembersSearchFlags DefaultContractResolver.SerializeCompilerGeneratedMembers DefaultContractResolver.IgnoreSerializableInterface DefaultContractResolver.IgnoreSerializableAttribute DefaultContractResolver.IgnoreIsSpecifiedMembers DefaultContractResolver.IgnoreShouldSerializeMembers DefaultContractResolver.NamingStrategy object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Fields _isContainerDelegate protected static readonly TaleWorldsContractResolverBase.IsContainerDelegate? _isContainerDelegate Field Value TaleWorldsContractResolverBase.IsContainerDelegate Methods IsContainerFallback(Type) protected static bool IsContainerFallback(Type type) Parameters type Type Returns bool" + }, + "api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.IsContainerDelegate.html": { + "href": "api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.IsContainerDelegate.html", + "title": "Delegate TaleWorldsContractResolverBase.IsContainerDelegate | ButterLib Documentation", + "keywords": "Delegate TaleWorldsContractResolverBase.IsContainerDelegate Namespace Bannerlord.ButterLib.SaveSystem Assembly Bannerlord.ButterLib.dll protected delegate bool TaleWorldsContractResolverBase.IsContainerDelegate(Type type) Parameters type Type Returns bool" + }, + "api/Bannerlord.ButterLib.SubModuleWrappers2.html": { + "href": "api/Bannerlord.ButterLib.SubModuleWrappers2.html", + "title": "Namespace Bannerlord.ButterLib.SubModuleWrappers2 | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.SubModuleWrappers2 Classes MBSubModuleBaseListWrapper Wraps several MBSubModuleBase so when the game calls any method, it will be passed to its children. MBSubModuleBaseWrapper Wraps a MBSubModuleBase so protected methods could be called without a performance hit" + }, + "api/Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseListWrapper.html": { + "href": "api/Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseListWrapper.html", + "title": "Class MBSubModuleBaseListWrapper | ButterLib Documentation", + "keywords": "Class MBSubModuleBaseListWrapper Namespace Bannerlord.ButterLib.SubModuleWrappers2 Assembly Bannerlord.ButterLib.dll Wraps several MBSubModuleBase so when the game calls any method, it will be passed to its children. public class MBSubModuleBaseListWrapper : MBSubModuleBase Inheritance object MBSubModuleBase MBSubModuleBaseListWrapper Derived ImplementationLoaderSubModule Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Extension Methods DependencyInjectionExtensions.AddSerilogLoggerProvider(MBSubModuleBase, string, IEnumerable) DependencyInjectionExtensions.AddSerilogLoggerProvider(MBSubModuleBase, string, IEnumerable?, Action?) DependencyInjectionExtensions.GetServiceProvider(MBSubModuleBase) DependencyInjectionExtensions.GetServices(MBSubModuleBase) DependencyInjectionExtensions.GetTempServiceProvider(MBSubModuleBase) Fields _subModules protected readonly List _subModules Field Value List Properties SubModules public IReadOnlyList SubModules { get; } Property Value IReadOnlyList Methods AfterAsyncTickTick(float) public virtual void AfterAsyncTickTick(float dt) Parameters dt float AfterRegisterSubModuleObjects(bool) public virtual void AfterRegisterSubModuleObjects(bool isSavedCampaign) Parameters isSavedCampaign bool BeginGameStart(Game) public virtual void BeginGameStart(Game game) Parameters game Game DoLoading(Game) public virtual bool DoLoading(Game game) Parameters game Game Returns bool InitializeGameStarter(Game, IGameStarter) public virtual void InitializeGameStarter(Game game, IGameStarter starterObject) Parameters game Game starterObject IGameStarter OnAfterGameInitializationFinished(Game, object) public virtual void OnAfterGameInitializationFinished(Game game, object starterObject) Parameters game Game starterObject object OnApplicationTick(float) public virtual void OnApplicationTick(float dt) Parameters dt float OnBeforeInitialModuleScreenSetAsRoot() public virtual void OnBeforeInitialModuleScreenSetAsRoot() OnBeforeMissionBehaviorInitialize(Mission) public virtual void OnBeforeMissionBehaviorInitialize(Mission mission) Parameters mission Mission OnCampaignStart(Game, object) public virtual void OnCampaignStart(Game game, object starterObject) Parameters game Game starterObject object OnConfigChanged() public virtual void OnConfigChanged() OnGameEnd(Game) public virtual void OnGameEnd(Game game) Parameters game Game OnGameInitializationFinished(Game) public virtual void OnGameInitializationFinished(Game game) Parameters game Game OnGameLoaded(Game, object) public virtual void OnGameLoaded(Game game, object initializerObject) Parameters game Game initializerObject object OnGameStart(Game, IGameStarter) public virtual void OnGameStart(Game game, IGameStarter gameStarterObject) Parameters game Game gameStarterObject IGameStarter OnInitialState() public virtual void OnInitialState() OnMissionBehaviorInitialize(Mission) public virtual void OnMissionBehaviorInitialize(Mission mission) Parameters mission Mission OnMultiplayerGameStart(Game, object) public virtual void OnMultiplayerGameStart(Game game, object starterObject) Parameters game Game starterObject object OnNewGameCreated(Game, object) public virtual void OnNewGameCreated(Game game, object initializerObject) Parameters game Game initializerObject object OnServiceRegistration() public virtual void OnServiceRegistration() OnSubModuleLoad() public virtual void OnSubModuleLoad() OnSubModuleUnloaded() public virtual void OnSubModuleUnloaded() RegisterSubModuleObjects(bool) public virtual void RegisterSubModuleObjects(bool isSavedCampaign) Parameters isSavedCampaign bool" + }, + "api/Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseWrapper.html": { + "href": "api/Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseWrapper.html", + "title": "Class MBSubModuleBaseWrapper | ButterLib Documentation", + "keywords": "Class MBSubModuleBaseWrapper Namespace Bannerlord.ButterLib.SubModuleWrappers2 Assembly Bannerlord.ButterLib.dll Wraps a MBSubModuleBase so protected methods could be called without a performance hit public class MBSubModuleBaseWrapper : MBSubModuleBase Inheritance object MBSubModuleBase MBSubModuleBaseWrapper Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Extension Methods DependencyInjectionExtensions.AddSerilogLoggerProvider(MBSubModuleBase, string, IEnumerable) DependencyInjectionExtensions.AddSerilogLoggerProvider(MBSubModuleBase, string, IEnumerable?, Action?) DependencyInjectionExtensions.GetServiceProvider(MBSubModuleBase) DependencyInjectionExtensions.GetServices(MBSubModuleBase) DependencyInjectionExtensions.GetTempServiceProvider(MBSubModuleBase) Constructors MBSubModuleBaseWrapper(MBSubModuleBase) public MBSubModuleBaseWrapper(MBSubModuleBase subModule) Parameters subModule MBSubModuleBase Properties SubModule public MBSubModuleBase SubModule { get; } Property Value MBSubModuleBase Methods AfterAsyncTickTick(float) public virtual void AfterAsyncTickTick(float dt) Parameters dt float AfterRegisterSubModuleObjects(bool) public virtual void AfterRegisterSubModuleObjects(bool isSavedCampaign) Parameters isSavedCampaign bool BeginGameStart(Game) public virtual void BeginGameStart(Game game) Parameters game Game DoLoading(Game) public virtual bool DoLoading(Game game) Parameters game Game Returns bool InitializeGameStarter(Game, IGameStarter) public virtual void InitializeGameStarter(Game game, IGameStarter starterObject) Parameters game Game starterObject IGameStarter OnAfterGameInitializationFinished(Game, object) public virtual void OnAfterGameInitializationFinished(Game game, object starterObject) Parameters game Game starterObject object OnApplicationTick(float) public virtual void OnApplicationTick(float dt) Parameters dt float OnBeforeInitialModuleScreenSetAsRoot() public virtual void OnBeforeInitialModuleScreenSetAsRoot() OnBeforeMissionBehaviorInitialize(Mission) public virtual void OnBeforeMissionBehaviorInitialize(Mission mission) Parameters mission Mission OnCampaignStart(Game, object) public virtual void OnCampaignStart(Game game, object starterObject) Parameters game Game starterObject object OnConfigChanged() public virtual void OnConfigChanged() OnGameEnd(Game) public virtual void OnGameEnd(Game game) Parameters game Game OnGameInitializationFinished(Game) public virtual void OnGameInitializationFinished(Game game) Parameters game Game OnGameLoaded(Game, object) public virtual void OnGameLoaded(Game game, object initializerObject) Parameters game Game initializerObject object OnGameStart(Game, IGameStarter) public virtual void OnGameStart(Game game, IGameStarter gameStarterObject) Parameters game Game gameStarterObject IGameStarter OnInitialState() public virtual void OnInitialState() OnMissionBehaviorInitialize(Mission) public virtual void OnMissionBehaviorInitialize(Mission mission) Parameters mission Mission OnMultiplayerGameStart(Game, object) public virtual void OnMultiplayerGameStart(Game game, object starterObject) Parameters game Game starterObject object OnNewGameCreated(Game, object) public virtual void OnNewGameCreated(Game game, object initializerObject) Parameters game Game initializerObject object OnServiceRegistration() public virtual void OnServiceRegistration() OnSubModuleLoad() public virtual void OnSubModuleLoad() OnSubModuleUnloaded() public virtual void OnSubModuleUnloaded() RegisterSubModuleObjects(bool) public virtual void RegisterSubModuleObjects(bool isSavedCampaign) Parameters isSavedCampaign bool" + }, + "api/Bannerlord.ButterLib.SubSystems.html": { + "href": "api/Bannerlord.ButterLib.SubSystems.html", + "title": "Namespace Bannerlord.ButterLib.SubSystems | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.SubSystems Interfaces ISubSystem" + }, + "api/Bannerlord.ButterLib.SubSystems.ISubSystem.html": { + "href": "api/Bannerlord.ButterLib.SubSystems.ISubSystem.html", + "title": "Interface ISubSystem | ButterLib Documentation", + "keywords": "Interface ISubSystem Namespace Bannerlord.ButterLib.SubSystems Assembly Bannerlord.ButterLib.dll public interface ISubSystem Properties CanBeDisabled bool CanBeDisabled { get; } Property Value bool CanBeSwitchedAtRuntime bool CanBeSwitchedAtRuntime { get; } Property Value bool Description string Description { get; } Property Value string Id string Id { get; } Property Value string IsEnabled bool IsEnabled { get; } Property Value bool Name string Name { get; } Property Value string Methods Disable() void Disable() Enable() void Enable()" + }, + "api/Bannerlord.ButterLib.SubSystems.Settings.html": { + "href": "api/Bannerlord.ButterLib.SubSystems.Settings.html", + "title": "Namespace Bannerlord.ButterLib.SubSystems.Settings | ButterLib Documentation", + "keywords": "Namespace Bannerlord.ButterLib.SubSystems.Settings Classes SubSystemSettingsDeclaration The basic declaration entity. SubSystemSettingsPropertyBool A property based declaration. SubSystemSettingsPropertyDropdown A property based declaration. SubSystemSettingsPropertyFloat A property based declaration. SubSystemSettingsPropertyInt A property based declaration. SubSystemSettingsPropertyText A property based declaration. SubSystemSettingsProperty A property based declaration. Interfaces ISubSystemSettings An interface for foreign entities like MCM to get settings of the TSubSystem." + }, + "api/Bannerlord.ButterLib.SubSystems.Settings.ISubSystemSettings-1.html": { + "href": "api/Bannerlord.ButterLib.SubSystems.Settings.ISubSystemSettings-1.html", + "title": "Interface ISubSystemSettings | ButterLib Documentation", + "keywords": "Interface ISubSystemSettings Namespace Bannerlord.ButterLib.SubSystems.Settings Assembly Bannerlord.ButterLib.dll An interface for foreign entities like MCM to get settings of the TSubSystem. public interface ISubSystemSettings where TSubSystem : ISubSystem Type Parameters TSubSystem The ISubSystem that exposes the settings. Properties Declarations List of the declarations of the settings. Currently supported are: Type Class Switch SubSystemSettingsPropertyBool Text SubSystemSettingsPropertyText Integer SubSystemSettingsPropertyInt Floating SubSystemSettingsPropertyFloat Dropdown SubSystemSettingsPropertyDropdown IReadOnlyCollection> Declarations { get; } Property Value IReadOnlyCollection>" + }, + "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsDeclaration-1.html": { + "href": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsDeclaration-1.html", + "title": "Class SubSystemSettingsDeclaration | ButterLib Documentation", + "keywords": "Class SubSystemSettingsDeclaration Namespace Bannerlord.ButterLib.SubSystems.Settings Assembly Bannerlord.ButterLib.dll The basic declaration entity. public abstract record SubSystemSettingsDeclaration : IEquatable> where TSubSystem : ISubSystem Type Parameters TSubSystem The ISubSystem that exposes the settings. Inheritance object SubSystemSettingsDeclaration Implements IEquatable> Derived SubSystemSettingsProperty Inherited Members object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors SubSystemSettingsDeclaration(string, string) The basic declaration entity. protected SubSystemSettingsDeclaration(string Name, string Description) Parameters Name string The name of the settings entry. Description string The description of the settings entry. Properties Description The description of the settings entry. public string Description { get; init; } Property Value string Name The name of the settings entry. public string Name { get; init; } Property Value string" + }, + "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsProperty-2.html": { + "href": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsProperty-2.html", + "title": "Class SubSystemSettingsProperty | ButterLib Documentation", + "keywords": "Class SubSystemSettingsProperty Namespace Bannerlord.ButterLib.SubSystems.Settings Assembly Bannerlord.ButterLib.dll A property based declaration. public abstract record SubSystemSettingsProperty : SubSystemSettingsDeclaration, IEquatable>, IEquatable> where TSubSystem : ISubSystem Type Parameters TSubSystem The ISubSystem that exposes the settings. TProperty Type of the property. Inheritance object SubSystemSettingsDeclaration SubSystemSettingsProperty Implements IEquatable> IEquatable> Derived SubSystemSettingsPropertyBool SubSystemSettingsPropertyDropdown SubSystemSettingsPropertyFloat SubSystemSettingsPropertyInt SubSystemSettingsPropertyText Inherited Members SubSystemSettingsDeclaration.Name SubSystemSettingsDeclaration.Description object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors SubSystemSettingsProperty(string, string, Expression>) A property based declaration. protected SubSystemSettingsProperty(string Name, string Description, Expression> Property) Parameters Name string The name of the settings entry. Description string The description of the settings entry. Property Expression> And expression that references the property. Properties Property And expression that references the property. public Expression> Property { get; init; } Property Value Expression>" + }, + "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyBool-1.html": { + "href": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyBool-1.html", + "title": "Class SubSystemSettingsPropertyBool | ButterLib Documentation", + "keywords": "Class SubSystemSettingsPropertyBool Namespace Bannerlord.ButterLib.SubSystems.Settings Assembly Bannerlord.ButterLib.dll A property based declaration. public record SubSystemSettingsPropertyBool : SubSystemSettingsProperty, IEquatable>, IEquatable>, IEquatable> where TSubSystem : ISubSystem Type Parameters TSubSystem The ISubSystem that exposes the settings. Inheritance object SubSystemSettingsDeclaration SubSystemSettingsProperty SubSystemSettingsPropertyBool Implements IEquatable> IEquatable> IEquatable> Inherited Members SubSystemSettingsProperty.Property SubSystemSettingsDeclaration.Name SubSystemSettingsDeclaration.Description object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors SubSystemSettingsPropertyBool(string, string, Expression>) A property based declaration. public SubSystemSettingsPropertyBool(string Name, string Description, Expression> Property) Parameters Name string The name of the settings entry. Description string The description of the settings entry. Property Expression> And expression that references the property." + }, + "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyDropdown-1.html": { + "href": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyDropdown-1.html", + "title": "Class SubSystemSettingsPropertyDropdown | ButterLib Documentation", + "keywords": "Class SubSystemSettingsPropertyDropdown Namespace Bannerlord.ButterLib.SubSystems.Settings Assembly Bannerlord.ButterLib.dll A property based declaration. public record SubSystemSettingsPropertyDropdown : SubSystemSettingsProperty>, IEquatable>, IEquatable>>, IEquatable> where TSubSystem : ISubSystem Type Parameters TSubSystem The ISubSystem that exposes the settings. Inheritance object SubSystemSettingsDeclaration SubSystemSettingsProperty> SubSystemSettingsPropertyDropdown Implements IEquatable> IEquatable>> IEquatable> Inherited Members SubSystemSettingsProperty>.Property SubSystemSettingsDeclaration.Name SubSystemSettingsDeclaration.Description object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors SubSystemSettingsPropertyDropdown(string, string, Expression>>, int) IList public SubSystemSettingsPropertyDropdown(string Name, string Description, Expression>> Property, int SelectedIndex) Parameters Name string Description string Property Expression>> SelectedIndex int Properties SelectedIndex public int SelectedIndex { get; init; } Property Value int" + }, + "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyFloat-1.html": { + "href": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyFloat-1.html", + "title": "Class SubSystemSettingsPropertyFloat | ButterLib Documentation", + "keywords": "Class SubSystemSettingsPropertyFloat Namespace Bannerlord.ButterLib.SubSystems.Settings Assembly Bannerlord.ButterLib.dll A property based declaration. public record SubSystemSettingsPropertyFloat : SubSystemSettingsProperty, IEquatable>, IEquatable>, IEquatable> where TSubSystem : ISubSystem Type Parameters TSubSystem The ISubSystem that exposes the settings. Inheritance object SubSystemSettingsDeclaration SubSystemSettingsProperty SubSystemSettingsPropertyFloat Implements IEquatable> IEquatable> IEquatable> Inherited Members SubSystemSettingsProperty.Property SubSystemSettingsDeclaration.Name SubSystemSettingsDeclaration.Description object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors SubSystemSettingsPropertyFloat(string, string, Expression>, float, float) A numeric based on a float property. public SubSystemSettingsPropertyFloat(string Name, string Description, Expression> Property, float MinValue, float MaxValue) Parameters Name string Description string Property Expression> MinValue float MaxValue float Properties MaxValue public float MaxValue { get; init; } Property Value float MinValue public float MinValue { get; init; } Property Value float" + }, + "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyInt-1.html": { + "href": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyInt-1.html", + "title": "Class SubSystemSettingsPropertyInt | ButterLib Documentation", + "keywords": "Class SubSystemSettingsPropertyInt Namespace Bannerlord.ButterLib.SubSystems.Settings Assembly Bannerlord.ButterLib.dll A property based declaration. public record SubSystemSettingsPropertyInt : SubSystemSettingsProperty, IEquatable>, IEquatable>, IEquatable> where TSubSystem : ISubSystem Type Parameters TSubSystem The ISubSystem that exposes the settings. Inheritance object SubSystemSettingsDeclaration SubSystemSettingsProperty SubSystemSettingsPropertyInt Implements IEquatable> IEquatable> IEquatable> Inherited Members SubSystemSettingsProperty.Property SubSystemSettingsDeclaration.Name SubSystemSettingsDeclaration.Description object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors SubSystemSettingsPropertyInt(string, string, Expression>, int, int) A numeric based on a float property. public SubSystemSettingsPropertyInt(string Name, string Description, Expression> Property, int MinValue, int MaxValue) Parameters Name string Description string Property Expression> MinValue int MaxValue int Properties MaxValue public int MaxValue { get; init; } Property Value int MinValue public int MinValue { get; init; } Property Value int" + }, + "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyText-1.html": { + "href": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyText-1.html", + "title": "Class SubSystemSettingsPropertyText | ButterLib Documentation", + "keywords": "Class SubSystemSettingsPropertyText Namespace Bannerlord.ButterLib.SubSystems.Settings Assembly Bannerlord.ButterLib.dll A property based declaration. public record SubSystemSettingsPropertyText : SubSystemSettingsProperty, IEquatable>, IEquatable>, IEquatable> where TSubSystem : ISubSystem Type Parameters TSubSystem The ISubSystem that exposes the settings. Inheritance object SubSystemSettingsDeclaration SubSystemSettingsProperty SubSystemSettingsPropertyText Implements IEquatable> IEquatable> IEquatable> Inherited Members SubSystemSettingsProperty.Property SubSystemSettingsDeclaration.Name SubSystemSettingsDeclaration.Description object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() Constructors SubSystemSettingsPropertyText(string, string, Expression>) A property based declaration. public SubSystemSettingsPropertyText(string Name, string Description, Expression> Property) Parameters Name string The name of the settings entry. Description string The description of the settings entry. Property Expression> And expression that references the property." + }, + "articles/AssemblyVerifier/Overview.html": { + "href": "articles/AssemblyVerifier/Overview.html", + "title": "| ButterLib Documentation", + "keywords": "Important This SubSystem is obsolete! AssembliVerifier gives the ability to pre-load an assembly and check if it's compatible with the game by calling Assembly.GetTypes() string dependencyPath; string assemblyPath; using var verifier = new AssemblyVerifier(\"Test\"); var loader = verifier.GetLoader(out var exception); // The AssemblyVerifier will have every loaded assembly by the game within itself. // You can load additional assemblies if needed. loader.LoadFile(dependencyPath); var isCompatible = loader.LoadFileAndTest(assemblyPath);" + }, + "articles/CampaignIdentifier/Overview.html": { + "href": "articles/CampaignIdentifier/Overview.html", + "title": "| ButterLib Documentation", + "keywords": "Important This SubSystem is obsolete! CampaignIdentifier associates unique string ID with every campaign basing on the initial character. // Get current campaign ID string campaignID = Camapaign.Current.GetCampaignId(); // Get current campaign descriptor var campaignDescriptor = Camapaign.Current.GetCampaignDescriptor();" + }, + "articles/Common/Extensions/Overview.html": { + "href": "articles/Common/Extensions/Overview.html", + "title": "ApplicationVersionExtensions | ButterLib Documentation", + "keywords": "ApplicationVersionExtensions CampaignExtensions DependencyInjectionExtensions ICampaignExtensions IInputContextExtensions MbEventExtensions" + }, + "articles/Common/Helpers/Overview.html": { + "href": "articles/Common/Helpers/Overview.html", + "title": "ApplicationVersionComparer | ButterLib Documentation", + "keywords": "ApplicationVersionComparer ElegantPairHelper" + }, + "articles/Common/index.html": { + "href": "articles/Common/index.html", + "title": "| ButterLib Documentation", + "keywords": "" + }, + "articles/DelayedSubModule/Overview.html": { + "href": "articles/DelayedSubModule/Overview.html", + "title": "Note: | ButterLib Documentation", + "keywords": "Consider this case: You have a piece of code that should be executed after some SubModule, e.g. StoryModeSubModule, but you don't want to add StoryMode as a DependedModule. This is not supported out-of-the-box, but ButterLib provides one possible solution. protected override void OnSubModuleLoad() { base.OnSubModuleLoad(); // You first call Register() so the SubModule will be tracked by ButterLib DelayedSubModuleManager.Register(); // You subscribe to the module's method call. // In this case, we do something after StoryModeSubModule.OnSubModuleLoad // is executed. DelayedSubModuleManager.Subscribe( nameof(OnSubModuleLoad), SubscriptionType.AfterMethod, (s, e) => { // StoryModeSubModule does not implement OnSubModuleLoad(), // so we can only catch the base virtual method call. if (e.IsBase) return; // SOME CODE }); } protected override void OnBeforeInitialModuleScreenSetAsRoot() { base.OnBeforeInitialModuleScreenSetAsRoot(); DelayedSubModuleManager.Register(); DelayedSubModuleManager.Subscribe( nameof(OnBeforeInitialModuleScreenSetAsRoot), SubscriptionType.AfterMethod, (s, e) => { // GauntletUISubModule overrides OnBeforeInitialModuleScreenSetAsRoot, so we can // catch the override method call. if (!e.IsBase) return; // SOME CODE }); } Note: If for some reason your Module will load after the Module that you subscribed to, the delegate you passed in Subscribe will be executed immediately. If a derived MBSubModuleBase class overrides the method you subcsribe to and calls the base.Method(), you will get two calls, one from the override and one from calling the empty virtual method. Don't forget to filter by SubscriptionEventArgs.IsBase. The current implementation does not allow to subscribe to methods e.g. OnBeforeInitialModuleScreenSetAsRoot() outside the OnBeforeInitialModuleScreenSetAsRoot() override. You will not be able to subscribe to OnBeforeInitialModuleScreenSetAsRoot() in OnSubModuleLoad() override and vise-versa." + }, + "articles/Development/Overview.html": { + "href": "articles/Development/Overview.html", + "title": "Used Terminology: | ButterLib Documentation", + "keywords": "Warning This article is an work in progress! Used Terminology: Game Reference Assemblies - Game Stable Version - Game Beta Version - Used Environment Variables: GITHUB_ACTIONS - used to indicate that the current environment is a CI. BANNERLORD_GAME_DIR - path to the Bannerlord game directory. There are also two additional game path variables, used in the case when you can setup two game installations - the current Stable game version and the current Beta game version. BANNERLORD_STABLE_DIR - points to the Stable game installation. BANNERLORD_BETA_DIR - points to the Beta game installation. An example of such case is to buy the game on Steam and GOG. Steam provides a Beta version, while GOG provides the Stable one. Solution The solution (Bannerlord.ButterLib.sln) has 4 configurations available. Stable Debug Stable Release Beta Debug Beta Release They are used to the full potential if you have set up the additional variables BANNERLORD_STABLE_DIR and BANNERLORD_BETA_DIR. Basically, when a Stable configuration is chosen, the modules will be copied after the project build into %Stable Game Path%/Modules. Same with Beta, will be copied into %Beta Game Path%/Modules. When those variables are not provided, the BANNERLORD_GAME_DIR is used for both. This means that in both configurations the modules will be copied to the same game installations for Stable and Beta game versions. supported-game-versions.txt This is a TXT file that contains all supported game version by ButterLib currently, in specific order: First version entry is the current Beta. Second is the current Stable. Last is the minimal version supported. Everything in-between can be in any order. The solution parses the file and uses the version to get the right Game Reference Assemblies to build against." + }, + "articles/DistanceMatrix/Overview.html": { + "href": "articles/DistanceMatrix/Overview.html", + "title": "| ButterLib Documentation", + "keywords": "" + }, + "articles/HotKeys/Overview.html": { + "href": "articles/HotKeys/Overview.html", + "title": "HotKeys | ButterLib Documentation", + "keywords": "HotKeys The HotKeyManager type and associated views and functionality inside of Bannerlord is incredibly convoluted to work with, there are lots of gotchas and having conflicts between different mods registering hotkeys with the same ID's or mod names is almost a certainty, so this simple wrapper around it was created that handles the finer details and handles input polling so the entire thing is event based. Usage public class MySubModule : MBSubModuleBase { private bool _campaignIsStarted; protected override void OnBeforeInitialModuleScreenSetAsRoot() { // Create a new HotKeyManager for your mod. var hkm = HotKeyManager.Create(\"MyMod\"); // Add your HotKeyBase derived class to the manager. // You can add as many hotkeys as you'd like before building them up. // You can also use `hkm.Add(new TestKey(SomeExampleArgument))` if you'd like to have a non-default constructor. var rslt = hkm.Add(); // var rslt = hkm.Add(); // It's not necessary to supply a predicate, it's just a convenience. // You can also manually set IsEnabled to more simply enable/disable a keys functionality. rslt.Predicate = () => _campaignIsStarted; // Subscribe to each of the events on the hotkey at any time. rslt.OnReleasedEvent += () => InformationManager.DisplayMessage(new InformationMessage(\"Test Key Released!\", Colors.Magenta)); // Call this to build up all the hotkeys you added. hkm.Build(); } protected override void OnGameStart(Game game, IGameStarter gameStarterObject) { // An example just to demonstrate functionality. if (game.GameType is Campaign) _campaignIsStarted = true; } } public class TestKey1 : HotKeyBase { protected override string DisplayName { get; } protected override string Description { get; } protected override InputKey DefaultKey { get; } protected override string Category { get; } public TestKey1() : base(nameof(TestKey1)) { DisplayName = \"My Test Key\"; Description = \"This is a test key.\"; DefaultKey = InputKey.Comma; Category = HotKeyManager.Categories[HotKeyCategory.CampaignMap]; } protected override void OnReleased() { // You can also override methods relating to keypresses within the key itself. } } public class TestKey2 : HotKeyBase { public TestKey2() : base(nameof(TestKey2), \"My Test Key\", \"This is a test key.\", InputKey.Comma, HotKeyManager.Categories[HotKeyCategory.CampaignMap]) { } protected override void OnReleased() { // You can also override methods relating to keypresses within the key itself. } } Credit Original code taken from BannerLib by sirdoombox." + }, + "articles/index.html": { + "href": "articles/index.html", + "title": "| ButterLib Documentation", + "keywords": "" + }, + "articles/MBSubModuleBaseExtended/Overview.html": { + "href": "articles/MBSubModuleBaseExtended/Overview.html", + "title": "MBSubModuleBase extended | ButterLib Documentation", + "keywords": "MBSubModuleBase extended Introduces an interface to use in your MBSubModuleBase-derived class, that provides new SubModule events for additional control over crucial parts of game and campaign loading or unloading. Usage To access additional events you should derive your submodule from MBSubModuleBaseEx instead of MBSubModuleBase. public class SubModule : MBSubModuleBaseEx { public override void OnAllSubModulesUnLoaded() { base.OnAllSubModulesUnLoaded(); } public override void OnBeforeInitialModuleScreenSetAsRootDelayed() { base.OnBeforeInitialModuleScreenSetAsRootDelayed(); } public override void OnGameStartDelayed(Game game, IGameStarter gameStarterObject) { base.OnGameStartDelayed(game, gameStarterObject); } public override void OnGameEndDelayed(Game game) { base.OnGameEndDelayed(game); } } Alternatively, you can derive directly from the IMBSubModuleBaseEx interface. This way you can derive from other virual or abstract classes and still access all the additional events, introduced by the MBSubModuleBase extended. public class SubModule : MBSubModuleBaseWrapper, IMBSubModuleBaseEx { public void OnAllSubModulesUnLoaded() { //Leave empty or add an implementation here } public void OnBeforeInitialModuleScreenSetAsRootDelayed() { //Leave empty or add an implementation here } public void OnGameStartDelayed(Game game, IGameStarter gameStarterObject) { //Leave empty or add an implementation here } public void OnGameEndDelayed(Game game) { //Leave empty or add an implementation here } }" + }, + "articles/Optional/DependencyInjection/Initialization-Stages.html": { + "href": "articles/Optional/DependencyInjection/Initialization-Stages.html", + "title": "| ButterLib Documentation", + "keywords": "Initialization Stages: Stage 1 - PreInitialization - Before ButterLib is processed by the game. Developers can inject into ButterLib via ButterLibSubModule.ConfigureBeforeInitialization(). Stage starts after the game starts loading SubModules. Stage ends when the game calls ButterLibSubModule.OnSubModuleLoad(). Stage 2 - Initialization - any MBSubModuleBase can register their own services. Stage starts after the game calls ButterLibSubModule.OnSubModuleLoad(). Stage ends when the game calls ButterLibSubModule.OnBeforeInitialModuleScreenSetAsRoot(). Stage 3 - PostInitialization - Services can be discovered by any MBSubModuleBase. Stage starts after the game calls ButterLibSubModule.OnBeforeInitialModuleScreenSetAsRoot()." + }, + "articles/Optional/DependencyInjection/Overview.html": { + "href": "articles/Optional/DependencyInjection/Overview.html", + "title": "| ButterLib Documentation", + "keywords": "This is an optional implementation of the new Dependency Injection framework created for .NET Core based on ServiceCollection. You are not required to use it. We have made sure that it does not leak into any classes ButterLib provides for the developers when using ButterLib as a standard library." + }, + "articles/Optional/DependencyInjection/Stage-1.html": { + "href": "articles/Optional/DependencyInjection/Stage-1.html", + "title": "| ButterLib Documentation", + "keywords": "This is the stage before ButterLib gets the opportunity to do the first initialization steps. It is useful for overriding ButterLib's default behavior. MBSubModuleBase.GetServices() is not available at this stage. Right now ButterLib is loading it's options from a fixed file. This can be overriden, so the config file would be loaded from another place, e.g from MCM's ModOptions folder." + }, + "articles/Optional/DependencyInjection/Stage-2.html": { + "href": "articles/Optional/DependencyInjection/Stage-2.html", + "title": "| ButterLib Documentation", + "keywords": "This is the intermediate stage when SubModules register their services. Because the IServiceProvider is not yet available, it is not possible to the the full ILogger implementation at this stage. You can call MBSubModuleBase.GetTempServiceProvider() to get the temporary IServiceProvider and resolve ILogger while logging anything at this stage. Do not forget to replace your ILogger at Stage 3." + }, + "articles/Optional/DependencyInjection/Stage-3.html": { + "href": "articles/Optional/DependencyInjection/Stage-3.html", + "title": "| ButterLib Documentation", + "keywords": "The last stage. ButterLib will create a permanent IServiceProvider for usage. MBSubModuleBase.GetServices() will not be available anymore, thus disabling any configuration/service registering. There's also a substage. When Creating/Loading a Campaign, the IServiceProvider will create a scope that will span across the whole Campiagn. Should be userful for per-campaign services." + }, + "articles/Optional/index.html": { + "href": "articles/Optional/index.html", + "title": "| ButterLib Documentation", + "keywords": "" + }, + "articles/Optional/Logging/Overview.html": { + "href": "articles/Optional/Logging/Overview.html", + "title": "| ButterLib Documentation", + "keywords": "By default, the ILogger implementation will write it's logs in %GAME CONFIG%/ModLogs/default*.log. You can create your own log file with this code: this.AddSerilogLoggerProvider(\"FILENAME.txt\", new[] { FILTER }); // EXAMPLE: this.AddSerilogLoggerProvider($\"butterlib_{DateTimeOffset.Now:yyyyMMdd_HHmmss}.txt\", new[] { \"Bannerlord.ButterLib.*\" }); Any log from a class from namespace Bannerlord.ButterLib.* will be written to the default*.log file and to your own file." + }, + "articles/SaveSystem/Overview.html": { + "href": "articles/SaveSystem/Overview.html", + "title": "SyncDataAsJson | ButterLib Documentation", + "keywords": "SaveSystem provides wrappers and extensions to the game's save system. SyncDataAsJson The Old Way To sync your custom data to savegames, you need to define a CampaignBehaviorBase and override its SyncData(IDataStore dataStore) method. From there, you'd make one or more calls to dataStore.SyncData(string key, ref T myObject) to actually synchronize the data to the savegame. This seems dandy right up until you realize that it's actually quite a pain in practice, because in many cases, SyncData will not only fail to work correctly with some standard types (e.g., simple containers like Dictionary but also the game's implementation will often force the save files to depend upon your mod being loaded — not to mention the need to define your own SaveableTypeDefiner and pick arbitrary unique \"base IDs\" for your mod just to get anything done. If the save file ends up depending upon your mod being loaded, then your users are unnecessarily screwed when they disable it. In short, the old way is a pretty decent try, but it falls short on safely removing your mod from a savegame in all cases, the general amount of error-prone configuration required, too many of your wasted hours trying to synchronize data types that should obviously be handled by default but simply aren't, and wasted time marshalling things like MBGUIDs back to object references. The New Way: SyncDataAsJson We've developed a drop-in replacement for the aforementioned SyncData: SyncDataAsJson. It doesn't suffer from any of the aforementioned issues, and as an extension method of IDataStore, you use it exactly like you would've used SyncData. However, your custom data is now, behind the scenes, serialized by ButterLib into a simple string (or similar primitive type). SyncDataAsJson doing its own serialization to a primitive type behind the scenes means: Your mod will never save custom data that prevents the game from loading properly when your mod is disabled You will never need to define another SaveableTypeDefiner Far more standard types, especially involving standard containers, will be handled automatically, and in the off chance that they aren't, you (and we) have the power to add custom type serializers. You will never again need to manually save MBGUID values or manually restore them to MBObjectBase-derived object references in order to properly save, say, a Clan reference again. The serialization engine, Newtonsoft.Json, in order to allow SyncDataAsJson to operate as a drop-in replacement for the old method, has been outfit with a custom contract resolver and a number of special type converters. The engine's custom contract resolver will only serialize data tagged with the TaleWorlds SaveableField or SaveableProperty attributes. Likewise, custom types intended for serialization must still use the SaveableClass or SaveableStruct attributes. Note that the ID numbers required by these attributes are an artifact of the old system and don't actually matter to SyncDataAsJson, but you're advised to fill them out like normal for new types in the event that you need to go back to SyncData for some reason. An example usage follows. Remember, the only thing that's really changed here is using SyncDataAsJson instead of SyncData. using Bannerlord.ButterLib.SaveSystem.Extensions; public class CustomBehavior : CampaignBehaviorBase { public override void SyncData(IDataStore dataStore) { dataStore.SyncDataAsJson(\"KeyForMyClass\", ref _myClassObj); // ... perhaps more SyncDataAsJson calls for other data ... } [Serializable] // If the struct/class has the Serializable attribute`SaveableField and SaveableProperty will be ignored public MyStruct { public int X; public int Y; public int Z; } private MyClass // Why private? Just to point out that access levels aren't an issue. { public int _unsavedField = 42; [SaveableField(1)] public Dictionary _heroButterGiftAmounts = new Dictionary(); [SaveableProperty(2)] public string Name { get; set; } = \"The Butter Lord\"; } private MyClass _myClassObj = new MyClass(); // ... other campaign behavior code to, presumably, give a lot of butter away everyday } This extension is the next step in the evolution of best practices and just plain less frustrating practices for the synchronization of your mod's custom data to savegames. Notes: Built-in MBObjectBase-derived types (e.g., Hero or Town) have a custom converter. They are serialized as their Id property. MBObjectManager is used to resolve these numeric IDs to the correct, live game object references at deserialization time. Custom MBObjectBase types are not serialized (i.e., custom types derived from MBObjectBase that aren't registered with the game's official object manager). While we do not know if such types even exist, we consider this to be non-ideal and intend to fix it in the future for completeness. One of the proposed solutions is to have our own registry of such custom objects and to resolve them from it — basically a custom MBObjectManager." + }, + "articles/SubModuleWrappers/Overview.html": { + "href": "articles/SubModuleWrappers/Overview.html", + "title": "MBSubModuleBaseWrapper | ButterLib Documentation", + "keywords": "MBSubModuleBaseWrapper Wraps a MBSubModuleBase and gives the ability to easy call the protected internal methods like OnSubModuleLoad(). MBSubModuleBaseListWrapper The same as previous, wraps multiple MBSubModuleBase instead of one. Usage MBSubModuleBaseListWrapper could be used if you need to dynamically load specific SubModules based on some condition. You need to create a MBSubModuleBase class that derives from MBSubModuleBaseListWrapper, in which you decide what assemblies to load. MBSubModuleBaseListWrapper will check the SubModules property for the SubModules and proxy any game call to them. Dont forget to include the new SubModule in SubModule.xml! public sealed class DynamicSubModuleLoader : MBSubModuleBaseListWrapper { protected override void OnSubModuleLoad() { // Add any MBSubModuleBase instance that should be handled. SubModules.AddRange(...); base.OnSubModuleLoad(); } } See ImplementationLoaderSubModule for an example." + }, + "index.html": { + "href": "index.html", + "title": "Bannerlord.ButterLib | ButterLib Documentation", + "keywords": "Bannerlord.ButterLib Extension library for Mount & Blade II: Bannerlord. Highlighted features: CampaignIdentifier - Associates unique string ID with every campaign based on the initial character. DistanceMatrix - A generic class that pairs given objects of type MBObject and for each pair calculates the distance between the objects that formed it. DelayedSubModule - Execute code after specific SubModule method. SubModuleWrappers - Wraps MBSubModulebase for easier calling of protected internal metods. SaveSystem - Provides helper methods for the game's save system. AccessTools2 - Adds delegate related functions. SymbolExtensions2 - More lambda functions. AlphanumComparatorFast - Alphanumeric sort. This sorting algorithm logically handles numbers in strings. Check the /Articles section in the documentation to see all available features! Installation Players This module should be one of the highest in loading order. Ideally, it should be second in load order after Bannerlord.Harmony. Developers Add this to your .csproj. Please note that IncludeAssets=\"compile\" is very important! For Players This mod is a dependency mod that does not provide anything by itself. You need to additionaly install mods that use it." + } +} \ No newline at end of file diff --git a/logo.svg b/logo.svg new file mode 100644 index 00000000..df7cb683 --- /dev/null +++ b/logo.svg @@ -0,0 +1,25 @@ + + + + +Created by Docfx + + + + + + + diff --git a/manifest.json b/manifest.json new file mode 100644 index 00000000..c569445a --- /dev/null +++ b/manifest.json @@ -0,0 +1,1085 @@ +{ + "homepages": [], + "source_base_path": "/home/runner/work/Bannerlord.ButterLib/Bannerlord.ButterLib/docs", + "xrefmap": "xrefmap.yml", + "files": [ + { + "type": "Resource", + "output": { + "resource": { + "relative_path": "index.json" + } + } + }, + { + "type": "Resource", + "source_relative_path": "CNAME", + "output": { + "resource": { + "relative_path": "CNAME" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.BLSE.BLSEExceptionHandlerAttribute.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.BLSE.BLSEExceptionHandlerAttribute.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.BLSE.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.BLSE.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.BUTR.Shared.Utils.MBSubModuleBaseSimpleWrapper.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.BUTR.Shared.Utils.MBSubModuleBaseSimpleWrapper.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.BUTR.Shared.Utils.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.BUTR.Shared.Utils.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.ButterLibSaveableTypeDefiner.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.ButterLibSaveableTypeDefiner.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.ButterLibSubModule.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.ButterLibSubModule.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.Common.Extensions.ApplicationVersionExtensions.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.Common.Extensions.ApplicationVersionExtensions.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.Common.Extensions.CampaignExtensions.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.Common.Extensions.CampaignExtensions.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.Common.Extensions.DependencyInjectionExtensions.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.Common.Extensions.DependencyInjectionExtensions.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.Common.Extensions.MbEventExtensions.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.Common.Extensions.MbEventExtensions.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.Common.Extensions.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.Common.Extensions.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.Common.Helpers.ApplicationVersionComparer.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.Common.Helpers.ApplicationVersionComparer.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.Common.Helpers.ElegantPairHelper.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.Common.Helpers.ElegantPairHelper.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.PluralForm.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.PluralForm.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.RecursiveCaller.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.RecursiveCaller.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.Common.Helpers.LocalizationHelper.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.Common.Helpers.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.Common.Helpers.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.DelayedSubModule.DelayedSubModuleManager.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.DelayedSubModule.DelayedSubModuleManager.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionEventArgs.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionEventArgs.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionGlobalEventArgs.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionGlobalEventArgs.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionType.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.DelayedSubModule.SubscriptionType.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.DelayedSubModule.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.DelayedSubModule.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix-1.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix-1.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrix.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrixResult.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.DistanceMatrix.DistanceMatrixResult.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.DistanceMatrix.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.DistanceMatrix.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIClassAttribute.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIClassAttribute.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIInstance.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIInstance.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIMethodAttribute.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIMethodAttribute.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIProvider.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.DynamicAPI.DynamicAPIProvider.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.DynamicAPI.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.DynamicAPI.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.ExceptionHandler.ExceptionReporter.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.ExceptionHandler.ExceptionReporter.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.ExceptionHandler.WinForms.HtmlCrashReportForm.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.ExceptionHandler.WinForms.HtmlCrashReportForm.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.ExceptionHandler.WinForms.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.ExceptionHandler.WinForms.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.ExceptionHandler.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.ExceptionHandler.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.Extensions.IInputContextExtensions.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.Extensions.IInputContextExtensions.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.Extensions.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.Extensions.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.HotKeys.HotKeyBase.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.HotKeys.HotKeyBase.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.HotKeys.HotKeyCategory.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.HotKeys.HotKeyCategory.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.HotKeys.HotKeyManager.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.HotKeys.HotKeyManager.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.HotKeys.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.HotKeys.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.ImplementationLoaderSubModule.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.ImplementationLoaderSubModule.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.Logger.Extensions.LoggerExtensions.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.Logger.Extensions.LoggerExtensions.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.Logger.Extensions.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.Logger.Extensions.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.MBSubModuleBaseExtended.IMBSubModuleBaseEx.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.MBSubModuleBaseExtended.IMBSubModuleBaseEx.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.MBSubModuleBaseExtended.MBSubModuleBaseEx.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.MBSubModuleBaseExtended.MBSubModuleBaseEx.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.MBSubModuleBaseExtended.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.MBSubModuleBaseExtended.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.ObjectSystem.Extensions.MBObjectBaseExtensions.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.ObjectSystem.Extensions.MBObjectBaseExtensions.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.ObjectSystem.Extensions.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.ObjectSystem.Extensions.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.ObjectSystem.IMBObjectFinder.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.ObjectSystem.IMBObjectFinder.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.ObjectSystem.IMBObjectKeeper.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.ObjectSystem.IMBObjectKeeper.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.ObjectSystem.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.ObjectSystem.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.Options.ButterLibOptions.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.Options.ButterLibOptions.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.Options.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.Options.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SaveSystem.DictionaryToArrayConverter.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SaveSystem.DictionaryToArrayConverter.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SaveSystem.Extensions.IDataStoreExtensions.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SaveSystem.Extensions.IDataStoreExtensions.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SaveSystem.Extensions.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SaveSystem.Extensions.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SaveSystem.MBGUIDConverter.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SaveSystem.MBGUIDConverter.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SaveSystem.MBObjectBaseConverter.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SaveSystem.MBObjectBaseConverter.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolver.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolver.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.IsContainerDelegate.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.IsContainerDelegate.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SaveSystem.TaleWorldsContractResolverBase.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SaveSystem.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SaveSystem.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseListWrapper.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseListWrapper.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseWrapper.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SubModuleWrappers2.MBSubModuleBaseWrapper.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SubModuleWrappers2.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SubModuleWrappers2.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SubSystems.ISubSystem.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SubSystems.ISubSystem.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SubSystems.Settings.ISubSystemSettings-1.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SubSystems.Settings.ISubSystemSettings-1.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsDeclaration-1.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsDeclaration-1.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsProperty-2.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsProperty-2.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyBool-1.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyBool-1.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyDropdown-1.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyDropdown-1.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyFloat-1.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyFloat-1.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyInt-1.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyInt-1.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyText-1.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SubSystems.Settings.SubSystemSettingsPropertyText-1.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SubSystems.Settings.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SubSystems.Settings.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.SubSystems.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.SubSystems.html" + } + }, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Bannerlord.ButterLib.yml", + "output": { + ".html": { + "relative_path": "api/Bannerlord.ButterLib.html" + } + }, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "api/toc.yml", + "output": { + ".html": { + "relative_path": "api/toc.html" + }, + ".json": { + "relative_path": "api/toc.json" + } + }, + "version": "" + }, + { + "log_codes": [ + "UidNotFound" + ], + "type": "Conceptual", + "source_relative_path": "articles/AssemblyVerifier/Overview.md", + "output": { + ".html": { + "relative_path": "articles/AssemblyVerifier/Overview.html" + } + }, + "version": "" + }, + { + "log_codes": [ + "UidNotFound" + ], + "type": "Conceptual", + "source_relative_path": "articles/CampaignIdentifier/Overview.md", + "output": { + ".html": { + "relative_path": "articles/CampaignIdentifier/Overview.html" + } + }, + "version": "" + }, + { + "log_codes": [ + "UidNotFound" + ], + "type": "Conceptual", + "source_relative_path": "articles/Common/Extensions/Overview.md", + "output": { + ".html": { + "relative_path": "articles/Common/Extensions/Overview.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/Common/Helpers/Overview.md", + "output": { + ".html": { + "relative_path": "articles/Common/Helpers/Overview.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/Common/index.md", + "output": { + ".html": { + "relative_path": "articles/Common/index.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/DelayedSubModule/Overview.md", + "output": { + ".html": { + "relative_path": "articles/DelayedSubModule/Overview.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/Development/Overview.md", + "output": { + ".html": { + "relative_path": "articles/Development/Overview.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/DistanceMatrix/Overview.md", + "output": { + ".html": { + "relative_path": "articles/DistanceMatrix/Overview.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/HotKeys/Overview.md", + "output": { + ".html": { + "relative_path": "articles/HotKeys/Overview.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/MBSubModuleBaseExtended/Overview.md", + "output": { + ".html": { + "relative_path": "articles/MBSubModuleBaseExtended/Overview.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/Optional/DependencyInjection/Initialization-Stages.md", + "output": { + ".html": { + "relative_path": "articles/Optional/DependencyInjection/Initialization-Stages.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/Optional/DependencyInjection/Overview.md", + "output": { + ".html": { + "relative_path": "articles/Optional/DependencyInjection/Overview.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/Optional/DependencyInjection/Stage-1.md", + "output": { + ".html": { + "relative_path": "articles/Optional/DependencyInjection/Stage-1.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/Optional/DependencyInjection/Stage-2.md", + "output": { + ".html": { + "relative_path": "articles/Optional/DependencyInjection/Stage-2.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/Optional/DependencyInjection/Stage-3.md", + "output": { + ".html": { + "relative_path": "articles/Optional/DependencyInjection/Stage-3.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/Optional/Logging/Overview.md", + "output": { + ".html": { + "relative_path": "articles/Optional/Logging/Overview.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/Optional/index.md", + "output": { + ".html": { + "relative_path": "articles/Optional/index.html" + } + }, + "version": "" + }, + { + "log_codes": [ + "UidNotFound" + ], + "type": "Conceptual", + "source_relative_path": "articles/SaveSystem/Overview.md", + "output": { + ".html": { + "relative_path": "articles/SaveSystem/Overview.html" + } + }, + "version": "" + }, + { + "log_codes": [ + "UidNotFound" + ], + "type": "Conceptual", + "source_relative_path": "articles/SubModuleWrappers/Overview.md", + "output": { + ".html": { + "relative_path": "articles/SubModuleWrappers/Overview.html" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/index.md", + "output": { + ".html": { + "relative_path": "articles/index.html" + } + }, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "articles/toc.yml", + "output": { + ".html": { + "relative_path": "articles/toc.html" + }, + ".json": { + "relative_path": "articles/toc.json" + } + }, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "images/BUTR48.svg", + "output": { + "resource": { + "relative_path": "images/BUTR48.svg" + } + }, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "index.md", + "output": { + ".html": { + "relative_path": "index.html" + } + }, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "toc.yml", + "output": { + ".html": { + "relative_path": "toc.html" + }, + ".json": { + "relative_path": "toc.json" + } + }, + "version": "" + } + ], + "version_info": {}, + "groups": [ + { + "xrefmap": "xrefmap.yml" + } + ] +} \ No newline at end of file diff --git a/search-stopwords.json b/search-stopwords.json new file mode 100644 index 00000000..ba9cef20 --- /dev/null +++ b/search-stopwords.json @@ -0,0 +1,121 @@ +[ + "a", + "able", + "about", + "across", + "after", + "all", + "almost", + "also", + "am", + "among", + "an", + "and", + "any", + "are", + "as", + "at", + "be", + "because", + "been", + "but", + "by", + "can", + "cannot", + "could", + "dear", + "did", + "do", + "does", + "either", + "else", + "ever", + "every", + "for", + "from", + "get", + "got", + "had", + "has", + "have", + "he", + "her", + "hers", + "him", + "his", + "how", + "however", + "i", + "if", + "in", + "into", + "is", + "it", + "its", + "just", + "least", + "let", + "like", + "likely", + "may", + "me", + "might", + "most", + "must", + "my", + "neither", + "no", + "nor", + "not", + "of", + "off", + "often", + "on", + "only", + "or", + "other", + "our", + "own", + "rather", + "said", + "say", + "says", + "she", + "should", + "since", + "so", + "some", + "than", + "that", + "the", + "their", + "them", + "then", + "there", + "these", + "they", + "this", + "tis", + "to", + "too", + "twas", + "us", + "wants", + "was", + "we", + "were", + "what", + "when", + "where", + "which", + "while", + "who", + "whom", + "why", + "will", + "with", + "would", + "yet", + "you", + "your" +] diff --git a/styles/bootstrap-icons-AJUF3K7A.woff2 b/styles/bootstrap-icons-AJUF3K7A.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..3b957d5a764cc096fcee42de5ab6a48dfee9af4a GIT binary patch literal 121340 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 z zX>-*Nt8KBS-8EvfE!*u{B96RmYts$yG;896dw}<9-9p+mTp+|S%n;NF++gHz>`?Sb z{Gg<;tdQ!oC+y6p#%z5S!Lz{$h%C^mj0gPGugdTR7@|zUDhQ1bnlu-z+=tF|I~oIZ zqRO$qp;Q?5c+nrJ@sv4=97PvnS|APR-Z&91vH6%iOs@tOVw<7$n4SdjKe?fu5%&lO z*kZgOwyD2Z!1f`iU=&dENLdx!!&m8Vc~I}kv80)jbVz&UEyB)dn>oT)aJG!ilW!R) zTQWCHY|~E#ET1w3jIR=2$uQ$|1WgW8mf2Qjbb5{VlcwofYS+3=uG2pGkgj-s?3^U- zQz_>0`0rk%-g7Z-x4-SYC1*1^_O`$8ex*kUeSO{&onZxv1RjClfO5i_!q_rqusH7n zD2b;-Sc(3EVZ)nTf?FARM+4+Zbz{uo*4TehR6L0_;%|yzBlWXKTVS-9Ipas4bMuex zuZ!z;_w%6`Okb7a1jgm-K>v6ORcylB?!S_2w29x0x0nGPCoZaPeMw`^LC>RtL~ z3lP;`7bE?cDvam5gB=w-9lGXuqygc(n~NHq;rG~Wr(@dmzMRoR7FIH5Qg-^?)At_k z4e|;&LwPW3qqKLeiYB*6P5AVVs{NGKyvD8pGOBVj1RYA7ReD8qXw zBO}hiD9j-+%)vR#ArZ{M8q6UI%)$H5#czQi3;+-YVPXcbV+JAQ2himQ5vB(4rv}03 z2TebAlS3k!A)V+hEdnSoMRdoDpjW5!+x}cQ`kKItLB}wvNFC z56A?M(m#F~-Q)e7ynYb~*ops$61vCwn%I8f``*d_hz__X`kMTH`Ti>~;IDe$*kQ!} z0X*em==HmcunO?KWvcr!*kaG{LiD#jP%|^idRbYDxBSWRXGK&>&YV!9Ic8m4L0$!NlAwTl8JR3d6EQZ)?|~ihzGzWE2sM%nSOYmajdH1I zGL!)?0uHmqKoX=LCq9q!A!$N{v>+;^G)9qfs3eOn#Ysw$R=5a{B!+kuxgi`VQYIC4C{ z;O)cIeIvfjEmQNG*541i%b!{i+l!~)i-*YW?_vU9(se>B$J?jR*PtKJ!rv%k0bo!0 zA|J37LXh|AJ70LA-$e8~La9v&8um#!}MU;nM z=5r8|3g)WljYT>oR;fV>lAgmZ)Ol)ZZS1Lfi{9+HT9$%3FBVt{V#-mXvZ$I3k*eZ{ z=*e>Wm8e-Hm6@tp6gBKPrIWN`ikWv4YIF7yhjf*~I$^X~#lUu3TGj&75L%WJpKy-t zNZDB6Mh0z+T@Wk-d!?+JuDNdXbj3uqW~N%P4~L#|v_wsF$#mLd7KVrJGN#>GOD!SZ zS#zbJ-d|h2^$Y7xgUhCJu8XSeASeRcRTbn{GPO&$vd$JyRFtHIBo);;RTfv81Czsj z^c@UTbQFx_6lK~{RmqwhNyr*mUX2GJ&JxT#xq2frLyRu$vja=eQ{Kv0W0to8o0ILX zLrqsz>~r&dJyOr|_;bgL4p;Blu2=U*Wqj}B=nP&E0HPlN2E9X!A3W#`5jViXjZ_GL z+690n0wCuB`}PnXCMrZoh`aOHpb9AS_^=F#^SF?gD)T6ax%2ZF;F~P-Xz<{I;(?S<^sqZJLDEp>t_7+fxu_ZHePvLLh%h!H^3bZj%B+D|C{6MO zR#0^C+&cZ!P==m2Zo&y@1Nwl&aBgIBAChTkou6ay!YY6XQDuzq4j6WcLIx-UmlL@@ zWz;fN=JfDV1bYh;CTJ-iZn{1VlswrR&G0(74-J%xaAS|qEa5g8@hs6Mo1rX`E*@$m6#@vY@$*Q`DCdtlM0k zZM~Zi3L)LwXbvjj90)hK0UK&7$y%AP_0ATo_l%)i8jT=q8LC)kcVGUdnS(Fc*e@#etlK5b$mB3T_X~nieS+ zw2-aP9aH*vXQ7>07owa3h8H!uL?bwQT214af5ZIKrJvB-u4wuYos z?qyz=wId~GMQsk_<5U*ZJyp0v7vKPp&kmd8l>Hl2SZ88Gg|R8B&}nVW#c+us`yM)9 zGjPg@;@&C!77p9AE#4uAejH&vqr^MoEADuizzKp)5E;`&^*MqVIHnwT=p(i?4chI_Y^;|=lV>q@Q& z$>5S>D9~dOTclXs3W85a?H2}jl_3Xg5o1C~jX&dlvr6f-n^h0Mu58P2_W9WtsM#l| zaIRwG?Xg$6hg)>bHq1289ZkA-zse%XIP*-)W|yA$fgWy zX`f>H4sZI2Z`uX%9WJvSbYdgOoUo5o36P0Je>9CcjU~srUCo3vHbSz-LmI(NS(5zT&;VU0nx(LdyKqzjZQB=Z!@WQ$Z>1`p zbZBV|rGZ$9M+znH%s7IIWl9N$$>w^bqaFuu=sto9J-yHvV4%qqsN6cJ!_DThwlqoH zIzV!TG)l8pcbry>0~y~;am+-8-#<-w-m(wRvUGz)>C_7az}IBSlqJlR70_-l6oTR{ zjq#@Y6?Fp*njkzESvi`5rK>KAIi41Ip{+v(o5oT87Nxb^E+TC&FmBHiO4;O_x%bKN ziWiZcon)xF4^V;2XH))wT6h@Go#sLL3YSUYo`%UiOjx|_ z!1=qTemci~&JWqN&78LN-`9YLo-@GYb;uN{)>A+nw@%bwWn z7sj8*elH={WJAa|s?kwvRf-RdZNwhS>+SL$A^)MI5?QgAqbBiboGF9R2<)=xOJ}ah6_n&_JNO%|NROVk?;Hp zuM~I#`Aawf1~OVYGBWI!c!qS?JAUL152{TMn#E5LW+Bilqrk2fkS9TSfD^rNcQZ(1 zK;NYi%scYJ7Zddw6a$~}0dBP$LS26LA19ON$&X89m9 zSTMZ=?%)9o_B`VoNI7C|(S9`8AnizUQBn-nOy#jKSrT^HLbXbeC0al%oM=_>d?nz4 z7Ci)RuwsCv5@w1v$r?i<1`JRYI79=ug`*b{A*Zb%hfJ>CQAHO8ipr{4pTd!e?V8he z(dQGa3HrIlK(~)1^Y2Ua+?MqX(Xqq+k}on%E*T=H!@eq0~HuK z$^v!Oq;qMCw$K-iWv$su*)v(Q6nGdkOP8~n*Q_r&B_m>&ZT8*Qyf-;T;uV(ck{{O0 zKRJg36*#OH5!dX)9R$f*5>#FXGP>9piR8V%GnS_1Pch3p=-4`9bv9>mu8a-68VWkK zmp1873DZ27=sMyxHfOU4jSY|+3L{pR2JKH#S{|wSd}9m*X7cikx7A&Zf!s|$@z+S> z99XD|ylC@tQr#)jZ?``v75$c2`>8)T3HVz3d98F6F~RuVNHD2Vco-0@Ac|G5 zzR!@|J-k;AB?LIKQQ%r{;&|(@JJvSrHNvSZeI!Q|I9&eiFNHfg1D5f!EZ6H?+Y|I$}3_xirYX&jEa|A+?`-yRa3oV7c)m@eEidMdg1kN6X0jm%%icB@rCA& zbzmTBN^c7QxDEF?aTY)m67*FF)^^PQcI;rj&90X%{SXldwP}J-;vk2}7TLNV=cw60 z?a<5Q5nogYHPFUj6F^68Ef4{z6yLfO_!H{B7Um+>pCAqitVHrL9KX>vUrFpi^bP+F zj7&7|H)m}O-%obV_rh5!App;n>L86=W&@fQdq^UVp4XvV% z)<%X_0FxPjkqdg9_?r zG}1F+xqu-F$|Mq#+QgOA=cqdSjv9SxOrE-biyyzVIb=y`rlOEYqagL&APE40Pbs<5 zP&23?(yv4kgaiO6x`p08eE*-Q{$p>Yon=rJocvKpW&wk?Ztw`xy zZdf0YC+->pk=fR4We{Se&XzFdxq=_+yz9g8mLoiA6pmbaTRNk94Mh=kEeu03KJZGS zh@S)Hx%Nv%PDa~qaT(T8xmKF|A5WALVJn#)fBk7cb{bCj<^MYU>#oIEi z8R4fFV(B#g?C$mV`l?PlHM}IyjB*F}wJhFFWt%P%_2*3YJeQB4j|X3~kCj~g=$Dc1 zZSFsnjn@*NmTEkGkH|AmZSF8E#Mam>zWKOveW+JgU_M#xaexF9mXRh=3lA9943he` z?3jAboi#n(^?BtzVf8Q-u^v{aa5&0doF7yuRm!dcId%ZrT92O=%STAB!8uKpYXT@6 zEK!3bU>(-&rIGGik?-z8f)w-4GU}y=DoIfhLfc~K) zR&Yf{+{vLWL`Htl(i-Sgv*gJ{0A1fCl8iO@fzHWGcBL03^ehCQT z9WM%Q3={PvxiG*?7f*s%&*7NSt3PU_YWI3xdo_S)P@7URTUv8$F6$gWt))+7imr*I z#%d5|^uxNI06dpmtlet5DuI>pY+A(j65mOM$p>RS~iKw{{y>h23 zV*ZYWM|a_b*3G_;OwObRYm9!LnMYcJ8=RsZ7BQEdDJqmM%0Q2i2`_~a_Y59_z-_Le z?f65At3z*ejSWDNpsOfU%Lhei-$+w-ZG;RW!W+nPxR40#!bWM(Or4-EPu=sVU6cGmM)2@Sit=9O)D=xCH9#M8uATIDdGJQtFJ zIkbWB4Q_>rMUqCMv@T93KcG}0xE6xISA%4VaRc~qez`zdf+`VaFwq??H&DMi|FU%j zZFDxw%oC?WKaEoAR;}v*Z^N4}N2s~qnA3tnRlo{Ma;KVDLlM&uEg=@Rd zfGW$LhGn_X6rcl{5I7=!fc?v^;;#8N{Ik8xBz$3}baEMc99yid#ug+mke0+;)sDSh zUW|)_ifni5f!VcRGbggAb3fp=SB95-kwx*gJUMg+AH!+A9`|DKmRpDX^m{b?xKQNu1TLIj^Ebe7!;56yB5YuF_#`ZNMbZYZ<=+ns^Rmnn5}cC! zv68R@Xaq4XDb-ML@<>q#GS}~UC`G9Zd%yrkM^bl^{~u+SD}=83q{r?3XoCUPzt74 zsl`gt8iWv4QqP3jmDrN9*T*rIdnJ!QlC zli)t>(s`+R+S~s1;Zfi(jYhfG3XNjISPf~jf-@}czfvP-uD3MzF_%;Mjq&~zfNi}I zTkM-RYYu(v+X7#8j$dF}UIqn~J6%vjMjWX{wXBg!^}vP}`eoTnYcm6wU!k{P!U@{* zRh4$dkJ2s>3e_Dnks^P~lqHxZ9I1f!UGh;HxKOuJMB|fa;50pTA0$17iMPYFrGW!sO#fm&*8wCSPx+eAnc81w2hNp^cX8 zeAsLGfLV$RRkaRKk$2eX6;7SnkxQ;|J;DZ*v|53+UOFS4R z%alT>8Jeywi;{TflRhf`Y8j)4Tez4`#nN6j_qq9<$NP(JJ}W=2-hrlpB|iemqq-m`R9zYbp<^?#dvOm(L#+7{J)C&p}@PIek3;#4?Z6 zv{+kE6C`V02ORc9si}FKj9A#Z=2<6_Dw=M(u67I*9#r&-Oa0;OG$MsQwejcr z-Iekn@m15q{J7kkdwp=&8Wy|O7hDJV%=giQgbI~-l}zq?t#8olO7*iIIRK+q*|#e& zf3NjM4b+(U)mQkwptiXY$Wnhxn*AnH63MMa08HHV5{X(h`AN`{RDDh;{{h=e09&bS zWU1p}7HF8!Bm&y~n~zATyiV!b9}BPd(K6j%;R?6O5$s=ZS?HHS}Cg(PosO+dd-l#h3HiC?AGtam!dPP zZ7IP`MhuY3$&b?`C)xoOp1CMFvQ%Vp{pr%^8(?iIG{KX{Wv4-MuHW2~v*u}CHmFLq z{rE<%h3DoGW|W*(L#v0g>Pc#Djsnk!9};i}%L*F|!ng<*G8gyZFGWYX4aYtzEwCCF zRcBiZKzYgm37!K=Br5|7+JcE2yXPYWPJH7zK8`oXO_-)&ubu8p3#7itwes0lhDR2e zFLuOO#|@zrkBx~mDh>eF9*BA;F@BH9DvLx#lXFfE+dssAppU4i4Q!BYru$^t=tBWS zhsNBvbnQo_!8LH#;38pkSBSxT(*u^vR6JyH(ezq$ithJa=ZDQN&GQ5)lTg&Z*YHVn z`2<9>&VL}@Y!Dw7$g0*)zI8K z&5Nii)A?hd1I~89m_5S@&VC~blAp92rp~<7Y^K4ZW8SlC7VBb)4-yGbwbtEAmt%j} zTwqhYh0>174)!ovpru*4+NCU|)k!3PXwdU3fnajRv`;Q|Gk6V>|B~$6aeS&uoD{m5 zpDtit=I%kfRoWIEn)Q{?OfQYT@C=~s`XK%bvmEx}!lRrMO!|veweSP-m)ql`hk;V` ze!a{7%qdBhpOe87ez*8(ciYNmArq#AITEeByQcuF^aVjM6)}vo1CaPIXir%u9%iac z9gGx-^mbV0g=WSVp%g38r^w52O?2i_StF5O`a11*YIKh4C1++>sXrMgGDZgTXk!x7h-BSZ^0|xR=^1j&>V;iX3*dF{iVs| z*{yn+PshX=e}BY2yMbud$SuJmy7$lwUJfdw_Ob^Yaf1o`@O$1c6fY`Ims@;DIL5)XpDfprE-5X^V={>uP;_{& z%p;V9zLllxFi_;4KLho7oc_e(hYVc z0m8iB)xbo{0K@lXI{YBlyOG{5#v-y8mdnubp=?9`T%og?3@%-7@2u65X8C-BhvFhX zjpf*nncWDenGG~8#q@SHZ{}nVl`x=_H(dfY!YKwyBvE-|?oH-xkbkI!rKGTqcV_}hi=`TFY%jMABOrw+2K zGZWr-Xfa&s>++gm8FAL>vX912wWar|yM6NXNOovDZ zYZXzKUTy4D*i{O53rJy5#f1(x*AQ}pAL|JxJG9#JUi+8AZx z$2ZsTFvq@;r#^AYRc9kl=F(Oq#Lk=kGzSid8br{<(fSWN_mQ#2h$i}RHp|b{kQzL@ z91lhox}9}Bowf)W9_xfRbfog+`pMKJ&)knWGJ+quhO>LnT*|3Dyv;*dV|u3bZA*g+_w%s>!}{BzC<3|B zA@*~T?DY(1Aw_cNU>3z~c^xzt&}qiUojpxXFI1{IZG)~4W69}T_7PjCFPXz(Kz$9D ztR6S1e?Rz0KKQuJ(mL(l34J~8sD${cP+jOYJEcMCOzH-D(5d!kNKAG#7V&1z3}@}- zOok2HHF({$a!UCq{q9K$X&o`tJG(Q1wzz^ExT2?&uH zw&axG!kucL0I7VyGoO=vh!7KH746$`zSt3Z;`<>;wE8DErRFckUyG}m@l7?<$r4HF zdMcjM=n8^F{F25e6&|knACr}>R02y7Wk!0N3By+vVf8XFrU>G%S)##Jwm@=Bv@mB0 zY*AG;H$-hGZtq^Q5Y%g20yua%tpX=~HD#Yd0u?pKy8?ao_AKAaDc@heqz`5E?!9-; zEA_`6ve(n5LfRFpJ@AUCGDN=OYUE0(wINJ9)$AQXe3L7lGa-mZ^t5!GFiIoA(x~1y zBDI{f+2XQvIBG_{hak7y@xh^FehEYR>dK;)eP_sR(pK)?kB*y<$vf#~7x}c$30gWR zf+r4Cj=Jfkd-UeO5TP8Fpj2`>%V^BBLSV&-@Ewsz&^FH5NQ;@;++wh)ixXukzy!q> zX7H+ThhkU(a{{9ysMs918p!#81lB@q&)Ja*M^81Epbsme#kqLjhP~1BCgR;l-|da0 zY!XY06m{k@Y}|IL@tB*IJM?4XrJFySQMhdYYlOU9DD$LC*VaJ;D*%ai+|W@g{De>z zDW8qdd+XHUO1j3l7g)GrhY+`^lhR6Mr`Yp>C7Y7`Z3sE*9Cd{!@(z1qS&Z^?KF_r@ zAfyF*2X{M5U&brydgXBOvVHJj>GioaR*2w%TyLiFvzm(Wx!Sdf7wr;FBn6HP43?EMHkX}GS zrMRPQSKx7Ucbd=b%y?a@Xl>7_PuJ!=#UG48nzHQqRpp>?8$>X|mS(V#UO`(d)Es2r?jJ)h`Y2AOjOZ zb)jle>EhN{yXR(xdBo@b{7~@_fM-^}%D4Cx>$?Jg5m#8gq!_ALkwA~-;2TIz6%@(8^zk8cYSP%$EH!3h3gv4l()SFddqEQ#UJ zG-lk$k3MW!Hiw*+RFlZxk+f=_^qdmPrKm}>AdArL1<3 z4f!GANN=dGH0r|7*VX%-ePp6Se{bXoMswCtEG9U)ygt+PLh6VksZmQ){f8Mb@{mU)0eV|yEX(A@r@L*kx3b|5DnG_bLw23uyWriTaP$mT|Y zI@Tw(3$RWcTK6q`=?v7$W1|$8C>$z>Tdw~pT79@);E=5haizj7`Qt!1zIX_ATVn=& zZHIny;7FJx@+6Ydc6MA4`?qpV=fO5Ewl|!-nYGp|OH(M1r)GD?CqY^5Mf zjltApGd;_pbD@6tZpXC=!%qX3I5Ibl}NZrZZY3G=9< z&knFBG6|e6D{PmLiIl`2;(uL$O%5DY^{u`yo zZD{S0>a{RG%hm4o@qK2W2&NRnU@&DcWe$0En-m%Kq>Q(sJ1LyguhH;aR&)~|XEFT+ z!3&16oqic>A8v>2F6XnRPH9jvO*$XMbuQxtXkn0N!atoEu+C0W@M7d8nlsW#vnO;~ zp*h#lOI`RYjOcDT=G;fOZAU0z5LMvF9Ls-}wOrLV)5>A;kv2bUtm^~s>@>>s!nA?c zYG$4i@Bw)dqNwHJlHe(A>%N=0t3Vgy;{bluS3#`kVnzSIIPn$I3+vmaU+yhzqDBE8 z=Pf8ncIA%&y_~X<4Pwk`iX$L{e(6Zz&}mTCeXwo_mt3gFxZbs$!>h{#n zePb=h=LI0X?yA7K+Hi2^u<)7WXV7RKk;#A&JQ9G@NI|piv!jZ$0*6$IHTS)5V)@P- z|1Jj?ZA4{o>ll0p&$2)acRHZte{2a37{dQP9BrSD`whW?ye6MhfiIJzrdn^zO>2%; zyw&;t0Wm<%zfh{f)We|jP+P#_2yw6GoVCaVrEQx<#4>>McZtH2pze~Y%rOwn+-3It znQ7|N&xPNjdvZC2`*~i})|}ld`y6y(Ld(?B55*CP+UITo;$2nt$HQXtMsv8eJ!o9- z^lr9BJ7>o2TTWP%x9{DZ^g7oYgYB(h^G3ISt35umGio)O!?>qGqtog2TBCMr-0t_g zO{MSnL{eCYh#1K-;1}tKj=>1kgrs_e%)+itg?%Fk2f<0l6uJaOkpgE)!d@H_4*XWx zkNPudE$x%d(hF2{B9VP zPg8#ekEJ7RK)~cz5&WH}u2Nn6*mj*$4BH6IVKc1UkcZ@SzD4 z><4rT%Oy{@a1~ed%L=aW>_Z0WV}R-Cn=I3dYU@(4h4{B#3ISY<%DD_HDoW%vZR@54 z4!W&&Vi(@u*|1?^qt*(>(3lDku~P*)n!5}hV zoXU9s0#Q3}UD0Cm^?Zr~Mta9p^F1{3mS{&&&~l}QSqheFG%Clkx@tVHq@@-nluTJ| zCV-v8hluwmc>M>-Vt6Sytc5HJKD9@%>_tr7#Ucce*mEGK~c+N3k<>% zBN`%vDu+01>b*+@Jx&v5@WH7n%r=`&pe)%>*0{@`QEc;kwaS8APL@H3DH!TneM2l#KWN zuIxnWyw9KTxgT|Rp$`oJ8%`6H!UedWX>-ghV`h%Y3Lj?*MbXQPjU|PzUjE;&Kd9u( zdUG9p-CDf+=C6Y;qdIOudCKwx*qgJTQHGFbg@;)tf%Gv?b`inas3w=)6KKv z;pIE8|7wb+CYjVB!plf7DKW1`ILX8u$AQv5PMLk4%Za&JFnD+;q(A-exTRZX03T;o zC3QM!0XEqypB^ptc46QKaD2SnKVW7bINw@bVM@BVIhLU{@1J;HCKFDpdh7EI?Tc}Z zea)xA1>=8v+~XV2z>ka2BSEP{tkFGPDiG$B>F+0ukyWJI#ZD{Nu+!5K$)5l4>* ziPfig-OHJHCu5Bo2z(w@3W5-Y_g}<5zDt2umM2X(FfnQ=JG9KCU^ORt{CMSxXll`V zWX!TxYrc)z#qeNpn$QI3o}C>wx3Mx=;NhQdPM9JosLGK5xVh%W{hu9cd8xmYokMC zv!b01-5-8TGEk0C+os*nCVg?C=#;|vAJAH5# zUfT77EgUG8`y~(4@!FUyaZTa!X!{wQ*Ozgdi9#r2%&g19mY&N8wNBtS_eDC#ScZ^D zt&ZAiCi1*aEgXrRj&ez(iuG&Fu%1pWlUz(nRn8H$ZTr$HdE<7^ieqP}H?tgG?}FWu4HxNAWHvdCjf&!uZ&RGc4qFgjX;<~bbn&xg1_1Lw}7!R=-BdL zhLm+esJUBfL`&xvSO{QZt01=6jX{CL7HG=S2hTyFsHtGw0wOR`j-==4JQLIHq^Q}c zQ|e$1$cKO@_1qD!oq-53pv*efRQpb;sWd_Pg=hosZH$s2U%98xhB`s0H8ftQ`QC*4 zi@Y3L6_4m@i5j{{OM^7i7BFy`GqGP?b=b&?T07_X=@vl)oDGn(Kqq*|N60QRwI&o>No{4-V+%LY-Sh(fI7|oeu{4M0pQ+>36CAC}sR~$x4IuoGZQRlL z2411R3JCUdT!xgXM9jAs;p{c+`nm_XAy*k>jZDVw)x`^&M)Ir_NvH!2mI;_wuJHUG z|D3M*(n4PLb6rc=QY|fCx;*p|?}R{PF!gv6VEd*>K2iXHpNBD}H1C8*px&84d;liH zgEQF61~cG39LJDD<24h5of%0mnozD&aq51Fq#93<3{*S{HasMGJ@_R zj@jIsKz6Z$eAlOr3HeiBdNTJ`AN%?4dv-~dc3I>B1c=>yFl`x_gj3agzDIw~OFUv^ z+cZkGQr_2kL>&ClX<*I|)br`m^3nrsyVJs&@FjUD_Gmzt%0)?_dqEjsoYV=GAhnz6 z=|}$(<*>0T>;o@5y&HC3Zrsr26#=WY4>HFS)4?4dG2}>5cJZkTrC&L8qAQ^8ga-t~ z;YDi(4GC9C7<@-ixCenH0`$ga)(j-tXvlZyrX@eA#}4+SH?x-)M7^vRUYDAWr=(z} z<#5E3V)+(%hYgqropl)>OfttcS}VYtkElBiL%@_Iwf5pFgh)VONP>_F==n~#$w_Bh zvjtH##z#p`JhpsuD~M&k7qjS+#v`+l%S1|iBVfB*D-?wdc*)2nY;#72oW|%ye$+tn zsb(>jkwF@YxTr%>FC)%ohVW3Mcb_s`!DsnvPgHCoJ5xv{92&4-X}iKlAUv@gBgs8S z3(7SlArBe|Zk|`ABoTO36%JF7=`F#am65qK9RuI}q-ZJQjLAUpQHC+AUJeC*0c+e` zy`dPYP^M3+=tZZI=Z$l9`90-q3k1g-^aPBAtkUK}wM(3>VL!KD%|I~qB&(E+D`M%$ zLWf0r4nWO9uqYkMOkh|*A?AEt0AS+y(OE%6$?VSOnExFPRG?S4z6!APE*KH0naT*y zPup{M>t+`h$9D8Pv8(h-oUkAhp)d=@0mKlzCpAlY5(S7KOea!?xkw>;_=8MWdBP}e zvSnZwN+!I^@2!S)4xQgCv5Qp!qIy?u5#NuJFwluy(H<%o0)VOg zOMTvwj|no_f_Nt`01X%YHaxvAf_?6CJ%Z-<>3+h74`r|~um;F-TMGB@`#tQ;#!AZG zd?+=ICIc<7I~n2Cp7`PRTLDzRGh{vXQPav#BY#aE7-R^66#A)9GjBdtyj@nG%1d#D zsm1OJ*-4N}-3IPASe;Uvu6-%JI?8OQEG^YKec92>Onzn=wblRzL>5__iFGoXL?(r4 z`FhLP>>SVAY|f``RTTc?Qk9!%Cp*Q9wfB|ES>OqSv@uPjPmQv`QpK(`;Uh5-kFbBPb_ED6yhkR zn+pYa9!jJAvbJ%KWvCq{C6!~5!&=%sh}&#vQ&1Wev%eN`GPdAc%2t00#+Xya00zjn z6^yVZ#+V4s0nw8WJ|)0rglvKmxpNwPee-bsS}MFoAbnuPF_z6x)RTOzfOq!~vi9RK zO8Em2`R4GqHMZ1ct97AY@oI|lc?|S*J%+O(o08bdU})V&l}S^ z+Ju29UaWY)?yX!b{FsO68}PVh_!5^)Exm?NBi7#lga^T^zQI0Gu^;sWOdUWmo(OO9 z|4UwCj#LNkDeb+A;6IM~bWzUd^>SIQR(8@!nvPS^nqvIk>LcR6w;JdwW3INEn?e8k z0%Z)!X?cB(I-SpeyZZyU0E?1|q*!|&;Mfgo)C-zGy>ubA88$9t2lwk)SmtKUzSEB9yBH7gbaminSo8DQ)z6L< zDDL2i_BTM9^pF2#xGU4i*~(7^4NSKQ=POBt$lMg!h!lugnKgcwvs`)^cS^8I-lJbk z4QlT@qBAVuwS)1Eu-iyFNP{bke9vm~Jf@%3LbfT5Zsr;Yz{_G0HUVHo1c7S7-qr)N zlK;E9OW(0FRs3pm5|fuSY$5z(<*$vvfe>ZED2Yy`3V1^Vb_fv7rnX?) z%}37S4|WJoz5wD?koD_mY0hdX|8ZfR<#o6l1Vxa57A}Q=RJ^C*O*CKB-tCCRXX z=%2*0e;Au{mu2X9F(eHJaK1WhuD^~$oY!VGaV1_G7mI}8k zJsn4+0FC^HflgWb+c3v)r#V?{R|7mDPoj|(G!^hP4hr{9db;PnLi3e z)AVQxt?kmb6xT(5-c$)IIDauyZZ9=vEj}BWwRnCk*V?CTftHEuMO$p{4XjqN;k763 zR7ju-OzgQss|wC|L3f%kV1=reIL)@PVcO3G;_7?Ap!!F3A?{b&->L^**)Efu^!YwH z5#+&ZGmi2o2yqwj!u5UM5X=7X>6xRnuJ%pt1;q-bC?!y_$oSQtighMu{AqtyB2mm| z(QavufO2l*Ge*fph`XFv#S!kDG{GvF6t^-*2idQB^0@U=%b_xzXHW_DynZ{Pz}zWB zQRkA^he_|`7b7+Xixkc#VupTWV5Pp5z8&i*!r3unlb&J+ zaA29vfQ#7+S7=fn|F_TwzZ!&JS^yZO-k|8<^!#2Oo$D&5W=qsVz&; z#LNXI6F9~bTEwT)pD~#nj*eW>HuWR^!y`uk;(8S`vLcQ!{;h__u7fasehwpb<8n=; z`($DSFhNZA=H@K`sg!`(G5Tiq>%sQy9;0HCj#)P4>37$hl_jM>7;vt{mgJ6c*^e34 z;K5DVo*wL8ZVs4-) zE15gKFWTWV97|XRk11FDVHvpTfM5NX{^X3X8nl{(^e?R9H!?p9QiE-47!DX^NL*@@ zZ^o2rs%(_WvTPJSE5xARy_|3MLScsof;pI?3E>ro=wkTe4CR9H*241J5gRGE+{t;TFNYrWcM`FG@J{HQ~5c{4U$& zq+E1#T~y01mo>qCQ}hqzDS|7(sfSVYK&KIIqr~8v^b>2v^}mj;isut&d1dR^`F)PT zIhp6(c~mN>`wNuxH%u2>J7*E60?}O2ek5BZ2RuByO}`BP7Cqa(o*CE*yQgf3L{a}Q zded2|VXY}9KSLy_G7lz3OaSF;g?x=J4~%DeQZ4z;L`7pIb&e1dl8f`=|)}u2*L#JpV+ATg}u!TG+$LtI4P>^#%?)N7p=%HO7Z1EC>N>(KtF~0>#(23UtE| z*3kru@fi~z^~lI~)d3hABazoI{To%^)t^VLA-WjvMcpysc1WK{)nFnOU1t?2UnjG( zLx6yR>4vb%t{EY}JY)C*m(j~!dRYlxg~MOp`3oY5jA)CxIyLNXgQa zfhj^*O+=k-6YtEtjg|meh5K`1&7iVe!3!zlRFmtq;JeN#o{swi+|=L|A^sL=g^qnd7sjAb zxMw#jpV{R?{^+5)v_3znrLq*a-PN(3(d|7IOF+hQ%+9pISQ{(RGK(<01jka!QAKbcSO32szcW6>pSe+P%!rHXdM52jlGX%$L*h5$kjRgUAD_O);JLSQ z{eCL_F{y=p&gG>=$pGqGCMxn@-;)Xzf$8VMX@f*rD|~YampI1g=#9e-J_Oci1v%gl zsD`{B#UYSX*D4j0UqS5NMLy=Aq6AvkK5M>Bn+}2cZ)=2h-dSrzlGloB)al9`m!DD3SCD|cKmBXyBfjpV4~e40Gpq=S0=>vd*9R$-T2bWv5;XJ-sm!Fl6MF@(YEAG`Mx4RzuB>rjmom zj+)q$k+n~jz)LP9%{NMDB=+=p>-L-hdibvC6f5v*RrN`Gui;C8-o5AoOALTZm#nYk zY((oE6tYP;DgodK1X03Gb5Ylp1~VC72*jL`7|+}-SL`#^NAbdYajS)eI@Kb=Fs{-% zRlBL}6BD+C#Gi3dmkLcmqstAIkfUvRDU~Km>^yH@?*mLbrgVQ`>eJ??I*1z96dYS> zrwOQc@$Ss}cE1*W|G8~vy%|eM465zw(RScDzy>`4D@}3lMAj_tksa&M<8)n zM$H#%R0nWZiQvA3_!+n~g!!1>K(<|#|DXn=Hpgw{LDMI}+oKG638r-19!o8(F>O#4 zBs;-+-6X97Mk3<5Cbt25EILvF#VU$w)`PlQs-X*Fa)*x9Q;Wl*l_yYI`%@9)NqA3Y zD%uo&jyR9|hHoajl(EE4T)v@?m{G$S0E0kDJ!36q5^7IUjSF~IVWM3rSMKxb^+h%G zV7aICLF_FOL+%JZB5SKR7|S0dA{u+GE3T!}YuFV$1tY_I*T;Uwt; z0#%1foX3oFwV*<6^GoJLUrlBX}19@yS2qPNBHQFomM z6BA}Hk3M|z@NrV9c=GaAb`g|CmH2Y7TFxs5ZltByW6BlRp?Il6xO_Y7QhE$9fbvl2 zvLap=X|rxVJKykf%prMh6!895AGK2o5(OTy5Da{(Z<*G*IucqEEpoAxHt%uLfq|fr za|bT9(ps_{lBOB0CKKL+ta#u>(eE3y$Wl5#c8uxZEC$sHjQ+29L`%gVIy%8Xlb;IG zZ=zx;o>S52*CMB>SU@n^6tUeI@U|}GX7b0&Kj%Z!FZ%Thufqt^+*irMDE9K&c zvPZF1u3ALBA2Z40rKy|ZjivqzzSSLj!W1>GJhz^|Laccx_}Tg}t`FWDJgdeQ(jBwK z--OgkzF5=z>JyV>)@aR((5zhCgj!7?3;;vErohPgZv0OWb?j*^IJK|^t5E!}XB=x(&#Vhg6SL?2;`ri~Z$hlVR5_4+VV^^vPpFHJ95 z6B<}0S#Va!wYAS3Ox^Z2V+`V2G^iqRIMo#Ihu_D6FSytDvZN{*j zN}0b78m5`#vSuxQU2*Dc)cpfnN&BZjt zPpVrtvQk*wUW8O18N7f5wke}YGWU2r)1S5L>0WCqB7MT_Gb47~A`3+qjaoQ0?s=dyXtVBdjc~>e*B{sgfMAYE5h z@PyygI2)qb@wH;bc_2oen89~<0zY#!^(ht{w`-^WJ4Y-tAJmL(eQ49vl&;Sw<#4`J zP#8$+1}((hqHd6_Ul)%Ll@6uRrCzyA4a!Pl;zHkGwkg~h@Zkg5<2R^~BR8dp{+VK}I~n5*L_mp0pR|_(4AEyQGd}(alZ^cdtHtLJnBhig?(Xg) zx}5(L$0txG$o^xT1MlzOPsg>7Dw?lutW2oB`F(DjHnn23O0ktG{6_dV^&HX!W=1}>51}C zI`4v`@rzfqOv3U2n!GzWs8ji}Tfhl|kC>@ZrVF=r6dzJ>#6skoT}#H#b`r-BgI9jq z&7b%Z?>CW@K&G1@r#UVc^>=)y7wK%xnZ8MRZIa=yqo8!r3 znztpai=S$1j?1`&@7$Yuzu_taouBEC(t)rFlowY4i86AJ~B`gba*G? z3u$>*a=|497ki1HY^Grc>7jj2dEWe^c2thN`uM!Mz+KY<4QjM5zX(4Iy~A&uQ9PxB z#rO(^wjrbZ&Ud1NgxWM+GT^D7EVN5WPX2aG2@)_q(neK^$shnZDMXvlQs9Icek_Y` z7I!`maCmz6pQhD_qY})Tq-4}^B-#~8jY1G7e1Ln z-{~nxl8X*kwd7+=mcI|Z>>K8B(8N!}?{JAOa>rPEJ(M3kropWa z44F}HikK2V4&dhPMwC8IX3lDt?du>`97IwLl(#m|A3!7w*PmaLGAQo=6xHQ#Yjw|{ zI?MmHsdZ2AEVDPN=>8hYKB;F6JrE-*UG3L6%JSz|Ku5Lt3mQOCt%lokmmD>@XQ0Ib z-_S{mJ)tbhCVIk(ESg$FnE1w=gH1C)10Hu5w28(rv{Z2Jw9z08XK^J4$GrGJ#V zqycJ`?7Z$V_6k*9aNqs(AY7`KL+X8la?ANGQo=*MD95XNxxCOxm2mn9wiZt+25X-r z*7qY6>%2pxWn@>4pwEQn!}PqkYnfxG_gA^C6=+L#ZjsRH*Ez)pKpqyuCSeoDXZx7T%~AMqHN(Y_m^!{ z?A#*@H79X6^mZ;**^)w;L49eD-_K|w$u^QKBny1}O(#eFi}?Zc53_r(bB__ujBN+F zmB)Aa#E1#=iiBN4>^~8P>Z`B5O^!c&t)9qutud3Im7`0Cr|O9SaCG+B#S!zh&1`mj zO4*K$x)2G|6K^yNn+&$M(j=g4Z-vv~g@n-->qu9`siGz%?jcn!b>FTn`HZ7>380X21W4rv$hCS4cw zg}=a-#*4AZ!cf%g$HfgoqUd6b z#(31saIr!}l!?rw0JD~{0HVP7cEKnfWvh_hZFVM7rAd@PudswsqD2=ch1mUxWX_$n zrH+a#qU)$+H>qUJW^B!nJ5aY!G5c5fJ@Giz=v|juo%=XNTveA^I3P4fICee}XF29i z!B(&yg=O+I!Gwy;?3KtXHYoih@ajf*&uL#(g1L_zaY;xIp%9;ZC)WmN z-p6f}=KXJ-l=7L)Cta>?w)LAg%inxpv?=R4%Eh4%-i7F}u;`>pymm_M-*}^0h1zmm z=?`*n(tKTdZMl66C5T0-S5$eY1IlF!Tc=aCmXlCB^S}3pfA*UvrLHWj6|0x)Pec6_C&OXr z4+j3xQD^1NyDL|R%Vdtl{<2%0*%psRanSD!cfH=(5HYj}jOvnO1QhTu>w*l@BRh5F}FQY{Bd1A)`;bYt;bUccPvB^1!wRJAW zq%fV`t1Er!^pRE4`W^zsX@EGc2MF{CXkySoe{H zG4mLCgnTu;a}hw9dH5lmPJoC^dFV|@UFpxFC8f|3C7y*n7jBq0if@?Y=PMZ~vcsvkz^cj*D zIuLU_E$zaKT6s!w?t{U7+qJ++{Cyg+t~1dY|1f<3xd0y&V)4y)W0ZdfpaH4K=RuE# zIF_Ub5PRq7TNH44UTgtb@z+aVXoaweqh1w+rYRhT?kkh$g}n@r&3mEcj%p zpA{4aBJzz8GLER)0YffK`^@`@cboA78O{+Pjbv})B2U0aDj~rWH(f05uGx0Lw&P`( z*81!@bw;#AGq8@y)3MlITQ5_LA=Kt&t1u)<)2asrJ1sv&*P=3)VI5Xi)nR+Oha$a7Sb*M^*&mSZX3{T{jroNV( zglgUHb|47b-6$=lE6z6pWfT5cgHhbPIPKIA+KGkUzvic9=~m;iqP1$(Gn1puc9J}? z6*k})a;|J^yh@>Jm_58@-E+bo1g5Z-=o3wJ;Q%mDwC#+6GePV~P;Q03STP9x(>>X> z<1b^NSEiOr3=z*YN_ptS)U&MbMR9A-MG+8_x*(-9(!rjuK0!5*!Jn&YZdyqZs5{E;`EU?%hjUBeM(-(`X;X(q^h4~!fJcmjxZ+@dYT0?;p+3n9+D*#Y`BSef5|{r* zi0UA=9|h}WAm>5oQc&-&EwDZFDGHpma5_KfXFE)_2scM_2I_p?7ez*vO~C;8pZq%etYBSW z&mj;pRhF2>u`}mbtcFJ|xA-hRg;_LEFh+4|LWwc@fy1IG zyHG+3J1I(uNFACpC!p>sm~oioHRv5XwPW0ag4N;z&Tyk5CK!04h}rC`6Q@;bwpaa1YbKQm~RsEf{^0(X@aa8z+J&(!F_i!_+RP z+wm~9h9R=3fDDf1%aLB=x=GDFfx@Wo@~lDZJFu2uDVJHLz@K9tO6F@!lfoB?gg!G% z?-XY$Jvg)a$c1;Pv_W@PR?4_Z1$(x2Wv`98RjCSP^yIxV$A-GT->Ly5c`02KYv)i0 zv47NYk>icaFpLvEIO0(pT%g-KZaNH>R8G_rZ6q1M<5#WIvRMc-vdks+ys(>i&m~U7 zu85NoaBfkjTV3}Of)tw)4Ivghryu*3H7L;py%b$#`1PW*aUDj)pLnaOz4p~4-~t5~ zE-196GQlU|{maf^B4bEXTSybV_|Xz*a}A3#Hh~`Yn&oPgd1d;s=ZAyx@Ar z`SBr8WS4e@vn=8E?079F>1u^`nTSYUs@XE06o7gU& zsGB)S5?}r|Z+-*vVq#hG_4qO?6+FNVwGk%%svSWE-%X7DXMb&rL1+=bro!CzdufF6 zfDb`|Itlj~0mmqT&{213vEnR|oajBPq_OP1I~F2vuvF0Cc1eN$7>F_5kBL>Hjpa`&wmA6*i zK`LX#f>Jeskzofo>$TZv@fd;m+a>yc(oF^G;ycb{(vpxpM1+WWdpxnE7k@hJuXf`| zOH9V0K%_PPm?v;XtOQ5QrmxN@&4CM#url3=P=(BLYCxE?9zWrC9cyRpf`e7oE&^8A zmPAAreAfj5oHL2hR(BOzqB&&|BC2(qZ`()?t0uPCWXE!c)QL{H@Cf^>2g0MLtc)n^ z=H&^3i^41v#k?2DUTbWen?5dLbP0hL|rLu zy-eK&Z1Z(eE9Mu)P!>hl`zO)@Zym6%t-t>O2L6`Bj~>beD|m4KZcsim)5Av@iP;X1 za2&s_QQ(soc&Y7iA_|~$?C23dMZO{|1Un3ZXyR)|93$$OoEZF%;ijc<|1KFg%w$Z> zf5COne%(j0a+eGgH6wAGUBTp$EbL`NTAZpAJ7FNA#|Oo+VBK>9)%UeY7;`W0fxS-f zM??@IzTysvudCCHk?`Bc4e<9%oZ51m+T4jeDB=uba_LNxQ9>7Gt`;>=X`E&O*R#b_EMTn{47psUiq66+_J4KrkLTtkrTLXYxL+HY>J zBN{lUqbaq5anefj!8EoU%tO@yKHvpWSr(HfK#I6uE^d$k(1qQ~a^lQf6{UA`bPh1S zZvCu!jv_*~z|c5i0J3{#!g>!;QmzEG+vY1LWn<3h+-rw1bDXSkGGE-f*;EzYv7{~740x<-v$aXY9p%258 zG=yL9`&lzYDKFJN8Qq57a)nu&)!&PXz={_#)Z)ujXx9(pe_u@)DO>ya$57v#S6DE2 z#sEsUG%8uC_Gq6m!?U|KN>`(Ku==^ptV(L53h*lQTm&Bc;EWJD67pySp5+e=flj!= zlL<9!hxHh2lKI0oX$zrqoSLl4yLs0~o_Cv1RIn5(s|$ccB^1uO*U)o7?4tf^S!QZ2 zwuDEYdfy%i=!6wqJHM?{CEm^l-`OYSXk&YbuRfde-h&piX3*I7$_cq*bEXbZIs3qH zmMsT-puILW8Gsf9m6ul`=tn8u0Y<3~i$FT`gQjYK_l02MG->`S-oHaUIPz$3zY)Mc z)qQc!RZ0q7?Ua$?5uAZQO7sCAr#M0m}{K8kRGFD0JxX38c?t-s;wc?8tXDFWm12~O7ry^9))OQxK zkEJp$M@G`C@XBSzh<#MG1Y;L8?XcdwDm!0>RSpi-+6SDL0%>A?w*2r@QXMv2_=3W=O-pI?MO)5+1R(DL zLU=#l8XyEDN+B;U{DBW1QgXLLeQ}^DOvun?xox>*m?pBOGJrd^-1IKi*N1twfba*x zy(1nyzz2LW<`ZJhSu;QoW@}YLxEV=t4wCsiGs_?Xq4cm|F8m^kcAw)o53Q*}HWE)I zesAqXki%Y(5n~K_5WJpAMyIZV!ko#1&cpD3W0$gnl@PMuVzA5B>qDK}?pc;uD4Rr;J?tg3cAtAe~D=ictr z@vAhPfTn7R?boP_n_jLiiU5K}?xyL~(i&Bln*n9m{N_-RRy23%j_-H!gL3P55kp~j zHyPAF8#z<$c3*$~Enf?6c6f69`~cf>zp6 zTjdD$kKr>LQJV&cm(9H6V%|BrC zrti<-Yc?rCn*6|;ZUkg)CnYXROz;6|m>`SzCsw#tQw|Ue&FdfqV_Sz(jV}!nk&+<@ z8WRyzidm`9_V;{SJQ8xnSK$o~8jXnWnO@KVVjHiZ{`~efvPj;oqX4bM=Xoxiitww7=-ya+HC`7Dpqe% zJHTV|Y?jji+|!S2)Vt>vBEasFs5!GXwHs}y_Y-hvyLodDngFKw z>QQ$oriF!}Xs?I1e5}^FG$;TN6G~RRkSK8|v^zC_cC<;Sbh6TkM5?vH1eOCJglX5V z+a|L16~J|mL4M;K9V-F2=P9Yd)rU42cSp?U@m~&1E@B3u8OY$Y5Ros!M9CM$f8A9GetapNa>w7+Dfpat z>r|2=#j-dI48@gKG$Uy1d2NG zv7*zc`D5dhoxJ!IoTwBhv^4ULNU+;o3H$PGM#Laef9r9Ih%QT5?m!m;=Ls)3lA(w# zX=lFa7wuxq6{T0z!sAfiIedbFca1qhA_}hDG?#`F-u>@HPfcu=?bTvYp1$gvto99<8F#}QIVp| zd!i>roMz)6f?!?m$D~*>E9G|kBo^LmX_fNg9TkH}I21u6ub8JlBt~CHqcsF9cvKq zW1M`(&y5&9>thWL`Iu@xc>uCvDuEGbB@)sU{D5;j_*{CA%{;+xlQm|IS%YhE4X@!f zv>VY6cLcI&9{(enkmMs$ifN5=;xfn#5>P38ojl*)QrGy(s*mB!t_aCTHP8a`B&m}` zsKI=`aaEk=eEI2vi$BR9y8IgVTaPXd3U)%ljuE__Xy7mVe?PhRs3oT(T-^6 zUmqSn+CTWs$x$adYHRiq#ec4h zr5z1`oB4z*L4y!5NIX81TMAZ;ZDgCrz$gO3w060j z?^>F@DeOVDtJml=+>b;-5X%s<&lWcapWR_NOUu0u_M|M*77D+2B17fKA&gVv5p>mk zDdv4-An+!V({OGdc911bqq~YY{EP*LO08|Hc6cb&yal!HFt97tn#j_!0X4KvrpWcR zj7O4TQbu75>k_e;idbmk7y#XpB#GqN)h8`W!hq^s z39+m6wdi$_3Ci+md9p@YfEH#kq{w;Join4R5tD3s?=Er_NSoKW!CAP#4nrHsVVnG> zj9L@Vu!!e@lsU>y*(C#xi=Q27Ul`-ffH)NrRPSt^OUEdN(AJ^@?21b%wD}rkris)y zBGM8FtrB#W_f20^)uI#^hfbSS+_e0qpV-0qvg>lUDN^e6?YyFvW&g3GK)~+^A3ZSE z&iLP5+AE;c>n#8|K*qmZxn9Qr!lxxy^&fJ=WfQw6RZ=G_SHS05%kJZHt+`(PP? zP)s0B*P7*Ji+dLxQZUF+ZKK?*3w_fDQ47Pmk@9q+Z|m=Yik}}o?HoD83Gd7GvGF)i z8g^q_$>?B^p*O;$~+#j2Bf5dg0|1% zI={0D7w~MLNiuxk6LM*pvL528kgk&QOMbjBL(RutA*iL9MW@kJUp0gJF{bJB=@QXb zR3Mzx_%wRU++b{t>8skzXMcsK3zf@ zR=R`YJ^+i{=r=|Yxkh;1m|<#aXa5HQ*5ZdGe>t%aN{J0Cc}){cv~+kxrhbd zE;sSUw0Mt9QgK78eb3nL8zlQ80dim^|034TXqJHy)Aw~|M=h{Kvvwj|ootj%H517F zbj@R+$BJs7kV5S`dnqdP>A(O#L3!a~O_a{wWRhKkb8hm_A|Px2N^x;xdNqF0|3=luHI+%do3bxfm5Ou1&!g@2$`aI3j(59*lF>` z@=je)Gl$eRia<1Uw4(C|a%hN*K}tlR;Z}Ak#Q-AWd|LRBG-(Z`Cd+J}V9DV{WG8I{ z#S&eC9<4qMGg+4oa!bH@&t-M-cR|WXNXgifMKC1HtZvYVJL&DSFv>QE71IllupDmX z>uD8Teqe}az$QI=t{-Gg@<!)_b;5>>!$a4a6bRj^;bWj+g*3l|2n?+jv9atdJDn* zXzAp%1(pT%O|=q95F_G6Gdx&PYfa=2r(adXq54m{{|B8g)$ug5WKA6Xgmw?UX@ZwS z>-5(n9J}+TzwiI~$*N|d|3*BiV3vj4O9*1wmNtRmj~|6j~)Ypll<2%)I{Sf5YfnAO9V<21^OPa3F+RNta zzxuap%WAP`1f&Hu78&ZnAu=p^A5JE=K6b;q&`uT zDtaABae*J=2utM@{>uj%OgdfD6Trr--%Gm`Jq$N+NM!WMoGoM(G>WY{jr+i2zL)|# z=0;&BktUv_R~Auueb%Z;mTJPqU#6pgzk`bEBhrzK;&^MSTUyp)BOeq$!eBDmbJ{sZTo)2=m`%rza3ZO0ap90=Xd?FcU+tR6#N1AncZuG?$L5-K zvnn!_^Zv2C&uq4gQc5K|JVesp*H6Mi!byC6p{HV_X*3rg!dA%5cSPh}$aaQN&spvl zOy>_`bu>I{cbX~(GeL^;ZfBCP;|e~!gJ7FSJo2(oP!K)%C_2MU!L^GO8OCE9S6oL# z$CHFw+9emcGMW*`+MF7NA-lQf`eCu4v3j9dzpsQw@!J8r11=5+XNhj>=aW!$`V+x> zNB7nqp`#=aO(24!8~(?j6eJ7~Oc@cR*_Il#-?D9ui7;$L<6<^WVPQOmz@-kMO6I`V-1_JJaq%e!}bkVPlMS zh5^?cDJ>8Tv|Zj3dLQ1%pj=;2*V*J`jhkmpnExbo|Txisjd0-wkU=Iuomt$&>kU`^gtEOK^RU8YC#4!%2q7xN0T~RCAuDiC#$K!c_ zx7^D|^Lj_k$!s+`sP>1;>9JY~^AwH_dAEW?(bHkPXMO1`4Ji-TImxpVjcYM507P;V zuYBb%mxHKnT0<18UT`2=bdgxcakLK|rl4L`F`-&pv(9hcc zZx2EO-MtOOn|BUEtDKa=zy6*W@GbPUW(&)`|My^91bawyqWvAYN5?00e}Vq?nO_Yi zuH0sKZ1N~4ycxqZa<1=B85}IE{yzUb3SP69m^_xbbG`n(iE$eYL+piq1s9C!P{@}g zBV0)WdifBe)ntLL9{#inB2Yp9!4Ptkq4;}(KKCp7b~9wM;o2ADU`j31*34AMxFTfifGbooW?%Xp2*el zZq|gTb8U*{*(FP?e7C8kV!i~o>v(s2;n4Q4oZ3z#)k7yg+f%yyv&DnBlaGNXN#uWQ zMZ~M`Wvoph?{9F?fO)@R;e#K4yJd+O;2r1D2YLTneJ!Zpgr^?H4urovXgSAGY*@h< zyBrwLVN(22R4S3KVChQfg*`)t;b;_}St|=O;6Ka(A?wG4!YtF4OD?IsjN7H|9&<=X zqD*Wm4y0UY2KA`lc*++80$OtZoqli|JU->FqPq?vBD;K7fS*0qoBI3<^0ybF*FW)@ z3tvo3w5&mJQcwwNQ0FxljJ65maKVSk5#|z|XyU<;Zi#2T$Y*8j>m@LVGu~+UYSeRn zGK&L+>=2i5Vtr^Aou*GAm%W}|ill}DpqU68v>QsIc_RzIdDl`Sl3!Dlpq;d|>Zp(# z*7qal?P3OOJt1oOgN={zCAm{+^ZbLs8kr@H8%EkV1*ieiZ`p&(jjMIlRm-(6mi72J zZ(LhlnbXqeulms82kywf`{X@EOoyc)w!q=6&YZf}xggY{Keztf>4@#U?>esT$AQ@1-*3Z>w@P%qOJjg@8iZ@fUagPWVN zq?a3Q#>{U6&JHy1Z0by@p~~~&`|x>8T7UyPsAp0+cg1ZOy|9R%*E-TTVP`*uLu04< z=(=4(NM{ojW7^B#ISC#%eDEkFUNUCVdl#Z*#VP&nMP53lwB-s+b-gIL-q!Obd{jeJ z7gZsk$SxyNGp7Po-j95=($fDlr~N)^3P&>ym)cW=E`pU;!6b=SFq!i(ZTI#F10H~i zg`0ZQ5Fn)F`i97=CJ1k*a-Iy*{w0Ru-3{)EEb%9d(fzon9zEM_%1bOH&%J0a69u zv^DNls@CsB6p1axY?l>D2iJn-b6% z%iNUNT|pJ5Q6N-^PCUVb>Czb?r!pNzPI68kUM}s4Ne3c;WVRDgK7@oL5}5wNFmtHX znWLY(+Bspud@5Qbyqs1@MMLcQXmB$p1t^onbDX%9@ z7nO~2fBelsDn_bDFzdXZHBX4296 zsDb~d*HAgy>N~}f_JZF-kN zPk>#&`l7tM>6mft;`zm7tn#e->Nm(~jKANMEDF8(fC)Z*CZbBfY5V+Q5KVHvuW4MUljYx!?|dRA?Oi>+?Of@vj9QB z#RQWb0cj?eDK-~rN%e_?Y~950ho$z&(NaZ>**9;wa3!_`o+G2E?zJXlBA`~s5mYlp z&=&!)Os6Q``RON@k(A23JwVi@2Aq*jSL&!-&eU}m1Sh>kyOv(aq_8NMpLw33Y8}NN zeHpG{M&WgQg#|vt)GJu$)>JnKF4BrF-HN_*iok$)ebYT-x&L=9DP?9&sjECKtD?hQ ztLo+aaDwCW`$a`KS)D#=L?`Ek(HFcXc)Nd)5e<0Hnw*ZD-`YTCX)WBi{ReE6=z66Kk+hUfoOhn;>jwY7N$HfH3gr)Lv$<$9#%PR(Y z4i^bZjzjM-I=wWLwVXV~p*eX1ixnRX3{Z8g5oz^h8O;lj3z3be%C}(E5Ivi+1^1~Sz9{L$ zgzN5H*Gr_X>pQS2v-WP3psR;DCASVU+ewt2>Kjr!<6&v1$S5e6i*niO9}P!n>$Tu8 zSBIcl#yN=b0hTOJ+tjw-A|iMo{S$NWF@GTPX#7wkao~E2LOBmz{~kpe{4ySGqAK%7Q6KBpywemH9S6D zonw%fzE9FN!eo*-e@+soBmojVat~L;J1FNH!lBak(tJJ5a(+VdOadh|%=RFCOzq05 zDau(Y66Nx0aoGeBEt=}iSee<3Y`*MvW)wHEZ1M`(wfDHklZPr} zd_8f>qHY;&O2($(TEs{aq}Ki!B{$m*bBl`3oK<9QcVLP2Fr(ULgR*Z`^oC^QcD=No zj&d`xY>YC@xUki&m@YqHVz6FR)9G}dPU|Q@QA1X0HXV0bmP=~_C2+3JvPU4&Hei^` z-8;}{`c#1QAB0NE!~-F_23)w5sz=TVFF!69&B%hok0J${JKEk1b;)*%l~_r7?hqbH zMQ`C#8V5;I==7&AzQR=IYD)${tdex8214J^LT$(_xk|KamiK42mX>3C!aU| z&x{_XXQy?rNK?hLRCxP^jfao(AFdBFnPDGjieRY_WagU63^@hBs2z$85yw@#d+$3K zKErpI6b^3F-dV}q>gDJ;i@KSVNwr1Stum^~UQTm#X6=e=QFohO^q9aXgfP1TpyOpe zcg)BgKEcrTs!hr*%&=LPD3>cQnx$#!Y=<{y%~AnoS*o9xEF?zh+B8{^++?D~3~ars zlz&^&eaZZ_Ce>m}PPSxBsW-7mnomP2-Gi1U=xK?ZaUmy$jg@W=UE`DgKG)vK+_@&% zqpzhF&`oAZ2U_NNIg4lal(s}j;_1mC{Px^EJ@-?wEqZ_bEhe&$BA9Yr!FIP>ec(`Y zHZK7))aNh`z`?&w#F4)SAOnX$iH~`VtSwC2q6pmCA4LvnvO;lw#gXo-H9)EeG|*eY zP{yqX`>r~Z!wZs~{QvgpH{lSEw$;Chy8>``+tg{Zc0s{T~{(1|> zC;O{) zNi{qQIN5?IL=*0l)D5zR=D$209q#viy(54N)?I$rQ391KMIS|YXanrX&eV4~cuy1M z?9(9gIjWKDcun{uVlv$v`>rY8<_NAn({%~L&KTv`f>jQy4qi?(ZDbzH&6FP?gGil5 zlzW?M8CxA&0qc#|uJaD!({s)|)6EuNP&X#g@(kPwaOftK5w%y&Nwc=Eq z_>epN5sRM$)PBp1`+;R_a={r+onGO>q-V%WG2)m=HH&>`wqHJsrDFYCSEvO1Ec;{v z4%KX{3T(@>GZC?-PnH|am8hS4aEOC`N(ahRnxlvS+v{R1k8JOU1!v6qaop8)N&#L6 zFVgNThdbkZKu!T#UHDySI#vC5U?vLLS5^Zs*sCJ+y*{ftTVt(O^x%|CNc1**nb~&4 zH^CJ!DYYiVv8f0UU^}ccTwe);00B&k^m>>|_k-DGhr@4g8Cx$v?_|W^ecUZZD?HBG z3Qdcn%_4Mj^zvwk1!xNWRc=*~w6#~d*ZlA8MQ3;}(E(YGCS}T!uh*RG*OR)Kdo(iSKcqBfe>Ix?54yUl!j&N7=khsruvqY zUZpT2V3XHixP;IK&a4pUnqEF8fi{H5q6*E~TMZa$pG#Y+Ji++VMKnOstivs8lQpWG z(H4|4{ZdT+_>yWqpn5bHGO$+6gB6^r$a&h#VI`*K0+#V~MF_q*@@f6t0R#W?Xa5|8 zaZ)>{8Xn7e2YxV#4n{uwCv zTp?l?n}7yf8OXW|yTQa31q}2G5cn%mGl`=9@q3{PG5T?qVG~Vv88#EA-I0t40U-}C zIdg>2Nm|1fB-4iIAHL5r9`&ZX44W*p@p8@{t6J=S_Weyg#7$`90*lB5Ir0LJXwQFQHi{ ziR;5o22Kt2#L!xnu)_l&*s<5X%u)s-!kLNl_784I^OE&X-G|jtu|IjS3BvVTL*BxN zoQ=qz$bskDFhYS&_)I2w^mcy|u<}Fcz%q%4oGLp85=f6hG3X&pO79)cQ23NCX9=n* zOhBkzNsZwd+^`7s9#XJysJgOw#}ZXa*i1asF|?!GClhE!EO(Z58kp%SYSE4U(e@j> z^QvE45njI1369s?%sB0NWMlgj&gyxhy)}CPU{sD3zfvc(Ic_iILDMgqt9`9K=W}W{ zNCWrG-t$mP02!X7G4W+128hWOYg2~6lgde2xZ((Br>F(&VjDAS#JqW&p0j+lu^zxi zW9f;rX5nxqCi~r|O0)z(O-3O@KWVo8JgJq4dA9rvq+U)4KQK|XMe&0fQOLc|U?E6Z zg``4}9Mk|FE$Lg%=5u7J5s1Sw+6mYtWu>+!B6dz0bm~yiPiOEbhlG~Wg@PP?z=Ghk zoIB!iuxJs|>0nAoLCF!3ocl9@>&(pMolPm6ZZo{PsS|etl%QuX5-@?4P^~-?;^M%J zj-Q$l7kzQ>S6~wIFa(Jf1sFddygf+c~2W zp^;{qyvuGAEWk&*8Zl}9gt-!}Af{V;wa+nBzDshEjGhcJpDCZx(cqDRD%R6Nn zvBzdFdfa`;jT0qTMDKpi?EK2?k`AY!+RF0E%uM`FyG9rM@I{^9R4~^fu7iyZW(|s7 zmiqkg0u+T7o-=j&OJFRw0q}dm#W9mGy|)D5fO_}@-{ccc|+f}lB{y1aoP+%8sp zF4pV@C~!wtqn@tIPy4{=lrKYlva}^LX0G3M*^~L&7p|d4CgKf^vcpT9-*tfBVPTt6 zQhaTo6Bl2V0|Bof;O7-#7<9pyE3$gdJyt$FeXIimQ!Ty;YlxhG4hjXg%A&O+EaO0be8P_q@s0nSE>{gz<@c+KYZ_8WAm2G zh|CyzgeX9bT|`)}Z+fV;hXxq!355H5Mf@YgnK={up=xotNgmKwG7bTHGS|x-6a0gL zp0e_1@<@CoD@J!@usVV-jKzJ8;MZpR#wfZkSK&-yzP1*fZ@24EW8NkWB(;e_3M!_Y zRr(xKaVj3y9&?q{X^rltMSkaWVqoMd^m?+{6SjxmA+vMEG4sb4aWuuEHF?uJM2o1( ziAJPs8FdYa!8pVS!KMGd1_=lC2zFw3c*=>Jk#QJ6L?iV7dv;XGh6gXMs@mUtyHSc= zFfr=8T^5*mXiXGbQ;eApxEdi{j#jfl-_$zP%HvcT;G(ef>v%O9j^};<`+s+3;nbLt ze5tF}mF*%eiR&{;pxwLm-=B;*r#1>tEqk&O#^{ult@}@C0jL|J_aogmIPeF*wJ3WV zT*05e|L$WVq&v^o;O>I^;7P9@WaIt6Yr`m`9^P?Kdfh#MvWO<25=d9N=Zi2r7`vG2 z3FUc+TTHp!#-v!Z86wI%)lT!$vH}rRwpF7?20y}zc0oKcu|g|#31V}JH4zt;qQwr^ zD4=4ng+1Ak=t!^putMKiaDarUo*v^^MTIf!bApSN0e;d&H`$xpt)@_2s=uu*E!|+zLVF9n$b&dZ1 zLk_RQU=SxW=5SeiK7k=rN9>7Mmna8RA7fcjS%VmHX$V4cO+04D*cgz~=YDi5d#0QTf?O{Oms<>Y0g4z=H z5r^Qe@PozfJP(+MFP?vH9Q*EAo!~X6jBkBLdH|!IJYJ5w}SIcPLLL+>8*R z*`!CSv{)d%N0OWkGWBm93qfzGR*Bx}JF`gYF_d}OOTbBLaf0*(yhP2K6+6$2)_(9bk| zY4D$r=qxE4`+`hSM?-^aFlV|L9T>ji=)$ufmVxQ5HV%9;nKuW~;g3aI8h6O1IW z><({R8|^B*vHfj0t%3OI>dV$?3uTfrY&x6uS8tK38XuyoANBUC-mb=9O%8PDF{YuRO%Vu}DZm-wASwFB= zyS!tI^;c`rm*4OX`)va)Dv7?oJhY?|y7W~=hueczJY2l40Z3E>)GM zBm&P(L{`IyTGb{6zY>WZ#7DeeS`^G@-D)D+R-a{y*$iGhP^?omp7JXnc~kQt(#iUS zQQbaNs2$m6>mc`AU5}Jqjk>pe7p+7O)#OK#0v?_7iG8~Y&3JVZZ&3VZr!bjD8XQc> zTEDc1A!7jBK8b}5+cN*^`&lMD2}5%&`P=^@uQS^bYv8}3BYO?e_2q`YMtul_}hN?5YhUrP=JOcM4mi+-8ON9u`f36iASwbwz0VV;ud3OI77j?si#qGD*X*H=~W-U=0;F&n5`JadLoASi{fAxJD(za z9uFaCdfm}sFv{@}eGKiaR^CDYW#nP)A~_+`h@d3n)3!=O#O**?OjZ`-CYKmO#~67} zC(U9#!=qAlGOOvUc<~M1!$9VYz(r@?fJxze6Z}>zm9KA3N7v%(VO2*eIh}$L*XZ;G zrUIbFid9YzTHDrlX((Xgd>i!owB$S>2(DeHp+zaJbXC1hz!$ihvHrvn8p-MXoglKY zvD7Z=kkO=XGGE|YM(X2iuxXCK+hLBcR$kMqd1-h7d0llmn}A*bYm&^h?gzVB2J$;Q zytH<#CK|wN)JuUqO9T(g_hedyGiH*MHCy|WRXwe`k4i~Vbs5-2Ii=q0yHwJ96iHDr zxN2*s-92rXl@~!Ibv2+&^M+%vWyzamInDbQ1lnpp?zHW#VF*7=+Iht=_@tAhq`5}s zl*ebvXMc41tcpInm)ARVi-<(!5jPx7Bm~wB4-kDI^W|%lLSg+0se@f@C>aTB>%l=l zx9-v&m)2r4NBH5;ye&+ zvZ+U#DqO6F%i}-p{qT+2HWOoxf;~VV6$Y}9U$(O<)wQ(smAr2=@(s1&S1{>F8?M7X zPF6l4yJ}E7NN1j}GaKvsPc;IUdl-CN`>6s2x<1Ek@G($*yMnKAEW8B!N@8YU+}yeE z?*+Mv?)hc%k$0)*9_@<=o!d^)ts4}Mi3?*ZqiWXI?2{cge5Q>j?;GsDb!J1+65EB> z>{hPj#!N(L4Ef{uJ-0Hf(BnU(@xyJb6?2z44dvF!meG>NT*!D@r%IAV<_aCk@Z zXQf#;e6zZvj-~8nShIP&hw7k@FiM5nd>U(7u<-Ci%a|wSq{*Y@?WHhm;aN4keFETq zHKx3wlmsbcbm`1}3!z<#HVd}@7JeMSI=_mNRiFh=sDMm{#*o~%tvCWpF@B`SZ*8yY zM9xhHJp$?aiK3y1j!8;7Or)F$vx#~j&XcDaSX+0RvejJ2+tiT7DI%2xD|}B#staL& z5=ets10Yc*b7ZTbh8OL~bL?(Gbit6YsHtWoZl5qgJAD5ZaEgGgs!qFA>k*Nc4UHLf z(B_#DMyD;*O#^qxA4SQW2z0M>BjT_nVg^S|=d3%1O%PoLEm%jFjD36JvHX(#W4YZ? zF3#NVZO0p5e|3GH3U}?ch$C)4kxd3-lDY_OFoK1|stE5hSEZ4nLB=0!~3NcY}D{c>0* zMBw0we>*hqjMwjp<*1-leg#KlX=3&tT+-y9mF)p)QJQ&GV?R2>S;cr=1hEe%DRHBS zavNn96`Uqi$YNTLiSmKKp$M*BDDC_{c;^ z#dYZ78qA1L!CXpC(20+@-4nLk}q`Be$ z{|fP$ap(H(0y5Lb+j|jVr`oEXc6blf_u5e!YEJ!%V`-?X8K$nZ?nK2%x74VXtQ)=` z{5Uw@{(r&qF7EQ%?R(T5h?(bow#penrG6^MYBJHw-p@^8Q7j*vPMHgYnLWKZ0>N=0 z6~yVN#MqG|Yf&Qt??7Pc96@yy*&-c!T;ccAa4RPx0Fo7+I=nUm_vxWE;7j<3M zu?byOb_KaLF0UR}lXvmQEXzlPDG@s88NRH8@pzhOh-06_cj+&8_i*%D_-i@zxM4MV zf<$gi#9~9_+j+pI0j>H}RG?bIxWA~DYr?Zo3g-mc7m!KDCj}&r{u0nwG*=AlT;l;7VJDXkeINdc^=5|NIO6qG-vaDrWRIWg<;6O4p@ z!5}wU`e6M<`q@N9mSY}^Q!jJ+>Bqm#<1+i-caU!v<&0jOy|m3Q9;3?ZeEH2%S8LR` zep7kv%Sj6+4df-z@?PbJ#F2K}^89x0mu(B}bx~jXTl$Iw4(ipdyW`8znxtUc57?HC z$-*51X?ZgXr`S{%$LIGCE;@OVrlNduJFs?M@@c5=HFW?YnJQV`vF zT9H|47=*ZDw7;CH$^6)mr`CW`g~FXMlqcu=2Nyj%jIdr-6BdjqmHldb^VUDiBNSSR zeg!GyiF52pOxXvxgp;O28|NF^@6>zeUqQ6y4N zj`uq8x@(8@f<}QZqk~R`oB~BanYt(9b2i<11j6$Jn#8k0&L-%$3uE%+vlwprxZQWN z*~4svTaW*F=c7Rhio(&%`jUGZBN*!4;rgv$03bpTIZN#;BYXCr^eMp%(BKxlj9q0ibL4;sfW!A)6o)UYrz9c+!cmooa$}_f%kQ z0c?i}0_Q7+9Rj*zMjxMsATBSUQSG@E_tnIg7|7YtzD)4#o5}ZgXkF9&96eJ$;xA}4 z$qq9}gEQ?iqBo`HfA8AW9DE;I8XNIP znXm+T+aWdSdEuev%(v*p*?w3PbWakfU$stUErCgdfNm~^r)mM}oW3;sp{{N{{uKLS zNU69Y>(v5#sh;v<}27mTD<|xvJ$+cv~${>#H=)84G-tQH(w(X})2J z#}8Oq6Xe0m$Vtr+*zMcrnDui9b0ceyX9f`+W6{+iGGn6t&ahtt0W;__#Rvrr?gQRf zpCR6ZhG#q-TB57G&*@sOC5P;fsRoH_z+fzI2vp$s%7%Yn)Ax2vgF)$Mf6$u>kRZ#o(N(OyLOUU z{%+W~=21(o4y!ATRbH$-cJQ=$)C~L$yh^0y8Q=LPKS^$So?UGScj5eGr_u$r!be0-$Sn)s3LtDj^ra6z`n10IX^`% z%BvMV$&ZfONBy8^n!q~^MsaLnwRSB;kn)a%lqz|SBleF<9DrMn(ye!*?}j5qDM98p z6Rli`~04q0sW&%(>cO5T8C=={%U+JZ=vQ1=-I>pOm=MGA3hc~TVFASWI9ql_XadYn$; z)6kiu?F+Qgm7gL0+jJ7Hp;eOgDq+XL+CV>1am&*|ok??Q^&1WriW3N9?NlMV)tA#en)rwsotu1i?UBmnSLew# zb-IN^9NCx#gNgybX-bj;fttG`I~`)tVJ~H7t}sR!xbS3Nz1%*10bT(_`2^h?dljOcT6Vp6=XQfbKr15DHU4B96B41P~=ppID#POce{isyJ-;H8_mFVy2Mv4ALR*MR zsh5)@x*WA2oTucvl_qdHdnx@mE?Hd>Zu+}+j%eS+A($6 zRN1yQO9_9p@?fieVX@ldGftcW=QM|}DC$+S(o)uEh!mPry6%5mQQ!cZSID;Yl;eZ+ zqz9P1w3J235V6dd|30ErMYUn2q8|)hc^m>h#u^=utLG)1t;NeYsaP05j5TFom?7*1 z0eQO08p^tJy2((rH&rc}_^3omLdl5;i?I!fvwi4tU>W6w)QJXLut1a7Y-f|DRvVZy z??CrgfiNpB8Wmq%-BIdf@`BtntQWDASe7jfU(dMbdi-69}53;?Syg%Ibs5JG-2p7 z_QTatO;wJHC*1rLL@n>i?(1dffI?Tns)uPC&!EWR58hMRpccHMu614BuI~AK2G(@G zx+s1(fAOZj>=U1Ok_kbXcNKcNX{fn_K@j9o@P-Dx$FvY2M1e<3S*l5KXCYB5^U3+H|Mqx{+GQsTkc7dkUxv~3P$;K$JpTz&O6%Yr-LbFF^# zcOqVEwcjek_9*b8hULZa4a_y@GTkv#B?e4|&M(p#Zy@yRdiR4A$c|nw z8xN1e?+|X8n?z4p;{1H%gD6n}@qpR|yzBh2>n$Ai`(aEl7%a+Ja672wfUUW8NFhv8 zW@6y+F&B!Q+$`UL(m}Z_pOfbl&BFuqC6`Tkyi`HdVSI-Y##t-Nh$=_RkLqqFhk|q~ zitwh|1x#-8J)BnkH~;wkcQ!7nW$iMt(2l^} z=?{wx`Jgj`R}(`8yh6oZ45o1Cq7Aa;C8YTH^iN^VFV@P&@;fcMt@315QZ>9kpS6Wp ze$vAJg)A1m0zTY8SN6C{C7mb$)8>$v6~e^8F9Wa`iHr#aGST;d z)W#$940N~k%KIP3@^2ezEqWKa^9+N*la+=4zfuI_ujV&D!;sXd>LwH0waBz_g#{8V zV*rogC(R3nd`~(`X%*}V0gfPdcD;`o1tek6mn~t83H%?4l2)C^q(vPuXPNMcE7U%j z{_Uh&d2K8qEKF|XA(@MM?`b}X;X$7?sY$MahA|R&(RFiARWjDbCYn+nCqc^FL@@y@ z$z>CIX9Sf6&Yg-#DzwgsQY`KkpD|VolNAKV<3=8oa6~13M)1EEnuB;25v3jqjAJ`P zMcgHrRsusk;wEwXe#>f9*J!l9xJy|;kiHgRW2n6}J2^^HqPKOe+v~in&80hcVAXc~ z9Md6MQ)*WK7$g}itbAM<5lqgP0O;tWo>vb;RrXXLTWZFQxz-w9!b<|uiX2yyPPSUzMyNcHE{ zN;y>N#r_94gZP~nn+mB$jX4P?x(n z?IvOp2V2G4V6dn*uSSKVvhU-7Q3O2wBNxBv{*RE~3*YePS!*3^;NzP=lP_I=GB|RI z`2UX{__9*lP%UqoEHJXcyi`JJPm${LW*&qF3Mo&cnRq~DzWrTG7`b`G2l(sKjHD|O zH~y3f*qkjUYV8FqO)Z1cTqh~HU5HXTI5%)Qo02{H2$U1CR(6{);R8}KkqoT0YtE)g zAC7GEEMhq%zENW2jAuJqRHTO;C0tJ0XxVKUp!*ReaZVa-C5Z}1F9L*!IcddZ2&hYv z244JUHHjq22J;nu9Dt^(1Sc=2lGhTGtPtxeUj7q4=rcyJdt9D;tFm;LS@unCk>YUG zLfRJ)0k(_xOwj^ixt}k}-f2-X%K13WHeoWGm0$>bH`3)W+OqJbwaIBbec2$v&nyD` z%#3>(4K?Luv?lyU+0kR>a6c$~`mk6xyku|-vZS=>*^oIiT}Y!LhMFQX2SHN%{GWow zpq_CNi)f9M!j{U)Wjq19JC(CWe$HzwfgHgUeTw2n)~zCrsnW`8OX?bLdY%l2oJ+ja zKKFxOGqcN=-2>D|haJvy^oBxYsIdHr`L58pC)JA2ije&PPF8% zD_AhRBu_?Ut{7!&7ub;sV9#_3SSkRu69LHP)Zwk>aOqb>YVR&@d_}tPsDq+GRp0Ke z$4`Z9n|~|H@%KW0`3H`Y`J!F+Jbf*!ZPZ2MF#5GSOnyT7U$X<@&08>D$zaK@>I?1^^C8e_gbJ-`6DXCc|DYT3# z(>aLf?b`1g?!WeXsRoQ!&yAcdb@^d6D4nybzp#0jqAeFLap*;8$dgv-0Za6B6IZ9a zC{N@XuzvgW7a16rb9T91KdLv({FRiJ1)UgdI(H2a!b4K&(mN%UT2qZgSZv6snpiv@ z?6;Ls-gl;xJAG?l)`rQ__GRM#G|P?ofnIi|`TSUk#*q*wBQAL)9;+-#EV`5l@8PI5 z`+(Zw>41i`giEEqu|KD`zskF$5jOd>K+9exNcJQHU*~Cs?5{+`gR?o(R7th+3H=mm z2!bI>j*=xtni}#9Wa();zfk$5r01TTV^EVAui6=9edn*Q8+OJ=np^bLzxS(U-ff<+ zbuwkSlZtDv$ON4vZ2)p=tJ)cwv$dC+sTi3mwc3s9a^i$F%M@SdrFHXtjp-ZcYrjL%_8XrQHS=9KH zi~v`yE(2oAj{s~}4t-1z_DP4LkD}%)wIX-faD(}O{`M*U(a3&>_f1Fc@SBdqk$kFz zU3Q58Bpr{#euxXx)^bDU5WhiSnu+zrR%-Z2t+`)eE1th?(~iVcTfB(>*}pgfIE&Ly zUE5zH=3>swh^@q&JRAyxNRjvdPocCnif$sFmNDQu?x6*lT9!iQ+G9PLV4|vD14rkY znJ6Cv#xk?nQc*m2z_15r%DT}5N?rYrSi8vH?Y5fD%Pv>T8zO)JbDUQIooYA>X$bdA zS%@eQ0z)L{>~lRYu+$4fh*!`m{Im;o*28pWf_h$8S4acb&|PxC+{x?ZL`(tGbcLMN zzmj}H@3OF4QIRCKT@e|_7Q(3A zSU^KP28~@|>7+ORADG+G6>qufSLHWQuwWWQoRO~c*_LKhFxFIgU-eUvY zFdLiNuU%=oV{jNBlx{)9-TI8*-L8|7gZ|yy|J(S>9-8{ze(?UznOd z5%;^C>uY}tTHD;K05$LI#KGDpZJo>t=hBM;9ci&fU!B+VLt^@Uaq9iOw`VY)1;^Mi4PR+g*AEYgi#1dU_Cj%gY059-h3@kW|wXQkB3^*0}Z z)>X}C_!BWFcxHapI_OAqKPNqKJS-@oo~WKE*@rkhkqXr-)Czs5|Hq=#D?W5Qkj#!$ zkYsU$c_)Zc`TY$qH|3I8&hD45fK7w;K@+l3?zdNPEb6LsWT4=)wxb?Pk4L>G zc&6E_Dy-t1XjPo`Td>UTfpU(#;sxhdgI5sWI-W7$?XVk8h5dK{CZviz;smYtLB9!i zlG*LsgMXb0LPY&!uLnx4hia_I`M6p>_3@3EhVO|74yCPe`Dsa z=rWbG^z7k*FOcW8z;Xa~BioVi%Z$l1r-g@ZMEd`mn#l z$cRZ^eox=*&5MrQqZL}UsVdYO?(B1ip*7S0Y>`p_B@N25FCV~E;MpXJxD3>*#6jbN zID=7Vt)wJW)n`T$Y4(k5?vEVN$H=o~4CM$$j3fmS+9CI4$<#)6q-;2*i;7U$%Q?L` z!vn|8F<4M8Jn0wnOG@rcXCG~4bJC7nCT+;2j~Um6jqG9Kh+_-u`f9D}HwlDf^o~@O z^QE~zaadPMz8jR3IB-)Ml(xuPf4cS+Q#V?fL+6-7+GWe^h<;nxf@=^_tCcq_Lh(|N)kc?Tf13yS8BJn0V z7O7K9vi*1@iyy>W4qTLD{n!NQNE5LBUtm9btPI>J_dWwng_sY7sYVszhA1{pU0kW2 zs;(^N0P%6nJE^!!yoMcmssI@XBBPq8njpsJDotg;^R1%OB8 zd&JR^I0`{+$A3-JFk?RliJ|#FsuH&I&=2!&anRbM_pRt|Re8z!=KuZ7pt(?9>a=fq zoAC-bVQhN4=u9aS+=@w+#O!1{3% z@5g3TxKrwv4j|H*J&?jq`YC;Y2FA`v)P@d}p$!nh#zJC(g&}NCCrcoTBPVL}ecg7V z)Y<3s#a@aa6oKV3m3>7_;TjLSnt4&;p5q-acS4+#J2Q4g7y%K22xHf)oC(jV_wRA9 z*0JAbBjnaqLL@>2Tp$FCJI1kQh;jc`Mypy_ep|5MAxbNlR)W1UZ-RiluAxY_lDLXNg6drJJDe1s2Ez0GL~ExUK^+zO(ULp~R%uafp z0be29PV!|}Y7FXtLa$S*%NQ{PNOb2=s__2aqP&5Zt2l{5JwzOs7|Sl5W(h)Z{a08n zL_`4I#-4xr3sFogZ75$veT(Zp^_9V!OA(NV@*a5E$-z-4#1TdI2o-qX_pk`UcLF1q zW@?R=(6_RlJwL^wg9L>5y8milj?*b71gFy&(PbRD3*(2m6n3M9W+!n?;O<_B4zdi# zWdO*cpacjX1C%)B8$D3AGFk}0!({Y^<)c_uW=KKN<%NK~r#Q5B02D_09w5KK)IRaX z2VqYNgtlO}UlX9hnWc-C8x9B^{zHN&EHCHN`E`B{2~oeH9%Skj8x);r9!K#*rb{nt ztbo|Xq2Ph%ZT3pjKZzL(S0_Ju{?;_QYSJoiZenUQ6paAKDI}NQw~v3~sX#!AGiMkk zC!Q{^$^;Dwn+An_+>s$0 zziOC)+!vRzbMIQ1JGmzV*FZ>~;$!Epdd+4i6OAnymyfoX#O|d@o;b!#YFM!rfH-IY% zuYDC_vr$#dhhYRyDygEeQ>P0?P2VDjjRbs9*X(*@tJ{p4jdF79u%5Iwy&D}K3ogOx z!o#X@6_g8!EyZcK?>^oh7gmJV_8asIK46;Fw}$ zm(Iwwd#6G8iQ_o6K6cQmKb=cc) zW^Ewa`5_=wu4~gH~J#%F`EoUA}o&fG4{H zdLNAab4N&gU%Xby6_hKYK&q{z*->5?_n5}2FrUQAA_!7kZC@bKe~yxAzf)1QVL8v= z)7=aIaq**gr}@G1yq!|m{@n3{UPCR|HsVH}SMckR7s$u}-`algoXUTc;G2+e?NVpw zr4DL52nxyv0)!*j0N1U^R-34HaUj6jtekDze!L&+=DBz`HV>dwHoz|9&rGgyE8L}@ z;g?xYcxst|yYcXr7RTD?gyv?`J8IF+vjRNE16-SMXi80@B5?!{32mHj^r*z%*(PXM znw!D#defQI?#gT4`WRA>h_FE*vXIuy zRyOM?iJic5_e9$r3s(be?B@JG74vgtnZyCMPuPztX_vK*rN3JY1#fEdEOthTZe%wq zdN7*Lut#aPBzNkfz^HY!-{)qG3{JzdVK(s|$4*+B;dC_!HATk7-5Ox;4f%nA1G!6q zeVn9JOvTxrM?J3^$14PdQm2zF>~31aXcleP51p~7f+`0D#>?jMO}m9;58xdhpPU22 z6B&lC9L-M1v3X5d&J5|dCj{a(4myJMa6Jm;iHgKe3#YjOVIXX=kMN?EY+Xc3ziyi= zmq2xgNG8ubjiCO2D6g52ru z>4bj0YFbYmw_4Rbs0CE|e4M_e-(u(rH7+pC(mm!XcQWR=CzRfk5QS)~#iSec3#sPU*iM_m)H zj8x(Sp#K-_k`85CwWj09B>fgw&#;RGHvnEkBz2C2x~u$l|1Pry0g0zq>5dhzlNKT6yLj*TquSNH$JG?i1YJ}IaU%YkAhRZ#Ll zhZKiE5$EVNPA#?)$aA&oW~qbCUAYkV+d2jJzUF;SEp={%n~c{K0WS7x0#ROFTtYVM zG?SnRXu&AXv|2k+cQYL#JAi9cVOdd^^=;if;(kfMJ(;z3{B|_xPe=>iIzZaMTkoJ! z;9+DleO^xt;wl-aAk@itkZNHmD^uYE1bvQEu;;6JNXQj+wJJ6r;`4=gazcuHm9AC< zKUTBn>0k$+YZr2*p+oecwAT^;1+0)^aFdOqg4#tK}ZAslt2yv(T4^%_@gkKOz$T~IK~}}DYmK!dK7^o z)$J0vdDQswQ9x=A;4dGN{`Lfdii4{;KEPK8s=3`?7j*FUqer(72I>6C)nh;1A1N9i z8Y`zRjG8*Xfv7qHQwt8r!Uv`F5GQ~>2=WF(oddExtK*8xjYHu^w`X8Vwc8I)kK3Yy z(oI4ccDv^}p;>n!lKj2D`6lQ59Hv`;(r|LUf7s7CDV$P_!y&kfvg$_5R&cbejsxbU z%=ro;91f=9q@S$*)*yEi;e%PTHNqs}E8My@Ju1R$6pM}Ch^X|(5RyZ`Pc^5Bg^w;a z!X{X6Jedpg0DLpvf9v!jrw`kh`te6+qsYg(=Jc%*>04{J7DXx28KqdPWYQH;MO)XR zJzHG()ts=EK%-+3&WijgDVzs%3UWAUVUFKBUGd%1P_H)ST(eTTH(uJJlIm4qD!o+I z(vX!ji=rbXBLYn#`P2T-84*}=9ZJ+eBC@`$ufJQ7JKo!OcPu~u%9GrmQ&^iWCfvjd z^O7-YC<{kyv4T^XYZMY0eC_~ZAS!rprW?p^Vq5J+skRD^+N(lX{7^x;0v0G`kDc369t>Q7&rwU1ty9(vI45b^M7h z?%^*qD>H%W7~XKa5-_~rVM%BJ&30I9Ss_p_my-lQpoLPXJ@1~eoJXN)+LE?t zF)WP`4--HaY>Z5%+8t>wW#YLq6)UvJ#-#;v=LPQsoENZ#+jqsrD=9{6B`tQ_qBkxN zdE~%x=W9d!AdzvwX>9cI1BI_RhLU>#Hp99xmhf_+5)?6<^c1o6&0fCm3fZWp{Ph1L zdTlelgHYxd=yL3oQY$y0Y1qqk(b^fJSc$E*%pa+6!17hF@l*fl``+@Cu5=2f^-Cb_MsH?h1%zzUZY z%2pW)gmHL3?p5wrOrebna6UHh^T_{h@*UUgs4X;}e{O={smKMx-!_R_hHjW>yp$FE z^mC+;27QA;H`L{){fJ^9GN|n2!}>8a1@iBjQeP>0aN#x5N?2dqfs00i_tUPbNF?eQ z#rfkf!7+Pc8tKWW3cS>3G?v{^hTBF&=OTw2MH`~{n~6y{*vwIs(%6hB*-hpaW4rn2 zWtQLi&Dc0*I-WbyRn6e#@otceR{WO!FcY7a`mxPrulRHpVd_eD^Q3hlPnVL2=e`ydqOiwdSYP8GBWP zg`4An4->BPwyLv1fd)Lb}bvAUD~h)aCGvyKAB`16aNGZ{^tO(D@AAI_kj zzlmqcMO9hByI;9r!W8L%4ayarC?)~DUmDGQoj}Nm*a6E0!Ll55c&mt=i*Q-Dse9k(MsC6w zNmt!h!^5<;0Xj^xDffG|(RN`PO7W=Qe162D-$^)%ewi15KubJ|;8>}c*ty}44A?wL z4pYT1$V2WG>8gVA-{-9&Y?{DTykF;r4i}~2MhyI1q@+UA9z^Y1&1*Ps9uL$rgW9M%cggYxxgJxYc* zL23x4QObd*XHf=qj_P9|LLv;65V|oy@&Q=Y&Bxf=ILt*DN&8et2Jop|txJ)&h^EyN zCH-`TfYDpN$#^8cXJA9f{@AxKlgOh`Bt&@5iiMxVw{eG1`EQbkxea_T_?CzN4E%K= zQb`QLe|RRI{&PJkK2e$Z!9N{mf`-PuVNn;k)4xbhtT@&oeb1Zk4GMST;9?xJJB$X4 z5vU>Xc8)+iKRnPjc>kCpqo=mDaor-5s(vV$XtU)(f5uf}R$V9Zl~c+-=>D$rLo|+d zV{sw}-xdn}pB|CQ{U6ieARZEovoG{-@RK^JPvJWQot*>k$b9=Jxi_ujP^O{YU4N^u zx|Z03i2AWGF~mt)ni#ckyypv&EIPy11VSXFjBj~MBJd>#=A6jl?AB0VH*qF$^yEVF zAJP9j8AulBklk4vu<5>!mtl}`n0sG>V`g76?2ItFJslOn*kQ(<=xV_s*E0vf5ItUq zA0$B@{rIt0Gi@K$3Rhjne(~E#SLVcoiLFs=4nehMj?pcoEyHnlYqUJV`|&FtJoY44 ze)L(EwTKtH>&R$BZz}>^kRpH+Tn+V%q4|yb6khTSx$Uci-86D0^^B>_Jp%4dnpLx!^gO3u zvyxz7?+St1`Y_f9-x_oe<;O5Y394+fI>mz#ruvmuQLjb^RN(Ba0YULZ-HPz&T|>Ze zHsbELPt}D&(c)5fjd1LI#Nk$PFk%3ie$YY32PyHk>0#fEL4RgM4v|Jz>Qbu3cgYdo zP5Z<2LrN-|>O+^J;M1D8aK#f!9d7WLd79ChO)))^*&%gH4s&f|2R!}k+Xvh48DN(T zZFj1c3G`1pk!KcGc~uMALbGmX)=phk`?JstR}q!4>Beq0gK;*#mjQitk#~}=5d)bq z1&<3>!1>6r%z^x>*-0VCv=5KoSBT4%$*YteM+p5ybB6|ntV?@U$y%PtcK$>Q%T!KH zCPjLJ$=rbU^1X|RNgxaANA%uQ1FKh&KLH3nYY8m@ROMJH8}QD%f32mOMoayaqg zdE35?apCOq&im$;%!XVj+6u+ta((YzjI2P55xZVcwXP{zDLVq!BK+H41Lw|kq%cIU zvcPBo)ig#>HEk84l&R(Se32}rrLN)SlxS#@YGMlg`NDCSJUdrB5D%ASIiHU0-8^CP zZ;*4cD-?;qI!u5Plz8c0KvX&cy@L(3mT?b(B<1+<&E>L|LzcQfTDSr)@gm9&0<;8KI=Qn^%;-D*S)(~-gFIU!lPpcg!72t0$QKN8EI>cU1}K(Z zAP?Xk`GR-xjB@P)xqs!D9-}wAXX8-Orj0$>^#yNf1h6AC;KOtn*A*CE=Yc6;WE7yO zQO&Hdphw7>pGXO3ysRZ9LWg}2$`L_k>hjBLNxL#Bs1! zp47^PDur-h9yJWsBF8(9r3Sr~(b}hMpabQ0SLX31(tqvM{vk^6^9 zSAFY*7&~)=Dm+gI$rDFFXa%I80RaRkvb*Ae6MrL~LB9@3nh6t`ycNQR2g-QH0q|QQ zF_59Kc4~BucdtB)QWs;kDpYEUNy;4>Ga0WPp^`h?xVTy?c>#NZQ+0`B6rB>I>*6ey zOf+p?WUiU$9>3xB(cYGp-Z@wtZr>#}QRkMMe=D7KE;@s)aST&6;ZUR2Tgm^u?1S6z zeGXXFihh4yi4^jRe$l}e+ zZt@(Xjq6O5soK4zI#s=Km5-Q%AVX-a4Lo?O_SV6`krOut{`%Z&Cz+~SOi5dtN3l_n zSDhj(dg%$A_HY^+gQa#iIGpn??noc z_r{;72}VhfjQbybS)>(Rxytv+6)|__{uZD?QehQ~Gk`U?Mh+?tqdK-T&iYzfE7+++ ztiteJkqD)7nY`8(k(7(Q`J@BJph5*p&7~Crir@CFP$}*h!{(Dy;}a#{Tic4Cu&%kT zw-!&1PRY#kaLI5^Fc=@h(WXoE=+szEx~+lU+ZBpvM`8dmH!jqIc-k^&dv>O@zOdv4pULF*V%?i(jZ@2}IjS z4X#v(`~G++`S%*^1{JzUgY-w$V%3jNkApoSzLaz=4g)dC_jx*8>F~-_G{ z0j1^{Wc6!ch6q`Krcjv55T^Q^O)xnK6v^9`t36S0wSIZjNAp=++%cOuYM8|{U!pXg z*yR%y&iwF$scr|J6Fp2W>ET_*(-0{e{YfjE=vXrkN^4+h-x}l zZ^Fcdvy0!VS3DTDuu1~(kZ2Oy)FEs zH{ZPbxG{`B&^{QafWOftTAGbr;YKfzFPp`2I@SDmP#Vb$yO)aGA5>5I{$WLy{=03{ z^%oJmA5@f*p670*L+JqkY8dm!c2(=t{Ox6yNGdGUZVL-nlw{6D|F)~8sA#OfKRMa$ z4E10z_Q$HX_I#@?Bi%}m|A&YO3jchTkVB5gm`*-0>y$J(Q=Y;RQ^F=h&xrfy`lXnC z>jHowwUKkC0KJbotCrN1ko<#R+xXV`6wW#K+$}xeY-=MX+w%6Ay#TR{1f5LC@`rCz zZe>PsoL|82Co~ZCObG*(=fp&d4qpCM4wbLR!tU={gHo`;Xe)=uQzSjgxjWy2(>`jT z^oTbbzMhY-lV3r_?)7e)gckmB)S=h4@COF}e?>PKyxf)nvi@vT(OjZvG3$5qEZ6ny zxd?zr%(0u|{+IJk707uZD%A^taT6s$2m={J&3KuxQcx_q&#@SB=e)0Bh@HX_W-gk)NyoVN=11x zr<^@jA_qx|Bj+$W8mRh|pAapeHP<5I4`+dtR52HsHF*imwiB{R*&QETJa6uruQipl zEU3(J9Ma95y!G1c;_U5W%-`9%dQWHPmEWDTDz|NLpx5k&pN?66AKyGZZ-L9@Shce) zKivj$y8}l2)I7wY7mX;M2--bQ6dPE+I@95&K99M5>Mu!+HNsjW@qRCeXg*hBLu2v|1}9D$U2dvf+ zdUhj1QZ|K2s-_^}lk;dIvyrx@pp^4{RNwjWK`xpcf6q3__TD%L{v>V$se-So?)#Sd zjOYqzdV)>mDe_g0Mkn+1){k!<{|gg-dwdbwFJggcbnKiII=QF4;7G7xoj_8c;oz+M zAjzW~3s*}HZ$Tj>&IOUvkjVO`pcoIe8xIN4qEsv<$>?g&Y>z!>fATo`FPm}sVlxR?2Qu!V*YC7vQ(AeLc}d9NA2qmO&&n=G$?pF&Bi7^S$SH~fMi zhCCdi$o)gQ|6V*q8*Yt*q=B3EqOOMbTjL>YfU@-K9pkH1V@>KaQ=*>*iMJp>JJFp{ z`PnHEto*D*-7s8|pWV{1!nV7hhP%5Y2zPfQ<8*qGA-eIu}Kn2ozQJ%EW5cJ zX?ORVVqv^5g{UW`DJ>qeGTj6K2-YTTQ$PY>{mL>X_`i-H`_%Hx$J(0Aq%Y^S>bMdI zaU_RO$%{~rN#*hR)3Q=*a%BPM`d^ci*V05*=sx-`(iYk@!|>_?U#c%;#=_+7O&C2!Tl9LQAc+!>+tdm3m>6ypv3bi8)F1C zAks7_zJL|whow%4rh~H^Gd1`w@(^M(y@HZ$!2-G&vkQtgS?Jyc!63B?%fT9yd}&lT z2|SVV%t?Yr=%np!Evv`%U)7deC+7)E~2>2m}*91sAw=>r3w8FU+D$)p>0FecT zlL~^~Q$ySuMbVU%rfHVar8P7~@4qT?PMxq4(MlxU5g7rBrs@=;0kXPa!POk;Al-l^ z&A=^w@&KcLpJl&|vVvTon#`5Eo%;UW1;N>cls0g9e&Eo8iudxD#Ldc*Ge0^RGW>Z; zlJ@XZa~7OHNX;1!0sRw`xCKDMQ!Rf41=Il@EK|b@?Wqn&#~>6GzOt7L#eT@#i+z9O zJ?6vMuu&}ewm2{Socvk{jEZ{n68O@4Mi zHvZVN$((My!o%>Tfq8a6=7B2~eb3S;L+h63_)J@(vqKp$x+HJisk^wD$XcdGT)nvF zY{n-R?rIHtwccUCaT77+=Y8goCBudkUm{J6NL4|tFci5Ytvm(mnNjQUO-O6WDWFmC zxQyC$Wk})amv##}-naL3UZr04fRpmaB>ENC>qjpLC;P6x>npdw(sCJmct)<2j6eOs z{t!+DGvY{av6H}>`!Dakq4>&^aymYpt4bn&M{-U{2tk8 zbZ?{z>t+X{O9dAJZ6>Vj!We*>?|5EOu;%7( zIDa_8YX}j@>8+D7h2)q)fD;S4Vf0G0V@WOr%G2^;j%B)E>R^-UAXqzx3^Bnukqz6xCYGESYTqT*_xDF8noG=U=Dtt?l9^HUH3H7J^FQX{ z4GLQWkO^O&=svQW1XeAw;=2(lz6a7D?Hzm`^dQo^tT;qmR}Ko-RRe7v^zT=%S`{qG zAe#v4vIvsSkxY1~Lt%Aj$7EMlFq8IPV@_THpXFE3S57il_ZCMGtU?&Ab66FQFe5`= zwE^=Pis(T$lh=g-RsOqSaA^mj+R%?q9>Knt$%)RKY}}1y_A`(hEosNyp3Gcyf`%>z?>MuCAl`tbm8d*CTh|9rW#Y)g?kc1IRlY4C zyUTu{w8k|3jPqZZhIr?}#yK#uo!Rt*#n9U+H;_R0A~z5}9d+Vd(LNY~ z0aQPB%i5b!6tzZhWX1(7^D4SdroM0^d^KM*@()EU-x~J81Px2im!u4 zlB~k2qxV9118?(6rhR(!u~Ul5!Mvv%bikQGw|Mo5x0QS?(wi2Ux5*-ErOQmpjBUM9nH;*OZ-3**7!ta)PQ&wcG09AR*i>y zo6L(7!M7fp8$$`6pGhacm&={pramtfbh8AI;#HN^D~#N(funb2p~ znMeqId5kAiRfuI0M9J{hia|fXpqj%7O{HZ@kmNu(JSTK^dQ4MtUX*R~nNoItAoYMi zE#GoT`ihhN{+nR^fc!Arsw_K(H_^$2$^aPoFwR}z8(yCRU`76 z0tR}x_j%m&!BltwFIOHk+`?zN;;|>s1X+E%ERQH*c}R!SyqR8izuB>rAE&BTU0;|eVg4hFiKl~N4`=!{N0#sf?)X*}1iIi5LoRyt1ClL~ zEu2uQ%9lU?7ZG<5=zmWO{j}xYa`?SBubGaXEup7a%HKhL9+#_hi2O1H2Sx2QBrT;4 z?I~Ix&Sxj=kPh1qr+%HlXiAeOROXx+19qp2u81Y+o2qzyzj6Puf1oV#I#^-#ke+30 z?7nHvvPoj_I(#gV_Q7PuF8yxRTK&JNZ`sYoYPmvWsbtz&L) z=$Eg~*l8!lkU)%9a~yb~E@DxuG9OJoKks33<7oZonRwK#2{@2M{9nb?KlE1teMM=vM;!qBzCTTPz zOM20Id@&bk&EY#(x@_ZW#>#I>@VfG7_)!j0OOO;n6lnUE#R)mGR82-r#<2T!6x;4N zC2zhGBdmzW)c@pq>sPvZBk!UBDk40h;4%dB9O>^Mb6S%g!ik2o2fh#M?cYO4W@Q8= zJ!_;8rq6`T*;b z$gZkT^HucNYgC;MJI6ZE3qy)_$3=f0uEi3)wV1vdqvJQYYa{!fc*5tM3ea4&IZz5?Y`fEEnq_n-~c5$ zB;SqA64nmIRWxFkN`pW;{Ndd~VZ%Ro^VfBDZ#uF51YqG6qw65`xz@{v)_^V9mAc4h zcT@n>oNknIm(OVaLA~an2CSQ(m>A>49-iik*=-CF3Qa0)VDlu&>T}r8;E73PQMTlu z%4GKM0-`16A)ri^3AO(GC9S^f+jTsPY@4bFjs&!vhzv;ip9qXUs#{4!Vgug(IYNWA zLOR>3abl2aUH~`PB2Z~cXB)5ekHbE98h&(?YD#5px$?tNADStEwUADkr39Hc%`qRQFX zkv3{m>#4l=;0|06XIVf|M6Te^_|jWO4YOPy&XGptV%i@1xD16sLj;8=GLt^yMVfMw z<6;leo4*57dyR-`yfRjXRQXP%q)83_u+o8VPcHLH4J3*{1&l#GA2mv!3hz}5w25K4 zDp4o^6v*kfl%ofEv7BK8Ga|-Ah5))Inpp&7 z4fXK2jL#A>=4vFGxfjmE#$d^BNW+3O>JydClC6-8SKnY5NJZQG8b1%{D^vNQRoN%} z0H936)+?L~+7YkpiHnXz!oG+ii48pa9A32kto7o>BW0Xs4pNg+;@Btav{9RCDPb=C z;su&stTd7o?&FHXlb7&f?{SQ4MOGe_JaIS7WK#~*)@vTvQD|_(xQD4AcBdq3!p%GT zUkmQtzbUx4V4Xe@!y|r58&YyctQf_wxi^c-nx4p?PR4fVPG&fZm-qJp)2Ao?K}=Vd zh%yk2wZjW(7`@EVf=$c%)>vhx2(!#OO?+ki)+U&u95hq(^hb_rLh4vrni*@Rh|4si z%@kzIj90j$Sb*6vAI{rnV(FL&pfXY2{*Y_D@iHI1~AVEjAM}R ziA!VrwjZWunKI3KCWADQ#t zsfkgmp(Ank93>L=BD5my;YQfU5RV%Fp8-I4N#VXjJ1hE$)FWLJq{IedQ!(kQ|E6R=P zdwf+@?0+L`=bbWwYK+6ViZ1FdVD(0xudVk5d6>8>A>)zfX)8Zi_hKtx#PE1ji7NFm zBE|zcG=&Xx?R+kwQ03*kbJz=CJg{Rk5j0^C6wVtMdjS+RCUI9H#(uD_2}d?TY(a55 z%UVWMD{_@>psvHMsZwuE{pJ0|9y~G$zx|CSbT+fXaV$G(F^o<5fd|OO5&iFsY8kH| z!jW0sZipgcU68>C**act)B_TeK{ys={yD@_udn zD=)Z5k`&yC{Ci>4J_mtg3H{kLwrcZozXgTr%oh#$>9_AaygeDY8Pai#Glt;kwxOA;a* zA&sBoFFmAI`INB0rST`&Cv_qr1*N@^ua#vVy&Enswhd}c|MDRix8v`w45)K}#eICW zy*nf!1T9qk1T+PSP81dQBQ)w+cp zow|TSx4yo0>s)}Y6Uca?zZMhiY)X-_7oVMtTFaN#D|A8dm<&l7y^FZ zKy`%AO8NFVNXU@A;qG`f2W~zq>4KOKHP|UhqK3783zLz48}Dny zSedw=KTGlIp(6FZeTzpd@`TUQ!{MKy2cO-gz87HKs+=Fo@c{`&C6lYMwgF z?-ymUqV|5H{@aS4qXZF*-x6_GwO?pAwF?9x6(%afkPkEsJPglXfpzt(kDsjnMNMfo z;llMs3dO_!O!9#rk8^)d)EVR1c6`-9r266;zR`$rkeF3Xzg(T?@5P*YxUe8BlFPh5 zT}bCJuM`m8Tz20+b>Xm@QylQR&6^;sfLp69ObE|Au!q3?`^G8qjw;&d$Ng}W2*rt- zZyNO9W+9yGdk$mcZL$t=#`L+YPFeXpkd-5J$Y)GXmTi%h-?iI#Xk6VPmm$0P{{tfJ ztd=^&a&BwsJC~;p@`{Nfdrv%~`e(!uDBnrdjSks20`|+Hp@1_C7It2a9ST zvD`_%uRKipKwJMdXfyq9>>|5O-XZOpDJAY0Wo7A%pj+Y#qknnBt?PO&j;j;G?*XhU zMkt^G5Q4P^JpL=!6$O|1eCo9;Q_s|j;GvxV@8Z>8&O&u*A$t=P?V_5OPTHv{lm~n$ zH){69#r&f>qRoq_T0qMjRh;)9sPFrtE<5lx+ymcoVPitW;8Qhon&6q)wl(voKMI}l zJFMjFSP6dhqktR$u6!8I;eD{jn)P#e72_2rCcyLS)t? zyG_0sUVVb{8OK4|dW7;B%U08jc0)ja3r?JI3}ohr9kTKnN%GC|8B0{q1!*VMQ$SkR zB5`9zZuRprWM?UP#eX;Yo#*fBG9-%%*)|9n;?r zQK)uge*b0hqWlmP1eiKq`Gq9Cv&(SwC+o5`V%>zf$#QATfEbIhC>^V|@PPn*I_#~! zaDL)^n!iXe;O1=!49fXvrUpk<#DlZy-diP71_hzh-Y6^wp$^C$GXVq8BQuBhSNAx4 zCm^|J3kb>CtR@Tw053q$zvWcPz&#->-BKsn>8obq;DmZ*VMvMEx0%4{rw2Hx2>$Yx z98w-!8P#lc98Hkt3k>9S=PGi60R+(60DI>%4f{w2%Oy_<91H;rgF3W)Gcnl)QQJ9$ zVIpQrOeeCu3AXg8mmotNzs|xtbH4MwV&CX=;(ok*|NeL+Uwo|8Qop;QTl8MxKV_|M zm+tnQ7xE+Ko6vZ>%nBPdCWPN3GR+9t)~duTRu3OxQF#Z;g1K7Tp8kM6RqsbPQ$@vo zXqQ%fxj;Z7$O!}^3}_nD4Bjk?a({4nEs0V(aF|785-8c)Mj|wk6o2AeE<(gHZW9ne zt92O_ni6UAAPf{Ef?iG876V(h03D?ydjyEsjc^^-p`;N26#+g%!S3m@2x`bywE_te z^&rqti=g1SK#LAi;yf#h-~ezH0o@h^HJsiWl-b9!a)qZoFvz;AyquSJru~4K`>lTi z;5pkVW_klLTZl>>5(~Cf^87Ca`O7#_#@SO;YO8!|J3GjY)29z9A%0Y}O25=vot=8U z?%W0QrF^n97kNFN2)~(m_c9;mfq8Ie@?!H0!fSfVlfQgUTiNBeKcR3oLzqctzph`T z=nNP4??rG!7}>Kgv}5`Q23EDh*dNhfI(yoMnxwD|d)hu3SqygZ-vQubzCE5@wQEmc z^se{@n9KR&_XEPiMq&H)13KlsAPAJO-+v4kcc@sy2h-c%c(F(eBOQ}uMe;S;9nxBo z+#z55yf9?v%c9_XE_k`OTrU3?xvl;ZTQdXr8584*N|12>?`Y=*24_b`f}-AHrjD(H zQN(iXM4B!A;npmQ5O>)H!cEQ+9~=e2tjlbZGt-1J80}$X{iI_89!+%xODrFOk3J(v z^kRvnaT`}6w6wqJ<5+{QOlTYTV@cA2w>uZNZ1a8Zs2VPBQ*7HD_|q9v{{W!mp5z%g z2k35mj=jX58(ZI9*;wX)eH6J9w_o5=y~NoPxH1tvFj?x;I}mzymln62bVeEYGwTgz z?cv6BK&dcysat66<;IL2(}i!(2LV-%$Kz%103z{+4J4E-*=Vy1Pnrr%bYr%UG4;MR z)0bLsLX2vyuf$slTY#9f1evXwj+TOz7}eMXTB;+sb`pHHuX{yb{eII5(}w*k5?0jj zdn~;IFsK<|34uajMQVRHNTib+B!SLA-N=AC)$9tCj2zo>>JDi297Srr*t*>w%vLq1 z##dL*2~sT3KX}BxMjf~>ky{l!F09V8D&_KbcoOf#fIHvqvxVo!#N_83z}xx#WdwXU zn9yI6n9xAL&F}Brz~J$u7ngr&4|yzhKIx?|^VyB*jkQ9-#%J8t{PGKVd)PF6yF3v~ zG}c;-5Db@=U+?S6=;{L%k(ytBC6hmkobir43@dGL1PGp-s%muO{W@B(5Va`}f3xCS44i~asrk0KEj43Yjwh%z`cDl{fHz-|le9xTB?Ct~ zybOvq`Y_?9iq$X>ezjvppf*;dr8#S;!ZQpW9#@G=uMmm_j$s@FY}kPJQ}aDsvl)xKVdmnni6Lq%I~D`mwk#$O&P&S!tL^L|aqh=o}q^}pUQ zWt#keeROtBA{7UWBn2|tJ^83EtgIUmsPrM4q@RVUzdS!ZJh%}S?@>r|-Hs*8>7K<# zz^=BAWTeq%RhPP2wy#H|My3myBhhG5*b^P8jZhiuLfKh%-W9D0LRs82aavrykf53?4sghg;-6j7?EBdmQXHplpD7kA?n_?LTo&UkY!qHzPHj! zTSmDU;-Z-sc|rQUD14p7I$XrjaJ!V8;)D&L11LKfnV*@f$z`EobjC4H!XP*`X~_ufoP!q;IBO8 zpTI(|!cl_k)GO)A?1mu}hevXhmb&C2bC5aG$Mi9g67Qh%e*w3ncjeRP8!Q~8^A%P& z`rWvC&LT#nJ<&y#qG{1?u)(`VjvXrN)}`~S0aFGCxO*=`}<45A4v z6>3Fwf{+S{ezT_hyAVl`;!& zpF%-$h>|`5%u=%_9)3+HnH^^3x!q9>q25E|tqw{S@AFDP$ycCgBm!{I<#k;ZCD{|M z-T+EnJ*bQHbH^YD5w16gg(Vqxw6DP03lE&=ytqI8N*f z_>ge4RyYWZgm4_=qXkyB6M>G&uLhdw;H3{fr~NHLu)U8=bqoNE_iI5y$eIl^1Sj9; z+%ikyZE$lW0ll||A_QG{#Qu{aZ^{hsx^i@bA{al^La?eyiFev!@BxUt!Z;=zkemG+ zYnZ}y=^`+7WvQ-h2op5?j;l>0BqTtFQmB5bQfqvrbmGoXc-o z42Al7ir@yp*xA}s$q?u1&m#jG$bhx(&CMN>D&@Kx{?R=6(a}FaB7MCny)5>yKPhv(tDnDkWu-33TNOs~w+e>bUQyM#P`!S8(a8-8 z$o7Gf1HH5xn_M${X9dCM%~s>7Kw=baIH`b$aH<9F2sk&Nc>Vawn7jfgIaR4lNr3<> z1}6?|90O@PfaaAs5YQak2Z20|eWJa0(qK;jXy&{Efi>|E{$f(@rgrL?_L+J(xygN^ z0#P8yia84Q#0P&por)ZB0{v%-6-9!~oAV0GoWsoCO7g)&oeZ_6{K*VE%L?bc$pn#) z1JOP)6@co?H+s8h7lo%HK|FaWau2IWLF%xqdHF*)kZVFFRL;eg#-8fojhQu0xM{go zG^`rH3KqOh5q_|zkcmCurp5kI>1~+u>w6D!k@Jr!+oh)6zl)342@p7iFqUZ&Ode2= z?Dj{*K+?ww#}XbeLw3CMQ;WYM_PS*R&}b2BVqqt`?`3ysi*S&ful3(KKMGkh!%!sJ zLZL|h7yd+22;YfO1+dO?63eYT2z>n4jj>$!I8mZ`Cf_pr=@v3U2j1W| z3_T^&T+hmk^&iFr`}Obrz$4AQ?)_hcnUBIR24 zf!rf!9M~$q_1&_z4p;pwznm7Ipx{ztW^X)IT;hk${%&ncck1C7(|)-6H3n=|@GBp1`L&@|188%NYDuUjIFy}(C37L0acPA`tx zSa}jUyQml~o}r%!dc9YF!rZBCs60u98yi%CfB?l8)B9N}jW^|9S$=H;ODyM0h;?;* z%Yzp1Rgy#~S(GCj$DaKIDBhf>PH9We{tu1wW}v&DT!Sug;?Vzc(tG$LjicS*mw=fs zcbD6m!t5e-`fDT=S0C(x9t=Sb&Yo*GbOIkM&2UZW6ZVaEWk?Hc=$nj9&1*HI(9R`! zd4aE+e&K*y2Z3`GI`pl%HPBMh1$_eb7ABk?QB3xRcjDgJu(HFK1@oR?K9m3E-{)1` z&bhrX_MO6JGtqR{mcNb{y*D~Dp37a(-1Uj7yv;CKI%7le^-I?4F{ZdH;&#-Z{bf%3 z(Rqz-pRS8ef|Vjkn7Q#O(d)A-$cryqzw^Bm zcb@fB$a%gTGq(W~zocF+Qst-A%CD#ydaGW}N^#-4=DP!u!Wb>Lr^t^UDvc@~Qs?kX zU%Re;|23+p%uSs1;!;+ww^~{S*779zyA^|QpjBT)Ij{a;vseOg3+>mo<5?6v-G!Ud z7sqLtuw>bx1!9%pD+Qamv8wz>T)Cps4jGRRtg^SV#2igPOUyp{4R1Sx7C|X>azag; z=5nWA0aIq4hTrR5N%9*lL+PP?f_zjv2chhRU(T6MK}TF?BW>~;nNlbm3E<~Uo##+d z8r`!%gepB0+5oz0S3G%XzmkYz*8Bj&eu`pOY$beGO7Ll=IQpUVd{0XCFVTj$kFOm_ zOlV!0ULQMDI zcHf}oy2f$;XL(2%wEG6To!r_rUwzuFuf;PZbU&DaSxrYQYa=Y@n{M8ypBm#xbijh; zH`<0Q5o^ExK(4NiwX+1{h`~T-1VOUHf|L>yPr^&iNfFd;s)Fn^rt6 zif1MFF>?&@6RawUJikVYPmGsor4oZ(Uqo-dF^4}kH9sf3dw$gX-IQ!`@YApWr!qZv z%A|T8BALntT>kffc~8Sd07`Vtu;ls5_nVfF<*)N%@DU}2i|pNP-oGi%5g@N0|bf=T83;QNJhTPlH-&c9RxKPp@PHs3%X8F5$qRjt`W<5`G; zHT7B*<7*7w*3EQL{^Ye5Po>td?N?GA&-b(cd8EFGNb`h&6gnOD^aB*?tDDf1=l7op zIv?!Bu1c%_3THwjf7xUa_sdu1i+TY!(^`y|k(7?Kj^BtJmEXO*r}nM!t+hCT%3v5|2zqnZq}+v5B0paopAYj=>c!`ikK@%7 zxfSNk%`+$6qQYE>-FMVx$1e1PJhLmq<|(y{eE({Kax#!Zs{sZpUou%tKcJCbzU$la zM*KL^b_(&SWCa>7=5yd$3eJQsaN2|KJ!7-L@kNjo!1>DP>j#kUW2ijziR`WQI@&5N z-n^sP1!tnQc=76)-J>M;TSRa#2kW){iTzw`JMBmQXnI}nGEP=h6$u>(aD8|M2cVrK zGguiQr$lAvpaELke=D>TkM8j5u|+aX*Qhf$0kuHj=7;WQmY=ad*T zxO2*asS75kDsvciz6I zta!7wvYPKdLUNNE)~6yB2YV}#=lv_IDIM76h0_-;O6aPgCnwgm(&iZ$sv-j>M)Wqp zS|;##Eb3|@D`@qIgw+k|(@k^aiJq8+LyRMlu*n4`iPAfjgRxSFKuxB7_Oebpl7r#+nj?M*BSNLP~#r#QD^v)K{#VY16B_-(b$fd23=@j9g7`|vxG7rk&xt8Z2 zv)yaGG9V*w$aCv%fCX^j;z9<2O!)OZnpw5Pufad!!mD`^f!1FWDqRyNrNDi>JCCSr zs%&LEU%>M;!TqnDyvRn?@bPrI1_n1U&L`4=odI$y%v6rc@Z(PPHsU<>*W``)qsV7Y z^CsowSJm;QG-as78E1-Er32dnyRl<8q-Jnr$7IL)c~-YM zG2>Z4mSo3f$AHhZYT-yyvK&)dIwJCsBlm`11vX|D7mvG1_ftFJBcO55eKii!k(E_k zoQHcvWYHSSE7(RtOoX?e_mJ<03`D$2Kxg}@3CU;doW}-o;O|R%2AK5Mn z5W;xyo@Uh90>u=C!1E}vO)BV~M`EBVhzdh6zG~oWIm7|!_lv`LTG0-zWvNdiZ77c# zl|21N)r+bH4+XYIX1_>8TV#_$$vK+EBLydspg*sF$DbqM@Ew`#U#T;4VkTGsv3AW^ z-owNEs_V;}wO5oFGb#V6-`o=ZD-j78kcs z@NiO)e@@d!@^M3!aJ8Pv=l-FPTe251e7|q8Gl61%elZ!ypFBNWE?VHb1}@`Vi;^sj zbW?iL_w|Zfk-D8x)(j7&O58;@hAn zX#eCLW!JUW&#afT4R}Nds7xS4xWzm1(eGEaNL*4rGH?RPh~(PaQ(kq&Aua4HlsY0U z5(`)~d9PGjzcup1iPb`EXdMLtkRH|k`}OOBppIR2;0Aq9@{X7t$PEVU0NzFMEKLa4$HFUIMyqj3~V#;(7slmxz!X9rDP4?XQ^x5GWd_4=1S!@~XN z-j`8mGdwzX-W!3m<}N1Z)gy3=0d&p!{|_Vj7%kw-d;};+CVb47t0d1)8r@NpSAh}- zUUbZ&OGidkYeluSiJ|zaG1K1bq3y1^sh(IpM@s4We;MLnb8B;)k_NC6=VARuKkIRl zi&$F^PZh>(lr{S3dvT;2u6pliv{mPLe2Gi zBEk({>d13Dts--VGDOcd*CcIXfuvd=T^nA#X~k@vsG#atG_dk^Zo}@K4dBib~o%~Z!l5nn~ds2NljOetkexFWe7Kr z41Gg`#Nckw_z|t$IZv3^H|-L?+ab51=)qRq+BY6uBI;Fot4ZrE0DaXqokOF+mbwSVjezhBT-@$A`(77Ql+N-iMJB(XY2@N_QUSXGFV4;-xacE>2U5f=q6+% zkF5Guj~W~bNaXR1DS2eh)|?4jGSf8lQxPSx`d2u?{=2xUW@& zHV0@Cd*eC3F+ER*1_QK5D_||2vg}LQ0c4d~M8+bUm5aXfIt@%~SBPKA#r%#L#gK?6MWR)Eh$SMoSbRUytLT8%8 z*o>|Uo~jO5_Dd7NBg+)zf0Gk?A}`|HO0M$wl9*0rXCAI$l+T6xjK=x6)>0lW`d;3` zb2PS=Y7f4mXIUMfw@E2q2X~@TfMX*;uM_%n%cRSBmUF(*S{qBKkA#UlSa7=FR3GLcqOc(^S4yy(ejJjAGD{oGwaGx;a1)Vi4 z)AOBNi*_-WE>0fu)vr>aQ+yx4Zw$Ul&wYM^KMyoW`lIq&5?=x_cfP6E0|sQF@>RS2 zoM`RJqz1yZJad{O;Ot}wCI1gRLyU{Iw!#m%Ge^zRi~~=I=Ze?WsT$eRvUKeQf>=GT z%xh(w5d1JC(zOxwrbV*u{L;-8o{-eMPD~TznEfzf8u3&{BC5oXEQxx-&9s(=@1+8E zBJ%B`tZAH~o{SQfvU4e-my+>oS)UM>dQf;Q*(T8M-D?oECVPebM8RZjtH1z-G!uOz z%B^rDyHNNA5}QE{^I;N!9Zpdxi5cM6_6jT>tDpzO1_$l8&Ak@E{;6t`y0?+jiHJsc zevDr*OuRec$x#j`5pIFS3@s;VT7`O6&NC@Cp9cpmR#f>iEzMYav%2X^ARpm<*`!Xd z#};?;eX9nVy{bN;iKg<)<`3p_^@iBk<$4Z>$|*6EElEi#qY*PZ6bC_o7LCrw%D4)J zk^~WH4`$yV%DsL-)BUMtjg(m*#eD0q?=4jEU^ZCYYxTX z=$FS%Z0<}-N@$8PWTGMds*G@`bCE7B4lxd?R49DX6-@1C=BETmLT4D`X*-U_Xh-z; zE)S5Q;fURr6Q1*q#nHvwO%j#jVQ`w}e`I`#KWb zU@J<&do7^95FEFSni%O#lhGGnbZ5m{ytUq2=#-0`Zh1iJS%4X1hw66#+>=gJ@iL3d zN6^FocJ`?lD3?;rkLq@b2_ea(cO&mgfe<(p-7v;&PN_$w-|=AXdS|gotkg3PwRr^4 z-#?z>y|*04u!m+IEwTHx=XwR>6QmT8iuoicgHv!k$Dn)?KZ?TIJlnk6JZ&V-w{6ZC z)uL^oTQsyrOKW8%>nWbGn@GKB+f{QlL(4J9(-CR;Ny?m707AKr zYE4==?DprGv?kg#>?ZdkTgVRp3AtJ0llAy7&AHE>!-&uo96H7C*QMns7P!T`bjAzF zgnv-=E%~l^3R}OT@K(vgZnMVymMNJ!6;I8e>`2H6X`KC((RG=Kq1t)4U*|CT_@I(Kv z^9=(@(^L?J1^)%AGmsV-HzVby2~}~6q)w|~Wk^XEQMkI5PY>#iv90FLu?84~#$QPz zxw{gS81A}@{{WH`Gqb4SLf1r7fuFfrmXanDXcC;iT#w&Nc0AkI;V;k%ZxG~m?MFoo za&jXg;!g5}*6MlZ=oK%&Bv`*mfwDokDb*OnJl2)<%`x|y$zHRD^15+x%NB~j4z+h= z%%ewE2DUhGWG3R2a1kj4)q3hgw1yAu}cms|2X8qbwvf^jM z;1vC_XzoB<^t$1yp{!Y@HwzcQK&e5?$hix^+Jro{;T8knj;}grKzY zvixLX&Uw3)>Z_#Huk$7fgaQ+6oydFrQEBCyko&uKK2lOz8Xx(#l=Xx>B72jS-J3~0 z)SH*C)ok}LOVc?~&`iS^Z(ZBKSfM#n_)@G#U_H^hJzpK$+iWMqVW7K*k(J+qpWX4C z9CadL{bP|&6uzMK)F9AdaeT7)zr_4{te@@43PlfZ6pi2LhEU8sm>A>W_8^EKkjj2P zSJ*tL>KfpAtMS9lN9%uRsl2?CqsyHRI;!|1y*@VP2H=F*C0uJtLUN+Y5R+#1ijnQ- z7GRSw`DAF?^mMlj`%BHb+uAh}c0&-st)0bld$#;3?*d%D^K?;5q&zXdZTIa>AE@V$ zbsCm!e_~ZTE0Q+d-reTRkw>-^4W5{Tn@M-cm$#JuBI~^Yt1_j9%ZCz5Ze` zQB7MClUKW^LB!`Ut0feN-0c8zf4lqQX1ORz6b+mR{XW}~bWeu7S#~d}W6Yl6a!jE0 zINY7Dg~xXeba~;BUgs&9A(aOM}4@4>ksSeZWz0)AH7!C0$5NbrNMk~2Wp8i~#m ziL?9yw#RyTSweL`9shV=0it28qL`|Z19e})hTt85Wfke7)hOL}kh!WVtMd8!6H@8% z&I){r`DU5}Yv1C;RhkvlyeYlgZ8Pu@d}JPTubEYKr(Ux$_^tA>6T^u<_z#_%|-Y56?*^QAvO8v!mQ*cWFw1%M(+naVK(8t6xc{=D1psk{_u8 zfiw%7gNr^4S)SZYr_1_ragniYd#Ku4MU)2HD7SbxoaTgP;zGhkL9G}UJm$dfrJ4F6at$mrNG;qE_)BL z;RCeU04PM@)OMvm$roggtUxVAl7QZ4!%>?{eE_96^i64FoOq7i4U!}wo{5)?yk((W#tqhSI8`f*JYkZCo7+xB-aP4>mR~Fsd*QeaKm0MGkFWkljr~&3f9(p zJollk`u#onRFCJk;`cucH&-gn%fh*vXTmLwh#Guz1sxqchoa{AkLL;g^ld^Je62&z z2@&0b_Y2cRKC@+cy4qb5c*^eB3Dj!lk|kSOBH(YMn$H*kPp!zOTY$9y8FY`9hQ=!E z2kmDAlb#N_`7YLrTc4sA2P#;~1-Pf}^9NZEx72Wk4Jdx<8;QZup;2e>{)-224Lx8Y ze5Y?Dh&Xf{X-B%SPw0Et)jumy0*h=U%9CJ)414)9PTqQnBB+;cljv?o6D3o?$uo$C zjX^lE7J-#&$pm_N-9M~30YO6ZgZ z7%~^9fof+8%j0CyI__pwn8L}9W=(PWcjH%i{#hHr_NXQ9IDl~hDD zjzVjtJcj+q`sT7=$7) z>{~%i@F5jSI!L76qebzwWz7;6)j+2CZ>5k?ml7_&jL8&K`B#r9bZQje(8&J@{mE5U z2#+9zpV<;axD-Z(N#V5JXZLuyKcPoLMJ4wK^atN?>OVZal_v1Fn<}P;8-77j8%bHt z!&-vG#u&~2tn24vPDU96)tx=B&fm1`d$xZN$!O*l$OoSg?_dom|&d8 z`q=QWaP@?tVWF>^n0Q}2Z4!-?afgqmB5Is|*T)*ejQ;Dw^w>Mo*>oi{iW%#GG(;#L ziwep}$NAXK`UZnU&qpj+c6g9PHi5ZABkKb>B*KvIbddM^lYC*yrZkK&v+Riovoedr zDaTilwgFPU2*Oe!ESg%qo4wRB26IYqWBrh#>BtBqBCr&t@6ZWs0_veGygWBC)W_;r z{P+~b3&%CGtvMB>AOcyR-x0LE%M7?CYc8p1kCxhtk8BHc<<2Nyb+k3LgUjbttrbOU;P4 zeirj(!z*q#8yF&rTb0_YCy{TcZr)q;(8xx;g;qA(gBf$^|(aV(%NKL4RtIdP*xO1Mh_XI>J@H8<3r*V0K1+R3Ue9V~M>lFfW{llG|p; z89jqm$%fR1_pw?wGYD(sNrmt=nhGnvykLqdo}dYZ-WV48h1tNG1nsh^ffmaMlmr-| zVD)$&)E19Z(xYhQxYej?wKwPbyG+^kea1cwY@GzHnxRV%fkYjRqlYJ`7NtNf&%*BE zdT%JPFH<_kD5GQKg;E`ufyKWajtX^d$1xD+@pRmbRqk~xYzYkV*x{66-l<5I4?>l=WMB+qmRuUE4dW>9m*uKsJ zRbQ^DZYa1Y6SIhW*-wxQ0G`U?R0vqRNOK{TKwY31y~nBI)Dv-5s4dLm7aV`5aF$}q!w?{hSAq@mo3f% ztY~tK-V9X-K;(Kkqo4zgKvHwTavZYCj&M%_#pbe57`7+R} zj#?&K%fZi#Y~HP?dFkO0st`?E{RpL|i}A6(NN;E;9jYws$HE-~>v@|nCY3caZXo(2 zk+$AjG}Xj5Rsr;9uqmq0>d5pF?2&oZU;cWUEOvkb-HtN7%F92RwxE8>PGj_Opf!;n zK>#Bap^@y>*FO_7NAr`%R34}BL?YfwHl|`TI6QO1)dRe>sQ!{d^m2Ql%gkkHFDG~v zAFoW5`%5H?q}~ZW7Ksn*KcXU+D>Xw2p!@fR;2XUfW4gi@%Y1gIK^cd%1W~&cC2>7*SLyGd+sCSTA14B-qp@P8|GVk9qUtc4y}v~SzS6$_8&vq>I*Yl6XVazOduU| zx7mvXyAA#|+(fJ*sqD54o7I-uWoyPr85){HOYIOBAfxIQ8sE61JO8RomHQF6&@2W^ zY;5BZbGS;oL1a!Qbj~C)IkQ!_oB>d7h~U?`@h(O3qstw^5cb&!?|}jV?KC5Sy1SW- z0#W#ULSY-GJ9M0)uA%Z-0Raz=UOQTxTPUW`)rRUC3+N3I4G)WZ?gY-MB_lS`iXsUC z-i-nps;~y#KhB+$D%tC|YGXCM15!CBhYM%y3=y$N+$E~xjjDy7w!y+s*m1xjL6w&x zV4n#=^Api^>$Qk1X@d~D-_kkSHWNO-49<9TZT_sKTfciGM>N=SrDxL+tf?15Bsr^} z3thKPi>|O)4BZ=CdEq(43Hq%?CcVo*`=cp;xX;5lKeujP=XolaDQl3hIP))*=)Aue zdG#`bH&nw|9#>+MCUg8hb7{(S3daz4uN_5jZ2t_Mu`mw#Y@GsiAKH4*>LpwiJ(nzb z_aD1qx%%+@zPBW&!ViEY6ndwCF9#x;n`%wER~**a4$hy9Ch{N95YsaX!+_gV9d^ zXIaWe{x`6s>baYYjPkJkf6;=W1xLZIkAp{;Ho<@@Nj|CcVPNh-2)mP*p9za{_5Z&@0fLen()JX z+a=!5BUqy@xsx%Eu+{J>_^|dIx7(fhw65>W*WrzfORN9BbSq=UY@8wRd&ub8o^j{W z->U~RZrsSI9gub^B&``MT)5To+-=2YZ_j9zC_1GBwHcFAIa-q|Po>IpnNVzxMu{r! zQ6`&JUa98#oaerh`O?zHYCZOua!_!LZwPonP8f>G%=c$or5B; z2g+tXlFTMKS=;l}T+zTWr8P-Vvy(3#o=fI3BUNN>f}q1En=N)No;A!#zREA)a;t57 zNIB^essHO|k>y!{u5KHjk1q+3m;c<_7A%s?9jk8@#;1tN{3E z%Mtd&ekW(K+Hk{-BWHw&Z2Pn4A%Vo9!;jJZSC+z4YbPrEWVWBCJ^-~2RSx#ce7K8upsU@qn&HQvX*Gu>eM!24jb)u*2{Sus$S`CH`OaG zI*28$ublEEpd8ir6*`R?it z5B>6FfoW=1H{ZhbFH zXpxFZN57=8)btlC;RAGdRauv@bC<>RWkeB|5zV@Ef@wA81#SQ_6fbL0P$UsB8-Dr(f_jJA9d_gOC_9?ht6BKwxo()9nPq)5sApvON8> zfd0)9MC{2AjtQZm_GXaRcgn(sQy3$13<(v}^70V3vc^1*`#^IZi+-=aLoqv3==wR? zD7W8X3UI_ap}c&8bV~hk>#_2+d76b=&lh~KcI^iR=eI6Y&t6-;H{*Ey6si9;X6)Ud z$!iNZEPLhr=U2uet@iS7zm-d1;HxyodGnE z|H)60KRt1{W5)Af4~?fR3~5hoc5FW7=<9X#_5pa6-$9zl9j0;U5Z`Y4=ZC1i)p^&i z=OMp|-g}w+`;~!pjQTQ;oJ6i+VP!vK18P;vL`s(7aur#75Y@#&4DVvO=Z z1Amr8bcSX`b@!?2sGkGHISpYA`3-YRJP4BV0i$>Dxd?pI%?%pSZPr#*O$?H(3s+-1 z18uXxTX}&8-AzpU;EUWh`aaLy2_Pv^>BB#-AxURvQ>@q~esjOlwW>+m-B3|txJ{R% zkJeUKg)dz1>dTN)yKJ02($-aHt?ROp9H3$Kdktxm>dYmdDHy@lP3QL~??1nE ztH4L`S&7b_>`YClbK`v)qe6!{*eeo=kotCDK(&Ob;2g&N3#jc{lxvEApNium`GVFU z+!>{+mG!vdK2sm_px7p7n1oFuZrY^~H#selGV}&DUX2#McV&frZita&UwRX?15i7g zn;oQQL|k-ud!&{u{$^vy0dRhV_Gx;_;^`le{|lL0li6GpCeF$AknUhgQ&Yuf%oz1g zk8oz&4_}yV(9wFQ)+E`~8uxr@MeOG5ojrle9{y`7liinM!h9HtU$`WRkX-7n!Kl=1 zqx8NkBK_Z+Jv0F`6JLC}tp}qlw6*#h+ihvno4G0ltt4t0lj4+DI~+?A31BqZk7a%X&M>Vi36msPFlz?o40wj*iNL;< zdLrv|-5%1wYXXPcy-X6%AysU(jAg`&S}mm}F3x4GYzgK{ctp)Fo(x>MlSFx}b`cb# zJG|~aKT*4pp2VY;JM<+zGD)HvWcP;;4ca%mwziuoF48Db6zdCwOEZ30$~O@sgqZca zV&h6HGcUEjcv2h!?VOoTa@y;*SUBZS7P#+4Q9DNQYsCk#9+tskFy(Y>&r&W8Ro`%A zpG%hG9Bggia|HTEMW}YY{*(vZ8c*fQVbZ^7Q6Dv1I%)4=b)stMSc#>iSflIAcI`_tESmAGq@}Cf8@~@a*GF_0pNfAXo zABp+df|jviasQ7^m>Znkm2h}36Sz?5)h@cYNng+GJ)F?>T>`FH`=yr`=W3&c{~;q@ zF38C*ObOOnpREs#M>}Z{y>eGcN!!E|$9XN=y^61yhPN(P&Z}H~Jq<1GX|>GPz+M|A zV#_mu$sW9J9(Z`5(XivxS7gY|&@Eu~)yWgVv8O@llK?9)%2n8^qrdjBfE9)2{kKH2 z@Lw(_5#RG+`_e?VOs$~@v<0ucNWE#5J&TnXD$M@o2` zU+J#u#ic^DLuv8a&>;2A{J6-RBPw@SG3?PVJ#SN4y!7S(ExD69@s-P~PV>PX{19r{ zUA;tvEWFf+?|i)RuT7SDfKYBBmlVjZkCn}6sXk%uN(9Q;lksF+j$c8HUPDSO8tdPW zoW0e8f&7e6da^^rJI#dqeq%KTRaFm9XkLzR=_q=`gI{x+;5)0%s)+}i)(`;ZTk3SB z0}%>HEZ$Xaq+mu0dftI860`Un6NMGB1Q<}J#Q1$+~f-Jn)WA}uJlOT7~3W(xC^ zoR?0emCl1w>g0;$bvJ})GP)0Qr`Z09-!uZ^f z(!MD$Xtqknp>?$@R0Se}&(zl|)!4ZP1g`m~=jg7@Bi=#`$3n9Kbfp1&tC^F6SY~C} zuBA3(ovLvD-QZqfwHbfO?861RU{7imCPiBt*q4Heml7#hUUn#J5dtb6q}?jzw!X%! zuL}ZunDwmNeYAkdNqb_z76=dqb;Hj88VO5%#MZzlrs=gn(WkIZv-Sa=vw#W6^&zD= z^->h?^eU8S?waF-I5 z3zPi`mf$M}u)gaTb)6-b1#|Yr9>=$-Ppxk(46=rllLBAIH}9imcW#~qzUT_hTNl0y zMX!C+5hJjchggFazM;8;xAN17%BUI1G5;1U8()E`D_BT!4;ot!VLC`bqJingb5|$H zU)!!$a4vrfanq|xcGW(k;1`2ng1!>B-&mIZZ(?%PjLOhE zMC)i+=SMW-HobJ82HOOmP9^^Eavw5o)60NA|L22*x1^nL&UJIqHoxg&Ud|&!aYbWk zWFn%|Qd*QYO%BVZxxCIwq1D>m-3peC>^^t!nZW1$xywVBbxPAfjp2hiJ`>WUon;bt z*K>i(J$&$NcSb9yDcwz4g;P3tTsk{!vWZ5u;!qUnpB6S&6g$|seZ+5D(FCzo*wJk7 z;VnA)3)ce$jfs8P^+!UB#oVO{iw+t4out`}>^oZhQt5$n)@6CbVZt!+nw>55l$LUg zbS_vD?L&8sj;tPxtqn`-za&(wh1Au;vo5u?p!@8>`=9R_?s7}0w6(&CA3WOA^~#v) z{`ug!?)0`VAQ?6ziB=l_$he`#9mCbIbPh8?=gG!~H*=PMxyYx`N2mkaFfxgMnuBj~N%3+u6p$lidEp@?DYmkAggAKwoVcBu@oM(m0J zB`@6dCeM>CPHcDV1gsEkd!l<2y9FcU<3r;v5#1b2Zp)g`_B%EX7mi|kt6jb0wSo{B z9o?Ed<5-{^qw6!1$ta{E{lP=RCBvVMMB6k87dO`bAT%s4GvR@}SJ^0L#sX!eM$(xH#@6^Z=^dLsgm%2v=>UVq!sH=f(1gx zqz~WZ&6yB6iTBcnX&Ed_Ac}SYSMy5{IAM!%?T`X1VDjLl1kid{0!Tbt(I=0?>978M zo~YNWUcI?P8)wV=Rsi_yy>Fi#`06C4-P6@_^c8(8i~8^R$0A%Jwr%~_tonD(Lr8eh zSFipFz$PTQadF2J+mZDYpzwPYR%fTlH3?JTPn*KM|prv zI-pk3U-r%MxuxBU#gaD3r@MA44`r%UnTM1+cYQjch!@8>)%+gCiv;7Z+Qp8EE?)9h zSbl2ZV3e$v4hN?$jdqs#+ccQGX{9>}zlk&;hKoNq`0T3{dE4*lG$p{96i^_t-u3x+ zO6X^&W)yuL9^gE|c<$f7`t#-J-ySOSKu!BZo%nL7sx0x#cY;3Dw!Sxs$*AV&~X0l$|YEv#q5z^zt{7wpT%fhD-LVeMcxgQY@9UHiXD$@z-fazlXH(~4TL_Qyx$OEK_gdae3o?q0n%=CwNBNC3UQ*lWce z@olKGHil&gjR$oEHD!2nIxRkw5vAt!E@*z2f5nmlsbZJHf0w_Mk}6;nB`tRHwYK*7 z6~<~SHi;$DZS(_%S9m4dh2JmXYlWsH2IduTn9V;|9t3l4Hn?Io&U8Cha=vf%gGzI_#`8`MQ{yScwp@KInyZ_o&)ue==r=-BcZ&YT3x1QPXW?7E#LKlR2^Z;0pV)ve z%%Q;}*dZ{E*)sj2=>E->BHmetXGvp>ZE4rh>$=I;k9IA!#Ta8M3rwWdMbmPiOEgx&~G=VDCQ4OVI@mT6g;>r_@gw zPCO&dv70gpSkkx&|1Ei|s?u%M_yNodJA64`6+_WkN?Pzb1`$fF`)o~UbCxNt3)XGv zt+i=#va8SgwQk{i%6|0z99lgho=_<(m#7q0ZskSfmeL{_%*^1sc|XX0BA4?P_u`W-^*lFH+l}cMmlHa3ZBK+JN$I!cC@2}T)3o??d7smQ6p=l5` ze%H`H(m^^ZD(*j`$d(94F^1C5TeyDWRC`H@)=t{R@>bQIcZ>JL#1a#LsOyT^ zcPn5fGB+xhV)JNb=CVU_9)9RGc(jAr7?fqR(L4|-islfC+KsF9QqkfF`bN{ygnE5G z70n6*Xl2rkq}%mi;pHpoU-bv9Lo8ihv>=u84>zuI`7}bbgCFm3$sCa&XnhL= zT|x7o^kYQL6DN1ybwwdc`^agr%<-2HY4`cly{Rd8CLjD0jq4P-406OxcAiDH;48I{RILHYFXiA5DeZm6GEU^($2ur<0;x zWM5P9^BQRa>sv$tNe)&VPw6Z1R3V6H`l{-*+$}#{`c;$r@zf$N`%Frvpq)JDZtSyjnyg zx1fuI0$t9J(+$NZdP{;{L?5>htaaQ8h6u4L9_bvPSrGAy#y!JVTIWgco%q3lBd?eAy$dT8X_5FY4qDr?H-RBRE+uIF|nJ4x2t5Inalm&SdL(;(YX`+#ku zq+4WtM|GM!L%QOn8g~O4U7I*(v{JUoGq9g@95}=+K~NX}hGI$#lmQ?*D*-*1yhi$~)YQ33 z+Sb~sM==SMO!rtHU{*u2Ort8o+QVOIC=p{pb37?DC>4%d+A)QdnJ~ZS0gOvAt7`j` zBYW46jv}Oq= zd}Sxpl~KwYfXI8)0?fYnVCgPY222D8i<(tHxAR5LsU7;<(}57`WA+q~HqUheiM~6A zT?obDas1px2r^#edma-aD6oVDSRAbz4DwyMB_kXh%j z5Y=KAa-dAJanxoKpjXSoqID}4?kiLk*a{29wWrM>k$lmo)=CsG3u=&@oWPYtX{JNN zL?4=8!(oxrf|GH08uaYsbpQw2)u;#=3LLqSV|+tP@w=Lh6zh`*fgQgXu|&dT6-nu+ zWmf*kNEzG(xJc**?KM$~V0?XXdEJhv>|4CYOAj_`y_69YQc|qY$gUejC+QmBJoujW zVH~luZ#L?Z=*;4JA=Zh#iC@gSsH@8meukBEY89yLGRj~!UyHgpp+ae2B&>1|x^8XM z{nOmfS*_jURv7lhD0ZpDhI^h1K*f9fMcR#J2=-i3$yMH6bI*w*HkMdl!KDts&?qlA zP@RGk&Zh={>xf&|x-mwt-^kIzUi74>oN-*IXs#jCHzKNn6s@lGK~|@u$;-{lr`vh} zJ!J~#yPLx;tX^+`)yA_Gea(YMxZ3;7lssz1yrcT91)4^wL#r2EG6sLH8czCrnp@KIA2{1Nfl^984egxEORU0?lvkW{)46nY&;Ldmz z*5flpH#g|gn*C&Vz$SU^g4w^GEk!F&A%*63k6YZxu3+#YV&)*}C`n_{uSfPYFMWO6 zo(h#)(166C>Z!b@yZboU;gHLG-7`Fx=eT~#JQUc2GZ!>5^Q4u!tFI8Ic(Ku{Q3S#W zK=D2e-nmvRJYtbFAikM#bVmVNH5wTp_lmHnTjEBRGzTpxFTi3vjNokVx<+9gI| zKB#Zy_V?T0*gW$6?Ket+5_>5!T)lr^QS>;FdTS<$75x_tdQ~(H>Lr5PTdT8yp;E#! z(U-|SRX50g9#?$wzW8g$=iiTPe&d!27fHeUR4K4dl%e|jLUTIknfrvT&NP}aYO1rH za6bcA(-wEi|w2T?+93UXPHnjtPD7Lr>b8f>0Gl?;s{0Qa7Pa zrp~VPeWV};)tNOmj+}M+K%atY$GFdaTuRfKwOYCUE{?)w-ycMEtp-M?Jp)3WRyO6X zgs@G?MZ(2%oB}7RW3<*u5R9#DZ;rXt+r*CgN!;_js;;{k8Kso&!@;K`qS}|#{oxH& zv|1c`GQ#IDY!JC4Frg{uDO-1PRH4M z0H+y-fONGO+|(H^{RtIz8yKqRRLwfd)XZN%+-TvA2$Y4udnnEn+Lbh*u?^%f`@sOs zqH3toJEaUWeD%;*hf{}6WvSPxA_e$CFag;Bf%*ZEB|v>5uHq`20kUdYmiRzc^u-Z@ z-P9kRs7?KH0-O4cxnK$-+Hx`h(IS)y2(3pmNYPT3UCLylQxMx)#;@`3 z0-d(Xe=*0Knxm_s_Aubrl^zk%{LDx@uJ-rYZ`)}EZ`Bl>^2|MUjlr2OPm zZthocBJkaHMdgGEQq*?e#(zAyDc<+v;{eb2+E+hsLVg(U=%xK%>R6v?eZ>&o_olU* zALr^uYDF_+uq zowjrRss&nCY#wTy;3SJT;klKQ29rz03W5Ixj1`6mi6X$o6agvLomS`OzlY-yDKJyrAy~x0Li*cu2b=H zK|ynasZe;Iw~zIdGqq0fsgT;_GHnc?f?`&qD!dwECRULFYl*j728tMGiPieul0?hs zpiYf*)h*~~t1ePc6{1hbMI{f#&5>McMlrEA2KA=n8{Ngqm{)eld-`K>H<=4mC!)|v zj-Q$rPq=0JB7nFP#fT7OdH`UD8=|u*zYd6YrLBuWjkD8U!EP^E`yxn^S)$w3mF=G@ zfRt1g8g)KhzBPm@p_@Outz7N&y&XI^mYaVj=fAC*Oyr$rh*8rhm0F93A#B|p+nxmB z<7!igQnFQGh!WM`qw|)qg!uFx2I84=TRjxr(@w zwjKL=Dl?!sixaBQCUO>5*b=pmC#?ck1{`^7dW;BQNJ34+#~ur~n+r5~^Zm=Uv}}E0 zksnIG;W{#cGyGv!O**mW(av)WSaLNq1nR-a9T|f*LrAJTGB83J5f~{?4VkIfAeA3l zwd#;ux!^LtlVO`3?967z)oH8MVx_=Srx>BrLvlc3Zo05yi-m7tc^nxHL#cRljd01nWei!KRR*c}*?gri2h?TCeY zlA1?*7>oq^qbEg?C$iHzuJO=dh?B>Ga0zdG9J6=h7|f7XZD54VN(R6m7{;*&Y$?p8 z@~CA%k8GNPxoXTiY%vv1puL8#jV}?L6lHZDwiM`1&*tV)_E<~|s2X$L)NeQ(@q|w} zjl*&NfATOpm4gfrQ_^P?j5KBE4Y@fU)GxZSIN6~%j7+k`qLOk8Oqd@;*D8Er)Quk- zYUD-@!s@MU)If6QrPyQVX4q|7inxcHNA6Mo16kV`X*2;KP=Re=OHy3=(2&`{C3lR?rj2Cy5e_uIki|*#r3olM$=C^sp z&l`OKr@qtih2sthLhvm%uqTV0VOry&+9Cl7MqijZo2Q{PVc`EWi9pVj-=eAm`vP5NTM z$b{tgKOlDfTKxGYUXI`|4nM=utjSHoJuJ7?sLs72dGdB6x6#;RH0pZ|d-0{wKB4U5 zL^2Vq0UOtC+_m;kEw!=Bw#5xtEw+{QnEwP)1 zjl-K_Lo6Sjxdv@mQUWw{_s{-(;peXPmPY#2n)f1NG+v1v@JTez`)WMX9&3F+aMmR9 z#o7N_B9g+x6C-pnGY0itl=lj9V-bUPL+MCSwvy}0E*jC!cb=d3k^7lva&(&cl|#2V z)Ovd;V#e2Wu`gf)N$!ks;=T`1!%dyzeMjqE!|K81)I*z%#3c@ zlwK3Tie7u7vp|6c!CMO|K~3HQIY#`YWge_>LEe;QW9j}Ihhv5}`UCpnR9pa-?LKj2 zb}%OUGu>8f!fZ`(U%J$&4pSTVix*D2?rWX9sEr%3b3oB|pV2eypRPiy7~bh`+^-f| z(;F1!N73t4a2Y+*DHZCq+7XlFOi{zhsNm|3x!L&A35BfiOV)n0lHT~}@l|ALStJ&F63DK zP`-y|+(L|p3B7JbV+cT&XsKjUa>ObrP;Il?tI>OW0;ul$?u-4^Saq4`w{|Eqc}?;A z$w`wfDGOE3G!i$({|=T_ySPz0~shWGGx16+HTctkgu8 z!)e7wS6loCVF;b?rqtTrMjH~~NvxufX~n({@q+cpxsRMBs=Ez9oFwb(Rc_R30;(Qu z){2sm|*FUKZO2uboEd$2+~MG3;xw6vE2L?7heQkLD}hB#wo0^%<`r6CS7@G%Wc5F<%EAYACjB*~t%4 zmuSiUDdQ$*#pcl`_?#kg$ogcr(=RR3_Y%=HYU#Q?-#%kcy;Y(PO(?Aw9@6#k<$i+K zdY5;Myyvs?|C1PewUx#dU(NWDIZkjtUl|$m6G~%1sY|4|z;Nc&+PcK7@^!<Y4BlIp@66kEK6x}uaZ;c)11QaXNxG1&m1&k=Uj`upXkAeX zQicj13U-3?FtF@b-R+?P6r=Ioc0^kM5(&G0AXBnFR zoAe7zpFB3iZ%5>MKUB&7T7TEa5zl<-&Mz<~zx9zj{6b>o#uOy&i!IYqIeq7S-Tls> zdjM_)ZFFm@TV(omR@t)){T}=VZJL_-`PUwQeChGJh@QEFp7L@Enja)Z%Fs=09|p-p z%l}h$HAgKA?hI@hxOiv1Q;CKX6MlbU-lcQgd6<~It~siF$`r_1{=56NWV!667cH>8 z5a-WytXbDsYyyAG4y<{$a)*9(7mwnh3b(;kgsa zOWZH;SPkNMd3(FNsK_vf4(2>+U~Rdi_09Hqr?ZcNdbw0_Fyf%tcO%iC!#MW`kW4)d zA=lS-qA0rI=g15K2oSJa{#bbY>gTN%rI(UZs%}x=_GnHCaDJnojiXumXKh1mKfAk1 zm4w{~cPIM#4&ox6kzw~jA+{JV=l)T+m>*Ubf36J&?H??J zgis+Lv{@YKBL8O0xLN>!ycxsMvD=&t513_1BbWU=*R zzOyNG6R%<2tcIWV6a9k=Rd&xMa4g(RmB{;Kl~|jaGK+&!G<>p}Jd5h_iY(F<@fp5K zFO}J@(8GN(bsBfk$;-xSgeFljA72^iu%!_%o@9eIPyNLjk0c<-c=BVL-{J5VmW->7o}Cv~2MkK8g(DB?=Dah*$X z0uA81oGt(+qk%g_KgZ&4-9X8iJ_C(-Y4gKR27t}U8@zkvAmSTE@k(pL3rHnweI|Fy z6H}0C)Q+w|w#pqcEF!r7<@2^isd(w?QlnfSz3yTsaAgk_R0OA*aU0d!WSqUpEjs>B zl8`6-Et!5TgSNj^^t(@TTlm>*68>wS!dgl&?7X%H;Q!;b4iwy7*_EH!8-qac14!<1 ziKs0_qDq-;!3y=ie|)fN)*wR7of`TneS(!Ugx}z+rsdYEML_8OBGD{eXQF1Sygf*) z&_9U!5zX;(#FnH(p$%~0E3}W;s8d8i)O|=Qe@Mt~QTsaOLJM|19VCXKnO zyv=Lb-MX}O%cO8UVi;UFbLNL_X=Dfyw4|^FrF6Uf=~(1RyS=_1QjHema<{yeB9$O0 z8%Iks6vD@4AQ+m$Z%3_WCI>h;O?yUx8ki7!1V?ZNyNV?^9JQ@!AUQum73fvD=E2I9 zqFl|#GcIae4i!K}XnuRfEAG>FYLo<=BcolTE&!T+hezs0xC?vh>$#Dc zOaE&=FexcetW=|qC#RFe`XmMu)_ZMI;~pd=PsotAzkW(>0Gd~n*rbsg5n0xCZIjy8 zd(G%zeaxg*Tll)UTguuvxYXvWGx<&wC`1?BLgYNy6}i~HCZKzbkEyMh8}5)lSFpn% z0~s|Zo^MwR?G(GBt*S#Z5;{oT07weeE_V5XySoC`*cV53FMe|xxEc*WlO`>XO9S*r zleAdak#2{cq?VDJEdw8Zs%e?E`yg(3db2osRy==#sq91EL=(4cQh8kHbT`QXZ65Ay zO7QBH$S*y0%6@)|eTEGD7n8_FwzQz^nXu@6Ug0?0{pEH%$sxRmK2ykzJduSm-!%MM z9m^Sbd{Lk|j96tzDa(g{pA>XGckK;!>Y3TQ*Q{YG<}tDZeNbH``@3_><=GE|LhKKR zQU!Md9@NwtZ&%MkdPH)E{MGG_W}nH59JQG`=<@7K3O|xkpH;?8YyXJvxk>u8s5qU?yQ3wTI3bKr#htqAFXj955 zGPU;*@n@}@B;xLW<)5P+Zf6sd>_#VU6WQp3lB6bst#h>rh|`vQBha_CSRVR^ zCzEfjW}!(OqMH-EU?<_Y8hT+S=EwF;I&bGMsP^M?R~9{;2d_CjS$>$k+_sA>Ruko` zo(x2=e>1mVPl3L>_WxDQe*bCSIM~^E@NKzoJ_uSI=ah&j8V_h-s@+-}D0LT=J?k-sYGL+E-? z_V0ZyDOxPC_YH+giHj@a$t&g~YJo~zJ85hlVI=3?bkg&w8-8M;Kkcr)f3xBuN7{D&L;H~b zV(Vi6A^Xkq+q9fxETfmek@k-35d#l##_+<2Uzq)V*8BLP5U%j>s-ran5i#xDcjSX&w)g0zgj_x;B51+g5ICR9a<{C)%>i|Ys)6KxPXwp%#U!wI1K@535|{k9LCgo z`noegC;Tw0)D&Tqv?k~NPx^2d%988~Y*fu{4q7%-W6}m8$gRUQ4-mA)1W*r`5uLsD z_=c!%dECu>oLTYk50P<^KQzp)dJ>s^*Nw=j^uM+HWSImD-HO2wt;@WQXW4T+puye{ z(A6NM4<^jcs;yk2g>wFWhvdwjXom%VHGKH3Lbl?%TX^dK^cl03R*lM8bXlyJ5Il}z zKEeWV#7R|4GoVrS(0ui8 z^*(7gisCl6h&UjVUP4ug>IY&X2)yYIkx;7p);=}w@mud9S8G=CmQN?s7VCRF%Xm3A zPdG*GShI=8{kLWpBmQgpr8Y))4JrNs07S-XnX zX4X)EMTpW&E&Y=fcTdEhmiGP|v6l}@mP9PktGZ{E`l26IT&zKRZ58V2pq4}csl4%e zhEYRx05*^=mwNPs^lnu>3|`>hZofi8%%Bmxq0nh@(>F%Cc#IJl9mrd@rD~tF-k0exC&)y#twE7;!Y>Et@uJ3O+q5VO+5yM4F!4actuCKAFOY z!2{ALYnfYON|4g|eEJs*4}2n^9{TJq+5l;P`K%odgi3~`m;@W-Pya{~-r6>M7hfBU z(Wn91UM4eWo;6vkDNicI_2voCCEm{qZt+i3M`(1hp_zJ#Dow?!M!_9@Fph<8I3rVL z{uM7=t&7uU=12P|v}7ATIjji!W1m|5>d%n$Bz1r)R>p59>`eS#bMU1OgVbl2vH z(a;}g8c!D-YY&C|e2TD*h`CgDAmMz<5~BTpagu$v@sxdJ{O|nUEjyszDr0cQ<3!^ehwc15Lmw4PkV&Sujvu#oL8yF zxt}Rwvrw54{XQk_3)P1kq~U*fqR_)bcDemiNYKo@7N+Z3;YdqWQKKT(rz^F0cDiMg zEW-M5T1s^9^{}Sp>DpRb2r&ZH9)LPTcx559_NC|Ym=Na2t-Wiu7}S+kYAq^A?*(S}rw|oeuTO92pexDH#$Yf7~eggnES1z;He$PANy3w%AzJvl7rJnwi1*D8p zwbm@q2F(m8;&$5^mY`dQZ#+x3Hcjn?|6p~M{HTfDn*~p6&iE7>p_&s zn((;&h4zT~!b9l;5=wG_js^q_ZvAxY&PT`iTR+@9Tuox4I107yUrTgt(nlJ|f%kCtkA%g8s>Gb3(t*vG@ed@C_D1;%=0#6JHoHkZ_;IRROUA zpY9WCufpy_RM6`#AW9*`O8(GQiCAkEBpm8b904hOnPdu=D(jOBTnnzUVuIsmMIBBF zOG!k);0ZJNmVhC1s5t#besl-pRJ6_L>wF*_{1-Qsar(R);x}Z247JL8 z_0mfS{nwF&?;J;Mb0CabJGkB)1UyoK6q(+>zODu^6o{+8JJHk#jOhSaii;#V^jZkjr|l`oRg)DZl8k2do1?kV+*K zPvc>!hv>zTPGm!0%t2hW7q=49;#umq#0J)w$|-5@RJTcLq;G42Gzuqt&}y4L5cX4S z05s8*9a?Kz4xv2MiSVFVilL1GZ3J21dK93aAx0@C45HapYxoP=Ku0{=?k^pN*=lC( z2ZrLzZe{r7w|;5~P`1_t`srHmNkQO7=!kaxG#ae8OY#Um-PNR)MI>j0(jP38qCXrsc?lxxbUg_2kq}arDU5`AAPgPr_ z3Qmz1I%Oe_3=h*78uBZ=reDAjJ$7cgam1QXE-$#qwU! zBltvWiR41B^IN}EIr}M>EteC8%?mqE_B)H=3&>?v*o?mO5jAnpHG6OXjMngtt{hdm z%fzDLa6oxzG#4H=Q9E+`0N{?W$*I?>Uu=vA0z{IO2=H(TNON+|1SGvclGJtSDsjYn z2(^wU;!$y`a?{$a)(s-I8afV?QtRpjIs$$GBw|#uj)1ol0%HbxBR!^un# z^5^ZSOG>6DtE`5Qg|7_Lle6;79-R7Id0nH`4J|~lAd$>y<1xlZP04#$U1wmwJT>?I z>3TE#`Go`u5cxK6s z`OfVaZwn?ay!(Fs3ouysO`sN!PR=()nz1kByQ9Bw%2OJ7Qi$Sj-9OBadrH%sQgXi>eG<}VOw($XAZm*m zrX`!FZmL{w@Vx+T1$}f|M^zIy(eP`;)2)g7V?Q?Ow(0iwN8Cq{Db%u-%6YB7-2m;a zJ7>3k%dqo!vMJDojwl$k935eKO-{hVN8JQ1BaSB3&;ny#Hyp+@kq-+53TlPg)PQ`X z>vEyMQ5x`JWIz6Zl;lO8JLCO;4#NH#)5z46a$J$nc(^OC38#bU?YpL#fZ|I<*n!eb z)l^>tZ}9DpO>3kjknCr&s{s!~{w#x*NNd=T>eIPDds-i@83Z5S9?P@gXTWSnLg#~V zZe>^=3x%1I4=3i8v`crSNayZYJg+l&ecJ6w8NJ-q0OwjRET=cQfB?AiEPgS_(3@fV zrg-I!HW<|$IJdfRJvdy4YI{p39Ztn#iAZ!gPY1Q#gj|Q+=)KwSxz=`cbFRz8WKYoz z@r76@9M#;=RYu5iH(*0q7i2*9n(H(s_7={++W@@OvsS4>7~QJXW)?8 zc9pwo`&CpG)d{~@NK0H{qpLaE`Gv7uenx6uCr#RGYjifvnZzS|Th=2H(Uane%#)Gy zmu|0g?CPs*@?R+(j0plVOw0p zB$TO+^IP)0MHW}hpg>jvB$qrY&Ol4Nimltoy-3X>KeRDVM@h~r9|!P4MYQ;1 zN9#ZqsbFAyUnf956A+Y8I=@ELucQWf$=bG65oS+GAkoEv!p8tO)IFtyERoOT4z5vf z{~G!dVf|3~UHrGm5f4v+-yj(Xdco&%BEBC;p#!5k z%zsHAu1kPQoB&ZgT?~{WN{%ZIbey6p1mQey4hUi&Qw2pDG%fUZL!VBF<(&}PQgMbH z!LnK^SP%B*V#-65mmTTJf;!S6V~@WT*J%hA!Z;7WN>a;XOY3%(bA~E8dUb_pqpH2)q zO?==moONmFOIs$%Rf;XfFE}rned%J$ig6_HDm`!>tY2xuyB)8_(BcPZ2$n(jY%bxnLsMl^_?TN)( z+q=NgW6O_ZO@4l)YI6O=V{4|6r^dzk=~C2YOrGnuXZ_X{RHGRIE;TyJx$t47oiv-3 z77Eee;=%zA&0DqwE1nsap0^6L6&?@HU0&L$e>dg6r0Z;4<#P=SvI|~qI50;ag!O#I z|KINRt;LCUc7wJaKqy=lJKu?Ta;db-gI^e3VkMVk42CZU&%jyd4}iY9e0fjr=E$xu z`K&yK;b)&vT$e%DviU+x`Dga8Nq&F-hYj1}WrBa4{|IDpTN^I+4~P7A)9|5_=F_0K zwPU`2eTV3SnNR)9J~>4Zb`I9b>-ffa?rQJ8Ix5u_eFfuEmM~hvSHA^IBn@qmX1p|A zq_RX(J|tl)mYuM6aO?z}N_0D0`uR}Wx}def3nSrbD>9*b`m_`-+(MY{z;@QpfL^de z_qE}ej`k$H)KRKkCwE5!b>;_ryPS_o@aXj(<5fdz4YS+B!XBbj$rBzt^;Yojpxq*o zOx#wpJZS0d^SS!(!^w1)c`E#*(Z~$A1W^+N7JwY)qO`Quh7IjV%$jvN@Rf{Z^Y2QWPb6B!BQQ_`Avc)B<79i zAehUhQcib=vx*j#710iK7|PQjBL5^~ z#D+<;7MY=1i-qf-O1I%@j1!Z-^TZ#rD}-Q>o(MWKp$#KT}a`MlW|O9LEu2Lo6GdaDSC;ZlK*wy~(0+^0&_J{-J{mQS## zxFq_aafQ0xctM{QlPaDa4B@=D!xe^4q}Po8Vg6@3-a~KtTGm`jJ}%|7cW5%oPjVxR!3{T~QkBgmq#9(gs3crLgTryI@cx zFRWD@@o*j1W_T+9z_DJ%J;;U1tEq*a6`xiw=(N9eC)lKfqwtPL7avXG%kuu|-OSc9~`?H|UINjtXmVrl2gI z;sp8AW^@<%H4V(pAM(~W_v6W%{r-=sf4`af&OhMJw6ImVf1cTSh5X%Xy_Z_!DROKv zdj%^>1a>UUj>k=U3xa>BvoBtYt1941z*UjfLDQZgud)RAtc=QWU#_+av@o<^CrDMD zoyh>1TG?5meXpaKDD(=rIrZQJF71rDtVktp?Cdm`ltOzW!*e=2^Ani40O}}yNH0v6 zaT`OTbiPoF!i1w6+$LI@&e$+9$8ozxK(KDL}gx=H>x%SVha8XWx7uIkX^c?AV;{^~8_s!*tA$ zbHS+V?RRIPSl^XZ3r49xnEc!`3B3@dAlHBFz@9l~ba8`w2!_p(v+sAaoH?Haf@3p-S&K=!YjafMy_ zk5pOHM%zBv4?sX7UA-?Xw68)o=glUOlJtV_ujt3BVvwGxiklu91IZpa>B`QNu<*4t^Ue#29Cxp4xiYCQyYHs%!2JKD`yXw|(msLD{{HWO zC6WcuJysp46)fxj>Gxq8#B=xF--)hnS$e$LgP)I#du5SUAao(0{99IrX@X z+X|N%HRC$R^dD9)SYhaTx6Q%N>TMevVSl3z7A<%En>IzN;xGJpihw2@ygnCVlZRpr znOD|lhe^V+|17nB-+qjx%uUUHf}d1R1zo9NrZz$;b&9e%^x7chXw?y-kIxFIx4bX4 z-1zwtppSk6LdYkrMTeqXCh6aOGI0EoZG4<^qU#bO*VacLLWrI!8pH!b+ad{?3oh~w zVI2LF(1FAKZ_$%B2hnmD@BMXMHwa|_9kh88{Z{|xF?3G<{-CG8rSQ?UE?MI#_J^gQ zvT6f=2^c^iHe=u8%wY0&D5a;+Ol=$koHoTx+fFV;dfwT!w|%Sdk_Rw3UiT} z*K;O=V+=OBwD56>s6i{kTX_qDw=3FlOAFVhtPp8)ffev8Q%DH1q61Oe)F@AeIg&nx z+E7v#^!WX#kwOh9<;}Xgb>;^MOZ-A?F0MdrOHvLnv7~J$$c+}KG<#Jv*>jRT@ES^z ze8onpCiHahqYF;!*S}_bnU{r^^|So6oGJ0z*o5s7E;^7^Ijv`CQkSyWzB$=2cI>~Y zeb>Cv49b=6hq2IPtml-ZX1#0<8ltNW)zN^HC$A`jIRH*H)o2+v+Aw;YZrR*x~% z1sSjKnbDQEh$mSl*md&~K`Iwib6#nD)p*Ivy))ruBmAJipqIP2OArjs44Uzdmm4ot zN#i;1mh7C$Rx(bAQ=IfPYn0`CGskt**6vrtiE(6W<-y5}Gwk^@I5T6iPuIT%7+LZk zfr950>1B1goO3lv#_9esxBwFH@FPde z9Qj!DIh*8-bYtz>BZ+U9Ck~gBajK|P>JyTKLY{FX_bdcj975ex-lTXP?FCS(Cr9^= z9sI|!r#9pOr=H;2kz{3i;3+O-n1)ikvM`pGAi31fnz8RWJ7wALWMH#Dgu0Q+A@9!0 zqBGMNdZv7(SZs$u?&2>2J#>k4$@PXBIAD&v{!`ij0`)H7AUve-Z5tQt@(aqjEp!n+Ki81_@qYAk9r~ls6Bc7YK0ouVY zx*3;rL-EPdm3-es&x{Rx#f{kHn~JR_r+(r{oy%wp%FN8NzW>ik0B1m$zvqq6%m2K8 z@-R^ z`^%fnkA@Bt8`Jz6U9BxFF(d@B{Kth%%vHLru}Pf>39(xK0mXPBRG2KF=1k*ELu)GB6g8z!0sWG|_<)Ip~o}MaST+q7-34 z$wrLG{&hR3x7t>H(moI9DjqeV3+5!AeCVuIBsIRiCOYBY;Z>9G^^g`7tV&4GUpAj# z7_sO4%aI#XKy%e8k`Ddq-w0*5QBE&(Q_Eg9kJO>%h^s>VxCZ6UObXdQ@?u^=^!@{I z%jB;rO0|Q!IN7|W=2AsiTuliYu$6||<;E6u5Y|(xHpr6@``S%y=)s(7-F2N;8YY8E z1{#lkQ`xCe<@&^%ZiT9wv3T5S#o-5$A>J}`Vcb<~tNor=xztvZR9|X~S6XXrQy~tL z=t-BLNCZ4FY~CZOoMvUi>aoS9vyc)^VS{E8XCYdXIYAv{T(^^rY0cuuM7`Qnl!SB; zQi_(c@5&c`>O!I`n;{sCd~{z9j3#%>)-ozEetUYUY#h}MpLjE&i*Y*EOTeBoNQ$lM z)$`cbR8D)kCL77IWitvwLKz#e&x)+?G7n*5`^EGuKFPaNrH)ar~Bh!X*;taA2| z7m!6)q3g-?=h0Z8NPTF{J(Z>m13~Oo^Y69)&1-yLUn+KF=qcj%%b92X*0$y>+t>SP zJ4*atTDl>FZlbDPsm`b09Q}nMcP=||%(!%es~yJwAhEB@jYJjId?|ko!5)wlBCEfLG-86zD;%Y(8Jv~NU4w9S^lm=kUbT^;xLX+Ezr4b zID|!jjOMw>ao-+7Ujc;w6E|DGP04!cd|bT+C?bL)(bT9fpK(s9v)4cge*zLk=zlzI zeL|E=tY85$)bs_BkfRUdx5u-cW^O<3BlgLGK>!^GVkdZLPi8^{zl7T-qfW zuJ_dvgd_fZXGfH{p$#H#9$) zj9bUUPKuqL#Q#0lLOdjW2n4C@0 z9Pp`FXuOHhJv7j?hh+#+-hfcMS()-Aq2R+DrrtwIX(oJALq&TUwE5*?KC~xP){=P{ z+4=`oAr^R-27eIxTg96;mG$yo3>izrU?%5r#(oYeVlyGNK2v4wSbJ$}Fw9yXW2YQ| zd5aH-w_N2G5pL@?e}O-5rdjTuqwfa<{Lz%tYZaXk-l?*_`S9B=cLPx=q;thCDKSwh z_I++ts>Lfr1J){WWefaipf3ICUGD~$x1=>Isn`I|((h3e)-O-1MQ|%jAvp z>hqWjhQZy(cnyn+C$>!dYi!FOH*fyYGFB&Z9`3+m9PIXmg=68+8Up?W3=`xYpEd@t z0ObK1S|boU8dEr+G=HA9n#bh{$b$(nc5i`slEO7cD*h~=`q}Ar{!HaJcWp7Q&Rn=P zLbYqUcls_>#MXtGt3lO7K1E`rWS)FzgW@$yH7peIP$bS!H1)dpI)gKZ>O}Ht5=5(A z{4{GUt=2O5a*WXMVfwHFw3}|i#Y@B=+BTBX(NeQ5Q=vjv@P}whQMoLGO7NCi&Lw`| zJGZyR?8>*irDph#spaCbx&`n@?8S{XqT^_{cN^AzjwKAdGi-} zd9(7?j;IR2Rend_{FMDIDTd-!-S}2Lh@A7B$HG@@>)OxqA zMmKIA*&UQSs}RKdZNihBoedoCHqqmegmNF@luVf?!RR0?e&Cu07fzweiYHit+x<`_ zr;jL4K8jei*$Z{8Z)|8hRP};Hq~btQDav9 zrih9!r`QoGgQ48$b@w?rcYj@UE(FVR)7FWUJl?uAV5r%)y+8aZFi(Dlud)i}1=Wkpw|7gVe>2<1BwKu1iRtKct3ude$GhrQ|evnIkuTv@xlu&R6YIlt!uU0Ogb0Jt$bM-zc62hq%b2L zwtN>i3zw6t{g^Sh8ur6W;e2gNK5&xl=NmTD%`d#r-19ugqWCW?k}F3pkb7&N==Ha7 zRtJcM-Eb>XpyV&uZ!S51oxIi8+1zh zC5n_%DDSj7_*_~T*jcp?tB13t#^bh)8pGJud$|dtY*wK9cy_tIKHSH<(uV_&c-dtU z5}Z8qT%YFt_EUSuf8Cx#!b~U3e=&@E;8DrFPj>^~PmOT$ zD8Y;cu;n^YwNd_es;cz<-`1B9y~})^TGGRIE@nf+{N!05uoo%V{Z?4)hhv*kPc`;l zELZ?0^(UG${rV(=&6^{fi(QKkrT@H`UBOdmdB!F1xa`xK4ne;#Jmg^fm4~!MV+|Rf z&AU?4!5XF-_4Dm}Pk`QxlqqS(9ag6w_I7J0ChI27TMi+`WF?v9h7_5C1xl6X$+{gh@=>3Sr^$m zV@+A#mUx^#p6H)HNti^!?NopzC9_?U?B>YzzKQtmhgE;wtV%ZH=H#lIf314g(mee5><$*X|X!VWGW&ID|21fNuW^=+m|{q3_QV;P2gj>3M?P@)%?;rNpbQ_bsYHo{(PFA|K&!IQGDj4LaHmB|5aAPR_}h^W}#+& z+3jxZ{8}Zl_Y+m0B!%>0UaT)9=@ZobahRz3y0g*U{pC!`;;k=#){Vv{wjWcM&uTj@vjMhtiAWlr37s?n zAfMU&v~2Xqv~E>*+DN)ULN>&et$Uow$ZBxJ4zVtdpfFYqm}hq0WnuJUtY|}GFoQEA zy)10l&Jv#?CKX+3t;fdT%Jy|}o}601Z$?T~ExA=jJA z+PTcdjjoz8l)rXXsro|mgb*bx@&VV$Yu-QRFghV2K8ZmbYg^$N49P<`2XcTAmiy8( zIPuTv6mvC%xZ^YBm$k{;3w!RRg_)ZLIFPb)4{3n%WL-#0$3pPa4;27uT<5PY4Lbk62!2pG0l3y z&edz(qISH#!FljH8ucodu@kE)hL{R=w%AEKKxnl7xD9Skb4$5B$%GF|ia9q9lo0U1 z2H+CZfqf)!L6}e#58s%`7d((yi#J}dOZ}+_rybnjZo6b-u~qUw_oev8?QV*%$K13$ z`a@nqwOG6_Ao>-5EoX#HSy5w=3{w>o&f|O64KI0o6|waOm;ZA-?RP_ZRIB65iO*6b zJd&Wi{=In^`g!K;m(V*oOA`TmuqEr2FWLPc+r?;Zc8R>T!o5UCOgGJNhoDpiQ6ub$ zBj-B&9Z`PU{Oot_MIA*C-Ge6sN7#{zA3GIZufjQ_a>T?eUvn(MJ!J{uDU*JDUdH7| z@|ORRAwWMOMi444)rZOxD=HG@HFPN(Balzq(mSdl`H{yg+a`^%Cb*w=77`&bu2-Ba+IzG*@Shp? z9}9l081Vm~v(jSlS!R1=Q3j)CfV+a@f|{oU`U^B_V*AMSG;`YY9os_qZTTBXIJ)T%jlw)XK?&)ME9I>ZqWlrgnH24cyfTMTG(ZI_&*v19ol z4qcFKd^)h{>{jIA3jAU1nX9WMJLhMnrA;{d;9MA`ELCy2virzzHT6O>@z~XnDO!eI zX9uq_QIbBlQu$gLL)hAl!ix4v%+KMlv&3`1Q{EfJKaWt<1Uiz zTpS4`u^+#u;jtO;H=W$lzxbG-;#se^$;A@uC?tk*3dz=CwbfIjqkj|kg;&`E-_NkS-|}g4_ez?>jbNvgOaHw1VWbCXS*` znniI}6auzTWX_u4v1JP1A92%sKypoTfNrHnbk}qvbkr^YGI8jSQ(G@In?m@@GKh6- zQ#(tb)((~cw!hN!@eX)cOX&Oy-HRicZ-V$8)8Qn-5VKv?2va0CCw)2nzmDn}B}B=B z7emH2uD?p$O}te>w5j2rW(D{$6Yw*FZ!-ezLtR;g#DO0!I{$bSH(Wewc#w}7va~0B;&swj&tZrEe`Va_EBb%@4u}{(_9HmH z*ErF&tZ_FPb}40{XdzTiJ4R>BTY~L)H^BznbMivCYzG8j$KpzCtaF_Qg#Fj?Y|5_^ z>y!jXBe1EVF{BB=1Z$)-L#gakL(!Cpme_aYn&c{{Oj_Dhm3@#Fs5Da!A~rGt_Oh53 zdl^?RGs&x57>f(*l2`gaw$vp!GDE%fyt-=;;q%a0%k}8oYd~c-KMZz015jGWTo6 z*vI8ZLJ!QFW$Kd@Id&sO&>B@stUlQPPY^%=wj+zLF(E(a-3_yj`&t9;!u^M5k>WI1 zWW4GY;U76f=!eEFX0DC=plA9CA7g$UwtCC0OYT+EI5sz-VK!{qz_|BG=#_Xkp-^6Q~!2_1pqTq0Hk0ic4Ua}{1IhHd=noGw;6Rvi;-c5#r zqt5-yE**d8a{M;B#=!hsUQ&29|I%v`={u;`TH9f-sVJXtu7DV-$hZg#a#Vt%UvwU%+$LcT`Rc#odHlpDwSGw`z4~!9lVo_Nxel7LJNMyk3YaKM>t$R24Bdsyvdm#l zbM@hAWyG(e$o?4P`pJY}qm?ub^&Tp5D)tV3K++8ZgcG@QL+Hto5&Tv^V$j-_@ux&i zrb8xkCkhL*dCWUI_qK#neuj+(DIM-Z49%Frf=-TZmagsdi^rn(A3`BpFm!n0nuifv zJ}m77o$zAu>rLsDQ`>A7m=B ziBvQNNyX1BJJ8H{z9}_-3uJmhPYoD#s7}fj$fKfP-P8{`mrI-?Vzt0}Q$l&oq&4F) z1EzyAc%qhcg8HO`t@8{uznYOX>$~!}zX~$(x~1QwtKXJM5+tGneTgwkf%B+o2ceSA zicOHSE)C(`h{1YpQFIs>$%>%t)gPf}xVNVifh!m(+yO{r;-(I>JF0_7CUDEYUBe!` zj~wiYNtA2X0UtZmJ63YPAcjE3dY7ue=J#Ge{fB7iYf;m}@AI{qiKhcCzV*If!S;_o z&-wC5ru)bjC0`tIX9869ux}=K&&$eyeb_7Wv*u2F-{toQv%do}&Ywk{onhZoM9da5 zlFbg1-)ZBeZOH%lX)LdRy1O&=YD8g4_X1vp2-Rg zdH|lhSVVQcjlmS}u$QqcTbNbUe}K|T_e$gt?gF>~WcG`UaDBKsuB!M|vWj0C?^dN? z+LiLMbU%tYTs%}8?dC4cd4d}1O7fA9Oaz&#K+V-|TEQ{Yg6>fG51jUc zr2lsVn{%sZ=ZwUUA8vhm^I`a2i&eo$B{p_Zkb8kO2zRGJvPhN;{M>RfBQ)aV+Pi~pbxR0Y&}ULsRi}e3`oFa|9j|y zMVJeqM;z#qLpCaA+d6ppQU>3XY`}$=%(jyLuL@Rv$Is7`O4^V4vv}V9=T((yK3A^} zQ|qS>DiDI2JutPnrTUcr-D`}7f}$CpzScl z<(-{8zyQgJWcadz4TxTOFOs#;4#j`aO;-aycFsN#hFpsH^6t^#1(pdgKApPq)@giKo}^ zjzCor>(@u9(1_jZY1cBHi$+zp4SQ@TYTL8Hrb20Z1TULmr{{qo1ORwx*K#N>0vVzK z@V27kZH|_@S^qf@j(ISC#q65ed50EQjz*+JB(yiG*8gQ%+CJ-rcwXGda^f`q+;PX1 z9Ws6!A0HX6vdxJ9bntZ$b$of|3m7+W*BJltB7ROU_*Y8E68IP9KP(*1cbEiQrH(bE@(Us8&-!IQZGF=(QImg}@J9Gt79nP%BQD?ye>F)&+Ue*t)=um@3 zXb*>mlUe0$UBPMFW+U@hO|yo)WFsGS9M0*H}?unKZYa<9|N)+zI$Ux#vDWtE>h?y4ZTchQtQk#ia{o{l9{vWH1A zYT5MzA3%qD5AyQcj?<8e2+@b>IE4UUzF|4uHmu3ktZ9YO>p`mT$N$MAT_nQEU@X!8Iu9a>3LVbxUZayE3#z-K6TZ_o|jv z9}o`!uh}K4$G-9JlJV=cxk*zTY=wAbskA?K`8r+VvFJr_y^`^{)Ex1{f=@a<8HXJ16`acAY9c|Hmg(o_#O{a*LSRrQ0vhF94C z`1r&c*?(KJN72fxyh>igl$CC|2CyELz9KkC_5_GYy0}+Pt9cdruJIoonn%=-~ zoe?=JiQZC8hkcyNnUhkkMS@!5wQne^O3eS>2UCGfQi$i)aYe^IIrf)2b#*}QqNsH%k#pug{`P;9+xcPuP0Ns&5N z$FoXWjE&HRMtADT-lpU#+6;$Z|39i(`^}cCDth^?bbUXw=(Rc5`jhpQRTiUVssjKhGPEV zh-IbKMSp7LT*nSrJ1|Tk$!sbrYRWVx{kjrjCM{944yf8TSk#N)-2%w*8|xf#Kaz5? zO3X9>9r!b+*|Cwsxf~BMU{Ne;)?DDP+jWU`jxT>AdBh@Jb9=Gz0Nx`8{i7tDcb5N$ z(TGQurdd(esTq)3Ov=+#DAzOeLnMJ~MBW*Vwp-tdm)O~~ZMTM-I)VC!bgf~0A_3ALzQXnFQAFbRa=rDh_{ zC@Uu9J$*(>#39wMlkLRtw3NpOlcn4(t`e?pIJ65ZTe$8aF)aN|ARR+Ws(Y9t|G5OT z5ek47*RERY#%_O9pSs(bAQ<1w7Tm-OAOIuJ$7iA{8Ypza|GgtP<<6fLn@t|m&FzE` zXR@B05mG~-Uiyb}Zxco0`l<|h{RIO-IxzY~qjfg)JcR(oZAy#jEDIsT^26BB4djLt>S4GdXYj_JDtA9Kw`A; z*e4h`5;3J2Yw>=@I8q**hpRGNT{U4YBAMp;&Gc#8-JGmt=iJX z_5JQba>jb>{2!Aoffv->-Q_znRbm4}|2eVUS@`<-FPQ2p1b@zzU@(Rn9mB>1^#6YZSmWAxJ1-&dDx@OV z1X;wbpcJ7hN?Z5Ehaf`+lK7kC8~p+csG9Ffo%$h&*gk(h={Bvx^aKH0p~lwkXz~b^H5;K zO;iP{qWfW&Y&CuH$}HZZJWV)P0UZneuS>83f3Eux`eNMIccvwOs7hI4$S>)9ctoY1 zaOlNQz_i7|8I}L13GRK4VM)B|LkXF*iNC+(BE8rhz>EO>Kb|0s+wF1bcOJ!Aj_N%+ zr#Fy4%ocJ7WtGdovm~Cdr5!XcM@nq?<*)YtskUq>RVWP4?9q!)>R}xBE+tN`jkZ6t zi&WG8Kl`n3JKPX70_pwb7^Fs*v@v$KJztqXhcg-XDpdMz-JAM~J#h6<&ZepI{X1<+ zt##&ahtSc`16-;bIembrV0-F5i0o0iZ-`SrFz&(Po#Hd2SKGJxZ{2ox^o;N0H=NsH!*DmtHkwCSDW`dtP!iVP>p1cf7o($^jgR8BB{XBgXyyhN8Si%wktxE$0>4jQmADcpNlRbf}B{v z23H(bItB{n@IS4l8YPm+UKzX~n|F*6_R!VbKZ`P#`)8jsoX_?z_eubO%HatA7PN_) zcUhy)8Ik%WVa;00l@8n8@b;gmM!X*%whiO`pqaYhq}8G@81)Y;W~t}f37u-V(s|th z#J&?_&}Mr1M~G{RM_K2F6T29mF^7!?X&ueA+7~h3F`D2CL_jKFlktvAV|Hvym(l)6um4kvc@SS+%)S9W4JS z3pIWJIe{+s9-6>4tn=1+KTb)!c?%nZ!t9};wlsqzb*6-)1&+Uz!h%azf5M)#etlX! z(INM;iVxTrf*~4T=ayr~7K~B(o~uz63SdA{ zOwX>m$YzmoO`&c**PI13T+TFLK#;TVg<7{K^8?5WnE6}ZK&{IyDCb}x51}6CRVB%i z;a23U{Ns5s7)s&9!B451i-qHPQm%?1IgaLn5Go!(_LO*AnX)!>&<$$%ErJ_Sk;>Ue ziHlSrwq4Clswe=T-1CvTl^dfzCoA%dx4#7s{rL zgsngG@->}uml*?s`uhwI@%}rX;(cs2zMj9kjq!D14!LYzt`T#N4I`A z_`8~)AWh~h%L&DJr(Hxhr3;$fR zP;}S6{rSC`s<1_iDlcHD-!`rHtODf4h3v$4E)UgMESi~NUyhm6`v4YfqGI(Y!yXTa zV|9<;rDBxd4yt_2wtlW(zB6a$Tc+tJV-o{|JAS7`j~^S3&82_+=dLZA8v#y64C*mI zVPWADt*L=CsRG`j67*y9%*J`XU`KEg9(DkN66mM8dECfM>W_}tq=2|fQKJsj%-LU` zYwX>+eooD&M8T=Yx+vEqwTQUi6TR;c|DvHg65|XyhkvBq-37ATh)N|#E zhb6?#V@ezANpW7Woz4`e7bHK~vg_x}HJXsQyy=2C$|n9?v=bM+hTRQHkAnX+P?=#upUHaOkCN}*Qhi`1R5oR&{}+8#_Lw#1t~wmrCSBPBnd$IlG-ziqm`SBPs``1%|$9 z_nLY%5U-}s2Rgk*4vuiy4ZF8=ZJh`uh?FDERa<7KgZDByIyOPI#UeJawm2=95_{Q^ zMW_p9Y<}28jLTV&XS8nCn^FCIyh-)%>^{{r&qZBKYiWBfl7~vcfgm=yTi81jqsOTm zQt$C#K`nC`zLIZntB-3oV!g8j%es-K2VN98+j;%`mU~tbKce)YDM;DwcHMeDphp4@ z3ewx}W+D_tBb10wTJLQ+oc_H#=zJ@0#suJD1xgk5Rv87qZU$Z?Y0#*zGv%GEZP0<~ zy*tK7zat7>0b=$wR;UL{(YCA-?8;L6XbvN-S+DCg<^F@xXnj_`o)xE=t*1Zl_3k*4KDD~4>KFH(KiHjaHgub< zz12h{s4m8|s%URBmUdoX;(`fk^1 z+V$MFW17F}m#rH)aj$Qn8 z^55G9%hHJMx0seMw(%u@k|`}veJZU-wRQ4VS=J~>wo;%V0=18t0zmaRtOxqpO%9UN z*+^{x0;{!oC#eJ*Ju@inBdD#F{PLLIe|5mvmu~fQ=n(21Zjs#mmRXUcf{2$0W+d^( zh7)ac4FwDt9l5nl?Il#q*YJ~Qkmg7h%f6J?mZ%&9IED29bv@7;EKAcw|6v=&z3jri zBCWC6a0!P&+c6-o)$*x_CjAm1WF3ypQyPDOzNMf&sG3(O&$byPNiSwSNlgTkR5qng zN81tY^9g7VZ&JY5!}xqI*V>XSkc~C~qH!5!rN23?5v2-l_N^g{tf7@N3gaA>vgk?4 zY?WXTGm;9c+JX^E^a6ebNlxK_%{uZPvbPD6x4&w_i&$J)yJ^XFB%a1Ae~fhwD~qfi z$Si$o;dUgE`lKtNgaN@(k*fhnmMgRZ4`kJ{(y}kms^>ils3+tWA!-{aD^!tNF1WJf z@rh>%kF`^sw+e@;LCaI{+9XC(ftS6o1Babja=Qfu(CR9M*xEulz@7)<(%=zL8t8_h z6X{x%>X%Fs^+xR`T6TiB{nD%6^Y)>9!s+EI-vUbhGBfYJlOq9CS zwWZSpaJpRtxSNt9?@DvnHFw^qjs2^_A+05Xchni)J@Lc=XW?%~OZ&A6N@_ik!i(Cz zagZ~3CSMwI;K7xhxd2X&6Wq)G*Sxt@`!;VL7or@_DIq) zvt$C^GjHKrnU7Em0ql*zm%K2p0%Uoue4JEg^GF%-goHWscke z4h*t<#7K^eW58={Q`up4ZOrUwHP`}?2EcKXNPW^3v;YIPQQXw1*)T4JPjJiOUrF!v zIG$seho@4^jAYNH(`ZGpI`5tds6c8SL6rvJeN$}gb7|y7*kqN|3CFx0Bl~OHLM?z`jInu1N#ll(*Ta(($bW&sF z5oNadvl}cF@&Uxg(S#LB2Z`xvbuGvB>J9MF{G;OR6EaO1g=Ha)I0pC;}YZ*7a;FgOK~X{sM#}@ZBG;p*McJ2Y3NY)_r=iR>CG@R|w-k!VB(2VXGmihY7++r*?FwZu*VL%EzD}WI@;yrg^5rJkZPD((O1LNo`fbvQVB5+7wOCVD0+5h`D2hVx$mQ z`qO8aQKVTA%Sp-X;HlH@vjB1*iKnM7p<57_eE#z-Zk8j;EAEX_M^4opdi6 zskOI6mo0&}lC}b=cYEp<0<{~M?U#HhvD$eqnRv7$PRDw$hEqK*s;CHw#?+aq5d}yc zPkApgoch62I+#jEbxv+tnp+8R))N)Y3C~n(Nt95Z%1}VuK2enW70f`>;0I)-L!J>Y zD7gcs3TcZ*7zZ<$kRl?2g*>Vf#Yz*J1FcRF%?28SRu@~912Aj86Gl?Hv0PeE&? zvTn>NQcz_z62q_6ab(;`S#v{zd=~6WRNf%B-G+@Q+n%?a<*x+lo#rI&ezY8!G~m~5 zVKgR?ts;KoB78$Y;9tms5`+^JAOS8#Hu^$Zmqp6#ZKHsRRO>Qm z9zn^blF!<9ONLByF~F0-CMXfGe~X~Xl5+SEaFgoBT zkrCDce~)RCff8A;FPAJCrP@IWQbhv2pL|QY$@(PVl{*%jJv~jfSXrrgQB#Bi-UN1H z+y{1qPwXTLNyx1?l-83!xz)_NCz`i6vO^2-MuX2ldf?FrNC8VZ*%iv1lQ8G3iLP8; zlj9aiB`v)(unb!}iQe8M%(|384}jXWt#S#kpjzicYVo10M0$`-2;9>d;M6S&J7Ge% zncXCc=n1Md0fpZ}N=9|ysZ%LqH6BbQVhss;#Kl{wEoJ_u%p+vjq9GgwAT8KC0ynrZ z+E@75Xh?K=7IO3t0wp~f3%Gbrn^syU&ct?iMsJ>%$3q`N0c4>g7} z_+dDKRm)1gC>Yh}DSedmn&$jtIO zORb}3vgcYOY7gQgo9U{D<5uWwR*!_oeWYcB>uVkC_504ogrp^G?(RE+Pv5%BrbQX10e(H3lJp>O^$N_p$lAZ6*IS9ZbP6PDu>yn?lC+kHKmP|-3 z>_C5LIX0<+L8lSx&v6z?5?d~3BjbLKhm0`nPwXk8mBKqME<8liLK)Zvb@RSW7Kqx0rQHMCE}QYY{XYJ9%??|A;abd_?*FwB z;BCP+>E9uB0-;$voclk>n3eJavpMb#^uZ6=^kyEcw!C?_mdkZcr+m)hW^YMu)t0?~ zml9hPt(G&cpSuT43%mT{9KYK~EK;-G$1626wczc)Fs3S#p=kG$3nWJ@f08S9Y{{Yh zPs%VOj+z0=_k@9CMB13uG!d?yH6M{90tn@MZe>=K2<2O&C2K1Z%9$Nm8XYT#LYbZI z(nZcC&SkTX%nRkxP0qVwC~y5C=OZ(eJAcXfN)6@hJmmb}4dr_NR!gcS!`(i%f@C4R zA{J30b{`#zqFi64?%m%)i`J@&QV|f@+DOAiS@z`0uw$W-gLLYSa_8&F4SAH${sj3H zxrN-;N4azdx$BRTA&ImxNO^lNwZAE(dM00l=7}})d%DwV3qQ%Yh5elw^5vUrL+JP*;FXz70;TOiUv;kUN}7`PC0!s z(RqceVNS_0N@~<8TRvPMeso92 z)4VvT{OFIT^W{pV^4Mx+!&3Q1Z;uxM1c9ksAduW8QD`bdBkA{fVu@5HXF<}h@l?Jd z5QI-$o_0!86psMnV!VoA7jzD;l^Qw%At(YvrDj(kC3xvoj zvnttkdNhGn3AvZN%GVn}u5tl`qpLhkp|Pvhx?S^T}YPMptqU z;;kel|K-U!v~eOXC@Whp3m<@_$$N$&Xi#=nc3SDuv1C&QCU+F!T-n_^iBuAOaIrW% z0d=L!@~avTP5YXfj6&I!>TDv7JMs9oEB~?d2BR9a>Hx27LNt84)S7)tkb0%&dUBQ( zU%4R3<||`bx9|DvE5oi9D#P_pD)uWEcmYRcAt%{X5{{JrPI!J0MsbpAu)KfWb`X}W zr_cKaKnO;(RqD`Akd$4@L>-pda_y#N3$a{@AB0hyq*?ycuKxzF>Za}bVVve=-S*?W z?&tk{-vC4yPLLGMupBRllB}qjZkU$sxSk(`QJkb%UX)ecv|T@p*V~;SDVkw9UJ#`} z5_$Xh`uW@FFV5ZJG%m~S0YC^wPz)zXie^}j7eq-`R82Qb%XVDP55g!;(kw5^s&3k@ z2SDgN*_ogiPLLGMupBRl(rY9B+f>zb!?bM2_52`=;v~)TqO9ts?fPMy=4IXXgT>+m3;-4FaTUh$lw_eSkON`zK>uf2NOYuvG@ozPu@}C z5Fs+ba8V50lvU>26o^gmWrjKY615XzTH`N?j0lDL!*JA>tma$*-l5YJ%)Z!^yUy9X zci@5Hd;ym&*@?ve2Y(35?OtL`!ttLJ~9jiRHscoFgl_p{64g&f+xjTe4>0Iy{HG{ zSZT29;uGbMlI95sH2}LbK2aW%*xa}z%wXo-MImmbpTjvIG3zL}*K1}~Fp0!Jy`UP^ z%qpK_{(1h~)=S!!yUsKP%hc`3{19#GQL~sL%I`eb>$L|Zq^s7t_JEXs8OBA;xodIB@;87yi6`m{DVL*af9*b$1ak8dy;JelI|?J$jK9PC5#>YC}t zMuOc%_=HkjS3NoC_b$T0EuhcsN+d_)t6d&;B(y8PS@Y&<&@O;><*dr9;bKR-T5cP1 zyRxp)tJ!8pyV@)}#+9=wueL09byAl_V+U)zHPJy?5d9&G_NaFpqCZeVg%XyegR%(! z9_(9%A;*9ppZGQGUARMifDxfP3&Stz>>4pNaivT3<;ONeC~q^K#mBZ{VQZ`q zm@mi(w|@5C@ou68>KMY3MTtv&7_u18HECT(`(F>G{}pro!kK;BuswY(Cc6bwY7sV= zNjXpU@&7F$+^VuiKyhd4d;?5WxKk(h*2b@*ojKWle%Qo%+&9qge{5V$c}yWi%6VpK zGPOcv91NBRHVYIfGix-96_^zcqi={$Z&Pw8YNH+NlHaO#2)E(LdQD$r z4ksc1^=c_GvRj46Ok>mIOmR>&_~ugByZRGE!vL$wh*0>`QQ{4C;I*uWwXO2QD?)^` zI^O{t?lt9?KUmD+y?c>^(-xhNi*6I#oz~TX==Wr8ho&85*pe!dII(NWC^qMVawmO? zDv~X?cy>h=AMk#x9to$nl;U-@1$b7~8#LL@lJ8~~B{D5~aoVdi>o;=UPIojM&eyq3 z*n}61@0+yy3|=ekNBM6#!;xUlc-C{lhe;W8O#O-0QXDQBv@dU{nT8hc4A4AI%p7EsS8qZPPa zb$EIO#myAYTyASkXwwbcm0ihQG$F3;X5CJo8eI7>!;e98lEJ&7k72c<@W*<^!)u1q z2D2LUDNcknZLKML3D?CkwsxzbXqMwGvIiYmw}uQnzs^BRoeB^}K$3Ix^1M zXJAd=ES=Sx`Mw_PynVcVB3-|xde)TwRtOc|VEjijMFb4i3w+dY6D~#{zLY`)y9I-( zkb=eC{&NpRx5d*vt0L!_J?w#ir6?yZye};r#M}Hd9MB3y%FLF{VA}kySCLuvv|8Ns z6p0+~Q4#MJSgY8*vlLnRe+vVuH19{KbZ(&3Lh4}qo#vFB+J6e%|| ztGqpNB6q?DLQ@1cXtQ{JHWr#9xCR>yO<{pF9-2blL>duA%G?GU6HO5uX;c&`ixFX5 zBp33#Gr5|3>9D0POI+q&{9Eesmo6Y@%2L7j#~J6HAt9kGbjzP_4y{m(5)YV`6`L?D;!Ht|8fXkDlv?KPR^Un)i#yTqP0ZW=F9l zqgw)}g0DE>BQlNiabeFhWit!VXL}Kn-Nvs@niRm@lr<<%eDP6Hof1sK@^>TN0Xi4O z=&=5AQ#}wYh+_bcE^O3%2t1lIt0WhrIB)MU$uQ=nHAN)CTTs=5Y9ipe(C4Fo|PH^;JhjDZoPH zzl2o>Aivd7AvwbMP`*srzCi=0z&jA_loo7fCNXfd$k zs`C~+h}6FdgcE4S4!U2XL(h`p-$eYw&1NL*I@insJkBgH--~#|3Etlp;f@||R-o2w z>tqSO?kGd71L7f>_RNBe^DNYkVe3=ydg@`(SEX`b)#W(vUs zRI`WWk|Sjd@DY&YI4B&(!zsad9KgTPiYAN`?C3E~nn4QfcXMD1aGbG|Ko`Ev=1=5c zA0zkOGqZ0Z!|lF*oI(JLK3yM%$Lv{NO=$$cCEi|+f+q%y#8U}favp%yuL%l;sW9Sd`613!&7@FK_8dK&I0-gpPW8Be{uQh`mLJCZNt=R9j-B4|DmViu%kYg#2$#_%%4+v0w)r3 z%$`mx{<@S;kBwA?KFtH0jX{*UeQHP$B5}*5~;Ted4ji^op03 z%a>tI9-w(RJ-8j}#=?KF7!gco8^f0V=QWI_oYdZl&k0-7@~jHfA!*=OjOJn#`OHSMxp4kSo%D*j7Ad<$M1UVO#Erk%(0D89sC3hQ)+G zt4`UjmUQz^%-|P!K#%GjBomu_Eb+OC9n&9zR$PLqRdE>mofeCaH2;OhFrE-n1`YSN zYL|PdmO21xIYXtYT&LxCq`oZKB{Uh8U#5$dt*aFbfU0ou=ZSn$<#%;^Z75V_R#ADe1aP_8i22=1!wI_bvUK>btGp(DgwFS+xA9Z`7AC6WSYcK`h z`J$z-9Y%!F=yT0PpM9~-fe2>~-um;!+*J}TxJtow(Mk$iJJVv}m9C_mp-kC>_~%F> zEL>B1>>}bZqN0u}O~~4AW)VR{_({~OP`B5HllrP?Aq?ZeLliQlG3EI)W--=Kc-bDk zlS9!dO}=FTH6P)!Mf2KMeMC&1t-1uW9w|Jf)epZF%q1?$0ScCqZEt`1C@E&Ya3P@l zZyBh?O+GT}eyCUv)E`gbPX*8;4NmIFC#CdI-984qRC=stRsniS57x{WIU(=S_(TC( zqKD%X0*;k^Ma`^&^nMLan*vaUp+Aebp2a5$sDS+I$pl0N*b@(S;u97Bkm}9>QH6iO zTBY-LUr>8c0#=pB6g9I7()-<3^)>}yx-N0MtuK%Qn2e{HrLMpx66h$gXO2%4sKr_n zpAf>|tSTk|HRV?u*duWHo)NS6NB;Fk8tBa>sjyG4nN>hHt*U#s@2cCAk>B!jqkwVs z{((-T&kI0bh%1To(Q?w9H562Gv_QP=yucdId?Ph06AGGl{4?@s zaea!yY7s)B=>f|3LJ{G%3m#c?f3lQMQ%uQe1I zM5HPSoEfj@ESl_`iIzQhtJmOQN6AZl~P2KlU`&=%C!=4d#PPhE@#RVcDu-g z+g307#=I2EG%nv$g!=Wz6;RLFN1g`;Hwdqt1>zSO;Wo00cF9R-Wl%QH0bow({OhX7 z%tb-Wv#lq>jt!Y#tI4wA(6iMdt7eZ$zC`R(W7bykWUw2HP~>?uf=4krX3BKjNdx6m zcn&>`qu>?woJ1w5kW?`2^+|QV87Gdnl3+ZZc(qVfpLDpsU4UWHD^M_ud(N(;C+Rm!df@c@p!Ws$gHd6;Jc#lwJS8by_;%z;MmaH zv;2X0HE|L%#fDc^gCZOIWC~{*vIr~*dgyZXv~PQm1K@mgjw{wh10RmUA9XWm0td4b zD}w7sqvpRB_k21{skGTpA4@Lm-Z?)n#R#~~2cQHOOECgkjtf{<3x43DD91V^5 zao*wz@y(EPBq;8Su7jx|n+u*wxKVsB%@D3~koiLwEzV&%7=t^-cF}>o&dHJb`=rK=1(2iyWr!1YUZWHU!0Y!f5 z>}Mei%C|9{_^R1tC~C5Z5M9#xo5X#UL_|{aXPbt;kfsYJqv2Y zid2ogZ>vzomnntMjaO6cdSYhcP!3>>9nfH}%hX^k|led>K zho%UvNTlq%+v$$8iS^-1qr_|yxYogw#Ds@8($~bZh=LS~A5?l{>A1oyudgMI1-}0Wb zO%$mn0^g!#y`T)7P;K#VxkfnM+3l_aULO#H{Qn8Ysa#eM_i?TU__3QzhG&+$pV7s{ z-p+>)2tT8m(&Qs9n%bzNA#<{Z*5Jh_UmXS8Hop#<(j>w!YM+&g5mzG!dH3HWi^Ze= z3Kuw^j79&1Uf|<3y`<2BÃ-ERF?&y_pfYxO}cJT5#fJl}fxL8iJjg5hEI`5w1| z4jj3w1x_3U4yc2`ssnEup!_G!d2A0a@I{6#o9N@`^G?bm;jLk)oJ?V43+woLdqX9B z`MAFx53^t4oDLizw;xYzMc0H}G@Qh+XGaYWNV_RgjU6;gr0wR8og5R1b9FoYlATn5 zQmNtwR^OPOaX3Ap^-bB$&#yffJPrKczSPCnno8|;NeQ8FT?)Kh@lPm&wkGvM@7`ci znqvD~YX&8D{C^>o%L);}=?PDzjILP`^MdqQ%UXirxTwY&)zJWf-8poOCB6y5j(P7$ z3OL*>+GB~gE9~>8n5RalUQmJTHka!PB}lLZ?aF*Yu|3S z0JGW>wWo3Vvb2K66FMP12`Byz*C!nWqGCCJ{pb7?Ni)-za5B&N>{#EOy z*KgsVTvu5Z=m4!LPaZLAVXTe@_*X`gLfL3l;%O>$>7X2Clt(^}ro8llVP_Q9oY@5Q ztiXrTW~mh{NR%{RPaN%@T9EZvxFJ&l=aKr9#D}+3#R0O@qbZH}frCcR!kT~7>pu-F zj{SYE{*1Zo+qb@`m_>6{!Y;CF$&j@R4A+m#MoC z{J|nLJs&LQY2+54TN~9imGufz%cDl$u7N!a)1vHNRwzLMUNOx)&`&kYyIL@wNV{3V z+RvCa&&1*@Tu=bZ?5$Xf`azocNrrO3|6#A!x&oGBxjd=?kL0DP;0JNhA-dULooaz#28>HW|f-dj>r?_uPS}g@j%yq-e1Do*G-SX8dcuiBlXkqn#fnj?( z!Cx_2hqAt0pczI!H|wBef3FpJ+?N&}^TK)y3#OWG9=k;c<(dMXc}Dge z%(9nfJ<<5Or<&3X9K+2Bau>6}w+up67dyqsmwI4&Fw?RGsDkwVXz)>g_GIRcMlZ&d z%q~2CW=f&DR+ea7`n2}_qlCB_>j3^_+BB*@faH_-L%J8BF){?1f7EvrE{ru81crU@ zkj@VLC!RS-pbIa&t1n-v0AsE(z;if+kVH$U1cVCi8P>opaoyh$!Hko#g107UovEyi z=G^Qlu{H=?AYW<9=@GxfG_(X76=V`bYnJ36b%;(FPPP-rvVkb>*KwfuWl^=IAR zZ=%aI!Q0vCrnC4546)8jif*;m;3G8lEM32C5jWW_6TEZPDZQf%I#D510>ffg(YI@X z5X?J}v3#VDN0+o(Nl|RX_s5+-p;QwzEEZ}ldoVRM@jf!jLMKC{hb{UeJ1um5F?3;l zziPbL$mc!_lox_D4hlJ9;5=H1%2X2=f`V9R(H{eikdDpal?X>Wy{umAHHF<>(HQ|E z`Uq^{JAXarZ7#u#bT)WtvWf#kNs$wPYiC;_vDxA~90Bry_>8jE?x~-@n&mC5#)olM z*wzM4+9fA`36&~K&IiSP4whhekUlm$$`n5C+njts2%l}3#D2Q%{8=)@iVmtwdA0rE z#!eb}fxR0f3xBz4a_$zpd3|KJpT0cU?r)8L0lL`3XK>!w)98483_H9eDIdW4z?Aj& zzkHDKMy%+$w+}MkRK!CI} W{i+SOEA$_gR$T^}fuiz{0000rhX=L* literal 0 HcmV?d00001 diff --git a/styles/bootstrap-icons-QRR4WHQW.woff b/styles/bootstrap-icons-QRR4WHQW.woff new file mode 100644 index 0000000000000000000000000000000000000000..6e72a590a26bc71c7011e3c50da2ca766a853344 GIT binary patch literal 164360 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͍DL09^UPJd{U1rzmAhp)eP! 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 literal 0 HcmV?d00001 diff --git a/styles/docfx.css b/styles/docfx.css new file mode 100644 index 00000000..160eb157 --- /dev/null +++ b/styles/docfx.css @@ -0,0 +1,1036 @@ +/* Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License.txt in the project root for license information. */ +html, +body { + font-family: 'Segoe UI', Tahoma, Helvetica, sans-serif; + height: 100%; +} +button, +a { + color: #337ab7; + cursor: pointer; +} +button:hover, +button:focus, +a:hover, +a:focus { + color: #23527c; + text-decoration: none; +} +a.disable, +a.disable:hover { + text-decoration: none; + cursor: default; + color: #000000; +} + +h1, h2, h3, h4, h5, h6, .text-break { + word-wrap: break-word; + word-break: break-word; +} + +h1 mark, +h2 mark, +h3 mark, +h4 mark, +h5 mark, +h6 mark { + padding: 0; +} + +.inheritance .level0:before, +.inheritance .level1:before, +.inheritance .level2:before, +.inheritance .level3:before, +.inheritance .level4:before, +.inheritance .level5:before, +.inheritance .level6:before, +.inheritance .level7:before, +.inheritance .level8:before, +.inheritance .level9:before { + content: '↳'; + margin-right: 5px; +} + +.inheritance .level0 { + margin-left: 0em; +} + +.inheritance .level1 { + margin-left: 1em; +} + +.inheritance .level2 { + margin-left: 2em; +} + +.inheritance .level3 { + margin-left: 3em; +} + +.inheritance .level4 { + margin-left: 4em; +} + +.inheritance .level5 { + margin-left: 5em; +} + +.inheritance .level6 { + margin-left: 6em; +} + +.inheritance .level7 { + margin-left: 7em; +} + +.inheritance .level8 { + margin-left: 8em; +} + +.inheritance .level9 { + margin-left: 9em; +} + +.level0.summary { + margin: 2em 0 2em 0; +} + +.level1.summary { + margin: 1em 0 1em 0; +} + +span.parametername, +span.paramref, +span.typeparamref { + font-style: italic; +} +span.languagekeyword{ + font-weight: bold; +} + +svg:hover path { + fill: #ffffff; +} + +.hljs { + display: inline; + background-color: inherit; + padding: 0; +} +/* additional spacing fixes */ +.btn + .btn { + margin-left: 10px; +} +.btn.pull-right { + margin-left: 10px; + margin-top: 5px; +} +.table { + margin-bottom: 10px; +} +table p { + margin-bottom: 0; +} +table a { + display: inline-block; +} + +/* Make hidden attribute compatible with old browser.*/ +[hidden] { + display: none !important; +} + +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 15px; + margin-bottom: 10px; + font-weight: 400; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 5px; +} +.navbar { + margin-bottom: 0; +} +#wrapper { + min-height: 100%; + position: relative; +} +/* blends header footer and content together with gradient effect */ +.grad-top { + /* For Safari 5.1 to 6.0 */ + /* For Opera 11.1 to 12.0 */ + /* For Firefox 3.6 to 15 */ + background: linear-gradient(rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0)); + /* Standard syntax */ + height: 5px; +} +.grad-bottom { + /* For Safari 5.1 to 6.0 */ + /* For Opera 11.1 to 12.0 */ + /* For Firefox 3.6 to 15 */ + background: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.05)); + /* Standard syntax */ + height: 5px; +} +.divider { + margin: 0 5px; + color: #cccccc; +} +hr { + border-color: #cccccc; +} +header { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 1000; +} +header .navbar { + border-width: 0 0 1px; + border-radius: 0; +} +.navbar-brand { + font-size: inherit; + padding: 0; +} +.navbar-collapse { + margin: 0 -15px; +} +.subnav { + min-height: 40px; +} + +.inheritance h5, .inheritedMembers h5{ + padding-bottom: 5px; + border-bottom: 1px solid #ccc; +} + +article h1, article h2, article h3, article h4{ + margin-top: 25px; +} + +article h4{ + border: 0; + font-weight: bold; + margin-top: 2em; +} + +article span.small.pull-right{ + margin-top: 20px; +} + +article section { + margin-left: 1em; +} + +/*.expand-all { + padding: 10px 0; +}*/ +.breadcrumb { + margin: 0; + padding: 10px 0; + background-color: inherit; + white-space: nowrap; +} +.breadcrumb > li + li:before { + content: "\00a0/"; +} +#autocollapse.collapsed .navbar-header { + float: none; +} +#autocollapse.collapsed .navbar-toggle { + display: block; +} +#autocollapse.collapsed .navbar-collapse { + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); +} +#autocollapse.collapsed .navbar-collapse.collapse { + display: none !important; +} +#autocollapse.collapsed .navbar-nav { + float: none !important; + margin: 7.5px -15px; +} +#autocollapse.collapsed .navbar-nav > li { + float: none; +} +#autocollapse.collapsed .navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; +} +#autocollapse.collapsed .collapse.in, +#autocollapse.collapsed .collapsing { + display: block !important; +} +#autocollapse.collapsed .collapse.in .navbar-right, +#autocollapse.collapsed .collapsing .navbar-right { + float: none !important; +} +#autocollapse .form-group { + width: 100%; +} +#autocollapse .form-control { + width: 100%; +} +#autocollapse .navbar-header { + margin-left: 0; + margin-right: 0; +} +#autocollapse .navbar-brand { + margin-left: 0; +} +.collapse.in, +.collapsing { + text-align: center; +} +.collapsing .navbar-form { + margin: 0 auto; + max-width: 400px; + padding: 10px 15px; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); +} +.collapsed .collapse.in .navbar-form { + margin: 0 auto; + max-width: 400px; + padding: 10px 15px; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); +} +.navbar .navbar-nav { + display: inline-block; +} +.docs-search { + background: white; + vertical-align: middle; +} +.docs-search > .search-query { + font-size: 14px; + border: 0; + width: 120%; + color: #555; +} +.docs-search > .search-query:focus { + outline: 0; +} +.search-results-frame { + clear: both; + display: table; + width: 100%; +} +.search-results.ng-hide { + display: none; +} +.search-results-container { + padding-bottom: 1em; + border-top: 1px solid #111; + background: rgba(25, 25, 25, 0.5); +} +.search-results-container .search-results-group { + padding-top: 50px !important; + padding: 10px; +} +.search-results-group-heading { + font-family: "Open Sans"; + padding-left: 10px; + color: white; +} +.search-close { + position: absolute; + left: 50%; + margin-left: -100px; + color: white; + text-align: center; + padding: 5px; + background: #333; + border-top-right-radius: 5px; + border-top-left-radius: 5px; + width: 200px; + box-shadow: 0 0 10px #111; +} +#search { + display: none; +} + +/* Search results display*/ +#search-results { + max-width: 960px !important; + margin-top: 120px; + margin-bottom: 115px; + margin-left: auto; + margin-right: auto; + line-height: 1.8; + display: none; +} + +#search-results>.search-list { + text-align: center; + font-size: 2.5rem; + margin-bottom: 50px; +} + +#search-results p { + text-align: center; +} + +#search-results p .index-loading { + animation: index-loading 1.5s infinite linear; + -webkit-animation: index-loading 1.5s infinite linear; + -o-animation: index-loading 1.5s infinite linear; + font-size: 2.5rem; +} + +@keyframes index-loading { + from { transform: scale(1) rotate(0deg);} + to { transform: scale(1) rotate(360deg);} +} + +@-webkit-keyframes index-loading { + from { -webkit-transform: rotate(0deg);} + to { -webkit-transform: rotate(360deg);} +} + +@-o-keyframes index-loading { + from { -o-transform: rotate(0deg);} + to { -o-transform: rotate(360deg);} +} + +#search-results .sr-items { + font-size: 24px; +} + +.sr-item { + margin-bottom: 25px; +} + +.sr-item>.item-href { + font-size: 14px; + color: #093; +} + +.sr-item>.item-brief { + font-size: 13px; +} + +.pagination>li>a { + color: #47A7A0 +} + +.pagination>.active>a { + background-color: #47A7A0; + border-color: #47A7A0; +} + +.fixed_header { + position: fixed; + width: 100%; + padding-bottom: 10px; + padding-top: 10px; + margin: 0px; + top: 0; + z-index: 9999; + left: 0; +} + +.fixed_header+.toc{ + margin-top: 50px; + margin-left: 0; +} + +.sidenav, .fixed_header, .toc { + background-color: #f1f1f1; +} + +.sidetoc { + position: fixed; + width: 260px; + top: 150px; + bottom: 0; + overflow-x: hidden; + overflow-y: auto; + background-color: #f1f1f1; + border-left: 1px solid #e7e7e7; + border-right: 1px solid #e7e7e7; + z-index: 1; +} + +.sidetoc.shiftup { + bottom: 70px; +} + +body .toc{ + background-color: #f1f1f1; + overflow-x: hidden; +} + +.sidetoggle.ng-hide { + display: block !important; +} +.sidetoc-expand > .caret { + margin-left: 0px; + margin-top: -2px; +} +.sidetoc-expand > .caret-side { + border-left: 4px solid; + border-top: 4px solid transparent; + border-bottom: 4px solid transparent; + margin-left: 4px; + margin-top: -4px; +} +.sidetoc-heading { + font-weight: 500; +} + +.toc { + margin: 0px 0 0 10px; + padding: 0 10px; +} +.expand-stub { + position: absolute; + left: -10px; + font-weight: bold; +} +.expand-stub + a { + font-weight: bold; +} +.toc .nav > li > a.sidetoc-expand { + position: absolute; + top: 0; + left: 0; +} +.toc .nav > li > a { + color: #666666; + margin-left: 5px; + display: block; + padding: 0; +} +.toc .nav > li > a:hover, +.toc .nav > li > a:focus { + color: #000000; + background: none; + text-decoration: inherit; +} +.toc .nav > li.active > a { + color: #337ab7; +} +.toc .nav > li.active > a:hover, +.toc .nav > li.active > a:focus { + color: #23527c; +} + +.toc .nav > li> .expand-stub { + cursor: pointer; +} + +.toc .nav > li.active > .expand-stub::before, +.toc .nav > li.in > .expand-stub::before, +.toc .nav > li.in.active > .expand-stub::before, +.toc .nav > li.filtered > .expand-stub::before { + content: "-"; +} + +.toc .nav > li > .expand-stub::before, +.toc .nav > li.active > .expand-stub::before { + content: "+"; +} + +.toc .nav > li.filtered > ul, +.toc .nav > li.in > ul { + display: block; +} + +.toc .nav > li > ul { + display: none; +} + +.toc ul{ + font-size: 12px; + margin: 0 0 0 3px; +} + +.toc .level1 > li { + font-weight: bold; + margin-top: 10px; + position: relative; + font-size: 16px; +} +.toc .level2 { + font-weight: normal; + margin: 5px 0 0 15px; + font-size: 14px; +} +.toc-toggle { + display: none; + margin: 0 15px 0px 15px; +} +.sidefilter { + position: fixed; + top: 90px; + width: 260px; + background-color: #f1f1f1; + padding: 15px; + border-left: 1px solid #e7e7e7; + border-right: 1px solid #e7e7e7; + z-index: 1; +} +.toc-filter { + border-radius: 5px; + background: #fff; + color: #666666; + padding: 5px; + position: relative; + margin: 0 5px 0 5px; +} +.toc-filter > input { + border: 0; + color: #666666; + padding-left: 20px; + padding-right: 20px; + width: 100%; +} +.toc-filter > input:focus { + outline: 0; +} +.toc-filter > .filter-icon { + position: absolute; + top: 10px; + left: 5px; +} +.toc-filter > .clear-icon { + position: absolute; + top: 10px; + right: 5px; +} +.article { + margin-top: 120px; + margin-bottom: 115px; +} + +#_content>a{ + margin-top: 105px; +} + +.article.grid-right { + margin-left: 280px; +} + +.inheritance hr { + margin-top: 5px; + margin-bottom: 5px; +} +.article img { + max-width: 100%; +} +.sideaffix { + margin-top: 50px; + font-size: 12px; + max-height: 100%; + overflow: hidden; + top: 100px; + bottom: 10px; + position: fixed; +} +.sideaffix.shiftup { + bottom: 70px; +} +.affix { + position: relative; + height: 100%; +} +.sideaffix > div.contribution { + margin-bottom: 20px; +} +.sideaffix > div.contribution > ul > li > a.contribution-link { + padding: 6px 10px; + font-weight: bold; + font-size: 14px; +} +.sideaffix > div.contribution > ul > li > a.contribution-link:hover { + background-color: #ffffff; +} +.sideaffix ul.nav > li > a:focus { + background: none; +} +.affix h5 { + font-weight: bold; + text-transform: uppercase; + padding-left: 10px; + font-size: 12px; +} +.affix > ul.level1 { + overflow: hidden; + padding-bottom: 10px; + height: calc(100% - 100px); +} +.affix ul > li > a:before { + color: #cccccc; + position: absolute; +} +.affix ul > li > a:hover { + background: none; + color: #666666; +} +.affix ul > li.active > a, +.affix ul > li.active > a:before { + color: #337ab7; +} +.affix ul > li > a { + padding: 5px 12px; + color: #666666; +} +.affix > ul > li.active:last-child { + margin-bottom: 50px; +} +.affix > ul > li > a:before { + content: "|"; + font-size: 16px; + top: 1px; + left: 0; +} +.affix > ul > li.active > a, +.affix > ul > li.active > a:before { + color: #337ab7; + font-weight: bold; +} +.affix ul ul > li > a { + padding: 2px 15px; +} +.affix ul ul > li > a:before { + content: ">"; + font-size: 14px; + top: -1px; + left: 5px; +} +.affix ul > li > a:before, +.affix ul ul { + display: none; +} +.affix ul > li.active > ul, +.affix ul > li.active > a:before, +.affix ul > li > a:hover:before { + display: block; + white-space: nowrap; +} +.codewrapper { + position: relative; +} +.trydiv { + height: 0px; +} +.tryspan { + position: absolute; + top: 0px; + right: 0px; + border-style: solid; + border-radius: 0px 4px; + box-sizing: border-box; + border-width: 1px; + border-color: #cccccc; + text-align: center; + padding: 2px 8px; + background-color: white; + font-size: 12px; + cursor: pointer; + z-index: 100; + display: none; + color: #767676; +} +.tryspan:hover { + background-color: #3b8bd0; + color: white; + border-color: #3b8bd0; +} +.codewrapper:hover .tryspan { + display: block; +} +.sample-response .response-content{ + max-height: 200px; +} +footer { + position: absolute; + left: 0; + right: 0; + bottom: 0; + z-index: 1000; +} +.footer { + border-top: 1px solid #e7e7e7; + background-color: #f8f8f8; + padding: 15px 0; +} +@media (min-width: 768px) { + #sidetoggle.collapse { + display: block; + } + .topnav .navbar-nav { + float: none; + white-space: nowrap; + } + .topnav .navbar-nav > li { + float: none; + display: inline-block; + } +} +@media only screen and (max-width: 768px) { + #mobile-indicator { + display: block; + } + /* TOC display for responsive */ + .article { + margin-top: 30px !important; + } + header { + position: static; + } + .topnav { + text-align: center; + } + .sidenav { + padding: 15px 0; + margin-left: -15px; + margin-right: -15px; + } + .sidefilter { + position: static; + width: auto; + float: none; + border: none; + } + .sidetoc { + position: static; + width: auto; + float: none; + padding-bottom: 0px; + border: none; + } + .toc .nav > li, .toc .nav > li >a { + display: inline-block; + } + .toc li:after { + margin-left: -3px; + margin-right: 5px; + content: ", "; + color: #666666; + } + .toc .level1 > li { + display: block; + } + + .toc .level1 > li:after { + display: none; + } + .article.grid-right { + margin-left: 0; + } + .grad-top, + .grad-bottom { + display: none; + } + .toc-toggle { + display: block; + } + .sidetoggle.ng-hide { + display: none !important; + } + /*.expand-all { + display: none; + }*/ + .sideaffix { + display: none; + } + .mobile-hide { + display: none; + } + .breadcrumb { + white-space: inherit; + } + + /* workaround for #hashtag url is no longer needed*/ + h1:before, + h2:before, + h3:before, + h4:before { + content: ''; + display: none; + } +} + +/* For toc iframe */ +@media (max-width: 260px) { + .toc .level2 > li { + display: block; + } + + .toc .level2 > li:after { + display: none; + } +} + +/* Code snippet */ +code { + color: #717374; + background-color: #f1f2f3; +} + +a code { + color: #337ab7; + background-color: #f1f2f3; +} + +a code:hover { + text-decoration: underline; +} + +.hljs-keyword { + color: rgb(86,156,214); +} + +.hljs-string { + color: rgb(214, 157, 133); +} + +pre { + border: 0; +} + +/* For code snippet line highlight */ +pre > code .line-highlight { + background-color: #ffffcc; +} + +/* Alerts */ +.alert h5 { + text-transform: uppercase; + font-weight: bold; + margin-top: 0; +} + +.alert h5:before { + position:relative; + top:1px; + display:inline-block; + font-family:'Glyphicons Halflings'; + line-height:1; + -webkit-font-smoothing:antialiased; + -moz-osx-font-smoothing:grayscale; + margin-right: 5px; + font-weight: normal; +} + +.alert-info h5:before { + content:"\e086" +} + +.alert-warning h5:before { + content:"\e127" +} + +.alert-danger h5:before { + content:"\e107" +} + +/* For Embedded Video */ +div.embeddedvideo { + padding-top: 56.25%; + position: relative; + width: 100%; +} + +div.embeddedvideo iframe { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; +} + +/* For printer */ +@media print{ + .article.grid-right { + margin-top: 0px; + margin-left: 0px; + } + .sideaffix { + display: none; + } + .mobile-hide { + display: none; + } + .footer { + display: none; + } +} + +/* For tabbed content */ + +.tabGroup { + margin-top: 1rem; } + .tabGroup ul[role="tablist"] { + margin: 0; + padding: 0; + list-style: none; } + .tabGroup ul[role="tablist"] > li { + list-style: none; + display: inline-block; } + .tabGroup a[role="tab"] { + color: #6e6e6e; + box-sizing: border-box; + display: inline-block; + padding: 5px 7.5px; + text-decoration: none; + border-bottom: 2px solid #fff; } + .tabGroup a[role="tab"]:hover, .tabGroup a[role="tab"]:focus, .tabGroup a[role="tab"][aria-selected="true"] { + border-bottom: 2px solid #0050C5; } + .tabGroup a[role="tab"][aria-selected="true"] { + color: #222; } + .tabGroup a[role="tab"]:hover, .tabGroup a[role="tab"]:focus { + color: #0050C5; } + .tabGroup a[role="tab"]:focus { + outline: 1px solid #0050C5; + outline-offset: -1px; } + @media (min-width: 768px) { + .tabGroup a[role="tab"] { + padding: 5px 15px; } } + .tabGroup section[role="tabpanel"] { + border: 1px solid #e0e0e0; + padding: 15px; + margin: 0; + overflow: hidden; } + .tabGroup section[role="tabpanel"] > .codeHeader, + .tabGroup section[role="tabpanel"] > pre { + margin-left: -16px; + margin-right: -16px; } + .tabGroup section[role="tabpanel"] > :first-child { + margin-top: 0; } + .tabGroup section[role="tabpanel"] > pre:last-child { + display: block; + margin-bottom: -16px; } + +.mainContainer[dir='rtl'] main ul[role="tablist"] { + margin: 0; } + +/* Color theme */ + +/* These are not important, tune down **/ +.declaration, .fieldValue, .parameters, .returns { + color: #a2a2a2; +} + +/* Major sections, increase visibility **/ +#fields, #properties, #methods, #events { + font-weight: bold; + margin-top: 2em; +} diff --git a/styles/docfx.js b/styles/docfx.js new file mode 100644 index 00000000..952775be --- /dev/null +++ b/styles/docfx.js @@ -0,0 +1,1223 @@ +// Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information. +$(function () { + var active = 'active'; + var expanded = 'in'; + var collapsed = 'collapsed'; + var filtered = 'filtered'; + var show = 'show'; + var hide = 'hide'; + var util = new utility(); + + workAroundFixedHeaderForAnchors(); + highlight(); + enableSearch(); + + renderTables(); + renderAlerts(); + renderLinks(); + renderNavbar(); + renderSidebar(); + renderAffix(); + renderFooter(); + renderLogo(); + + breakText(); + renderTabs(); + + window.refresh = function (article) { + // Update markup result + if (typeof article == 'undefined' || typeof article.content == 'undefined') + console.error("Null Argument"); + $("article.content").html(article.content); + + highlight(); + renderTables(); + renderAlerts(); + renderAffix(); + renderTabs(); + } + + // Add this event listener when needed + // window.addEventListener('content-update', contentUpdate); + + function breakText() { + $(".xref").addClass("text-break"); + var texts = $(".text-break"); + texts.each(function () { + $(this).breakWord(); + }); + } + + // Styling for tables in conceptual documents using Bootstrap. + // See http://getbootstrap.com/css/#tables + function renderTables() { + $('table').addClass('table table-bordered table-condensed').wrap('

'); + } + + // Styling for alerts. + function renderAlerts() { + $('.NOTE, .TIP').addClass('alert alert-info'); + $('.WARNING').addClass('alert alert-warning'); + $('.IMPORTANT, .CAUTION').addClass('alert alert-danger'); + } + + // Enable anchors for headings. + (function () { + anchors.options = { + placement: 'left', + visible: 'hover' + }; + anchors.add('article h2:not(.no-anchor), article h3:not(.no-anchor), article h4:not(.no-anchor)'); + })(); + + // Open links to different host in a new window. + function renderLinks() { + if ($("meta[property='docfx:newtab']").attr("content") === "true") { + $(document.links).filter(function () { + return this.hostname !== window.location.hostname; + }).attr('target', '_blank'); + } + } + + // Enable highlight.js + function highlight() { + $('pre code').each(function (i, block) { + hljs.highlightElement(block); + }); + $('pre code[highlight-lines]').each(function (i, block) { + if (block.innerHTML === "") return; + var lines = block.innerHTML.split('\n'); + + queryString = block.getAttribute('highlight-lines'); + if (!queryString) return; + + var ranges = queryString.split(','); + for (var j = 0, range; range = ranges[j++];) { + var found = range.match(/^(\d+)\-(\d+)?$/); + if (found) { + // consider region as `{startlinenumber}-{endlinenumber}`, in which {endlinenumber} is optional + var start = +found[1]; + var end = +found[2]; + if (isNaN(end) || end > lines.length) { + end = lines.length; + } + } else { + // consider region as a sigine line number + if (isNaN(range)) continue; + var start = +range; + var end = start; + } + if (start <= 0 || end <= 0 || start > end || start > lines.length) { + // skip current region if invalid + continue; + } + lines[start - 1] = '' + lines[start - 1]; + lines[end - 1] = lines[end - 1] + ''; + } + + block.innerHTML = lines.join('\n'); + }); + } + + // Support full-text-search + function enableSearch() { + var query; + var relHref = $("meta[property='docfx\\:rel']").attr("content"); + if (typeof relHref === 'undefined') { + return; + } + try { + var worker = new Worker(relHref + 'styles/search-worker.min.js'); + if (!worker && !window.worker) { + localSearch(); + } else { + webWorkerSearch(); + } + + renderSearchBox(); + highlightKeywords(); + addSearchEvent(); + } catch (e) { + console.error(e); + } + + //Adjust the position of search box in navbar + function renderSearchBox() { + autoCollapse(); + $(window).on('resize', autoCollapse); + $(document).on('click', '.navbar-collapse.in', function (e) { + if ($(e.target).is('a')) { + $(this).collapse('hide'); + } + }); + + function autoCollapse() { + var navbar = $('#autocollapse'); + if (navbar.height() === null) { + setTimeout(autoCollapse, 300); + } + navbar.removeClass(collapsed); + if (navbar.height() > 60) { + navbar.addClass(collapsed); + } + } + } + + // Search factory + function localSearch() { + console.log("using local search"); + var lunrIndex = lunr(function () { + this.ref('href'); + this.field('title', { boost: 50 }); + this.field('keywords', { boost: 20 }); + }); + lunr.tokenizer.seperator = /[\s\-\.]+/; + var searchData = {}; + var searchDataRequest = new XMLHttpRequest(); + + var indexPath = relHref + "index.json"; + if (indexPath) { + searchDataRequest.open('GET', indexPath); + searchDataRequest.onload = function () { + if (this.status != 200) { + return; + } + searchData = JSON.parse(this.responseText); + for (var prop in searchData) { + if (searchData.hasOwnProperty(prop)) { + lunrIndex.add(searchData[prop]); + } + } + } + searchDataRequest.send(); + } + + $("body").bind("queryReady", function () { + var hits = lunrIndex.search(query); + var results = []; + hits.forEach(function (hit) { + var item = searchData[hit.ref]; + results.push({ 'href': item.href, 'title': item.title, 'keywords': item.keywords }); + }); + handleSearchResults(results); + }); + } + + function webWorkerSearch() { + console.log("using Web Worker"); + var indexReady = $.Deferred(); + + worker.onmessage = function (oEvent) { + switch (oEvent.data.e) { + case 'index-ready': + indexReady.resolve(); + break; + case 'query-ready': + var hits = oEvent.data.d; + handleSearchResults(hits); + break; + } + } + + indexReady.promise().done(function () { + $("body").bind("queryReady", function () { + worker.postMessage({ q: query }); + }); + if (query && (query.length >= 3)) { + worker.postMessage({ q: query }); + } + }); + } + + // Highlight the searching keywords + function highlightKeywords() { + var q = url('?q'); + if (q) { + var keywords = q.split("%20"); + keywords.forEach(function (keyword) { + if (keyword !== "") { + $('.data-searchable *').mark(keyword); + $('article *').mark(keyword); + } + }); + } + } + + function addSearchEvent() { + $('body').bind("searchEvent", function () { + $('#search-query').keypress(function (e) { + return e.which !== 13; + }); + + $('#search-query').keyup(function () { + query = $(this).val(); + if (query.length < 3) { + flipContents("show"); + } else { + flipContents("hide"); + $("body").trigger("queryReady"); + $('#search-results>.search-list>span').text('"' + query + '"'); + } + }).off("keydown"); + }); + } + + function flipContents(action) { + if (action === "show") { + $('.hide-when-search').show(); + $('#search-results').hide(); + } else { + $('.hide-when-search').hide(); + $('#search-results').show(); + } + } + + function relativeUrlToAbsoluteUrl(currentUrl, relativeUrl) { + var currentItems = currentUrl.split(/\/+/); + var relativeItems = relativeUrl.split(/\/+/); + var depth = currentItems.length - 1; + var items = []; + for (var i = 0; i < relativeItems.length; i++) { + if (relativeItems[i] === '..') { + depth--; + } else if (relativeItems[i] !== '.') { + items.push(relativeItems[i]); + } + } + return currentItems.slice(0, depth).concat(items).join('/'); + } + + function extractContentBrief(content) { + var briefOffset = 512; + var words = query.split(/\s+/g); + var queryIndex = content.indexOf(words[0]); + var briefContent; + if (queryIndex > briefOffset) { + return "..." + content.slice(queryIndex - briefOffset, queryIndex + briefOffset) + "..."; + } else if (queryIndex <= briefOffset) { + return content.slice(0, queryIndex + briefOffset) + "..."; + } + } + + function handleSearchResults(hits) { + var numPerPage = 10; + var pagination = $('#pagination'); + pagination.empty(); + pagination.removeData("twbs-pagination"); + if (hits.length === 0) { + $('#search-results>.sr-items').html('

No results found

'); + } else { + pagination.twbsPagination({ + first: pagination.data('first'), + prev: pagination.data('prev'), + next: pagination.data('next'), + last: pagination.data('last'), + totalPages: Math.ceil(hits.length / numPerPage), + visiblePages: 5, + onPageClick: function (event, page) { + var start = (page - 1) * numPerPage; + var curHits = hits.slice(start, start + numPerPage); + $('#search-results>.sr-items').empty().append( + curHits.map(function (hit) { + var currentUrl = window.location.href; + var itemRawHref = relativeUrlToAbsoluteUrl(currentUrl, relHref + hit.href); + var itemHref = relHref + hit.href + "?q=" + query; + var itemTitle = hit.title; + var itemBrief = extractContentBrief(hit.keywords); + + var itemNode = $('
').attr('class', 'sr-item'); + var itemTitleNode = $('
').attr('class', 'item-title').append($('').attr('href', itemHref).attr("target", "_blank").attr("rel", "noopener noreferrer").text(itemTitle)); + var itemHrefNode = $('
').attr('class', 'item-href').text(itemRawHref); + var itemBriefNode = $('
').attr('class', 'item-brief').text(itemBrief); + itemNode.append(itemTitleNode).append(itemHrefNode).append(itemBriefNode); + return itemNode; + }) + ); + query.split(/\s+/).forEach(function (word) { + if (word !== '') { + $('#search-results>.sr-items *').mark(word); + } + }); + } + }); + } + } + }; + + // Update href in navbar + function renderNavbar() { + var navbar = $('#navbar ul')[0]; + if (typeof (navbar) === 'undefined') { + loadNavbar(); + } else { + $('#navbar ul a.active').parents('li').addClass(active); + renderBreadcrumb(); + showSearch(); + } + + function showSearch() { + if ($('#search-results').length !== 0) { + $('#search').show(); + $('body').trigger("searchEvent"); + } + } + + function loadNavbar() { + var navbarPath = $("meta[property='docfx\\:navrel']").attr("content"); + if (!navbarPath) { + return; + } + navbarPath = navbarPath.replace(/\\/g, '/'); + var tocPath = $("meta[property='docfx\\:tocrel']").attr("content") || ''; + if (tocPath) tocPath = tocPath.replace(/\\/g, '/'); + $.get(navbarPath, function (data) { + $(data).find("#toc>ul").appendTo("#navbar"); + showSearch(); + var index = navbarPath.lastIndexOf('/'); + var navrel = ''; + if (index > -1) { + navrel = navbarPath.substr(0, index + 1); + } + $('#navbar>ul').addClass('navbar-nav'); + var currentAbsPath = util.getCurrentWindowAbsolutePath(); + // set active item + $('#navbar').find('a[href]').each(function (i, e) { + var href = $(e).attr("href"); + if (util.isRelativePath(href)) { + href = navrel + href; + $(e).attr("href", href); + + var isActive = false; + var originalHref = e.name; + if (originalHref) { + originalHref = navrel + originalHref; + if (util.getDirectory(util.getAbsolutePath(originalHref)) === util.getDirectory(util.getAbsolutePath(tocPath))) { + isActive = true; + } + } else { + if (util.getAbsolutePath(href) === currentAbsPath) { + var dropdown = $(e).attr('data-toggle') == "dropdown" + if (!dropdown) { + isActive = true; + } + } + } + if (isActive) { + $(e).addClass(active); + } + } + }); + renderNavbar(); + }); + } + } + + function renderSidebar() { + var sidetoc = $('#sidetoggle .sidetoc')[0]; + if (typeof (sidetoc) === 'undefined') { + loadToc(); + } else { + registerTocEvents(); + if ($('footer').is(':visible')) { + $('.sidetoc').addClass('shiftup'); + } + + // Scroll to active item + var top = 0; + $('#toc a.active').parents('li').each(function (i, e) { + $(e).addClass(active).addClass(expanded); + $(e).children('a').addClass(active); + }) + $('#toc a.active').parents('li').each(function (i, e) { + top += $(e).position().top; + }) + $('.sidetoc').scrollTop(top - 50); + + if ($('footer').is(':visible')) { + $('.sidetoc').addClass('shiftup'); + } + + renderBreadcrumb(); + } + + function registerTocEvents() { + var tocFilterInput = $('#toc_filter_input'); + var tocFilterClearButton = $('#toc_filter_clear'); + + $('.toc .nav > li > .expand-stub').click(function (e) { + $(e.target).parent().toggleClass(expanded); + }); + $('.toc .nav > li > .expand-stub + a:not([href])').click(function (e) { + $(e.target).parent().toggleClass(expanded); + }); + tocFilterInput.on('input', function (e) { + var val = this.value; + //Save filter string to local session storage + if (typeof(Storage) !== "undefined") { + try { + sessionStorage.filterString = val; + } + catch(e) + {} + } + if (val === '') { + // Clear 'filtered' class + $('#toc li').removeClass(filtered).removeClass(hide); + tocFilterClearButton.fadeOut(); + return; + } + tocFilterClearButton.fadeIn(); + + // set all parent nodes status + $('#toc li>a').filter(function (i, e) { + return $(e).siblings().length > 0 + }).each(function (i, anchor) { + var parent = $(anchor).parent(); + parent.addClass(hide); + parent.removeClass(show); + parent.removeClass(filtered); + }) + + // Get leaf nodes + $('#toc li>a').filter(function (i, e) { + return $(e).siblings().length === 0 + }).each(function (i, anchor) { + var text = $(anchor).attr('title'); + var parent = $(anchor).parent(); + var parentNodes = parent.parents('ul>li'); + for (var i = 0; i < parentNodes.length; i++) { + var parentText = $(parentNodes[i]).children('a').attr('title'); + if (parentText) text = parentText + '.' + text; + }; + if (filterNavItem(text, val)) { + parent.addClass(show); + parent.removeClass(hide); + } else { + parent.addClass(hide); + parent.removeClass(show); + } + }); + $('#toc li>a').filter(function (i, e) { + return $(e).siblings().length > 0 + }).each(function (i, anchor) { + var parent = $(anchor).parent(); + if (parent.find('li.show').length > 0) { + parent.addClass(show); + parent.addClass(filtered); + parent.removeClass(hide); + } else { + parent.addClass(hide); + parent.removeClass(show); + parent.removeClass(filtered); + } + }) + + function filterNavItem(name, text) { + if (!text) return true; + if (name && name.toLowerCase().indexOf(text.toLowerCase()) > -1) return true; + return false; + } + }); + + // toc filter clear button + tocFilterClearButton.hide(); + tocFilterClearButton.on("click", function(e){ + tocFilterInput.val(""); + tocFilterInput.trigger('input'); + if (typeof(Storage) !== "undefined") { + try { + sessionStorage.filterString = ""; + } + catch(e) + {} + } + }); + + //Set toc filter from local session storage on page load + if (typeof(Storage) !== "undefined") { + try { + tocFilterInput.val(sessionStorage.filterString); + tocFilterInput.trigger('input'); + } + catch(e) + {} + } + } + + function loadToc() { + var tocPath = $("meta[property='docfx\\:tocrel']").attr("content"); + if (!tocPath) { + return; + } + tocPath = tocPath.replace(/\\/g, '/'); + $('#sidetoc').load(tocPath + " #sidetoggle > div", function () { + var index = tocPath.lastIndexOf('/'); + var tocrel = ''; + if (index > -1) { + tocrel = tocPath.substr(0, index + 1); + } + var currentHref = util.getCurrentWindowAbsolutePath(); + if(!currentHref.endsWith('.html')) { + currentHref += '.html'; + } + $('#sidetoc').find('a[href]').each(function (i, e) { + var href = $(e).attr("href"); + if (util.isRelativePath(href)) { + href = tocrel + href; + $(e).attr("href", href); + } + + if (util.getAbsolutePath(e.href) === currentHref) { + $(e).addClass(active); + } + + $(e).breakWord(); + }); + + renderSidebar(); + }); + } + } + + function renderBreadcrumb() { + var breadcrumb = []; + $('#navbar a.active').each(function (i, e) { + breadcrumb.push({ + href: e.href, + name: e.innerHTML + }); + }) + $('#toc a.active').each(function (i, e) { + breadcrumb.push({ + href: e.href, + name: e.innerHTML + }); + }) + + var html = util.formList(breadcrumb, 'breadcrumb'); + $('#breadcrumb').html(html); + } + + //Setup Affix + function renderAffix() { + var hierarchy = getHierarchy(); + if (!hierarchy || hierarchy.length <= 0) { + $("#affix").hide(); + } + else { + var html = util.formList(hierarchy, ['nav', 'bs-docs-sidenav']); + $("#affix>div").empty().append(html); + if ($('footer').is(':visible')) { + $(".sideaffix").css("bottom", "70px"); + } + $('#affix a').click(function(e) { + var scrollspy = $('[data-spy="scroll"]').data()['bs.scrollspy']; + var target = e.target.hash; + if (scrollspy && target) { + scrollspy.activate(target); + } + }); + } + + function getHierarchy() { + // supported headers are h1, h2, h3, and h4 + var $headers = $($.map(['h1', 'h2', 'h3', 'h4'], function (h) { return ".article article " + h; }).join(", ")); + + // a stack of hierarchy items that are currently being built + var stack = []; + $headers.each(function (i, e) { + if (!e.id) { + return; + } + + var item = { + name: htmlEncode($(e).text()), + href: "#" + e.id, + items: [] + }; + + if (!stack.length) { + stack.push({ type: e.tagName, siblings: [item] }); + return; + } + + var frame = stack[stack.length - 1]; + if (e.tagName === frame.type) { + frame.siblings.push(item); + } else if (e.tagName[1] > frame.type[1]) { + // we are looking at a child of the last element of frame.siblings. + // push a frame onto the stack. After we've finished building this item's children, + // we'll attach it as a child of the last element + stack.push({ type: e.tagName, siblings: [item] }); + } else { // e.tagName[1] < frame.type[1] + // we are looking at a sibling of an ancestor of the current item. + // pop frames from the stack, building items as we go, until we reach the correct level at which to attach this item. + while (e.tagName[1] < stack[stack.length - 1].type[1]) { + buildParent(); + } + if (e.tagName === stack[stack.length - 1].type) { + stack[stack.length - 1].siblings.push(item); + } else { + stack.push({ type: e.tagName, siblings: [item] }); + } + } + }); + while (stack.length > 1) { + buildParent(); + } + + function buildParent() { + var childrenToAttach = stack.pop(); + var parentFrame = stack[stack.length - 1]; + var parent = parentFrame.siblings[parentFrame.siblings.length - 1]; + $.each(childrenToAttach.siblings, function (i, child) { + parent.items.push(child); + }); + } + if (stack.length > 0) { + + var topLevel = stack.pop().siblings; + if (topLevel.length === 1) { // if there's only one topmost header, dump it + return topLevel[0].items; + } + return topLevel; + } + return undefined; + } + + function htmlEncode(str) { + if (!str) return str; + return str + .replace(/&/g, '&') + .replace(/"/g, '"') + .replace(/'/g, ''') + .replace(//g, '>'); + } + + function htmlDecode(value) { + if (!str) return str; + return value + .replace(/"/g, '"') + .replace(/'/g, "'") + .replace(/</g, '<') + .replace(/>/g, '>') + .replace(/&/g, '&'); + } + + function cssEscape(str) { + // see: http://stackoverflow.com/questions/2786538/need-to-escape-a-special-character-in-a-jquery-selector-string#answer-2837646 + if (!str) return str; + return str + .replace(/[!"#$%&'()*+,.\/:;<=>?@[\\\]^`{|}~]/g, "\\$&"); + } + } + + // Show footer + function renderFooter() { + initFooter(); + $(window).on("scroll", showFooterCore); + + function initFooter() { + if (needFooter()) { + shiftUpBottomCss(); + $("footer").show(); + } else { + resetBottomCss(); + $("footer").hide(); + } + } + + function showFooterCore() { + if (needFooter()) { + shiftUpBottomCss(); + $("footer").fadeIn(); + } else { + resetBottomCss(); + $("footer").fadeOut(); + } + } + + function needFooter() { + var scrollHeight = $(document).height(); + var scrollPosition = $(window).height() + $(window).scrollTop(); + return (scrollHeight - scrollPosition) < 1; + } + + function resetBottomCss() { + $(".sidetoc").removeClass("shiftup"); + $(".sideaffix").removeClass("shiftup"); + } + + function shiftUpBottomCss() { + $(".sidetoc").addClass("shiftup"); + $(".sideaffix").addClass("shiftup"); + } + } + + function renderLogo() { + // For LOGO SVG + // Replace SVG with inline SVG + // http://stackoverflow.com/questions/11978995/how-to-change-color-of-svg-image-using-css-jquery-svg-image-replacement + jQuery('img.svg').each(function () { + var $img = jQuery(this); + var imgID = $img.attr('id'); + var imgClass = $img.attr('class'); + var imgURL = $img.attr('src'); + + jQuery.get(imgURL, function (data) { + // Get the SVG tag, ignore the rest + var $svg = jQuery(data).find('svg'); + + // Add replaced image's ID to the new SVG + if (typeof imgID !== 'undefined') { + $svg = $svg.attr('id', imgID); + } + // Add replaced image's classes to the new SVG + if (typeof imgClass !== 'undefined') { + $svg = $svg.attr('class', imgClass + ' replaced-svg'); + } + + // Remove any invalid XML tags as per http://validator.w3.org + $svg = $svg.removeAttr('xmlns:a'); + + // Replace image with new SVG + $img.replaceWith($svg); + + }, 'xml'); + }); + } + + function renderTabs() { + var contentAttrs = { + id: 'data-bi-id', + name: 'data-bi-name', + type: 'data-bi-type' + }; + + var Tab = (function () { + function Tab(li, a, section) { + this.li = li; + this.a = a; + this.section = section; + } + Object.defineProperty(Tab.prototype, "tabIds", { + get: function () { return this.a.getAttribute('data-tab').split(' '); }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Tab.prototype, "condition", { + get: function () { return this.a.getAttribute('data-condition'); }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Tab.prototype, "visible", { + get: function () { return !this.li.hasAttribute('hidden'); }, + set: function (value) { + if (value) { + this.li.removeAttribute('hidden'); + this.li.removeAttribute('aria-hidden'); + } + else { + this.li.setAttribute('hidden', 'hidden'); + this.li.setAttribute('aria-hidden', 'true'); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Tab.prototype, "selected", { + get: function () { return !this.section.hasAttribute('hidden'); }, + set: function (value) { + if (value) { + this.a.setAttribute('aria-selected', 'true'); + this.a.tabIndex = 0; + this.section.removeAttribute('hidden'); + this.section.removeAttribute('aria-hidden'); + } + else { + this.a.setAttribute('aria-selected', 'false'); + this.a.tabIndex = -1; + this.section.setAttribute('hidden', 'hidden'); + this.section.setAttribute('aria-hidden', 'true'); + } + }, + enumerable: true, + configurable: true + }); + Tab.prototype.focus = function () { + this.a.focus(); + }; + return Tab; + }()); + + initTabs(document.body); + + function initTabs(container) { + var queryStringTabs = readTabsQueryStringParam(); + var elements = container.querySelectorAll('.tabGroup'); + var state = { groups: [], selectedTabs: [] }; + for (var i = 0; i < elements.length; i++) { + var group = initTabGroup(elements.item(i)); + if (!group.independent) { + updateVisibilityAndSelection(group, state); + state.groups.push(group); + } + } + container.addEventListener('click', function (event) { return handleClick(event, state); }); + if (state.groups.length === 0) { + return state; + } + selectTabs(queryStringTabs, container); + updateTabsQueryStringParam(state); + notifyContentUpdated(); + return state; + } + + function initTabGroup(element) { + var group = { + independent: element.hasAttribute('data-tab-group-independent'), + tabs: [] + }; + var li = element.firstElementChild.firstElementChild; + while (li) { + var a = li.firstElementChild; + a.setAttribute(contentAttrs.name, 'tab'); + var dataTab = a.getAttribute('data-tab').replace(/\+/g, ' '); + a.setAttribute('data-tab', dataTab); + var section = element.querySelector("[id=\"" + a.getAttribute('aria-controls') + "\"]"); + var tab = new Tab(li, a, section); + group.tabs.push(tab); + li = li.nextElementSibling; + } + element.setAttribute(contentAttrs.name, 'tab-group'); + element.tabGroup = group; + return group; + } + + function updateVisibilityAndSelection(group, state) { + var anySelected = false; + var firstVisibleTab; + for (var _i = 0, _a = group.tabs; _i < _a.length; _i++) { + var tab = _a[_i]; + tab.visible = tab.condition === null || state.selectedTabs.indexOf(tab.condition) !== -1; + if (tab.visible) { + if (!firstVisibleTab) { + firstVisibleTab = tab; + } + } + tab.selected = tab.visible && arraysIntersect(state.selectedTabs, tab.tabIds); + anySelected = anySelected || tab.selected; + } + if (!anySelected) { + for (var _b = 0, _c = group.tabs; _b < _c.length; _b++) { + var tabIds = _c[_b].tabIds; + for (var _d = 0, tabIds_1 = tabIds; _d < tabIds_1.length; _d++) { + var tabId = tabIds_1[_d]; + var index = state.selectedTabs.indexOf(tabId); + if (index === -1) { + continue; + } + state.selectedTabs.splice(index, 1); + } + } + var tab = firstVisibleTab; + tab.selected = true; + state.selectedTabs.push(tab.tabIds[0]); + } + } + + function getTabInfoFromEvent(event) { + if (!(event.target instanceof HTMLElement)) { + return null; + } + var anchor = event.target.closest('a[data-tab]'); + if (anchor === null) { + return null; + } + var tabIds = anchor.getAttribute('data-tab').split(' '); + var group = anchor.parentElement.parentElement.parentElement.tabGroup; + if (group === undefined) { + return null; + } + return { tabIds: tabIds, group: group, anchor: anchor }; + } + + function handleClick(event, state) { + var info = getTabInfoFromEvent(event); + if (info === null) { + return; + } + event.preventDefault(); + info.anchor.href = 'javascript:'; + setTimeout(function () { return info.anchor.href = '#' + info.anchor.getAttribute('aria-controls'); }); + var tabIds = info.tabIds, group = info.group; + var originalTop = info.anchor.getBoundingClientRect().top; + if (group.independent) { + for (var _i = 0, _a = group.tabs; _i < _a.length; _i++) { + var tab = _a[_i]; + tab.selected = arraysIntersect(tab.tabIds, tabIds); + } + } + else { + if (arraysIntersect(state.selectedTabs, tabIds)) { + return; + } + var previousTabId = group.tabs.filter(function (t) { return t.selected; })[0].tabIds[0]; + state.selectedTabs.splice(state.selectedTabs.indexOf(previousTabId), 1, tabIds[0]); + for (var _b = 0, _c = state.groups; _b < _c.length; _b++) { + var group_1 = _c[_b]; + updateVisibilityAndSelection(group_1, state); + } + updateTabsQueryStringParam(state); + } + notifyContentUpdated(); + var top = info.anchor.getBoundingClientRect().top; + if (top !== originalTop && event instanceof MouseEvent) { + window.scrollTo(0, window.pageYOffset + top - originalTop); + } + } + + function selectTabs(tabIds) { + for (var _i = 0, tabIds_1 = tabIds; _i < tabIds_1.length; _i++) { + var tabId = tabIds_1[_i]; + var a = document.querySelector(".tabGroup > ul > li > a[data-tab=\"" + tabId + "\"]:not([hidden])"); + if (a === null) { + return; + } + a.dispatchEvent(new CustomEvent('click', { bubbles: true })); + } + } + + function readTabsQueryStringParam() { + var qs = parseQueryString(window.location.search); + var t = qs.tabs; + if (t === undefined || t === '') { + return []; + } + return t.split(','); + } + + function updateTabsQueryStringParam(state) { + var qs = parseQueryString(window.location.search); + qs.tabs = state.selectedTabs.join(); + var url = location.protocol + "//" + location.host + location.pathname + "?" + toQueryString(qs) + location.hash; + if (location.href === url) { + return; + } + history.replaceState({}, document.title, url); + } + + function toQueryString(args) { + var parts = []; + for (var name_1 in args) { + if (args.hasOwnProperty(name_1) && args[name_1] !== '' && args[name_1] !== null && args[name_1] !== undefined) { + parts.push(encodeURIComponent(name_1) + '=' + encodeURIComponent(args[name_1])); + } + } + return parts.join('&'); + } + + function parseQueryString(queryString) { + var match; + var pl = /\+/g; + var search = /([^&=]+)=?([^&]*)/g; + var decode = function (s) { return decodeURIComponent(s.replace(pl, ' ')); }; + if (queryString === undefined) { + queryString = ''; + } + queryString = queryString.substring(1); + var urlParams = {}; + while (match = search.exec(queryString)) { + urlParams[decode(match[1])] = decode(match[2]); + } + return urlParams; + } + + function arraysIntersect(a, b) { + for (var _i = 0, a_1 = a; _i < a_1.length; _i++) { + var itemA = a_1[_i]; + for (var _a = 0, b_1 = b; _a < b_1.length; _a++) { + var itemB = b_1[_a]; + if (itemA === itemB) { + return true; + } + } + } + return false; + } + + function notifyContentUpdated() { + // Dispatch this event when needed + // window.dispatchEvent(new CustomEvent('content-update')); + } + } + + function utility() { + this.getAbsolutePath = getAbsolutePath; + this.isRelativePath = isRelativePath; + this.isAbsolutePath = isAbsolutePath; + this.getCurrentWindowAbsolutePath = getCurrentWindowAbsolutePath; + this.getDirectory = getDirectory; + this.formList = formList; + + function getAbsolutePath(href) { + if (isAbsolutePath(href)) return href; + var currentAbsPath = getCurrentWindowAbsolutePath(); + var stack = currentAbsPath.split("/"); + stack.pop(); + var parts = href.split("/"); + for (var i=0; i< parts.length; i++) { + if (parts[i] == ".") continue; + if (parts[i] == ".." && stack.length > 0) + stack.pop(); + else + stack.push(parts[i]); + } + var p = stack.join("/"); + return p; + } + + function isRelativePath(href) { + if (href === undefined || href === '' || href[0] === '/') { + return false; + } + return !isAbsolutePath(href); + } + + function isAbsolutePath(href) { + return (/^(?:[a-z]+:)?\/\//i).test(href); + } + + function getCurrentWindowAbsolutePath() { + return window.location.origin + window.location.pathname; + } + function getDirectory(href) { + if (!href) return ''; + var index = href.lastIndexOf('/'); + if (index == -1) return ''; + if (index > -1) { + return href.substr(0, index); + } + } + + function formList(item, classes) { + var level = 1; + var model = { + items: item + }; + var cls = [].concat(classes).join(" "); + return getList(model, cls); + + function getList(model, cls) { + if (!model || !model.items) return null; + var l = model.items.length; + if (l === 0) return null; + var html = ''; + return html; + } + } + + /** + * Add into long word. + * @param {String} text - The word to break. It should be in plain text without HTML tags. + */ + function breakPlainText(text) { + if (!text) return text; + return text.replace(/([a-z])([A-Z])|(\.)(\w)/g, '$1$3$2$4') + } + + /** + * Add into long word. The jQuery element should contain no html tags. + * If the jQuery element contains tags, this function will not change the element. + */ + $.fn.breakWord = function () { + if (!this.html().match(/(<\w*)((\s\/>)|(.*<\/\w*>))/g)) { + this.html(function (index, text) { + return breakPlainText(text); + }) + } + return this; + } + } + + // adjusted from https://stackoverflow.com/a/13067009/1523776 + function workAroundFixedHeaderForAnchors() { + var HISTORY_SUPPORT = !!(history && history.pushState); + var ANCHOR_REGEX = /^#[^ ]+$/; + + function getFixedOffset() { + return $('header').first().height(); + } + + /** + * If the provided href is an anchor which resolves to an element on the + * page, scroll to it. + * @param {String} href + * @return {Boolean} - Was the href an anchor. + */ + function scrollIfAnchor(href, pushToHistory) { + var match, rect, anchorOffset; + + if (!ANCHOR_REGEX.test(href)) { + return false; + } + + match = document.getElementById(href.slice(1)); + + if (match) { + rect = match.getBoundingClientRect(); + anchorOffset = window.pageYOffset + rect.top - getFixedOffset(); + window.scrollTo(window.pageXOffset, anchorOffset); + + // Add the state to history as-per normal anchor links + if (HISTORY_SUPPORT && pushToHistory) { + history.pushState({}, document.title, location.pathname + href); + } + } + + return !!match; + } + + /** + * Attempt to scroll to the current location's hash. + */ + function scrollToCurrent() { + scrollIfAnchor(window.location.hash); + } + + /** + * If the click event's target was an anchor, fix the scroll position. + */ + function delegateAnchors(e) { + var elem = e.target; + + if (scrollIfAnchor(elem.getAttribute('href'), true)) { + e.preventDefault(); + } + } + + $(window).on('hashchange', scrollToCurrent); + + $(window).on('load', function () { + // scroll to the anchor if present, offset by the header + scrollToCurrent(); + }); + + $(document).ready(function () { + // Exclude tabbed content case + $('a:not([data-tab])').click(function (e) { delegateAnchors(e); }); + }); + } +}); diff --git a/styles/docfx.min.css b/styles/docfx.min.css new file mode 100644 index 00000000..ef56499a --- /dev/null +++ b/styles/docfx.min.css @@ -0,0 +1,26 @@ +@charset "UTF-8";@font-face{font-display:block;font-family:bootstrap-icons;src:url(./bootstrap-icons-AJUF3K7A.woff2?24e3eb84d0bcaf83d77f904c78ac1f47) format("woff2"),url(./bootstrap-icons-QRR4WHQW.woff?24e3eb84d0bcaf83d77f904c78ac1f47) format("woff")}.bi:before,[class^=bi-]:before,[class*=" bi-"]:before{display:inline-block;font-family:bootstrap-icons!important;font-style:normal;font-weight:400!important;font-variant:normal;text-transform:none;line-height:1;vertical-align:-.125em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.bi-123:before{content:"\f67f"}.bi-alarm-fill:before{content:"\f101"}.bi-alarm:before{content:"\f102"}.bi-align-bottom:before{content:"\f103"}.bi-align-center:before{content:"\f104"}.bi-align-end:before{content:"\f105"}.bi-align-middle:before{content:"\f106"}.bi-align-start:before{content:"\f107"}.bi-align-top:before{content:"\f108"}.bi-alt:before{content:"\f109"}.bi-app-indicator:before{content:"\f10a"}.bi-app:before{content:"\f10b"}.bi-archive-fill:before{content:"\f10c"}.bi-archive:before{content:"\f10d"}.bi-arrow-90deg-down:before{content:"\f10e"}.bi-arrow-90deg-left:before{content:"\f10f"}.bi-arrow-90deg-right:before{content:"\f110"}.bi-arrow-90deg-up:before{content:"\f111"}.bi-arrow-bar-down:before{content:"\f112"}.bi-arrow-bar-left:before{content:"\f113"}.bi-arrow-bar-right:before{content:"\f114"}.bi-arrow-bar-up:before{content:"\f115"}.bi-arrow-clockwise:before{content:"\f116"}.bi-arrow-counterclockwise:before{content:"\f117"}.bi-arrow-down-circle-fill:before{content:"\f118"}.bi-arrow-down-circle:before{content:"\f119"}.bi-arrow-down-left-circle-fill:before{content:"\f11a"}.bi-arrow-down-left-circle:before{content:"\f11b"}.bi-arrow-down-left-square-fill:before{content:"\f11c"}.bi-arrow-down-left-square:before{content:"\f11d"}.bi-arrow-down-left:before{content:"\f11e"}.bi-arrow-down-right-circle-fill:before{content:"\f11f"}.bi-arrow-down-right-circle:before{content:"\f120"}.bi-arrow-down-right-square-fill:before{content:"\f121"}.bi-arrow-down-right-square:before{content:"\f122"}.bi-arrow-down-right:before{content:"\f123"}.bi-arrow-down-short:before{content:"\f124"}.bi-arrow-down-square-fill:before{content:"\f125"}.bi-arrow-down-square:before{content:"\f126"}.bi-arrow-down-up:before{content:"\f127"}.bi-arrow-down:before{content:"\f128"}.bi-arrow-left-circle-fill:before{content:"\f129"}.bi-arrow-left-circle:before{content:"\f12a"}.bi-arrow-left-right:before{content:"\f12b"}.bi-arrow-left-short:before{content:"\f12c"}.bi-arrow-left-square-fill:before{content:"\f12d"}.bi-arrow-left-square:before{content:"\f12e"}.bi-arrow-left:before{content:"\f12f"}.bi-arrow-repeat:before{content:"\f130"}.bi-arrow-return-left:before{content:"\f131"}.bi-arrow-return-right:before{content:"\f132"}.bi-arrow-right-circle-fill:before{content:"\f133"}.bi-arrow-right-circle:before{content:"\f134"}.bi-arrow-right-short:before{content:"\f135"}.bi-arrow-right-square-fill:before{content:"\f136"}.bi-arrow-right-square:before{content:"\f137"}.bi-arrow-right:before{content:"\f138"}.bi-arrow-up-circle-fill:before{content:"\f139"}.bi-arrow-up-circle:before{content:"\f13a"}.bi-arrow-up-left-circle-fill:before{content:"\f13b"}.bi-arrow-up-left-circle:before{content:"\f13c"}.bi-arrow-up-left-square-fill:before{content:"\f13d"}.bi-arrow-up-left-square:before{content:"\f13e"}.bi-arrow-up-left:before{content:"\f13f"}.bi-arrow-up-right-circle-fill:before{content:"\f140"}.bi-arrow-up-right-circle:before{content:"\f141"}.bi-arrow-up-right-square-fill:before{content:"\f142"}.bi-arrow-up-right-square:before{content:"\f143"}.bi-arrow-up-right:before{content:"\f144"}.bi-arrow-up-short:before{content:"\f145"}.bi-arrow-up-square-fill:before{content:"\f146"}.bi-arrow-up-square:before{content:"\f147"}.bi-arrow-up:before{content:"\f148"}.bi-arrows-angle-contract:before{content:"\f149"}.bi-arrows-angle-expand:before{content:"\f14a"}.bi-arrows-collapse:before{content:"\f14b"}.bi-arrows-expand:before{content:"\f14c"}.bi-arrows-fullscreen:before{content:"\f14d"}.bi-arrows-move:before{content:"\f14e"}.bi-aspect-ratio-fill:before{content:"\f14f"}.bi-aspect-ratio:before{content:"\f150"}.bi-asterisk:before{content:"\f151"}.bi-at:before{content:"\f152"}.bi-award-fill:before{content:"\f153"}.bi-award:before{content:"\f154"}.bi-back:before{content:"\f155"}.bi-backspace-fill:before{content:"\f156"}.bi-backspace-reverse-fill:before{content:"\f157"}.bi-backspace-reverse:before{content:"\f158"}.bi-backspace:before{content:"\f159"}.bi-badge-3d-fill:before{content:"\f15a"}.bi-badge-3d:before{content:"\f15b"}.bi-badge-4k-fill:before{content:"\f15c"}.bi-badge-4k:before{content:"\f15d"}.bi-badge-8k-fill:before{content:"\f15e"}.bi-badge-8k:before{content:"\f15f"}.bi-badge-ad-fill:before{content:"\f160"}.bi-badge-ad:before{content:"\f161"}.bi-badge-ar-fill:before{content:"\f162"}.bi-badge-ar:before{content:"\f163"}.bi-badge-cc-fill:before{content:"\f164"}.bi-badge-cc:before{content:"\f165"}.bi-badge-hd-fill:before{content:"\f166"}.bi-badge-hd:before{content:"\f167"}.bi-badge-tm-fill:before{content:"\f168"}.bi-badge-tm:before{content:"\f169"}.bi-badge-vo-fill:before{content:"\f16a"}.bi-badge-vo:before{content:"\f16b"}.bi-badge-vr-fill:before{content:"\f16c"}.bi-badge-vr:before{content:"\f16d"}.bi-badge-wc-fill:before{content:"\f16e"}.bi-badge-wc:before{content:"\f16f"}.bi-bag-check-fill:before{content:"\f170"}.bi-bag-check:before{content:"\f171"}.bi-bag-dash-fill:before{content:"\f172"}.bi-bag-dash:before{content:"\f173"}.bi-bag-fill:before{content:"\f174"}.bi-bag-plus-fill:before{content:"\f175"}.bi-bag-plus:before{content:"\f176"}.bi-bag-x-fill:before{content:"\f177"}.bi-bag-x:before{content:"\f178"}.bi-bag:before{content:"\f179"}.bi-bar-chart-fill:before{content:"\f17a"}.bi-bar-chart-line-fill:before{content:"\f17b"}.bi-bar-chart-line:before{content:"\f17c"}.bi-bar-chart-steps:before{content:"\f17d"}.bi-bar-chart:before{content:"\f17e"}.bi-basket-fill:before{content:"\f17f"}.bi-basket:before{content:"\f180"}.bi-basket2-fill:before{content:"\f181"}.bi-basket2:before{content:"\f182"}.bi-basket3-fill:before{content:"\f183"}.bi-basket3:before{content:"\f184"}.bi-battery-charging:before{content:"\f185"}.bi-battery-full:before{content:"\f186"}.bi-battery-half:before{content:"\f187"}.bi-battery:before{content:"\f188"}.bi-bell-fill:before{content:"\f189"}.bi-bell:before{content:"\f18a"}.bi-bezier:before{content:"\f18b"}.bi-bezier2:before{content:"\f18c"}.bi-bicycle:before{content:"\f18d"}.bi-binoculars-fill:before{content:"\f18e"}.bi-binoculars:before{content:"\f18f"}.bi-blockquote-left:before{content:"\f190"}.bi-blockquote-right:before{content:"\f191"}.bi-book-fill:before{content:"\f192"}.bi-book-half:before{content:"\f193"}.bi-book:before{content:"\f194"}.bi-bookmark-check-fill:before{content:"\f195"}.bi-bookmark-check:before{content:"\f196"}.bi-bookmark-dash-fill:before{content:"\f197"}.bi-bookmark-dash:before{content:"\f198"}.bi-bookmark-fill:before{content:"\f199"}.bi-bookmark-heart-fill:before{content:"\f19a"}.bi-bookmark-heart:before{content:"\f19b"}.bi-bookmark-plus-fill:before{content:"\f19c"}.bi-bookmark-plus:before{content:"\f19d"}.bi-bookmark-star-fill:before{content:"\f19e"}.bi-bookmark-star:before{content:"\f19f"}.bi-bookmark-x-fill:before{content:"\f1a0"}.bi-bookmark-x:before{content:"\f1a1"}.bi-bookmark:before{content:"\f1a2"}.bi-bookmarks-fill:before{content:"\f1a3"}.bi-bookmarks:before{content:"\f1a4"}.bi-bookshelf:before{content:"\f1a5"}.bi-bootstrap-fill:before{content:"\f1a6"}.bi-bootstrap-reboot:before{content:"\f1a7"}.bi-bootstrap:before{content:"\f1a8"}.bi-border-all:before{content:"\f1a9"}.bi-border-bottom:before{content:"\f1aa"}.bi-border-center:before{content:"\f1ab"}.bi-border-inner:before{content:"\f1ac"}.bi-border-left:before{content:"\f1ad"}.bi-border-middle:before{content:"\f1ae"}.bi-border-outer:before{content:"\f1af"}.bi-border-right:before{content:"\f1b0"}.bi-border-style:before{content:"\f1b1"}.bi-border-top:before{content:"\f1b2"}.bi-border-width:before{content:"\f1b3"}.bi-border:before{content:"\f1b4"}.bi-bounding-box-circles:before{content:"\f1b5"}.bi-bounding-box:before{content:"\f1b6"}.bi-box-arrow-down-left:before{content:"\f1b7"}.bi-box-arrow-down-right:before{content:"\f1b8"}.bi-box-arrow-down:before{content:"\f1b9"}.bi-box-arrow-in-down-left:before{content:"\f1ba"}.bi-box-arrow-in-down-right:before{content:"\f1bb"}.bi-box-arrow-in-down:before{content:"\f1bc"}.bi-box-arrow-in-left:before{content:"\f1bd"}.bi-box-arrow-in-right:before{content:"\f1be"}.bi-box-arrow-in-up-left:before{content:"\f1bf"}.bi-box-arrow-in-up-right:before{content:"\f1c0"}.bi-box-arrow-in-up:before{content:"\f1c1"}.bi-box-arrow-left:before{content:"\f1c2"}.bi-box-arrow-right:before{content:"\f1c3"}.bi-box-arrow-up-left:before{content:"\f1c4"}.bi-box-arrow-up-right:before{content:"\f1c5"}.bi-box-arrow-up:before{content:"\f1c6"}.bi-box-seam:before{content:"\f1c7"}.bi-box:before{content:"\f1c8"}.bi-braces:before{content:"\f1c9"}.bi-bricks:before{content:"\f1ca"}.bi-briefcase-fill:before{content:"\f1cb"}.bi-briefcase:before{content:"\f1cc"}.bi-brightness-alt-high-fill:before{content:"\f1cd"}.bi-brightness-alt-high:before{content:"\f1ce"}.bi-brightness-alt-low-fill:before{content:"\f1cf"}.bi-brightness-alt-low:before{content:"\f1d0"}.bi-brightness-high-fill:before{content:"\f1d1"}.bi-brightness-high:before{content:"\f1d2"}.bi-brightness-low-fill:before{content:"\f1d3"}.bi-brightness-low:before{content:"\f1d4"}.bi-broadcast-pin:before{content:"\f1d5"}.bi-broadcast:before{content:"\f1d6"}.bi-brush-fill:before{content:"\f1d7"}.bi-brush:before{content:"\f1d8"}.bi-bucket-fill:before{content:"\f1d9"}.bi-bucket:before{content:"\f1da"}.bi-bug-fill:before{content:"\f1db"}.bi-bug:before{content:"\f1dc"}.bi-building:before{content:"\f1dd"}.bi-bullseye:before{content:"\f1de"}.bi-calculator-fill:before{content:"\f1df"}.bi-calculator:before{content:"\f1e0"}.bi-calendar-check-fill:before{content:"\f1e1"}.bi-calendar-check:before{content:"\f1e2"}.bi-calendar-date-fill:before{content:"\f1e3"}.bi-calendar-date:before{content:"\f1e4"}.bi-calendar-day-fill:before{content:"\f1e5"}.bi-calendar-day:before{content:"\f1e6"}.bi-calendar-event-fill:before{content:"\f1e7"}.bi-calendar-event:before{content:"\f1e8"}.bi-calendar-fill:before{content:"\f1e9"}.bi-calendar-minus-fill:before{content:"\f1ea"}.bi-calendar-minus:before{content:"\f1eb"}.bi-calendar-month-fill:before{content:"\f1ec"}.bi-calendar-month:before{content:"\f1ed"}.bi-calendar-plus-fill:before{content:"\f1ee"}.bi-calendar-plus:before{content:"\f1ef"}.bi-calendar-range-fill:before{content:"\f1f0"}.bi-calendar-range:before{content:"\f1f1"}.bi-calendar-week-fill:before{content:"\f1f2"}.bi-calendar-week:before{content:"\f1f3"}.bi-calendar-x-fill:before{content:"\f1f4"}.bi-calendar-x:before{content:"\f1f5"}.bi-calendar:before{content:"\f1f6"}.bi-calendar2-check-fill:before{content:"\f1f7"}.bi-calendar2-check:before{content:"\f1f8"}.bi-calendar2-date-fill:before{content:"\f1f9"}.bi-calendar2-date:before{content:"\f1fa"}.bi-calendar2-day-fill:before{content:"\f1fb"}.bi-calendar2-day:before{content:"\f1fc"}.bi-calendar2-event-fill:before{content:"\f1fd"}.bi-calendar2-event:before{content:"\f1fe"}.bi-calendar2-fill:before{content:"\f1ff"}.bi-calendar2-minus-fill:before{content:"\f200"}.bi-calendar2-minus:before{content:"\f201"}.bi-calendar2-month-fill:before{content:"\f202"}.bi-calendar2-month:before{content:"\f203"}.bi-calendar2-plus-fill:before{content:"\f204"}.bi-calendar2-plus:before{content:"\f205"}.bi-calendar2-range-fill:before{content:"\f206"}.bi-calendar2-range:before{content:"\f207"}.bi-calendar2-week-fill:before{content:"\f208"}.bi-calendar2-week:before{content:"\f209"}.bi-calendar2-x-fill:before{content:"\f20a"}.bi-calendar2-x:before{content:"\f20b"}.bi-calendar2:before{content:"\f20c"}.bi-calendar3-event-fill:before{content:"\f20d"}.bi-calendar3-event:before{content:"\f20e"}.bi-calendar3-fill:before{content:"\f20f"}.bi-calendar3-range-fill:before{content:"\f210"}.bi-calendar3-range:before{content:"\f211"}.bi-calendar3-week-fill:before{content:"\f212"}.bi-calendar3-week:before{content:"\f213"}.bi-calendar3:before{content:"\f214"}.bi-calendar4-event:before{content:"\f215"}.bi-calendar4-range:before{content:"\f216"}.bi-calendar4-week:before{content:"\f217"}.bi-calendar4:before{content:"\f218"}.bi-camera-fill:before{content:"\f219"}.bi-camera-reels-fill:before{content:"\f21a"}.bi-camera-reels:before{content:"\f21b"}.bi-camera-video-fill:before{content:"\f21c"}.bi-camera-video-off-fill:before{content:"\f21d"}.bi-camera-video-off:before{content:"\f21e"}.bi-camera-video:before{content:"\f21f"}.bi-camera:before{content:"\f220"}.bi-camera2:before{content:"\f221"}.bi-capslock-fill:before{content:"\f222"}.bi-capslock:before{content:"\f223"}.bi-card-checklist:before{content:"\f224"}.bi-card-heading:before{content:"\f225"}.bi-card-image:before{content:"\f226"}.bi-card-list:before{content:"\f227"}.bi-card-text:before{content:"\f228"}.bi-caret-down-fill:before{content:"\f229"}.bi-caret-down-square-fill:before{content:"\f22a"}.bi-caret-down-square:before{content:"\f22b"}.bi-caret-down:before{content:"\f22c"}.bi-caret-left-fill:before{content:"\f22d"}.bi-caret-left-square-fill:before{content:"\f22e"}.bi-caret-left-square:before{content:"\f22f"}.bi-caret-left:before{content:"\f230"}.bi-caret-right-fill:before{content:"\f231"}.bi-caret-right-square-fill:before{content:"\f232"}.bi-caret-right-square:before{content:"\f233"}.bi-caret-right:before{content:"\f234"}.bi-caret-up-fill:before{content:"\f235"}.bi-caret-up-square-fill:before{content:"\f236"}.bi-caret-up-square:before{content:"\f237"}.bi-caret-up:before{content:"\f238"}.bi-cart-check-fill:before{content:"\f239"}.bi-cart-check:before{content:"\f23a"}.bi-cart-dash-fill:before{content:"\f23b"}.bi-cart-dash:before{content:"\f23c"}.bi-cart-fill:before{content:"\f23d"}.bi-cart-plus-fill:before{content:"\f23e"}.bi-cart-plus:before{content:"\f23f"}.bi-cart-x-fill:before{content:"\f240"}.bi-cart-x:before{content:"\f241"}.bi-cart:before{content:"\f242"}.bi-cart2:before{content:"\f243"}.bi-cart3:before{content:"\f244"}.bi-cart4:before{content:"\f245"}.bi-cash-stack:before{content:"\f246"}.bi-cash:before{content:"\f247"}.bi-cast:before{content:"\f248"}.bi-chat-dots-fill:before{content:"\f249"}.bi-chat-dots:before{content:"\f24a"}.bi-chat-fill:before{content:"\f24b"}.bi-chat-left-dots-fill:before{content:"\f24c"}.bi-chat-left-dots:before{content:"\f24d"}.bi-chat-left-fill:before{content:"\f24e"}.bi-chat-left-quote-fill:before{content:"\f24f"}.bi-chat-left-quote:before{content:"\f250"}.bi-chat-left-text-fill:before{content:"\f251"}.bi-chat-left-text:before{content:"\f252"}.bi-chat-left:before{content:"\f253"}.bi-chat-quote-fill:before{content:"\f254"}.bi-chat-quote:before{content:"\f255"}.bi-chat-right-dots-fill:before{content:"\f256"}.bi-chat-right-dots:before{content:"\f257"}.bi-chat-right-fill:before{content:"\f258"}.bi-chat-right-quote-fill:before{content:"\f259"}.bi-chat-right-quote:before{content:"\f25a"}.bi-chat-right-text-fill:before{content:"\f25b"}.bi-chat-right-text:before{content:"\f25c"}.bi-chat-right:before{content:"\f25d"}.bi-chat-square-dots-fill:before{content:"\f25e"}.bi-chat-square-dots:before{content:"\f25f"}.bi-chat-square-fill:before{content:"\f260"}.bi-chat-square-quote-fill:before{content:"\f261"}.bi-chat-square-quote:before{content:"\f262"}.bi-chat-square-text-fill:before{content:"\f263"}.bi-chat-square-text:before{content:"\f264"}.bi-chat-square:before{content:"\f265"}.bi-chat-text-fill:before{content:"\f266"}.bi-chat-text:before{content:"\f267"}.bi-chat:before{content:"\f268"}.bi-check-all:before{content:"\f269"}.bi-check-circle-fill:before{content:"\f26a"}.bi-check-circle:before{content:"\f26b"}.bi-check-square-fill:before{content:"\f26c"}.bi-check-square:before{content:"\f26d"}.bi-check:before{content:"\f26e"}.bi-check2-all:before{content:"\f26f"}.bi-check2-circle:before{content:"\f270"}.bi-check2-square:before{content:"\f271"}.bi-check2:before{content:"\f272"}.bi-chevron-bar-contract:before{content:"\f273"}.bi-chevron-bar-down:before{content:"\f274"}.bi-chevron-bar-expand:before{content:"\f275"}.bi-chevron-bar-left:before{content:"\f276"}.bi-chevron-bar-right:before{content:"\f277"}.bi-chevron-bar-up:before{content:"\f278"}.bi-chevron-compact-down:before{content:"\f279"}.bi-chevron-compact-left:before{content:"\f27a"}.bi-chevron-compact-right:before{content:"\f27b"}.bi-chevron-compact-up:before{content:"\f27c"}.bi-chevron-contract:before{content:"\f27d"}.bi-chevron-double-down:before{content:"\f27e"}.bi-chevron-double-left:before{content:"\f27f"}.bi-chevron-double-right:before{content:"\f280"}.bi-chevron-double-up:before{content:"\f281"}.bi-chevron-down:before{content:"\f282"}.bi-chevron-expand:before{content:"\f283"}.bi-chevron-left:before{content:"\f284"}.bi-chevron-right:before{content:"\f285"}.bi-chevron-up:before{content:"\f286"}.bi-circle-fill:before{content:"\f287"}.bi-circle-half:before{content:"\f288"}.bi-circle-square:before{content:"\f289"}.bi-circle:before{content:"\f28a"}.bi-clipboard-check:before{content:"\f28b"}.bi-clipboard-data:before{content:"\f28c"}.bi-clipboard-minus:before{content:"\f28d"}.bi-clipboard-plus:before{content:"\f28e"}.bi-clipboard-x:before{content:"\f28f"}.bi-clipboard:before{content:"\f290"}.bi-clock-fill:before{content:"\f291"}.bi-clock-history:before{content:"\f292"}.bi-clock:before{content:"\f293"}.bi-cloud-arrow-down-fill:before{content:"\f294"}.bi-cloud-arrow-down:before{content:"\f295"}.bi-cloud-arrow-up-fill:before{content:"\f296"}.bi-cloud-arrow-up:before{content:"\f297"}.bi-cloud-check-fill:before{content:"\f298"}.bi-cloud-check:before{content:"\f299"}.bi-cloud-download-fill:before{content:"\f29a"}.bi-cloud-download:before{content:"\f29b"}.bi-cloud-drizzle-fill:before{content:"\f29c"}.bi-cloud-drizzle:before{content:"\f29d"}.bi-cloud-fill:before{content:"\f29e"}.bi-cloud-fog-fill:before{content:"\f29f"}.bi-cloud-fog:before{content:"\f2a0"}.bi-cloud-fog2-fill:before{content:"\f2a1"}.bi-cloud-fog2:before{content:"\f2a2"}.bi-cloud-hail-fill:before{content:"\f2a3"}.bi-cloud-hail:before{content:"\f2a4"}.bi-cloud-haze-fill:before{content:"\f2a6"}.bi-cloud-haze:before{content:"\f2a7"}.bi-cloud-haze2-fill:before{content:"\f2a8"}.bi-cloud-lightning-fill:before{content:"\f2a9"}.bi-cloud-lightning-rain-fill:before{content:"\f2aa"}.bi-cloud-lightning-rain:before{content:"\f2ab"}.bi-cloud-lightning:before{content:"\f2ac"}.bi-cloud-minus-fill:before{content:"\f2ad"}.bi-cloud-minus:before{content:"\f2ae"}.bi-cloud-moon-fill:before{content:"\f2af"}.bi-cloud-moon:before{content:"\f2b0"}.bi-cloud-plus-fill:before{content:"\f2b1"}.bi-cloud-plus:before{content:"\f2b2"}.bi-cloud-rain-fill:before{content:"\f2b3"}.bi-cloud-rain-heavy-fill:before{content:"\f2b4"}.bi-cloud-rain-heavy:before{content:"\f2b5"}.bi-cloud-rain:before{content:"\f2b6"}.bi-cloud-slash-fill:before{content:"\f2b7"}.bi-cloud-slash:before{content:"\f2b8"}.bi-cloud-sleet-fill:before{content:"\f2b9"}.bi-cloud-sleet:before{content:"\f2ba"}.bi-cloud-snow-fill:before{content:"\f2bb"}.bi-cloud-snow:before{content:"\f2bc"}.bi-cloud-sun-fill:before{content:"\f2bd"}.bi-cloud-sun:before{content:"\f2be"}.bi-cloud-upload-fill:before{content:"\f2bf"}.bi-cloud-upload:before{content:"\f2c0"}.bi-cloud:before{content:"\f2c1"}.bi-clouds-fill:before{content:"\f2c2"}.bi-clouds:before{content:"\f2c3"}.bi-cloudy-fill:before{content:"\f2c4"}.bi-cloudy:before{content:"\f2c5"}.bi-code-slash:before{content:"\f2c6"}.bi-code-square:before{content:"\f2c7"}.bi-code:before{content:"\f2c8"}.bi-collection-fill:before{content:"\f2c9"}.bi-collection-play-fill:before{content:"\f2ca"}.bi-collection-play:before{content:"\f2cb"}.bi-collection:before{content:"\f2cc"}.bi-columns-gap:before{content:"\f2cd"}.bi-columns:before{content:"\f2ce"}.bi-command:before{content:"\f2cf"}.bi-compass-fill:before{content:"\f2d0"}.bi-compass:before{content:"\f2d1"}.bi-cone-striped:before{content:"\f2d2"}.bi-cone:before{content:"\f2d3"}.bi-controller:before{content:"\f2d4"}.bi-cpu-fill:before{content:"\f2d5"}.bi-cpu:before{content:"\f2d6"}.bi-credit-card-2-back-fill:before{content:"\f2d7"}.bi-credit-card-2-back:before{content:"\f2d8"}.bi-credit-card-2-front-fill:before{content:"\f2d9"}.bi-credit-card-2-front:before{content:"\f2da"}.bi-credit-card-fill:before{content:"\f2db"}.bi-credit-card:before{content:"\f2dc"}.bi-crop:before{content:"\f2dd"}.bi-cup-fill:before{content:"\f2de"}.bi-cup-straw:before{content:"\f2df"}.bi-cup:before{content:"\f2e0"}.bi-cursor-fill:before{content:"\f2e1"}.bi-cursor-text:before{content:"\f2e2"}.bi-cursor:before{content:"\f2e3"}.bi-dash-circle-dotted:before{content:"\f2e4"}.bi-dash-circle-fill:before{content:"\f2e5"}.bi-dash-circle:before{content:"\f2e6"}.bi-dash-square-dotted:before{content:"\f2e7"}.bi-dash-square-fill:before{content:"\f2e8"}.bi-dash-square:before{content:"\f2e9"}.bi-dash:before{content:"\f2ea"}.bi-diagram-2-fill:before{content:"\f2eb"}.bi-diagram-2:before{content:"\f2ec"}.bi-diagram-3-fill:before{content:"\f2ed"}.bi-diagram-3:before{content:"\f2ee"}.bi-diamond-fill:before{content:"\f2ef"}.bi-diamond-half:before{content:"\f2f0"}.bi-diamond:before{content:"\f2f1"}.bi-dice-1-fill:before{content:"\f2f2"}.bi-dice-1:before{content:"\f2f3"}.bi-dice-2-fill:before{content:"\f2f4"}.bi-dice-2:before{content:"\f2f5"}.bi-dice-3-fill:before{content:"\f2f6"}.bi-dice-3:before{content:"\f2f7"}.bi-dice-4-fill:before{content:"\f2f8"}.bi-dice-4:before{content:"\f2f9"}.bi-dice-5-fill:before{content:"\f2fa"}.bi-dice-5:before{content:"\f2fb"}.bi-dice-6-fill:before{content:"\f2fc"}.bi-dice-6:before{content:"\f2fd"}.bi-disc-fill:before{content:"\f2fe"}.bi-disc:before{content:"\f2ff"}.bi-discord:before{content:"\f300"}.bi-display-fill:before{content:"\f301"}.bi-display:before{content:"\f302"}.bi-distribute-horizontal:before{content:"\f303"}.bi-distribute-vertical:before{content:"\f304"}.bi-door-closed-fill:before{content:"\f305"}.bi-door-closed:before{content:"\f306"}.bi-door-open-fill:before{content:"\f307"}.bi-door-open:before{content:"\f308"}.bi-dot:before{content:"\f309"}.bi-download:before{content:"\f30a"}.bi-droplet-fill:before{content:"\f30b"}.bi-droplet-half:before{content:"\f30c"}.bi-droplet:before{content:"\f30d"}.bi-earbuds:before{content:"\f30e"}.bi-easel-fill:before{content:"\f30f"}.bi-easel:before{content:"\f310"}.bi-egg-fill:before{content:"\f311"}.bi-egg-fried:before{content:"\f312"}.bi-egg:before{content:"\f313"}.bi-eject-fill:before{content:"\f314"}.bi-eject:before{content:"\f315"}.bi-emoji-angry-fill:before{content:"\f316"}.bi-emoji-angry:before{content:"\f317"}.bi-emoji-dizzy-fill:before{content:"\f318"}.bi-emoji-dizzy:before{content:"\f319"}.bi-emoji-expressionless-fill:before{content:"\f31a"}.bi-emoji-expressionless:before{content:"\f31b"}.bi-emoji-frown-fill:before{content:"\f31c"}.bi-emoji-frown:before{content:"\f31d"}.bi-emoji-heart-eyes-fill:before{content:"\f31e"}.bi-emoji-heart-eyes:before{content:"\f31f"}.bi-emoji-laughing-fill:before{content:"\f320"}.bi-emoji-laughing:before{content:"\f321"}.bi-emoji-neutral-fill:before{content:"\f322"}.bi-emoji-neutral:before{content:"\f323"}.bi-emoji-smile-fill:before{content:"\f324"}.bi-emoji-smile-upside-down-fill:before{content:"\f325"}.bi-emoji-smile-upside-down:before{content:"\f326"}.bi-emoji-smile:before{content:"\f327"}.bi-emoji-sunglasses-fill:before{content:"\f328"}.bi-emoji-sunglasses:before{content:"\f329"}.bi-emoji-wink-fill:before{content:"\f32a"}.bi-emoji-wink:before{content:"\f32b"}.bi-envelope-fill:before{content:"\f32c"}.bi-envelope-open-fill:before{content:"\f32d"}.bi-envelope-open:before{content:"\f32e"}.bi-envelope:before{content:"\f32f"}.bi-eraser-fill:before{content:"\f330"}.bi-eraser:before{content:"\f331"}.bi-exclamation-circle-fill:before{content:"\f332"}.bi-exclamation-circle:before{content:"\f333"}.bi-exclamation-diamond-fill:before{content:"\f334"}.bi-exclamation-diamond:before{content:"\f335"}.bi-exclamation-octagon-fill:before{content:"\f336"}.bi-exclamation-octagon:before{content:"\f337"}.bi-exclamation-square-fill:before{content:"\f338"}.bi-exclamation-square:before{content:"\f339"}.bi-exclamation-triangle-fill:before{content:"\f33a"}.bi-exclamation-triangle:before{content:"\f33b"}.bi-exclamation:before{content:"\f33c"}.bi-exclude:before{content:"\f33d"}.bi-eye-fill:before{content:"\f33e"}.bi-eye-slash-fill:before{content:"\f33f"}.bi-eye-slash:before{content:"\f340"}.bi-eye:before{content:"\f341"}.bi-eyedropper:before{content:"\f342"}.bi-eyeglasses:before{content:"\f343"}.bi-facebook:before{content:"\f344"}.bi-file-arrow-down-fill:before{content:"\f345"}.bi-file-arrow-down:before{content:"\f346"}.bi-file-arrow-up-fill:before{content:"\f347"}.bi-file-arrow-up:before{content:"\f348"}.bi-file-bar-graph-fill:before{content:"\f349"}.bi-file-bar-graph:before{content:"\f34a"}.bi-file-binary-fill:before{content:"\f34b"}.bi-file-binary:before{content:"\f34c"}.bi-file-break-fill:before{content:"\f34d"}.bi-file-break:before{content:"\f34e"}.bi-file-check-fill:before{content:"\f34f"}.bi-file-check:before{content:"\f350"}.bi-file-code-fill:before{content:"\f351"}.bi-file-code:before{content:"\f352"}.bi-file-diff-fill:before{content:"\f353"}.bi-file-diff:before{content:"\f354"}.bi-file-earmark-arrow-down-fill:before{content:"\f355"}.bi-file-earmark-arrow-down:before{content:"\f356"}.bi-file-earmark-arrow-up-fill:before{content:"\f357"}.bi-file-earmark-arrow-up:before{content:"\f358"}.bi-file-earmark-bar-graph-fill:before{content:"\f359"}.bi-file-earmark-bar-graph:before{content:"\f35a"}.bi-file-earmark-binary-fill:before{content:"\f35b"}.bi-file-earmark-binary:before{content:"\f35c"}.bi-file-earmark-break-fill:before{content:"\f35d"}.bi-file-earmark-break:before{content:"\f35e"}.bi-file-earmark-check-fill:before{content:"\f35f"}.bi-file-earmark-check:before{content:"\f360"}.bi-file-earmark-code-fill:before{content:"\f361"}.bi-file-earmark-code:before{content:"\f362"}.bi-file-earmark-diff-fill:before{content:"\f363"}.bi-file-earmark-diff:before{content:"\f364"}.bi-file-earmark-easel-fill:before{content:"\f365"}.bi-file-earmark-easel:before{content:"\f366"}.bi-file-earmark-excel-fill:before{content:"\f367"}.bi-file-earmark-excel:before{content:"\f368"}.bi-file-earmark-fill:before{content:"\f369"}.bi-file-earmark-font-fill:before{content:"\f36a"}.bi-file-earmark-font:before{content:"\f36b"}.bi-file-earmark-image-fill:before{content:"\f36c"}.bi-file-earmark-image:before{content:"\f36d"}.bi-file-earmark-lock-fill:before{content:"\f36e"}.bi-file-earmark-lock:before{content:"\f36f"}.bi-file-earmark-lock2-fill:before{content:"\f370"}.bi-file-earmark-lock2:before{content:"\f371"}.bi-file-earmark-medical-fill:before{content:"\f372"}.bi-file-earmark-medical:before{content:"\f373"}.bi-file-earmark-minus-fill:before{content:"\f374"}.bi-file-earmark-minus:before{content:"\f375"}.bi-file-earmark-music-fill:before{content:"\f376"}.bi-file-earmark-music:before{content:"\f377"}.bi-file-earmark-person-fill:before{content:"\f378"}.bi-file-earmark-person:before{content:"\f379"}.bi-file-earmark-play-fill:before{content:"\f37a"}.bi-file-earmark-play:before{content:"\f37b"}.bi-file-earmark-plus-fill:before{content:"\f37c"}.bi-file-earmark-plus:before{content:"\f37d"}.bi-file-earmark-post-fill:before{content:"\f37e"}.bi-file-earmark-post:before{content:"\f37f"}.bi-file-earmark-ppt-fill:before{content:"\f380"}.bi-file-earmark-ppt:before{content:"\f381"}.bi-file-earmark-richtext-fill:before{content:"\f382"}.bi-file-earmark-richtext:before{content:"\f383"}.bi-file-earmark-ruled-fill:before{content:"\f384"}.bi-file-earmark-ruled:before{content:"\f385"}.bi-file-earmark-slides-fill:before{content:"\f386"}.bi-file-earmark-slides:before{content:"\f387"}.bi-file-earmark-spreadsheet-fill:before{content:"\f388"}.bi-file-earmark-spreadsheet:before{content:"\f389"}.bi-file-earmark-text-fill:before{content:"\f38a"}.bi-file-earmark-text:before{content:"\f38b"}.bi-file-earmark-word-fill:before{content:"\f38c"}.bi-file-earmark-word:before{content:"\f38d"}.bi-file-earmark-x-fill:before{content:"\f38e"}.bi-file-earmark-x:before{content:"\f38f"}.bi-file-earmark-zip-fill:before{content:"\f390"}.bi-file-earmark-zip:before{content:"\f391"}.bi-file-earmark:before{content:"\f392"}.bi-file-easel-fill:before{content:"\f393"}.bi-file-easel:before{content:"\f394"}.bi-file-excel-fill:before{content:"\f395"}.bi-file-excel:before{content:"\f396"}.bi-file-fill:before{content:"\f397"}.bi-file-font-fill:before{content:"\f398"}.bi-file-font:before{content:"\f399"}.bi-file-image-fill:before{content:"\f39a"}.bi-file-image:before{content:"\f39b"}.bi-file-lock-fill:before{content:"\f39c"}.bi-file-lock:before{content:"\f39d"}.bi-file-lock2-fill:before{content:"\f39e"}.bi-file-lock2:before{content:"\f39f"}.bi-file-medical-fill:before{content:"\f3a0"}.bi-file-medical:before{content:"\f3a1"}.bi-file-minus-fill:before{content:"\f3a2"}.bi-file-minus:before{content:"\f3a3"}.bi-file-music-fill:before{content:"\f3a4"}.bi-file-music:before{content:"\f3a5"}.bi-file-person-fill:before{content:"\f3a6"}.bi-file-person:before{content:"\f3a7"}.bi-file-play-fill:before{content:"\f3a8"}.bi-file-play:before{content:"\f3a9"}.bi-file-plus-fill:before{content:"\f3aa"}.bi-file-plus:before{content:"\f3ab"}.bi-file-post-fill:before{content:"\f3ac"}.bi-file-post:before{content:"\f3ad"}.bi-file-ppt-fill:before{content:"\f3ae"}.bi-file-ppt:before{content:"\f3af"}.bi-file-richtext-fill:before{content:"\f3b0"}.bi-file-richtext:before{content:"\f3b1"}.bi-file-ruled-fill:before{content:"\f3b2"}.bi-file-ruled:before{content:"\f3b3"}.bi-file-slides-fill:before{content:"\f3b4"}.bi-file-slides:before{content:"\f3b5"}.bi-file-spreadsheet-fill:before{content:"\f3b6"}.bi-file-spreadsheet:before{content:"\f3b7"}.bi-file-text-fill:before{content:"\f3b8"}.bi-file-text:before{content:"\f3b9"}.bi-file-word-fill:before{content:"\f3ba"}.bi-file-word:before{content:"\f3bb"}.bi-file-x-fill:before{content:"\f3bc"}.bi-file-x:before{content:"\f3bd"}.bi-file-zip-fill:before{content:"\f3be"}.bi-file-zip:before{content:"\f3bf"}.bi-file:before{content:"\f3c0"}.bi-files-alt:before{content:"\f3c1"}.bi-files:before{content:"\f3c2"}.bi-film:before{content:"\f3c3"}.bi-filter-circle-fill:before{content:"\f3c4"}.bi-filter-circle:before{content:"\f3c5"}.bi-filter-left:before{content:"\f3c6"}.bi-filter-right:before{content:"\f3c7"}.bi-filter-square-fill:before{content:"\f3c8"}.bi-filter-square:before{content:"\f3c9"}.bi-filter:before{content:"\f3ca"}.bi-flag-fill:before{content:"\f3cb"}.bi-flag:before{content:"\f3cc"}.bi-flower1:before{content:"\f3cd"}.bi-flower2:before{content:"\f3ce"}.bi-flower3:before{content:"\f3cf"}.bi-folder-check:before{content:"\f3d0"}.bi-folder-fill:before{content:"\f3d1"}.bi-folder-minus:before{content:"\f3d2"}.bi-folder-plus:before{content:"\f3d3"}.bi-folder-symlink-fill:before{content:"\f3d4"}.bi-folder-symlink:before{content:"\f3d5"}.bi-folder-x:before{content:"\f3d6"}.bi-folder:before{content:"\f3d7"}.bi-folder2-open:before{content:"\f3d8"}.bi-folder2:before{content:"\f3d9"}.bi-fonts:before{content:"\f3da"}.bi-forward-fill:before{content:"\f3db"}.bi-forward:before{content:"\f3dc"}.bi-front:before{content:"\f3dd"}.bi-fullscreen-exit:before{content:"\f3de"}.bi-fullscreen:before{content:"\f3df"}.bi-funnel-fill:before{content:"\f3e0"}.bi-funnel:before{content:"\f3e1"}.bi-gear-fill:before{content:"\f3e2"}.bi-gear-wide-connected:before{content:"\f3e3"}.bi-gear-wide:before{content:"\f3e4"}.bi-gear:before{content:"\f3e5"}.bi-gem:before{content:"\f3e6"}.bi-geo-alt-fill:before{content:"\f3e7"}.bi-geo-alt:before{content:"\f3e8"}.bi-geo-fill:before{content:"\f3e9"}.bi-geo:before{content:"\f3ea"}.bi-gift-fill:before{content:"\f3eb"}.bi-gift:before{content:"\f3ec"}.bi-github:before{content:"\f3ed"}.bi-globe:before{content:"\f3ee"}.bi-globe2:before{content:"\f3ef"}.bi-google:before{content:"\f3f0"}.bi-graph-down:before{content:"\f3f1"}.bi-graph-up:before{content:"\f3f2"}.bi-grid-1x2-fill:before{content:"\f3f3"}.bi-grid-1x2:before{content:"\f3f4"}.bi-grid-3x2-gap-fill:before{content:"\f3f5"}.bi-grid-3x2-gap:before{content:"\f3f6"}.bi-grid-3x2:before{content:"\f3f7"}.bi-grid-3x3-gap-fill:before{content:"\f3f8"}.bi-grid-3x3-gap:before{content:"\f3f9"}.bi-grid-3x3:before{content:"\f3fa"}.bi-grid-fill:before{content:"\f3fb"}.bi-grid:before{content:"\f3fc"}.bi-grip-horizontal:before{content:"\f3fd"}.bi-grip-vertical:before{content:"\f3fe"}.bi-hammer:before{content:"\f3ff"}.bi-hand-index-fill:before{content:"\f400"}.bi-hand-index-thumb-fill:before{content:"\f401"}.bi-hand-index-thumb:before{content:"\f402"}.bi-hand-index:before{content:"\f403"}.bi-hand-thumbs-down-fill:before{content:"\f404"}.bi-hand-thumbs-down:before{content:"\f405"}.bi-hand-thumbs-up-fill:before{content:"\f406"}.bi-hand-thumbs-up:before{content:"\f407"}.bi-handbag-fill:before{content:"\f408"}.bi-handbag:before{content:"\f409"}.bi-hash:before{content:"\f40a"}.bi-hdd-fill:before{content:"\f40b"}.bi-hdd-network-fill:before{content:"\f40c"}.bi-hdd-network:before{content:"\f40d"}.bi-hdd-rack-fill:before{content:"\f40e"}.bi-hdd-rack:before{content:"\f40f"}.bi-hdd-stack-fill:before{content:"\f410"}.bi-hdd-stack:before{content:"\f411"}.bi-hdd:before{content:"\f412"}.bi-headphones:before{content:"\f413"}.bi-headset:before{content:"\f414"}.bi-heart-fill:before{content:"\f415"}.bi-heart-half:before{content:"\f416"}.bi-heart:before{content:"\f417"}.bi-heptagon-fill:before{content:"\f418"}.bi-heptagon-half:before{content:"\f419"}.bi-heptagon:before{content:"\f41a"}.bi-hexagon-fill:before{content:"\f41b"}.bi-hexagon-half:before{content:"\f41c"}.bi-hexagon:before{content:"\f41d"}.bi-hourglass-bottom:before{content:"\f41e"}.bi-hourglass-split:before{content:"\f41f"}.bi-hourglass-top:before{content:"\f420"}.bi-hourglass:before{content:"\f421"}.bi-house-door-fill:before{content:"\f422"}.bi-house-door:before{content:"\f423"}.bi-house-fill:before{content:"\f424"}.bi-house:before{content:"\f425"}.bi-hr:before{content:"\f426"}.bi-hurricane:before{content:"\f427"}.bi-image-alt:before{content:"\f428"}.bi-image-fill:before{content:"\f429"}.bi-image:before{content:"\f42a"}.bi-images:before{content:"\f42b"}.bi-inbox-fill:before{content:"\f42c"}.bi-inbox:before{content:"\f42d"}.bi-inboxes-fill:before{content:"\f42e"}.bi-inboxes:before{content:"\f42f"}.bi-info-circle-fill:before{content:"\f430"}.bi-info-circle:before{content:"\f431"}.bi-info-square-fill:before{content:"\f432"}.bi-info-square:before{content:"\f433"}.bi-info:before{content:"\f434"}.bi-input-cursor-text:before{content:"\f435"}.bi-input-cursor:before{content:"\f436"}.bi-instagram:before{content:"\f437"}.bi-intersect:before{content:"\f438"}.bi-journal-album:before{content:"\f439"}.bi-journal-arrow-down:before{content:"\f43a"}.bi-journal-arrow-up:before{content:"\f43b"}.bi-journal-bookmark-fill:before{content:"\f43c"}.bi-journal-bookmark:before{content:"\f43d"}.bi-journal-check:before{content:"\f43e"}.bi-journal-code:before{content:"\f43f"}.bi-journal-medical:before{content:"\f440"}.bi-journal-minus:before{content:"\f441"}.bi-journal-plus:before{content:"\f442"}.bi-journal-richtext:before{content:"\f443"}.bi-journal-text:before{content:"\f444"}.bi-journal-x:before{content:"\f445"}.bi-journal:before{content:"\f446"}.bi-journals:before{content:"\f447"}.bi-joystick:before{content:"\f448"}.bi-justify-left:before{content:"\f449"}.bi-justify-right:before{content:"\f44a"}.bi-justify:before{content:"\f44b"}.bi-kanban-fill:before{content:"\f44c"}.bi-kanban:before{content:"\f44d"}.bi-key-fill:before{content:"\f44e"}.bi-key:before{content:"\f44f"}.bi-keyboard-fill:before{content:"\f450"}.bi-keyboard:before{content:"\f451"}.bi-ladder:before{content:"\f452"}.bi-lamp-fill:before{content:"\f453"}.bi-lamp:before{content:"\f454"}.bi-laptop-fill:before{content:"\f455"}.bi-laptop:before{content:"\f456"}.bi-layer-backward:before{content:"\f457"}.bi-layer-forward:before{content:"\f458"}.bi-layers-fill:before{content:"\f459"}.bi-layers-half:before{content:"\f45a"}.bi-layers:before{content:"\f45b"}.bi-layout-sidebar-inset-reverse:before{content:"\f45c"}.bi-layout-sidebar-inset:before{content:"\f45d"}.bi-layout-sidebar-reverse:before{content:"\f45e"}.bi-layout-sidebar:before{content:"\f45f"}.bi-layout-split:before{content:"\f460"}.bi-layout-text-sidebar-reverse:before{content:"\f461"}.bi-layout-text-sidebar:before{content:"\f462"}.bi-layout-text-window-reverse:before{content:"\f463"}.bi-layout-text-window:before{content:"\f464"}.bi-layout-three-columns:before{content:"\f465"}.bi-layout-wtf:before{content:"\f466"}.bi-life-preserver:before{content:"\f467"}.bi-lightbulb-fill:before{content:"\f468"}.bi-lightbulb-off-fill:before{content:"\f469"}.bi-lightbulb-off:before{content:"\f46a"}.bi-lightbulb:before{content:"\f46b"}.bi-lightning-charge-fill:before{content:"\f46c"}.bi-lightning-charge:before{content:"\f46d"}.bi-lightning-fill:before{content:"\f46e"}.bi-lightning:before{content:"\f46f"}.bi-link-45deg:before{content:"\f470"}.bi-link:before{content:"\f471"}.bi-linkedin:before{content:"\f472"}.bi-list-check:before{content:"\f473"}.bi-list-nested:before{content:"\f474"}.bi-list-ol:before{content:"\f475"}.bi-list-stars:before{content:"\f476"}.bi-list-task:before{content:"\f477"}.bi-list-ul:before{content:"\f478"}.bi-list:before{content:"\f479"}.bi-lock-fill:before{content:"\f47a"}.bi-lock:before{content:"\f47b"}.bi-mailbox:before{content:"\f47c"}.bi-mailbox2:before{content:"\f47d"}.bi-map-fill:before{content:"\f47e"}.bi-map:before{content:"\f47f"}.bi-markdown-fill:before{content:"\f480"}.bi-markdown:before{content:"\f481"}.bi-mask:before{content:"\f482"}.bi-megaphone-fill:before{content:"\f483"}.bi-megaphone:before{content:"\f484"}.bi-menu-app-fill:before{content:"\f485"}.bi-menu-app:before{content:"\f486"}.bi-menu-button-fill:before{content:"\f487"}.bi-menu-button-wide-fill:before{content:"\f488"}.bi-menu-button-wide:before{content:"\f489"}.bi-menu-button:before{content:"\f48a"}.bi-menu-down:before{content:"\f48b"}.bi-menu-up:before{content:"\f48c"}.bi-mic-fill:before{content:"\f48d"}.bi-mic-mute-fill:before{content:"\f48e"}.bi-mic-mute:before{content:"\f48f"}.bi-mic:before{content:"\f490"}.bi-minecart-loaded:before{content:"\f491"}.bi-minecart:before{content:"\f492"}.bi-moisture:before{content:"\f493"}.bi-moon-fill:before{content:"\f494"}.bi-moon-stars-fill:before{content:"\f495"}.bi-moon-stars:before{content:"\f496"}.bi-moon:before{content:"\f497"}.bi-mouse-fill:before{content:"\f498"}.bi-mouse:before{content:"\f499"}.bi-mouse2-fill:before{content:"\f49a"}.bi-mouse2:before{content:"\f49b"}.bi-mouse3-fill:before{content:"\f49c"}.bi-mouse3:before{content:"\f49d"}.bi-music-note-beamed:before{content:"\f49e"}.bi-music-note-list:before{content:"\f49f"}.bi-music-note:before{content:"\f4a0"}.bi-music-player-fill:before{content:"\f4a1"}.bi-music-player:before{content:"\f4a2"}.bi-newspaper:before{content:"\f4a3"}.bi-node-minus-fill:before{content:"\f4a4"}.bi-node-minus:before{content:"\f4a5"}.bi-node-plus-fill:before{content:"\f4a6"}.bi-node-plus:before{content:"\f4a7"}.bi-nut-fill:before{content:"\f4a8"}.bi-nut:before{content:"\f4a9"}.bi-octagon-fill:before{content:"\f4aa"}.bi-octagon-half:before{content:"\f4ab"}.bi-octagon:before{content:"\f4ac"}.bi-option:before{content:"\f4ad"}.bi-outlet:before{content:"\f4ae"}.bi-paint-bucket:before{content:"\f4af"}.bi-palette-fill:before{content:"\f4b0"}.bi-palette:before{content:"\f4b1"}.bi-palette2:before{content:"\f4b2"}.bi-paperclip:before{content:"\f4b3"}.bi-paragraph:before{content:"\f4b4"}.bi-patch-check-fill:before{content:"\f4b5"}.bi-patch-check:before{content:"\f4b6"}.bi-patch-exclamation-fill:before{content:"\f4b7"}.bi-patch-exclamation:before{content:"\f4b8"}.bi-patch-minus-fill:before{content:"\f4b9"}.bi-patch-minus:before{content:"\f4ba"}.bi-patch-plus-fill:before{content:"\f4bb"}.bi-patch-plus:before{content:"\f4bc"}.bi-patch-question-fill:before{content:"\f4bd"}.bi-patch-question:before{content:"\f4be"}.bi-pause-btn-fill:before{content:"\f4bf"}.bi-pause-btn:before{content:"\f4c0"}.bi-pause-circle-fill:before{content:"\f4c1"}.bi-pause-circle:before{content:"\f4c2"}.bi-pause-fill:before{content:"\f4c3"}.bi-pause:before{content:"\f4c4"}.bi-peace-fill:before{content:"\f4c5"}.bi-peace:before{content:"\f4c6"}.bi-pen-fill:before{content:"\f4c7"}.bi-pen:before{content:"\f4c8"}.bi-pencil-fill:before{content:"\f4c9"}.bi-pencil-square:before{content:"\f4ca"}.bi-pencil:before{content:"\f4cb"}.bi-pentagon-fill:before{content:"\f4cc"}.bi-pentagon-half:before{content:"\f4cd"}.bi-pentagon:before{content:"\f4ce"}.bi-people-fill:before{content:"\f4cf"}.bi-people:before{content:"\f4d0"}.bi-percent:before{content:"\f4d1"}.bi-person-badge-fill:before{content:"\f4d2"}.bi-person-badge:before{content:"\f4d3"}.bi-person-bounding-box:before{content:"\f4d4"}.bi-person-check-fill:before{content:"\f4d5"}.bi-person-check:before{content:"\f4d6"}.bi-person-circle:before{content:"\f4d7"}.bi-person-dash-fill:before{content:"\f4d8"}.bi-person-dash:before{content:"\f4d9"}.bi-person-fill:before{content:"\f4da"}.bi-person-lines-fill:before{content:"\f4db"}.bi-person-plus-fill:before{content:"\f4dc"}.bi-person-plus:before{content:"\f4dd"}.bi-person-square:before{content:"\f4de"}.bi-person-x-fill:before{content:"\f4df"}.bi-person-x:before{content:"\f4e0"}.bi-person:before{content:"\f4e1"}.bi-phone-fill:before{content:"\f4e2"}.bi-phone-landscape-fill:before{content:"\f4e3"}.bi-phone-landscape:before{content:"\f4e4"}.bi-phone-vibrate-fill:before{content:"\f4e5"}.bi-phone-vibrate:before{content:"\f4e6"}.bi-phone:before{content:"\f4e7"}.bi-pie-chart-fill:before{content:"\f4e8"}.bi-pie-chart:before{content:"\f4e9"}.bi-pin-angle-fill:before{content:"\f4ea"}.bi-pin-angle:before{content:"\f4eb"}.bi-pin-fill:before{content:"\f4ec"}.bi-pin:before{content:"\f4ed"}.bi-pip-fill:before{content:"\f4ee"}.bi-pip:before{content:"\f4ef"}.bi-play-btn-fill:before{content:"\f4f0"}.bi-play-btn:before{content:"\f4f1"}.bi-play-circle-fill:before{content:"\f4f2"}.bi-play-circle:before{content:"\f4f3"}.bi-play-fill:before{content:"\f4f4"}.bi-play:before{content:"\f4f5"}.bi-plug-fill:before{content:"\f4f6"}.bi-plug:before{content:"\f4f7"}.bi-plus-circle-dotted:before{content:"\f4f8"}.bi-plus-circle-fill:before{content:"\f4f9"}.bi-plus-circle:before{content:"\f4fa"}.bi-plus-square-dotted:before{content:"\f4fb"}.bi-plus-square-fill:before{content:"\f4fc"}.bi-plus-square:before{content:"\f4fd"}.bi-plus:before{content:"\f4fe"}.bi-power:before{content:"\f4ff"}.bi-printer-fill:before{content:"\f500"}.bi-printer:before{content:"\f501"}.bi-puzzle-fill:before{content:"\f502"}.bi-puzzle:before{content:"\f503"}.bi-question-circle-fill:before{content:"\f504"}.bi-question-circle:before{content:"\f505"}.bi-question-diamond-fill:before{content:"\f506"}.bi-question-diamond:before{content:"\f507"}.bi-question-octagon-fill:before{content:"\f508"}.bi-question-octagon:before{content:"\f509"}.bi-question-square-fill:before{content:"\f50a"}.bi-question-square:before{content:"\f50b"}.bi-question:before{content:"\f50c"}.bi-rainbow:before{content:"\f50d"}.bi-receipt-cutoff:before{content:"\f50e"}.bi-receipt:before{content:"\f50f"}.bi-reception-0:before{content:"\f510"}.bi-reception-1:before{content:"\f511"}.bi-reception-2:before{content:"\f512"}.bi-reception-3:before{content:"\f513"}.bi-reception-4:before{content:"\f514"}.bi-record-btn-fill:before{content:"\f515"}.bi-record-btn:before{content:"\f516"}.bi-record-circle-fill:before{content:"\f517"}.bi-record-circle:before{content:"\f518"}.bi-record-fill:before{content:"\f519"}.bi-record:before{content:"\f51a"}.bi-record2-fill:before{content:"\f51b"}.bi-record2:before{content:"\f51c"}.bi-reply-all-fill:before{content:"\f51d"}.bi-reply-all:before{content:"\f51e"}.bi-reply-fill:before{content:"\f51f"}.bi-reply:before{content:"\f520"}.bi-rss-fill:before{content:"\f521"}.bi-rss:before{content:"\f522"}.bi-rulers:before{content:"\f523"}.bi-save-fill:before{content:"\f524"}.bi-save:before{content:"\f525"}.bi-save2-fill:before{content:"\f526"}.bi-save2:before{content:"\f527"}.bi-scissors:before{content:"\f528"}.bi-screwdriver:before{content:"\f529"}.bi-search:before{content:"\f52a"}.bi-segmented-nav:before{content:"\f52b"}.bi-server:before{content:"\f52c"}.bi-share-fill:before{content:"\f52d"}.bi-share:before{content:"\f52e"}.bi-shield-check:before{content:"\f52f"}.bi-shield-exclamation:before{content:"\f530"}.bi-shield-fill-check:before{content:"\f531"}.bi-shield-fill-exclamation:before{content:"\f532"}.bi-shield-fill-minus:before{content:"\f533"}.bi-shield-fill-plus:before{content:"\f534"}.bi-shield-fill-x:before{content:"\f535"}.bi-shield-fill:before{content:"\f536"}.bi-shield-lock-fill:before{content:"\f537"}.bi-shield-lock:before{content:"\f538"}.bi-shield-minus:before{content:"\f539"}.bi-shield-plus:before{content:"\f53a"}.bi-shield-shaded:before{content:"\f53b"}.bi-shield-slash-fill:before{content:"\f53c"}.bi-shield-slash:before{content:"\f53d"}.bi-shield-x:before{content:"\f53e"}.bi-shield:before{content:"\f53f"}.bi-shift-fill:before{content:"\f540"}.bi-shift:before{content:"\f541"}.bi-shop-window:before{content:"\f542"}.bi-shop:before{content:"\f543"}.bi-shuffle:before{content:"\f544"}.bi-signpost-2-fill:before{content:"\f545"}.bi-signpost-2:before{content:"\f546"}.bi-signpost-fill:before{content:"\f547"}.bi-signpost-split-fill:before{content:"\f548"}.bi-signpost-split:before{content:"\f549"}.bi-signpost:before{content:"\f54a"}.bi-sim-fill:before{content:"\f54b"}.bi-sim:before{content:"\f54c"}.bi-skip-backward-btn-fill:before{content:"\f54d"}.bi-skip-backward-btn:before{content:"\f54e"}.bi-skip-backward-circle-fill:before{content:"\f54f"}.bi-skip-backward-circle:before{content:"\f550"}.bi-skip-backward-fill:before{content:"\f551"}.bi-skip-backward:before{content:"\f552"}.bi-skip-end-btn-fill:before{content:"\f553"}.bi-skip-end-btn:before{content:"\f554"}.bi-skip-end-circle-fill:before{content:"\f555"}.bi-skip-end-circle:before{content:"\f556"}.bi-skip-end-fill:before{content:"\f557"}.bi-skip-end:before{content:"\f558"}.bi-skip-forward-btn-fill:before{content:"\f559"}.bi-skip-forward-btn:before{content:"\f55a"}.bi-skip-forward-circle-fill:before{content:"\f55b"}.bi-skip-forward-circle:before{content:"\f55c"}.bi-skip-forward-fill:before{content:"\f55d"}.bi-skip-forward:before{content:"\f55e"}.bi-skip-start-btn-fill:before{content:"\f55f"}.bi-skip-start-btn:before{content:"\f560"}.bi-skip-start-circle-fill:before{content:"\f561"}.bi-skip-start-circle:before{content:"\f562"}.bi-skip-start-fill:before{content:"\f563"}.bi-skip-start:before{content:"\f564"}.bi-slack:before{content:"\f565"}.bi-slash-circle-fill:before{content:"\f566"}.bi-slash-circle:before{content:"\f567"}.bi-slash-square-fill:before{content:"\f568"}.bi-slash-square:before{content:"\f569"}.bi-slash:before{content:"\f56a"}.bi-sliders:before{content:"\f56b"}.bi-smartwatch:before{content:"\f56c"}.bi-snow:before{content:"\f56d"}.bi-snow2:before{content:"\f56e"}.bi-snow3:before{content:"\f56f"}.bi-sort-alpha-down-alt:before{content:"\f570"}.bi-sort-alpha-down:before{content:"\f571"}.bi-sort-alpha-up-alt:before{content:"\f572"}.bi-sort-alpha-up:before{content:"\f573"}.bi-sort-down-alt:before{content:"\f574"}.bi-sort-down:before{content:"\f575"}.bi-sort-numeric-down-alt:before{content:"\f576"}.bi-sort-numeric-down:before{content:"\f577"}.bi-sort-numeric-up-alt:before{content:"\f578"}.bi-sort-numeric-up:before{content:"\f579"}.bi-sort-up-alt:before{content:"\f57a"}.bi-sort-up:before{content:"\f57b"}.bi-soundwave:before{content:"\f57c"}.bi-speaker-fill:before{content:"\f57d"}.bi-speaker:before{content:"\f57e"}.bi-speedometer:before{content:"\f57f"}.bi-speedometer2:before{content:"\f580"}.bi-spellcheck:before{content:"\f581"}.bi-square-fill:before{content:"\f582"}.bi-square-half:before{content:"\f583"}.bi-square:before{content:"\f584"}.bi-stack:before{content:"\f585"}.bi-star-fill:before{content:"\f586"}.bi-star-half:before{content:"\f587"}.bi-star:before{content:"\f588"}.bi-stars:before{content:"\f589"}.bi-stickies-fill:before{content:"\f58a"}.bi-stickies:before{content:"\f58b"}.bi-sticky-fill:before{content:"\f58c"}.bi-sticky:before{content:"\f58d"}.bi-stop-btn-fill:before{content:"\f58e"}.bi-stop-btn:before{content:"\f58f"}.bi-stop-circle-fill:before{content:"\f590"}.bi-stop-circle:before{content:"\f591"}.bi-stop-fill:before{content:"\f592"}.bi-stop:before{content:"\f593"}.bi-stoplights-fill:before{content:"\f594"}.bi-stoplights:before{content:"\f595"}.bi-stopwatch-fill:before{content:"\f596"}.bi-stopwatch:before{content:"\f597"}.bi-subtract:before{content:"\f598"}.bi-suit-club-fill:before{content:"\f599"}.bi-suit-club:before{content:"\f59a"}.bi-suit-diamond-fill:before{content:"\f59b"}.bi-suit-diamond:before{content:"\f59c"}.bi-suit-heart-fill:before{content:"\f59d"}.bi-suit-heart:before{content:"\f59e"}.bi-suit-spade-fill:before{content:"\f59f"}.bi-suit-spade:before{content:"\f5a0"}.bi-sun-fill:before{content:"\f5a1"}.bi-sun:before{content:"\f5a2"}.bi-sunglasses:before{content:"\f5a3"}.bi-sunrise-fill:before{content:"\f5a4"}.bi-sunrise:before{content:"\f5a5"}.bi-sunset-fill:before{content:"\f5a6"}.bi-sunset:before{content:"\f5a7"}.bi-symmetry-horizontal:before{content:"\f5a8"}.bi-symmetry-vertical:before{content:"\f5a9"}.bi-table:before{content:"\f5aa"}.bi-tablet-fill:before{content:"\f5ab"}.bi-tablet-landscape-fill:before{content:"\f5ac"}.bi-tablet-landscape:before{content:"\f5ad"}.bi-tablet:before{content:"\f5ae"}.bi-tag-fill:before{content:"\f5af"}.bi-tag:before{content:"\f5b0"}.bi-tags-fill:before{content:"\f5b1"}.bi-tags:before{content:"\f5b2"}.bi-telegram:before{content:"\f5b3"}.bi-telephone-fill:before{content:"\f5b4"}.bi-telephone-forward-fill:before{content:"\f5b5"}.bi-telephone-forward:before{content:"\f5b6"}.bi-telephone-inbound-fill:before{content:"\f5b7"}.bi-telephone-inbound:before{content:"\f5b8"}.bi-telephone-minus-fill:before{content:"\f5b9"}.bi-telephone-minus:before{content:"\f5ba"}.bi-telephone-outbound-fill:before{content:"\f5bb"}.bi-telephone-outbound:before{content:"\f5bc"}.bi-telephone-plus-fill:before{content:"\f5bd"}.bi-telephone-plus:before{content:"\f5be"}.bi-telephone-x-fill:before{content:"\f5bf"}.bi-telephone-x:before{content:"\f5c0"}.bi-telephone:before{content:"\f5c1"}.bi-terminal-fill:before{content:"\f5c2"}.bi-terminal:before{content:"\f5c3"}.bi-text-center:before{content:"\f5c4"}.bi-text-indent-left:before{content:"\f5c5"}.bi-text-indent-right:before{content:"\f5c6"}.bi-text-left:before{content:"\f5c7"}.bi-text-paragraph:before{content:"\f5c8"}.bi-text-right:before{content:"\f5c9"}.bi-textarea-resize:before{content:"\f5ca"}.bi-textarea-t:before{content:"\f5cb"}.bi-textarea:before{content:"\f5cc"}.bi-thermometer-half:before{content:"\f5cd"}.bi-thermometer-high:before{content:"\f5ce"}.bi-thermometer-low:before{content:"\f5cf"}.bi-thermometer-snow:before{content:"\f5d0"}.bi-thermometer-sun:before{content:"\f5d1"}.bi-thermometer:before{content:"\f5d2"}.bi-three-dots-vertical:before{content:"\f5d3"}.bi-three-dots:before{content:"\f5d4"}.bi-toggle-off:before{content:"\f5d5"}.bi-toggle-on:before{content:"\f5d6"}.bi-toggle2-off:before{content:"\f5d7"}.bi-toggle2-on:before{content:"\f5d8"}.bi-toggles:before{content:"\f5d9"}.bi-toggles2:before{content:"\f5da"}.bi-tools:before{content:"\f5db"}.bi-tornado:before{content:"\f5dc"}.bi-trash-fill:before{content:"\f5dd"}.bi-trash:before{content:"\f5de"}.bi-trash2-fill:before{content:"\f5df"}.bi-trash2:before{content:"\f5e0"}.bi-tree-fill:before{content:"\f5e1"}.bi-tree:before{content:"\f5e2"}.bi-triangle-fill:before{content:"\f5e3"}.bi-triangle-half:before{content:"\f5e4"}.bi-triangle:before{content:"\f5e5"}.bi-trophy-fill:before{content:"\f5e6"}.bi-trophy:before{content:"\f5e7"}.bi-tropical-storm:before{content:"\f5e8"}.bi-truck-flatbed:before{content:"\f5e9"}.bi-truck:before{content:"\f5ea"}.bi-tsunami:before{content:"\f5eb"}.bi-tv-fill:before{content:"\f5ec"}.bi-tv:before{content:"\f5ed"}.bi-twitch:before{content:"\f5ee"}.bi-twitter:before{content:"\f5ef"}.bi-type-bold:before{content:"\f5f0"}.bi-type-h1:before{content:"\f5f1"}.bi-type-h2:before{content:"\f5f2"}.bi-type-h3:before{content:"\f5f3"}.bi-type-italic:before{content:"\f5f4"}.bi-type-strikethrough:before{content:"\f5f5"}.bi-type-underline:before{content:"\f5f6"}.bi-type:before{content:"\f5f7"}.bi-ui-checks-grid:before{content:"\f5f8"}.bi-ui-checks:before{content:"\f5f9"}.bi-ui-radios-grid:before{content:"\f5fa"}.bi-ui-radios:before{content:"\f5fb"}.bi-umbrella-fill:before{content:"\f5fc"}.bi-umbrella:before{content:"\f5fd"}.bi-union:before{content:"\f5fe"}.bi-unlock-fill:before{content:"\f5ff"}.bi-unlock:before{content:"\f600"}.bi-upc-scan:before{content:"\f601"}.bi-upc:before{content:"\f602"}.bi-upload:before{content:"\f603"}.bi-vector-pen:before{content:"\f604"}.bi-view-list:before{content:"\f605"}.bi-view-stacked:before{content:"\f606"}.bi-vinyl-fill:before{content:"\f607"}.bi-vinyl:before{content:"\f608"}.bi-voicemail:before{content:"\f609"}.bi-volume-down-fill:before{content:"\f60a"}.bi-volume-down:before{content:"\f60b"}.bi-volume-mute-fill:before{content:"\f60c"}.bi-volume-mute:before{content:"\f60d"}.bi-volume-off-fill:before{content:"\f60e"}.bi-volume-off:before{content:"\f60f"}.bi-volume-up-fill:before{content:"\f610"}.bi-volume-up:before{content:"\f611"}.bi-vr:before{content:"\f612"}.bi-wallet-fill:before{content:"\f613"}.bi-wallet:before{content:"\f614"}.bi-wallet2:before{content:"\f615"}.bi-watch:before{content:"\f616"}.bi-water:before{content:"\f617"}.bi-whatsapp:before{content:"\f618"}.bi-wifi-1:before{content:"\f619"}.bi-wifi-2:before{content:"\f61a"}.bi-wifi-off:before{content:"\f61b"}.bi-wifi:before{content:"\f61c"}.bi-wind:before{content:"\f61d"}.bi-window-dock:before{content:"\f61e"}.bi-window-sidebar:before{content:"\f61f"}.bi-window:before{content:"\f620"}.bi-wrench:before{content:"\f621"}.bi-x-circle-fill:before{content:"\f622"}.bi-x-circle:before{content:"\f623"}.bi-x-diamond-fill:before{content:"\f624"}.bi-x-diamond:before{content:"\f625"}.bi-x-octagon-fill:before{content:"\f626"}.bi-x-octagon:before{content:"\f627"}.bi-x-square-fill:before{content:"\f628"}.bi-x-square:before{content:"\f629"}.bi-x:before{content:"\f62a"}.bi-youtube:before{content:"\f62b"}.bi-zoom-in:before{content:"\f62c"}.bi-zoom-out:before{content:"\f62d"}.bi-bank:before{content:"\f62e"}.bi-bank2:before{content:"\f62f"}.bi-bell-slash-fill:before{content:"\f630"}.bi-bell-slash:before{content:"\f631"}.bi-cash-coin:before{content:"\f632"}.bi-check-lg:before{content:"\f633"}.bi-coin:before{content:"\f634"}.bi-currency-bitcoin:before{content:"\f635"}.bi-currency-dollar:before{content:"\f636"}.bi-currency-euro:before{content:"\f637"}.bi-currency-exchange:before{content:"\f638"}.bi-currency-pound:before{content:"\f639"}.bi-currency-yen:before{content:"\f63a"}.bi-dash-lg:before{content:"\f63b"}.bi-exclamation-lg:before{content:"\f63c"}.bi-file-earmark-pdf-fill:before{content:"\f63d"}.bi-file-earmark-pdf:before{content:"\f63e"}.bi-file-pdf-fill:before{content:"\f63f"}.bi-file-pdf:before{content:"\f640"}.bi-gender-ambiguous:before{content:"\f641"}.bi-gender-female:before{content:"\f642"}.bi-gender-male:before{content:"\f643"}.bi-gender-trans:before{content:"\f644"}.bi-headset-vr:before{content:"\f645"}.bi-info-lg:before{content:"\f646"}.bi-mastodon:before{content:"\f647"}.bi-messenger:before{content:"\f648"}.bi-piggy-bank-fill:before{content:"\f649"}.bi-piggy-bank:before{content:"\f64a"}.bi-pin-map-fill:before{content:"\f64b"}.bi-pin-map:before{content:"\f64c"}.bi-plus-lg:before{content:"\f64d"}.bi-question-lg:before{content:"\f64e"}.bi-recycle:before{content:"\f64f"}.bi-reddit:before{content:"\f650"}.bi-safe-fill:before{content:"\f651"}.bi-safe2-fill:before{content:"\f652"}.bi-safe2:before{content:"\f653"}.bi-sd-card-fill:before{content:"\f654"}.bi-sd-card:before{content:"\f655"}.bi-skype:before{content:"\f656"}.bi-slash-lg:before{content:"\f657"}.bi-translate:before{content:"\f658"}.bi-x-lg:before{content:"\f659"}.bi-safe:before{content:"\f65a"}.bi-apple:before{content:"\f65b"}.bi-microsoft:before{content:"\f65d"}.bi-windows:before{content:"\f65e"}.bi-behance:before{content:"\f65c"}.bi-dribbble:before{content:"\f65f"}.bi-line:before{content:"\f660"}.bi-medium:before{content:"\f661"}.bi-paypal:before{content:"\f662"}.bi-pinterest:before{content:"\f663"}.bi-signal:before{content:"\f664"}.bi-snapchat:before{content:"\f665"}.bi-spotify:before{content:"\f666"}.bi-stack-overflow:before{content:"\f667"}.bi-strava:before{content:"\f668"}.bi-wordpress:before{content:"\f669"}.bi-vimeo:before{content:"\f66a"}.bi-activity:before{content:"\f66b"}.bi-easel2-fill:before{content:"\f66c"}.bi-easel2:before{content:"\f66d"}.bi-easel3-fill:before{content:"\f66e"}.bi-easel3:before{content:"\f66f"}.bi-fan:before{content:"\f670"}.bi-fingerprint:before{content:"\f671"}.bi-graph-down-arrow:before{content:"\f672"}.bi-graph-up-arrow:before{content:"\f673"}.bi-hypnotize:before{content:"\f674"}.bi-magic:before{content:"\f675"}.bi-person-rolodex:before{content:"\f676"}.bi-person-video:before{content:"\f677"}.bi-person-video2:before{content:"\f678"}.bi-person-video3:before{content:"\f679"}.bi-person-workspace:before{content:"\f67a"}.bi-radioactive:before{content:"\f67b"}.bi-webcam-fill:before{content:"\f67c"}.bi-webcam:before{content:"\f67d"}.bi-yin-yang:before{content:"\f67e"}.bi-bandaid-fill:before{content:"\f680"}.bi-bandaid:before{content:"\f681"}.bi-bluetooth:before{content:"\f682"}.bi-body-text:before{content:"\f683"}.bi-boombox:before{content:"\f684"}.bi-boxes:before{content:"\f685"}.bi-dpad-fill:before{content:"\f686"}.bi-dpad:before{content:"\f687"}.bi-ear-fill:before{content:"\f688"}.bi-ear:before{content:"\f689"}.bi-envelope-check-fill:before{content:"\f68b"}.bi-envelope-check:before{content:"\f68c"}.bi-envelope-dash-fill:before{content:"\f68e"}.bi-envelope-dash:before{content:"\f68f"}.bi-envelope-exclamation-fill:before{content:"\f691"}.bi-envelope-exclamation:before{content:"\f692"}.bi-envelope-plus-fill:before{content:"\f693"}.bi-envelope-plus:before{content:"\f694"}.bi-envelope-slash-fill:before{content:"\f696"}.bi-envelope-slash:before{content:"\f697"}.bi-envelope-x-fill:before{content:"\f699"}.bi-envelope-x:before{content:"\f69a"}.bi-explicit-fill:before{content:"\f69b"}.bi-explicit:before{content:"\f69c"}.bi-git:before{content:"\f69d"}.bi-infinity:before{content:"\f69e"}.bi-list-columns-reverse:before{content:"\f69f"}.bi-list-columns:before{content:"\f6a0"}.bi-meta:before{content:"\f6a1"}.bi-nintendo-switch:before{content:"\f6a4"}.bi-pc-display-horizontal:before{content:"\f6a5"}.bi-pc-display:before{content:"\f6a6"}.bi-pc-horizontal:before{content:"\f6a7"}.bi-pc:before{content:"\f6a8"}.bi-playstation:before{content:"\f6a9"}.bi-plus-slash-minus:before{content:"\f6aa"}.bi-projector-fill:before{content:"\f6ab"}.bi-projector:before{content:"\f6ac"}.bi-qr-code-scan:before{content:"\f6ad"}.bi-qr-code:before{content:"\f6ae"}.bi-quora:before{content:"\f6af"}.bi-quote:before{content:"\f6b0"}.bi-robot:before{content:"\f6b1"}.bi-send-check-fill:before{content:"\f6b2"}.bi-send-check:before{content:"\f6b3"}.bi-send-dash-fill:before{content:"\f6b4"}.bi-send-dash:before{content:"\f6b5"}.bi-send-exclamation-fill:before{content:"\f6b7"}.bi-send-exclamation:before{content:"\f6b8"}.bi-send-fill:before{content:"\f6b9"}.bi-send-plus-fill:before{content:"\f6ba"}.bi-send-plus:before{content:"\f6bb"}.bi-send-slash-fill:before{content:"\f6bc"}.bi-send-slash:before{content:"\f6bd"}.bi-send-x-fill:before{content:"\f6be"}.bi-send-x:before{content:"\f6bf"}.bi-send:before{content:"\f6c0"}.bi-steam:before{content:"\f6c1"}.bi-terminal-dash:before{content:"\f6c3"}.bi-terminal-plus:before{content:"\f6c4"}.bi-terminal-split:before{content:"\f6c5"}.bi-ticket-detailed-fill:before{content:"\f6c6"}.bi-ticket-detailed:before{content:"\f6c7"}.bi-ticket-fill:before{content:"\f6c8"}.bi-ticket-perforated-fill:before{content:"\f6c9"}.bi-ticket-perforated:before{content:"\f6ca"}.bi-ticket:before{content:"\f6cb"}.bi-tiktok:before{content:"\f6cc"}.bi-window-dash:before{content:"\f6cd"}.bi-window-desktop:before{content:"\f6ce"}.bi-window-fullscreen:before{content:"\f6cf"}.bi-window-plus:before{content:"\f6d0"}.bi-window-split:before{content:"\f6d1"}.bi-window-stack:before{content:"\f6d2"}.bi-window-x:before{content:"\f6d3"}.bi-xbox:before{content:"\f6d4"}.bi-ethernet:before{content:"\f6d5"}.bi-hdmi-fill:before{content:"\f6d6"}.bi-hdmi:before{content:"\f6d7"}.bi-usb-c-fill:before{content:"\f6d8"}.bi-usb-c:before{content:"\f6d9"}.bi-usb-fill:before{content:"\f6da"}.bi-usb-plug-fill:before{content:"\f6db"}.bi-usb-plug:before{content:"\f6dc"}.bi-usb-symbol:before{content:"\f6dd"}.bi-usb:before{content:"\f6de"}.bi-boombox-fill:before{content:"\f6df"}.bi-displayport:before{content:"\f6e1"}.bi-gpu-card:before{content:"\f6e2"}.bi-memory:before{content:"\f6e3"}.bi-modem-fill:before{content:"\f6e4"}.bi-modem:before{content:"\f6e5"}.bi-motherboard-fill:before{content:"\f6e6"}.bi-motherboard:before{content:"\f6e7"}.bi-optical-audio-fill:before{content:"\f6e8"}.bi-optical-audio:before{content:"\f6e9"}.bi-pci-card:before{content:"\f6ea"}.bi-router-fill:before{content:"\f6eb"}.bi-router:before{content:"\f6ec"}.bi-thunderbolt-fill:before{content:"\f6ef"}.bi-thunderbolt:before{content:"\f6f0"}.bi-usb-drive-fill:before{content:"\f6f1"}.bi-usb-drive:before{content:"\f6f2"}.bi-usb-micro-fill:before{content:"\f6f3"}.bi-usb-micro:before{content:"\f6f4"}.bi-usb-mini-fill:before{content:"\f6f5"}.bi-usb-mini:before{content:"\f6f6"}.bi-cloud-haze2:before{content:"\f6f7"}.bi-device-hdd-fill:before{content:"\f6f8"}.bi-device-hdd:before{content:"\f6f9"}.bi-device-ssd-fill:before{content:"\f6fa"}.bi-device-ssd:before{content:"\f6fb"}.bi-displayport-fill:before{content:"\f6fc"}.bi-mortarboard-fill:before{content:"\f6fd"}.bi-mortarboard:before{content:"\f6fe"}.bi-terminal-x:before{content:"\f6ff"}.bi-arrow-through-heart-fill:before{content:"\f700"}.bi-arrow-through-heart:before{content:"\f701"}.bi-badge-sd-fill:before{content:"\f702"}.bi-badge-sd:before{content:"\f703"}.bi-bag-heart-fill:before{content:"\f704"}.bi-bag-heart:before{content:"\f705"}.bi-balloon-fill:before{content:"\f706"}.bi-balloon-heart-fill:before{content:"\f707"}.bi-balloon-heart:before{content:"\f708"}.bi-balloon:before{content:"\f709"}.bi-box2-fill:before{content:"\f70a"}.bi-box2-heart-fill:before{content:"\f70b"}.bi-box2-heart:before{content:"\f70c"}.bi-box2:before{content:"\f70d"}.bi-braces-asterisk:before{content:"\f70e"}.bi-calendar-heart-fill:before{content:"\f70f"}.bi-calendar-heart:before{content:"\f710"}.bi-calendar2-heart-fill:before{content:"\f711"}.bi-calendar2-heart:before{content:"\f712"}.bi-chat-heart-fill:before{content:"\f713"}.bi-chat-heart:before{content:"\f714"}.bi-chat-left-heart-fill:before{content:"\f715"}.bi-chat-left-heart:before{content:"\f716"}.bi-chat-right-heart-fill:before{content:"\f717"}.bi-chat-right-heart:before{content:"\f718"}.bi-chat-square-heart-fill:before{content:"\f719"}.bi-chat-square-heart:before{content:"\f71a"}.bi-clipboard-check-fill:before{content:"\f71b"}.bi-clipboard-data-fill:before{content:"\f71c"}.bi-clipboard-fill:before{content:"\f71d"}.bi-clipboard-heart-fill:before{content:"\f71e"}.bi-clipboard-heart:before{content:"\f71f"}.bi-clipboard-minus-fill:before{content:"\f720"}.bi-clipboard-plus-fill:before{content:"\f721"}.bi-clipboard-pulse:before{content:"\f722"}.bi-clipboard-x-fill:before{content:"\f723"}.bi-clipboard2-check-fill:before{content:"\f724"}.bi-clipboard2-check:before{content:"\f725"}.bi-clipboard2-data-fill:before{content:"\f726"}.bi-clipboard2-data:before{content:"\f727"}.bi-clipboard2-fill:before{content:"\f728"}.bi-clipboard2-heart-fill:before{content:"\f729"}.bi-clipboard2-heart:before{content:"\f72a"}.bi-clipboard2-minus-fill:before{content:"\f72b"}.bi-clipboard2-minus:before{content:"\f72c"}.bi-clipboard2-plus-fill:before{content:"\f72d"}.bi-clipboard2-plus:before{content:"\f72e"}.bi-clipboard2-pulse-fill:before{content:"\f72f"}.bi-clipboard2-pulse:before{content:"\f730"}.bi-clipboard2-x-fill:before{content:"\f731"}.bi-clipboard2-x:before{content:"\f732"}.bi-clipboard2:before{content:"\f733"}.bi-emoji-kiss-fill:before{content:"\f734"}.bi-emoji-kiss:before{content:"\f735"}.bi-envelope-heart-fill:before{content:"\f736"}.bi-envelope-heart:before{content:"\f737"}.bi-envelope-open-heart-fill:before{content:"\f738"}.bi-envelope-open-heart:before{content:"\f739"}.bi-envelope-paper-fill:before{content:"\f73a"}.bi-envelope-paper-heart-fill:before{content:"\f73b"}.bi-envelope-paper-heart:before{content:"\f73c"}.bi-envelope-paper:before{content:"\f73d"}.bi-filetype-aac:before{content:"\f73e"}.bi-filetype-ai:before{content:"\f73f"}.bi-filetype-bmp:before{content:"\f740"}.bi-filetype-cs:before{content:"\f741"}.bi-filetype-css:before{content:"\f742"}.bi-filetype-csv:before{content:"\f743"}.bi-filetype-doc:before{content:"\f744"}.bi-filetype-docx:before{content:"\f745"}.bi-filetype-exe:before{content:"\f746"}.bi-filetype-gif:before{content:"\f747"}.bi-filetype-heic:before{content:"\f748"}.bi-filetype-html:before{content:"\f749"}.bi-filetype-java:before{content:"\f74a"}.bi-filetype-jpg:before{content:"\f74b"}.bi-filetype-js:before{content:"\f74c"}.bi-filetype-jsx:before{content:"\f74d"}.bi-filetype-key:before{content:"\f74e"}.bi-filetype-m4p:before{content:"\f74f"}.bi-filetype-md:before{content:"\f750"}.bi-filetype-mdx:before{content:"\f751"}.bi-filetype-mov:before{content:"\f752"}.bi-filetype-mp3:before{content:"\f753"}.bi-filetype-mp4:before{content:"\f754"}.bi-filetype-otf:before{content:"\f755"}.bi-filetype-pdf:before{content:"\f756"}.bi-filetype-php:before{content:"\f757"}.bi-filetype-png:before{content:"\f758"}.bi-filetype-ppt:before{content:"\f75a"}.bi-filetype-psd:before{content:"\f75b"}.bi-filetype-py:before{content:"\f75c"}.bi-filetype-raw:before{content:"\f75d"}.bi-filetype-rb:before{content:"\f75e"}.bi-filetype-sass:before{content:"\f75f"}.bi-filetype-scss:before{content:"\f760"}.bi-filetype-sh:before{content:"\f761"}.bi-filetype-svg:before{content:"\f762"}.bi-filetype-tiff:before{content:"\f763"}.bi-filetype-tsx:before{content:"\f764"}.bi-filetype-ttf:before{content:"\f765"}.bi-filetype-txt:before{content:"\f766"}.bi-filetype-wav:before{content:"\f767"}.bi-filetype-woff:before{content:"\f768"}.bi-filetype-xls:before{content:"\f76a"}.bi-filetype-xml:before{content:"\f76b"}.bi-filetype-yml:before{content:"\f76c"}.bi-heart-arrow:before{content:"\f76d"}.bi-heart-pulse-fill:before{content:"\f76e"}.bi-heart-pulse:before{content:"\f76f"}.bi-heartbreak-fill:before{content:"\f770"}.bi-heartbreak:before{content:"\f771"}.bi-hearts:before{content:"\f772"}.bi-hospital-fill:before{content:"\f773"}.bi-hospital:before{content:"\f774"}.bi-house-heart-fill:before{content:"\f775"}.bi-house-heart:before{content:"\f776"}.bi-incognito:before{content:"\f777"}.bi-magnet-fill:before{content:"\f778"}.bi-magnet:before{content:"\f779"}.bi-person-heart:before{content:"\f77a"}.bi-person-hearts:before{content:"\f77b"}.bi-phone-flip:before{content:"\f77c"}.bi-plugin:before{content:"\f77d"}.bi-postage-fill:before{content:"\f77e"}.bi-postage-heart-fill:before{content:"\f77f"}.bi-postage-heart:before{content:"\f780"}.bi-postage:before{content:"\f781"}.bi-postcard-fill:before{content:"\f782"}.bi-postcard-heart-fill:before{content:"\f783"}.bi-postcard-heart:before{content:"\f784"}.bi-postcard:before{content:"\f785"}.bi-search-heart-fill:before{content:"\f786"}.bi-search-heart:before{content:"\f787"}.bi-sliders2-vertical:before{content:"\f788"}.bi-sliders2:before{content:"\f789"}.bi-trash3-fill:before{content:"\f78a"}.bi-trash3:before{content:"\f78b"}.bi-valentine:before{content:"\f78c"}.bi-valentine2:before{content:"\f78d"}.bi-wrench-adjustable-circle-fill:before{content:"\f78e"}.bi-wrench-adjustable-circle:before{content:"\f78f"}.bi-wrench-adjustable:before{content:"\f790"}.bi-filetype-json:before{content:"\f791"}.bi-filetype-pptx:before{content:"\f792"}.bi-filetype-xlsx:before{content:"\f793"}.bi-1-circle-fill:before{content:"\f796"}.bi-1-circle:before{content:"\f797"}.bi-1-square-fill:before{content:"\f798"}.bi-1-square:before{content:"\f799"}.bi-2-circle-fill:before{content:"\f79c"}.bi-2-circle:before{content:"\f79d"}.bi-2-square-fill:before{content:"\f79e"}.bi-2-square:before{content:"\f79f"}.bi-3-circle-fill:before{content:"\f7a2"}.bi-3-circle:before{content:"\f7a3"}.bi-3-square-fill:before{content:"\f7a4"}.bi-3-square:before{content:"\f7a5"}.bi-4-circle-fill:before{content:"\f7a8"}.bi-4-circle:before{content:"\f7a9"}.bi-4-square-fill:before{content:"\f7aa"}.bi-4-square:before{content:"\f7ab"}.bi-5-circle-fill:before{content:"\f7ae"}.bi-5-circle:before{content:"\f7af"}.bi-5-square-fill:before{content:"\f7b0"}.bi-5-square:before{content:"\f7b1"}.bi-6-circle-fill:before{content:"\f7b4"}.bi-6-circle:before{content:"\f7b5"}.bi-6-square-fill:before{content:"\f7b6"}.bi-6-square:before{content:"\f7b7"}.bi-7-circle-fill:before{content:"\f7ba"}.bi-7-circle:before{content:"\f7bb"}.bi-7-square-fill:before{content:"\f7bc"}.bi-7-square:before{content:"\f7bd"}.bi-8-circle-fill:before{content:"\f7c0"}.bi-8-circle:before{content:"\f7c1"}.bi-8-square-fill:before{content:"\f7c2"}.bi-8-square:before{content:"\f7c3"}.bi-9-circle-fill:before{content:"\f7c6"}.bi-9-circle:before{content:"\f7c7"}.bi-9-square-fill:before{content:"\f7c8"}.bi-9-square:before{content:"\f7c9"}.bi-airplane-engines-fill:before{content:"\f7ca"}.bi-airplane-engines:before{content:"\f7cb"}.bi-airplane-fill:before{content:"\f7cc"}.bi-airplane:before{content:"\f7cd"}.bi-alexa:before{content:"\f7ce"}.bi-alipay:before{content:"\f7cf"}.bi-android:before{content:"\f7d0"}.bi-android2:before{content:"\f7d1"}.bi-box-fill:before{content:"\f7d2"}.bi-box-seam-fill:before{content:"\f7d3"}.bi-browser-chrome:before{content:"\f7d4"}.bi-browser-edge:before{content:"\f7d5"}.bi-browser-firefox:before{content:"\f7d6"}.bi-browser-safari:before{content:"\f7d7"}.bi-c-circle-fill:before{content:"\f7da"}.bi-c-circle:before{content:"\f7db"}.bi-c-square-fill:before{content:"\f7dc"}.bi-c-square:before{content:"\f7dd"}.bi-capsule-pill:before{content:"\f7de"}.bi-capsule:before{content:"\f7df"}.bi-car-front-fill:before{content:"\f7e0"}.bi-car-front:before{content:"\f7e1"}.bi-cassette-fill:before{content:"\f7e2"}.bi-cassette:before{content:"\f7e3"}.bi-cc-circle-fill:before{content:"\f7e6"}.bi-cc-circle:before{content:"\f7e7"}.bi-cc-square-fill:before{content:"\f7e8"}.bi-cc-square:before{content:"\f7e9"}.bi-cup-hot-fill:before{content:"\f7ea"}.bi-cup-hot:before{content:"\f7eb"}.bi-currency-rupee:before{content:"\f7ec"}.bi-dropbox:before{content:"\f7ed"}.bi-escape:before{content:"\f7ee"}.bi-fast-forward-btn-fill:before{content:"\f7ef"}.bi-fast-forward-btn:before{content:"\f7f0"}.bi-fast-forward-circle-fill:before{content:"\f7f1"}.bi-fast-forward-circle:before{content:"\f7f2"}.bi-fast-forward-fill:before{content:"\f7f3"}.bi-fast-forward:before{content:"\f7f4"}.bi-filetype-sql:before{content:"\f7f5"}.bi-fire:before{content:"\f7f6"}.bi-google-play:before{content:"\f7f7"}.bi-h-circle-fill:before{content:"\f7fa"}.bi-h-circle:before{content:"\f7fb"}.bi-h-square-fill:before{content:"\f7fc"}.bi-h-square:before{content:"\f7fd"}.bi-indent:before{content:"\f7fe"}.bi-lungs-fill:before{content:"\f7ff"}.bi-lungs:before{content:"\f800"}.bi-microsoft-teams:before{content:"\f801"}.bi-p-circle-fill:before{content:"\f804"}.bi-p-circle:before{content:"\f805"}.bi-p-square-fill:before{content:"\f806"}.bi-p-square:before{content:"\f807"}.bi-pass-fill:before{content:"\f808"}.bi-pass:before{content:"\f809"}.bi-prescription:before{content:"\f80a"}.bi-prescription2:before{content:"\f80b"}.bi-r-circle-fill:before{content:"\f80e"}.bi-r-circle:before{content:"\f80f"}.bi-r-square-fill:before{content:"\f810"}.bi-r-square:before{content:"\f811"}.bi-repeat-1:before{content:"\f812"}.bi-repeat:before{content:"\f813"}.bi-rewind-btn-fill:before{content:"\f814"}.bi-rewind-btn:before{content:"\f815"}.bi-rewind-circle-fill:before{content:"\f816"}.bi-rewind-circle:before{content:"\f817"}.bi-rewind-fill:before{content:"\f818"}.bi-rewind:before{content:"\f819"}.bi-train-freight-front-fill:before{content:"\f81a"}.bi-train-freight-front:before{content:"\f81b"}.bi-train-front-fill:before{content:"\f81c"}.bi-train-front:before{content:"\f81d"}.bi-train-lightrail-front-fill:before{content:"\f81e"}.bi-train-lightrail-front:before{content:"\f81f"}.bi-truck-front-fill:before{content:"\f820"}.bi-truck-front:before{content:"\f821"}.bi-ubuntu:before{content:"\f822"}.bi-unindent:before{content:"\f823"}.bi-unity:before{content:"\f824"}.bi-universal-access-circle:before{content:"\f825"}.bi-universal-access:before{content:"\f826"}.bi-virus:before{content:"\f827"}.bi-virus2:before{content:"\f828"}.bi-wechat:before{content:"\f829"}.bi-yelp:before{content:"\f82a"}.bi-sign-stop-fill:before{content:"\f82b"}.bi-sign-stop-lights-fill:before{content:"\f82c"}.bi-sign-stop-lights:before{content:"\f82d"}.bi-sign-stop:before{content:"\f82e"}.bi-sign-turn-left-fill:before{content:"\f82f"}.bi-sign-turn-left:before{content:"\f830"}.bi-sign-turn-right-fill:before{content:"\f831"}.bi-sign-turn-right:before{content:"\f832"}.bi-sign-turn-slight-left-fill:before{content:"\f833"}.bi-sign-turn-slight-left:before{content:"\f834"}.bi-sign-turn-slight-right-fill:before{content:"\f835"}.bi-sign-turn-slight-right:before{content:"\f836"}.bi-sign-yield-fill:before{content:"\f837"}.bi-sign-yield:before{content:"\f838"}.bi-ev-station-fill:before{content:"\f839"}.bi-ev-station:before{content:"\f83a"}.bi-fuel-pump-diesel-fill:before{content:"\f83b"}.bi-fuel-pump-diesel:before{content:"\f83c"}.bi-fuel-pump-fill:before{content:"\f83d"}.bi-fuel-pump:before{content:"\f83e"}.bi-0-circle-fill:before{content:"\f83f"}.bi-0-circle:before{content:"\f840"}.bi-0-square-fill:before{content:"\f841"}.bi-0-square:before{content:"\f842"}.bi-rocket-fill:before{content:"\f843"}.bi-rocket-takeoff-fill:before{content:"\f844"}.bi-rocket-takeoff:before{content:"\f845"}.bi-rocket:before{content:"\f846"}.bi-stripe:before{content:"\f847"}.bi-subscript:before{content:"\f848"}.bi-superscript:before{content:"\f849"}.bi-trello:before{content:"\f84a"}.bi-envelope-at-fill:before{content:"\f84b"}.bi-envelope-at:before{content:"\f84c"}.bi-regex:before{content:"\f84d"}.bi-text-wrap:before{content:"\f84e"}.bi-sign-dead-end-fill:before{content:"\f84f"}.bi-sign-dead-end:before{content:"\f850"}.bi-sign-do-not-enter-fill:before{content:"\f851"}.bi-sign-do-not-enter:before{content:"\f852"}.bi-sign-intersection-fill:before{content:"\f853"}.bi-sign-intersection-side-fill:before{content:"\f854"}.bi-sign-intersection-side:before{content:"\f855"}.bi-sign-intersection-t-fill:before{content:"\f856"}.bi-sign-intersection-t:before{content:"\f857"}.bi-sign-intersection-y-fill:before{content:"\f858"}.bi-sign-intersection-y:before{content:"\f859"}.bi-sign-intersection:before{content:"\f85a"}.bi-sign-merge-left-fill:before{content:"\f85b"}.bi-sign-merge-left:before{content:"\f85c"}.bi-sign-merge-right-fill:before{content:"\f85d"}.bi-sign-merge-right:before{content:"\f85e"}.bi-sign-no-left-turn-fill:before{content:"\f85f"}.bi-sign-no-left-turn:before{content:"\f860"}.bi-sign-no-parking-fill:before{content:"\f861"}.bi-sign-no-parking:before{content:"\f862"}.bi-sign-no-right-turn-fill:before{content:"\f863"}.bi-sign-no-right-turn:before{content:"\f864"}.bi-sign-railroad-fill:before{content:"\f865"}.bi-sign-railroad:before{content:"\f866"}.bi-building-add:before{content:"\f867"}.bi-building-check:before{content:"\f868"}.bi-building-dash:before{content:"\f869"}.bi-building-down:before{content:"\f86a"}.bi-building-exclamation:before{content:"\f86b"}.bi-building-fill-add:before{content:"\f86c"}.bi-building-fill-check:before{content:"\f86d"}.bi-building-fill-dash:before{content:"\f86e"}.bi-building-fill-down:before{content:"\f86f"}.bi-building-fill-exclamation:before{content:"\f870"}.bi-building-fill-gear:before{content:"\f871"}.bi-building-fill-lock:before{content:"\f872"}.bi-building-fill-slash:before{content:"\f873"}.bi-building-fill-up:before{content:"\f874"}.bi-building-fill-x:before{content:"\f875"}.bi-building-fill:before{content:"\f876"}.bi-building-gear:before{content:"\f877"}.bi-building-lock:before{content:"\f878"}.bi-building-slash:before{content:"\f879"}.bi-building-up:before{content:"\f87a"}.bi-building-x:before{content:"\f87b"}.bi-buildings-fill:before{content:"\f87c"}.bi-buildings:before{content:"\f87d"}.bi-bus-front-fill:before{content:"\f87e"}.bi-bus-front:before{content:"\f87f"}.bi-ev-front-fill:before{content:"\f880"}.bi-ev-front:before{content:"\f881"}.bi-globe-americas:before{content:"\f882"}.bi-globe-asia-australia:before{content:"\f883"}.bi-globe-central-south-asia:before{content:"\f884"}.bi-globe-europe-africa:before{content:"\f885"}.bi-house-add-fill:before{content:"\f886"}.bi-house-add:before{content:"\f887"}.bi-house-check-fill:before{content:"\f888"}.bi-house-check:before{content:"\f889"}.bi-house-dash-fill:before{content:"\f88a"}.bi-house-dash:before{content:"\f88b"}.bi-house-down-fill:before{content:"\f88c"}.bi-house-down:before{content:"\f88d"}.bi-house-exclamation-fill:before{content:"\f88e"}.bi-house-exclamation:before{content:"\f88f"}.bi-house-gear-fill:before{content:"\f890"}.bi-house-gear:before{content:"\f891"}.bi-house-lock-fill:before{content:"\f892"}.bi-house-lock:before{content:"\f893"}.bi-house-slash-fill:before{content:"\f894"}.bi-house-slash:before{content:"\f895"}.bi-house-up-fill:before{content:"\f896"}.bi-house-up:before{content:"\f897"}.bi-house-x-fill:before{content:"\f898"}.bi-house-x:before{content:"\f899"}.bi-person-add:before{content:"\f89a"}.bi-person-down:before{content:"\f89b"}.bi-person-exclamation:before{content:"\f89c"}.bi-person-fill-add:before{content:"\f89d"}.bi-person-fill-check:before{content:"\f89e"}.bi-person-fill-dash:before{content:"\f89f"}.bi-person-fill-down:before{content:"\f8a0"}.bi-person-fill-exclamation:before{content:"\f8a1"}.bi-person-fill-gear:before{content:"\f8a2"}.bi-person-fill-lock:before{content:"\f8a3"}.bi-person-fill-slash:before{content:"\f8a4"}.bi-person-fill-up:before{content:"\f8a5"}.bi-person-fill-x:before{content:"\f8a6"}.bi-person-gear:before{content:"\f8a7"}.bi-person-lock:before{content:"\f8a8"}.bi-person-slash:before{content:"\f8a9"}.bi-person-up:before{content:"\f8aa"}.bi-scooter:before{content:"\f8ab"}.bi-taxi-front-fill:before{content:"\f8ac"}.bi-taxi-front:before{content:"\f8ad"}.bi-amd:before{content:"\f8ae"}.bi-database-add:before{content:"\f8af"}.bi-database-check:before{content:"\f8b0"}.bi-database-dash:before{content:"\f8b1"}.bi-database-down:before{content:"\f8b2"}.bi-database-exclamation:before{content:"\f8b3"}.bi-database-fill-add:before{content:"\f8b4"}.bi-database-fill-check:before{content:"\f8b5"}.bi-database-fill-dash:before{content:"\f8b6"}.bi-database-fill-down:before{content:"\f8b7"}.bi-database-fill-exclamation:before{content:"\f8b8"}.bi-database-fill-gear:before{content:"\f8b9"}.bi-database-fill-lock:before{content:"\f8ba"}.bi-database-fill-slash:before{content:"\f8bb"}.bi-database-fill-up:before{content:"\f8bc"}.bi-database-fill-x:before{content:"\f8bd"}.bi-database-fill:before{content:"\f8be"}.bi-database-gear:before{content:"\f8bf"}.bi-database-lock:before{content:"\f8c0"}.bi-database-slash:before{content:"\f8c1"}.bi-database-up:before{content:"\f8c2"}.bi-database-x:before{content:"\f8c3"}.bi-database:before{content:"\f8c4"}.bi-houses-fill:before{content:"\f8c5"}.bi-houses:before{content:"\f8c6"}.bi-nvidia:before{content:"\f8c7"}.bi-person-vcard-fill:before{content:"\f8c8"}.bi-person-vcard:before{content:"\f8c9"}.bi-sina-weibo:before{content:"\f8ca"}.bi-tencent-qq:before{content:"\f8cb"}.bi-wikipedia:before{content:"\f8cc"}:root,[data-bs-theme=light]{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-primary: #0d6efd;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-primary-rgb: 13, 110, 253;--bs-secondary-rgb: 108, 117, 125;--bs-success-rgb: 25, 135, 84;--bs-info-rgb: 13, 202, 240;--bs-warning-rgb: 255, 193, 7;--bs-danger-rgb: 220, 53, 69;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 33, 37, 41;--bs-primary-text-emphasis: #052c65;--bs-secondary-text-emphasis: #2b2f32;--bs-success-text-emphasis: #0a3622;--bs-info-text-emphasis: #055160;--bs-warning-text-emphasis: #664d03;--bs-danger-text-emphasis: #58151c;--bs-light-text-emphasis: #495057;--bs-dark-text-emphasis: #495057;--bs-primary-bg-subtle: #cfe2ff;--bs-secondary-bg-subtle: #e2e3e5;--bs-success-bg-subtle: #d1e7dd;--bs-info-bg-subtle: #cff4fc;--bs-warning-bg-subtle: #fff3cd;--bs-danger-bg-subtle: #f8d7da;--bs-light-bg-subtle: #fcfcfd;--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: #9ec5fe;--bs-secondary-border-subtle: #c4c8cb;--bs-success-border-subtle: #a3cfbb;--bs-info-border-subtle: #9eeaf9;--bs-warning-border-subtle: #ffe69c;--bs-danger-border-subtle: #f1aeb5;--bs-light-border-subtle: #e9ecef;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size: 1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-body-color-rgb: 33, 37, 41;--bs-body-bg: #fff;--bs-body-bg-rgb: 255, 255, 255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(33, 37, 41, .75);--bs-secondary-color-rgb: 33, 37, 41;--bs-secondary-bg: #e9ecef;--bs-secondary-bg-rgb: 233, 236, 239;--bs-tertiary-color: rgba(33, 37, 41, .5);--bs-tertiary-color-rgb: 33, 37, 41;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-link-color: #0d6efd;--bs-link-color-rgb: 13, 110, 253;--bs-link-decoration: underline;--bs-link-hover-color: #0a58ca;--bs-link-hover-color-rgb: 10, 88, 202;--bs-code-color: #d63384;--bs-highlight-bg: #fff3cd;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, .175);--bs-border-radius: .375rem;--bs-border-radius-sm: .25rem;--bs-border-radius-lg: .5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);--bs-box-shadow-sm: 0 .125rem .25rem rgba(0, 0, 0, .075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, .175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, .075);--bs-focus-ring-width: .25rem;--bs-focus-ring-opacity: .25;--bs-focus-ring-color: rgba(13, 110, 253, .25);--bs-form-valid-color: #198754;--bs-form-valid-border-color: #198754;--bs-form-invalid-color: #dc3545;--bs-form-invalid-border-color: #dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #adb5bd;--bs-body-color-rgb: 173, 181, 189;--bs-body-bg: #212529;--bs-body-bg-rgb: 33, 37, 41;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(173, 181, 189, .75);--bs-secondary-color-rgb: 173, 181, 189;--bs-secondary-bg: #343a40;--bs-secondary-bg-rgb: 52, 58, 64;--bs-tertiary-color: rgba(173, 181, 189, .5);--bs-tertiary-color-rgb: 173, 181, 189;--bs-tertiary-bg: #2b3035;--bs-tertiary-bg-rgb: 43, 48, 53;--bs-primary-text-emphasis: #6ea8fe;--bs-secondary-text-emphasis: #a7acb1;--bs-success-text-emphasis: #75b798;--bs-info-text-emphasis: #6edff6;--bs-warning-text-emphasis: #ffda6a;--bs-danger-text-emphasis: #ea868f;--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: #031633;--bs-secondary-bg-subtle: #161719;--bs-success-bg-subtle: #051b11;--bs-info-bg-subtle: #032830;--bs-warning-bg-subtle: #332701;--bs-danger-bg-subtle: #2c0b0e;--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: #084298;--bs-secondary-border-subtle: #41464b;--bs-success-border-subtle: #0f5132;--bs-info-border-subtle: #087990;--bs-warning-border-subtle: #997404;--bs-danger-border-subtle: #842029;--bs-light-border-subtle: #495057;--bs-dark-border-subtle: #343a40;--bs-link-color: #6ea8fe;--bs-link-hover-color: #8bb9fe;--bs-link-color-rgb: 110, 168, 254;--bs-link-hover-color-rgb: 139, 185, 254;--bs-code-color: #e685b5;--bs-border-color: #495057;--bs-border-color-translucent: rgba(255, 255, 255, .15);--bs-form-valid-color: #75b798;--bs-form-valid-border-color: #75b798;--bs-form-invalid-color: #ea868f;--bs-form-invalid-border-color: #ea868f}*,*:before,*:after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color, inherit)}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media (min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media (min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media (min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-xxl{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1768px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: .25rem}.g-1,.gy-1{--bs-gutter-y: .25rem}.g-2,.gx-2{--bs-gutter-x: .5rem}.g-2,.gy-2{--bs-gutter-y: .5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: .25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: .5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: .25rem}.g-md-1,.gy-md-1{--bs-gutter-y: .25rem}.g-md-2,.gx-md-2{--bs-gutter-x: .5rem}.g-md-2,.gy-md-2{--bs-gutter-y: .5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: .25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: .5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: .25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: .5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: .25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table{--bs-table-color: var(--bs-body-color);--bs-table-bg: transparent;--bs-table-border-color: var(--bs-border-color);--bs-table-accent-bg: transparent;--bs-table-striped-color: var(--bs-body-color);--bs-table-striped-bg: rgba(0, 0, 0, .05);--bs-table-active-color: var(--bs-body-color);--bs-table-active-bg: rgba(0, 0, 0, .1);--bs-table-hover-color: var(--bs-body-color);--bs-table-hover-bg: rgba(0, 0, 0, .075);width:100%;margin-bottom:1rem;color:var(--bs-table-color);vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-color: #000;--bs-table-bg: #cfe2ff;--bs-table-border-color: #bacbe6;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: #e2e3e5;--bs-table-border-color: #cbccce;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: #d1e7dd;--bs-table-border-color: #bcd0c7;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: #cff4fc;--bs-table-border-color: #badce3;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: #fff3cd;--bs-table-border-color: #e6dbb9;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: #f8d7da;--bs-table-border-color: #dfc2c4;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #f8f9fa;--bs-table-border-color: #dfe0e1;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #212529;--bs-table-border-color: #373b3e;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);appearance:none;border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23adb5bd' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg: var(--bs-body-bg);width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);appearance:none;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:focus~label:after,.form-floating>.form-control:not(:placeholder-shown)~label:after,.form-floating>.form-control-plaintext~label:after,.form-floating>.form-select~label:after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>:disabled~label{color:#6c757d}.form-floating>:disabled~label:after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3.75rem + 1.5em)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:var(--bs-form-valid-color)}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3.75rem + 1.5em)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:var(--bs-form-invalid-color)}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: .75rem;--bs-btn-padding-y: .375rem;--bs-btn-font-family: ;--bs-btn-font-size: 1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: var(--bs-body-color);--bs-btn-bg: transparent;--bs-btn-border-width: var(--bs-border-width);--bs-btn-border-color: transparent;--bs-btn-border-radius: var(--bs-border-radius);--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);--bs-btn-disabled-opacity: .65;--bs-btn-focus-box-shadow: 0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #0d6efd;--bs-btn-border-color: #0d6efd;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #0b5ed7;--bs-btn-hover-border-color: #0a58ca;--bs-btn-focus-shadow-rgb: 49, 132, 253;--bs-btn-active-color: #fff;--bs-btn-active-bg: #0a58ca;--bs-btn-active-border-color: #0a53be;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #0d6efd;--bs-btn-disabled-border-color: #0d6efd}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5c636a;--bs-btn-hover-border-color: #565e64;--bs-btn-focus-shadow-rgb: 130, 138, 145;--bs-btn-active-color: #fff;--bs-btn-active-bg: #565e64;--bs-btn-active-border-color: #51585e;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #157347;--bs-btn-hover-border-color: #146c43;--bs-btn-focus-shadow-rgb: 60, 153, 110;--bs-btn-active-color: #fff;--bs-btn-active-bg: #146c43;--bs-btn-active-border-color: #13653f;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #198754;--bs-btn-disabled-border-color: #198754}.btn-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #31d2f2;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-warning{--bs-btn-color: #000;--bs-btn-bg: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffca2c;--bs-btn-hover-border-color: #ffc720;--bs-btn-focus-shadow-rgb: 217, 164, 6;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd39;--bs-btn-active-border-color: #ffc720;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffc107;--bs-btn-disabled-border-color: #ffc107}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #bb2d3b;--bs-btn-hover-border-color: #b02a37;--bs-btn-focus-shadow-rgb: 225, 83, 97;--bs-btn-active-color: #fff;--bs-btn-active-bg: #b02a37;--bs-btn-active-border-color: #a52834;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #dc3545;--bs-btn-disabled-border-color: #dc3545}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #d3d4d5;--bs-btn-hover-border-color: #c6c7c8;--bs-btn-focus-shadow-rgb: 211, 212, 213;--bs-btn-active-color: #000;--bs-btn-active-bg: #c6c7c8;--bs-btn-active-border-color: #babbbc;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f8f9fa;--bs-btn-disabled-border-color: #f8f9fa}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #424649;--bs-btn-hover-border-color: #373b3e;--bs-btn-focus-shadow-rgb: 66, 70, 73;--bs-btn-active-color: #fff;--bs-btn-active-bg: #4d5154;--bs-btn-active-border-color: #373b3e;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #212529;--bs-btn-disabled-border-color: #212529}.btn-outline-primary{--bs-btn-color: #0d6efd;--bs-btn-border-color: #0d6efd;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #0d6efd;--bs-btn-hover-border-color: #0d6efd;--bs-btn-focus-shadow-rgb: 13, 110, 253;--bs-btn-active-color: #fff;--bs-btn-active-bg: #0d6efd;--bs-btn-active-border-color: #0d6efd;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #0d6efd;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0d6efd;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c757d;--bs-btn-hover-border-color: #6c757d;--bs-btn-focus-shadow-rgb: 108, 117, 125;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c757d;--bs-btn-active-border-color: #6c757d;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c757d;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #198754;--bs-btn-hover-border-color: #198754;--bs-btn-focus-shadow-rgb: 25, 135, 84;--bs-btn-active-color: #fff;--bs-btn-active-bg: #198754;--bs-btn-active-border-color: #198754;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #198754;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #198754;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffc107;--bs-btn-hover-border-color: #ffc107;--bs-btn-focus-shadow-rgb: 255, 193, 7;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffc107;--bs-btn-active-border-color: #ffc107;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #ffc107;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffc107;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #dc3545;--bs-btn-hover-border-color: #dc3545;--bs-btn-focus-shadow-rgb: 220, 53, 69;--bs-btn-active-color: #fff;--bs-btn-active-bg: #dc3545;--bs-btn-active-border-color: #dc3545;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #dc3545;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #dc3545;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f8f9fa;--bs-btn-hover-border-color: #f8f9fa;--bs-btn-focus-shadow-rgb: 248, 249, 250;--bs-btn-active-color: #000;--bs-btn-active-bg: #f8f9fa;--bs-btn-active-border-color: #f8f9fa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #f8f9fa;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f8f9fa;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #212529;--bs-btn-hover-border-color: #212529;--bs-btn-focus-shadow-rgb: 33, 37, 41;--bs-btn-active-color: #fff;--bs-btn-active-bg: #212529;--bs-btn-active-border-color: #212529;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color: #212529;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #212529;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: var(--bs-link-color);--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: var(--bs-link-hover-color);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: var(--bs-link-hover-color);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 49, 132, 253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 1.25rem;--bs-btn-border-radius: var(--bs-border-radius-lg)}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .875rem;--bs-btn-border-radius: var(--bs-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: .5rem;--bs-dropdown-spacer: .125rem;--bs-dropdown-font-size: 1rem;--bs-dropdown-color: var(--bs-body-color);--bs-dropdown-bg: var(--bs-body-bg);--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-border-radius: var(--bs-border-radius);--bs-dropdown-border-width: var(--bs-border-width);--bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y: .5rem;--bs-dropdown-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);--bs-dropdown-link-color: var(--bs-body-color);--bs-dropdown-link-hover-color: var(--bs-body-color);--bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #0d6efd;--bs-dropdown-link-disabled-color: var(--bs-tertiary-color);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: .25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: .5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, .15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #0d6efd;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: var(--bs-border-color);--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color: var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg: var(--bs-body-bg);--bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: var(--bs-border-radius);--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: .125rem;--bs-nav-underline-link-active-color: var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: .5rem;--bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), .65);--bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), .8);--bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), .3);--bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y: .3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x: .5rem;--bs-navbar-toggler-padding-y: .25rem;--bs-navbar-toggler-padding-x: .75rem;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), .15);--bs-navbar-toggler-border-radius: var(--bs-border-radius);--bs-navbar-toggler-focus-width: .25rem;--bs-navbar-toggler-transition: box-shadow .15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark{--bs-navbar-color: rgba(255, 255, 255, .55);--bs-navbar-hover-color: rgba(255, 255, 255, .75);--bs-navbar-disabled-color: rgba(255, 255, 255, .25);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #fff;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(255, 255, 255, .1);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: .5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: var(--bs-border-width);--bs-card-border-color: var(--bs-border-color-translucent);--bs-card-border-radius: var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y: .5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(var(--bs-body-color-rgb), .03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: var(--bs-body-bg);--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: .75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;inset:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: var(--bs-body-color);--bs-accordion-bg: var(--bs-body-bg);--bs-accordion-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, border-radius .15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: var(--bs-border-width);--bs-accordion-border-radius: var(--bs-border-radius);--bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: var(--bs-body-color);--bs-accordion-btn-bg: var(--bs-accordion-bg);--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform .2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: #86b7fe;--bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: var(--bs-primary-text-emphasis);--bs-accordion-active-bg: var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button:after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion: reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button:after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: var(--bs-secondary-color);--bs-breadcrumb-item-padding-x: .5rem;--bs-breadcrumb-item-active-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: .75rem;--bs-pagination-padding-y: .375rem;--bs-pagination-font-size: 1rem;--bs-pagination-color: var(--bs-link-color);--bs-pagination-bg: var(--bs-body-bg);--bs-pagination-border-width: var(--bs-border-width);--bs-pagination-border-color: var(--bs-border-color);--bs-pagination-border-radius: var(--bs-border-radius);--bs-pagination-hover-color: var(--bs-link-hover-color);--bs-pagination-hover-bg: var(--bs-tertiary-bg);--bs-pagination-hover-border-color: var(--bs-border-color);--bs-pagination-focus-color: var(--bs-link-hover-color);--bs-pagination-focus-bg: var(--bs-secondary-bg);--bs-pagination-focus-box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: #0d6efd;--bs-pagination-active-border-color: #0d6efd;--bs-pagination-disabled-color: var(--bs-secondary-color);--bs-pagination-disabled-bg: var(--bs-secondary-bg);--bs-pagination-disabled-border-color: var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: .75rem;--bs-pagination-font-size: 1.25rem;--bs-pagination-border-radius: var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x: .5rem;--bs-pagination-padding-y: .25rem;--bs-pagination-font-size: .875rem;--bs-pagination-border-radius: var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x: .65em;--bs-badge-padding-y: .35em;--bs-badge-font-size: .75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius: var(--bs-border-radius);--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size: .75rem;--bs-progress-bg: var(--bs-secondary-bg);--bs-progress-border-radius: var(--bs-border-radius);--bs-progress-box-shadow: var(--bs-box-shadow-inset);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #0d6efd;--bs-progress-bar-transition: width .6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: var(--bs-body-color);--bs-list-group-bg: var(--bs-body-bg);--bs-list-group-border-color: var(--bs-border-color);--bs-list-group-border-width: var(--bs-border-width);--bs-list-group-border-radius: var(--bs-border-radius);--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: .5rem;--bs-list-group-action-color: var(--bs-secondary-color);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-tertiary-bg);--bs-list-group-action-active-color: var(--bs-body-color);--bs-list-group-action-active-bg: var(--bs-secondary-bg);--bs-list-group-disabled-color: var(--bs-secondary-color);--bs-list-group-disabled-bg: var(--bs-body-bg);--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #0d6efd;--bs-list-group-active-border-color: #0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #000;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: .5;--bs-btn-close-hover-opacity: .75;--bs-btn-close-focus-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: .25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white,[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: .75rem;--bs-toast-padding-y: .5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size: .875rem;--bs-toast-color: ;--bs-toast-bg: rgba(var(--bs-body-bg-rgb), .85);--bs-toast-border-width: var(--bs-border-width);--bs-toast-border-color: var(--bs-border-color-translucent);--bs-toast-border-radius: var(--bs-border-radius);--bs-toast-box-shadow: var(--bs-box-shadow);--bs-toast-header-color: var(--bs-secondary-color);--bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), .85);--bs-toast-header-border-color: var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: .5rem;--bs-modal-color: ;--bs-modal-bg: var(--bs-body-bg);--bs-modal-border-color: var(--bs-border-color-translucent);--bs-modal-border-width: var(--bs-border-width);--bs-modal-border-radius: var(--bs-border-radius-lg);--bs-modal-box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .075);--bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: var(--bs-border-color);--bs-modal-header-border-width: var(--bs-border-width);--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: .5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: var(--bs-border-color);--bs-modal-footer-border-width: var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: .5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media (min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media (min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: .5rem;--bs-tooltip-padding-y: .25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size: .875rem;--bs-tooltip-color: var(--bs-body-bg);--bs-tooltip-bg: var(--bs-emphasis-color);--bs-tooltip-border-radius: var(--bs-border-radius);--bs-tooltip-opacity: .9;--bs-tooltip-arrow-width: .8rem;--bs-tooltip-arrow-height: .4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size: .875rem;--bs-popover-bg: var(--bs-body-bg);--bs-popover-border-width: var(--bs-border-width);--bs-popover-border-color: var(--bs-border-color-translucent);--bs-popover-border-radius: var(--bs-border-radius-lg);--bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: .5rem;--bs-popover-header-font-size: 1rem;--bs-popover-header-color: ;--bs-popover-header-bg: var(--bs-secondary-bg);--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: var(--bs-body-color);--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: .5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow:before,.popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header:before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translate(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-border-width: .25em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: .2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -.125em;--bs-spinner-animation-speed: .75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: var(--bs-body-color);--bs-offcanvas-bg: var(--bs-body-bg);--bs-offcanvas-border-width: var(--bs-border-width);--bs-offcanvas-border-color: var(--bs-border-color-translucent);--bs-offcanvas-box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .075);--bs-offcanvas-transition: transform .3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media (max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 575.98px) and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 575.98px){.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 575.98px){.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}}@media (max-width: 575.98px){.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media (min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 767.98px) and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 767.98px){.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 767.98px){.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}}@media (max-width: 767.98px){.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media (min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 991.98px) and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 991.98px){.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 991.98px){.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}}@media (max-width: 991.98px){.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media (min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 1199.98px){.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 1199.98px){.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}}@media (max-width: 1199.98px){.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media (min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width: 1399.98px){.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width: 1399.98px){.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}}@media (max-width: 1399.98px){.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media (min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn:before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.8) 75%,#000 95%);mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{to{mask-position:-200% 0%}}.clearfix:after{display:block;clear:both;content:""}.text-bg-primary{color:#fff;background-color:RGBA(13,110,253,var(--bs-bg-opacity, 1))}.text-bg-secondary{color:#fff;background-color:RGBA(108,117,125,var(--bs-bg-opacity, 1))}.text-bg-success{color:#fff;background-color:RGBA(25,135,84,var(--bs-bg-opacity, 1))}.text-bg-info{color:#000;background-color:RGBA(13,202,240,var(--bs-bg-opacity, 1))}.text-bg-warning{color:#000;background-color:RGBA(255,193,7,var(--bs-bg-opacity, 1))}.text-bg-danger{color:#fff;background-color:RGBA(220,53,69,var(--bs-bg-opacity, 1))}.text-bg-light{color:#000;background-color:RGBA(248,249,250,var(--bs-bg-opacity, 1))}.text-bg-dark{color:#fff;background-color:RGBA(33,37,41,var(--bs-bg-opacity, 1))}.link-primary{color:RGBA(var(--bs-primary-rgb, var(--bs-link-opacity, 1)));text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity, 1))}.link-primary:hover,.link-primary:focus{color:RGBA(10,88,202,var(--bs-link-opacity, 1));text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity, 1))}.link-secondary{color:RGBA(var(--bs-secondary-rgb, var(--bs-link-opacity, 1)));text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity, 1))}.link-secondary:hover,.link-secondary:focus{color:RGBA(86,94,100,var(--bs-link-opacity, 1));text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity, 1))}.link-success{color:RGBA(var(--bs-success-rgb, var(--bs-link-opacity, 1)));text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity, 1))}.link-success:hover,.link-success:focus{color:RGBA(20,108,67,var(--bs-link-opacity, 1));text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity, 1))}.link-info{color:RGBA(var(--bs-info-rgb, var(--bs-link-opacity, 1)));text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity, 1))}.link-info:hover,.link-info:focus{color:RGBA(61,213,243,var(--bs-link-opacity, 1));text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity, 1))}.link-warning{color:RGBA(var(--bs-warning-rgb, var(--bs-link-opacity, 1)));text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity, 1))}.link-warning:hover,.link-warning:focus{color:RGBA(255,205,57,var(--bs-link-opacity, 1));text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity, 1))}.link-danger{color:RGBA(var(--bs-danger-rgb, var(--bs-link-opacity, 1)));text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity, 1))}.link-danger:hover,.link-danger:focus{color:RGBA(176,42,55,var(--bs-link-opacity, 1));text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity, 1))}.link-light{color:RGBA(var(--bs-light-rgb, var(--bs-link-opacity, 1)));text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity, 1))}.link-light:hover,.link-light:focus{color:RGBA(249,250,251,var(--bs-link-opacity, 1));text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity, 1))}.link-dark{color:RGBA(var(--bs-dark-rgb, var(--bs-link-opacity, 1)));text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity, 1))}.link-dark:hover,.link-dark:focus{color:RGBA(26,30,33,var(--bs-link-opacity, 1));text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity, 1))}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity, 1));text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity, 1))}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity, .75));text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity, .75))}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, .5));text-underline-offset:.25em;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media (min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute!important}.stretched-link:after{position:absolute;inset:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.align-text-bottom{vertical-align:text-bottom}.align-text-top{vertical-align:text-top}.float-start{float:left}.float-end{float:right}.float-none{float:none}.object-fit-contain{object-fit:contain}.object-fit-cover{object-fit:cover}.object-fit-fill{object-fit:fill}.object-fit-scale{object-fit:scale-down}.object-fit-none{object-fit:none}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-100{opacity:1}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-visible{overflow-x:visible}.overflow-x-scroll{overflow-x:scroll}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overflow-y-visible{overflow-y:visible}.overflow-y-scroll{overflow-y:scroll}.d-inline{display:inline}.d-inline-block{display:inline-block}.d-block{display:block}.d-grid{display:grid}.d-inline-grid{display:inline-grid}.d-table{display:table}.d-table-row{display:table-row}.d-table-cell{display:table-cell}.d-flex{display:flex}.d-inline-flex{display:inline-flex}.d-none{display:none}.shadow{box-shadow:0 .5rem 1rem #00000026}.shadow-sm{box-shadow:0 .125rem .25rem #00000013}.shadow-lg{box-shadow:0 1rem 3rem #0000002d}.shadow-none{box-shadow:none}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static}.position-relative{position:relative}.position-absolute{position:absolute}.position-fixed{position:fixed}.position-sticky{position:sticky}.top-0{top:0}.top-50{top:50%}.top-100{top:100%}.bottom-0{bottom:0}.bottom-50{bottom:50%}.bottom-100{bottom:100%}.start-0{left:0}.start-50{left:50%}.start-100{left:100%}.end-0{right:0}.end-50{right:50%}.end-100{right:100%}.translate-middle{transform:translate(-50%,-50%)}.translate-middle-x{transform:translate(-50%)}.translate-middle-y{transform:translateY(-50%)}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-0{border:0}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-top-0{border-top:0}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-end-0{border-right:0}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-bottom-0{border-bottom:0}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-start-0{border-left:0}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)}.border-success-subtle{border-color:var(--bs-success-border-subtle)}.border-info-subtle{border-color:var(--bs-info-border-subtle)}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)}.border-light-subtle{border-color:var(--bs-light-border-subtle)}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)}.border-1{border-width:1px}.border-2{border-width:2px}.border-3{border-width:3px}.border-4{border-width:4px}.border-5{border-width:5px}.border-opacity-10{--bs-border-opacity: .1}.border-opacity-25{--bs-border-opacity: .25}.border-opacity-50{--bs-border-opacity: .5}.border-opacity-75{--bs-border-opacity: .75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25%}.w-50{width:50%}.w-75{width:75%}.w-100{width:100%}.w-auto{width:auto}.mw-100{max-width:100%}.vw-100{width:100vw}.min-vw-100{min-width:100vw}.h-25{height:25%}.h-50{height:50%}.h-75{height:75%}.h-100{height:100%}.h-auto{height:auto}.mh-100{max-height:100%}.vh-100{height:100vh}.min-vh-100{min-height:100vh}.flex-fill{flex:1 1 auto}.flex-row{flex-direction:row}.flex-column{flex-direction:column}.flex-row-reverse{flex-direction:row-reverse}.flex-column-reverse{flex-direction:column-reverse}.flex-grow-0{flex-grow:0}.flex-grow-1{flex-grow:1}.flex-shrink-0{flex-shrink:0}.flex-shrink-1{flex-shrink:1}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-start{justify-content:flex-start}.justify-content-end{justify-content:flex-end}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.justify-content-around{justify-content:space-around}.justify-content-evenly{justify-content:space-evenly}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-center{align-items:center}.align-items-baseline{align-items:baseline}.align-items-stretch{align-items:stretch}.align-content-start{align-content:flex-start}.align-content-end{align-content:flex-end}.align-content-center{align-content:center}.align-content-between{align-content:space-between}.align-content-around{align-content:space-around}.align-content-stretch{align-content:stretch}.align-self-auto{align-self:auto}.align-self-start{align-self:flex-start}.align-self-end{align-self:flex-end}.align-self-center{align-self:center}.align-self-baseline{align-self:baseline}.align-self-stretch{align-self:stretch}.order-first{order:-1}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-last{order:6}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-3{margin:1rem}.m-4{margin:1.5rem}.m-5{margin:3rem}.m-auto{margin:auto}.mx-0{margin-right:0;margin-left:0}.mx-1{margin-right:.25rem;margin-left:.25rem}.mx-2{margin-right:.5rem;margin-left:.5rem}.mx-3{margin-right:1rem;margin-left:1rem}.mx-4{margin-right:1.5rem;margin-left:1.5rem}.mx-5{margin-right:3rem;margin-left:3rem}.mx-auto{margin-right:auto;margin-left:auto}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:1rem;margin-bottom:1rem}.my-4{margin-top:1.5rem;margin-bottom:1.5rem}.my-5{margin-top:3rem;margin-bottom:3rem}.my-auto{margin-top:auto;margin-bottom:auto}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:1rem}.mt-4{margin-top:1.5rem}.mt-5{margin-top:3rem}.mt-auto{margin-top:auto}.me-0{margin-right:0}.me-1{margin-right:.25rem}.me-2{margin-right:.5rem}.me-3{margin-right:1rem}.me-4{margin-right:1.5rem}.me-5{margin-right:3rem}.me-auto{margin-right:auto}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:1rem}.mb-4{margin-bottom:1.5rem}.mb-5{margin-bottom:3rem}.mb-auto{margin-bottom:auto}.ms-0{margin-left:0}.ms-1{margin-left:.25rem}.ms-2{margin-left:.5rem}.ms-3{margin-left:1rem}.ms-4{margin-left:1.5rem}.ms-5{margin-left:3rem}.ms-auto{margin-left:auto}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:1rem}.p-4{padding:1.5rem}.p-5{padding:3rem}.px-0{padding-right:0;padding-left:0}.px-1{padding-right:.25rem;padding-left:.25rem}.px-2{padding-right:.5rem;padding-left:.5rem}.px-3{padding-right:1rem;padding-left:1rem}.px-4{padding-right:1.5rem;padding-left:1.5rem}.px-5{padding-right:3rem;padding-left:3rem}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:1rem;padding-bottom:1rem}.py-4{padding-top:1.5rem;padding-bottom:1.5rem}.py-5{padding-top:3rem;padding-bottom:3rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:1rem}.pt-4{padding-top:1.5rem}.pt-5{padding-top:3rem}.pe-0{padding-right:0}.pe-1{padding-right:.25rem}.pe-2{padding-right:.5rem}.pe-3{padding-right:1rem}.pe-4{padding-right:1.5rem}.pe-5{padding-right:3rem}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:1rem}.pb-4{padding-bottom:1.5rem}.pb-5{padding-bottom:3rem}.ps-0{padding-left:0}.ps-1{padding-left:.25rem}.ps-2{padding-left:.5rem}.ps-3{padding-left:1rem}.ps-4{padding-left:1.5rem}.ps-5{padding-left:3rem}.gap-0{gap:0}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:1rem}.gap-4{gap:1.5rem}.gap-5{gap:3rem}.row-gap-0{row-gap:0}.row-gap-1{row-gap:.25rem}.row-gap-2{row-gap:.5rem}.row-gap-3{row-gap:1rem}.row-gap-4{row-gap:1.5rem}.row-gap-5{row-gap:3rem}.column-gap-0{column-gap:0}.column-gap-1{column-gap:.25rem}.column-gap-2{column-gap:.5rem}.column-gap-3{column-gap:1rem}.column-gap-4{column-gap:1.5rem}.column-gap-5{column-gap:3rem}.font-monospace{font-family:var(--bs-font-monospace)}.fs-1{font-size:calc(1.375rem + 1.5vw)}.fs-2{font-size:calc(1.325rem + .9vw)}.fs-3{font-size:calc(1.3rem + .6vw)}.fs-4{font-size:calc(1.275rem + .3vw)}.fs-5{font-size:1.25rem}.fs-6{font-size:1rem}.fst-italic{font-style:italic}.fst-normal{font-style:normal}.fw-lighter{font-weight:lighter}.fw-light{font-weight:300}.fw-normal{font-weight:400}.fw-medium{font-weight:500}.fw-semibold{font-weight:600}.fw-bold{font-weight:700}.fw-bolder{font-weight:bolder}.lh-1{line-height:1}.lh-sm{line-height:1.25}.lh-base{line-height:1.5}.lh-lg{line-height:2}.text-start{text-align:left}.text-end{text-align:right}.text-center{text-align:center}.text-decoration-none{text-decoration:none}.text-decoration-underline{text-decoration:underline}.text-decoration-line-through{text-decoration:line-through}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-wrap{white-space:normal}.text-nowrap{white-space:nowrap}.text-break{word-wrap:break-word;word-break:break-word}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color)}.text-black-50{--bs-text-opacity: 1;color:#00000080}.text-white-50{--bs-text-opacity: 1;color:#ffffff80}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color)}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color)}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color)}.text-reset{--bs-text-opacity: 1;color:inherit}.text-opacity-25{--bs-text-opacity: .25}.text-opacity-50{--bs-text-opacity: .5}.text-opacity-75{--bs-text-opacity: .75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)}.text-success-emphasis{color:var(--bs-success-text-emphasis)}.text-info-emphasis{color:var(--bs-info-text-emphasis)}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)}.text-light-emphasis{color:var(--bs-light-text-emphasis)}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)}.link-opacity-10,.link-opacity-10-hover:hover{--bs-link-opacity: .1}.link-opacity-25,.link-opacity-25-hover:hover{--bs-link-opacity: .25}.link-opacity-50,.link-opacity-50-hover:hover{--bs-link-opacity: .5}.link-opacity-75,.link-opacity-75-hover:hover{--bs-link-opacity: .75}.link-opacity-100,.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1,.link-offset-1-hover:hover{text-underline-offset:.125em}.link-offset-2,.link-offset-2-hover:hover{text-underline-offset:.25em}.link-offset-3,.link-offset-3-hover:hover{text-underline-offset:.375em}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity, 1))}.link-underline-opacity-0,.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10,.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: .1}.link-underline-opacity-25,.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: .25}.link-underline-opacity-50,.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: .5}.link-underline-opacity-75,.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: .75}.link-underline-opacity-100,.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))}.bg-transparent{--bs-bg-opacity: 1;background-color:transparent}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))}.bg-opacity-10{--bs-bg-opacity: .1}.bg-opacity-25{--bs-bg-opacity: .25}.bg-opacity-50{--bs-bg-opacity: .5}.bg-opacity-75{--bs-bg-opacity: .75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)}.bg-gradient{background-image:var(--bs-gradient)}.user-select-all{user-select:all}.user-select-auto{user-select:auto}.user-select-none{user-select:none}.pe-none{pointer-events:none}.pe-auto{pointer-events:auto}.rounded{border-radius:var(--bs-border-radius)}.rounded-0{border-radius:0}.rounded-1{border-radius:var(--bs-border-radius-sm)}.rounded-2{border-radius:var(--bs-border-radius)}.rounded-3{border-radius:var(--bs-border-radius-lg)}.rounded-4{border-radius:var(--bs-border-radius-xl)}.rounded-5{border-radius:var(--bs-border-radius-xxl)}.rounded-circle{border-radius:50%}.rounded-pill{border-radius:var(--bs-border-radius-pill)}.rounded-top{border-top-left-radius:var(--bs-border-radius);border-top-right-radius:var(--bs-border-radius)}.rounded-top-0{border-top-left-radius:0;border-top-right-radius:0}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm);border-top-right-radius:var(--bs-border-radius-sm)}.rounded-top-2{border-top-left-radius:var(--bs-border-radius);border-top-right-radius:var(--bs-border-radius)}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg);border-top-right-radius:var(--bs-border-radius-lg)}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl);border-top-right-radius:var(--bs-border-radius-xl)}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl);border-top-right-radius:var(--bs-border-radius-xxl)}.rounded-top-circle{border-top-left-radius:50%;border-top-right-radius:50%}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill);border-top-right-radius:var(--bs-border-radius-pill)}.rounded-end{border-top-right-radius:var(--bs-border-radius);border-bottom-right-radius:var(--bs-border-radius)}.rounded-end-0{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm);border-bottom-right-radius:var(--bs-border-radius-sm)}.rounded-end-2{border-top-right-radius:var(--bs-border-radius);border-bottom-right-radius:var(--bs-border-radius)}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg);border-bottom-right-radius:var(--bs-border-radius-lg)}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl);border-bottom-right-radius:var(--bs-border-radius-xl)}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl);border-bottom-right-radius:var(--bs-border-radius-xxl)}.rounded-end-circle{border-top-right-radius:50%;border-bottom-right-radius:50%}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill);border-bottom-right-radius:var(--bs-border-radius-pill)}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius);border-bottom-left-radius:var(--bs-border-radius)}.rounded-bottom-0{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm);border-bottom-left-radius:var(--bs-border-radius-sm)}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius);border-bottom-left-radius:var(--bs-border-radius)}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg);border-bottom-left-radius:var(--bs-border-radius-lg)}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl);border-bottom-left-radius:var(--bs-border-radius-xl)}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl);border-bottom-left-radius:var(--bs-border-radius-xxl)}.rounded-bottom-circle{border-bottom-right-radius:50%;border-bottom-left-radius:50%}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill);border-bottom-left-radius:var(--bs-border-radius-pill)}.rounded-start{border-bottom-left-radius:var(--bs-border-radius);border-top-left-radius:var(--bs-border-radius)}.rounded-start-0{border-bottom-left-radius:0;border-top-left-radius:0}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm);border-top-left-radius:var(--bs-border-radius-sm)}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius);border-top-left-radius:var(--bs-border-radius)}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg);border-top-left-radius:var(--bs-border-radius-lg)}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl);border-top-left-radius:var(--bs-border-radius-xl)}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl);border-top-left-radius:var(--bs-border-radius-xxl)}.rounded-start-circle{border-bottom-left-radius:50%;border-top-left-radius:50%}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill);border-top-left-radius:var(--bs-border-radius-pill)}.visible{visibility:visible}.invisible{visibility:hidden}.z-n1{z-index:-1}.z-0{z-index:0}.z-1{z-index:1}.z-2{z-index:2}.z-3{z-index:3}@media (min-width: 576px){.float-sm-start{float:left}.float-sm-end{float:right}.float-sm-none{float:none}.object-fit-sm-contain{object-fit:contain}.object-fit-sm-cover{object-fit:cover}.object-fit-sm-fill{object-fit:fill}.object-fit-sm-scale{object-fit:scale-down}.object-fit-sm-none{object-fit:none}.d-sm-inline{display:inline}.d-sm-inline-block{display:inline-block}.d-sm-block{display:block}.d-sm-grid{display:grid}.d-sm-inline-grid{display:inline-grid}.d-sm-table{display:table}.d-sm-table-row{display:table-row}.d-sm-table-cell{display:table-cell}.d-sm-flex{display:flex}.d-sm-inline-flex{display:inline-flex}.d-sm-none{display:none}.flex-sm-fill{flex:1 1 auto}.flex-sm-row{flex-direction:row}.flex-sm-column{flex-direction:column}.flex-sm-row-reverse{flex-direction:row-reverse}.flex-sm-column-reverse{flex-direction:column-reverse}.flex-sm-grow-0{flex-grow:0}.flex-sm-grow-1{flex-grow:1}.flex-sm-shrink-0{flex-shrink:0}.flex-sm-shrink-1{flex-shrink:1}.flex-sm-wrap{flex-wrap:wrap}.flex-sm-nowrap{flex-wrap:nowrap}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-sm-start{justify-content:flex-start}.justify-content-sm-end{justify-content:flex-end}.justify-content-sm-center{justify-content:center}.justify-content-sm-between{justify-content:space-between}.justify-content-sm-around{justify-content:space-around}.justify-content-sm-evenly{justify-content:space-evenly}.align-items-sm-start{align-items:flex-start}.align-items-sm-end{align-items:flex-end}.align-items-sm-center{align-items:center}.align-items-sm-baseline{align-items:baseline}.align-items-sm-stretch{align-items:stretch}.align-content-sm-start{align-content:flex-start}.align-content-sm-end{align-content:flex-end}.align-content-sm-center{align-content:center}.align-content-sm-between{align-content:space-between}.align-content-sm-around{align-content:space-around}.align-content-sm-stretch{align-content:stretch}.align-self-sm-auto{align-self:auto}.align-self-sm-start{align-self:flex-start}.align-self-sm-end{align-self:flex-end}.align-self-sm-center{align-self:center}.align-self-sm-baseline{align-self:baseline}.align-self-sm-stretch{align-self:stretch}.order-sm-first{order:-1}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-last{order:6}.m-sm-0{margin:0}.m-sm-1{margin:.25rem}.m-sm-2{margin:.5rem}.m-sm-3{margin:1rem}.m-sm-4{margin:1.5rem}.m-sm-5{margin:3rem}.m-sm-auto{margin:auto}.mx-sm-0{margin-right:0;margin-left:0}.mx-sm-1{margin-right:.25rem;margin-left:.25rem}.mx-sm-2{margin-right:.5rem;margin-left:.5rem}.mx-sm-3{margin-right:1rem;margin-left:1rem}.mx-sm-4{margin-right:1.5rem;margin-left:1.5rem}.mx-sm-5{margin-right:3rem;margin-left:3rem}.mx-sm-auto{margin-right:auto;margin-left:auto}.my-sm-0{margin-top:0;margin-bottom:0}.my-sm-1{margin-top:.25rem;margin-bottom:.25rem}.my-sm-2{margin-top:.5rem;margin-bottom:.5rem}.my-sm-3{margin-top:1rem;margin-bottom:1rem}.my-sm-4{margin-top:1.5rem;margin-bottom:1.5rem}.my-sm-5{margin-top:3rem;margin-bottom:3rem}.my-sm-auto{margin-top:auto;margin-bottom:auto}.mt-sm-0{margin-top:0}.mt-sm-1{margin-top:.25rem}.mt-sm-2{margin-top:.5rem}.mt-sm-3{margin-top:1rem}.mt-sm-4{margin-top:1.5rem}.mt-sm-5{margin-top:3rem}.mt-sm-auto{margin-top:auto}.me-sm-0{margin-right:0}.me-sm-1{margin-right:.25rem}.me-sm-2{margin-right:.5rem}.me-sm-3{margin-right:1rem}.me-sm-4{margin-right:1.5rem}.me-sm-5{margin-right:3rem}.me-sm-auto{margin-right:auto}.mb-sm-0{margin-bottom:0}.mb-sm-1{margin-bottom:.25rem}.mb-sm-2{margin-bottom:.5rem}.mb-sm-3{margin-bottom:1rem}.mb-sm-4{margin-bottom:1.5rem}.mb-sm-5{margin-bottom:3rem}.mb-sm-auto{margin-bottom:auto}.ms-sm-0{margin-left:0}.ms-sm-1{margin-left:.25rem}.ms-sm-2{margin-left:.5rem}.ms-sm-3{margin-left:1rem}.ms-sm-4{margin-left:1.5rem}.ms-sm-5{margin-left:3rem}.ms-sm-auto{margin-left:auto}.p-sm-0{padding:0}.p-sm-1{padding:.25rem}.p-sm-2{padding:.5rem}.p-sm-3{padding:1rem}.p-sm-4{padding:1.5rem}.p-sm-5{padding:3rem}.px-sm-0{padding-right:0;padding-left:0}.px-sm-1{padding-right:.25rem;padding-left:.25rem}.px-sm-2{padding-right:.5rem;padding-left:.5rem}.px-sm-3{padding-right:1rem;padding-left:1rem}.px-sm-4{padding-right:1.5rem;padding-left:1.5rem}.px-sm-5{padding-right:3rem;padding-left:3rem}.py-sm-0{padding-top:0;padding-bottom:0}.py-sm-1{padding-top:.25rem;padding-bottom:.25rem}.py-sm-2{padding-top:.5rem;padding-bottom:.5rem}.py-sm-3{padding-top:1rem;padding-bottom:1rem}.py-sm-4{padding-top:1.5rem;padding-bottom:1.5rem}.py-sm-5{padding-top:3rem;padding-bottom:3rem}.pt-sm-0{padding-top:0}.pt-sm-1{padding-top:.25rem}.pt-sm-2{padding-top:.5rem}.pt-sm-3{padding-top:1rem}.pt-sm-4{padding-top:1.5rem}.pt-sm-5{padding-top:3rem}.pe-sm-0{padding-right:0}.pe-sm-1{padding-right:.25rem}.pe-sm-2{padding-right:.5rem}.pe-sm-3{padding-right:1rem}.pe-sm-4{padding-right:1.5rem}.pe-sm-5{padding-right:3rem}.pb-sm-0{padding-bottom:0}.pb-sm-1{padding-bottom:.25rem}.pb-sm-2{padding-bottom:.5rem}.pb-sm-3{padding-bottom:1rem}.pb-sm-4{padding-bottom:1.5rem}.pb-sm-5{padding-bottom:3rem}.ps-sm-0{padding-left:0}.ps-sm-1{padding-left:.25rem}.ps-sm-2{padding-left:.5rem}.ps-sm-3{padding-left:1rem}.ps-sm-4{padding-left:1.5rem}.ps-sm-5{padding-left:3rem}.gap-sm-0{gap:0}.gap-sm-1{gap:.25rem}.gap-sm-2{gap:.5rem}.gap-sm-3{gap:1rem}.gap-sm-4{gap:1.5rem}.gap-sm-5{gap:3rem}.row-gap-sm-0{row-gap:0}.row-gap-sm-1{row-gap:.25rem}.row-gap-sm-2{row-gap:.5rem}.row-gap-sm-3{row-gap:1rem}.row-gap-sm-4{row-gap:1.5rem}.row-gap-sm-5{row-gap:3rem}.column-gap-sm-0{column-gap:0}.column-gap-sm-1{column-gap:.25rem}.column-gap-sm-2{column-gap:.5rem}.column-gap-sm-3{column-gap:1rem}.column-gap-sm-4{column-gap:1.5rem}.column-gap-sm-5{column-gap:3rem}.text-sm-start{text-align:left}.text-sm-end{text-align:right}.text-sm-center{text-align:center}}@media (min-width: 768px){.float-md-start{float:left}.float-md-end{float:right}.float-md-none{float:none}.object-fit-md-contain{object-fit:contain}.object-fit-md-cover{object-fit:cover}.object-fit-md-fill{object-fit:fill}.object-fit-md-scale{object-fit:scale-down}.object-fit-md-none{object-fit:none}.d-md-inline{display:inline}.d-md-inline-block{display:inline-block}.d-md-block{display:block}.d-md-grid{display:grid}.d-md-inline-grid{display:inline-grid}.d-md-table{display:table}.d-md-table-row{display:table-row}.d-md-table-cell{display:table-cell}.d-md-flex{display:flex}.d-md-inline-flex{display:inline-flex}.d-md-none{display:none}.flex-md-fill{flex:1 1 auto}.flex-md-row{flex-direction:row}.flex-md-column{flex-direction:column}.flex-md-row-reverse{flex-direction:row-reverse}.flex-md-column-reverse{flex-direction:column-reverse}.flex-md-grow-0{flex-grow:0}.flex-md-grow-1{flex-grow:1}.flex-md-shrink-0{flex-shrink:0}.flex-md-shrink-1{flex-shrink:1}.flex-md-wrap{flex-wrap:wrap}.flex-md-nowrap{flex-wrap:nowrap}.flex-md-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-md-start{justify-content:flex-start}.justify-content-md-end{justify-content:flex-end}.justify-content-md-center{justify-content:center}.justify-content-md-between{justify-content:space-between}.justify-content-md-around{justify-content:space-around}.justify-content-md-evenly{justify-content:space-evenly}.align-items-md-start{align-items:flex-start}.align-items-md-end{align-items:flex-end}.align-items-md-center{align-items:center}.align-items-md-baseline{align-items:baseline}.align-items-md-stretch{align-items:stretch}.align-content-md-start{align-content:flex-start}.align-content-md-end{align-content:flex-end}.align-content-md-center{align-content:center}.align-content-md-between{align-content:space-between}.align-content-md-around{align-content:space-around}.align-content-md-stretch{align-content:stretch}.align-self-md-auto{align-self:auto}.align-self-md-start{align-self:flex-start}.align-self-md-end{align-self:flex-end}.align-self-md-center{align-self:center}.align-self-md-baseline{align-self:baseline}.align-self-md-stretch{align-self:stretch}.order-md-first{order:-1}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-last{order:6}.m-md-0{margin:0}.m-md-1{margin:.25rem}.m-md-2{margin:.5rem}.m-md-3{margin:1rem}.m-md-4{margin:1.5rem}.m-md-5{margin:3rem}.m-md-auto{margin:auto}.mx-md-0{margin-right:0;margin-left:0}.mx-md-1{margin-right:.25rem;margin-left:.25rem}.mx-md-2{margin-right:.5rem;margin-left:.5rem}.mx-md-3{margin-right:1rem;margin-left:1rem}.mx-md-4{margin-right:1.5rem;margin-left:1.5rem}.mx-md-5{margin-right:3rem;margin-left:3rem}.mx-md-auto{margin-right:auto;margin-left:auto}.my-md-0{margin-top:0;margin-bottom:0}.my-md-1{margin-top:.25rem;margin-bottom:.25rem}.my-md-2{margin-top:.5rem;margin-bottom:.5rem}.my-md-3{margin-top:1rem;margin-bottom:1rem}.my-md-4{margin-top:1.5rem;margin-bottom:1.5rem}.my-md-5{margin-top:3rem;margin-bottom:3rem}.my-md-auto{margin-top:auto;margin-bottom:auto}.mt-md-0{margin-top:0}.mt-md-1{margin-top:.25rem}.mt-md-2{margin-top:.5rem}.mt-md-3{margin-top:1rem}.mt-md-4{margin-top:1.5rem}.mt-md-5{margin-top:3rem}.mt-md-auto{margin-top:auto}.me-md-0{margin-right:0}.me-md-1{margin-right:.25rem}.me-md-2{margin-right:.5rem}.me-md-3{margin-right:1rem}.me-md-4{margin-right:1.5rem}.me-md-5{margin-right:3rem}.me-md-auto{margin-right:auto}.mb-md-0{margin-bottom:0}.mb-md-1{margin-bottom:.25rem}.mb-md-2{margin-bottom:.5rem}.mb-md-3{margin-bottom:1rem}.mb-md-4{margin-bottom:1.5rem}.mb-md-5{margin-bottom:3rem}.mb-md-auto{margin-bottom:auto}.ms-md-0{margin-left:0}.ms-md-1{margin-left:.25rem}.ms-md-2{margin-left:.5rem}.ms-md-3{margin-left:1rem}.ms-md-4{margin-left:1.5rem}.ms-md-5{margin-left:3rem}.ms-md-auto{margin-left:auto}.p-md-0{padding:0}.p-md-1{padding:.25rem}.p-md-2{padding:.5rem}.p-md-3{padding:1rem}.p-md-4{padding:1.5rem}.p-md-5{padding:3rem}.px-md-0{padding-right:0;padding-left:0}.px-md-1{padding-right:.25rem;padding-left:.25rem}.px-md-2{padding-right:.5rem;padding-left:.5rem}.px-md-3{padding-right:1rem;padding-left:1rem}.px-md-4{padding-right:1.5rem;padding-left:1.5rem}.px-md-5{padding-right:3rem;padding-left:3rem}.py-md-0{padding-top:0;padding-bottom:0}.py-md-1{padding-top:.25rem;padding-bottom:.25rem}.py-md-2{padding-top:.5rem;padding-bottom:.5rem}.py-md-3{padding-top:1rem;padding-bottom:1rem}.py-md-4{padding-top:1.5rem;padding-bottom:1.5rem}.py-md-5{padding-top:3rem;padding-bottom:3rem}.pt-md-0{padding-top:0}.pt-md-1{padding-top:.25rem}.pt-md-2{padding-top:.5rem}.pt-md-3{padding-top:1rem}.pt-md-4{padding-top:1.5rem}.pt-md-5{padding-top:3rem}.pe-md-0{padding-right:0}.pe-md-1{padding-right:.25rem}.pe-md-2{padding-right:.5rem}.pe-md-3{padding-right:1rem}.pe-md-4{padding-right:1.5rem}.pe-md-5{padding-right:3rem}.pb-md-0{padding-bottom:0}.pb-md-1{padding-bottom:.25rem}.pb-md-2{padding-bottom:.5rem}.pb-md-3{padding-bottom:1rem}.pb-md-4{padding-bottom:1.5rem}.pb-md-5{padding-bottom:3rem}.ps-md-0{padding-left:0}.ps-md-1{padding-left:.25rem}.ps-md-2{padding-left:.5rem}.ps-md-3{padding-left:1rem}.ps-md-4{padding-left:1.5rem}.ps-md-5{padding-left:3rem}.gap-md-0{gap:0}.gap-md-1{gap:.25rem}.gap-md-2{gap:.5rem}.gap-md-3{gap:1rem}.gap-md-4{gap:1.5rem}.gap-md-5{gap:3rem}.row-gap-md-0{row-gap:0}.row-gap-md-1{row-gap:.25rem}.row-gap-md-2{row-gap:.5rem}.row-gap-md-3{row-gap:1rem}.row-gap-md-4{row-gap:1.5rem}.row-gap-md-5{row-gap:3rem}.column-gap-md-0{column-gap:0}.column-gap-md-1{column-gap:.25rem}.column-gap-md-2{column-gap:.5rem}.column-gap-md-3{column-gap:1rem}.column-gap-md-4{column-gap:1.5rem}.column-gap-md-5{column-gap:3rem}.text-md-start{text-align:left}.text-md-end{text-align:right}.text-md-center{text-align:center}}@media (min-width: 992px){.float-lg-start{float:left}.float-lg-end{float:right}.float-lg-none{float:none}.object-fit-lg-contain{object-fit:contain}.object-fit-lg-cover{object-fit:cover}.object-fit-lg-fill{object-fit:fill}.object-fit-lg-scale{object-fit:scale-down}.object-fit-lg-none{object-fit:none}.d-lg-inline{display:inline}.d-lg-inline-block{display:inline-block}.d-lg-block{display:block}.d-lg-grid{display:grid}.d-lg-inline-grid{display:inline-grid}.d-lg-table{display:table}.d-lg-table-row{display:table-row}.d-lg-table-cell{display:table-cell}.d-lg-flex{display:flex}.d-lg-inline-flex{display:inline-flex}.d-lg-none{display:none}.flex-lg-fill{flex:1 1 auto}.flex-lg-row{flex-direction:row}.flex-lg-column{flex-direction:column}.flex-lg-row-reverse{flex-direction:row-reverse}.flex-lg-column-reverse{flex-direction:column-reverse}.flex-lg-grow-0{flex-grow:0}.flex-lg-grow-1{flex-grow:1}.flex-lg-shrink-0{flex-shrink:0}.flex-lg-shrink-1{flex-shrink:1}.flex-lg-wrap{flex-wrap:wrap}.flex-lg-nowrap{flex-wrap:nowrap}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-lg-start{justify-content:flex-start}.justify-content-lg-end{justify-content:flex-end}.justify-content-lg-center{justify-content:center}.justify-content-lg-between{justify-content:space-between}.justify-content-lg-around{justify-content:space-around}.justify-content-lg-evenly{justify-content:space-evenly}.align-items-lg-start{align-items:flex-start}.align-items-lg-end{align-items:flex-end}.align-items-lg-center{align-items:center}.align-items-lg-baseline{align-items:baseline}.align-items-lg-stretch{align-items:stretch}.align-content-lg-start{align-content:flex-start}.align-content-lg-end{align-content:flex-end}.align-content-lg-center{align-content:center}.align-content-lg-between{align-content:space-between}.align-content-lg-around{align-content:space-around}.align-content-lg-stretch{align-content:stretch}.align-self-lg-auto{align-self:auto}.align-self-lg-start{align-self:flex-start}.align-self-lg-end{align-self:flex-end}.align-self-lg-center{align-self:center}.align-self-lg-baseline{align-self:baseline}.align-self-lg-stretch{align-self:stretch}.order-lg-first{order:-1}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-last{order:6}.m-lg-0{margin:0}.m-lg-1{margin:.25rem}.m-lg-2{margin:.5rem}.m-lg-3{margin:1rem}.m-lg-4{margin:1.5rem}.m-lg-5{margin:3rem}.m-lg-auto{margin:auto}.mx-lg-0{margin-right:0;margin-left:0}.mx-lg-1{margin-right:.25rem;margin-left:.25rem}.mx-lg-2{margin-right:.5rem;margin-left:.5rem}.mx-lg-3{margin-right:1rem;margin-left:1rem}.mx-lg-4{margin-right:1.5rem;margin-left:1.5rem}.mx-lg-5{margin-right:3rem;margin-left:3rem}.mx-lg-auto{margin-right:auto;margin-left:auto}.my-lg-0{margin-top:0;margin-bottom:0}.my-lg-1{margin-top:.25rem;margin-bottom:.25rem}.my-lg-2{margin-top:.5rem;margin-bottom:.5rem}.my-lg-3{margin-top:1rem;margin-bottom:1rem}.my-lg-4{margin-top:1.5rem;margin-bottom:1.5rem}.my-lg-5{margin-top:3rem;margin-bottom:3rem}.my-lg-auto{margin-top:auto;margin-bottom:auto}.mt-lg-0{margin-top:0}.mt-lg-1{margin-top:.25rem}.mt-lg-2{margin-top:.5rem}.mt-lg-3{margin-top:1rem}.mt-lg-4{margin-top:1.5rem}.mt-lg-5{margin-top:3rem}.mt-lg-auto{margin-top:auto}.me-lg-0{margin-right:0}.me-lg-1{margin-right:.25rem}.me-lg-2{margin-right:.5rem}.me-lg-3{margin-right:1rem}.me-lg-4{margin-right:1.5rem}.me-lg-5{margin-right:3rem}.me-lg-auto{margin-right:auto}.mb-lg-0{margin-bottom:0}.mb-lg-1{margin-bottom:.25rem}.mb-lg-2{margin-bottom:.5rem}.mb-lg-3{margin-bottom:1rem}.mb-lg-4{margin-bottom:1.5rem}.mb-lg-5{margin-bottom:3rem}.mb-lg-auto{margin-bottom:auto}.ms-lg-0{margin-left:0}.ms-lg-1{margin-left:.25rem}.ms-lg-2{margin-left:.5rem}.ms-lg-3{margin-left:1rem}.ms-lg-4{margin-left:1.5rem}.ms-lg-5{margin-left:3rem}.ms-lg-auto{margin-left:auto}.p-lg-0{padding:0}.p-lg-1{padding:.25rem}.p-lg-2{padding:.5rem}.p-lg-3{padding:1rem}.p-lg-4{padding:1.5rem}.p-lg-5{padding:3rem}.px-lg-0{padding-right:0;padding-left:0}.px-lg-1{padding-right:.25rem;padding-left:.25rem}.px-lg-2{padding-right:.5rem;padding-left:.5rem}.px-lg-3{padding-right:1rem;padding-left:1rem}.px-lg-4{padding-right:1.5rem;padding-left:1.5rem}.px-lg-5{padding-right:3rem;padding-left:3rem}.py-lg-0{padding-top:0;padding-bottom:0}.py-lg-1{padding-top:.25rem;padding-bottom:.25rem}.py-lg-2{padding-top:.5rem;padding-bottom:.5rem}.py-lg-3{padding-top:1rem;padding-bottom:1rem}.py-lg-4{padding-top:1.5rem;padding-bottom:1.5rem}.py-lg-5{padding-top:3rem;padding-bottom:3rem}.pt-lg-0{padding-top:0}.pt-lg-1{padding-top:.25rem}.pt-lg-2{padding-top:.5rem}.pt-lg-3{padding-top:1rem}.pt-lg-4{padding-top:1.5rem}.pt-lg-5{padding-top:3rem}.pe-lg-0{padding-right:0}.pe-lg-1{padding-right:.25rem}.pe-lg-2{padding-right:.5rem}.pe-lg-3{padding-right:1rem}.pe-lg-4{padding-right:1.5rem}.pe-lg-5{padding-right:3rem}.pb-lg-0{padding-bottom:0}.pb-lg-1{padding-bottom:.25rem}.pb-lg-2{padding-bottom:.5rem}.pb-lg-3{padding-bottom:1rem}.pb-lg-4{padding-bottom:1.5rem}.pb-lg-5{padding-bottom:3rem}.ps-lg-0{padding-left:0}.ps-lg-1{padding-left:.25rem}.ps-lg-2{padding-left:.5rem}.ps-lg-3{padding-left:1rem}.ps-lg-4{padding-left:1.5rem}.ps-lg-5{padding-left:3rem}.gap-lg-0{gap:0}.gap-lg-1{gap:.25rem}.gap-lg-2{gap:.5rem}.gap-lg-3{gap:1rem}.gap-lg-4{gap:1.5rem}.gap-lg-5{gap:3rem}.row-gap-lg-0{row-gap:0}.row-gap-lg-1{row-gap:.25rem}.row-gap-lg-2{row-gap:.5rem}.row-gap-lg-3{row-gap:1rem}.row-gap-lg-4{row-gap:1.5rem}.row-gap-lg-5{row-gap:3rem}.column-gap-lg-0{column-gap:0}.column-gap-lg-1{column-gap:.25rem}.column-gap-lg-2{column-gap:.5rem}.column-gap-lg-3{column-gap:1rem}.column-gap-lg-4{column-gap:1.5rem}.column-gap-lg-5{column-gap:3rem}.text-lg-start{text-align:left}.text-lg-end{text-align:right}.text-lg-center{text-align:center}}@media (min-width: 1200px){.float-xl-start{float:left}.float-xl-end{float:right}.float-xl-none{float:none}.object-fit-xl-contain{object-fit:contain}.object-fit-xl-cover{object-fit:cover}.object-fit-xl-fill{object-fit:fill}.object-fit-xl-scale{object-fit:scale-down}.object-fit-xl-none{object-fit:none}.d-xl-inline{display:inline}.d-xl-inline-block{display:inline-block}.d-xl-block{display:block}.d-xl-grid{display:grid}.d-xl-inline-grid{display:inline-grid}.d-xl-table{display:table}.d-xl-table-row{display:table-row}.d-xl-table-cell{display:table-cell}.d-xl-flex{display:flex}.d-xl-inline-flex{display:inline-flex}.d-xl-none{display:none}.flex-xl-fill{flex:1 1 auto}.flex-xl-row{flex-direction:row}.flex-xl-column{flex-direction:column}.flex-xl-row-reverse{flex-direction:row-reverse}.flex-xl-column-reverse{flex-direction:column-reverse}.flex-xl-grow-0{flex-grow:0}.flex-xl-grow-1{flex-grow:1}.flex-xl-shrink-0{flex-shrink:0}.flex-xl-shrink-1{flex-shrink:1}.flex-xl-wrap{flex-wrap:wrap}.flex-xl-nowrap{flex-wrap:nowrap}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-xl-start{justify-content:flex-start}.justify-content-xl-end{justify-content:flex-end}.justify-content-xl-center{justify-content:center}.justify-content-xl-between{justify-content:space-between}.justify-content-xl-around{justify-content:space-around}.justify-content-xl-evenly{justify-content:space-evenly}.align-items-xl-start{align-items:flex-start}.align-items-xl-end{align-items:flex-end}.align-items-xl-center{align-items:center}.align-items-xl-baseline{align-items:baseline}.align-items-xl-stretch{align-items:stretch}.align-content-xl-start{align-content:flex-start}.align-content-xl-end{align-content:flex-end}.align-content-xl-center{align-content:center}.align-content-xl-between{align-content:space-between}.align-content-xl-around{align-content:space-around}.align-content-xl-stretch{align-content:stretch}.align-self-xl-auto{align-self:auto}.align-self-xl-start{align-self:flex-start}.align-self-xl-end{align-self:flex-end}.align-self-xl-center{align-self:center}.align-self-xl-baseline{align-self:baseline}.align-self-xl-stretch{align-self:stretch}.order-xl-first{order:-1}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-last{order:6}.m-xl-0{margin:0}.m-xl-1{margin:.25rem}.m-xl-2{margin:.5rem}.m-xl-3{margin:1rem}.m-xl-4{margin:1.5rem}.m-xl-5{margin:3rem}.m-xl-auto{margin:auto}.mx-xl-0{margin-right:0;margin-left:0}.mx-xl-1{margin-right:.25rem;margin-left:.25rem}.mx-xl-2{margin-right:.5rem;margin-left:.5rem}.mx-xl-3{margin-right:1rem;margin-left:1rem}.mx-xl-4{margin-right:1.5rem;margin-left:1.5rem}.mx-xl-5{margin-right:3rem;margin-left:3rem}.mx-xl-auto{margin-right:auto;margin-left:auto}.my-xl-0{margin-top:0;margin-bottom:0}.my-xl-1{margin-top:.25rem;margin-bottom:.25rem}.my-xl-2{margin-top:.5rem;margin-bottom:.5rem}.my-xl-3{margin-top:1rem;margin-bottom:1rem}.my-xl-4{margin-top:1.5rem;margin-bottom:1.5rem}.my-xl-5{margin-top:3rem;margin-bottom:3rem}.my-xl-auto{margin-top:auto;margin-bottom:auto}.mt-xl-0{margin-top:0}.mt-xl-1{margin-top:.25rem}.mt-xl-2{margin-top:.5rem}.mt-xl-3{margin-top:1rem}.mt-xl-4{margin-top:1.5rem}.mt-xl-5{margin-top:3rem}.mt-xl-auto{margin-top:auto}.me-xl-0{margin-right:0}.me-xl-1{margin-right:.25rem}.me-xl-2{margin-right:.5rem}.me-xl-3{margin-right:1rem}.me-xl-4{margin-right:1.5rem}.me-xl-5{margin-right:3rem}.me-xl-auto{margin-right:auto}.mb-xl-0{margin-bottom:0}.mb-xl-1{margin-bottom:.25rem}.mb-xl-2{margin-bottom:.5rem}.mb-xl-3{margin-bottom:1rem}.mb-xl-4{margin-bottom:1.5rem}.mb-xl-5{margin-bottom:3rem}.mb-xl-auto{margin-bottom:auto}.ms-xl-0{margin-left:0}.ms-xl-1{margin-left:.25rem}.ms-xl-2{margin-left:.5rem}.ms-xl-3{margin-left:1rem}.ms-xl-4{margin-left:1.5rem}.ms-xl-5{margin-left:3rem}.ms-xl-auto{margin-left:auto}.p-xl-0{padding:0}.p-xl-1{padding:.25rem}.p-xl-2{padding:.5rem}.p-xl-3{padding:1rem}.p-xl-4{padding:1.5rem}.p-xl-5{padding:3rem}.px-xl-0{padding-right:0;padding-left:0}.px-xl-1{padding-right:.25rem;padding-left:.25rem}.px-xl-2{padding-right:.5rem;padding-left:.5rem}.px-xl-3{padding-right:1rem;padding-left:1rem}.px-xl-4{padding-right:1.5rem;padding-left:1.5rem}.px-xl-5{padding-right:3rem;padding-left:3rem}.py-xl-0{padding-top:0;padding-bottom:0}.py-xl-1{padding-top:.25rem;padding-bottom:.25rem}.py-xl-2{padding-top:.5rem;padding-bottom:.5rem}.py-xl-3{padding-top:1rem;padding-bottom:1rem}.py-xl-4{padding-top:1.5rem;padding-bottom:1.5rem}.py-xl-5{padding-top:3rem;padding-bottom:3rem}.pt-xl-0{padding-top:0}.pt-xl-1{padding-top:.25rem}.pt-xl-2{padding-top:.5rem}.pt-xl-3{padding-top:1rem}.pt-xl-4{padding-top:1.5rem}.pt-xl-5{padding-top:3rem}.pe-xl-0{padding-right:0}.pe-xl-1{padding-right:.25rem}.pe-xl-2{padding-right:.5rem}.pe-xl-3{padding-right:1rem}.pe-xl-4{padding-right:1.5rem}.pe-xl-5{padding-right:3rem}.pb-xl-0{padding-bottom:0}.pb-xl-1{padding-bottom:.25rem}.pb-xl-2{padding-bottom:.5rem}.pb-xl-3{padding-bottom:1rem}.pb-xl-4{padding-bottom:1.5rem}.pb-xl-5{padding-bottom:3rem}.ps-xl-0{padding-left:0}.ps-xl-1{padding-left:.25rem}.ps-xl-2{padding-left:.5rem}.ps-xl-3{padding-left:1rem}.ps-xl-4{padding-left:1.5rem}.ps-xl-5{padding-left:3rem}.gap-xl-0{gap:0}.gap-xl-1{gap:.25rem}.gap-xl-2{gap:.5rem}.gap-xl-3{gap:1rem}.gap-xl-4{gap:1.5rem}.gap-xl-5{gap:3rem}.row-gap-xl-0{row-gap:0}.row-gap-xl-1{row-gap:.25rem}.row-gap-xl-2{row-gap:.5rem}.row-gap-xl-3{row-gap:1rem}.row-gap-xl-4{row-gap:1.5rem}.row-gap-xl-5{row-gap:3rem}.column-gap-xl-0{column-gap:0}.column-gap-xl-1{column-gap:.25rem}.column-gap-xl-2{column-gap:.5rem}.column-gap-xl-3{column-gap:1rem}.column-gap-xl-4{column-gap:1.5rem}.column-gap-xl-5{column-gap:3rem}.text-xl-start{text-align:left}.text-xl-end{text-align:right}.text-xl-center{text-align:center}}@media (min-width: 1400px){.float-xxl-start{float:left}.float-xxl-end{float:right}.float-xxl-none{float:none}.object-fit-xxl-contain{object-fit:contain}.object-fit-xxl-cover{object-fit:cover}.object-fit-xxl-fill{object-fit:fill}.object-fit-xxl-scale{object-fit:scale-down}.object-fit-xxl-none{object-fit:none}.d-xxl-inline{display:inline}.d-xxl-inline-block{display:inline-block}.d-xxl-block{display:block}.d-xxl-grid{display:grid}.d-xxl-inline-grid{display:inline-grid}.d-xxl-table{display:table}.d-xxl-table-row{display:table-row}.d-xxl-table-cell{display:table-cell}.d-xxl-flex{display:flex}.d-xxl-inline-flex{display:inline-flex}.d-xxl-none{display:none}.flex-xxl-fill{flex:1 1 auto}.flex-xxl-row{flex-direction:row}.flex-xxl-column{flex-direction:column}.flex-xxl-row-reverse{flex-direction:row-reverse}.flex-xxl-column-reverse{flex-direction:column-reverse}.flex-xxl-grow-0{flex-grow:0}.flex-xxl-grow-1{flex-grow:1}.flex-xxl-shrink-0{flex-shrink:0}.flex-xxl-shrink-1{flex-shrink:1}.flex-xxl-wrap{flex-wrap:wrap}.flex-xxl-nowrap{flex-wrap:nowrap}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-xxl-start{justify-content:flex-start}.justify-content-xxl-end{justify-content:flex-end}.justify-content-xxl-center{justify-content:center}.justify-content-xxl-between{justify-content:space-between}.justify-content-xxl-around{justify-content:space-around}.justify-content-xxl-evenly{justify-content:space-evenly}.align-items-xxl-start{align-items:flex-start}.align-items-xxl-end{align-items:flex-end}.align-items-xxl-center{align-items:center}.align-items-xxl-baseline{align-items:baseline}.align-items-xxl-stretch{align-items:stretch}.align-content-xxl-start{align-content:flex-start}.align-content-xxl-end{align-content:flex-end}.align-content-xxl-center{align-content:center}.align-content-xxl-between{align-content:space-between}.align-content-xxl-around{align-content:space-around}.align-content-xxl-stretch{align-content:stretch}.align-self-xxl-auto{align-self:auto}.align-self-xxl-start{align-self:flex-start}.align-self-xxl-end{align-self:flex-end}.align-self-xxl-center{align-self:center}.align-self-xxl-baseline{align-self:baseline}.align-self-xxl-stretch{align-self:stretch}.order-xxl-first{order:-1}.order-xxl-0{order:0}.order-xxl-1{order:1}.order-xxl-2{order:2}.order-xxl-3{order:3}.order-xxl-4{order:4}.order-xxl-5{order:5}.order-xxl-last{order:6}.m-xxl-0{margin:0}.m-xxl-1{margin:.25rem}.m-xxl-2{margin:.5rem}.m-xxl-3{margin:1rem}.m-xxl-4{margin:1.5rem}.m-xxl-5{margin:3rem}.m-xxl-auto{margin:auto}.mx-xxl-0{margin-right:0;margin-left:0}.mx-xxl-1{margin-right:.25rem;margin-left:.25rem}.mx-xxl-2{margin-right:.5rem;margin-left:.5rem}.mx-xxl-3{margin-right:1rem;margin-left:1rem}.mx-xxl-4{margin-right:1.5rem;margin-left:1.5rem}.mx-xxl-5{margin-right:3rem;margin-left:3rem}.mx-xxl-auto{margin-right:auto;margin-left:auto}.my-xxl-0{margin-top:0;margin-bottom:0}.my-xxl-1{margin-top:.25rem;margin-bottom:.25rem}.my-xxl-2{margin-top:.5rem;margin-bottom:.5rem}.my-xxl-3{margin-top:1rem;margin-bottom:1rem}.my-xxl-4{margin-top:1.5rem;margin-bottom:1.5rem}.my-xxl-5{margin-top:3rem;margin-bottom:3rem}.my-xxl-auto{margin-top:auto;margin-bottom:auto}.mt-xxl-0{margin-top:0}.mt-xxl-1{margin-top:.25rem}.mt-xxl-2{margin-top:.5rem}.mt-xxl-3{margin-top:1rem}.mt-xxl-4{margin-top:1.5rem}.mt-xxl-5{margin-top:3rem}.mt-xxl-auto{margin-top:auto}.me-xxl-0{margin-right:0}.me-xxl-1{margin-right:.25rem}.me-xxl-2{margin-right:.5rem}.me-xxl-3{margin-right:1rem}.me-xxl-4{margin-right:1.5rem}.me-xxl-5{margin-right:3rem}.me-xxl-auto{margin-right:auto}.mb-xxl-0{margin-bottom:0}.mb-xxl-1{margin-bottom:.25rem}.mb-xxl-2{margin-bottom:.5rem}.mb-xxl-3{margin-bottom:1rem}.mb-xxl-4{margin-bottom:1.5rem}.mb-xxl-5{margin-bottom:3rem}.mb-xxl-auto{margin-bottom:auto}.ms-xxl-0{margin-left:0}.ms-xxl-1{margin-left:.25rem}.ms-xxl-2{margin-left:.5rem}.ms-xxl-3{margin-left:1rem}.ms-xxl-4{margin-left:1.5rem}.ms-xxl-5{margin-left:3rem}.ms-xxl-auto{margin-left:auto}.p-xxl-0{padding:0}.p-xxl-1{padding:.25rem}.p-xxl-2{padding:.5rem}.p-xxl-3{padding:1rem}.p-xxl-4{padding:1.5rem}.p-xxl-5{padding:3rem}.px-xxl-0{padding-right:0;padding-left:0}.px-xxl-1{padding-right:.25rem;padding-left:.25rem}.px-xxl-2{padding-right:.5rem;padding-left:.5rem}.px-xxl-3{padding-right:1rem;padding-left:1rem}.px-xxl-4{padding-right:1.5rem;padding-left:1.5rem}.px-xxl-5{padding-right:3rem;padding-left:3rem}.py-xxl-0{padding-top:0;padding-bottom:0}.py-xxl-1{padding-top:.25rem;padding-bottom:.25rem}.py-xxl-2{padding-top:.5rem;padding-bottom:.5rem}.py-xxl-3{padding-top:1rem;padding-bottom:1rem}.py-xxl-4{padding-top:1.5rem;padding-bottom:1.5rem}.py-xxl-5{padding-top:3rem;padding-bottom:3rem}.pt-xxl-0{padding-top:0}.pt-xxl-1{padding-top:.25rem}.pt-xxl-2{padding-top:.5rem}.pt-xxl-3{padding-top:1rem}.pt-xxl-4{padding-top:1.5rem}.pt-xxl-5{padding-top:3rem}.pe-xxl-0{padding-right:0}.pe-xxl-1{padding-right:.25rem}.pe-xxl-2{padding-right:.5rem}.pe-xxl-3{padding-right:1rem}.pe-xxl-4{padding-right:1.5rem}.pe-xxl-5{padding-right:3rem}.pb-xxl-0{padding-bottom:0}.pb-xxl-1{padding-bottom:.25rem}.pb-xxl-2{padding-bottom:.5rem}.pb-xxl-3{padding-bottom:1rem}.pb-xxl-4{padding-bottom:1.5rem}.pb-xxl-5{padding-bottom:3rem}.ps-xxl-0{padding-left:0}.ps-xxl-1{padding-left:.25rem}.ps-xxl-2{padding-left:.5rem}.ps-xxl-3{padding-left:1rem}.ps-xxl-4{padding-left:1.5rem}.ps-xxl-5{padding-left:3rem}.gap-xxl-0{gap:0}.gap-xxl-1{gap:.25rem}.gap-xxl-2{gap:.5rem}.gap-xxl-3{gap:1rem}.gap-xxl-4{gap:1.5rem}.gap-xxl-5{gap:3rem}.row-gap-xxl-0{row-gap:0}.row-gap-xxl-1{row-gap:.25rem}.row-gap-xxl-2{row-gap:.5rem}.row-gap-xxl-3{row-gap:1rem}.row-gap-xxl-4{row-gap:1.5rem}.row-gap-xxl-5{row-gap:3rem}.column-gap-xxl-0{column-gap:0}.column-gap-xxl-1{column-gap:.25rem}.column-gap-xxl-2{column-gap:.5rem}.column-gap-xxl-3{column-gap:1rem}.column-gap-xxl-4{column-gap:1.5rem}.column-gap-xxl-5{column-gap:3rem}.text-xxl-start{text-align:left}.text-xxl-end{text-align:right}.text-xxl-center{text-align:center}}@media (min-width: 1200px){.fs-1{font-size:2.5rem}.fs-2{font-size:2rem}.fs-3{font-size:1.75rem}.fs-4{font-size:1.5rem}}@media print{.d-print-inline{display:inline}.d-print-inline-block{display:inline-block}.d-print-block{display:block}.d-print-grid{display:grid}.d-print-inline-grid{display:inline-grid}.d-print-table{display:table}.d-print-table-row{display:table-row}.d-print-table-cell{display:table-cell}.d-print-flex{display:flex}.d-print-inline-flex{display:inline-flex}.d-print-none{display:none}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}[data-bs-theme=dark] pre code.hljs{display:block;overflow-x:auto;padding:1em}[data-bs-theme=dark] code.hljs{padding:3px 5px}[data-bs-theme=dark] .hljs{color:#c9d1d9;background:#0d1117}[data-bs-theme=dark] .hljs-doctag,[data-bs-theme=dark] .hljs-keyword,[data-bs-theme=dark] .hljs-meta .hljs-keyword,[data-bs-theme=dark] .hljs-template-tag,[data-bs-theme=dark] .hljs-template-variable,[data-bs-theme=dark] .hljs-type,[data-bs-theme=dark] .hljs-variable.language_{color:#ff7b72}[data-bs-theme=dark] .hljs-title,[data-bs-theme=dark] .hljs-title.class_,[data-bs-theme=dark] .hljs-title.class_.inherited__,[data-bs-theme=dark] .hljs-title.function_{color:#d2a8ff}[data-bs-theme=dark] .hljs-attr,[data-bs-theme=dark] .hljs-attribute,[data-bs-theme=dark] .hljs-literal,[data-bs-theme=dark] .hljs-meta,[data-bs-theme=dark] .hljs-number,[data-bs-theme=dark] .hljs-operator,[data-bs-theme=dark] .hljs-selector-attr,[data-bs-theme=dark] .hljs-selector-class,[data-bs-theme=dark] .hljs-selector-id,[data-bs-theme=dark] .hljs-variable{color:#79c0ff}[data-bs-theme=dark] .hljs-meta .hljs-string,[data-bs-theme=dark] .hljs-regexp,[data-bs-theme=dark] .hljs-string{color:#a5d6ff}[data-bs-theme=dark] .hljs-built_in,[data-bs-theme=dark] .hljs-symbol{color:#ffa657}[data-bs-theme=dark] .hljs-code,[data-bs-theme=dark] .hljs-comment,[data-bs-theme=dark] .hljs-formula{color:#8b949e}[data-bs-theme=dark] .hljs-name,[data-bs-theme=dark] .hljs-quote,[data-bs-theme=dark] .hljs-selector-pseudo,[data-bs-theme=dark] .hljs-selector-tag{color:#7ee787}[data-bs-theme=dark] .hljs-subst{color:#c9d1d9}[data-bs-theme=dark] .hljs-section{color:#1f6feb;font-weight:700}[data-bs-theme=dark] .hljs-bullet{color:#f2cc60}[data-bs-theme=dark] .hljs-emphasis{color:#c9d1d9;font-style:italic}[data-bs-theme=dark] .hljs-strong{color:#c9d1d9;font-weight:700}[data-bs-theme=dark] .hljs-addition{color:#aff5b4;background-color:#033a16}[data-bs-theme=dark] .hljs-deletion{color:#ffdcd7;background-color:#67060c}.hljs{background-color:#f5f5f5}pre>code .line-highlight{background-color:#ff0}[data-bs-theme=dark] pre>code .line-highlight{background-color:#4a4a00}h1,.h1,h2,.h2,h3,.h3,h4,.h4,h5,.h5,h6,.h6,.xref,.text-break{word-wrap:break-word;word-break:break-word}.divider{margin:0 5px;color:#ccc}article span.small.pull-right{float:right}article img{max-width:100%;height:auto}.codewrapper{position:relative}.sample-response .response-content{max-height:200px}@media (max-width: 768px){#mobile-indicator{display:block}.mobile-hide{display:none}h1:before,.h1:before,h2:before,.h2:before,h3:before,.h3:before,h4:before,.h4:before{content:"";display:none}}html{width:calc(100vw - var(--scrollbar-width));min-height:100vh;overflow-x:hidden}body,body[data-layout=landing]{width:calc(100vw - var(--scrollbar-width));min-height:100vh;display:flex;flex-direction:column}body>header,body[data-layout=landing]>header{display:flex;align-items:stretch}@media (min-width: 768px){body>header,body[data-layout=landing]>header{position:sticky;top:0;z-index:1030}}@media (min-width: 768px){body>header,body[data-layout=landing]>header{height:60px}}body>header>nav,body[data-layout=landing]>header>nav{flex:1}body>footer,body[data-layout=landing]>footer{padding:1rem 0;height:60px}body>footer>div,body[data-layout=landing]>footer>div{display:flex;align-items:center}body>main,body[data-layout=landing]>main{display:flex;flex:1;padding-top:1.6rem;padding-bottom:4rem}body>main>.content>:not(article),body[data-layout=landing]>main>.content>:not(article){display:none}@media (min-width: 768px){body>main>.content>article [id],body[data-layout=landing]>main>.content>article [id]{scroll-margin-top:60px}}body>main>:not(.content),body[data-layout=landing]>main>:not(.content){display:none}@media print{body>header,body>footer,body[data-layout=landing]>header,body[data-layout=landing]>footer{display:none}}@media not print{body[data-search]>main{display:none}body[data-search]>.search-results{display:block;flex:1;padding-top:1.6rem;padding-bottom:4rem}body:not([data-search])>.search-results{display:none}body:not([data-search])[data-layout=""]>main,body:not([data-search])[data-layout=conceptual]>main{padding-bottom:0}body:not([data-search])[data-layout=""]>main>.toc-offcanvas,body:not([data-search])[data-layout=conceptual]>main>.toc-offcanvas{flex:.35;display:block;overflow-x:hidden;overflow-y:auto;max-width:360px;max-height:calc(100vh - 60px)}@media (min-width: 768px){body:not([data-search])[data-layout=""]>main>.toc-offcanvas,body:not([data-search])[data-layout=conceptual]>main>.toc-offcanvas{position:sticky;top:calc(60px + 1.6rem)}}@media (max-width: 767.98px){body:not([data-search])[data-layout=""]>main>.toc-offcanvas,body:not([data-search])[data-layout=conceptual]>main>.toc-offcanvas{flex:0}}body:not([data-search])[data-layout=""]>main>.content,body:not([data-search])[data-layout=conceptual]>main>.content{flex:1;min-width:0;margin:0 3rem;padding-bottom:4rem}body:not([data-search])[data-layout=""]>main>.content>.actionbar,body:not([data-search])[data-layout=conceptual]>main>.content>.actionbar{display:flex;align-items:flex-start;margin-top:.5rem;min-height:40px}body:not([data-search])[data-layout=""]>main>.content>.contribution,body:not([data-search])[data-layout=""]>main>.content>.next-article,body:not([data-search])[data-layout=conceptual]>main>.content>.contribution,body:not([data-search])[data-layout=conceptual]>main>.content>.next-article{display:flex}@media (max-width: 991.98px){body:not([data-search])[data-layout=""]>main>.content,body:not([data-search])[data-layout=conceptual]>main>.content{margin:0 1rem}}@media (max-width: 767.98px){body:not([data-search])[data-layout=""]>main>.content,body:not([data-search])[data-layout=conceptual]>main>.content{margin:0}}body:not([data-search])[data-layout=""]>main>.affix,body:not([data-search])[data-layout=conceptual]>main>.affix{display:block;width:230px;max-height:calc(100vh - 60px);overflow-x:hidden;overflow-y:auto}@media (min-width: 768px){body:not([data-search])[data-layout=""]>main>.affix,body:not([data-search])[data-layout=conceptual]>main>.affix{position:sticky;top:calc(60px + 1.6rem)}}}@media only screen and (width <= 1140px){body:not([data-search])[data-layout=""]>main>.affix,body:not([data-search])[data-layout=conceptual]>main>.affix{display:none}}@media not print{body:not([data-search])[data-layout=chromeless]>header,body:not([data-search])[data-layout=chromeless]>footer{display:none}}.breadcrumb{font-size:14px}.breadcrumb a{text-decoration:none}.breadcrumb a:hover,.breadcrumb a:focus{text-decoration:underline}.next-article{display:flex}.next-article:not(:has(div)){border-top-width:0}.next-article:has(div){margin-top:3rem;padding-top:1rem}.next-article>div{flex:1}.next-article>div.next{text-align:right}.next-article>div>span{opacity:.66;font-size:14px}.next-article>div>a{display:block}.navbar{padding:0}.navbar .navbar-brand{display:flex;align-items:center}.navbar .navbar-nav{display:flex;flex-wrap:nowrap}.navbar #navbar{display:flex;flex:1;justify-content:flex-end}.navbar #navbar form{display:flex;position:relative;align-items:center}.navbar #navbar form>i.bi{position:absolute;left:.8rem;opacity:.5}.navbar #navbar form>input{padding-left:2.5rem}.navbar #navbar form.search{order:50}.navbar #navbar form.icons{margin-left:auto}@media (max-width: 767.98px){.navbar #navbar{flex-direction:column;align-items:flex-start}.navbar #navbar form{margin:1rem 0 0}.navbar #navbar form.search{align-self:stretch;order:30}.navbar #navbar form.icons{align-self:center;order:40;margin:1rem 0}}.affix{font-size:14px}.affix h5,.affix .h5{display:inline-block;font-weight:300;text-transform:uppercase;padding:1em 0 .5em;font-size:14px;letter-spacing:2px}.affix h6,.affix .h6{font-size:14px}.affix ul{flex-direction:column;list-style-type:none;padding-left:0;margin-left:0}.affix ul h6,.affix ul .h6{margin-top:1rem}.affix ul li{margin:.4rem 0}.affix ul li a{text-decoration:none}.affix ul li a:hover,.affix ul li a:focus{text-decoration:underline}.contribution{margin-top:2rem}.contribution a.edit-link{text-decoration:none}.contribution a.edit-link:hover,.contribution a.edit-link:focus{text-decoration:underline}.contribution a.edit-link:before{content:"\f4ca";display:inline-block;font-family:bootstrap-icons;position:relative;margin-right:.5em;top:.2em;font-size:1.25em;font-weight:400}.toc{min-width:0;font-size:14px}.toc ul{flex-direction:column;list-style-type:none;padding-left:0;overflow-wrap:break-word}.toc li{font-weight:400;margin:.6em 0;padding-left:.85rem;position:relative}.toc li>a{display:inline;text-decoration:none}.toc li>a:hover,.toc li>a:focus{text-decoration:underline}.toc li>ul{display:none}.toc li.expanded>ul{display:block}.toc .expand-stub:before{display:inline-block;width:.85rem;cursor:pointer;font-family:bootstrap-icons;font-size:.8em;content:"\f285";position:absolute;margin-top:.2em;margin-left:-.85rem;transition:transform .35s ease;transform-origin:.5em 50%}@media (prefers-reduced-motion){.toc .expand-stub:before{transition:none}}.toc li.expanded>.expand-stub:before{transform:rotate(90deg)}.toc span.name-only{font-weight:600;display:inline-block;margin:.4rem 0}a.external[href]:after{font-family:bootstrap-icons;content:"\f1c5";font-size:.6rem;margin:0 .2em;display:inline-block}.alert h5,.alert .h5{text-transform:uppercase;font-weight:700;font-size:1rem}.alert h5:before,.alert .h5:before{font-family:bootstrap-icons;position:relative;margin-right:.5em;top:.2em;font-size:1.25em;font-weight:400}.alert-info h5:before,.alert-info .h5:before{content:"\f431"}.alert-warning h5:before,.alert-warning .h5:before{content:"\f333"}.alert-danger h5:before,.alert-danger .h5:before{content:"\f623"}div.embeddedvideo{padding-top:56.25%;position:relative;width:100%;margin-bottom:1em}div.embeddedvideo iframe{position:absolute;inset:0;width:100%;height:100%}pre{position:relative}pre>.code-action{display:none;position:absolute;top:.25rem;right:.2rem}pre>.code-action .bi-check-lg{font-size:1.2rem}pre:hover>.code-action{display:block}.tabGroup>section{margin:0;padding:1rem;border-top:0;border-top-left-radius:0;border-top-right-radius:0}#search-results{line-height:1.8}#search-results>.search-list{font-size:.9em;color:#6c757d}#search-results>.sr-items{flex:1}#search-results>.sr-items .sr-item{margin-bottom:1.5em}#search-results>.sr-items .sr-item>.item-title{font-size:x-large}#search-results>.sr-items .sr-item>.item-href{color:#093;font-size:small}#search-results>.sr-items .sr-item>.item-brief{font-size:small}body[data-yaml-mime=ManagedReference] article h1[data-uid],body[data-yaml-mime=ManagedReference] article [data-uid].h1{position:relative;padding-right:1.6rem}body[data-yaml-mime=ManagedReference] article h3[data-uid],body[data-yaml-mime=ManagedReference] article [data-uid].h3{position:relative;font-weight:400;margin-top:3rem;padding-bottom:5px;padding-right:1.6rem}body[data-yaml-mime=ManagedReference] article h2.section,body[data-yaml-mime=ManagedReference] article .section.h2{margin-top:3rem}body[data-yaml-mime=ManagedReference] article h2.section+h3[data-uid],body[data-yaml-mime=ManagedReference] article .section.h2+h3[data-uid],body[data-yaml-mime=ManagedReference] article h2.section+[data-uid].h3,body[data-yaml-mime=ManagedReference] article .section.h2+[data-uid].h3,body[data-yaml-mime=ManagedReference] article h2.section+a+h3[data-uid],body[data-yaml-mime=ManagedReference] article .section.h2+a+h3[data-uid],body[data-yaml-mime=ManagedReference] article h2.section+a+[data-uid].h3,body[data-yaml-mime=ManagedReference] article .section.h2+a+[data-uid].h3{margin-top:1rem}body[data-yaml-mime=ManagedReference] article h4.section,body[data-yaml-mime=ManagedReference] article .section.h4{font-weight:300;margin-top:1.6rem}body[data-yaml-mime=ManagedReference] article dl>dt{font-weight:400}body[data-yaml-mime=ManagedReference] article dl>dd{margin-left:1rem}body[data-yaml-mime=ManagedReference] article dl.typelist>dt{font-weight:600}body[data-yaml-mime=ManagedReference] article dl.typelist>dd{margin-left:0}body[data-yaml-mime=ManagedReference] article dl.typelist>dd>div{display:inline-block}body[data-yaml-mime=ManagedReference] article dl.typelist>dd>div:not(:last-child):after{content:", "}body[data-yaml-mime=ManagedReference] article dl.typelist.inheritance>dd>div:not(:last-child):after{font-family:bootstrap-icons;content:"\f12c";position:relative;top:.2em;opacity:.8}body[data-yaml-mime=ManagedReference] article dl.parameters>dt>code{margin-right:.2em}body[data-yaml-mime=ManagedReference] article div.facts{font-size:14px;margin:2rem 0 1rem}body[data-yaml-mime=ManagedReference] article div.facts>dl{margin:0}body[data-yaml-mime=ManagedReference] article div.facts>dl>dd{margin-left:.25rem;display:inline-block}body[data-yaml-mime=ManagedReference] article div.facts>dl>dt{display:inline-block}body[data-yaml-mime=ManagedReference] article div.facts>dl>dt:after{content:":"}body[data-yaml-mime=ManagedReference] article .header-action{position:absolute;right:0;bottom:.2rem;font-size:1.2rem}body[data-yaml-mime=ManagedReference] article td.term{font-weight:600}body[data-yaml-mime=ManagedReference] article summary{display:block;cursor:inherit}body[data-yaml-mime=ManagedReference] article li>span.term{font-weight:600}body[data-yaml-mime=ManagedReference] article li>span.term:after{content:"-";margin:0 .5em} +/*! + * Bootstrap v5.3.0-alpha3 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +/*! + Theme: GitHub + Description: Light theme as seen on github.com + Author: github.com + Maintainer: @Hirse + Updated: 2021-05-15 + + Outdated base version: https://github.com/primer/github-syntax-light + Current colors taken from GitHub's CSS +*/ +/*! Bundled license information: + +bootstrap-icons/font/bootstrap-icons.scss: + (*! + * Bootstrap Icons (https://icons.getbootstrap.com/) + * Copyright 2019-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE.md) + *) +*/ +/*# sourceMappingURL=docfx.min.css.map */ diff --git a/styles/docfx.min.css.map b/styles/docfx.min.css.map new file mode 100644 index 00000000..396b9171 --- /dev/null +++ b/styles/docfx.min.css.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../node_modules/bootstrap-icons/font/bootstrap-icons.scss", "../src/docfx.scss", "../../node_modules/bootstrap/scss/mixins/_banner.scss", "../../node_modules/bootstrap/scss/_root.scss", "../../node_modules/bootstrap/scss/vendor/_rfs.scss", "../../node_modules/bootstrap/scss/mixins/_color-mode.scss", "../../node_modules/bootstrap/scss/_reboot.scss", "../../node_modules/bootstrap/scss/_variables.scss", "../../node_modules/bootstrap/scss/mixins/_border-radius.scss", "../../node_modules/bootstrap/scss/_type.scss", "../../node_modules/bootstrap/scss/mixins/_lists.scss", "../../node_modules/bootstrap/scss/_images.scss", "../../node_modules/bootstrap/scss/mixins/_image.scss", "../../node_modules/bootstrap/scss/_containers.scss", "../../node_modules/bootstrap/scss/mixins/_container.scss", "../../node_modules/bootstrap/scss/mixins/_breakpoints.scss", "../../node_modules/bootstrap/scss/_grid.scss", "../../node_modules/bootstrap/scss/mixins/_grid.scss", "../../node_modules/bootstrap/scss/_tables.scss", "../../node_modules/bootstrap/scss/mixins/_table-variants.scss", "../../node_modules/bootstrap/scss/forms/_labels.scss", "../../node_modules/bootstrap/scss/forms/_form-text.scss", "../../node_modules/bootstrap/scss/forms/_form-control.scss", "../../node_modules/bootstrap/scss/mixins/_transition.scss", "../../node_modules/bootstrap/scss/mixins/_gradients.scss", "../../node_modules/bootstrap/scss/forms/_form-select.scss", "../../node_modules/bootstrap/scss/forms/_form-check.scss", "../../node_modules/bootstrap/scss/forms/_form-range.scss", "../../node_modules/bootstrap/scss/forms/_floating-labels.scss", "../../node_modules/bootstrap/scss/forms/_input-group.scss", "../../node_modules/bootstrap/scss/mixins/_forms.scss", "../../node_modules/bootstrap/scss/_buttons.scss", "../../node_modules/bootstrap/scss/mixins/_buttons.scss", "../../node_modules/bootstrap/scss/_transitions.scss", "../../node_modules/bootstrap/scss/_dropdown.scss", "../../node_modules/bootstrap/scss/mixins/_caret.scss", "../../node_modules/bootstrap/scss/_button-group.scss", "../../node_modules/bootstrap/scss/_nav.scss", "../../node_modules/bootstrap/scss/_navbar.scss", "../../node_modules/bootstrap/scss/_card.scss", "../../node_modules/bootstrap/scss/_accordion.scss", "../../node_modules/bootstrap/scss/_breadcrumb.scss", "../../node_modules/bootstrap/scss/_pagination.scss", "../../node_modules/bootstrap/scss/mixins/_pagination.scss", "../../node_modules/bootstrap/scss/_badge.scss", "../../node_modules/bootstrap/scss/_alert.scss", "../../node_modules/bootstrap/scss/_progress.scss", "../../node_modules/bootstrap/scss/_list-group.scss", "../../node_modules/bootstrap/scss/_close.scss", "../../node_modules/bootstrap/scss/_toasts.scss", "../../node_modules/bootstrap/scss/_modal.scss", "../../node_modules/bootstrap/scss/mixins/_backdrop.scss", "../../node_modules/bootstrap/scss/_tooltip.scss", "../../node_modules/bootstrap/scss/mixins/_reset-text.scss", "../../node_modules/bootstrap/scss/_popover.scss", "../../node_modules/bootstrap/scss/_carousel.scss", "../../node_modules/bootstrap/scss/mixins/_clearfix.scss", "../../node_modules/bootstrap/scss/_spinners.scss", "../../node_modules/bootstrap/scss/_offcanvas.scss", "../../node_modules/bootstrap/scss/_placeholders.scss", "../../node_modules/bootstrap/scss/helpers/_color-bg.scss", "../../node_modules/bootstrap/scss/helpers/_colored-links.scss", "../../node_modules/bootstrap/scss/helpers/_focus-ring.scss", "../../node_modules/bootstrap/scss/helpers/_icon-link.scss", "../../node_modules/bootstrap/scss/helpers/_ratio.scss", "../../node_modules/bootstrap/scss/helpers/_position.scss", "../../node_modules/bootstrap/scss/helpers/_stacks.scss", "../../node_modules/bootstrap/scss/helpers/_visually-hidden.scss", "../../node_modules/bootstrap/scss/mixins/_visually-hidden.scss", "../../node_modules/bootstrap/scss/helpers/_stretched-link.scss", "../../node_modules/bootstrap/scss/helpers/_text-truncation.scss", "../../node_modules/bootstrap/scss/mixins/_text-truncate.scss", "../../node_modules/bootstrap/scss/helpers/_vr.scss", "../../node_modules/bootstrap/scss/mixins/_utilities.scss", "../../node_modules/bootstrap/scss/utilities/_api.scss", "../../node_modules/highlight.js/scss/github.scss", "../../node_modules/highlight.js/scss/github-dark.scss", "../src/highlight.scss", "../src/layout.scss", "../src/nav.scss", "../src/toc.scss", "../src/markdown.scss", "../src/search.scss", "../src/dotnet.scss"], + "sourcesContent": ["/*!\n * Bootstrap Icons (https://icons.getbootstrap.com/)\n * Copyright 2019-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE.md)\n */\n\n$bootstrap-icons-font: \"bootstrap-icons\" !default;\n$bootstrap-icons-font-dir: \"./fonts\" !default;\n$bootstrap-icons-font-file: \"#{$bootstrap-icons-font-dir}/#{$bootstrap-icons-font}\" !default;\n$bootstrap-icons-font-hash: \"24e3eb84d0bcaf83d77f904c78ac1f47\" !default;\n$bootstrap-icons-font-src: url(\"#{$bootstrap-icons-font-file}.woff2?#{$bootstrap-icons-font-hash}\") format(\"woff2\"),\n url(\"#{$bootstrap-icons-font-file}.woff?#{$bootstrap-icons-font-hash}\") format(\"woff\") !default;\n\n@font-face {\n font-display: block;\n font-family: $bootstrap-icons-font;\n src: $bootstrap-icons-font-src;\n}\n\n.bi::before,\n[class^=\"bi-\"]::before,\n[class*=\" bi-\"]::before {\n display: inline-block;\n font-family: $bootstrap-icons-font !important;\n font-style: normal;\n font-weight: normal !important;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n vertical-align: -.125em;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n$bootstrap-icons-map: (\n \"123\": \"\\f67f\",\n \"alarm-fill\": \"\\f101\",\n \"alarm\": \"\\f102\",\n \"align-bottom\": \"\\f103\",\n \"align-center\": \"\\f104\",\n \"align-end\": \"\\f105\",\n \"align-middle\": \"\\f106\",\n \"align-start\": \"\\f107\",\n \"align-top\": \"\\f108\",\n \"alt\": \"\\f109\",\n \"app-indicator\": \"\\f10a\",\n \"app\": \"\\f10b\",\n \"archive-fill\": \"\\f10c\",\n \"archive\": \"\\f10d\",\n \"arrow-90deg-down\": \"\\f10e\",\n \"arrow-90deg-left\": \"\\f10f\",\n \"arrow-90deg-right\": \"\\f110\",\n \"arrow-90deg-up\": \"\\f111\",\n \"arrow-bar-down\": \"\\f112\",\n \"arrow-bar-left\": \"\\f113\",\n \"arrow-bar-right\": \"\\f114\",\n \"arrow-bar-up\": \"\\f115\",\n \"arrow-clockwise\": \"\\f116\",\n \"arrow-counterclockwise\": \"\\f117\",\n \"arrow-down-circle-fill\": \"\\f118\",\n \"arrow-down-circle\": \"\\f119\",\n \"arrow-down-left-circle-fill\": \"\\f11a\",\n \"arrow-down-left-circle\": \"\\f11b\",\n \"arrow-down-left-square-fill\": \"\\f11c\",\n \"arrow-down-left-square\": \"\\f11d\",\n \"arrow-down-left\": \"\\f11e\",\n \"arrow-down-right-circle-fill\": \"\\f11f\",\n \"arrow-down-right-circle\": \"\\f120\",\n \"arrow-down-right-square-fill\": \"\\f121\",\n \"arrow-down-right-square\": \"\\f122\",\n \"arrow-down-right\": \"\\f123\",\n \"arrow-down-short\": \"\\f124\",\n \"arrow-down-square-fill\": \"\\f125\",\n \"arrow-down-square\": \"\\f126\",\n \"arrow-down-up\": \"\\f127\",\n \"arrow-down\": \"\\f128\",\n \"arrow-left-circle-fill\": \"\\f129\",\n \"arrow-left-circle\": \"\\f12a\",\n \"arrow-left-right\": \"\\f12b\",\n \"arrow-left-short\": \"\\f12c\",\n \"arrow-left-square-fill\": \"\\f12d\",\n \"arrow-left-square\": \"\\f12e\",\n \"arrow-left\": \"\\f12f\",\n \"arrow-repeat\": \"\\f130\",\n \"arrow-return-left\": \"\\f131\",\n \"arrow-return-right\": \"\\f132\",\n \"arrow-right-circle-fill\": \"\\f133\",\n \"arrow-right-circle\": \"\\f134\",\n \"arrow-right-short\": \"\\f135\",\n \"arrow-right-square-fill\": \"\\f136\",\n \"arrow-right-square\": \"\\f137\",\n \"arrow-right\": \"\\f138\",\n \"arrow-up-circle-fill\": \"\\f139\",\n \"arrow-up-circle\": \"\\f13a\",\n \"arrow-up-left-circle-fill\": \"\\f13b\",\n \"arrow-up-left-circle\": \"\\f13c\",\n \"arrow-up-left-square-fill\": \"\\f13d\",\n \"arrow-up-left-square\": \"\\f13e\",\n \"arrow-up-left\": \"\\f13f\",\n \"arrow-up-right-circle-fill\": \"\\f140\",\n \"arrow-up-right-circle\": \"\\f141\",\n \"arrow-up-right-square-fill\": \"\\f142\",\n \"arrow-up-right-square\": \"\\f143\",\n \"arrow-up-right\": \"\\f144\",\n \"arrow-up-short\": \"\\f145\",\n \"arrow-up-square-fill\": \"\\f146\",\n \"arrow-up-square\": \"\\f147\",\n \"arrow-up\": \"\\f148\",\n \"arrows-angle-contract\": \"\\f149\",\n \"arrows-angle-expand\": \"\\f14a\",\n \"arrows-collapse\": \"\\f14b\",\n \"arrows-expand\": \"\\f14c\",\n \"arrows-fullscreen\": \"\\f14d\",\n \"arrows-move\": \"\\f14e\",\n \"aspect-ratio-fill\": \"\\f14f\",\n \"aspect-ratio\": \"\\f150\",\n \"asterisk\": \"\\f151\",\n \"at\": \"\\f152\",\n \"award-fill\": \"\\f153\",\n \"award\": \"\\f154\",\n \"back\": \"\\f155\",\n \"backspace-fill\": \"\\f156\",\n \"backspace-reverse-fill\": \"\\f157\",\n \"backspace-reverse\": \"\\f158\",\n \"backspace\": \"\\f159\",\n \"badge-3d-fill\": \"\\f15a\",\n \"badge-3d\": \"\\f15b\",\n \"badge-4k-fill\": \"\\f15c\",\n \"badge-4k\": \"\\f15d\",\n \"badge-8k-fill\": \"\\f15e\",\n \"badge-8k\": \"\\f15f\",\n \"badge-ad-fill\": \"\\f160\",\n \"badge-ad\": \"\\f161\",\n \"badge-ar-fill\": \"\\f162\",\n \"badge-ar\": \"\\f163\",\n \"badge-cc-fill\": \"\\f164\",\n \"badge-cc\": \"\\f165\",\n \"badge-hd-fill\": \"\\f166\",\n \"badge-hd\": \"\\f167\",\n \"badge-tm-fill\": \"\\f168\",\n \"badge-tm\": \"\\f169\",\n \"badge-vo-fill\": \"\\f16a\",\n \"badge-vo\": \"\\f16b\",\n \"badge-vr-fill\": \"\\f16c\",\n \"badge-vr\": \"\\f16d\",\n \"badge-wc-fill\": \"\\f16e\",\n \"badge-wc\": \"\\f16f\",\n \"bag-check-fill\": \"\\f170\",\n \"bag-check\": \"\\f171\",\n \"bag-dash-fill\": \"\\f172\",\n \"bag-dash\": \"\\f173\",\n \"bag-fill\": \"\\f174\",\n \"bag-plus-fill\": \"\\f175\",\n \"bag-plus\": \"\\f176\",\n \"bag-x-fill\": \"\\f177\",\n \"bag-x\": \"\\f178\",\n \"bag\": \"\\f179\",\n \"bar-chart-fill\": \"\\f17a\",\n \"bar-chart-line-fill\": \"\\f17b\",\n \"bar-chart-line\": \"\\f17c\",\n \"bar-chart-steps\": \"\\f17d\",\n \"bar-chart\": \"\\f17e\",\n \"basket-fill\": \"\\f17f\",\n \"basket\": \"\\f180\",\n \"basket2-fill\": \"\\f181\",\n \"basket2\": \"\\f182\",\n \"basket3-fill\": \"\\f183\",\n \"basket3\": \"\\f184\",\n \"battery-charging\": \"\\f185\",\n \"battery-full\": \"\\f186\",\n \"battery-half\": \"\\f187\",\n \"battery\": \"\\f188\",\n \"bell-fill\": \"\\f189\",\n \"bell\": \"\\f18a\",\n \"bezier\": \"\\f18b\",\n \"bezier2\": \"\\f18c\",\n \"bicycle\": \"\\f18d\",\n \"binoculars-fill\": \"\\f18e\",\n \"binoculars\": \"\\f18f\",\n \"blockquote-left\": \"\\f190\",\n \"blockquote-right\": \"\\f191\",\n \"book-fill\": \"\\f192\",\n \"book-half\": \"\\f193\",\n \"book\": \"\\f194\",\n \"bookmark-check-fill\": \"\\f195\",\n \"bookmark-check\": \"\\f196\",\n \"bookmark-dash-fill\": \"\\f197\",\n \"bookmark-dash\": \"\\f198\",\n \"bookmark-fill\": \"\\f199\",\n \"bookmark-heart-fill\": \"\\f19a\",\n \"bookmark-heart\": \"\\f19b\",\n \"bookmark-plus-fill\": \"\\f19c\",\n \"bookmark-plus\": \"\\f19d\",\n \"bookmark-star-fill\": \"\\f19e\",\n \"bookmark-star\": \"\\f19f\",\n \"bookmark-x-fill\": \"\\f1a0\",\n \"bookmark-x\": \"\\f1a1\",\n \"bookmark\": \"\\f1a2\",\n \"bookmarks-fill\": \"\\f1a3\",\n \"bookmarks\": \"\\f1a4\",\n \"bookshelf\": \"\\f1a5\",\n \"bootstrap-fill\": \"\\f1a6\",\n \"bootstrap-reboot\": \"\\f1a7\",\n \"bootstrap\": \"\\f1a8\",\n \"border-all\": \"\\f1a9\",\n \"border-bottom\": \"\\f1aa\",\n \"border-center\": \"\\f1ab\",\n \"border-inner\": \"\\f1ac\",\n \"border-left\": \"\\f1ad\",\n \"border-middle\": \"\\f1ae\",\n \"border-outer\": \"\\f1af\",\n \"border-right\": \"\\f1b0\",\n \"border-style\": \"\\f1b1\",\n \"border-top\": \"\\f1b2\",\n \"border-width\": \"\\f1b3\",\n \"border\": \"\\f1b4\",\n \"bounding-box-circles\": \"\\f1b5\",\n \"bounding-box\": \"\\f1b6\",\n \"box-arrow-down-left\": \"\\f1b7\",\n \"box-arrow-down-right\": \"\\f1b8\",\n \"box-arrow-down\": \"\\f1b9\",\n \"box-arrow-in-down-left\": \"\\f1ba\",\n \"box-arrow-in-down-right\": \"\\f1bb\",\n \"box-arrow-in-down\": \"\\f1bc\",\n \"box-arrow-in-left\": \"\\f1bd\",\n \"box-arrow-in-right\": \"\\f1be\",\n \"box-arrow-in-up-left\": \"\\f1bf\",\n \"box-arrow-in-up-right\": \"\\f1c0\",\n \"box-arrow-in-up\": \"\\f1c1\",\n \"box-arrow-left\": \"\\f1c2\",\n \"box-arrow-right\": \"\\f1c3\",\n \"box-arrow-up-left\": \"\\f1c4\",\n \"box-arrow-up-right\": \"\\f1c5\",\n \"box-arrow-up\": \"\\f1c6\",\n \"box-seam\": \"\\f1c7\",\n \"box\": \"\\f1c8\",\n \"braces\": \"\\f1c9\",\n \"bricks\": \"\\f1ca\",\n \"briefcase-fill\": \"\\f1cb\",\n \"briefcase\": \"\\f1cc\",\n \"brightness-alt-high-fill\": \"\\f1cd\",\n \"brightness-alt-high\": \"\\f1ce\",\n \"brightness-alt-low-fill\": \"\\f1cf\",\n \"brightness-alt-low\": \"\\f1d0\",\n \"brightness-high-fill\": \"\\f1d1\",\n \"brightness-high\": \"\\f1d2\",\n \"brightness-low-fill\": \"\\f1d3\",\n \"brightness-low\": \"\\f1d4\",\n \"broadcast-pin\": \"\\f1d5\",\n \"broadcast\": \"\\f1d6\",\n \"brush-fill\": \"\\f1d7\",\n \"brush\": \"\\f1d8\",\n \"bucket-fill\": \"\\f1d9\",\n \"bucket\": \"\\f1da\",\n \"bug-fill\": \"\\f1db\",\n \"bug\": \"\\f1dc\",\n \"building\": \"\\f1dd\",\n \"bullseye\": \"\\f1de\",\n \"calculator-fill\": \"\\f1df\",\n \"calculator\": \"\\f1e0\",\n \"calendar-check-fill\": \"\\f1e1\",\n \"calendar-check\": \"\\f1e2\",\n \"calendar-date-fill\": \"\\f1e3\",\n \"calendar-date\": \"\\f1e4\",\n \"calendar-day-fill\": \"\\f1e5\",\n \"calendar-day\": \"\\f1e6\",\n \"calendar-event-fill\": \"\\f1e7\",\n \"calendar-event\": \"\\f1e8\",\n \"calendar-fill\": \"\\f1e9\",\n \"calendar-minus-fill\": \"\\f1ea\",\n \"calendar-minus\": \"\\f1eb\",\n \"calendar-month-fill\": \"\\f1ec\",\n \"calendar-month\": \"\\f1ed\",\n \"calendar-plus-fill\": \"\\f1ee\",\n \"calendar-plus\": \"\\f1ef\",\n \"calendar-range-fill\": \"\\f1f0\",\n \"calendar-range\": \"\\f1f1\",\n \"calendar-week-fill\": \"\\f1f2\",\n \"calendar-week\": \"\\f1f3\",\n \"calendar-x-fill\": \"\\f1f4\",\n \"calendar-x\": \"\\f1f5\",\n \"calendar\": \"\\f1f6\",\n \"calendar2-check-fill\": \"\\f1f7\",\n \"calendar2-check\": \"\\f1f8\",\n \"calendar2-date-fill\": \"\\f1f9\",\n \"calendar2-date\": \"\\f1fa\",\n \"calendar2-day-fill\": \"\\f1fb\",\n \"calendar2-day\": \"\\f1fc\",\n \"calendar2-event-fill\": \"\\f1fd\",\n \"calendar2-event\": \"\\f1fe\",\n \"calendar2-fill\": \"\\f1ff\",\n \"calendar2-minus-fill\": \"\\f200\",\n \"calendar2-minus\": \"\\f201\",\n \"calendar2-month-fill\": \"\\f202\",\n \"calendar2-month\": \"\\f203\",\n \"calendar2-plus-fill\": \"\\f204\",\n \"calendar2-plus\": \"\\f205\",\n \"calendar2-range-fill\": \"\\f206\",\n \"calendar2-range\": \"\\f207\",\n \"calendar2-week-fill\": \"\\f208\",\n \"calendar2-week\": \"\\f209\",\n \"calendar2-x-fill\": \"\\f20a\",\n \"calendar2-x\": \"\\f20b\",\n \"calendar2\": \"\\f20c\",\n \"calendar3-event-fill\": \"\\f20d\",\n \"calendar3-event\": \"\\f20e\",\n \"calendar3-fill\": \"\\f20f\",\n \"calendar3-range-fill\": \"\\f210\",\n \"calendar3-range\": \"\\f211\",\n \"calendar3-week-fill\": \"\\f212\",\n \"calendar3-week\": \"\\f213\",\n \"calendar3\": \"\\f214\",\n \"calendar4-event\": \"\\f215\",\n \"calendar4-range\": \"\\f216\",\n \"calendar4-week\": \"\\f217\",\n \"calendar4\": \"\\f218\",\n \"camera-fill\": \"\\f219\",\n \"camera-reels-fill\": \"\\f21a\",\n \"camera-reels\": \"\\f21b\",\n \"camera-video-fill\": \"\\f21c\",\n \"camera-video-off-fill\": \"\\f21d\",\n \"camera-video-off\": \"\\f21e\",\n \"camera-video\": \"\\f21f\",\n \"camera\": \"\\f220\",\n \"camera2\": \"\\f221\",\n \"capslock-fill\": \"\\f222\",\n \"capslock\": \"\\f223\",\n \"card-checklist\": \"\\f224\",\n \"card-heading\": \"\\f225\",\n \"card-image\": \"\\f226\",\n \"card-list\": \"\\f227\",\n \"card-text\": \"\\f228\",\n \"caret-down-fill\": \"\\f229\",\n \"caret-down-square-fill\": \"\\f22a\",\n \"caret-down-square\": \"\\f22b\",\n \"caret-down\": \"\\f22c\",\n \"caret-left-fill\": \"\\f22d\",\n \"caret-left-square-fill\": \"\\f22e\",\n \"caret-left-square\": \"\\f22f\",\n \"caret-left\": \"\\f230\",\n \"caret-right-fill\": \"\\f231\",\n \"caret-right-square-fill\": \"\\f232\",\n \"caret-right-square\": \"\\f233\",\n \"caret-right\": \"\\f234\",\n \"caret-up-fill\": \"\\f235\",\n \"caret-up-square-fill\": \"\\f236\",\n \"caret-up-square\": \"\\f237\",\n \"caret-up\": \"\\f238\",\n \"cart-check-fill\": \"\\f239\",\n \"cart-check\": \"\\f23a\",\n \"cart-dash-fill\": \"\\f23b\",\n \"cart-dash\": \"\\f23c\",\n \"cart-fill\": \"\\f23d\",\n \"cart-plus-fill\": \"\\f23e\",\n \"cart-plus\": \"\\f23f\",\n \"cart-x-fill\": \"\\f240\",\n \"cart-x\": \"\\f241\",\n \"cart\": \"\\f242\",\n \"cart2\": \"\\f243\",\n \"cart3\": \"\\f244\",\n \"cart4\": \"\\f245\",\n \"cash-stack\": \"\\f246\",\n \"cash\": \"\\f247\",\n \"cast\": \"\\f248\",\n \"chat-dots-fill\": \"\\f249\",\n \"chat-dots\": \"\\f24a\",\n \"chat-fill\": \"\\f24b\",\n \"chat-left-dots-fill\": \"\\f24c\",\n \"chat-left-dots\": \"\\f24d\",\n \"chat-left-fill\": \"\\f24e\",\n \"chat-left-quote-fill\": \"\\f24f\",\n \"chat-left-quote\": \"\\f250\",\n \"chat-left-text-fill\": \"\\f251\",\n \"chat-left-text\": \"\\f252\",\n \"chat-left\": \"\\f253\",\n \"chat-quote-fill\": \"\\f254\",\n \"chat-quote\": \"\\f255\",\n \"chat-right-dots-fill\": \"\\f256\",\n \"chat-right-dots\": \"\\f257\",\n \"chat-right-fill\": \"\\f258\",\n \"chat-right-quote-fill\": \"\\f259\",\n \"chat-right-quote\": \"\\f25a\",\n \"chat-right-text-fill\": \"\\f25b\",\n \"chat-right-text\": \"\\f25c\",\n \"chat-right\": \"\\f25d\",\n \"chat-square-dots-fill\": \"\\f25e\",\n \"chat-square-dots\": \"\\f25f\",\n \"chat-square-fill\": \"\\f260\",\n \"chat-square-quote-fill\": \"\\f261\",\n \"chat-square-quote\": \"\\f262\",\n \"chat-square-text-fill\": \"\\f263\",\n \"chat-square-text\": \"\\f264\",\n \"chat-square\": \"\\f265\",\n \"chat-text-fill\": \"\\f266\",\n \"chat-text\": \"\\f267\",\n \"chat\": \"\\f268\",\n \"check-all\": \"\\f269\",\n \"check-circle-fill\": \"\\f26a\",\n \"check-circle\": \"\\f26b\",\n \"check-square-fill\": \"\\f26c\",\n \"check-square\": \"\\f26d\",\n \"check\": \"\\f26e\",\n \"check2-all\": \"\\f26f\",\n \"check2-circle\": \"\\f270\",\n \"check2-square\": \"\\f271\",\n \"check2\": \"\\f272\",\n \"chevron-bar-contract\": \"\\f273\",\n \"chevron-bar-down\": \"\\f274\",\n \"chevron-bar-expand\": \"\\f275\",\n \"chevron-bar-left\": \"\\f276\",\n \"chevron-bar-right\": \"\\f277\",\n \"chevron-bar-up\": \"\\f278\",\n \"chevron-compact-down\": \"\\f279\",\n \"chevron-compact-left\": \"\\f27a\",\n \"chevron-compact-right\": \"\\f27b\",\n \"chevron-compact-up\": \"\\f27c\",\n \"chevron-contract\": \"\\f27d\",\n \"chevron-double-down\": \"\\f27e\",\n \"chevron-double-left\": \"\\f27f\",\n \"chevron-double-right\": \"\\f280\",\n \"chevron-double-up\": \"\\f281\",\n \"chevron-down\": \"\\f282\",\n \"chevron-expand\": \"\\f283\",\n \"chevron-left\": \"\\f284\",\n \"chevron-right\": \"\\f285\",\n \"chevron-up\": \"\\f286\",\n \"circle-fill\": \"\\f287\",\n \"circle-half\": \"\\f288\",\n \"circle-square\": \"\\f289\",\n \"circle\": \"\\f28a\",\n \"clipboard-check\": \"\\f28b\",\n \"clipboard-data\": \"\\f28c\",\n \"clipboard-minus\": \"\\f28d\",\n \"clipboard-plus\": \"\\f28e\",\n \"clipboard-x\": \"\\f28f\",\n \"clipboard\": \"\\f290\",\n \"clock-fill\": \"\\f291\",\n \"clock-history\": \"\\f292\",\n \"clock\": \"\\f293\",\n \"cloud-arrow-down-fill\": \"\\f294\",\n \"cloud-arrow-down\": \"\\f295\",\n \"cloud-arrow-up-fill\": \"\\f296\",\n \"cloud-arrow-up\": \"\\f297\",\n \"cloud-check-fill\": \"\\f298\",\n \"cloud-check\": \"\\f299\",\n \"cloud-download-fill\": \"\\f29a\",\n \"cloud-download\": \"\\f29b\",\n \"cloud-drizzle-fill\": \"\\f29c\",\n \"cloud-drizzle\": \"\\f29d\",\n \"cloud-fill\": \"\\f29e\",\n \"cloud-fog-fill\": \"\\f29f\",\n \"cloud-fog\": \"\\f2a0\",\n \"cloud-fog2-fill\": \"\\f2a1\",\n \"cloud-fog2\": \"\\f2a2\",\n \"cloud-hail-fill\": \"\\f2a3\",\n \"cloud-hail\": \"\\f2a4\",\n \"cloud-haze-fill\": \"\\f2a6\",\n \"cloud-haze\": \"\\f2a7\",\n \"cloud-haze2-fill\": \"\\f2a8\",\n \"cloud-lightning-fill\": \"\\f2a9\",\n \"cloud-lightning-rain-fill\": \"\\f2aa\",\n \"cloud-lightning-rain\": \"\\f2ab\",\n \"cloud-lightning\": \"\\f2ac\",\n \"cloud-minus-fill\": \"\\f2ad\",\n \"cloud-minus\": \"\\f2ae\",\n \"cloud-moon-fill\": \"\\f2af\",\n \"cloud-moon\": \"\\f2b0\",\n \"cloud-plus-fill\": \"\\f2b1\",\n \"cloud-plus\": \"\\f2b2\",\n \"cloud-rain-fill\": \"\\f2b3\",\n \"cloud-rain-heavy-fill\": \"\\f2b4\",\n \"cloud-rain-heavy\": \"\\f2b5\",\n \"cloud-rain\": \"\\f2b6\",\n \"cloud-slash-fill\": \"\\f2b7\",\n \"cloud-slash\": \"\\f2b8\",\n \"cloud-sleet-fill\": \"\\f2b9\",\n \"cloud-sleet\": \"\\f2ba\",\n \"cloud-snow-fill\": \"\\f2bb\",\n \"cloud-snow\": \"\\f2bc\",\n \"cloud-sun-fill\": \"\\f2bd\",\n \"cloud-sun\": \"\\f2be\",\n \"cloud-upload-fill\": \"\\f2bf\",\n \"cloud-upload\": \"\\f2c0\",\n \"cloud\": \"\\f2c1\",\n \"clouds-fill\": \"\\f2c2\",\n \"clouds\": \"\\f2c3\",\n \"cloudy-fill\": \"\\f2c4\",\n \"cloudy\": \"\\f2c5\",\n \"code-slash\": \"\\f2c6\",\n \"code-square\": \"\\f2c7\",\n \"code\": \"\\f2c8\",\n \"collection-fill\": \"\\f2c9\",\n \"collection-play-fill\": \"\\f2ca\",\n \"collection-play\": \"\\f2cb\",\n \"collection\": \"\\f2cc\",\n \"columns-gap\": \"\\f2cd\",\n \"columns\": \"\\f2ce\",\n \"command\": \"\\f2cf\",\n \"compass-fill\": \"\\f2d0\",\n \"compass\": \"\\f2d1\",\n \"cone-striped\": \"\\f2d2\",\n \"cone\": \"\\f2d3\",\n \"controller\": \"\\f2d4\",\n \"cpu-fill\": \"\\f2d5\",\n \"cpu\": \"\\f2d6\",\n \"credit-card-2-back-fill\": \"\\f2d7\",\n \"credit-card-2-back\": \"\\f2d8\",\n \"credit-card-2-front-fill\": \"\\f2d9\",\n \"credit-card-2-front\": \"\\f2da\",\n \"credit-card-fill\": \"\\f2db\",\n \"credit-card\": \"\\f2dc\",\n \"crop\": \"\\f2dd\",\n \"cup-fill\": \"\\f2de\",\n \"cup-straw\": \"\\f2df\",\n \"cup\": \"\\f2e0\",\n \"cursor-fill\": \"\\f2e1\",\n \"cursor-text\": \"\\f2e2\",\n \"cursor\": \"\\f2e3\",\n \"dash-circle-dotted\": \"\\f2e4\",\n \"dash-circle-fill\": \"\\f2e5\",\n \"dash-circle\": \"\\f2e6\",\n \"dash-square-dotted\": \"\\f2e7\",\n \"dash-square-fill\": \"\\f2e8\",\n \"dash-square\": \"\\f2e9\",\n \"dash\": \"\\f2ea\",\n \"diagram-2-fill\": \"\\f2eb\",\n \"diagram-2\": \"\\f2ec\",\n \"diagram-3-fill\": \"\\f2ed\",\n \"diagram-3\": \"\\f2ee\",\n \"diamond-fill\": \"\\f2ef\",\n \"diamond-half\": \"\\f2f0\",\n \"diamond\": \"\\f2f1\",\n \"dice-1-fill\": \"\\f2f2\",\n \"dice-1\": \"\\f2f3\",\n \"dice-2-fill\": \"\\f2f4\",\n \"dice-2\": \"\\f2f5\",\n \"dice-3-fill\": \"\\f2f6\",\n \"dice-3\": \"\\f2f7\",\n \"dice-4-fill\": \"\\f2f8\",\n \"dice-4\": \"\\f2f9\",\n \"dice-5-fill\": \"\\f2fa\",\n \"dice-5\": \"\\f2fb\",\n \"dice-6-fill\": \"\\f2fc\",\n \"dice-6\": \"\\f2fd\",\n \"disc-fill\": \"\\f2fe\",\n \"disc\": \"\\f2ff\",\n \"discord\": \"\\f300\",\n \"display-fill\": \"\\f301\",\n \"display\": \"\\f302\",\n \"distribute-horizontal\": \"\\f303\",\n \"distribute-vertical\": \"\\f304\",\n \"door-closed-fill\": \"\\f305\",\n \"door-closed\": \"\\f306\",\n \"door-open-fill\": \"\\f307\",\n \"door-open\": \"\\f308\",\n \"dot\": \"\\f309\",\n \"download\": \"\\f30a\",\n \"droplet-fill\": \"\\f30b\",\n \"droplet-half\": \"\\f30c\",\n \"droplet\": \"\\f30d\",\n \"earbuds\": \"\\f30e\",\n \"easel-fill\": \"\\f30f\",\n \"easel\": \"\\f310\",\n \"egg-fill\": \"\\f311\",\n \"egg-fried\": \"\\f312\",\n \"egg\": \"\\f313\",\n \"eject-fill\": \"\\f314\",\n \"eject\": \"\\f315\",\n \"emoji-angry-fill\": \"\\f316\",\n \"emoji-angry\": \"\\f317\",\n \"emoji-dizzy-fill\": \"\\f318\",\n \"emoji-dizzy\": \"\\f319\",\n \"emoji-expressionless-fill\": \"\\f31a\",\n \"emoji-expressionless\": \"\\f31b\",\n \"emoji-frown-fill\": \"\\f31c\",\n \"emoji-frown\": \"\\f31d\",\n \"emoji-heart-eyes-fill\": \"\\f31e\",\n \"emoji-heart-eyes\": \"\\f31f\",\n \"emoji-laughing-fill\": \"\\f320\",\n \"emoji-laughing\": \"\\f321\",\n \"emoji-neutral-fill\": \"\\f322\",\n \"emoji-neutral\": \"\\f323\",\n \"emoji-smile-fill\": \"\\f324\",\n \"emoji-smile-upside-down-fill\": \"\\f325\",\n \"emoji-smile-upside-down\": \"\\f326\",\n \"emoji-smile\": \"\\f327\",\n \"emoji-sunglasses-fill\": \"\\f328\",\n \"emoji-sunglasses\": \"\\f329\",\n \"emoji-wink-fill\": \"\\f32a\",\n \"emoji-wink\": \"\\f32b\",\n \"envelope-fill\": \"\\f32c\",\n \"envelope-open-fill\": \"\\f32d\",\n \"envelope-open\": \"\\f32e\",\n \"envelope\": \"\\f32f\",\n \"eraser-fill\": \"\\f330\",\n \"eraser\": \"\\f331\",\n \"exclamation-circle-fill\": \"\\f332\",\n \"exclamation-circle\": \"\\f333\",\n \"exclamation-diamond-fill\": \"\\f334\",\n \"exclamation-diamond\": \"\\f335\",\n \"exclamation-octagon-fill\": \"\\f336\",\n \"exclamation-octagon\": \"\\f337\",\n \"exclamation-square-fill\": \"\\f338\",\n \"exclamation-square\": \"\\f339\",\n \"exclamation-triangle-fill\": \"\\f33a\",\n \"exclamation-triangle\": \"\\f33b\",\n \"exclamation\": \"\\f33c\",\n \"exclude\": \"\\f33d\",\n \"eye-fill\": \"\\f33e\",\n \"eye-slash-fill\": \"\\f33f\",\n \"eye-slash\": \"\\f340\",\n \"eye\": \"\\f341\",\n \"eyedropper\": \"\\f342\",\n \"eyeglasses\": \"\\f343\",\n \"facebook\": \"\\f344\",\n \"file-arrow-down-fill\": \"\\f345\",\n \"file-arrow-down\": \"\\f346\",\n \"file-arrow-up-fill\": \"\\f347\",\n \"file-arrow-up\": \"\\f348\",\n \"file-bar-graph-fill\": \"\\f349\",\n \"file-bar-graph\": \"\\f34a\",\n \"file-binary-fill\": \"\\f34b\",\n \"file-binary\": \"\\f34c\",\n \"file-break-fill\": \"\\f34d\",\n \"file-break\": \"\\f34e\",\n \"file-check-fill\": \"\\f34f\",\n \"file-check\": \"\\f350\",\n \"file-code-fill\": \"\\f351\",\n \"file-code\": \"\\f352\",\n \"file-diff-fill\": \"\\f353\",\n \"file-diff\": \"\\f354\",\n \"file-earmark-arrow-down-fill\": \"\\f355\",\n \"file-earmark-arrow-down\": \"\\f356\",\n \"file-earmark-arrow-up-fill\": \"\\f357\",\n \"file-earmark-arrow-up\": \"\\f358\",\n \"file-earmark-bar-graph-fill\": \"\\f359\",\n \"file-earmark-bar-graph\": \"\\f35a\",\n \"file-earmark-binary-fill\": \"\\f35b\",\n \"file-earmark-binary\": \"\\f35c\",\n \"file-earmark-break-fill\": \"\\f35d\",\n \"file-earmark-break\": \"\\f35e\",\n \"file-earmark-check-fill\": \"\\f35f\",\n \"file-earmark-check\": \"\\f360\",\n \"file-earmark-code-fill\": \"\\f361\",\n \"file-earmark-code\": \"\\f362\",\n \"file-earmark-diff-fill\": \"\\f363\",\n \"file-earmark-diff\": \"\\f364\",\n \"file-earmark-easel-fill\": \"\\f365\",\n \"file-earmark-easel\": \"\\f366\",\n \"file-earmark-excel-fill\": \"\\f367\",\n \"file-earmark-excel\": \"\\f368\",\n \"file-earmark-fill\": \"\\f369\",\n \"file-earmark-font-fill\": \"\\f36a\",\n \"file-earmark-font\": \"\\f36b\",\n \"file-earmark-image-fill\": \"\\f36c\",\n \"file-earmark-image\": \"\\f36d\",\n \"file-earmark-lock-fill\": \"\\f36e\",\n \"file-earmark-lock\": \"\\f36f\",\n \"file-earmark-lock2-fill\": \"\\f370\",\n \"file-earmark-lock2\": \"\\f371\",\n \"file-earmark-medical-fill\": \"\\f372\",\n \"file-earmark-medical\": \"\\f373\",\n \"file-earmark-minus-fill\": \"\\f374\",\n \"file-earmark-minus\": \"\\f375\",\n \"file-earmark-music-fill\": \"\\f376\",\n \"file-earmark-music\": \"\\f377\",\n \"file-earmark-person-fill\": \"\\f378\",\n \"file-earmark-person\": \"\\f379\",\n \"file-earmark-play-fill\": \"\\f37a\",\n \"file-earmark-play\": \"\\f37b\",\n \"file-earmark-plus-fill\": \"\\f37c\",\n \"file-earmark-plus\": \"\\f37d\",\n \"file-earmark-post-fill\": \"\\f37e\",\n \"file-earmark-post\": \"\\f37f\",\n \"file-earmark-ppt-fill\": \"\\f380\",\n \"file-earmark-ppt\": \"\\f381\",\n \"file-earmark-richtext-fill\": \"\\f382\",\n \"file-earmark-richtext\": \"\\f383\",\n \"file-earmark-ruled-fill\": \"\\f384\",\n \"file-earmark-ruled\": \"\\f385\",\n \"file-earmark-slides-fill\": \"\\f386\",\n \"file-earmark-slides\": \"\\f387\",\n \"file-earmark-spreadsheet-fill\": \"\\f388\",\n \"file-earmark-spreadsheet\": \"\\f389\",\n \"file-earmark-text-fill\": \"\\f38a\",\n \"file-earmark-text\": \"\\f38b\",\n \"file-earmark-word-fill\": \"\\f38c\",\n \"file-earmark-word\": \"\\f38d\",\n \"file-earmark-x-fill\": \"\\f38e\",\n \"file-earmark-x\": \"\\f38f\",\n \"file-earmark-zip-fill\": \"\\f390\",\n \"file-earmark-zip\": \"\\f391\",\n \"file-earmark\": \"\\f392\",\n \"file-easel-fill\": \"\\f393\",\n \"file-easel\": \"\\f394\",\n \"file-excel-fill\": \"\\f395\",\n \"file-excel\": \"\\f396\",\n \"file-fill\": \"\\f397\",\n \"file-font-fill\": \"\\f398\",\n \"file-font\": \"\\f399\",\n \"file-image-fill\": \"\\f39a\",\n \"file-image\": \"\\f39b\",\n \"file-lock-fill\": \"\\f39c\",\n \"file-lock\": \"\\f39d\",\n \"file-lock2-fill\": \"\\f39e\",\n \"file-lock2\": \"\\f39f\",\n \"file-medical-fill\": \"\\f3a0\",\n \"file-medical\": \"\\f3a1\",\n \"file-minus-fill\": \"\\f3a2\",\n \"file-minus\": \"\\f3a3\",\n \"file-music-fill\": \"\\f3a4\",\n \"file-music\": \"\\f3a5\",\n \"file-person-fill\": \"\\f3a6\",\n \"file-person\": \"\\f3a7\",\n \"file-play-fill\": \"\\f3a8\",\n \"file-play\": \"\\f3a9\",\n \"file-plus-fill\": \"\\f3aa\",\n \"file-plus\": \"\\f3ab\",\n \"file-post-fill\": \"\\f3ac\",\n \"file-post\": \"\\f3ad\",\n \"file-ppt-fill\": \"\\f3ae\",\n \"file-ppt\": \"\\f3af\",\n \"file-richtext-fill\": \"\\f3b0\",\n \"file-richtext\": \"\\f3b1\",\n \"file-ruled-fill\": \"\\f3b2\",\n \"file-ruled\": \"\\f3b3\",\n \"file-slides-fill\": \"\\f3b4\",\n \"file-slides\": \"\\f3b5\",\n \"file-spreadsheet-fill\": \"\\f3b6\",\n \"file-spreadsheet\": \"\\f3b7\",\n \"file-text-fill\": \"\\f3b8\",\n \"file-text\": \"\\f3b9\",\n \"file-word-fill\": \"\\f3ba\",\n \"file-word\": \"\\f3bb\",\n \"file-x-fill\": \"\\f3bc\",\n \"file-x\": \"\\f3bd\",\n \"file-zip-fill\": \"\\f3be\",\n \"file-zip\": \"\\f3bf\",\n \"file\": \"\\f3c0\",\n \"files-alt\": \"\\f3c1\",\n \"files\": \"\\f3c2\",\n \"film\": \"\\f3c3\",\n \"filter-circle-fill\": \"\\f3c4\",\n \"filter-circle\": \"\\f3c5\",\n \"filter-left\": \"\\f3c6\",\n \"filter-right\": \"\\f3c7\",\n \"filter-square-fill\": \"\\f3c8\",\n \"filter-square\": \"\\f3c9\",\n \"filter\": \"\\f3ca\",\n \"flag-fill\": \"\\f3cb\",\n \"flag\": \"\\f3cc\",\n \"flower1\": \"\\f3cd\",\n \"flower2\": \"\\f3ce\",\n \"flower3\": \"\\f3cf\",\n \"folder-check\": \"\\f3d0\",\n \"folder-fill\": \"\\f3d1\",\n \"folder-minus\": \"\\f3d2\",\n \"folder-plus\": \"\\f3d3\",\n \"folder-symlink-fill\": \"\\f3d4\",\n \"folder-symlink\": \"\\f3d5\",\n \"folder-x\": \"\\f3d6\",\n \"folder\": \"\\f3d7\",\n \"folder2-open\": \"\\f3d8\",\n \"folder2\": \"\\f3d9\",\n \"fonts\": \"\\f3da\",\n \"forward-fill\": \"\\f3db\",\n \"forward\": \"\\f3dc\",\n \"front\": \"\\f3dd\",\n \"fullscreen-exit\": \"\\f3de\",\n \"fullscreen\": \"\\f3df\",\n \"funnel-fill\": \"\\f3e0\",\n \"funnel\": \"\\f3e1\",\n \"gear-fill\": \"\\f3e2\",\n \"gear-wide-connected\": \"\\f3e3\",\n \"gear-wide\": \"\\f3e4\",\n \"gear\": \"\\f3e5\",\n \"gem\": \"\\f3e6\",\n \"geo-alt-fill\": \"\\f3e7\",\n \"geo-alt\": \"\\f3e8\",\n \"geo-fill\": \"\\f3e9\",\n \"geo\": \"\\f3ea\",\n \"gift-fill\": \"\\f3eb\",\n \"gift\": \"\\f3ec\",\n \"github\": \"\\f3ed\",\n \"globe\": \"\\f3ee\",\n \"globe2\": \"\\f3ef\",\n \"google\": \"\\f3f0\",\n \"graph-down\": \"\\f3f1\",\n \"graph-up\": \"\\f3f2\",\n \"grid-1x2-fill\": \"\\f3f3\",\n \"grid-1x2\": \"\\f3f4\",\n \"grid-3x2-gap-fill\": \"\\f3f5\",\n \"grid-3x2-gap\": \"\\f3f6\",\n \"grid-3x2\": \"\\f3f7\",\n \"grid-3x3-gap-fill\": \"\\f3f8\",\n \"grid-3x3-gap\": \"\\f3f9\",\n \"grid-3x3\": \"\\f3fa\",\n \"grid-fill\": \"\\f3fb\",\n \"grid\": \"\\f3fc\",\n \"grip-horizontal\": \"\\f3fd\",\n \"grip-vertical\": \"\\f3fe\",\n \"hammer\": \"\\f3ff\",\n \"hand-index-fill\": \"\\f400\",\n \"hand-index-thumb-fill\": \"\\f401\",\n \"hand-index-thumb\": \"\\f402\",\n \"hand-index\": \"\\f403\",\n \"hand-thumbs-down-fill\": \"\\f404\",\n \"hand-thumbs-down\": \"\\f405\",\n \"hand-thumbs-up-fill\": \"\\f406\",\n \"hand-thumbs-up\": \"\\f407\",\n \"handbag-fill\": \"\\f408\",\n \"handbag\": \"\\f409\",\n \"hash\": \"\\f40a\",\n \"hdd-fill\": \"\\f40b\",\n \"hdd-network-fill\": \"\\f40c\",\n \"hdd-network\": \"\\f40d\",\n \"hdd-rack-fill\": \"\\f40e\",\n \"hdd-rack\": \"\\f40f\",\n \"hdd-stack-fill\": \"\\f410\",\n \"hdd-stack\": \"\\f411\",\n \"hdd\": \"\\f412\",\n \"headphones\": \"\\f413\",\n \"headset\": \"\\f414\",\n \"heart-fill\": \"\\f415\",\n \"heart-half\": \"\\f416\",\n \"heart\": \"\\f417\",\n \"heptagon-fill\": \"\\f418\",\n \"heptagon-half\": \"\\f419\",\n \"heptagon\": \"\\f41a\",\n \"hexagon-fill\": \"\\f41b\",\n \"hexagon-half\": \"\\f41c\",\n \"hexagon\": \"\\f41d\",\n \"hourglass-bottom\": \"\\f41e\",\n \"hourglass-split\": \"\\f41f\",\n \"hourglass-top\": \"\\f420\",\n \"hourglass\": \"\\f421\",\n \"house-door-fill\": \"\\f422\",\n \"house-door\": \"\\f423\",\n \"house-fill\": \"\\f424\",\n \"house\": \"\\f425\",\n \"hr\": \"\\f426\",\n \"hurricane\": \"\\f427\",\n \"image-alt\": \"\\f428\",\n \"image-fill\": \"\\f429\",\n \"image\": \"\\f42a\",\n \"images\": \"\\f42b\",\n \"inbox-fill\": \"\\f42c\",\n \"inbox\": \"\\f42d\",\n \"inboxes-fill\": \"\\f42e\",\n \"inboxes\": \"\\f42f\",\n \"info-circle-fill\": \"\\f430\",\n \"info-circle\": \"\\f431\",\n \"info-square-fill\": \"\\f432\",\n \"info-square\": \"\\f433\",\n \"info\": \"\\f434\",\n \"input-cursor-text\": \"\\f435\",\n \"input-cursor\": \"\\f436\",\n \"instagram\": \"\\f437\",\n \"intersect\": \"\\f438\",\n \"journal-album\": \"\\f439\",\n \"journal-arrow-down\": \"\\f43a\",\n \"journal-arrow-up\": \"\\f43b\",\n \"journal-bookmark-fill\": \"\\f43c\",\n \"journal-bookmark\": \"\\f43d\",\n \"journal-check\": \"\\f43e\",\n \"journal-code\": \"\\f43f\",\n \"journal-medical\": \"\\f440\",\n \"journal-minus\": \"\\f441\",\n \"journal-plus\": \"\\f442\",\n \"journal-richtext\": \"\\f443\",\n \"journal-text\": \"\\f444\",\n \"journal-x\": \"\\f445\",\n \"journal\": \"\\f446\",\n \"journals\": \"\\f447\",\n \"joystick\": \"\\f448\",\n \"justify-left\": \"\\f449\",\n \"justify-right\": \"\\f44a\",\n \"justify\": \"\\f44b\",\n \"kanban-fill\": \"\\f44c\",\n \"kanban\": \"\\f44d\",\n \"key-fill\": \"\\f44e\",\n \"key\": \"\\f44f\",\n \"keyboard-fill\": \"\\f450\",\n \"keyboard\": \"\\f451\",\n \"ladder\": \"\\f452\",\n \"lamp-fill\": \"\\f453\",\n \"lamp\": \"\\f454\",\n \"laptop-fill\": \"\\f455\",\n \"laptop\": \"\\f456\",\n \"layer-backward\": \"\\f457\",\n \"layer-forward\": \"\\f458\",\n \"layers-fill\": \"\\f459\",\n \"layers-half\": \"\\f45a\",\n \"layers\": \"\\f45b\",\n \"layout-sidebar-inset-reverse\": \"\\f45c\",\n \"layout-sidebar-inset\": \"\\f45d\",\n \"layout-sidebar-reverse\": \"\\f45e\",\n \"layout-sidebar\": \"\\f45f\",\n \"layout-split\": \"\\f460\",\n \"layout-text-sidebar-reverse\": \"\\f461\",\n \"layout-text-sidebar\": \"\\f462\",\n \"layout-text-window-reverse\": \"\\f463\",\n \"layout-text-window\": \"\\f464\",\n \"layout-three-columns\": \"\\f465\",\n \"layout-wtf\": \"\\f466\",\n \"life-preserver\": \"\\f467\",\n \"lightbulb-fill\": \"\\f468\",\n \"lightbulb-off-fill\": \"\\f469\",\n \"lightbulb-off\": \"\\f46a\",\n \"lightbulb\": \"\\f46b\",\n \"lightning-charge-fill\": \"\\f46c\",\n \"lightning-charge\": \"\\f46d\",\n \"lightning-fill\": \"\\f46e\",\n \"lightning\": \"\\f46f\",\n \"link-45deg\": \"\\f470\",\n \"link\": \"\\f471\",\n \"linkedin\": \"\\f472\",\n \"list-check\": \"\\f473\",\n \"list-nested\": \"\\f474\",\n \"list-ol\": \"\\f475\",\n \"list-stars\": \"\\f476\",\n \"list-task\": \"\\f477\",\n \"list-ul\": \"\\f478\",\n \"list\": \"\\f479\",\n \"lock-fill\": \"\\f47a\",\n \"lock\": \"\\f47b\",\n \"mailbox\": \"\\f47c\",\n \"mailbox2\": \"\\f47d\",\n \"map-fill\": \"\\f47e\",\n \"map\": \"\\f47f\",\n \"markdown-fill\": \"\\f480\",\n \"markdown\": \"\\f481\",\n \"mask\": \"\\f482\",\n \"megaphone-fill\": \"\\f483\",\n \"megaphone\": \"\\f484\",\n \"menu-app-fill\": \"\\f485\",\n \"menu-app\": \"\\f486\",\n \"menu-button-fill\": \"\\f487\",\n \"menu-button-wide-fill\": \"\\f488\",\n \"menu-button-wide\": \"\\f489\",\n \"menu-button\": \"\\f48a\",\n \"menu-down\": \"\\f48b\",\n \"menu-up\": \"\\f48c\",\n \"mic-fill\": \"\\f48d\",\n \"mic-mute-fill\": \"\\f48e\",\n \"mic-mute\": \"\\f48f\",\n \"mic\": \"\\f490\",\n \"minecart-loaded\": \"\\f491\",\n \"minecart\": \"\\f492\",\n \"moisture\": \"\\f493\",\n \"moon-fill\": \"\\f494\",\n \"moon-stars-fill\": \"\\f495\",\n \"moon-stars\": \"\\f496\",\n \"moon\": \"\\f497\",\n \"mouse-fill\": \"\\f498\",\n \"mouse\": \"\\f499\",\n \"mouse2-fill\": \"\\f49a\",\n \"mouse2\": \"\\f49b\",\n \"mouse3-fill\": \"\\f49c\",\n \"mouse3\": \"\\f49d\",\n \"music-note-beamed\": \"\\f49e\",\n \"music-note-list\": \"\\f49f\",\n \"music-note\": \"\\f4a0\",\n \"music-player-fill\": \"\\f4a1\",\n \"music-player\": \"\\f4a2\",\n \"newspaper\": \"\\f4a3\",\n \"node-minus-fill\": \"\\f4a4\",\n \"node-minus\": \"\\f4a5\",\n \"node-plus-fill\": \"\\f4a6\",\n \"node-plus\": \"\\f4a7\",\n \"nut-fill\": \"\\f4a8\",\n \"nut\": \"\\f4a9\",\n \"octagon-fill\": \"\\f4aa\",\n \"octagon-half\": \"\\f4ab\",\n \"octagon\": \"\\f4ac\",\n \"option\": \"\\f4ad\",\n \"outlet\": \"\\f4ae\",\n \"paint-bucket\": \"\\f4af\",\n \"palette-fill\": \"\\f4b0\",\n \"palette\": \"\\f4b1\",\n \"palette2\": \"\\f4b2\",\n \"paperclip\": \"\\f4b3\",\n \"paragraph\": \"\\f4b4\",\n \"patch-check-fill\": \"\\f4b5\",\n \"patch-check\": \"\\f4b6\",\n \"patch-exclamation-fill\": \"\\f4b7\",\n \"patch-exclamation\": \"\\f4b8\",\n \"patch-minus-fill\": \"\\f4b9\",\n \"patch-minus\": \"\\f4ba\",\n \"patch-plus-fill\": \"\\f4bb\",\n \"patch-plus\": \"\\f4bc\",\n \"patch-question-fill\": \"\\f4bd\",\n \"patch-question\": \"\\f4be\",\n \"pause-btn-fill\": \"\\f4bf\",\n \"pause-btn\": \"\\f4c0\",\n \"pause-circle-fill\": \"\\f4c1\",\n \"pause-circle\": \"\\f4c2\",\n \"pause-fill\": \"\\f4c3\",\n \"pause\": \"\\f4c4\",\n \"peace-fill\": \"\\f4c5\",\n \"peace\": \"\\f4c6\",\n \"pen-fill\": \"\\f4c7\",\n \"pen\": \"\\f4c8\",\n \"pencil-fill\": \"\\f4c9\",\n \"pencil-square\": \"\\f4ca\",\n \"pencil\": \"\\f4cb\",\n \"pentagon-fill\": \"\\f4cc\",\n \"pentagon-half\": \"\\f4cd\",\n \"pentagon\": \"\\f4ce\",\n \"people-fill\": \"\\f4cf\",\n \"people\": \"\\f4d0\",\n \"percent\": \"\\f4d1\",\n \"person-badge-fill\": \"\\f4d2\",\n \"person-badge\": \"\\f4d3\",\n \"person-bounding-box\": \"\\f4d4\",\n \"person-check-fill\": \"\\f4d5\",\n \"person-check\": \"\\f4d6\",\n \"person-circle\": \"\\f4d7\",\n \"person-dash-fill\": \"\\f4d8\",\n \"person-dash\": \"\\f4d9\",\n \"person-fill\": \"\\f4da\",\n \"person-lines-fill\": \"\\f4db\",\n \"person-plus-fill\": \"\\f4dc\",\n \"person-plus\": \"\\f4dd\",\n \"person-square\": \"\\f4de\",\n \"person-x-fill\": \"\\f4df\",\n \"person-x\": \"\\f4e0\",\n \"person\": \"\\f4e1\",\n \"phone-fill\": \"\\f4e2\",\n \"phone-landscape-fill\": \"\\f4e3\",\n \"phone-landscape\": \"\\f4e4\",\n \"phone-vibrate-fill\": \"\\f4e5\",\n \"phone-vibrate\": \"\\f4e6\",\n \"phone\": \"\\f4e7\",\n \"pie-chart-fill\": \"\\f4e8\",\n \"pie-chart\": \"\\f4e9\",\n \"pin-angle-fill\": \"\\f4ea\",\n \"pin-angle\": \"\\f4eb\",\n \"pin-fill\": \"\\f4ec\",\n \"pin\": \"\\f4ed\",\n \"pip-fill\": \"\\f4ee\",\n \"pip\": \"\\f4ef\",\n \"play-btn-fill\": \"\\f4f0\",\n \"play-btn\": \"\\f4f1\",\n \"play-circle-fill\": \"\\f4f2\",\n \"play-circle\": \"\\f4f3\",\n \"play-fill\": \"\\f4f4\",\n \"play\": \"\\f4f5\",\n \"plug-fill\": \"\\f4f6\",\n \"plug\": \"\\f4f7\",\n \"plus-circle-dotted\": \"\\f4f8\",\n \"plus-circle-fill\": \"\\f4f9\",\n \"plus-circle\": \"\\f4fa\",\n \"plus-square-dotted\": \"\\f4fb\",\n \"plus-square-fill\": \"\\f4fc\",\n \"plus-square\": \"\\f4fd\",\n \"plus\": \"\\f4fe\",\n \"power\": \"\\f4ff\",\n \"printer-fill\": \"\\f500\",\n \"printer\": \"\\f501\",\n \"puzzle-fill\": \"\\f502\",\n \"puzzle\": \"\\f503\",\n \"question-circle-fill\": \"\\f504\",\n \"question-circle\": \"\\f505\",\n \"question-diamond-fill\": \"\\f506\",\n \"question-diamond\": \"\\f507\",\n \"question-octagon-fill\": \"\\f508\",\n \"question-octagon\": \"\\f509\",\n \"question-square-fill\": \"\\f50a\",\n \"question-square\": \"\\f50b\",\n \"question\": \"\\f50c\",\n \"rainbow\": \"\\f50d\",\n \"receipt-cutoff\": \"\\f50e\",\n \"receipt\": \"\\f50f\",\n \"reception-0\": \"\\f510\",\n \"reception-1\": \"\\f511\",\n \"reception-2\": \"\\f512\",\n \"reception-3\": \"\\f513\",\n \"reception-4\": \"\\f514\",\n \"record-btn-fill\": \"\\f515\",\n \"record-btn\": \"\\f516\",\n \"record-circle-fill\": \"\\f517\",\n \"record-circle\": \"\\f518\",\n \"record-fill\": \"\\f519\",\n \"record\": \"\\f51a\",\n \"record2-fill\": \"\\f51b\",\n \"record2\": \"\\f51c\",\n \"reply-all-fill\": \"\\f51d\",\n \"reply-all\": \"\\f51e\",\n \"reply-fill\": \"\\f51f\",\n \"reply\": \"\\f520\",\n \"rss-fill\": \"\\f521\",\n \"rss\": \"\\f522\",\n \"rulers\": \"\\f523\",\n \"save-fill\": \"\\f524\",\n \"save\": \"\\f525\",\n \"save2-fill\": \"\\f526\",\n \"save2\": \"\\f527\",\n \"scissors\": \"\\f528\",\n \"screwdriver\": \"\\f529\",\n \"search\": \"\\f52a\",\n \"segmented-nav\": \"\\f52b\",\n \"server\": \"\\f52c\",\n \"share-fill\": \"\\f52d\",\n \"share\": \"\\f52e\",\n \"shield-check\": \"\\f52f\",\n \"shield-exclamation\": \"\\f530\",\n \"shield-fill-check\": \"\\f531\",\n \"shield-fill-exclamation\": \"\\f532\",\n \"shield-fill-minus\": \"\\f533\",\n \"shield-fill-plus\": \"\\f534\",\n \"shield-fill-x\": \"\\f535\",\n \"shield-fill\": \"\\f536\",\n \"shield-lock-fill\": \"\\f537\",\n \"shield-lock\": \"\\f538\",\n \"shield-minus\": \"\\f539\",\n \"shield-plus\": \"\\f53a\",\n \"shield-shaded\": \"\\f53b\",\n \"shield-slash-fill\": \"\\f53c\",\n \"shield-slash\": \"\\f53d\",\n \"shield-x\": \"\\f53e\",\n \"shield\": \"\\f53f\",\n \"shift-fill\": \"\\f540\",\n \"shift\": \"\\f541\",\n \"shop-window\": \"\\f542\",\n \"shop\": \"\\f543\",\n \"shuffle\": \"\\f544\",\n \"signpost-2-fill\": \"\\f545\",\n \"signpost-2\": \"\\f546\",\n \"signpost-fill\": \"\\f547\",\n \"signpost-split-fill\": \"\\f548\",\n \"signpost-split\": \"\\f549\",\n \"signpost\": \"\\f54a\",\n \"sim-fill\": \"\\f54b\",\n \"sim\": \"\\f54c\",\n \"skip-backward-btn-fill\": \"\\f54d\",\n \"skip-backward-btn\": \"\\f54e\",\n \"skip-backward-circle-fill\": \"\\f54f\",\n \"skip-backward-circle\": \"\\f550\",\n \"skip-backward-fill\": \"\\f551\",\n \"skip-backward\": \"\\f552\",\n \"skip-end-btn-fill\": \"\\f553\",\n \"skip-end-btn\": \"\\f554\",\n \"skip-end-circle-fill\": \"\\f555\",\n \"skip-end-circle\": \"\\f556\",\n \"skip-end-fill\": \"\\f557\",\n \"skip-end\": \"\\f558\",\n \"skip-forward-btn-fill\": \"\\f559\",\n \"skip-forward-btn\": \"\\f55a\",\n \"skip-forward-circle-fill\": \"\\f55b\",\n \"skip-forward-circle\": \"\\f55c\",\n \"skip-forward-fill\": \"\\f55d\",\n \"skip-forward\": \"\\f55e\",\n \"skip-start-btn-fill\": \"\\f55f\",\n \"skip-start-btn\": \"\\f560\",\n \"skip-start-circle-fill\": \"\\f561\",\n \"skip-start-circle\": \"\\f562\",\n \"skip-start-fill\": \"\\f563\",\n \"skip-start\": \"\\f564\",\n \"slack\": \"\\f565\",\n \"slash-circle-fill\": \"\\f566\",\n \"slash-circle\": \"\\f567\",\n \"slash-square-fill\": \"\\f568\",\n \"slash-square\": \"\\f569\",\n \"slash\": \"\\f56a\",\n \"sliders\": \"\\f56b\",\n \"smartwatch\": \"\\f56c\",\n \"snow\": \"\\f56d\",\n \"snow2\": \"\\f56e\",\n \"snow3\": \"\\f56f\",\n \"sort-alpha-down-alt\": \"\\f570\",\n \"sort-alpha-down\": \"\\f571\",\n \"sort-alpha-up-alt\": \"\\f572\",\n \"sort-alpha-up\": \"\\f573\",\n \"sort-down-alt\": \"\\f574\",\n \"sort-down\": \"\\f575\",\n \"sort-numeric-down-alt\": \"\\f576\",\n \"sort-numeric-down\": \"\\f577\",\n \"sort-numeric-up-alt\": \"\\f578\",\n \"sort-numeric-up\": \"\\f579\",\n \"sort-up-alt\": \"\\f57a\",\n \"sort-up\": \"\\f57b\",\n \"soundwave\": \"\\f57c\",\n \"speaker-fill\": \"\\f57d\",\n \"speaker\": \"\\f57e\",\n \"speedometer\": \"\\f57f\",\n \"speedometer2\": \"\\f580\",\n \"spellcheck\": \"\\f581\",\n \"square-fill\": \"\\f582\",\n \"square-half\": \"\\f583\",\n \"square\": \"\\f584\",\n \"stack\": \"\\f585\",\n \"star-fill\": \"\\f586\",\n \"star-half\": \"\\f587\",\n \"star\": \"\\f588\",\n \"stars\": \"\\f589\",\n \"stickies-fill\": \"\\f58a\",\n \"stickies\": \"\\f58b\",\n \"sticky-fill\": \"\\f58c\",\n \"sticky\": \"\\f58d\",\n \"stop-btn-fill\": \"\\f58e\",\n \"stop-btn\": \"\\f58f\",\n \"stop-circle-fill\": \"\\f590\",\n \"stop-circle\": \"\\f591\",\n \"stop-fill\": \"\\f592\",\n \"stop\": \"\\f593\",\n \"stoplights-fill\": \"\\f594\",\n \"stoplights\": \"\\f595\",\n \"stopwatch-fill\": \"\\f596\",\n \"stopwatch\": \"\\f597\",\n \"subtract\": \"\\f598\",\n \"suit-club-fill\": \"\\f599\",\n \"suit-club\": \"\\f59a\",\n \"suit-diamond-fill\": \"\\f59b\",\n \"suit-diamond\": \"\\f59c\",\n \"suit-heart-fill\": \"\\f59d\",\n \"suit-heart\": \"\\f59e\",\n \"suit-spade-fill\": \"\\f59f\",\n \"suit-spade\": \"\\f5a0\",\n \"sun-fill\": \"\\f5a1\",\n \"sun\": \"\\f5a2\",\n \"sunglasses\": \"\\f5a3\",\n \"sunrise-fill\": \"\\f5a4\",\n \"sunrise\": \"\\f5a5\",\n \"sunset-fill\": \"\\f5a6\",\n \"sunset\": \"\\f5a7\",\n \"symmetry-horizontal\": \"\\f5a8\",\n \"symmetry-vertical\": \"\\f5a9\",\n \"table\": \"\\f5aa\",\n \"tablet-fill\": \"\\f5ab\",\n \"tablet-landscape-fill\": \"\\f5ac\",\n \"tablet-landscape\": \"\\f5ad\",\n \"tablet\": \"\\f5ae\",\n \"tag-fill\": \"\\f5af\",\n \"tag\": \"\\f5b0\",\n \"tags-fill\": \"\\f5b1\",\n \"tags\": \"\\f5b2\",\n \"telegram\": \"\\f5b3\",\n \"telephone-fill\": \"\\f5b4\",\n \"telephone-forward-fill\": \"\\f5b5\",\n \"telephone-forward\": \"\\f5b6\",\n \"telephone-inbound-fill\": \"\\f5b7\",\n \"telephone-inbound\": \"\\f5b8\",\n \"telephone-minus-fill\": \"\\f5b9\",\n \"telephone-minus\": \"\\f5ba\",\n \"telephone-outbound-fill\": \"\\f5bb\",\n \"telephone-outbound\": \"\\f5bc\",\n \"telephone-plus-fill\": \"\\f5bd\",\n \"telephone-plus\": \"\\f5be\",\n \"telephone-x-fill\": \"\\f5bf\",\n \"telephone-x\": \"\\f5c0\",\n \"telephone\": \"\\f5c1\",\n \"terminal-fill\": \"\\f5c2\",\n \"terminal\": \"\\f5c3\",\n \"text-center\": \"\\f5c4\",\n \"text-indent-left\": \"\\f5c5\",\n \"text-indent-right\": \"\\f5c6\",\n \"text-left\": \"\\f5c7\",\n \"text-paragraph\": \"\\f5c8\",\n \"text-right\": \"\\f5c9\",\n \"textarea-resize\": \"\\f5ca\",\n \"textarea-t\": \"\\f5cb\",\n \"textarea\": \"\\f5cc\",\n \"thermometer-half\": \"\\f5cd\",\n \"thermometer-high\": \"\\f5ce\",\n \"thermometer-low\": \"\\f5cf\",\n \"thermometer-snow\": \"\\f5d0\",\n \"thermometer-sun\": \"\\f5d1\",\n \"thermometer\": \"\\f5d2\",\n \"three-dots-vertical\": \"\\f5d3\",\n \"three-dots\": \"\\f5d4\",\n \"toggle-off\": \"\\f5d5\",\n \"toggle-on\": \"\\f5d6\",\n \"toggle2-off\": \"\\f5d7\",\n \"toggle2-on\": \"\\f5d8\",\n \"toggles\": \"\\f5d9\",\n \"toggles2\": \"\\f5da\",\n \"tools\": \"\\f5db\",\n \"tornado\": \"\\f5dc\",\n \"trash-fill\": \"\\f5dd\",\n \"trash\": \"\\f5de\",\n \"trash2-fill\": \"\\f5df\",\n \"trash2\": \"\\f5e0\",\n \"tree-fill\": \"\\f5e1\",\n \"tree\": \"\\f5e2\",\n \"triangle-fill\": \"\\f5e3\",\n \"triangle-half\": \"\\f5e4\",\n \"triangle\": \"\\f5e5\",\n \"trophy-fill\": \"\\f5e6\",\n \"trophy\": \"\\f5e7\",\n \"tropical-storm\": \"\\f5e8\",\n \"truck-flatbed\": \"\\f5e9\",\n \"truck\": \"\\f5ea\",\n \"tsunami\": \"\\f5eb\",\n \"tv-fill\": \"\\f5ec\",\n \"tv\": \"\\f5ed\",\n \"twitch\": \"\\f5ee\",\n \"twitter\": \"\\f5ef\",\n \"type-bold\": \"\\f5f0\",\n \"type-h1\": \"\\f5f1\",\n \"type-h2\": \"\\f5f2\",\n \"type-h3\": \"\\f5f3\",\n \"type-italic\": \"\\f5f4\",\n \"type-strikethrough\": \"\\f5f5\",\n \"type-underline\": \"\\f5f6\",\n \"type\": \"\\f5f7\",\n \"ui-checks-grid\": \"\\f5f8\",\n \"ui-checks\": \"\\f5f9\",\n \"ui-radios-grid\": \"\\f5fa\",\n \"ui-radios\": \"\\f5fb\",\n \"umbrella-fill\": \"\\f5fc\",\n \"umbrella\": \"\\f5fd\",\n \"union\": \"\\f5fe\",\n \"unlock-fill\": \"\\f5ff\",\n \"unlock\": \"\\f600\",\n \"upc-scan\": \"\\f601\",\n \"upc\": \"\\f602\",\n \"upload\": \"\\f603\",\n \"vector-pen\": \"\\f604\",\n \"view-list\": \"\\f605\",\n \"view-stacked\": \"\\f606\",\n \"vinyl-fill\": \"\\f607\",\n \"vinyl\": \"\\f608\",\n \"voicemail\": \"\\f609\",\n \"volume-down-fill\": \"\\f60a\",\n \"volume-down\": \"\\f60b\",\n \"volume-mute-fill\": \"\\f60c\",\n \"volume-mute\": \"\\f60d\",\n \"volume-off-fill\": \"\\f60e\",\n \"volume-off\": \"\\f60f\",\n \"volume-up-fill\": \"\\f610\",\n \"volume-up\": \"\\f611\",\n \"vr\": \"\\f612\",\n \"wallet-fill\": \"\\f613\",\n \"wallet\": \"\\f614\",\n \"wallet2\": \"\\f615\",\n \"watch\": \"\\f616\",\n \"water\": \"\\f617\",\n \"whatsapp\": \"\\f618\",\n \"wifi-1\": \"\\f619\",\n \"wifi-2\": \"\\f61a\",\n \"wifi-off\": \"\\f61b\",\n \"wifi\": \"\\f61c\",\n \"wind\": \"\\f61d\",\n \"window-dock\": \"\\f61e\",\n \"window-sidebar\": \"\\f61f\",\n \"window\": \"\\f620\",\n \"wrench\": \"\\f621\",\n \"x-circle-fill\": \"\\f622\",\n \"x-circle\": \"\\f623\",\n \"x-diamond-fill\": \"\\f624\",\n \"x-diamond\": \"\\f625\",\n \"x-octagon-fill\": \"\\f626\",\n \"x-octagon\": \"\\f627\",\n \"x-square-fill\": \"\\f628\",\n \"x-square\": \"\\f629\",\n \"x\": \"\\f62a\",\n \"youtube\": \"\\f62b\",\n \"zoom-in\": \"\\f62c\",\n \"zoom-out\": \"\\f62d\",\n \"bank\": \"\\f62e\",\n \"bank2\": \"\\f62f\",\n \"bell-slash-fill\": \"\\f630\",\n \"bell-slash\": \"\\f631\",\n \"cash-coin\": \"\\f632\",\n \"check-lg\": \"\\f633\",\n \"coin\": \"\\f634\",\n \"currency-bitcoin\": \"\\f635\",\n \"currency-dollar\": \"\\f636\",\n \"currency-euro\": \"\\f637\",\n \"currency-exchange\": \"\\f638\",\n \"currency-pound\": \"\\f639\",\n \"currency-yen\": \"\\f63a\",\n \"dash-lg\": \"\\f63b\",\n \"exclamation-lg\": \"\\f63c\",\n \"file-earmark-pdf-fill\": \"\\f63d\",\n \"file-earmark-pdf\": \"\\f63e\",\n \"file-pdf-fill\": \"\\f63f\",\n \"file-pdf\": \"\\f640\",\n \"gender-ambiguous\": \"\\f641\",\n \"gender-female\": \"\\f642\",\n \"gender-male\": \"\\f643\",\n \"gender-trans\": \"\\f644\",\n \"headset-vr\": \"\\f645\",\n \"info-lg\": \"\\f646\",\n \"mastodon\": \"\\f647\",\n \"messenger\": \"\\f648\",\n \"piggy-bank-fill\": \"\\f649\",\n \"piggy-bank\": \"\\f64a\",\n \"pin-map-fill\": \"\\f64b\",\n \"pin-map\": \"\\f64c\",\n \"plus-lg\": \"\\f64d\",\n \"question-lg\": \"\\f64e\",\n \"recycle\": \"\\f64f\",\n \"reddit\": \"\\f650\",\n \"safe-fill\": \"\\f651\",\n \"safe2-fill\": \"\\f652\",\n \"safe2\": \"\\f653\",\n \"sd-card-fill\": \"\\f654\",\n \"sd-card\": \"\\f655\",\n \"skype\": \"\\f656\",\n \"slash-lg\": \"\\f657\",\n \"translate\": \"\\f658\",\n \"x-lg\": \"\\f659\",\n \"safe\": \"\\f65a\",\n \"apple\": \"\\f65b\",\n \"microsoft\": \"\\f65d\",\n \"windows\": \"\\f65e\",\n \"behance\": \"\\f65c\",\n \"dribbble\": \"\\f65f\",\n \"line\": \"\\f660\",\n \"medium\": \"\\f661\",\n \"paypal\": \"\\f662\",\n \"pinterest\": \"\\f663\",\n \"signal\": \"\\f664\",\n \"snapchat\": \"\\f665\",\n \"spotify\": \"\\f666\",\n \"stack-overflow\": \"\\f667\",\n \"strava\": \"\\f668\",\n \"wordpress\": \"\\f669\",\n \"vimeo\": \"\\f66a\",\n \"activity\": \"\\f66b\",\n \"easel2-fill\": \"\\f66c\",\n \"easel2\": \"\\f66d\",\n \"easel3-fill\": \"\\f66e\",\n \"easel3\": \"\\f66f\",\n \"fan\": \"\\f670\",\n \"fingerprint\": \"\\f671\",\n \"graph-down-arrow\": \"\\f672\",\n \"graph-up-arrow\": \"\\f673\",\n \"hypnotize\": \"\\f674\",\n \"magic\": \"\\f675\",\n \"person-rolodex\": \"\\f676\",\n \"person-video\": \"\\f677\",\n \"person-video2\": \"\\f678\",\n \"person-video3\": \"\\f679\",\n \"person-workspace\": \"\\f67a\",\n \"radioactive\": \"\\f67b\",\n \"webcam-fill\": \"\\f67c\",\n \"webcam\": \"\\f67d\",\n \"yin-yang\": \"\\f67e\",\n \"bandaid-fill\": \"\\f680\",\n \"bandaid\": \"\\f681\",\n \"bluetooth\": \"\\f682\",\n \"body-text\": \"\\f683\",\n \"boombox\": \"\\f684\",\n \"boxes\": \"\\f685\",\n \"dpad-fill\": \"\\f686\",\n \"dpad\": \"\\f687\",\n \"ear-fill\": \"\\f688\",\n \"ear\": \"\\f689\",\n \"envelope-check-fill\": \"\\f68b\",\n \"envelope-check\": \"\\f68c\",\n \"envelope-dash-fill\": \"\\f68e\",\n \"envelope-dash\": \"\\f68f\",\n \"envelope-exclamation-fill\": \"\\f691\",\n \"envelope-exclamation\": \"\\f692\",\n \"envelope-plus-fill\": \"\\f693\",\n \"envelope-plus\": \"\\f694\",\n \"envelope-slash-fill\": \"\\f696\",\n \"envelope-slash\": \"\\f697\",\n \"envelope-x-fill\": \"\\f699\",\n \"envelope-x\": \"\\f69a\",\n \"explicit-fill\": \"\\f69b\",\n \"explicit\": \"\\f69c\",\n \"git\": \"\\f69d\",\n \"infinity\": \"\\f69e\",\n \"list-columns-reverse\": \"\\f69f\",\n \"list-columns\": \"\\f6a0\",\n \"meta\": \"\\f6a1\",\n \"nintendo-switch\": \"\\f6a4\",\n \"pc-display-horizontal\": \"\\f6a5\",\n \"pc-display\": \"\\f6a6\",\n \"pc-horizontal\": \"\\f6a7\",\n \"pc\": \"\\f6a8\",\n \"playstation\": \"\\f6a9\",\n \"plus-slash-minus\": \"\\f6aa\",\n \"projector-fill\": \"\\f6ab\",\n \"projector\": \"\\f6ac\",\n \"qr-code-scan\": \"\\f6ad\",\n \"qr-code\": \"\\f6ae\",\n \"quora\": \"\\f6af\",\n \"quote\": \"\\f6b0\",\n \"robot\": \"\\f6b1\",\n \"send-check-fill\": \"\\f6b2\",\n \"send-check\": \"\\f6b3\",\n \"send-dash-fill\": \"\\f6b4\",\n \"send-dash\": \"\\f6b5\",\n \"send-exclamation-fill\": \"\\f6b7\",\n \"send-exclamation\": \"\\f6b8\",\n \"send-fill\": \"\\f6b9\",\n \"send-plus-fill\": \"\\f6ba\",\n \"send-plus\": \"\\f6bb\",\n \"send-slash-fill\": \"\\f6bc\",\n \"send-slash\": \"\\f6bd\",\n \"send-x-fill\": \"\\f6be\",\n \"send-x\": \"\\f6bf\",\n \"send\": \"\\f6c0\",\n \"steam\": \"\\f6c1\",\n \"terminal-dash\": \"\\f6c3\",\n \"terminal-plus\": \"\\f6c4\",\n \"terminal-split\": \"\\f6c5\",\n \"ticket-detailed-fill\": \"\\f6c6\",\n \"ticket-detailed\": \"\\f6c7\",\n \"ticket-fill\": \"\\f6c8\",\n \"ticket-perforated-fill\": \"\\f6c9\",\n \"ticket-perforated\": \"\\f6ca\",\n \"ticket\": \"\\f6cb\",\n \"tiktok\": \"\\f6cc\",\n \"window-dash\": \"\\f6cd\",\n \"window-desktop\": \"\\f6ce\",\n \"window-fullscreen\": \"\\f6cf\",\n \"window-plus\": \"\\f6d0\",\n \"window-split\": \"\\f6d1\",\n \"window-stack\": \"\\f6d2\",\n \"window-x\": \"\\f6d3\",\n \"xbox\": \"\\f6d4\",\n \"ethernet\": \"\\f6d5\",\n \"hdmi-fill\": \"\\f6d6\",\n \"hdmi\": \"\\f6d7\",\n \"usb-c-fill\": \"\\f6d8\",\n \"usb-c\": \"\\f6d9\",\n \"usb-fill\": \"\\f6da\",\n \"usb-plug-fill\": \"\\f6db\",\n \"usb-plug\": \"\\f6dc\",\n \"usb-symbol\": \"\\f6dd\",\n \"usb\": \"\\f6de\",\n \"boombox-fill\": \"\\f6df\",\n \"displayport\": \"\\f6e1\",\n \"gpu-card\": \"\\f6e2\",\n \"memory\": \"\\f6e3\",\n \"modem-fill\": \"\\f6e4\",\n \"modem\": \"\\f6e5\",\n \"motherboard-fill\": \"\\f6e6\",\n \"motherboard\": \"\\f6e7\",\n \"optical-audio-fill\": \"\\f6e8\",\n \"optical-audio\": \"\\f6e9\",\n \"pci-card\": \"\\f6ea\",\n \"router-fill\": \"\\f6eb\",\n \"router\": \"\\f6ec\",\n \"thunderbolt-fill\": \"\\f6ef\",\n \"thunderbolt\": \"\\f6f0\",\n \"usb-drive-fill\": \"\\f6f1\",\n \"usb-drive\": \"\\f6f2\",\n \"usb-micro-fill\": \"\\f6f3\",\n \"usb-micro\": \"\\f6f4\",\n \"usb-mini-fill\": \"\\f6f5\",\n \"usb-mini\": \"\\f6f6\",\n \"cloud-haze2\": \"\\f6f7\",\n \"device-hdd-fill\": \"\\f6f8\",\n \"device-hdd\": \"\\f6f9\",\n \"device-ssd-fill\": \"\\f6fa\",\n \"device-ssd\": \"\\f6fb\",\n \"displayport-fill\": \"\\f6fc\",\n \"mortarboard-fill\": \"\\f6fd\",\n \"mortarboard\": \"\\f6fe\",\n \"terminal-x\": \"\\f6ff\",\n \"arrow-through-heart-fill\": \"\\f700\",\n \"arrow-through-heart\": \"\\f701\",\n \"badge-sd-fill\": \"\\f702\",\n \"badge-sd\": \"\\f703\",\n \"bag-heart-fill\": \"\\f704\",\n \"bag-heart\": \"\\f705\",\n \"balloon-fill\": \"\\f706\",\n \"balloon-heart-fill\": \"\\f707\",\n \"balloon-heart\": \"\\f708\",\n \"balloon\": \"\\f709\",\n \"box2-fill\": \"\\f70a\",\n \"box2-heart-fill\": \"\\f70b\",\n \"box2-heart\": \"\\f70c\",\n \"box2\": \"\\f70d\",\n \"braces-asterisk\": \"\\f70e\",\n \"calendar-heart-fill\": \"\\f70f\",\n \"calendar-heart\": \"\\f710\",\n \"calendar2-heart-fill\": \"\\f711\",\n \"calendar2-heart\": \"\\f712\",\n \"chat-heart-fill\": \"\\f713\",\n \"chat-heart\": \"\\f714\",\n \"chat-left-heart-fill\": \"\\f715\",\n \"chat-left-heart\": \"\\f716\",\n \"chat-right-heart-fill\": \"\\f717\",\n \"chat-right-heart\": \"\\f718\",\n \"chat-square-heart-fill\": \"\\f719\",\n \"chat-square-heart\": \"\\f71a\",\n \"clipboard-check-fill\": \"\\f71b\",\n \"clipboard-data-fill\": \"\\f71c\",\n \"clipboard-fill\": \"\\f71d\",\n \"clipboard-heart-fill\": \"\\f71e\",\n \"clipboard-heart\": \"\\f71f\",\n \"clipboard-minus-fill\": \"\\f720\",\n \"clipboard-plus-fill\": \"\\f721\",\n \"clipboard-pulse\": \"\\f722\",\n \"clipboard-x-fill\": \"\\f723\",\n \"clipboard2-check-fill\": \"\\f724\",\n \"clipboard2-check\": \"\\f725\",\n \"clipboard2-data-fill\": \"\\f726\",\n \"clipboard2-data\": \"\\f727\",\n \"clipboard2-fill\": \"\\f728\",\n \"clipboard2-heart-fill\": \"\\f729\",\n \"clipboard2-heart\": \"\\f72a\",\n \"clipboard2-minus-fill\": \"\\f72b\",\n \"clipboard2-minus\": \"\\f72c\",\n \"clipboard2-plus-fill\": \"\\f72d\",\n \"clipboard2-plus\": \"\\f72e\",\n \"clipboard2-pulse-fill\": \"\\f72f\",\n \"clipboard2-pulse\": \"\\f730\",\n \"clipboard2-x-fill\": \"\\f731\",\n \"clipboard2-x\": \"\\f732\",\n \"clipboard2\": \"\\f733\",\n \"emoji-kiss-fill\": \"\\f734\",\n \"emoji-kiss\": \"\\f735\",\n \"envelope-heart-fill\": \"\\f736\",\n \"envelope-heart\": \"\\f737\",\n \"envelope-open-heart-fill\": \"\\f738\",\n \"envelope-open-heart\": \"\\f739\",\n \"envelope-paper-fill\": \"\\f73a\",\n \"envelope-paper-heart-fill\": \"\\f73b\",\n \"envelope-paper-heart\": \"\\f73c\",\n \"envelope-paper\": \"\\f73d\",\n \"filetype-aac\": \"\\f73e\",\n \"filetype-ai\": \"\\f73f\",\n \"filetype-bmp\": \"\\f740\",\n \"filetype-cs\": \"\\f741\",\n \"filetype-css\": \"\\f742\",\n \"filetype-csv\": \"\\f743\",\n \"filetype-doc\": \"\\f744\",\n \"filetype-docx\": \"\\f745\",\n \"filetype-exe\": \"\\f746\",\n \"filetype-gif\": \"\\f747\",\n \"filetype-heic\": \"\\f748\",\n \"filetype-html\": \"\\f749\",\n \"filetype-java\": \"\\f74a\",\n \"filetype-jpg\": \"\\f74b\",\n \"filetype-js\": \"\\f74c\",\n \"filetype-jsx\": \"\\f74d\",\n \"filetype-key\": \"\\f74e\",\n \"filetype-m4p\": \"\\f74f\",\n \"filetype-md\": \"\\f750\",\n \"filetype-mdx\": \"\\f751\",\n \"filetype-mov\": \"\\f752\",\n \"filetype-mp3\": \"\\f753\",\n \"filetype-mp4\": \"\\f754\",\n \"filetype-otf\": \"\\f755\",\n \"filetype-pdf\": \"\\f756\",\n \"filetype-php\": \"\\f757\",\n \"filetype-png\": \"\\f758\",\n \"filetype-ppt\": \"\\f75a\",\n \"filetype-psd\": \"\\f75b\",\n \"filetype-py\": \"\\f75c\",\n \"filetype-raw\": \"\\f75d\",\n \"filetype-rb\": \"\\f75e\",\n \"filetype-sass\": \"\\f75f\",\n \"filetype-scss\": \"\\f760\",\n \"filetype-sh\": \"\\f761\",\n \"filetype-svg\": \"\\f762\",\n \"filetype-tiff\": \"\\f763\",\n \"filetype-tsx\": \"\\f764\",\n \"filetype-ttf\": \"\\f765\",\n \"filetype-txt\": \"\\f766\",\n \"filetype-wav\": \"\\f767\",\n \"filetype-woff\": \"\\f768\",\n \"filetype-xls\": \"\\f76a\",\n \"filetype-xml\": \"\\f76b\",\n \"filetype-yml\": \"\\f76c\",\n \"heart-arrow\": \"\\f76d\",\n \"heart-pulse-fill\": \"\\f76e\",\n \"heart-pulse\": \"\\f76f\",\n \"heartbreak-fill\": \"\\f770\",\n \"heartbreak\": \"\\f771\",\n \"hearts\": \"\\f772\",\n \"hospital-fill\": \"\\f773\",\n \"hospital\": \"\\f774\",\n \"house-heart-fill\": \"\\f775\",\n \"house-heart\": \"\\f776\",\n \"incognito\": \"\\f777\",\n \"magnet-fill\": \"\\f778\",\n \"magnet\": \"\\f779\",\n \"person-heart\": \"\\f77a\",\n \"person-hearts\": \"\\f77b\",\n \"phone-flip\": \"\\f77c\",\n \"plugin\": \"\\f77d\",\n \"postage-fill\": \"\\f77e\",\n \"postage-heart-fill\": \"\\f77f\",\n \"postage-heart\": \"\\f780\",\n \"postage\": \"\\f781\",\n \"postcard-fill\": \"\\f782\",\n \"postcard-heart-fill\": \"\\f783\",\n \"postcard-heart\": \"\\f784\",\n \"postcard\": \"\\f785\",\n \"search-heart-fill\": \"\\f786\",\n \"search-heart\": \"\\f787\",\n \"sliders2-vertical\": \"\\f788\",\n \"sliders2\": \"\\f789\",\n \"trash3-fill\": \"\\f78a\",\n \"trash3\": \"\\f78b\",\n \"valentine\": \"\\f78c\",\n \"valentine2\": \"\\f78d\",\n \"wrench-adjustable-circle-fill\": \"\\f78e\",\n \"wrench-adjustable-circle\": \"\\f78f\",\n \"wrench-adjustable\": \"\\f790\",\n \"filetype-json\": \"\\f791\",\n \"filetype-pptx\": \"\\f792\",\n \"filetype-xlsx\": \"\\f793\",\n \"1-circle-fill\": \"\\f796\",\n \"1-circle\": \"\\f797\",\n \"1-square-fill\": \"\\f798\",\n \"1-square\": \"\\f799\",\n \"2-circle-fill\": \"\\f79c\",\n \"2-circle\": \"\\f79d\",\n \"2-square-fill\": \"\\f79e\",\n \"2-square\": \"\\f79f\",\n \"3-circle-fill\": \"\\f7a2\",\n \"3-circle\": \"\\f7a3\",\n \"3-square-fill\": \"\\f7a4\",\n \"3-square\": \"\\f7a5\",\n \"4-circle-fill\": \"\\f7a8\",\n \"4-circle\": \"\\f7a9\",\n \"4-square-fill\": \"\\f7aa\",\n \"4-square\": \"\\f7ab\",\n \"5-circle-fill\": \"\\f7ae\",\n \"5-circle\": \"\\f7af\",\n \"5-square-fill\": \"\\f7b0\",\n \"5-square\": \"\\f7b1\",\n \"6-circle-fill\": \"\\f7b4\",\n \"6-circle\": \"\\f7b5\",\n \"6-square-fill\": \"\\f7b6\",\n \"6-square\": \"\\f7b7\",\n \"7-circle-fill\": \"\\f7ba\",\n \"7-circle\": \"\\f7bb\",\n \"7-square-fill\": \"\\f7bc\",\n \"7-square\": \"\\f7bd\",\n \"8-circle-fill\": \"\\f7c0\",\n \"8-circle\": \"\\f7c1\",\n \"8-square-fill\": \"\\f7c2\",\n \"8-square\": \"\\f7c3\",\n \"9-circle-fill\": \"\\f7c6\",\n \"9-circle\": \"\\f7c7\",\n \"9-square-fill\": \"\\f7c8\",\n \"9-square\": \"\\f7c9\",\n \"airplane-engines-fill\": \"\\f7ca\",\n \"airplane-engines\": \"\\f7cb\",\n \"airplane-fill\": \"\\f7cc\",\n \"airplane\": \"\\f7cd\",\n \"alexa\": \"\\f7ce\",\n \"alipay\": \"\\f7cf\",\n \"android\": \"\\f7d0\",\n \"android2\": \"\\f7d1\",\n \"box-fill\": \"\\f7d2\",\n \"box-seam-fill\": \"\\f7d3\",\n \"browser-chrome\": \"\\f7d4\",\n \"browser-edge\": \"\\f7d5\",\n \"browser-firefox\": \"\\f7d6\",\n \"browser-safari\": \"\\f7d7\",\n \"c-circle-fill\": \"\\f7da\",\n \"c-circle\": \"\\f7db\",\n \"c-square-fill\": \"\\f7dc\",\n \"c-square\": \"\\f7dd\",\n \"capsule-pill\": \"\\f7de\",\n \"capsule\": \"\\f7df\",\n \"car-front-fill\": \"\\f7e0\",\n \"car-front\": \"\\f7e1\",\n \"cassette-fill\": \"\\f7e2\",\n \"cassette\": \"\\f7e3\",\n \"cc-circle-fill\": \"\\f7e6\",\n \"cc-circle\": \"\\f7e7\",\n \"cc-square-fill\": \"\\f7e8\",\n \"cc-square\": \"\\f7e9\",\n \"cup-hot-fill\": \"\\f7ea\",\n \"cup-hot\": \"\\f7eb\",\n \"currency-rupee\": \"\\f7ec\",\n \"dropbox\": \"\\f7ed\",\n \"escape\": \"\\f7ee\",\n \"fast-forward-btn-fill\": \"\\f7ef\",\n \"fast-forward-btn\": \"\\f7f0\",\n \"fast-forward-circle-fill\": \"\\f7f1\",\n \"fast-forward-circle\": \"\\f7f2\",\n \"fast-forward-fill\": \"\\f7f3\",\n \"fast-forward\": \"\\f7f4\",\n \"filetype-sql\": \"\\f7f5\",\n \"fire\": \"\\f7f6\",\n \"google-play\": \"\\f7f7\",\n \"h-circle-fill\": \"\\f7fa\",\n \"h-circle\": \"\\f7fb\",\n \"h-square-fill\": \"\\f7fc\",\n \"h-square\": \"\\f7fd\",\n \"indent\": \"\\f7fe\",\n \"lungs-fill\": \"\\f7ff\",\n \"lungs\": \"\\f800\",\n \"microsoft-teams\": \"\\f801\",\n \"p-circle-fill\": \"\\f804\",\n \"p-circle\": \"\\f805\",\n \"p-square-fill\": \"\\f806\",\n \"p-square\": \"\\f807\",\n \"pass-fill\": \"\\f808\",\n \"pass\": \"\\f809\",\n \"prescription\": \"\\f80a\",\n \"prescription2\": \"\\f80b\",\n \"r-circle-fill\": \"\\f80e\",\n \"r-circle\": \"\\f80f\",\n \"r-square-fill\": \"\\f810\",\n \"r-square\": \"\\f811\",\n \"repeat-1\": \"\\f812\",\n \"repeat\": \"\\f813\",\n \"rewind-btn-fill\": \"\\f814\",\n \"rewind-btn\": \"\\f815\",\n \"rewind-circle-fill\": \"\\f816\",\n \"rewind-circle\": \"\\f817\",\n \"rewind-fill\": \"\\f818\",\n \"rewind\": \"\\f819\",\n \"train-freight-front-fill\": \"\\f81a\",\n \"train-freight-front\": \"\\f81b\",\n \"train-front-fill\": \"\\f81c\",\n \"train-front\": \"\\f81d\",\n \"train-lightrail-front-fill\": \"\\f81e\",\n \"train-lightrail-front\": \"\\f81f\",\n \"truck-front-fill\": \"\\f820\",\n \"truck-front\": \"\\f821\",\n \"ubuntu\": \"\\f822\",\n \"unindent\": \"\\f823\",\n \"unity\": \"\\f824\",\n \"universal-access-circle\": \"\\f825\",\n \"universal-access\": \"\\f826\",\n \"virus\": \"\\f827\",\n \"virus2\": \"\\f828\",\n \"wechat\": \"\\f829\",\n \"yelp\": \"\\f82a\",\n \"sign-stop-fill\": \"\\f82b\",\n \"sign-stop-lights-fill\": \"\\f82c\",\n \"sign-stop-lights\": \"\\f82d\",\n \"sign-stop\": \"\\f82e\",\n \"sign-turn-left-fill\": \"\\f82f\",\n \"sign-turn-left\": \"\\f830\",\n \"sign-turn-right-fill\": \"\\f831\",\n \"sign-turn-right\": \"\\f832\",\n \"sign-turn-slight-left-fill\": \"\\f833\",\n \"sign-turn-slight-left\": \"\\f834\",\n \"sign-turn-slight-right-fill\": \"\\f835\",\n \"sign-turn-slight-right\": \"\\f836\",\n \"sign-yield-fill\": \"\\f837\",\n \"sign-yield\": \"\\f838\",\n \"ev-station-fill\": \"\\f839\",\n \"ev-station\": \"\\f83a\",\n \"fuel-pump-diesel-fill\": \"\\f83b\",\n \"fuel-pump-diesel\": \"\\f83c\",\n \"fuel-pump-fill\": \"\\f83d\",\n \"fuel-pump\": \"\\f83e\",\n \"0-circle-fill\": \"\\f83f\",\n \"0-circle\": \"\\f840\",\n \"0-square-fill\": \"\\f841\",\n \"0-square\": \"\\f842\",\n \"rocket-fill\": \"\\f843\",\n \"rocket-takeoff-fill\": \"\\f844\",\n \"rocket-takeoff\": \"\\f845\",\n \"rocket\": \"\\f846\",\n \"stripe\": \"\\f847\",\n \"subscript\": \"\\f848\",\n \"superscript\": \"\\f849\",\n \"trello\": \"\\f84a\",\n \"envelope-at-fill\": \"\\f84b\",\n \"envelope-at\": \"\\f84c\",\n \"regex\": \"\\f84d\",\n \"text-wrap\": \"\\f84e\",\n \"sign-dead-end-fill\": \"\\f84f\",\n \"sign-dead-end\": \"\\f850\",\n \"sign-do-not-enter-fill\": \"\\f851\",\n \"sign-do-not-enter\": \"\\f852\",\n \"sign-intersection-fill\": \"\\f853\",\n \"sign-intersection-side-fill\": \"\\f854\",\n \"sign-intersection-side\": \"\\f855\",\n \"sign-intersection-t-fill\": \"\\f856\",\n \"sign-intersection-t\": \"\\f857\",\n \"sign-intersection-y-fill\": \"\\f858\",\n \"sign-intersection-y\": \"\\f859\",\n \"sign-intersection\": \"\\f85a\",\n \"sign-merge-left-fill\": \"\\f85b\",\n \"sign-merge-left\": \"\\f85c\",\n \"sign-merge-right-fill\": \"\\f85d\",\n \"sign-merge-right\": \"\\f85e\",\n \"sign-no-left-turn-fill\": \"\\f85f\",\n \"sign-no-left-turn\": \"\\f860\",\n \"sign-no-parking-fill\": \"\\f861\",\n \"sign-no-parking\": \"\\f862\",\n \"sign-no-right-turn-fill\": \"\\f863\",\n \"sign-no-right-turn\": \"\\f864\",\n \"sign-railroad-fill\": \"\\f865\",\n \"sign-railroad\": \"\\f866\",\n \"building-add\": \"\\f867\",\n \"building-check\": \"\\f868\",\n \"building-dash\": \"\\f869\",\n \"building-down\": \"\\f86a\",\n \"building-exclamation\": \"\\f86b\",\n \"building-fill-add\": \"\\f86c\",\n \"building-fill-check\": \"\\f86d\",\n \"building-fill-dash\": \"\\f86e\",\n \"building-fill-down\": \"\\f86f\",\n \"building-fill-exclamation\": \"\\f870\",\n \"building-fill-gear\": \"\\f871\",\n \"building-fill-lock\": \"\\f872\",\n \"building-fill-slash\": \"\\f873\",\n \"building-fill-up\": \"\\f874\",\n \"building-fill-x\": \"\\f875\",\n \"building-fill\": \"\\f876\",\n \"building-gear\": \"\\f877\",\n \"building-lock\": \"\\f878\",\n \"building-slash\": \"\\f879\",\n \"building-up\": \"\\f87a\",\n \"building-x\": \"\\f87b\",\n \"buildings-fill\": \"\\f87c\",\n \"buildings\": \"\\f87d\",\n \"bus-front-fill\": \"\\f87e\",\n \"bus-front\": \"\\f87f\",\n \"ev-front-fill\": \"\\f880\",\n \"ev-front\": \"\\f881\",\n \"globe-americas\": \"\\f882\",\n \"globe-asia-australia\": \"\\f883\",\n \"globe-central-south-asia\": \"\\f884\",\n \"globe-europe-africa\": \"\\f885\",\n \"house-add-fill\": \"\\f886\",\n \"house-add\": \"\\f887\",\n \"house-check-fill\": \"\\f888\",\n \"house-check\": \"\\f889\",\n \"house-dash-fill\": \"\\f88a\",\n \"house-dash\": \"\\f88b\",\n \"house-down-fill\": \"\\f88c\",\n \"house-down\": \"\\f88d\",\n \"house-exclamation-fill\": \"\\f88e\",\n \"house-exclamation\": \"\\f88f\",\n \"house-gear-fill\": \"\\f890\",\n \"house-gear\": \"\\f891\",\n \"house-lock-fill\": \"\\f892\",\n \"house-lock\": \"\\f893\",\n \"house-slash-fill\": \"\\f894\",\n \"house-slash\": \"\\f895\",\n \"house-up-fill\": \"\\f896\",\n \"house-up\": \"\\f897\",\n \"house-x-fill\": \"\\f898\",\n \"house-x\": \"\\f899\",\n \"person-add\": \"\\f89a\",\n \"person-down\": \"\\f89b\",\n \"person-exclamation\": \"\\f89c\",\n \"person-fill-add\": \"\\f89d\",\n \"person-fill-check\": \"\\f89e\",\n \"person-fill-dash\": \"\\f89f\",\n \"person-fill-down\": \"\\f8a0\",\n \"person-fill-exclamation\": \"\\f8a1\",\n \"person-fill-gear\": \"\\f8a2\",\n \"person-fill-lock\": \"\\f8a3\",\n \"person-fill-slash\": \"\\f8a4\",\n \"person-fill-up\": \"\\f8a5\",\n \"person-fill-x\": \"\\f8a6\",\n \"person-gear\": \"\\f8a7\",\n \"person-lock\": \"\\f8a8\",\n \"person-slash\": \"\\f8a9\",\n \"person-up\": \"\\f8aa\",\n \"scooter\": \"\\f8ab\",\n \"taxi-front-fill\": \"\\f8ac\",\n \"taxi-front\": \"\\f8ad\",\n \"amd\": \"\\f8ae\",\n \"database-add\": \"\\f8af\",\n \"database-check\": \"\\f8b0\",\n \"database-dash\": \"\\f8b1\",\n \"database-down\": \"\\f8b2\",\n \"database-exclamation\": \"\\f8b3\",\n \"database-fill-add\": \"\\f8b4\",\n \"database-fill-check\": \"\\f8b5\",\n \"database-fill-dash\": \"\\f8b6\",\n \"database-fill-down\": \"\\f8b7\",\n \"database-fill-exclamation\": \"\\f8b8\",\n \"database-fill-gear\": \"\\f8b9\",\n \"database-fill-lock\": \"\\f8ba\",\n \"database-fill-slash\": \"\\f8bb\",\n \"database-fill-up\": \"\\f8bc\",\n \"database-fill-x\": \"\\f8bd\",\n \"database-fill\": \"\\f8be\",\n \"database-gear\": \"\\f8bf\",\n \"database-lock\": \"\\f8c0\",\n \"database-slash\": \"\\f8c1\",\n \"database-up\": \"\\f8c2\",\n \"database-x\": \"\\f8c3\",\n \"database\": \"\\f8c4\",\n \"houses-fill\": \"\\f8c5\",\n \"houses\": \"\\f8c6\",\n \"nvidia\": \"\\f8c7\",\n \"person-vcard-fill\": \"\\f8c8\",\n \"person-vcard\": \"\\f8c9\",\n \"sina-weibo\": \"\\f8ca\",\n \"tencent-qq\": \"\\f8cb\",\n \"wikipedia\": \"\\f8cc\",\n);\n\n@each $icon, $codepoint in $bootstrap-icons-map {\n .bi-#{$icon}::before { content: $codepoint; }\n}\n", "/**\r\n * Copyright (c) Microsoft Corporation. All Rights Reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n*/\r\n\r\n$enable-important-utilities: false;\r\n\r\n$container-max-widths: (\r\n xxl: 1768px\r\n) !default;\r\n\r\n@import \"bootstrap/scss/bootstrap.scss\";\r\n\r\n@import \"highlight.js/scss/github.scss\";\r\n\r\n@include color-mode(dark) {\r\n @import \"highlight.js/scss/github-dark.scss\";\r\n}\r\n\r\n@import \"highlight.scss\";\r\n\r\nh1,\r\nh2,\r\nh3,\r\nh4,\r\nh5,\r\nh6,\r\n.xref,\r\n.text-break {\r\n word-wrap: break-word;\r\n word-break: break-word;\r\n}\r\n\r\n.divider {\r\n margin: 0 5px;\r\n color: #ccc;\r\n}\r\n\r\narticle {\r\n // For REST API view source link\r\n span.small.pull-right {\r\n float: right;\r\n }\r\n\r\n img {\r\n max-width: 100%;\r\n height: auto;\r\n }\r\n}\r\n\r\n.codewrapper {\r\n position: relative;\r\n}\r\n\r\n.sample-response .response-content {\r\n max-height: 200px;\r\n}\r\n\r\n@media (max-width: 768px) {\r\n #mobile-indicator {\r\n display: block;\r\n }\r\n\r\n .mobile-hide {\r\n display: none;\r\n }\r\n\r\n /* workaround for #hashtag url is no longer needed */\r\n h1::before,\r\n h2::before,\r\n h3::before,\r\n h4::before {\r\n content: \"\";\r\n display: none;\r\n }\r\n}\r\n\r\n@mixin adjust-icon {\r\n font-family: bootstrap-icons;\r\n position: relative;\r\n margin-right: 0.5em;\r\n top: 0.2em;\r\n font-size: 1.25em;\r\n font-weight: normal;\r\n}\r\n\r\n@mixin underline-on-hover {\r\n text-decoration: none;\r\n &:hover, &:focus {\r\n text-decoration: underline;\r\n }\r\n}\r\n\r\n@import \"layout.scss\";\r\n@import \"nav.scss\";\r\n@import \"toc.scss\";\r\n@import \"markdown.scss\";\r\n@import \"search.scss\";\r\n@import \"dotnet.scss\";\r\n", "@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0-alpha3 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n", ":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n\n --#{$prefix}body-color: #{$body-color};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n // scss-docs-end root-body-variables\n\n @if $headings-color != null {\n --#{$prefix}heading-color: #{$headings-color};\n }\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-xxl: #{$border-radius-xxl};\n --#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n // Focus styles\n // scss-docs-start root-focus-variables\n --#{$prefix}focus-ring-width: #{$focus-ring-width};\n --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};\n --#{$prefix}focus-ring-color: #{$focus-ring-color};\n // scss-docs-end root-focus-variables\n\n // scss-docs-start root-form-validation-variables\n --#{$prefix}form-valid-color: #{$form-valid-color};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color};\n --#{$prefix}form-invalid-color: #{$form-invalid-color};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color};\n // scss-docs-end root-form-validation-variables\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n color-scheme: dark;\n\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n @each $color, $value in $theme-colors-text-dark {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle-dark {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle-dark {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n @if $headings-color-dark != null {\n --#{$prefix}heading-color: #{$headings-color-dark};\n }\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n\n --#{$prefix}form-valid-color: #{$form-valid-color-dark};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color-dark};\n --#{$prefix}form-invalid-color: #{$form-invalid-color-dark};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n", "// stylelint-disable scss/dimension-no-non-numeric-values\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query () {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query () {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + \" \" + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n } @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + \" \" + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n } @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + \" \" + $value;\n } @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + \" calc(\" + $min-width + if($value < 0, \" - \", \" + \") + $variable-width + \")\";\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluid-val: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluid-val {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule () {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluid-val);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule () {\n #{$property}: if($rfs-mode == max-media-query, $fluid-val, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n", "// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n", "// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n @include font-size(var(--#{$prefix}root-font-size));\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$prefix}body-font-family);\n @include font-size(var(--#{$prefix}body-font-size));\n font-weight: var(--#{$prefix}body-font-weight);\n line-height: var(--#{$prefix}body-line-height);\n color: var(--#{$prefix}body-color);\n text-align: var(--#{$prefix}body-text-align);\n background-color: var(--#{$prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n opacity: $hr-opacity;\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: var(--#{$prefix}heading-color, inherit);\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 2. Add explicit cursor to indicate changed behavior.\n// 3. Prevent the text-decoration to be skipped.\n\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}code-color);\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`