SEBWIN-414: Implemented home functionality for browser.

This commit is contained in:
Damian Büchel 2020-10-05 23:37:23 +02:00
parent ae7dcc0b0b
commit d1f0e012d5
25 changed files with 355 additions and 190 deletions

View file

@ -19,6 +19,7 @@ using SafeExamBrowser.Browser.Contracts;
using SafeExamBrowser.Browser.Contracts.Events; using SafeExamBrowser.Browser.Contracts.Events;
using SafeExamBrowser.Browser.Events; using SafeExamBrowser.Browser.Events;
using SafeExamBrowser.Configuration.Contracts; using SafeExamBrowser.Configuration.Contracts;
using SafeExamBrowser.Configuration.Contracts.Cryptography;
using SafeExamBrowser.I18n.Contracts; using SafeExamBrowser.I18n.Contracts;
using SafeExamBrowser.Logging.Contracts; using SafeExamBrowser.Logging.Contracts;
using SafeExamBrowser.Settings.Browser; using SafeExamBrowser.Settings.Browser;
@ -39,6 +40,7 @@ namespace SafeExamBrowser.Browser
private AppConfig appConfig; private AppConfig appConfig;
private List<BrowserApplicationInstance> instances; private List<BrowserApplicationInstance> instances;
private IFileSystemDialog fileSystemDialog; private IFileSystemDialog fileSystemDialog;
private IHashAlgorithm hashAlgorithm;
private INativeMethods nativeMethods; private INativeMethods nativeMethods;
private IMessageBox messageBox; private IMessageBox messageBox;
private IModuleLogger logger; private IModuleLogger logger;
@ -61,6 +63,7 @@ namespace SafeExamBrowser.Browser
AppConfig appConfig, AppConfig appConfig,
BrowserSettings settings, BrowserSettings settings,
IFileSystemDialog fileSystemDialog, IFileSystemDialog fileSystemDialog,
IHashAlgorithm hashAlgorithm,
INativeMethods nativeMethods, INativeMethods nativeMethods,
IMessageBox messageBox, IMessageBox messageBox,
IModuleLogger logger, IModuleLogger logger,
@ -69,6 +72,7 @@ namespace SafeExamBrowser.Browser
{ {
this.appConfig = appConfig; this.appConfig = appConfig;
this.fileSystemDialog = fileSystemDialog; this.fileSystemDialog = fileSystemDialog;
this.hashAlgorithm = hashAlgorithm;
this.nativeMethods = nativeMethods; this.nativeMethods = nativeMethods;
this.instances = new List<BrowserApplicationInstance>(); this.instances = new List<BrowserApplicationInstance>();
this.logger = logger; this.logger = logger;
@ -147,7 +151,7 @@ namespace SafeExamBrowser.Browser
var isMainInstance = instances.Count == 0; var isMainInstance = instances.Count == 0;
var instanceLogger = logger.CloneFor($"Browser Instance #{id}"); var instanceLogger = logger.CloneFor($"Browser Instance #{id}");
var startUrl = url ?? GenerateStartUrl(); var startUrl = url ?? GenerateStartUrl();
var instance = new BrowserApplicationInstance(appConfig, settings, id, isMainInstance, fileSystemDialog, messageBox, instanceLogger, text, uiFactory, startUrl); var instance = new BrowserApplicationInstance(appConfig, settings, id, isMainInstance, fileSystemDialog, hashAlgorithm, messageBox, instanceLogger, text, uiFactory, startUrl);
instance.ConfigurationDownloadRequested += (fileName, args) => ConfigurationDownloadRequested?.Invoke(fileName, args); instance.ConfigurationDownloadRequested += (fileName, args) => ConfigurationDownloadRequested?.Invoke(fileName, args);
instance.PopupRequested += Instance_PopupRequested; instance.PopupRequested += Instance_PopupRequested;

View file

@ -19,6 +19,7 @@ using SafeExamBrowser.Browser.Events;
using SafeExamBrowser.Browser.Filters; using SafeExamBrowser.Browser.Filters;
using SafeExamBrowser.Browser.Handlers; using SafeExamBrowser.Browser.Handlers;
using SafeExamBrowser.Configuration.Contracts; using SafeExamBrowser.Configuration.Contracts;
using SafeExamBrowser.Configuration.Contracts.Cryptography;
using SafeExamBrowser.I18n.Contracts; using SafeExamBrowser.I18n.Contracts;
using SafeExamBrowser.Logging.Contracts; using SafeExamBrowser.Logging.Contracts;
using SafeExamBrowser.Settings.Browser; using SafeExamBrowser.Settings.Browser;
@ -46,6 +47,7 @@ namespace SafeExamBrowser.Browser
private HttpClient httpClient; private HttpClient httpClient;
private bool isMainInstance; private bool isMainInstance;
private IFileSystemDialog fileSystemDialog; private IFileSystemDialog fileSystemDialog;
private IHashAlgorithm hashAlgorithm;
private IMessageBox messageBox; private IMessageBox messageBox;
private IModuleLogger logger; private IModuleLogger logger;
private BrowserSettings settings; private BrowserSettings settings;
@ -81,6 +83,7 @@ namespace SafeExamBrowser.Browser
int id, int id,
bool isMainInstance, bool isMainInstance,
IFileSystemDialog fileSystemDialog, IFileSystemDialog fileSystemDialog,
IHashAlgorithm hashAlgorithm,
IMessageBox messageBox, IMessageBox messageBox,
IModuleLogger logger, IModuleLogger logger,
IText text, IText text,
@ -92,6 +95,7 @@ namespace SafeExamBrowser.Browser
this.httpClient = new HttpClient(); this.httpClient = new HttpClient();
this.isMainInstance = isMainInstance; this.isMainInstance = isMainInstance;
this.fileSystemDialog = fileSystemDialog; this.fileSystemDialog = fileSystemDialog;
this.hashAlgorithm = hashAlgorithm;
this.messageBox = messageBox; this.messageBox = messageBox;
this.logger = logger; this.logger = logger;
this.settings = settings; this.settings = settings;
@ -139,6 +143,7 @@ namespace SafeExamBrowser.Browser
downloadHandler.ConfigurationDownloadRequested += DownloadHandler_ConfigurationDownloadRequested; downloadHandler.ConfigurationDownloadRequested += DownloadHandler_ConfigurationDownloadRequested;
downloadHandler.DownloadUpdated += DownloadHandler_DownloadUpdated; downloadHandler.DownloadUpdated += DownloadHandler_DownloadUpdated;
keyboardHandler.FindRequested += KeyboardHandler_FindRequested; keyboardHandler.FindRequested += KeyboardHandler_FindRequested;
keyboardHandler.HomeNavigationRequested += HomeNavigationRequested;
keyboardHandler.ReloadRequested += ReloadRequested; keyboardHandler.ReloadRequested += ReloadRequested;
keyboardHandler.ZoomInRequested += ZoomInRequested; keyboardHandler.ZoomInRequested += ZoomInRequested;
keyboardHandler.ZoomOutRequested += ZoomOutRequested; keyboardHandler.ZoomOutRequested += ZoomOutRequested;
@ -205,6 +210,7 @@ namespace SafeExamBrowser.Browser
window.DeveloperConsoleRequested += Window_DeveloperConsoleRequested; window.DeveloperConsoleRequested += Window_DeveloperConsoleRequested;
window.FindRequested += Window_FindRequested; window.FindRequested += Window_FindRequested;
window.ForwardNavigationRequested += Window_ForwardNavigationRequested; window.ForwardNavigationRequested += Window_ForwardNavigationRequested;
window.HomeNavigationRequested += HomeNavigationRequested;
window.ReloadRequested += ReloadRequested; window.ReloadRequested += ReloadRequested;
window.ZoomInRequested += ZoomInRequested; window.ZoomInRequested += ZoomInRequested;
window.ZoomOutRequested += ZoomOutRequested; window.ZoomOutRequested += ZoomOutRequested;
@ -366,6 +372,50 @@ namespace SafeExamBrowser.Browser
window.UpdateDownloadState(state); window.UpdateDownloadState(state);
} }
private void HomeNavigationRequested()
{
if (isMainInstance && (settings.UseStartUrlAsHomeUrl || !string.IsNullOrWhiteSpace(settings.HomeUrl)))
{
var navigate = false;
var url = settings.UseStartUrlAsHomeUrl ? settings.StartUrl : settings.HomeUrl;
if (settings.HomeNavigationRequiresPassword && !string.IsNullOrWhiteSpace(settings.HomePasswordHash))
{
var message = text.Get(TextKey.PasswordDialog_BrowserHomePasswordRequired);
var title = !string.IsNullOrWhiteSpace(settings.HomeNavigationMessage) ? settings.HomeNavigationMessage : text.Get(TextKey.PasswordDialog_BrowserHomePasswordRequiredTitle);
var dialog = uiFactory.CreatePasswordDialog(message, title);
var result = dialog.Show(window);
if (result.Success)
{
var passwordHash = hashAlgorithm.GenerateHashFor(result.Password);
if (settings.HomePasswordHash.Equals(passwordHash, StringComparison.OrdinalIgnoreCase))
{
navigate = true;
}
else
{
messageBox.Show(TextKey.MessageBox_InvalidHomePassword, TextKey.MessageBox_InvalidHomePasswordTitle, icon: MessageBoxIcon.Warning, parent: window);
}
}
}
else
{
var message = text.Get(TextKey.MessageBox_BrowserHomeQuestion);
var title = !string.IsNullOrWhiteSpace(settings.HomeNavigationMessage) ? settings.HomeNavigationMessage : text.Get(TextKey.MessageBox_BrowserHomeQuestionTitle);
var result = messageBox.Show(message, title, MessageBoxAction.YesNo, MessageBoxIcon.Question, window);
navigate = result == MessageBoxResult.Yes;
}
if (navigate)
{
control.NavigateTo(url);
}
}
}
private void KeyboardHandler_FindRequested() private void KeyboardHandler_FindRequested()
{ {
if (settings.AllowFind) if (settings.AllowFind)

View file

@ -15,6 +15,7 @@ namespace SafeExamBrowser.Browser.Handlers
internal class KeyboardHandler : IKeyboardHandler internal class KeyboardHandler : IKeyboardHandler
{ {
internal event ActionRequestedEventHandler FindRequested; internal event ActionRequestedEventHandler FindRequested;
internal event ActionRequestedEventHandler HomeNavigationRequested;
internal event ActionRequestedEventHandler ReloadRequested; internal event ActionRequestedEventHandler ReloadRequested;
internal event ActionRequestedEventHandler ZoomInRequested; internal event ActionRequestedEventHandler ZoomInRequested;
internal event ActionRequestedEventHandler ZoomOutRequested; internal event ActionRequestedEventHandler ZoomOutRequested;
@ -25,24 +26,32 @@ namespace SafeExamBrowser.Browser.Handlers
var ctrl = modifiers.HasFlag(CefEventFlags.ControlDown); var ctrl = modifiers.HasFlag(CefEventFlags.ControlDown);
var shift = modifiers.HasFlag(CefEventFlags.ShiftDown); var shift = modifiers.HasFlag(CefEventFlags.ShiftDown);
if (type == KeyType.KeyUp && ctrl && (keyCode == (int) Keys.F)) if (type == KeyType.KeyUp)
{ {
FindRequested?.Invoke(); if (ctrl && keyCode == (int) Keys.F)
} {
FindRequested?.Invoke();
}
if (type == KeyType.KeyUp && ((keyCode == (int) Keys.Add && ctrl) || (keyCode == (int) Keys.D1 && ctrl && shift))) if (keyCode == (int) Keys.Home)
{ {
ZoomInRequested?.Invoke(); HomeNavigationRequested?.Invoke();
} }
if (type == KeyType.KeyUp && (keyCode == (int) Keys.Subtract || keyCode == (int) Keys.OemMinus) && ctrl) if ((ctrl && keyCode == (int) Keys.Add) || (ctrl && shift && keyCode == (int) Keys.D1))
{ {
ZoomOutRequested?.Invoke(); ZoomInRequested?.Invoke();
} }
if (type == KeyType.KeyUp && (keyCode == (int) Keys.D0 || keyCode == (int) Keys.NumPad0) && ctrl) if (ctrl && (keyCode == (int) Keys.Subtract || keyCode == (int) Keys.OemMinus))
{ {
ZoomResetRequested?.Invoke(); ZoomOutRequested?.Invoke();
}
if (ctrl && (keyCode == (int) Keys.D0 || keyCode == (int) Keys.NumPad0))
{
ZoomResetRequested?.Invoke();
}
} }
return false; return false;

View file

@ -202,7 +202,7 @@ namespace SafeExamBrowser.Client
{ {
var fileSystemDialog = BuildFileSystemDialog(); var fileSystemDialog = BuildFileSystemDialog();
var moduleLogger = ModuleLogger(nameof(BrowserApplication)); var moduleLogger = ModuleLogger(nameof(BrowserApplication));
var browser = new BrowserApplication(context.AppConfig, context.Settings.Browser, fileSystemDialog, nativeMethods, messageBox, moduleLogger, text, uiFactory); var browser = new BrowserApplication(context.AppConfig, context.Settings.Browser, fileSystemDialog, new HashAlgorithm(), nativeMethods, messageBox, moduleLogger, text, uiFactory);
var operation = new BrowserOperation(actionCenter, context, logger, taskbar, taskview, uiFactory); var operation = new BrowserOperation(actionCenter, context, logger, taskbar, taskview, uiFactory);
context.Browser = browser; context.Browser = browser;

View file

@ -93,6 +93,18 @@ namespace SafeExamBrowser.Configuration.ConfigurationData.DataMapping
case Keys.Browser.Filter.FilterRules: case Keys.Browser.Filter.FilterRules:
MapFilterRules(settings, value); MapFilterRules(settings, value);
break; break;
case Keys.Browser.HomeButtonMessage:
MapHomeButtonMessage(settings, value);
break;
case Keys.Browser.HomeButtonRequiresPassword:
MapHomeButtonRequiresPassword(settings, value);
break;
case Keys.Browser.HomeButtonUrl:
MapHomeButtonUrl(settings, value);
break;
case Keys.Browser.HomeButtonUseStartUrl:
MapHomeButtonUseStartUrl(settings, value);
break;
case Keys.Browser.MainWindow.AllowAddressBar: case Keys.Browser.MainWindow.AllowAddressBar:
MapAllowAddressBar(settings, value); MapAllowAddressBar(settings, value);
break; break;
@ -332,6 +344,38 @@ namespace SafeExamBrowser.Configuration.ConfigurationData.DataMapping
} }
} }
private void MapHomeButtonMessage(AppSettings settings, object value)
{
if (value is string message)
{
settings.Browser.HomeNavigationMessage = message;
}
}
private void MapHomeButtonRequiresPassword(AppSettings settings, object value)
{
if (value is bool requires)
{
settings.Browser.HomeNavigationRequiresPassword = requires;
}
}
private void MapHomeButtonUrl(AppSettings settings, object value)
{
if (value is string url)
{
settings.Browser.HomeUrl = url;
}
}
private void MapHomeButtonUseStartUrl(AppSettings settings, object value)
{
if (value is bool use)
{
settings.Browser.UseStartUrlAsHomeUrl = use;
}
}
private void MapMainWindowMode(AppSettings settings, object value) private void MapMainWindowMode(AppSettings settings, object value)
{ {
const int FULLSCREEN = 1; const int FULLSCREEN = 1;

View file

@ -21,6 +21,7 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
{ {
AllowBrowserToolbarForReloading(rawData, settings); AllowBrowserToolbarForReloading(rawData, settings);
CalculateConfigurationKey(rawData, settings); CalculateConfigurationKey(rawData, settings);
HandleBrowserHomeFunctionality(settings);
RemoveLegacyBrowsers(settings); RemoveLegacyBrowsers(settings);
} }
@ -57,6 +58,12 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
} }
} }
private void HandleBrowserHomeFunctionality(AppSettings settings)
{
settings.Browser.MainWindow.ShowHomeButton = settings.Browser.UseStartUrlAsHomeUrl || !string.IsNullOrWhiteSpace(settings.Browser.HomeUrl);
settings.Browser.HomePasswordHash = settings.Security.QuitPasswordHash;
}
private void RemoveLegacyBrowsers(AppSettings settings) private void RemoveLegacyBrowsers(AppSettings settings)
{ {
var legacyBrowsers = new List<WhitelistApplication>(); var legacyBrowsers = new List<WhitelistApplication>();

View file

@ -112,6 +112,7 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
settings.Browser.AdditionalWindow.Position = WindowPosition.Right; settings.Browser.AdditionalWindow.Position = WindowPosition.Right;
settings.Browser.AdditionalWindow.RelativeHeight = 100; settings.Browser.AdditionalWindow.RelativeHeight = 100;
settings.Browser.AdditionalWindow.RelativeWidth = 50; settings.Browser.AdditionalWindow.RelativeWidth = 50;
settings.Browser.AdditionalWindow.ShowHomeButton = false;
settings.Browser.AdditionalWindow.ShowReloadWarning = false; settings.Browser.AdditionalWindow.ShowReloadWarning = false;
settings.Browser.AdditionalWindow.ShowToolbar = false; settings.Browser.AdditionalWindow.ShowToolbar = false;
settings.Browser.AdditionalWindow.UrlPolicy = UrlPolicy.Never; settings.Browser.AdditionalWindow.UrlPolicy = UrlPolicy.Never;
@ -135,6 +136,7 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
settings.Browser.MainWindow.FullScreenMode = false; settings.Browser.MainWindow.FullScreenMode = false;
settings.Browser.MainWindow.RelativeHeight = 100; settings.Browser.MainWindow.RelativeHeight = 100;
settings.Browser.MainWindow.RelativeWidth = 100; settings.Browser.MainWindow.RelativeWidth = 100;
settings.Browser.MainWindow.ShowHomeButton = false;
settings.Browser.MainWindow.ShowReloadWarning = true; settings.Browser.MainWindow.ShowReloadWarning = true;
settings.Browser.MainWindow.ShowToolbar = false; settings.Browser.MainWindow.ShowToolbar = false;
settings.Browser.MainWindow.UrlPolicy = UrlPolicy.Never; settings.Browser.MainWindow.UrlPolicy = UrlPolicy.Never;

View file

@ -58,6 +58,10 @@ namespace SafeExamBrowser.Configuration.ConfigurationData
internal const string DownloadPdfFiles = "downloadPDFFiles"; internal const string DownloadPdfFiles = "downloadPDFFiles";
internal const string EnableBrowser = "enableSebBrowser"; internal const string EnableBrowser = "enableSebBrowser";
internal const string ExamKeySalt = "examKeySalt"; internal const string ExamKeySalt = "examKeySalt";
internal const string HomeButtonMessage = "restartExamText";
internal const string HomeButtonRequiresPassword = "restartExamPasswordProtected";
internal const string HomeButtonUrl = "restartExamURL";
internal const string HomeButtonUseStartUrl = "restartExamUseStartURL";
internal const string PopupPolicy = "newBrowserWindowByLinkPolicy"; internal const string PopupPolicy = "newBrowserWindowByLinkPolicy";
internal const string PopupBlockForeignHost = "newBrowserWindowByLinkBlockForeign"; internal const string PopupBlockForeignHost = "newBrowserWindowByLinkBlockForeign";
internal const string QuitUrl = "quitURL"; internal const string QuitUrl = "quitURL";

View file

@ -71,6 +71,8 @@ namespace SafeExamBrowser.I18n.Contracts
MessageBox_ApplicationNotFoundTitle, MessageBox_ApplicationNotFoundTitle,
MessageBox_ApplicationTerminationFailure, MessageBox_ApplicationTerminationFailure,
MessageBox_ApplicationTerminationFailureTitle, MessageBox_ApplicationTerminationFailureTitle,
MessageBox_BrowserHomeQuestion,
MessageBox_BrowserHomeQuestionTitle,
MessageBox_BrowserNavigationBlocked, MessageBox_BrowserNavigationBlocked,
MessageBox_BrowserNavigationBlockedTitle, MessageBox_BrowserNavigationBlockedTitle,
MessageBox_BrowserQuitUrlConfirmation, MessageBox_BrowserQuitUrlConfirmation,
@ -84,6 +86,8 @@ namespace SafeExamBrowser.I18n.Contracts
MessageBox_ConfigurationDownloadErrorTitle, MessageBox_ConfigurationDownloadErrorTitle,
MessageBox_InvalidConfigurationData, MessageBox_InvalidConfigurationData,
MessageBox_InvalidConfigurationDataTitle, MessageBox_InvalidConfigurationDataTitle,
MessageBox_InvalidHomePassword,
MessageBox_InvalidHomePasswordTitle,
MessageBox_InvalidPasswordError, MessageBox_InvalidPasswordError,
MessageBox_InvalidPasswordErrorTitle, MessageBox_InvalidPasswordErrorTitle,
MessageBox_InvalidQuitPassword, MessageBox_InvalidQuitPassword,
@ -155,6 +159,8 @@ namespace SafeExamBrowser.I18n.Contracts
OperationStatus_WaitExplorerStartup, OperationStatus_WaitExplorerStartup,
OperationStatus_WaitExplorerTermination, OperationStatus_WaitExplorerTermination,
OperationStatus_WaitRuntimeDisconnection, OperationStatus_WaitRuntimeDisconnection,
PasswordDialog_BrowserHomePasswordRequired,
PasswordDialog_BrowserHomePasswordRequiredTitle,
PasswordDialog_Cancel, PasswordDialog_Cancel,
PasswordDialog_Confirm, PasswordDialog_Confirm,
PasswordDialog_LocalAdminPasswordRequired, PasswordDialog_LocalAdminPasswordRequired,

View file

@ -171,6 +171,12 @@
<Entry key="MessageBox_ApplicationTerminationFailureTitle"> <Entry key="MessageBox_ApplicationTerminationFailureTitle">
Automatisches Beenden fehlgeschlagen Automatisches Beenden fehlgeschlagen
</Entry> </Entry>
<Entry key="MessageBox_BrowserHomeQuestion">
Sind Sie sicher? (Diese Funktion loggt Sie nicht aus, falls Sie sich auf einer Website eingeloggt haben)
</Entry>
<Entry key="MessageBox_BrowserHomeQuestionTitle">
Zurück zum Start
</Entry>
<Entry key="MessageBox_BrowserNavigationBlocked"> <Entry key="MessageBox_BrowserNavigationBlocked">
Zugriff auf "%%URL%%" ist gemäss der aktiven Konfiguration nicht erlaubt. Zugriff auf "%%URL%%" ist gemäss der aktiven Konfiguration nicht erlaubt.
</Entry> </Entry>
@ -210,6 +216,12 @@
<Entry key="MessageBox_InvalidConfigurationDataTitle"> <Entry key="MessageBox_InvalidConfigurationDataTitle">
Konfigurations-Fehler Konfigurations-Fehler
</Entry> </Entry>
<Entry key="MessageBox_InvalidHomePassword">
Das eingegebene Passwort ist nicht korrekt.
</Entry>
<Entry key="MessageBox_InvalidHomePasswordTitle">
Ungültiges Passwort
</Entry>
<Entry key="MessageBox_InvalidPasswordError"> <Entry key="MessageBox_InvalidPasswordError">
Sie haben 5 mal das falsche Passwort eingegeben. SEB wird sich nun beenden... Sie haben 5 mal das falsche Passwort eingegeben. SEB wird sich nun beenden...
</Entry> </Entry>
@ -423,6 +435,12 @@
<Entry key="OperationStatus_WaitRuntimeDisconnection"> <Entry key="OperationStatus_WaitRuntimeDisconnection">
Warte bis Runtime Verbindung trennt Warte bis Runtime Verbindung trennt
</Entry> </Entry>
<Entry key="PasswordDialog_BrowserHomePasswordRequired">
Beenden-/Neustart-Passwort eingeben: (Diese Funktion loggt Sie nicht aus, falls Sie sich auf einer Website eingeloggt haben)
</Entry>
<Entry key="PasswordDialog_BrowserHomePasswordRequiredTitle">
Zurück zum Start
</Entry>
<Entry key="PasswordDialog_Cancel"> <Entry key="PasswordDialog_Cancel">
Abbrechen Abbrechen
</Entry> </Entry>

View file

@ -171,6 +171,12 @@
<Entry key="MessageBox_ApplicationTerminationFailureTitle"> <Entry key="MessageBox_ApplicationTerminationFailureTitle">
Automatic Termination Failed Automatic Termination Failed
</Entry> </Entry>
<Entry key="MessageBox_BrowserHomeQuestion">
Are you sure? (This function doesn't log you out if you are logged in on a website)
</Entry>
<Entry key="MessageBox_BrowserHomeQuestionTitle">
Back to Start
</Entry>
<Entry key="MessageBox_BrowserNavigationBlocked"> <Entry key="MessageBox_BrowserNavigationBlocked">
Access to "%%URL%%" is not allowed according to the current configuration. Access to "%%URL%%" is not allowed according to the current configuration.
</Entry> </Entry>
@ -210,6 +216,12 @@
<Entry key="MessageBox_InvalidConfigurationDataTitle"> <Entry key="MessageBox_InvalidConfigurationDataTitle">
Configuration Error Configuration Error
</Entry> </Entry>
<Entry key="MessageBox_InvalidHomePassword">
The password you entered is incorrect.
</Entry>
<Entry key="MessageBox_InvalidHomePasswordTitle">
Invalid Password
</Entry>
<Entry key="MessageBox_InvalidPasswordError"> <Entry key="MessageBox_InvalidPasswordError">
You failed to enter the correct password within 5 attempts. SEB will now terminate... You failed to enter the correct password within 5 attempts. SEB will now terminate...
</Entry> </Entry>
@ -423,6 +435,12 @@
<Entry key="OperationStatus_WaitRuntimeDisconnection"> <Entry key="OperationStatus_WaitRuntimeDisconnection">
Waiting for the runtime to disconnect Waiting for the runtime to disconnect
</Entry> </Entry>
<Entry key="PasswordDialog_BrowserHomePasswordRequired">
Enter quit/restart password: (This function doesn't log you out if you are logged in on a website)
</Entry>
<Entry key="PasswordDialog_BrowserHomePasswordRequiredTitle">
Back to Start
</Entry>
<Entry key="PasswordDialog_Cancel"> <Entry key="PasswordDialog_Cancel">
Cancel Cancel
</Entry> </Entry>

View file

@ -171,6 +171,12 @@
<Entry key="MessageBox_ApplicationTerminationFailureTitle"> <Entry key="MessageBox_ApplicationTerminationFailureTitle">
Chiusura automatica non riuscita Chiusura automatica non riuscita
</Entry> </Entry>
<Entry key="MessageBox_BrowserHomeQuestion">
Sei sicuro? (Questa funzione non ti disconnette se sei loggato su un sito web)
</Entry>
<Entry key="MessageBox_BrowserHomeQuestionTitle">
Torna all'inizio
</Entry>
<Entry key="MessageBox_BrowserNavigationBlocked"> <Entry key="MessageBox_BrowserNavigationBlocked">
L'accesso a "%%URL%%" non è consentito in base alla configurazione corrente. L'accesso a "%%URL%%" non è consentito in base alla configurazione corrente.
</Entry> </Entry>
@ -210,6 +216,12 @@
<Entry key="MessageBox_InvalidConfigurationDataTitle"> <Entry key="MessageBox_InvalidConfigurationDataTitle">
Errore di configurazione Errore di configurazione
</Entry> </Entry>
<Entry key="MessageBox_InvalidHomePassword">
Non sei riuscito a inserire la password corretta.
</Entry>
<Entry key="MessageBox_InvalidHomePasswordTitle">
Password non valida
</Entry>
<Entry key="MessageBox_InvalidPasswordError"> <Entry key="MessageBox_InvalidPasswordError">
Non sei riuscito a inserire la password corretta in 5 tentativi. SEB ora verrà chiuso ... Non sei riuscito a inserire la password corretta in 5 tentativi. SEB ora verrà chiuso ...
</Entry> </Entry>
@ -423,6 +435,12 @@
<Entry key="OperationStatus_WaitRuntimeDisconnection"> <Entry key="OperationStatus_WaitRuntimeDisconnection">
In attesa della disconnessione del runtime In attesa della disconnessione del runtime
</Entry> </Entry>
<Entry key="PasswordDialog_BrowserHomePasswordRequired">
Inserisci la password di chiusura / riavvio: (questa funzione non ti disconnette se sei connesso a un sito web)
</Entry>
<Entry key="PasswordDialog_BrowserHomePasswordRequiredTitle">
Torna all'inizio
</Entry>
<Entry key="PasswordDialog_Cancel"> <Entry key="PasswordDialog_Cancel">
Annulla Annulla
</Entry> </Entry>

View file

@ -118,6 +118,26 @@ namespace SafeExamBrowser.Settings.Browser
/// </summary> /// </summary>
public FilterSettings Filter { get; set; } public FilterSettings Filter { get; set; }
/// <summary>
/// An optional custom message shown before navigating home.
/// </summary>
public string HomeNavigationMessage { get; set; }
/// <summary>
/// Determines whether a password is required to navigate home.
/// </summary>
public bool HomeNavigationRequiresPassword { get; set; }
/// <summary>
/// The hash code of the password optionally required to navigate home.
/// </summary>
public string HomePasswordHash { get; set; }
/// <summary>
/// An optional custom URL to be used when navigating home.
/// </summary>
public string HomeUrl { get; set; }
/// <summary> /// <summary>
/// The settings to be used for the main browser window. /// The settings to be used for the main browser window.
/// </summary> /// </summary>
@ -173,6 +193,11 @@ namespace SafeExamBrowser.Settings.Browser
/// </summary> /// </summary>
public bool UseQueryParameter { get; set; } public bool UseQueryParameter { get; set; }
/// <summary>
/// Determines whether the start URL will be used when navigating home.
/// </summary>
public bool UseStartUrlAsHomeUrl { get; set; }
/// <summary> /// <summary>
/// A custom suffix to be appended to the user agent. /// A custom suffix to be appended to the user agent.
/// </summary> /// </summary>

View file

@ -71,6 +71,11 @@ namespace SafeExamBrowser.Settings.Browser
/// </summary> /// </summary>
public int? RelativeWidth { get; set; } public int? RelativeWidth { get; set; }
/// <summary>
/// Determines whether the home button is visible.
/// </summary>
public bool ShowHomeButton { get; set; }
/// <summary> /// <summary>
/// Determines whether the user will need to confirm every reload attempt. /// Determines whether the user will need to confirm every reload attempt.
/// </summary> /// </summary>

View file

@ -59,6 +59,11 @@ namespace SafeExamBrowser.UserInterface.Contracts.Browser
/// </summary> /// </summary>
event ActionRequestedEventHandler ForwardNavigationRequested; event ActionRequestedEventHandler ForwardNavigationRequested;
/// <summary>
/// Event fired when the user would like to navigate home.
/// </summary>
event ActionRequestedEventHandler HomeNavigationRequested;
/// <summary> /// <summary>
/// Event fired when the user would like to reload the current page. /// Event fired when the user would like to reload the current page.
/// </summary> /// </summary>

View file

@ -386,7 +386,7 @@
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Resource> </Resource>
<Resource Include="Images\SkipBack.xaml"> <Resource Include="Images\Home.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Resource> </Resource>

View file

@ -32,15 +32,17 @@
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" /> <ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Button Grid.Column="0" x:Name="BackwardButton" Height="30" HorizontalAlignment="Center" Margin="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" /> <Button Grid.Column="0" x:Name="HomeButton" Height="30" HorizontalAlignment="Center" Margin="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" />
<Button Grid.Column="1" x:Name="ForwardButton" Height="30" HorizontalAlignment="Center" Margin="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" /> <Button Grid.Column="1" x:Name="BackwardButton" Height="30" HorizontalAlignment="Center" Margin="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" />
<Button Grid.Column="2" x:Name="ReloadButton" Height="30" HorizontalAlignment="Center" Margin="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" /> <Button Grid.Column="2" x:Name="ForwardButton" Height="30" HorizontalAlignment="Center" Margin="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" />
<TextBox Grid.Column="3" x:Name="UrlTextBox" Height="25" HorizontalAlignment="Stretch" Margin="5,0" Padding="5,0" VerticalContentAlignment="Center" /> <Button Grid.Column="3" x:Name="ReloadButton" Height="30" HorizontalAlignment="Center" Margin="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" />
<Button Grid.Column="4" x:Name="DownloadsButton" Height="30" HorizontalAlignment="Center" Margin="5" Padding="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" Visibility="Collapsed"> <TextBox Grid.Column="4" x:Name="UrlTextBox" Height="25" HorizontalAlignment="Stretch" Margin="5,0" Padding="5,0" VerticalContentAlignment="Center" />
<Button Grid.Column="5" x:Name="DownloadsButton" Height="30" HorizontalAlignment="Center" Margin="5" Padding="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" Visibility="Collapsed">
<fa:ImageAwesome Icon="Download" /> <fa:ImageAwesome Icon="Download" />
</Button> </Button>
<Popup x:Name="DownloadsPopup" AllowsTransparency="True" PopupAnimation="Slide" Placement="Custom" PlacementTarget="{Binding ElementName=BrowserControlHost}"> <Popup x:Name="DownloadsPopup" AllowsTransparency="True" PopupAnimation="Slide" Placement="Custom" PlacementTarget="{Binding ElementName=BrowserControlHost}">
@ -48,7 +50,7 @@
<StackPanel x:Name="Downloads" Orientation="Vertical" /> <StackPanel x:Name="Downloads" Orientation="Vertical" />
</Border> </Border>
</Popup> </Popup>
<Button Grid.Column="5" x:Name="MenuButton" Height="30" HorizontalAlignment="Center" Margin="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" /> <Button Grid.Column="6" x:Name="MenuButton" Height="30" HorizontalAlignment="Center" Margin="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" />
<Popup x:Name="MenuPopup" IsOpen="False" AllowsTransparency="True" PopupAnimation="Slide" Placement="Custom" PlacementTarget="{Binding ElementName=BrowserControlHost}"> <Popup x:Name="MenuPopup" IsOpen="False" AllowsTransparency="True" PopupAnimation="Slide" Placement="Custom" PlacementTarget="{Binding ElementName=BrowserControlHost}">
<Border Background="{StaticResource BackgroundBrush}" BorderBrush="LightGray" BorderThickness="1,0,1,1" Width="250"> <Border Background="{StaticResource BackgroundBrush}" BorderBrush="LightGray" BorderThickness="1,0,1,1" Width="250">
<StackPanel Orientation="Vertical"> <StackPanel Orientation="Vertical">

View file

@ -49,6 +49,7 @@ namespace SafeExamBrowser.UserInterface.Desktop.Windows
public event ActionRequestedEventHandler DeveloperConsoleRequested; public event ActionRequestedEventHandler DeveloperConsoleRequested;
public event FindRequestedEventHandler FindRequested; public event FindRequestedEventHandler FindRequested;
public event ActionRequestedEventHandler ForwardNavigationRequested; public event ActionRequestedEventHandler ForwardNavigationRequested;
public event ActionRequestedEventHandler HomeNavigationRequested;
public event ActionRequestedEventHandler ReloadRequested; public event ActionRequestedEventHandler ReloadRequested;
public event ActionRequestedEventHandler ZoomInRequested; public event ActionRequestedEventHandler ZoomInRequested;
public event ActionRequestedEventHandler ZoomOutRequested; public event ActionRequestedEventHandler ZoomOutRequested;
@ -197,6 +198,11 @@ namespace SafeExamBrowser.UserInterface.Desktop.Windows
ReloadRequested?.Invoke(); ReloadRequested?.Invoke();
} }
if (e.Key == Key.Home)
{
HomeNavigationRequested?.Invoke();
}
if (settings.AllowFind && (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)) && e.Key == Key.F) if (settings.AllowFind && (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)) && e.Key == Key.F)
{ {
ShowFindbar(); ShowFindbar();
@ -303,6 +309,7 @@ namespace SafeExamBrowser.UserInterface.Desktop.Windows
FindMenuButton.Click += (o, args) => ShowFindbar(); FindMenuButton.Click += (o, args) => ShowFindbar();
FindTextBox.KeyUp += FindTextBox_KeyUp; FindTextBox.KeyUp += FindTextBox_KeyUp;
ForwardButton.Click += (o, args) => ForwardNavigationRequested?.Invoke(); ForwardButton.Click += (o, args) => ForwardNavigationRequested?.Invoke();
HomeButton.Click += (o, args) => HomeNavigationRequested?.Invoke();
Loaded += BrowserWindow_Loaded; Loaded += BrowserWindow_Loaded;
MenuButton.Click += (o, args) => MenuPopup.IsOpen = !MenuPopup.IsOpen; MenuButton.Click += (o, args) => MenuPopup.IsOpen = !MenuPopup.IsOpen;
MenuButton.MouseLeave += (o, args) => Task.Delay(250).ContinueWith(_ => Dispatcher.Invoke(() => MenuPopup.IsOpen = MenuPopup.IsMouseOver)); MenuButton.MouseLeave += (o, args) => Task.Delay(250).ContinueWith(_ => Dispatcher.Invoke(() => MenuPopup.IsOpen = MenuPopup.IsMouseOver));
@ -328,23 +335,17 @@ namespace SafeExamBrowser.UserInterface.Desktop.Windows
{ {
BackwardButton.IsEnabled = WindowSettings.AllowBackwardNavigation; BackwardButton.IsEnabled = WindowSettings.AllowBackwardNavigation;
BackwardButton.Visibility = WindowSettings.AllowBackwardNavigation ? Visibility.Visible : Visibility.Collapsed; BackwardButton.Visibility = WindowSettings.AllowBackwardNavigation ? Visibility.Visible : Visibility.Collapsed;
DeveloperConsoleMenuItem.Visibility = WindowSettings.AllowDeveloperConsole ? Visibility.Visible : Visibility.Collapsed; DeveloperConsoleMenuItem.Visibility = WindowSettings.AllowDeveloperConsole ? Visibility.Visible : Visibility.Collapsed;
FindMenuItem.Visibility = settings.AllowFind ? Visibility.Visible : Visibility.Collapsed; FindMenuItem.Visibility = settings.AllowFind ? Visibility.Visible : Visibility.Collapsed;
ForwardButton.IsEnabled = WindowSettings.AllowForwardNavigation; ForwardButton.IsEnabled = WindowSettings.AllowForwardNavigation;
ForwardButton.Visibility = WindowSettings.AllowForwardNavigation ? Visibility.Visible : Visibility.Collapsed; ForwardButton.Visibility = WindowSettings.AllowForwardNavigation ? Visibility.Visible : Visibility.Collapsed;
HomeButton.IsEnabled = WindowSettings.ShowHomeButton;
HomeButton.Visibility = WindowSettings.ShowHomeButton ? Visibility.Visible : Visibility.Collapsed;
MenuButton.IsEnabled = settings.AllowPageZoom || WindowSettings.AllowDeveloperConsole; MenuButton.IsEnabled = settings.AllowPageZoom || WindowSettings.AllowDeveloperConsole;
ReloadButton.IsEnabled = WindowSettings.AllowReloading; ReloadButton.IsEnabled = WindowSettings.AllowReloading;
ReloadButton.Visibility = WindowSettings.AllowReloading ? Visibility.Visible : Visibility.Collapsed; ReloadButton.Visibility = WindowSettings.AllowReloading ? Visibility.Visible : Visibility.Collapsed;
Toolbar.Visibility = WindowSettings.ShowToolbar ? Visibility.Visible : Visibility.Collapsed; Toolbar.Visibility = WindowSettings.ShowToolbar ? Visibility.Visible : Visibility.Collapsed;
UrlTextBox.Visibility = WindowSettings.AllowAddressBar ? Visibility.Visible : Visibility.Hidden; UrlTextBox.Visibility = WindowSettings.AllowAddressBar ? Visibility.Visible : Visibility.Hidden;
ZoomMenuItem.Visibility = settings.AllowPageZoom ? Visibility.Visible : Visibility.Collapsed; ZoomMenuItem.Visibility = settings.AllowPageZoom ? Visibility.Visible : Visibility.Collapsed;
} }
@ -416,11 +417,13 @@ namespace SafeExamBrowser.UserInterface.Desktop.Windows
{ {
var backward = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Desktop;component/Images/NavigateBack.xaml") }; var backward = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Desktop;component/Images/NavigateBack.xaml") };
var forward = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Desktop;component/Images/NavigateForward.xaml") }; var forward = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Desktop;component/Images/NavigateForward.xaml") };
var home = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Desktop;component/Images/Home.xaml") };
var menu = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Desktop;component/Images/Menu.xaml") }; var menu = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Desktop;component/Images/Menu.xaml") };
var reload = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Desktop;component/Images/Reload.xaml") }; var reload = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Desktop;component/Images/Reload.xaml") };
BackwardButton.Content = IconResourceLoader.Load(backward); BackwardButton.Content = IconResourceLoader.Load(backward);
ForwardButton.Content = IconResourceLoader.Load(forward); ForwardButton.Content = IconResourceLoader.Load(forward);
HomeButton.Content = IconResourceLoader.Load(home);
MenuButton.Content = IconResourceLoader.Load(menu); MenuButton.Content = IconResourceLoader.Load(menu);
ReloadButton.Content = IconResourceLoader.Load(reload); ReloadButton.Content = IconResourceLoader.Load(reload);
} }

View file

@ -428,30 +428,30 @@
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Resource> </Resource>
<Page Include="Images\SkipBack.xaml"> <Resource Include="Images\Home.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Page> </Resource>
<Page Include="Images\ShutDown.xaml"> <Page Include="Images\ShutDown.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Page> </Page>
<Page Include="Images\Reload.xaml"> <Resource Include="Images\Reload.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Page> </Resource>
<Page Include="Images\NavigateForward.xaml"> <Resource Include="Images\NavigateForward.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Page> </Resource>
<Page Include="Images\NavigateBack.xaml"> <Resource Include="Images\NavigateBack.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Page> </Resource>
<Page Include="Images\Menu.xaml"> <Resource Include="Images\Menu.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Page> </Resource>
<Page Include="Images\Keyboard.xaml"> <Page Include="Images\Keyboard.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>

View file

@ -32,15 +32,17 @@
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" /> <ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Button Grid.Column="0" x:Name="BackwardButton" Height="50" HorizontalAlignment="Center" Margin="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" /> <Button Grid.Column="0" x:Name="HomeButton" Height="50" HorizontalAlignment="Center" Margin="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" />
<Button Grid.Column="1" x:Name="ForwardButton" Height="50" HorizontalAlignment="Center" Margin="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" /> <Button Grid.Column="1" x:Name="BackwardButton" Height="50" HorizontalAlignment="Center" Margin="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" />
<Button Grid.Column="2" x:Name="ReloadButton" Height="50" HorizontalAlignment="Center" Margin="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" /> <Button Grid.Column="2" x:Name="ForwardButton" Height="50" HorizontalAlignment="Center" Margin="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" />
<TextBox Grid.Column="3" x:Name="UrlTextBox" Height="50" HorizontalAlignment="Stretch" Margin="5,10" Padding="8" VerticalContentAlignment="Center" /> <Button Grid.Column="3" x:Name="ReloadButton" Height="50" HorizontalAlignment="Center" Margin="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" />
<Button Grid.Column="4" x:Name="DownloadsButton" Height="50" HorizontalAlignment="Center" Margin="5" Padding="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" Visibility="Collapsed"> <TextBox Grid.Column="4" x:Name="UrlTextBox" Height="50" HorizontalAlignment="Stretch" Margin="5,10" Padding="8" VerticalContentAlignment="Center" />
<Button Grid.Column="5" x:Name="DownloadsButton" Height="50" HorizontalAlignment="Center" Margin="5" Padding="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" Visibility="Collapsed">
<fa:ImageAwesome Icon="Download" /> <fa:ImageAwesome Icon="Download" />
</Button> </Button>
<Popup x:Name="DownloadsPopup" AllowsTransparency="True" PopupAnimation="Slide" Placement="Custom" PlacementTarget="{Binding ElementName=BrowserControlHost}"> <Popup x:Name="DownloadsPopup" AllowsTransparency="True" PopupAnimation="Slide" Placement="Custom" PlacementTarget="{Binding ElementName=BrowserControlHost}">
@ -48,7 +50,7 @@
<StackPanel x:Name="Downloads" Orientation="Vertical" /> <StackPanel x:Name="Downloads" Orientation="Vertical" />
</Border> </Border>
</Popup> </Popup>
<Button Grid.Column="5" x:Name="MenuButton" Height="50" HorizontalAlignment="Center" Margin="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" /> <Button Grid.Column="6" x:Name="MenuButton" Height="50" HorizontalAlignment="Center" Margin="5" Template="{StaticResource BrowserButton}" VerticalAlignment="Center" />
<Popup x:Name="MenuPopup" IsOpen="False" AllowsTransparency="True" PopupAnimation="Slide" Placement="Custom" PlacementTarget="{Binding ElementName=BrowserControlHost}"> <Popup x:Name="MenuPopup" IsOpen="False" AllowsTransparency="True" PopupAnimation="Slide" Placement="Custom" PlacementTarget="{Binding ElementName=BrowserControlHost}">
<Border Background="{StaticResource BackgroundBrush}" BorderBrush="LightGray" BorderThickness="1,0,1,1" Width="350"> <Border Background="{StaticResource BackgroundBrush}" BorderBrush="LightGray" BorderThickness="1,0,1,1" Width="350">
<StackPanel Orientation="Vertical"> <StackPanel Orientation="Vertical">

View file

@ -49,6 +49,7 @@ namespace SafeExamBrowser.UserInterface.Mobile.Windows
public event ActionRequestedEventHandler DeveloperConsoleRequested; public event ActionRequestedEventHandler DeveloperConsoleRequested;
public event FindRequestedEventHandler FindRequested; public event FindRequestedEventHandler FindRequested;
public event ActionRequestedEventHandler ForwardNavigationRequested; public event ActionRequestedEventHandler ForwardNavigationRequested;
public event ActionRequestedEventHandler HomeNavigationRequested;
public event ActionRequestedEventHandler ReloadRequested; public event ActionRequestedEventHandler ReloadRequested;
public event ActionRequestedEventHandler ZoomInRequested; public event ActionRequestedEventHandler ZoomInRequested;
public event ActionRequestedEventHandler ZoomOutRequested; public event ActionRequestedEventHandler ZoomOutRequested;
@ -197,6 +198,11 @@ namespace SafeExamBrowser.UserInterface.Mobile.Windows
ReloadRequested?.Invoke(); ReloadRequested?.Invoke();
} }
if (e.Key == Key.Home)
{
HomeNavigationRequested?.Invoke();
}
if (settings.AllowFind && (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)) && e.Key == Key.F) if (settings.AllowFind && (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)) && e.Key == Key.F)
{ {
ShowFindbar(); ShowFindbar();
@ -303,6 +309,7 @@ namespace SafeExamBrowser.UserInterface.Mobile.Windows
FindMenuButton.Click += (o, args) => ShowFindbar(); FindMenuButton.Click += (o, args) => ShowFindbar();
FindTextBox.KeyUp += FindTextBox_KeyUp; FindTextBox.KeyUp += FindTextBox_KeyUp;
ForwardButton.Click += (o, args) => ForwardNavigationRequested?.Invoke(); ForwardButton.Click += (o, args) => ForwardNavigationRequested?.Invoke();
HomeButton.Click += (o, args) => HomeNavigationRequested?.Invoke();
Loaded += BrowserWindow_Loaded; Loaded += BrowserWindow_Loaded;
MenuButton.Click += (o, args) => MenuPopup.IsOpen = !MenuPopup.IsOpen; MenuButton.Click += (o, args) => MenuPopup.IsOpen = !MenuPopup.IsOpen;
MenuButton.MouseLeave += (o, args) => Task.Delay(250).ContinueWith(_ => Dispatcher.Invoke(() => MenuPopup.IsOpen = MenuPopup.IsMouseOver)); MenuButton.MouseLeave += (o, args) => Task.Delay(250).ContinueWith(_ => Dispatcher.Invoke(() => MenuPopup.IsOpen = MenuPopup.IsMouseOver));
@ -328,23 +335,17 @@ namespace SafeExamBrowser.UserInterface.Mobile.Windows
{ {
BackwardButton.IsEnabled = WindowSettings.AllowBackwardNavigation; BackwardButton.IsEnabled = WindowSettings.AllowBackwardNavigation;
BackwardButton.Visibility = WindowSettings.AllowBackwardNavigation ? Visibility.Visible : Visibility.Collapsed; BackwardButton.Visibility = WindowSettings.AllowBackwardNavigation ? Visibility.Visible : Visibility.Collapsed;
DeveloperConsoleMenuItem.Visibility = WindowSettings.AllowDeveloperConsole ? Visibility.Visible : Visibility.Collapsed; DeveloperConsoleMenuItem.Visibility = WindowSettings.AllowDeveloperConsole ? Visibility.Visible : Visibility.Collapsed;
FindMenuItem.Visibility = settings.AllowFind ? Visibility.Visible : Visibility.Collapsed; FindMenuItem.Visibility = settings.AllowFind ? Visibility.Visible : Visibility.Collapsed;
ForwardButton.IsEnabled = WindowSettings.AllowForwardNavigation; ForwardButton.IsEnabled = WindowSettings.AllowForwardNavigation;
ForwardButton.Visibility = WindowSettings.AllowForwardNavigation ? Visibility.Visible : Visibility.Collapsed; ForwardButton.Visibility = WindowSettings.AllowForwardNavigation ? Visibility.Visible : Visibility.Collapsed;
HomeButton.IsEnabled = WindowSettings.ShowHomeButton;
HomeButton.Visibility = WindowSettings.ShowHomeButton ? Visibility.Visible : Visibility.Collapsed;
MenuButton.IsEnabled = settings.AllowPageZoom || WindowSettings.AllowDeveloperConsole; MenuButton.IsEnabled = settings.AllowPageZoom || WindowSettings.AllowDeveloperConsole;
ReloadButton.IsEnabled = WindowSettings.AllowReloading; ReloadButton.IsEnabled = WindowSettings.AllowReloading;
ReloadButton.Visibility = WindowSettings.AllowReloading ? Visibility.Visible : Visibility.Collapsed; ReloadButton.Visibility = WindowSettings.AllowReloading ? Visibility.Visible : Visibility.Collapsed;
Toolbar.Visibility = WindowSettings.ShowToolbar ? Visibility.Visible : Visibility.Collapsed; Toolbar.Visibility = WindowSettings.ShowToolbar ? Visibility.Visible : Visibility.Collapsed;
UrlTextBox.Visibility = WindowSettings.AllowAddressBar ? Visibility.Visible : Visibility.Hidden; UrlTextBox.Visibility = WindowSettings.AllowAddressBar ? Visibility.Visible : Visibility.Hidden;
ZoomMenuItem.Visibility = settings.AllowPageZoom ? Visibility.Visible : Visibility.Collapsed; ZoomMenuItem.Visibility = settings.AllowPageZoom ? Visibility.Visible : Visibility.Collapsed;
if (!WindowSettings.AllowAddressBar) if (!WindowSettings.AllowAddressBar)
@ -424,13 +425,15 @@ namespace SafeExamBrowser.UserInterface.Mobile.Windows
private void LoadIcons() private void LoadIcons()
{ {
var backward = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Desktop;component/Images/NavigateBack.xaml") }; var backward = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Mobile;component/Images/NavigateBack.xaml") };
var forward = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Desktop;component/Images/NavigateForward.xaml") }; var forward = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Mobile;component/Images/NavigateForward.xaml") };
var menu = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Desktop;component/Images/Menu.xaml") }; var home = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Mobile;component/Images/Home.xaml") };
var reload = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Desktop;component/Images/Reload.xaml") }; var menu = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Mobile;component/Images/Menu.xaml") };
var reload = new XamlIconResource { Uri = new Uri("pack://application:,,,/SafeExamBrowser.UserInterface.Mobile;component/Images/Reload.xaml") };
BackwardButton.Content = IconResourceLoader.Load(backward); BackwardButton.Content = IconResourceLoader.Load(backward);
ForwardButton.Content = IconResourceLoader.Load(forward); ForwardButton.Content = IconResourceLoader.Load(forward);
HomeButton.Content = IconResourceLoader.Load(home);
MenuButton.Content = IconResourceLoader.Load(menu); MenuButton.Content = IconResourceLoader.Load(menu);
ReloadButton.Content = IconResourceLoader.Load(reload); ReloadButton.Content = IconResourceLoader.Load(reload);
} }

View file

@ -30,8 +30,8 @@ namespace SebWindowsConfig
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SebWindowsConfigForm)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SebWindowsConfigForm));
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle12 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
this.openFileDialogSebConfigFile = new System.Windows.Forms.OpenFileDialog(); this.openFileDialogSebConfigFile = new System.Windows.Forms.OpenFileDialog();
this.saveFileDialogSebConfigFile = new System.Windows.Forms.SaveFileDialog(); this.saveFileDialogSebConfigFile = new System.Windows.Forms.SaveFileDialog();
this.imageListTabIcons = new System.Windows.Forms.ImageList(this.components); this.imageListTabIcons = new System.Windows.Forms.ImageList(this.components);
@ -1828,8 +1828,8 @@ namespace SebWindowsConfig
// //
// Type // Type
// //
dataGridViewCellStyle11.BackColor = System.Drawing.Color.Silver; dataGridViewCellStyle1.BackColor = System.Drawing.Color.Silver;
this.Type.DefaultCellStyle = dataGridViewCellStyle11; this.Type.DefaultCellStyle = dataGridViewCellStyle1;
this.Type.HeaderText = "Type"; this.Type.HeaderText = "Type";
this.Type.Name = "Type"; this.Type.Name = "Type";
this.Type.ReadOnly = true; this.Type.ReadOnly = true;
@ -3187,7 +3187,7 @@ namespace SebWindowsConfig
this.groupBox9.Size = new System.Drawing.Size(610, 168); this.groupBox9.Size = new System.Drawing.Size(610, 168);
this.groupBox9.TabIndex = 121; this.groupBox9.TabIndex = 121;
this.groupBox9.TabStop = false; this.groupBox9.TabStop = false;
this.groupBox9.Text = "Back to Start Button (Mac)"; this.groupBox9.Text = "Back to Start Button";
// //
// checkBoxUseStartURL // checkBoxUseStartURL
// //
@ -4526,8 +4526,8 @@ namespace SebWindowsConfig
// spellCheckerDictionaryFilesColumn // spellCheckerDictionaryFilesColumn
// //
this.spellCheckerDictionaryFilesColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; this.spellCheckerDictionaryFilesColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
dataGridViewCellStyle12.WrapMode = System.Windows.Forms.DataGridViewTriState.True; dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.spellCheckerDictionaryFilesColumn.DefaultCellStyle = dataGridViewCellStyle12; this.spellCheckerDictionaryFilesColumn.DefaultCellStyle = dataGridViewCellStyle2;
this.spellCheckerDictionaryFilesColumn.HeaderText = "Files"; this.spellCheckerDictionaryFilesColumn.HeaderText = "Files";
this.spellCheckerDictionaryFilesColumn.Name = "spellCheckerDictionaryFilesColumn"; this.spellCheckerDictionaryFilesColumn.Name = "spellCheckerDictionaryFilesColumn";
this.spellCheckerDictionaryFilesColumn.ReadOnly = true; this.spellCheckerDictionaryFilesColumn.ReadOnly = true;

View file

@ -131,7 +131,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAk ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAk
1gAAAk1TRnQBSQFMAgEBDAEAAZABCwGQAQsBIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA 1gAAAk1TRnQBSQFMAgEBDAEAAZgBCwGYAQsBIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA
AwABgAMAAQEBAAEgBwABAf8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A AwABgAMAAQEBAAEgBwABAf8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A
/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A
/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A0QABjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGO /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A0QABjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGO
@ -159,8 +159,8 @@
Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
Af8DAAH/AwAB/wNUAe4QAAMyAVEDTQH6A00B+gNNAfoDTQH6A00B+gNNAfoDTQH6A00B+gNNAfoDTQH6 Af8DAAH/AwAB/wNUAe4QAAMyAVEDTQH6A00B+gNNAfoDTQH6A00B+gNNAfoDTQH6A00B+gNNAfoDTQH6
A00B+gNNAfoDTQH6A00B+gNNAfoDTQH6A00B+gNNAfoDTQH6A00B+gNNAfoDTQH6AzYBWTQAAzIBUANc A00B+gNNAfoDTQH6A00B+gNNAfoDTQH6A00B+gNNAfoDTQH6A00B+gNNAfoDTQH6AzYBWTQAAzIBUANc
Ad8BsQGvAa0B/wGlAaIBoQH/AZIBjwGOAf8BhgGDAYIB/wGAATsBOgH/AYABOwE6Af8BgAE7AToB/wGA Ad8BsQGvAa0B/wGlAaIBoQH/AZIBjwGOAf8BhgGDAYIB/wGAAToBOQH/AYABOgE5Af8BgAE6ATkB/wGA
ATsBOgH/AYABOwE6Af8BigGHAYYB/wGWAZMBkgH/AaUBogGgAf8BpgGjAaEB/wNUAa8DFwEgGAABjgGL AToBOQH/AYABOgE5Af8BigGHAYYB/wGWAZMBkgH/AaUBogGgAf8BpgGjAaEB/wNUAa8DFwEgGAABjgGL
AQAB/wGOAYsBAAH/AbsBuQEAAf8C/gH9Af8C/gH9Af8C/gH9Af8C9AHmAf8BwgHAAQAB/wL+Af0B/wL+ AQAB/wGOAYsBAAH/AbsBuQEAAf8C/gH9Af8C/gH9Af8C/gH9Af8C9AHmAf8BwgHAAQAB/wL+Af0B/wL+
Af0B/wL+Af0B/wLwAd0B/wHGAcQBAAH/Av4B/QH/Av4B/QH/Av4B/QH/AekB6AHOAf8BqwGoAQAB/wGP Af0B/wL+Af0B/wLwAd0B/wHGAcQBAAH/Av4B/QH/Av4B/QH/Av4B/QH/AekB6AHOAf8BqwGoAQAB/wGP
AYwBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEA AYwBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEA
@ -168,16 +168,16 @@
Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/xAA Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/xAA
AzQBVFj/AzgBXCwAAwwBEANRAZ8BtQGyAbAB/wGpAaYBpAH/AZIBjwGNAf8BhAGBAYAB/wGRAY4BjAH/ AzQBVFj/AzgBXCwAAwwBEANRAZ8BtQGyAbAB/wGpAaYBpAH/AZIBjwGNAf8BhAGBAYAB/wGRAY4BjAH/
AZkBlgGUAf8BjwGMAYoB/wGEAYEBgAH/AYABOwE6Af8BgAE7AToB/wGAATsBOgH/AYABOwE6Af8BgAE7 AZkBlgGUAf8BjwGMAYoB/wGEAYEBgAH/AYABOgE5Af8BgAE6ATkB/wGAAToBOQH/AYABOgE5Af8BgAE6
AToB/wGAATsBOgH/AZEBjgGNAf8BpAGhAZ8B/wNiAe8DMgFQFAABjgGLAQAB/wGOAYsBAAH/AbsBuQEA ATkB/wGAAToBOQH/AZEBjgGNAf8BpAGhAZ8B/wNiAe8DMgFQFAABjgGLAQAB/wGOAYsBAAH/AbsBuQEA
Af8MAAL1AegB/wHCAcABAAH/DAAC8QHfAf8BxgHEAQAB/wwAAeoB6QHPAf8B0gHRAZoB/wG+AbwBAAH/ Af8MAAL1AegB/wHCAcABAAH/DAAC8QHfAf8BxgHEAQAB/wwAAeoB6QHPAf8B0gHRAZoB/wG+AbwBAAH/
AY8BjAEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGL AY8BjAEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGL
AQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8DAAH/AwAB/wMAAf8DmgH/ AQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8DAAH/AwAB/wMAAf8DmgH/
A6IB/wOiAf8DogH/A6IB/wOiAf8DogH/A6IB/wOiAf8DogH/A6IB/wOiAf8DogH/A6IB/wOiAf8DogH/ A6IB/wOiAf8DogH/A6IB/wOiAf8DogH/A6IB/wOiAf8DogH/A6IB/wOiAf8DogH/A6IB/wOiAf8DogH/
A6IB/wOiAf8DogH/A6IB/wOiAf8DogH/A6IB/wOiAf8DogH/A5oB/wMAAf8DAAH/AwAB/xAAAzMBU1j/ A6IB/wOiAf8DogH/A6IB/wOiAf8DogH/A6IB/wOiAf8DogH/A5oB/wMAAf8DAAH/AwAB/xAAAzMBU1j/
AzcBWygAAwwBEANcAc8BtwG0AbIB/wGfAZwBmwH/AYsBiAGHAf8BiQGGAYQB/wGYAZUBkwH/AakBpgGk AzcBWygAAwwBEANcAc8BtwG0AbIB/wGfAZwBmwH/AYsBiAGHAf8BiQGGAYQB/wGYAZUBkwH/AakBpgGk
Af8BpwGkAaIB/wGkAaEBnwH/AaIBnwGdAf8BlgGTAZEB/wGFAYIBgQH/AYABOwE6Af8BgAE7AToB/wGA Af8BpwGkAaIB/wGkAaEBnwH/AaIBnwGdAf8BlgGTAZEB/wGFAYIBgQH/AYABOgE5Af8BgAE6ATkB/wGA
ATsBOgH/AYABOwE6Af8BgAE7AToB/wGCAT0BPAH/AZ0BmgGYAf8BpQGiAaAB/wM6AWAQAAGOAYsBAAH/ AToBOQH/AYABOgE5Af8BgAE6ATkB/wGCATwBOwH/AZ0BmgGYAf8BpQGiAaAB/wM6AWAQAAGOAYsBAAH/
AY4BiwEAAf8BuwG5AQAB/wwAAvUB6AH/AcIBwAEAAf8MAALxAd8B/wHGAcQBAAH/DAAB6gHpAc8B/wHS AY4BiwEAAf8BuwG5AQAB/wwAAvUB6AH/AcIBwAEAAf8MAALxAd8B/wHGAcQBAAH/DAAB6gHpAc8B/wHS
AdEBmgH/Ad0B3AGyAf8BxQHDAQAB/wGPAYwBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEA AdEBmgH/Ad0B3AGyAf8BxQHDAQAB/wGPAYwBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEA
Af8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wMA Af8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wMA
@ -185,7 +185,7 @@
Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DkwH/A6IB/wMA Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DkwH/A6IB/wMA
Af8DAAH/EAADMwFTWP8DNwFbKAADXAHPAbcBtAGyAf8BmwGYAZYB/wGQAY0BiwH/AY0BigGJAf8BiwGI Af8DAAH/EAADMwFTWP8DNwFbKAADXAHPAbcBtAGyAf8BmwGYAZYB/wGQAY0BiwH/AY0BigGJAf8BiwGI
AYcB/wGoAaUBowH/AaoBpwGlAf8BpwGkAaIB/wGmAaMBoQH/AaMBoAGeAf8BogGfAZ0B/wGdAZoBmAH/ AYcB/wGoAaUBowH/AaoBpwGlAf8BpwGkAaIB/wGmAaMBoQH/AaMBoAGeAf8BogGfAZ0B/wGdAZoBmAH/
AY0BigGJAf8BgQE8ATsB/wGAATsBOgH/AYABOwE6Af8BgAE7AToB/wGAATsBOgH/AYABOwE6Af8BmAGV AY0BigGJAf8BgQE7AToB/wGAAToBOQH/AYABOgE5Af8BgAE6ATkB/wGAAToBOQH/AYABOgE5Af8BmAGV
AZMB/wGlAaIBoAH/AzoBYAwAAY4BiwEAAf8BjgGLAQAB/wG7AbkBAAH/DAAC9QHoAf8BwgHAAQAB/wwA AZMB/wGlAaIBoAH/AzoBYAwAAY4BiwEAAf8BjgGLAQAB/wG7AbkBAAH/DAAC9QHoAf8BwgHAAQAB/wwA
AvEB3wH/AcYBxAEAAf8MAAHqAekBzwH/AdIB0QGaAf8B3QHcAbIB/wHdAdwBsgH/Ac8BzgGSAf8BjgGL AvEB3wH/AcYBxAEAAf8MAAHqAekBzwH/AdIB0QGaAf8B3QHcAbIB/wHdAdwBsgH/Ac8BzgGSAf8BjgGL
AQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/ AQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/
@ -194,7 +194,7 @@
AwAB/wMAAf8DAAH/AwAB/wMAAf8DkwH/A5oB/wMAAf8QAAMzAVNY/wM3AVskAANMAY8BuwG4AbcB/wGh AwAB/wMAAf8DAAH/AwAB/wMAAf8DkwH/A5oB/wMAAf8QAAMzAVNY/wM3AVskAANMAY8BuwG4AbcB/wGh
AZ4BnAH/AZQBkQGPAf8BkgGPAY0B/wGQAY0BiwH/AY0BigGJAf8BqgGnAaUB/wGqAacBpQH/AagBpQGj AZ4BnAH/AZQBkQGPAf8BkgGPAY0B/wGQAY0BiwH/AY0BigGJAf8BqgGnAaUB/wGqAacBpQH/AagBpQGj
Af8BpwGkAaIB/wGkAaEBnwH/AaMBoAGeAf8BoQGeAZwB/wGhAZ4BnAH/AZ4BmwGZAf8BkQGOAYwB/wGC Af8BpwGkAaIB/wGkAaEBnwH/AaMBoAGeAf8BoQGeAZwB/wGhAZ4BnAH/AZ4BmwGZAf8BkQGOAYwB/wGC
AT0BPAH/AYABOwE6Af8BgAE7AToB/wGAATsBOgH/AYABOwE6Af8BmAGVAZMB/wGlAaIBoAH/AyEBMAgA ATwBOwH/AYABOgE5Af8BgAE6ATkB/wGAAToBOQH/AYABOgE5Af8BmAGVAZMB/wGlAaIBoAH/AyEBMAgA
AY4BiwEAAf8BjgGLAQAB/wGfAZwBAAH/AbgBtgEAAf8BuAG2AQAB/wG4AbYBAAH/AbQBsgEAAf8BoQGf AY4BiwEAAf8BjgGLAQAB/wGfAZwBAAH/AbgBtgEAAf8BuAG2AQAB/wG4AbYBAAH/AbQBsgEAAf8BoQGf
AQAB/wG4AbYBAAH/AbgBtgEAAf8BuAG2AQAB/wGyAbABAAH/AacBpAEAAf8BvgG9AQAB/wG+Ab0BAAH/ AQAB/wG4AbYBAAH/AbgBtgEAAf8BuAG2AQAB/wGyAbABAAH/AacBpAEAAf8BvgG9AQAB/wG+Ab0BAAH/
Ab4BvQEAAf8BuAG2AQAB/wHQAc8BlQH/Ad0B3AGyAf8B3QHcAbIB/wLqAdAB/wGOAYsBAAH/AY4BiwEA Ab4BvQEAAf8BuAG2AQAB/wHQAc8BlQH/Ad0B3AGyAf8B3QHcAbIB/wLqAdAB/wGOAYsBAAH/AY4BiwEA
@ -204,7 +204,7 @@
Af8DAAH/AwAB/wMAAf8DogH/AwAB/xAAAzMBU1j/AzcBWyAAAyoBQAG8AboBuAH/AasBqAGnAf8BmAGV Af8DAAH/AwAB/wMAAf8DogH/AwAB/xAAAzMBU1j/AzcBWyAAAyoBQAG8AboBuAH/AasBqAGnAf8BmAGV
AZMB/wGWAZMBkQH/AZQBkQGPAf8BkgGPAY0B/wGQAY0BiwH/AasBqAGmAf8BqwGoAaYB/wGpAaYBpAH/ AZMB/wGWAZMBkQH/AZQBkQGPAf8BkgGPAY0B/wGQAY0BiwH/AasBqAGmAf8BqwGoAaYB/wGpAaYBpAH/
AacBpAGiAf8BpQGiAaAB/wGjAaABngH/AaEBngGcAf8BoQGeAZwB/wGhAZ4BnAH/AaEBngGcAf8BmwGY AacBpAGiAf8BpQGiAaAB/wGjAaABngH/AaEBngGcAf8BoQGeAZwB/wGhAZ4BnAH/AaEBngGcAf8BmwGY
AZYB/wGBATwBOwH/AYABOwE6Af8BgAE7AToB/wGAATsBOgH/AYIBPQE8Af8BoQGeAZ0B/wNcAc8IAAGO AZYB/wGBATsBOgH/AYABOgE5Af8BgAE6ATkB/wGAAToBOQH/AYIBPAE7Af8BoQGeAZ0B/wNcAc8IAAGO
AYsBAAH/AY4BiwEAAf8BuwG5AQAB/wwAAvUB6AH/AcIBwAEAAf8MAALxAd8B/wGzAbEBAAH/AuYBxwH/ AYsBAAH/AY4BiwEAAf8BuwG5AQAB/wwAAvUB6AH/AcIBwAEAAf8MAALxAd8B/wGzAbEBAAH/AuYBxwH/
Ae0B7AHWAf8B7QHsAdYB/wHtAewB1gH/AcQBwgEAAf8BzAHLAYwB/wHdAdwBsgH/AuoB0AH/AY4BiwEA Ae0B7AHWAf8B7QHsAdYB/wHtAewB1gH/AcQBwgEAAf8BzAHLAYwB/wHdAdwBsgH/AuoB0AH/AY4BiwEA
Af8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGO Af8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGO
@ -213,16 +213,16 @@
AwAB/wMAAf8DogH/AwAB/xAAAzMBU1j/AzcBWyAAA1kBvwG6AbcBtQH/AZ0BmgGYAf8BmwGYAZYB/wGY AwAB/wMAAf8DogH/AwAB/xAAAzMBU1j/AzcBWyAAA1kBvwG6AbcBtQH/AZ0BmgGYAf8BmwGYAZYB/wGY
AZUBkwH/AZYBkwGRAf8BlAGRAY8B/wGSAY8BjQH/AagBpQGjAf8BnQGaAZkB/wGqAacBpQH/AagBpQGj AZUBkwH/AZYBkwGRAf8BlAGRAY8B/wGSAY8BjQH/AagBpQGjAf8BnQGaAZkB/wGqAacBpQH/AagBpQGj
Af8BpgGjAaEB/wGkAaEBnwH/AaIBnwGdAf8BoQGeAZwB/wGhAZ4BnAH/AaEBngGcAf8BoQGeAZwB/wGF Af8BpgGjAaEB/wGkAaEBnwH/AaIBnwGdAf8BoQGeAZwB/wGhAZ4BnAH/AaEBngGcAf8BoQGeAZwB/wGF
AYIBgAH/AYABOwE6Af8BgAE7AToB/wGAATsBOgH/AYABOwE6Af8BigGHAYYB/wGmAaMBoQH/AzoBYAQA AYIBgAH/AYABOgE5Af8BgAE6ATkB/wGAAToBOQH/AYABOgE5Af8BigGHAYYB/wGmAaMBoQH/AzoBYAQA
AY4BiwEAAf8BjgGLAQAB/wG7AbkBAAH/DAAC9QHoAf8BwgHAAQAB/wwAAvEB3wH/AcwBywGNAf8B0wHS AY4BiwEAAf8BjgGLAQAB/wG7AbkBAAH/DAAC9QHoAf8BwgHAAQAB/wwAAvEB3wH/AcwBywGNAf8B0wHS
AZwB/wHuAe0B2AH/Ae4B7QHYAf8B7gHtAdgB/wHuAe0B2AH/AacBpAEAAf8ByQHIAYUB/wLqAdAB/wGO AZwB/wHuAe0B2AH/Ae4B7QHYAf8B7gHtAdgB/wHuAe0B2AH/AacBpAEAAf8ByQHIAYUB/wLqAdAB/wGO
AYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEA AYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEA
Af8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8DAAH/A6IB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA Af8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8DAAH/A6IB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
Af8DAAH/AwAB/wMAAf8DyAH/CAAD4wH/A6AB/wOtAf8IAAPIAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA Af8DAAH/AwAB/wMAAf8DyAH/CAAD4wH/A6AB/wOtAf8IAAPIAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
Af8DAAH/AwAB/wMAAf8DogH/AwAB/xAAAzMBU1j/AzcBWxwAAyoBQAHAAb0BvAH/AawBqQGoAf8BnwGc Af8DAAH/AwAB/wMAAf8DogH/AwAB/xAAAzMBU1j/AzcBWxwAAyoBQAHAAb0BvAH/AawBqQGoAf8BnwGc
AZoB/wGdAZoBmAH/AZsBmAGWAf8BmAGVAZMB/wE0ATIBMAH/AwAB/wMAAf8DAAH/ATcBNAEzAf8BqQGm AZoB/wGdAZoBmAH/AZsBmAGWAf8BmAGVAZMB/wEzATEBLwH/AwAB/wMAAf8DAAH/ATYBMwEyAf8BqQGm
AaQB/wGnAaQBogH/AaUBogGgAf8BowGgAZ4B/wGhAZ4BnAH/AaEBngGcAf8BoQGeAZwB/wGhAZ4BnAH/ AaQB/wGnAaQBogH/AaUBogGgAf8BowGgAZ4B/wGhAZ4BnAH/AaEBngGcAf8BoQGeAZwB/wGhAZ4BnAH/
AYUBggGBAf8BgAE7AToB/wGAATsBOgH/AYABOwE6Af8BgAE7AToB/wGAATsBOgH/AZ0BmgGZAf8DXAHf AYUBggGBAf8BgAE6ATkB/wGAAToBOQH/AYABOgE5Af8BgAE6ATkB/wGAAToBOQH/AZ0BmgGZAf8DXAHf
BAABjgGLAQAB/wGOAYsBAAH/AbsBuQEAAf8MAAL1AegB/wHCAcABAAH/DAAC8QHfAf8BzAHLAY0B/wHb BAABjgGLAQAB/wGOAYsBAAH/AbsBuQEAAf8MAAL1AegB/wHCAcABAAH/DAAC8QHfAf8BzAHLAY0B/wHb
AdoBrgH/EAABugG4AQAB/wHMAcsBjAH/AdYB1QGkAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGL AdoBrgH/EAABugG4AQAB/wHMAcsBjAH/AdYB1QGkAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGL
AQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/ AQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/
@ -230,9 +230,9 @@
Af8DAAH/AwAB/wgAA5EB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A6IB/wMAAf8QAAMz Af8DAAH/AwAB/wgAA5EB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A6IB/wMAAf8QAAMz
AVMI/wP+Af8D/gH/A/4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/ AVMI/wP+Af8D/gH/A/4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/
A/4B/wP+Af8D/gH/A/4B/wP+Bf8DNwFbHAADUQGfAb0BuwG5Af8BpAGhAZ8B/wGiAZ8BnQH/AZ8BnAGa A/4B/wP+Af8D/gH/A/4B/wP+Bf8DNwFbHAADUQGfAb0BuwG5Af8BpAGhAZ8B/wGiAZ8BnQH/AZ8BnAGa
Af8BnQGaAZgB/wGbAZgBlgH/AwAB/wMAAf8DAAH/AgABAgH/ARcBIAElAf8BqgGnAaUB/wGoAaUBowH/ Af8BnQGaAZgB/wGbAZgBlgH/AwAB/wMAAf8DAAH/AgABAQH/ARYBHwEkAf8BqgGnAaUB/wGoAaUBowH/
AaYBowGhAf8BpAGhAZ8B/wGiAZ8BnQH/AaEBngGcAf8BoQGeAZwB/wGeAZsBmQH/AYABOwE6Af8BgAE7 AaYBowGhAf8BpAGhAZ8B/wGiAZ8BnQH/AaEBngGcAf8BoQGeAZwB/wGeAZsBmQH/AYABOgE5Af8BgAE6
AToB/wGAATsBOgH/AYABOwE6Af8BgAE7AToB/wGAATsBOgH/AYwBiQGIAf8BpwGkAaIB/wMhATABjgGL ATkB/wGAAToBOQH/AYABOgE5Af8BgAE6ATkB/wGAAToBOQH/AYwBiQGIAf8BpwGkAaIB/wMhATABjgGL
AQAB/wGOAYsBAAH/AbsBuQEAAf8MAAL1AegB/wHCAcABAAH/DAAC8QHfAf8BzAHLAY0B/wHbAdoBrgH/ AQAB/wGOAYsBAAH/AbsBuQEAAf8MAAL1AegB/wHCAcABAAH/DAAC8QHfAf8BzAHLAY0B/wHbAdoBrgH/
EAABugG4AQAB/wLdAbMB/wHUAdMBngH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGL EAABugG4AQAB/wLdAbMB/wHUAdMBngH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGL
AQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wMAAf8DogH/ AQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wMAAf8DogH/
@ -240,9 +240,9 @@
AwAB/wO6Af8EAAPAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wOiAf8DAAH/EAADMwFT AwAB/wO6Af8EAAPAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wOiAf8DAAH/EAADMwFT
BP8D/gH/A/0B/wP9Af8D/QH/A/0B/wP9Af8D/QH/A/0B/wP9Af8D/QH/A/0B/wP9Af8D/QH/A/0B/wP9 BP8D/gH/A/0B/wP9Af8D/QH/A/0B/wP9Af8D/QH/A/0B/wP9Af8D/QH/A/0B/wP9Af8D/QH/A/0B/wP9
Af8D/QH/A/0B/wP9Af8D/QH/A/0F/wM3AVscAANcAd8BtgG0AbIB/wGmAaMBoQH/AaQBoQGfAf8BogGf Af8D/QH/A/0B/wP9Af8D/QH/A/0F/wM3AVscAANcAd8BtgG0AbIB/wGmAaMBoQH/AaQBoQGfAf8BogGf
AZ0B/wGfAZwBmgH/AZ0BmgGYAf8BGAEWARUB/wMAAf8BAAGPAbgB/wEAAY8BvQH/ASABjQGkAf8BqwGo AZ0B/wGfAZwBmgH/AZ0BmgGYAf8BFwEVARQB/wMAAf8BAAGPAbgB/wEAAY8BvQH/AR8BjQGkAf8BqwGo
AaYB/wGpAaYBpAH/AacBpAGiAf8BpQGiAaAB/wGjAaABngH/AaEBngGcAf8BoQGeAZwB/wGPAYwBigH/ AaYB/wGpAaYBpAH/AacBpAGiAf8BpQGiAaAB/wGjAaABngH/AaEBngGcAf8BoQGeAZwB/wGPAYwBigH/
AYQBgQGAAf8BhAGBAYAB/wGAATsBOgH/AYABOwE6Af8BgAE7AToB/wGAATsBOgH/AYABOwE6Af8BqAGl AYQBgQGAAf8BhAGBAYAB/wGAAToBOQH/AYABOgE5Af8BgAE6ATkB/wGAAToBOQH/AYABOgE5Af8BqAGl
AaMB/wNHAYABjgGLAQAB/wGOAYsBAAH/AZ8BnAEAAf8BuAG2AQAB/wG4AbYBAAH/AbgBtgEAAf8BtAGy AaMB/wNHAYABjgGLAQAB/wGOAYsBAAH/AZ8BnAEAAf8BuAG2AQAB/wG4AbYBAAH/AbgBtgEAAf8BtAGy
AQAB/wGkAaEBAAH/AcsBygGLAf8BywHKAYsB/wHLAcoBiwH/AcgBxwGDAf8BvwG+AQAB/wHbAdoBrQH/ AQAB/wGkAaEBAAH/AcsBygGLAf8BywHKAYsB/wHLAcoBiwH/AcgBxwGDAf8BvwG+AQAB/wHbAdoBrQH/
EAABugG4AQAB/wLdAbMB/wLqAdAB/wGOAYsBAAH/AZEBjgEAAf8BzAHLAYwB/wGXAZQBAAH/AY4BiwEA EAABugG4AQAB/wLdAbMB/wLqAdAB/wGOAYsBAAH/AZEBjgEAAf8BzAHLAYwB/wGXAZQBAAH/AY4BiwEA
@ -251,10 +251,10 @@
AwAB/wOcAf8EAAPOAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wOiAf8DAAH/EAADMwFT AwAB/wOcAf8EAAPOAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wOiAf8DAAH/EAADMwFT
A/4B/wP9Af8D/QH/A/0B/wP9Af8D/QH/A/0B/wP9Af8D/QH/A/0B/wP9Af8D/QH/A/0B/wP9Af8D/QH/ A/4B/wP9Af8D/QH/A/0B/wP9Af8D/QH/A/0B/wP9Af8D/QH/A/0B/wP9Af8D/QH/A/0B/wP9Af8D/QH/
A/0B/wP9Af8D/QH/A/0B/wP9Af8D/QX/AzcBWxgAAwwBEAHEAcEBwAH/AbIBrwGtAf8BqQGmAaQB/wGm A/0B/wP9Af8D/QH/A/0B/wP9Af8D/QX/AzcBWxgAAwwBEAHEAcEBwAH/AbIBrwGtAf8BqQGmAaQB/wGm
AaMBoQH/AaQBoQGfAf8BogGfAZ0B/wGfAZwBmgH/AYMBgAE8Af8DAAH/AQcBpAHKAf8BAAGQAb0B/wEg AaMBoQH/AaQBoQGfAf8BogGfAZ0B/wGfAZwBmgH/AYMBgAE7Af8DAAH/AQYBpAHKAf8BAAGQAb0B/wEf
AY0BpAH/AawBqQGnAf8BqgGnAaUB/wGoAaUBowH/AaYBowGhAf8BpAGhAZ8B/wGeAZsBmQH/AZEBjgGN AY0BpAH/AawBqQGnAf8BqgGnAaUB/wGoAaUBowH/AaYBowGhAf8BpAGhAZ8B/wGeAZsBmQH/AZEBjgGN
Af8BlAGRAY8B/wGhAZ4BnAH/AaABnQGbAf8BjwGMAYoB/wGAATsBOgH/AYABOwE6Af8BgAE7AToB/wGA Af8BlAGRAY8B/wGhAZ4BnAH/AaABnQGbAf8BjwGMAYoB/wGAAToBOQH/AYABOgE5Af8BgAE6ATkB/wGA
ATsBOgH/AZ8BnAGaAf8DVAGvAY4BiwEAAf8BjgGLAQAB/wG7AbkBAAH/DAAC9QHoAf8BuQG2AQAB/wHU AToBOQH/AZ8BnAGaAf8DVAGvAY4BiwEAAf8BjgGLAQAB/wG7AbkBAAH/DAAC9QHoAf8BuQG2AQAB/wHU
AdMBngH/AdkB2AGoAf8B2QHYAagB/wHZAdgBqAH/AcUBxAEAAf8BpAGhAQAB/wHFAcMBAAH/AcUBwwEA AdMBngH/AdkB2AGoAf8B2QHYAagB/wHZAdgBqAH/AcUBxAEAAf8BpAGhAQAB/wHFAcMBAAH/AcUBwwEA
Af8BxQHDAQAB/wHFAcMBAAH/AbgBtgEAAf8C3QGzAf8C6gHQAf8BkQGOAQAB/wLcAbEB/wQAAesB6gHR Af8BxQHDAQAB/wHFAcMBAAH/AbgBtgEAAf8C3QGzAf8C6gHQAf8BkQGOAQAB/wLcAbEB/wQAAesB6gHR
Af8BlwGUAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wMA Af8BlwGUAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wMA
@ -262,10 +262,10 @@
Af8DAAH/AwAB/wMAAf8D3AH/BAADswH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DogH/ Af8DAAH/AwAB/wMAAf8D3AH/BAADswH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DogH/
AwAB/xAAAzMBUwP9Af8D/QH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8 AwAB/xAAAzMBUwP9Af8D/QH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8
Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wF/wM3AVsYAAMqAUABxAHCAcEB/wG+AbsBugH/ Af8D/AH/A/wB/wP8Af8D/AH/A/wB/wP8Af8D/AH/A/wF/wM3AVsYAAMqAUABxAHCAcEB/wG+AbsBugH/
AbYBswGxAf8BqwGoAaYB/wGmAaMBoQH/AaQBoQGfAf8BogGfAZ0B/wGfAZwBmgH/AQ0BCwEKAf8BAAGD AbYBswGxAf8BqwGoAaYB/wGmAaMBoQH/AaQBoQGfAf8BogGfAZ0B/wGfAZwBmgH/AQwBCgEJAf8BAAGD
AZkB/wEDAaYBygH/ASEBkgGnAf8BrQGqAagB/wGrAagBpgH/AaUBogGgAf8BmAGVAZMB/wGPAYwBiwH/ AZkB/wECAaYBygH/ASABkgGnAf8BrQGqAagB/wGrAagBpgH/AaUBogGgAf8BmAGVAZMB/wGPAYwBiwH/
AYkBhgGEAf8BkQGOAY0B/wGhAZ4BnAH/AaEBngGcAf8BoQGeAZwB/wGfAZwBmgH/AYEBPAE7Af8BgAE7 AYkBhgGEAf8BkQGOAY0B/wGhAZ4BnAH/AaEBngGcAf8BoQGeAZwB/wGfAZwBmgH/AYEBOwE6Af8BgAE6
AToB/wGAATsBOgH/AYABOwE6Af8BlQGSAZAB/wNZAb8BjgGLAQAB/wGOAYsBAAH/AbsBuQEAAf8MAAL1 ATkB/wGAAToBOQH/AYABOgE5Af8BlQGSAZAB/wNZAb8BjgGLAQAB/wGOAYsBAAH/AbsBuQEAAf8MAAL1
AegB/wHIAcYBgwH/AdYB1QGjAf8C8gHiAf8C8gHhAf8C8gHhAf8C8gHhAf8BrgGsAQAB/wHbAdoBrQH/ AegB/wHIAcYBgwH/AdYB1QGjAf8C8gHiAf8C8gHhAf8C8gHhAf8C8gHhAf8BrgGsAQAB/wHbAdoBrQH/
AvgB7wH/AvgB7wH/AvgB7wH/AdYB1QGjAf8BxQHEAQAB/wHgAd8BuQH/AdwB2wGxAf8MAAHrAeoB0QH/ AvgB7wH/AvgB7wH/AvgB7wH/AdYB1QGjAf8BxQHEAQAB/wHgAd8BuQH/AdwB2wGxAf8MAAHrAeoB0QH/
AZcBlAEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AwAB/wOhAf8DAAH/ AZcBlAEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AwAB/wOhAf8DAAH/
@ -273,10 +273,10 @@
A6kB/wsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wOhAf8DAAH/EAADMwFTA/wB/wP7 A6kB/wsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wOhAf8DAAH/EAADMwFTA/wB/wP7
Af8D+gH/A/oB/wP6Af8D+gH/A/oB/wP6Af8D+gH/A/oB/wP6Af8D+gH/A/oB/wP6Af8D+gH/A/oB/wP6 Af8D+gH/A/oB/wP6Af8D+gH/A/oB/wP6Af8D+gH/A/oB/wP6Af8D+gH/A/oB/wP6Af8D+gH/A/oB/wP6
Af8D+gH/A/oB/wP6Af8D+gH/A/4B/wM3AVsYAAMqAUABxQHDAcIB/wHEAcEBwAH/AcIBwAG+Af8BvgG7 Af8D+gH/A/oB/wP6Af8D+gH/A/4B/wM3AVsYAAMqAUABxQHDAcIB/wHEAcEBwAH/AcIBwAG+Af8BvgG7
AboB/wGqAacBpQH/AaYBowGhAf8BpAGhAZ8B/wGkAaEBnwH/AZ8BnAGbAf8BAAEbASYB/wEGAb0B2gH/ AboB/wGqAacBpQH/AaYBowGhAf8BpAGhAZ8B/wGkAaEBnwH/AZ8BnAGbAf8BAAEaASUB/wEFAb0B2gH/
ASMBngGvAf8BrgGrAakB/wGiAZ8BnQH/AZIBjwGNAf8BlAGRAY8B/wGUAZEBkAH/AYsBiAGHAf8BngGb ASIBngGvAf8BrgGrAakB/wGiAZ8BnQH/AZIBjwGNAf8BlAGRAY8B/wGUAZEBkAH/AYsBiAGHAf8BngGb
AZkB/wGhAZ4BnAH/AaEBngGcAf8BoQGeAZwB/wGhAZ4BnAH/AYYBgwGCAf8BgAE7AToB/wGAATsBOgH/ AZkB/wGhAZ4BnAH/AaEBngGcAf8BoQGeAZwB/wGhAZ4BnAH/AYYBgwGCAf8BgAE6ATkB/wGAAToBOQH/
AYABOwE6Af8BlQGSAZEB/wNiAe8BjgGLAQAB/wGOAYsBAAH/AbsBuQEAAf8MAAL1AegB/wHIAcYBgwH/ AYABOgE5Af8BlQGSAZEB/wNiAe8BjgGLAQAB/wGOAYsBAAH/AbsBuQEAAf8MAAL1AegB/wHIAcYBgwH/
AdkB2AGpAf8QAAG+AbwBAAH/AdMB0gGcAf8BzAHKAYsB/wHbAdoBrgH/AdsB2gGuAf8B2wHaAa4B/wG/ AdkB2AGpAf8QAAG+AbwBAAH/AdMB0gGcAf8BzAHKAYsB/wHbAdoBrgH/AdsB2gGuAf8B2wHaAa4B/wG/
Ab4BAAH/AbsBugEAAf8C/gH8Af8QAAG6AbgBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEA Ab4BAAH/AbsBugEAAf8C/gH8Af8QAAG6AbgBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEA
Af8BjgGLAQAB/wMAAf8DnQH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA Af8BjgGLAQAB/wMAAf8DnQH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
@ -284,19 +284,19 @@
AwAB/wOdAf8DAAH/EAADMwFTA/oB/wP5Af8D+QH/A/kB/wP5Af8D+QH/A/kB/wP5Af8D+QH/A/kB/wP5 AwAB/wOdAf8DAAH/EAADMwFTA/oB/wP5Af8D+QH/A/kB/wP5Af8D+QH/A/kB/wP5Af8D+QH/A/kB/wP5
Af8D+QH/A/kB/wP5Af8D+QH/A/kB/wP5Af8D+QH/A/kB/wP5Af8D+QH/A/0B/wM3AVsYAAMqAUABxwHF Af8D+QH/A/kB/wP5Af8D+QH/A/kB/wP5Af8D+QH/A/kB/wP5Af8D+QH/A/0B/wM3AVsYAAMqAUABxwHF
AcMB/wHFAcMBwgH/AcMBwAG/Af8BvQK7Af8BrwGuAbAB/wGsAaoBqAH/AaYBowGhAf8BqAGlAaMB/wG3 AcMB/wHFAcMBwgH/AcMBwAG/Af8BvQK7Af8BrwGuAbAB/wGsAaoBqAH/AaYBowGhAf8BqAGlAaMB/wG3
AbQBsgH/ARcBHwEgAf8BAAHEAd8B/wEMAakBvgH/AY4BoQGmAf8BlgGTAZEB/wGUAZEBjwH/AZkBlgGU AbQBsgH/ARYBHgEfAf8BAAHEAd8B/wELAakBvgH/AY4BoQGmAf8BlgGTAZEB/wGUAZEBjwH/AZkBlgGU
Af8BpwGkAaIB/wGbAZgBlgH/AaMBoAGeAf8BoQGeAZwB/wGhAZ4BnAH/AaEBngGcAf8BoQGeAZwB/wGG Af8BpwGkAaIB/wGbAZgBlgH/AaMBoAGeAf8BoQGeAZwB/wGhAZ4BnAH/AaEBngGcAf8BoQGeAZwB/wGG
AYMBggH/AYABOwE6Af8BgAE7AToB/wGAATsBOgH/AZYBkwGRAf8BqwGoAaYB/wGOAYsBAAH/AY4BiwEA AYMBggH/AYABOgE5Af8BgAE6ATkB/wGAAToBOQH/AZYBkwGRAf8BqwGoAaYB/wGOAYsBAAH/AY4BiwEA
Af8BuwG5AQAB/wwAAvUB6AH/AcgBxgGDAf8B2QHYAagB/xAAAb4BvAEAAf8B1gHVAaIB/wHoAecBygH/ Af8BuwG5AQAB/wwAAvUB6AH/AcgBxgGDAf8B2QHYAagB/xAAAb4BvAEAAf8B1gHVAaIB/wHoAecBygH/
DAAB2wHaAa4B/wHXAdYBpQH/AbYBtAEAAf8C/gH8Af8IAAHDAcEBAAH/AY4BiwEAAf8BjgGLAQAB/wGO DAAB2wHaAa4B/wHXAdYBpQH/AbYBtAEAAf8C/gH8Af8IAAHDAcEBAAH/AY4BiwEAAf8BjgGLAQAB/wGO
AYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AwAB/wOYAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA AYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AwAB/wOYAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A7AB/wPrAf8IAAOeAf8DAAH/AwAB/wMAAf8DAAH/ Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A7AB/wPrAf8IAAOeAf8DAAH/AwAB/wMAAf8DAAH/
AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A5gB/wMAAf8QAAMzAVMD+QH/A/kB/wP4Af8D+AH/A/gB/wP4 AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A5gB/wMAAf8QAAMzAVMD+QH/A/kB/wP4Af8D+AH/A/gB/wP4
Af8D+AH/A/gB/wP4Af8D+AH/A/gB/wP4Af8D+AH/A/gB/wP4Af8D+AH/A/gB/wP4Af8D+AH/A/gB/wP4 Af8D+AH/A/gB/wP4Af8D+AH/A/gB/wP4Af8D+AH/A/gB/wP4Af8D+AH/A/gB/wP4Af8D+AH/A/gB/wP4
Af8D/AH/AzcBWxgAAyoBQAGoAcABxQH/AT0BsgHAAf8BCwGiAbwB/wEAAZoBvAH/AQABlwG6Af8BLgGp Af8D/AH/AzcBWxgAAyoBQAGoAcABxQH/ATwBsgHAAf8BCgGiAbwB/wEAAZoBvAH/AQABlwG6Af8BLQGp
AbkB/wGuAasBqQH/AasBqAGmAf8BuAG1AbMB/wE9AToBOQH/AQABjwGhAf8BAAG/AdsB/wEAAaIBwQH/ AbkB/wGuAasBqQH/AasBqAGmAf8BuAG1AbMB/wE8ATkBOAH/AQABjwGhAf8BAAG/AdsB/wEAAaIBwQH/
ATEBkQGdAf8BoAGdAZsB/wGfAZwBmgH/AaYBowGhAf8BpgGjAaEB/wGkAaEBnwH/AaIBnwGdAf8BoQGe ATABkQGdAf8BoAGdAZsB/wGfAZwBmgH/AaYBowGhAf8BpgGjAaEB/wGkAaEBnwH/AaIBnwGdAf8BoQGe
AZwB/wGhAZ4BnAH/AaEBngGcAf8BiAGFAYQB/wGAATsBOgH/AYABOwE6Af8BgAE7AToB/wGWAZMBkgH/ AZwB/wGhAZ4BnAH/AaEBngGcAf8BiAGFAYQB/wGAAToBOQH/AYABOgE5Af8BgAE6ATkB/wGWAZMBkgH/
A1kBvwGOAYsBAAH/AY4BiwEAAf8BlwGUAQAB/wG6AbgBAAH/Ab0BvAEAAf8BvQG8AQAB/wG7AboBAAH/ A1kBvwGOAYsBAAH/AY4BiwEAAf8BlwGUAQAB/wG6AbgBAAH/Ab0BvAEAAf8BvQG8AQAB/wG7AboBAAH/
AcYBxAEAAf8B2QHYAagB/xAAAb4BvAEAAf8B1gHVAaIB/wLnAcoB/wwAAdsB2gGuAf8C6gHQAf8BjgGL AcYBxAEAAf8B2QHYAagB/xAAAb4BvAEAAf8B1gHVAaIB/wLnAcoB/wwAAdsB2gGuAf8C6gHQAf8BjgGL
AQAB/wG2AbQBAAH/Af4B/QH8Af8BwwHCAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/ AQAB/wG2AbQBAAH/Af4B/QH8Af8BwwHCAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/
@ -304,10 +304,10 @@
AwAB/wMAAf8DAAH/AwAB/wMAAf8DsAH/CAAD1QH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA AwAB/wMAAf8DAAH/AwAB/wMAAf8DsAH/CAAD1QH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
Af8DAAH/AwAB/wMAAf8DAAH/A5QB/wMAAf8QAAMzAVMD+AH/A/cB/wP2Af8D9gH/A/YB/wP2Af8D9gH/ Af8DAAH/AwAB/wMAAf8DAAH/A5QB/wMAAf8QAAMzAVMD+AH/A/cB/wP2Af8D9gH/A/YB/wP2Af8D9gH/
A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D+gH/ A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D+gH/
AzcBWxAAAzIBUANUAa8BWAJiAe8BAAGaAbwB/wEAAaYBxgH/AQABuAHUAf8BFAHGAd8B/wETAcIB3AH/ AzcBWxAAAzIBUANUAa8BWAJiAe8BAAGaAbwB/wEAAaYBxgH/AQABuAHUAf8BEwHGAd8B/wESAcIB3AH/
AQABmgG4Af8BugG4AbcB/wG5AbYBtQH/AbUBswGyAf8BLQGEAYoB/wEAAYQBnAH/AQABuwHXAf8BAAGu AQABmgG4Af8BugG4AbcB/wG5AbYBtQH/AbUBswGyAf8BLAGEAYoB/wEAAYQBnAH/AQABuwHXAf8BAAGu
Ac8B/wEAAZUBvgH/AT0BlAGeAf8BqgGnAaUB/wGpAaYBpAH/AacBpAGiAf8BpQGiAaAB/wGjAaABngH/ Ac8B/wEAAZUBvgH/ATwBlAGeAf8BqgGnAaUB/wGpAaYBpAH/AacBpAGiAf8BpQGiAaAB/wGjAaABngH/
AaEBngGcAf8BoQGeAZwB/wGgAZ0BmwH/AYYBgwGCAf8BggE9ATwB/wGAATsBOgH/AYABOwE6Af8BogGf AaEBngGcAf8BoQGeAZwB/wGgAZ0BmwH/AYYBgwGCAf8BggE8ATsB/wGAAToBOQH/AYABOgE5Af8BogGf
AZ4B/wNZAb8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BrgGsAQAB/wHeAd0BtAH/Ad4B3QG0Af8B3gHd AZ4B/wNZAb8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BrgGsAQAB/wHeAd0BtAH/Ad4B3QG0Af8B3gHd
AbQB/wHPAc4BkwH/AakBpwEAAf8BvgG8AQAB/wG+AbwBAAH/Ab4BvAEAAf8BvgG8AQAB/wG2AbQBAAH/ AbQB/wHPAc4BkwH/AakBpwEAAf8BvgG8AQAB/wG+AbwBAAH/Ab4BvAEAAf8BvgG8AQAB/wG2AbQBAAH/
AdYB1QGiAf8C5wHKAf8MAAHbAdoBrgH/AuoB0AH/AY4BiwEAAf8BjgGLAQAB/wGhAZ4BAAH/AY4BiwEA AdYB1QGiAf8C5wHKAf8MAAHbAdoBrgH/AuoB0AH/AY4BiwEAAf8BjgGLAQAB/wGhAZ4BAAH/AY4BiwEA
@ -316,10 +316,10 @@
Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DjwH/AwAB/xAA Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DjwH/AwAB/xAA
AzMBUwP2Af8D9QH/A/UB/wP1Af8D9QH/A/UB/wP1Af8D9QH/A/UB/wP1Af8D9QH/A/UB/wP1Af8D9QH/ AzMBUwP2Af8D9QH/A/UB/wP1Af8D9QH/A/UB/wP1Af8D9QH/A/UB/wP1Af8D9QH/A/UB/wP1Af8D9QH/
A/UB/wP1Af8D9QH/A/UB/wP1Af8D9QH/A/UB/wP5Af8DNwFbEQABkAG/Af8BAAGMAbcB/wEAAbIB0gH/ A/UB/wP1Af8D9QH/A/UB/wP1Af8D9QH/A/UB/wP5Af8DNwFbEQABkAG/Af8BAAGMAbcB/wEAAbIB0gH/
AQABxwHhAf8BFAHJAeEB/wGBAccB1wH/AZoBxAHMAf8BJwHKAeEB/wEAAaEBwgH/ASgBnQGxAf8BIQGb AQABxwHhAf8BEwHJAeEB/wGBAccB1wH/AZoBxAHMAf8BJgHKAeEB/wEAAaEBwgH/AScBnQGxAf8BIAGb
AbIB/wEAAZYBtgH/AQABoAHCAf8BAAGuAcwB/wEAAbgB1gH/AQABswHTAf8BAAGaAcEB/wEOAYgBpQH/ AbIB/wEAAZYBtgH/AQABoAHCAf8BAAGuAcwB/wEAAbgB1gH/AQABswHTAf8BAAGaAcEB/wENAYgBpQH/
AasBqAGmAf8BqgGnAaUB/wGnAaQBogH/AaYBowGhAf8BowGgAZ4B/wGiAZ8BnQH/AaEBngGcAf8BngGb AasBqAGmAf8BqgGnAaUB/wGnAaQBogH/AaYBowGhAf8BowGgAZ4B/wGiAZ8BnQH/AaEBngGcAf8BngGb
AZkB/wGHAYQBggH/AYQBgQGAAf8BggE9ATwB/wGAATsBOgH/AawBqQGnAf8DRwGAAY4BiwEAAf8BjgGL AZkB/wGHAYQBggH/AYQBgQGAAf8BggE8ATsB/wGAAToBOQH/AawBqQGnAf8DRwGAAY4BiwEAAf8BjgGL
AQAB/wGOAYsBAAH/AY4BiwEAAf8BrQGrAQAB/wL2AewB/wL5AfEB/wL5AfEB/wHrAeoB0QH/AdUB1AGh AQAB/wGOAYsBAAH/AY4BiwEAAf8BrQGrAQAB/wL2AewB/wL5AfEB/wL5AfEB/wHrAeoB0QH/AdUB1AGh
Af8C+QHxAf8C+QHxAf8C+QHxAf8B5wHmAckB/wG2AbQBAAH/AcoByQGGAf8B2gHZAasB/wHaAdkBqwH/ Af8C+QHxAf8C+QHxAf8C+QHxAf8B5wHmAckB/wG2AbQBAAH/AcoByQGGAf8B2gHZAasB/wHaAdkBqwH/
AdoB2QGrAf8BxAHDAQAB/wHqAekBzwH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGL AdoB2QGrAf8BxAHDAQAB/wHqAekBzwH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGL
@ -328,8 +328,8 @@
Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wOKAf8DAAH/EAADMwFTA/UB/wP1Af8D9AH/ Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wOKAf8DAAH/EAADMwFTA/UB/wP1Af8D9AH/
A/QB/wP0Af8D9AH/A/QB/wP0Af8D9AH/A/QB/wP0Af8D9AH/A/QB/wP0Af8D9AH/A/QB/wP0Af8D9AH/ A/QB/wP0Af8D9AH/A/QB/wP0Af8D9AH/A/QB/wP0Af8D9AH/A/QB/wP0Af8D9AH/A/QB/wP0Af8D9AH/
A/QB/wP0Af8D9AH/A/cB/wM3AVsQAAFYAmIB7wEAAZ4BxQH/AVcCXAHfA1kBvwHJAccBxgH/AccBxQHD A/QB/wP0Af8D9AH/A/cB/wM3AVsQAAFYAmIB7wEAAZ4BxQH/AVcCXAHfA1kBvwHJAccBxgH/AccBxQHD
Af8BxAHCAcEB/wGBAcYB1gH/AQwBvAHWAf8BAAGiAcMB/wEAAa4BzQH/AQABuAHVAf8BAAG6AdcB/wEA Af8BxAHCAcEB/wGBAcYB1gH/AQsBvAHWAf8BAAGiAcMB/wEAAa4BzQH/AQABuAHVAf8BAAG6AdcB/wEA
AboB1wH/AQABugHXAf8BAAG1AdUB/wEAAaEBxwH/AQQBiwGtAf8BqwGoAaYB/wGhAZ4BnAH/AakBpgGk AboB1wH/AQABugHXAf8BAAG1AdUB/wEAAaEBxwH/AQMBiwGtAf8BqwGoAaYB/wGhAZ4BnAH/AakBpgGk
Af8BowGgAZ4B/wGcAZkBlwH/AZsBmAGWAf8BnAGZAZcB/wGPAYwBiwH/AYkBhgGEAf8BhwGEAYIB/wGE Af8BowGgAZ4B/wGcAZkBlwH/AZsBmAGWAf8BnAGZAZcB/wGPAYwBiwH/AYkBhgGEAf8BhwGEAYIB/wGE
AYEBgAH/AZEBjgGNAf8BsAGtAasB/wMhATABjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGO AYEBgAH/AZEBjgGNAf8BsAGtAasB/wMhATABjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGO
AYsBAAH/AZwBmgEAAf8B3wHeAbYB/wHjAeIBvwH/AeMB4gG/Af8B3wHeAbYB/wG/Ab0BAAH/AeMB4gG/ AYsBAAH/AZwBmgEAAf8B3wHeAbYB/wHjAeIBvwH/AeMB4gG/Af8B3wHeAbYB/wG/Ab0BAAH/AeMB4gG/
@ -339,9 +339,9 @@
Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D1QH/HAAD8wH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D1QH/HAAD8wH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
AwAB/wMAAf8DAAH/AwAB/wOFAf8DAAH/EAADMwFTA/QB/wPzAf8D8gH/A/IB/wPyAf8D8gH/A/IB/wPy AwAB/wMAAf8DAAH/AwAB/wOFAf8DAAH/EAADMwFTA/QB/wPzAf8D8gH/A/IB/wPyAf8D8gH/A/IB/wPy
Af8D8gH/A/IB/wPyAf8D8gH/A/IB/wPyAf8D8gH/A/EB/wPxAf8D8QH/A/EB/wPxAf8D8QH/A/MB/wM3 Af8D8gH/A/IB/wPyAf8D8gH/A/IB/wPyAf8D8gH/A/EB/wPxAf8D8QH/A/EB/wPxAf8D8QH/A/MB/wM3
AVsQAANRAaABBwGpAc4B/wFaAl0B0wMyAVABywHJAcgB/wHIAcYBxAH/AcUBwwHCAf8BmAHCAcsB/wEk AVsQAANRAaABBgGpAc4B/wFaAl0B0wMyAVABywHJAcgB/wHIAcYBxAH/AcUBwwHCAf8BmAHCAcsB/wEj
AcgB4AH/AQABuwHZAf8BAAG7AdgB/wEAAbsB2AH/AQABvAHZAf8BAAHAAdsB/wEFAcUB3wH/AQkBwQHd AcgB4AH/AQABuwHZAf8BAAG7AdgB/wEAAbsB2AH/AQABvAHZAf8BAAHAAdsB/wEEAcUB3wH/AQgBwQHd
Af8BAAGVAbYB/wEFATIBiwH/AZ4BmwGZAf8BmwGYAZYB/wGgAZ0BmwH/AZYBkwGRAf8BlAGRAY8B/wGS Af8BAAGVAbYB/wEEATEBiwH/AZ4BmwGZAf8BmwGYAZYB/wGgAZ0BmwH/AZYBkwGRAf8BlAGRAY8B/wGS
AY8BjQH/AZABjQGLAf8BjQGKAYkB/wGLAYgBhwH/AYkBhgGEAf8BhwGEAYIB/wGhAZ4BnAH/A1wB3wQA AY8BjQH/AZABjQGLAf8BjQGKAYkB/wGLAYgBhwH/AYkBhgGEAf8BhwGEAYIB/wGhAZ4BnAH/A1wB3wQA
AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AZ0BmgEAAf8BpQGj AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AZ0BmgEAAf8BpQGj
AQAB/wGlAaMBAAH/AaUBowEAAf8BnAGZAQAB/wGjAaEBAAH/AaUBowEAAf8BpQGjAQAB/wGlAaMBAAH/ AQAB/wGlAaMBAAH/AaUBowEAAf8BnAGZAQAB/wGjAaEBAAH/AaUBowEAAf8BpQGjAQAB/wGlAaMBAAH/
@ -350,9 +350,9 @@
Af8BjgGLAQAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DmAH/JAADvgH/ Af8BjgGLAQAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DmAH/JAADvgH/
AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8QAAMzAVMD8gH/A/EB/wPx AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8QAAMzAVMD8gH/A/EB/wPx
Af8D8QH/A/EB/wPxAf8D8QH/A/EB/wPxAf8D8QH/A/EB/wPxAf8D8QH/A/EB/wPwAf8D7QH/A+oB/wPo Af8D8QH/A/EB/wPxAf8D8QH/A/EB/wPxAf8D8QH/A/EB/wPxAf8D8QH/A/EB/wPwAf8D7QH/A+oB/wPo
Af8D6AH/A+cB/wPmAf8D5wH/AzgBXBAAAzoBYAEgAbQB1wH/AQABlgG6Af8DHAEnA1wB3wHKAcgBxwH/ Af8D6AH/A+cB/wPmAf8D5wH/AzgBXBAAAzoBYAEfAbQB1wH/AQABlgG6Af8DHAEnA1wB3wHKAcgBxwH/
AcYBxAHDAf8BuwHCAcMB/wEjAcoB4QH/AQABvgHaAf8BAAHBAd0B/wESAccB4AH/ARQByAHhAf8BHQHC AcYBxAHDAf8BuwHCAcMB/wEiAcoB4QH/AQABvgHaAf8BAAHBAd0B/wERAccB4AH/ARMByAHhAf8BHAHC
AdcB/wEXAZsBqAH/AwAB/wMAAf8BhAGCAYAB/wGlAaIBoAH/AaoBpwGlAf8BqgGnAaUB/wGgAZ0BmwH/ AdcB/wEWAZsBqAH/AwAB/wMAAf8BhAGCAYAB/wGlAaIBoAH/AaoBpwGlAf8BqgGnAaUB/wGgAZ0BmwH/
AZYBkwGRAf8BlAGRAY8B/wGSAY8BjQH/AZABjQGLAf8BjQGKAYkB/wGLAYgBhwH/AZEBjgGMAf8BswGw AZYBkwGRAf8BlAGRAY8B/wGSAY8BjQH/AZABjQGLAf8BjQGKAYkB/wGLAYgBhwH/AZEBjgGMAf8BswGw
Aa4B/wNHAYAEAAGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGO Aa4B/wNHAYAEAAGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGO
AYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEA AYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEA
@ -361,8 +361,8 @@
AQAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D2gH/KwAB/wMAAf8DAAH/ AQAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8D2gH/KwAB/wMAAf8DAAH/
AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8QAAMzAVMD8QH/A/EB/wPwAf8D8AH/A/AB/wPw AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8QAAMzAVMD8QH/A/EB/wPwAf8D8AH/A/AB/wPw
Af8D8AH/A/AB/wPwAf8D8AH/A/AB/wPwAf8D8AH/A+8B/wPsAf8D5AH/A9gB/wPQAf8DzwH/A9AB/wPM Af8D8AH/A/AB/wPwAf8D8AH/A/AB/wPwAf8D8AH/A+8B/wPsAf8D5AH/A9gB/wPQAf8DzwH/A9AB/wPM
Af8DyAH/AzUBVxAAAwwBEAEqAbcB2gH/AQABoQHFAf8DQwF3AzIBUAHLAckByAH/AckBxwHFAf8BxQHD Af8DyAH/AzUBVxAAAwwBEAEpAbcB2gH/AQABoQHFAf8DQwF3AzIBUAHLAckByAH/AckBxwHFAf8BxQHD
AcIB/wE4AcYB1wH/AQABvwHbAf8BDQGyAcwB/wGOAb4BxwH/AakBuQG8Af8BuQG3AbUB/wG3AbQBsgH/ AcIB/wE3AcYB1wH/AQABvwHbAf8BDAGyAcwB/wGOAb4BxwH/AakBuQG8Af8BuQG3AbUB/wG3AbQBsgH/
AaQBogGgAf8BqwGoAaYB/wGxAa8BrQH/Aa8BrAGqAf8BrQGqAagB/wGrAagBpgH/AaIBnwGdAf8BmAGV AaQBogGgAf8BqwGoAaYB/wGxAa8BrQH/Aa8BrAGqAf8BrQGqAagB/wGrAagBpgH/AaIBnwGdAf8BmAGV
AZMB/wGWAZMBkQH/AZQBkQGPAf8BkgGPAY0B/wGQAY0BiwH/AY0BigGJAf8BrQGqAagB/wNcAd8DDAEQ AZMB/wGWAZMBkQH/AZQBkQGPAf8BkgGPAY0B/wGQAY0BiwH/AY0BigGJAf8BrQGqAagB/wNcAd8DDAEQ
BAABjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGO BAABjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGO
@ -371,8 +371,8 @@
AvwB+QH/AZ0BmwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wMAAf8DAAH/AwAB/wMA AvwB+QH/AZ0BmwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wMAAf8DAAH/AwAB/wMA
Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8vAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8vAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
Af8DAAH/AwAB/xAAAzMBUwPwAf8D7wH/A+4B/wPuAf8D7gH/A+4B/wPuAf8D7gH/A+4B/wPuAf8D7gH/ Af8DAAH/AwAB/xAAAzMBUwPwAf8D7wH/A+4B/wPuAf8D7gH/A+4B/wPuAf8D7gH/A+4B/wPuAf8D7gH/
A+4B/wPuAf8D7QH/A+gB/wPWAf8DuAH/A6cB/wOiAf8DngH/A54B/wNhAeYDFAEbFAADVAGvARoBsAHT A+4B/wPuAf8D7QH/A+gB/wPWAf8DuAH/A6cB/wOiAf8DngH/A54B/wNhAeYDFAEbFAADVAGvARkBsAHT
Af8BWgJdAdMEAANUAa8BywHJAcgB/wHHAcUBxAH/AZMBwwHMAf8BBgHDAd4B/wEAAZoBugH/Ab0BuwG6 Af8BWgJdAdMEAANUAa8BywHJAcgB/wHHAcUBxAH/AZMBwwHMAf8BBQHDAd4B/wEAAZoBugH/Ab0BuwG6
Af8BvAG6AbgB/wG6AbcBtgH/AbgBtgG0Af8BtgGzAbIB/wG0AbIBsAH/AbIBrwGtAf8BsAGtAasB/wGu Af8BvAG6AbgB/wG6AbcBtgH/AbgBtgG0Af8BtgGzAbIB/wG0AbIBsAH/AbIBrwGtAf8BsAGtAasB/wGu
AasBqQH/AasBqAGmAf8BngGbAZkB/wGbAZgBlgH/AZgBlQGTAf8BlgGTAZEB/wGUAZEBjwH/AZIBjwGN AasBqQH/AasBqAGmAf8BngGbAZkB/wGbAZgBlgH/AZgBlQGTAf8BlgGTAZEB/wGUAZEBjwH/AZIBjwGN
Af8BqAGlAaMB/wG1AbMBsQH/AyoBQAgAAY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGL Af8BqAGlAaMB/wG1AbMBsQH/AyoBQAgAAY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGL
@ -382,8 +382,8 @@
Af8BjgGLAQAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA Af8BjgGLAQAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
Af8DAAH/AwAB/wMAAf8DAAH/EAADMwFTA+4B/wPtAf8D7QH/A+0B/wPtAf8D7QH/A+0B/wPtAf8D7QH/ Af8DAAH/AwAB/wMAAf8DAAH/EAADMwFTA+4B/wPtAf8D7QH/A+0B/wPtAf8D7QH/A+0B/wPtAf8D7QH/
A+0B/wPtAf8D7QH/A+0B/wPsAf8D4wH/A8oB/wOdAf8DgwH/A4YB/wOYAf8DYgHvAycBOxgAAzoBYAEw A+0B/wPtAf8D7QH/A+0B/wPsAf8D4wH/A8oB/wOdAf8DgwH/A4YB/wOYAf8DYgHvAycBOxgAAzoBYAEv
AboB3QH/AQABkwG6Af8DGgEkAwwBEANcAc8BjQG4AcQB/wEFAaUBwAH/AQABuQHWAf8BAAGeAb4B/wGY AboB3QH/AQABkwG6Af8DGgEkAwwBEANcAc8BjQG4AcQB/wEEAaUBwAH/AQABuQHWAf8BAAGeAb4B/wGY
AbYBvQH/Ab0BuwG5Af8BvQG6AbkB/wG5AbcBtQH/AbcBtAGyAf8BtQGyAbEB/wGzAbABrgH/AbEBrwGt AbYBvQH/Ab0BuwG5Af8BvQG6AbkB/wG5AbcBtQH/AbcBtAGyAf8BtQGyAbEB/wGzAbABrgH/AbEBrwGt
Af8BrQGqAagB/wGiAZ8BnQH/AZ8BnAGaAf8BnQGaAZgB/wGbAZgBlgH/AZgBlQGTAf8BlgGTAZEB/wGk Af8BrQGqAagB/wGiAZ8BnQH/AZ8BnAGaAf8BnQGaAZgB/wGbAZgBlgH/AZgBlQGTAf8BlgGTAZEB/wGk
AaEBnwH/AbgBtQGzAf8DRwGADAABjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/ AaEBnwH/AbgBtQGzAf8DRwGADAABjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/
@ -393,7 +393,7 @@
AQAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8vAAH/AwAB/wMAAf8DAAH/ AQAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8vAAH/AwAB/wMAAf8DAAH/
AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/xAAAzMBUwPtAf8D7QH/A+wB/wPsAf8D7AH/A+wB/wPs AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/xAAAzMBUwPtAf8D7QH/A+wB/wPsAf8D7AH/A+wB/wPs
Af8D7AH/A+wB/wPsAf8D7AH/A+wB/wPsAf8D6wH/A98B/wPJAf8D7QH/A/AB/wPxAf8DZwHyAysBQhwA Af8D7AH/A+wB/wPsAf8D7AH/A+wB/wPsAf8D6wH/A98B/wPJAf8D7QH/A/AB/wPxAf8DZwHyAysBQhwA
AwwBEAE7AcEB4gH/AQ0BngHHAf8BWAJaAcADUQGiAQABmAG7Af8BAAGjAcQB/wEAAbUB0wH/AQABwgHe AwwBEAE6AcEB4gH/AQwBngHHAf8BWAJaAcADUQGiAQABmAG7Af8BAAGjAcQB/wEAAbUB0wH/AQABwgHe
Af8BAAGxAdAB/wGhAbcBvQH/Ab4BvAG6Af8BvQG7AbkB/wG9AboBuQH/AboBtwG1Af8BtgGzAbEB/wGy Af8BAAGxAdAB/wGhAbcBvQH/Ab4BvAG6Af8BvQG7AbkB/wG9AboBuQH/AboBtwG1Af8BtgGzAbEB/wGy
Aa8BrQH/Aa4BqwGpAf8BpgGjAaEB/wGkAaEBnwH/AaIBnwGdAf8BnwGcAZoB/wGdAZoBmAH/AZ0BmgGY Aa8BrQH/Aa4BqwGpAf8BpgGjAaEB/wGkAaEBnwH/AaIBnwGdAf8BnwGcAZoB/wGdAZoBmAH/AZ0BmgGY
Af8BrgGrAakB/wG5AbcBtQH/A1EBnxAAAY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGL Af8BrgGrAakB/wG5AbcBtQH/A1EBnxAAAY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGL
@ -403,8 +403,8 @@
AY4BiwEAAf8BjgGLAQAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ AY4BiwEAAf8BjgGLAQAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/EAADMwFTA+wB/wPsAf8D6wH/A+sB/wPrAf8D6wH/A+sB/wPr AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/EAADMwFTA+wB/wPsAf8D6wH/A+sB/wPrAf8D6wH/A+sB/wPr
Af8D6wH/A+sB/wPrAf8D6wH/A+sB/wPpAf8D3AH/A8cB/wP+Bf8DZwHyAywBRCQAA1wBzwEoAbYB2wH/ Af8D6wH/A+sB/wPrAf8D6wH/A+sB/wPpAf8D3AH/A8cB/wP+Bf8DZwHyAywBRCQAA1wBzwEnAbYB2wH/
AQcBlwHCAf8BBQGeAcYB/wEOAbEB1AH/ARoBvQHcAf8BIQHAAdsB/wE8AcIB1AH/AaMBwgHJAf8BwgHA AQYBlwHCAf8BBAGeAcYB/wENAbEB1AH/ARkBvQHcAf8BIAHAAdsB/wE7AcIB1AH/AaMBwgHJAf8BwgHA
Ab4B/wG/AbwBuwH/Ab0BuwG5Af8BuwG4AbcB/wG6AbcBtQH/AbQBsQGvAf8BrQGqAagB/wGrAagBpgH/ Ab4B/wG/AbwBuwH/Ab0BuwG5Af8BuwG4AbcB/wG6AbcBtQH/AbQBsQGvAf8BrQGqAagB/wGrAagBpgH/
AakBpgGkAf8BpgGjAaEB/wGkAaEBnwH/AaIBnwGdAf8BpwGkAaIB/wG4AbYBtAH/AbwBuQG4Af8DQAFw AakBpgGkAf8BpgGjAaEB/wGkAaEBnwH/AaIBnwGdAf8BpwGkAaIB/wG4AbYBtAH/AbwBuQG4Af8DQAFw
FAABjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGO FAABjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGO
@ -414,8 +414,8 @@
Af8BjgGLAQAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA Af8BjgGLAQAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
Af8DAAH/AwAB/wMAAf8DAAH/EAADMwFTA+oB/wPqAf8D6QH/A+kB/wPpAf8D6QH/A+kB/wPpAf8D6QH/ Af8DAAH/AwAB/wMAAf8DAAH/EAADMwFTA+oB/wPqAf8D6QH/A+kB/wPpAf8D6QH/A+kB/wPpAf8D6QH/
A+kB/wPpAf8D6QH/A+kB/wPmAf8D2AH/A8YB/wP4Af8DZwHyAy0BRSgAA0ABcAGLAcoB6AH/ATcBvwHh A+kB/wPpAf8D6QH/A+kB/wPmAf8D2AH/A8YB/wP4Af8DZwHyAy0BRSgAA0ABcAGLAcoB6AH/ATYBvwHh
Af8BMwG7Ad4B/wNUAa8DOgFgAwwBEANHAYADYgHvAcsByQHIAf8BxgHEAcMB/wHBAb8BvQH/AbwBuQG4 Af8BMgG7Ad4B/wNUAa8DOgFgAwwBEANHAYADYgHvAcsByQHIAf8BxgHEAcMB/wHBAb8BvQH/AbwBuQG4
Af8BugG3AbYB/wG5AbYBtAH/Aa8BrAGqAf8BrQGqAagB/wGrAagBpgH/AawBqQGnAf8BsAGtAawB/wG7 Af8BugG3AbYB/wG5AbYBtAH/Aa8BrAGqAf8BrQGqAagB/wGrAagBpgH/AawBqQGnAf8BsAGtAawB/wG7
AbgBtgH/Ab8BvAG7Af8DXAHPAyEBMBgAAY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGL AbgBtgH/Ab8BvAG7Af8DXAHPAyEBMBgAAY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGL
AQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/ AQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/AY4BiwEAAf8BjgGLAQAB/wGOAYsBAAH/
@ -1066,36 +1066,12 @@
<metadata name="dataGridViewTextBoxColumnName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="dataGridViewTextBoxColumnName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="Type.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumnName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewCheckBoxColumnProtocolEnable.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="dataGridViewCheckBoxColumnProtocolEnable.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="dataGridViewTextBoxColumnProtocolType.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="dataGridViewTextBoxColumnProtocolType.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="dataGridViewCheckBoxColumnProtocolEnable.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumnProtocolType.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Active.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="OS.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Executable.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Title.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Active.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Active.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
@ -1117,12 +1093,6 @@
<metadata name="ArgumentParameter.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="ArgumentParameter.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="ArgumentActive.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ArgumentParameter.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="checkBoxPermittedProcessAllowUser.ToolTip" xml:space="preserve"> <data name="checkBoxPermittedProcessAllowUser.ToolTip" xml:space="preserve">
<value>Allow locating third party applications with a file dialog if it cannot be found at the paths specified. Only applications matching other criteria specified (like Original Name, executable) are accepted.</value> <value>Allow locating third party applications with a file dialog if it cannot be found at the paths specified. Only applications matching other criteria specified (like Original Name, executable) are accepted.</value>
</data> </data>
@ -1138,18 +1108,6 @@
<metadata name="dataGridViewTextBoxColumn2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="dataGridViewTextBoxColumn2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="dataGridViewCheckBoxColumn1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewComboBoxColumn1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="label23.Text" xml:space="preserve"> <data name="label23.Text" xml:space="preserve">
<value>The seb(s):// link to the config file can contain an additional query string, separated from the main URL by '?' or '??' (if the URL itself doesn't contain a query). SEB will then append this query string to the Start URL.</value> <value>The seb(s):// link to the config file can contain an additional query string, separated from the main URL by '?' or '??' (if the URL itself doesn't contain a query). SEB will then append this query string to the Start URL.</value>
</data> </data>
@ -1167,30 +1125,12 @@ IMPORTANT: Always copy the key(s) as a last step, after the configuration file w
<data name="label18.Text" xml:space="preserve"> <data name="label18.Text" xml:space="preserve">
<value>The Browser Exam Key verifies the intergrity of an installed SEB version as well as the configuration used by an exam client. This means that this key is different for every configuration and SEB version used. It changes when one or more configuration value(s) change as well as when a different SEB version is used.</value> <value>The Browser Exam Key verifies the intergrity of an installed SEB version as well as the configuration used by an exam client. This means that this key is different for every configuration and SEB version used. It changes when one or more configuration value(s) change as well as when a different SEB version is used.</value>
</data> </data>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="checkBoxAllowBrowsingBackForward.ToolTip" xml:space="preserve">
<value>Disabling browsing to previously visited pages (by Ctrl-Cursor left or the button in the browser toolbar, if enabled) increases security, because it might be possible to leave an exam by browsing back to an external start page.</value>
</data>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="checkBoxAllowNavigationNewWindow.ToolTip" xml:space="preserve"> <data name="checkBoxAllowNavigationNewWindow.ToolTip" xml:space="preserve">
<value>Disabling browsing to previously visited pages (by Ctrl-Cursor left or the button in the browser toolbar, if enabled) might not be desired for additional resources and other content opening in additional browser windows, therefore this separate setting.</value> <value>Disabling browsing to previously visited pages (by Ctrl-Cursor left or the button in the browser toolbar, if enabled) might not be desired for additional resources and other content opening in additional browser windows, therefore this separate setting.</value>
</data> </data>
<metadata name="spellCheckerDictionaryEnabledColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <data name="checkBoxAllowBrowsingBackForward.ToolTip" xml:space="preserve">
<value>True</value> <value>Disabling browsing to previously visited pages (by Ctrl-Cursor left or the button in the browser toolbar, if enabled) increases security, because it might be possible to leave an exam by browsing back to an external start page.</value>
</metadata> </data>
<metadata name="spellCheckerDictionaryLocaleColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="spellCheckerDictionaryFilesColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="spellCheckerDictionaryEnabledColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="spellCheckerDictionaryEnabledColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>