Repository: peterhaneve/evemon Branch: main Commit: 7a8903818d40 Files: 1881 Total size: 14.0 MB Directory structure: gitextract__b3_uj3j/ ├── .editorconfig ├── .gitattributes ├── .gitignore ├── EVEMon.sln ├── README.md ├── SharedAssemblyInfo.cs ├── SharedAssemblyInfo.template.cs ├── designs/ │ ├── AutoUpdate-Architecture.bmml │ ├── AutoUpdate-UI-EVEMonUpdate.bmml │ ├── AutoUpdate-UI-UpdateDetails.bmml │ └── PosMonitor.bmml ├── src/ │ ├── EVEMon/ │ │ ├── APIErrorHandling/ │ │ │ ├── APIErrorWindow.Designer.cs │ │ │ ├── APIErrorWindow.cs │ │ │ ├── APIErrorWindow.resx │ │ │ ├── HttpTimeoutTroubleshooter.Designer.cs │ │ │ ├── HttpTimeoutTroubleshooter.cs │ │ │ └── HttpTimeoutTroubleshooter.resx │ │ ├── About/ │ │ │ ├── AboutWindow.Designer.cs │ │ │ ├── AboutWindow.cs │ │ │ └── AboutWindow.resx │ │ ├── ApiCredentialsManagement/ │ │ │ ├── CharacterDeletionWindow.Designer.cs │ │ │ ├── CharacterDeletionWindow.cs │ │ │ ├── CharacterDeletionWindow.resx │ │ │ ├── CharacterImportationWindow.Designer.cs │ │ │ ├── CharacterImportationWindow.cs │ │ │ ├── CharacterImportationWindow.resx │ │ │ ├── EsiKeyDeletionWindow.Designer.cs │ │ │ ├── EsiKeyDeletionWindow.cs │ │ │ ├── EsiKeyDeletionWindow.resx │ │ │ ├── EsiKeyUpdateOrAdditionWindow.Designer.cs │ │ │ ├── EsiKeyUpdateOrAdditionWindow.cs │ │ │ ├── EsiKeyUpdateOrAdditionWindow.resx │ │ │ ├── EsiKeysListBox.cs │ │ │ ├── EsiKeysManagementWindow.Designer.cs │ │ │ ├── EsiKeysManagementWindow.cs │ │ │ └── EsiKeysManagementWindow.resx │ │ ├── App.config │ │ ├── BlankCharacter/ │ │ │ ├── BlankCharacterControl.Designer.cs │ │ │ ├── BlankCharacterControl.cs │ │ │ ├── BlankCharacterControl.resx │ │ │ ├── BlankCharacterWindow.Designer.cs │ │ │ ├── BlankCharacterWindow.cs │ │ │ └── BlankCharacterWindow.resx │ │ ├── BlankCharacterControl.Designer.cs │ │ ├── BlankCharacterControl.cs │ │ ├── BlankCharacterControl.resx │ │ ├── BlankCharacterWindow.Designer.cs │ │ ├── BlankCharacterWindow.cs │ │ ├── BlankCharacterWindow.resx │ │ ├── CharacterMonitoring/ │ │ │ ├── AssetsColumnsSelectWindow.cs │ │ │ ├── CharacterAssetsList.Designer.cs │ │ │ ├── CharacterAssetsList.cs │ │ │ ├── CharacterAssetsList.resx │ │ │ ├── CharacterContactList.Designer.cs │ │ │ ├── CharacterContactList.cs │ │ │ ├── CharacterContactList.resx │ │ │ ├── CharacterContractsList.Designer.cs │ │ │ ├── CharacterContractsList.cs │ │ │ ├── CharacterContractsList.resx │ │ │ ├── CharacterEmploymentHistoryList.Designer.cs │ │ │ ├── CharacterEmploymentHistoryList.cs │ │ │ ├── CharacterEmploymentHistoryList.resx │ │ │ ├── CharacterEveMailMessagesList.Designer.cs │ │ │ ├── CharacterEveMailMessagesList.cs │ │ │ ├── CharacterEveMailMessagesList.resx │ │ │ ├── CharacterEveNotificationsList.Designer.cs │ │ │ ├── CharacterEveNotificationsList.cs │ │ │ ├── CharacterEveNotificationsList.resx │ │ │ ├── CharacterFactionalWarfareStatsList.Designer.cs │ │ │ ├── CharacterFactionalWarfareStatsList.cs │ │ │ ├── CharacterFactionalWarfareStatsList.resx │ │ │ ├── CharacterIndustryJobsList.Designer.cs │ │ │ ├── CharacterIndustryJobsList.cs │ │ │ ├── CharacterIndustryJobsList.resx │ │ │ ├── CharacterKillLogList.Designer.cs │ │ │ ├── CharacterKillLogList.cs │ │ │ ├── CharacterKillLogList.resx │ │ │ ├── CharacterLoyaltyList.Designer.cs │ │ │ ├── CharacterLoyaltyList.cs │ │ │ ├── CharacterLoyaltyList.resx │ │ │ ├── CharacterMarketOrdersList.Designer.cs │ │ │ ├── CharacterMarketOrdersList.cs │ │ │ ├── CharacterMarketOrdersList.resx │ │ │ ├── CharacterMedalsList.Designer.cs │ │ │ ├── CharacterMedalsList.cs │ │ │ ├── CharacterMedalsList.resx │ │ │ ├── CharacterMonitor.Designer.cs │ │ │ ├── CharacterMonitor.cs │ │ │ ├── CharacterMonitor.resx │ │ │ ├── CharacterMonitorBody.Designer.cs │ │ │ ├── CharacterMonitorBody.cs │ │ │ ├── CharacterMonitorBody.resx │ │ │ ├── CharacterMonitorFooter.Designer.cs │ │ │ ├── CharacterMonitorFooter.cs │ │ │ ├── CharacterMonitorFooter.resx │ │ │ ├── CharacterMonitorHeader.Designer.cs │ │ │ ├── CharacterMonitorHeader.cs │ │ │ ├── CharacterMonitorHeader.resx │ │ │ ├── CharacterPlanetaryList.Designer.cs │ │ │ ├── CharacterPlanetaryList.cs │ │ │ ├── CharacterPlanetaryList.resx │ │ │ ├── CharacterResearchPointsList.Designer.cs │ │ │ ├── CharacterResearchPointsList.cs │ │ │ ├── CharacterResearchPointsList.resx │ │ │ ├── CharacterSkillsList.Designer.cs │ │ │ ├── CharacterSkillsList.cs │ │ │ ├── CharacterSkillsList.resx │ │ │ ├── CharacterSkillsQueueList.Designer.cs │ │ │ ├── CharacterSkillsQueueList.cs │ │ │ ├── CharacterSkillsQueueList.resx │ │ │ ├── CharacterStandingsList.Designer.cs │ │ │ ├── CharacterStandingsList.cs │ │ │ ├── CharacterStandingsList.resx │ │ │ ├── CharacterWalletJournalList.Designer.cs │ │ │ ├── CharacterWalletJournalList.cs │ │ │ ├── CharacterWalletJournalList.resx │ │ │ ├── CharacterWalletTransactionsList.Designer.cs │ │ │ ├── CharacterWalletTransactionsList.cs │ │ │ ├── CharacterWalletTransactionsList.resx │ │ │ ├── ContractsColumnsSelectWindow.cs │ │ │ ├── EveMailMessagesColumnsSelectWindow.cs │ │ │ ├── EveNotificationsColumnsSelectWindow.cs │ │ │ ├── IndustryJobsColumnsSelectWindow.cs │ │ │ ├── MarketOrdersColumnsSelectWindow.cs │ │ │ ├── PlanetaryColumnsSelectWindow.Designer.cs │ │ │ ├── PlanetaryColumnsSelectWindow.cs │ │ │ ├── ResearchColumnsSelectWindow.cs │ │ │ ├── WalletJournalColumnsSelectWindow.cs │ │ │ └── WalletTransactionsColumnsSelectWindow.cs │ │ ├── CharactersComparison/ │ │ │ ├── CharactersComparisonWindow.Designer.cs │ │ │ ├── CharactersComparisonWindow.cs │ │ │ └── CharactersComparisonWindow.resx │ │ ├── Controls/ │ │ │ ├── KillReportAttacker.Designer.cs │ │ │ ├── KillReportAttacker.cs │ │ │ ├── KillReportAttacker.resx │ │ │ ├── KillReportFittingContent.Designer.cs │ │ │ ├── KillReportFittingContent.cs │ │ │ ├── KillReportFittingContent.resx │ │ │ ├── KillReportInvolvedParties.Designer.cs │ │ │ ├── KillReportInvolvedParties.cs │ │ │ ├── KillReportInvolvedParties.resx │ │ │ ├── KillReportVictim.Designer.cs │ │ │ ├── KillReportVictim.cs │ │ │ ├── KillReportVictim.resx │ │ │ ├── NotificationList.Designer.cs │ │ │ ├── NotificationList.cs │ │ │ ├── NotificationList.resx │ │ │ ├── Overview.Designer.cs │ │ │ ├── Overview.cs │ │ │ ├── Overview.resx │ │ │ ├── OverviewItem.Designer.cs │ │ │ ├── OverviewItem.cs │ │ │ ├── OverviewItem.resx │ │ │ ├── OverviewLabel.cs │ │ │ ├── ReadingPane.Designer.cs │ │ │ ├── ReadingPane.cs │ │ │ └── ReadingPane.resx │ │ ├── DetailsWindow/ │ │ │ ├── ContractDetailsWindow.Designer.cs │ │ │ ├── ContractDetailsWindow.cs │ │ │ ├── ContractDetailsWindow.resx │ │ │ ├── EveMessageWindow.Designer.cs │ │ │ ├── EveMessageWindow.cs │ │ │ ├── EveMessageWindow.resx │ │ │ ├── KillReportWindow.Designer.cs │ │ │ ├── KillReportWindow.cs │ │ │ ├── KillReportWindow.resx │ │ │ ├── WalletJournalChartWindow.Designer.cs │ │ │ ├── WalletJournalChartWindow.cs │ │ │ └── WalletJournalChartWindow.resx │ │ ├── EVEMon.csproj │ │ ├── ExceptionHandling/ │ │ │ ├── UnhandledExceptionWindow.Designer.cs │ │ │ ├── UnhandledExceptionWindow.cs │ │ │ └── UnhandledExceptionWindow.resx │ │ ├── GlobalSuppressions.cs │ │ ├── ImplantControls/ │ │ │ ├── ImplantSetsWindow.Designer.cs │ │ │ ├── ImplantSetsWindow.cs │ │ │ ├── ImplantSetsWindow.resx │ │ │ ├── ImplantTooltip.Designer.cs │ │ │ ├── ImplantTooltip.cs │ │ │ └── ImplantTooltip.resx │ │ ├── MainWindow.Designer.cs │ │ ├── MainWindow.cs │ │ ├── MainWindow.resx │ │ ├── NotificationWindow/ │ │ │ ├── ContractsWindow.Designer.cs │ │ │ ├── ContractsWindow.cs │ │ │ ├── ContractsWindow.resx │ │ │ ├── IndustryJobsWindow.Designer.cs │ │ │ ├── IndustryJobsWindow.cs │ │ │ ├── IndustryJobsWindow.resx │ │ │ ├── MarketOrdersWindow.Designer.cs │ │ │ ├── MarketOrdersWindow.cs │ │ │ ├── MarketOrdersWindow.resx │ │ │ ├── OwnedSkillBooksWindow.Designer.cs │ │ │ ├── OwnedSkillBooksWindow.cs │ │ │ ├── OwnedSkillBooksWindow.resx │ │ │ ├── PlanetaryPinsWindow.Designer.cs │ │ │ ├── PlanetaryPinsWindow.cs │ │ │ ├── PlanetaryPinsWindow.resx │ │ │ ├── SkillCompletionWindow.Designer.cs │ │ │ ├── SkillCompletionWindow.cs │ │ │ ├── SkillCompletionWindow.resx │ │ │ ├── TimeCheckNotification.Designer.cs │ │ │ ├── TimeCheckNotification.cs │ │ │ └── TimeCheckNotification.resx │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ ├── Resources.resx │ │ │ ├── Settings.Designer.cs │ │ │ └── Settings.settings │ │ ├── Schedule/ │ │ │ ├── CalendarControl.Designer.cs │ │ │ ├── CalendarControl.cs │ │ │ ├── CalendarControl.resx │ │ │ ├── DateSelectWindow.Designer.cs │ │ │ ├── DateSelectWindow.cs │ │ │ ├── DateSelectWindow.resx │ │ │ ├── EditScheduleEntryWindow.Designer.cs │ │ │ ├── EditScheduleEntryWindow.cs │ │ │ ├── EditScheduleEntryWindow.resx │ │ │ ├── ScheduleCalendar.cs │ │ │ ├── ScheduleEditorWindow.Designer.cs │ │ │ ├── ScheduleEditorWindow.cs │ │ │ └── ScheduleEditorWindow.resx │ │ ├── SettingsUI/ │ │ │ ├── CloudStorageServiceControl.Designer.cs │ │ │ ├── CloudStorageServiceControl.cs │ │ │ ├── CloudStorageServiceControl.resx │ │ │ ├── EmailNotificationsControl.Designer.cs │ │ │ ├── EmailNotificationsControl.cs │ │ │ ├── EmailNotificationsControl.resx │ │ │ ├── ExternalCalendarControl.Designer.cs │ │ │ ├── ExternalCalendarControl.cs │ │ │ ├── ExternalCalendarControl.resx │ │ │ ├── NotificationsControl.Designer.cs │ │ │ ├── NotificationsControl.cs │ │ │ ├── NotificationsControl.resx │ │ │ ├── PortableEveClientsControl.Designer.cs │ │ │ ├── PortableEveClientsControl.cs │ │ │ ├── PortableEveClientsControl.resx │ │ │ ├── ProxyAuthenticationWindow.Designer.cs │ │ │ ├── ProxyAuthenticationWindow.cs │ │ │ ├── ProxyAuthenticationWindow.resx │ │ │ ├── SettingsFileStorageControl.Designer.cs │ │ │ ├── SettingsFileStorageControl.cs │ │ │ ├── SettingsFileStorageControl.resx │ │ │ ├── SettingsForm.Designer.cs │ │ │ ├── SettingsForm.cs │ │ │ ├── SettingsForm.resx │ │ │ ├── TrayBaseWindow.Designer.cs │ │ │ ├── TrayBaseWindow.cs │ │ │ ├── TrayBaseWindow.resx │ │ │ ├── TrayPopUpConfigForm.Designer.cs │ │ │ ├── TrayPopUpConfigForm.cs │ │ │ ├── TrayPopUpConfigForm.resx │ │ │ ├── TrayPopUpWindow.cs │ │ │ ├── TrayTooltipConfigForm.Designer.cs │ │ │ ├── TrayTooltipConfigForm.cs │ │ │ ├── TrayTooltipConfigForm.resx │ │ │ ├── TrayTooltipWindow.cs │ │ │ ├── UpdateSettingsControl.Designer.cs │ │ │ ├── UpdateSettingsControl.cs │ │ │ └── UpdateSettingsControl.resx │ │ ├── SkillPlanner/ │ │ │ ├── AttributeBarControl.cs │ │ │ ├── AttributeButtonControl.cs │ │ │ ├── AttributesOptimizerControl.Designer.cs │ │ │ ├── AttributesOptimizerControl.cs │ │ │ ├── AttributesOptimizerControl.resx │ │ │ ├── AttributesOptimizerOptionsWindow.Designer.cs │ │ │ ├── AttributesOptimizerOptionsWindow.cs │ │ │ ├── AttributesOptimizerOptionsWindow.resx │ │ │ ├── AttributesOptimizerWindow.Designer.cs │ │ │ ├── AttributesOptimizerWindow.cs │ │ │ ├── AttributesOptimizerWindow.resx │ │ │ ├── BlueprintBrowserControl.Designer.cs │ │ │ ├── BlueprintBrowserControl.cs │ │ │ ├── BlueprintBrowserControl.resx │ │ │ ├── BlueprintSelectControl.Designer.cs │ │ │ ├── BlueprintSelectControl.cs │ │ │ ├── BlueprintSelectControl.resx │ │ │ ├── BrowserClasses.cd │ │ │ ├── CertificateBrowserControl.Designer.cs │ │ │ ├── CertificateBrowserControl.cs │ │ │ ├── CertificateBrowserControl.resx │ │ │ ├── CertificateSelectControl.Designer.cs │ │ │ ├── CertificateSelectControl.cs │ │ │ ├── CertificateSelectControl.resx │ │ │ ├── CertificateTreeDisplayControl.Designer.cs │ │ │ ├── CertificateTreeDisplayControl.cs │ │ │ ├── CertificateTreeDisplayControl.resx │ │ │ ├── EveObjectBrowserControl.Designer.cs │ │ │ ├── EveObjectBrowserControl.cs │ │ │ ├── EveObjectBrowserControl.resx │ │ │ ├── EveObjectBrowserSimple.Designer.cs │ │ │ ├── EveObjectBrowserSimple.cs │ │ │ ├── EveObjectBrowserSimple.resx │ │ │ ├── EveObjectSelectControl.Designer.cs │ │ │ ├── EveObjectSelectControl.cs │ │ │ ├── EveObjectSelectControl.resx │ │ │ ├── ImplantCalculatorWindow.Designer.cs │ │ │ ├── ImplantCalculatorWindow.cs │ │ │ ├── ImplantCalculatorWindow.resx │ │ │ ├── ItemBrowserControl.Designer.cs │ │ │ ├── ItemBrowserControl.cs │ │ │ ├── ItemBrowserControl.resx │ │ │ ├── ItemSelectControl.Designer.cs │ │ │ ├── ItemSelectControl.cs │ │ │ ├── ItemSelectControl.resx │ │ │ ├── LoadoutImportationWindow.Designer.cs │ │ │ ├── LoadoutImportationWindow.cs │ │ │ ├── LoadoutImportationWindow.resx │ │ │ ├── MasteryTreeDisplayControl.Designer.cs │ │ │ ├── MasteryTreeDisplayControl.cs │ │ │ ├── MasteryTreeDisplayControl.resx │ │ │ ├── NewPlanWindow.Designer.cs │ │ │ ├── NewPlanWindow.cs │ │ │ ├── NewPlanWindow.resx │ │ │ ├── ObsoleteEntriesWindow.Designer.cs │ │ │ ├── ObsoleteEntriesWindow.cs │ │ │ ├── ObsoleteEntriesWindow.resx │ │ │ ├── OverridenTreeView.cs │ │ │ ├── PlanColumnSelectWindow.cs │ │ │ ├── PlanEditorControl.Designer.cs │ │ │ ├── PlanEditorControl.cs │ │ │ ├── PlanEditorControl.resx │ │ │ ├── PlanImportationFromCharacterWindow.Designer.cs │ │ │ ├── PlanImportationFromCharacterWindow.cs │ │ │ ├── PlanImportationFromCharacterWindow.resx │ │ │ ├── PlanManagementWindow.Designer.cs │ │ │ ├── PlanManagementWindow.cs │ │ │ ├── PlanManagementWindow.resx │ │ │ ├── PlanNotesEditorWindow.Designer.cs │ │ │ ├── PlanNotesEditorWindow.cs │ │ │ ├── PlanNotesEditorWindow.resx │ │ │ ├── PlanPrioritiesEditorWindow.Designer.cs │ │ │ ├── PlanPrioritiesEditorWindow.cs │ │ │ ├── PlanPrioritiesEditorWindow.resx │ │ │ ├── PlanToOperationWindow.Designer.cs │ │ │ ├── PlanToOperationWindow.cs │ │ │ ├── PlanToOperationWindow.resx │ │ │ ├── PlanWindow.Designer.cs │ │ │ ├── PlanWindow.cs │ │ │ ├── PlanWindow.resx │ │ │ ├── RequiredSkillsControl.Designer.cs │ │ │ ├── RequiredSkillsControl.cs │ │ │ ├── RequiredSkillsControl.resx │ │ │ ├── ShipBrowserControl.Designer.cs │ │ │ ├── ShipBrowserControl.cs │ │ │ ├── ShipBrowserControl.resx │ │ │ ├── ShipLoadoutSelectWindow.Designer.cs │ │ │ ├── ShipLoadoutSelectWindow.cs │ │ │ ├── ShipLoadoutSelectWindow.resx │ │ │ ├── ShipSelectControl.Designer.cs │ │ │ ├── ShipSelectControl.cs │ │ │ ├── ShipSelectControl.resx │ │ │ ├── SkillBrowserControl.Designer.cs │ │ │ ├── SkillBrowserControl.cs │ │ │ ├── SkillBrowserControl.resx │ │ │ ├── SkillExplorerWindow.Designer.cs │ │ │ ├── SkillExplorerWindow.cs │ │ │ ├── SkillExplorerWindow.resx │ │ │ ├── SkillSelectControl.Designer.cs │ │ │ ├── SkillSelectControl.cs │ │ │ ├── SkillSelectControl.resx │ │ │ ├── SkillTreeDisplayControl.Designer.cs │ │ │ ├── SkillTreeDisplayControl.cs │ │ │ ├── SkillTreeDisplayControl.resx │ │ │ ├── SuggestionWindow.Designer.cs │ │ │ ├── SuggestionWindow.cs │ │ │ └── SuggestionWindow.resx │ │ ├── Updater/ │ │ │ ├── DataUpdateDownloadForm.Designer.cs │ │ │ ├── DataUpdateDownloadForm.cs │ │ │ ├── DataUpdateDownloadForm.resx │ │ │ ├── DataUpdateNotifyForm.Designer.cs │ │ │ ├── DataUpdateNotifyForm.cs │ │ │ ├── DataUpdateNotifyForm.resx │ │ │ ├── UpdateDownloadForm.Designer.cs │ │ │ ├── UpdateDownloadForm.cs │ │ │ ├── UpdateDownloadForm.resx │ │ │ ├── UpdateNotifyForm.Designer.cs │ │ │ ├── UpdateNotifyForm.cs │ │ │ └── UpdateNotifyForm.resx │ │ └── app.manifest │ ├── EVEMon.Common/ │ │ ├── App.config │ │ ├── AsyncPump.cs │ │ ├── Attributes/ │ │ │ ├── EnforceUIThreadAffinity.cs │ │ │ ├── ForcedOnStartupAttribute.cs │ │ │ ├── FullKeyAttribute.cs │ │ │ ├── HeaderAttribute.cs │ │ │ ├── Internals/ │ │ │ │ └── NotifyPropertyChanged.Subs.cs │ │ │ ├── ParentAttribute.cs │ │ │ └── UpdateAttribute.cs │ │ ├── CloudStorageServices/ │ │ │ ├── AuthenticationSteps.cs │ │ │ ├── CloudStorageServiceAPIFile.cs │ │ │ ├── CloudStorageServiceProvider.cs │ │ │ ├── CloudStorageServiceResources.Designer.cs │ │ │ ├── CloudStorageServiceResources.resx │ │ │ ├── CloudStorageServiceSettings.Designer.cs │ │ │ ├── CloudStorageServiceSettings.settings │ │ │ ├── Dropbox/ │ │ │ │ ├── DropboxCloudStorageServiceProvider.cs │ │ │ │ ├── DropboxCloudStorageServiceSettings.Designer.cs │ │ │ │ └── DropboxCloudStorageServiceSettings.settings │ │ │ ├── GoogleDrive/ │ │ │ │ ├── GoogleDriveCloudStorageServiceProvider.cs │ │ │ │ ├── GoogleDriveCloudStorageServiceSettings.Designer.cs │ │ │ │ └── GoogleDriveCloudStorageServiceSettings.settings │ │ │ └── OneDrive/ │ │ │ ├── OneDriveCloudStorageServiceProvider.cs │ │ │ ├── OneDriveCloudStorageServiceSettings.Designer.cs │ │ │ └── OneDriveCloudStorageServiceSettings.settings │ │ ├── Collections/ │ │ │ ├── BaseList.cs │ │ │ ├── CollectionExtensions.cs │ │ │ ├── EnumerableExtensions.cs │ │ │ ├── FastList.cs │ │ │ ├── Global/ │ │ │ │ ├── GlobalAPIKeyCollection.cs │ │ │ │ ├── GlobalAPIProviderCollection.cs │ │ │ │ ├── GlobalCharacterCollection.cs │ │ │ │ ├── GlobalCharacterIdentityCollection.cs │ │ │ │ ├── GlobalDatafileCollection.cs │ │ │ │ ├── GlobalMonitoredCharacterCollection.cs │ │ │ │ └── GlobalNotificationCollection.cs │ │ │ ├── IReadonlyCollection.cs │ │ │ ├── IReadonlyKeyedCollection.cs │ │ │ ├── ReadonlyCollection.cs │ │ │ ├── ReadonlyKeyedCollection.cs │ │ │ └── ReadonlyVirtualCollection.cs │ │ ├── Constants/ │ │ │ ├── CultureConstants.cs │ │ │ ├── DBConstants.cs │ │ │ ├── EveConstants.cs │ │ │ ├── EveMonConstants.cs │ │ │ ├── NetworkConstants.resx │ │ │ └── NetworkConstants1.Designer.cs │ │ ├── Controls/ │ │ │ ├── ApiErrorTroubleshooter.Designer.cs │ │ │ ├── ApiErrorTroubleshooter.cs │ │ │ ├── ApiErrorTroubleshooter.resx │ │ │ ├── AutoEllipsisToolStripRenderer.cs │ │ │ ├── BorderPanel.cs │ │ │ ├── CharacterPortrait.Designer.cs │ │ │ ├── CharacterPortrait.cs │ │ │ ├── CharacterPortrait.resx │ │ │ ├── CheckedComboBox.cs │ │ │ ├── ColumnSelectWindow.Designer.cs │ │ │ ├── ColumnSelectWindow.cs │ │ │ ├── ColumnSelectWindow.resx │ │ │ ├── ControlExtensions.cs │ │ │ ├── CopySaveOptionsWindow.Designer.cs │ │ │ ├── CopySaveOptionsWindow.cs │ │ │ ├── CopySaveOptionsWindow.resx │ │ │ ├── CustomComboBox.cs │ │ │ ├── CustomCursors.cs │ │ │ ├── DraggableListView.cs │ │ │ ├── DraggableTabControl.cs │ │ │ ├── DropDownMouseMoveComboBox.cs │ │ │ ├── EVEMonForm.Designer.cs │ │ │ ├── EVEMonForm.cs │ │ │ ├── EVEMonForm.resx │ │ │ ├── EveFolderWindow.Designer.cs │ │ │ ├── EveFolderWindow.cs │ │ │ ├── EveFolderWindow.resx │ │ │ ├── EveImage.Designer.cs │ │ │ ├── EveImage.cs │ │ │ ├── EveImage.resx │ │ │ ├── EveImagePopUp.Designer.cs │ │ │ ├── EveImagePopUp.cs │ │ │ ├── EveImagePopUp.resx │ │ │ ├── ExpandablePanelControl.cs │ │ │ ├── InfiniteDisplayToolTip.cs │ │ │ ├── IntuitiveDataGridView.cs │ │ │ ├── ListViewDragEventArgs.cs │ │ │ ├── ListViewHelper.cs │ │ │ ├── ListViewItemComparerByTag.cs │ │ │ ├── MessageBoxCustom.Designer.cs │ │ │ ├── MessageBoxCustom.cs │ │ │ ├── MessageBoxCustom.resx │ │ │ ├── MultiPanel/ │ │ │ │ ├── Design/ │ │ │ │ │ ├── MultiPanelDesigner.cs │ │ │ │ │ ├── MultiPanelDesignerHelper.cs │ │ │ │ │ ├── MultiPanelPageDesigner.cs │ │ │ │ │ └── MultiPanelSelectionEditor.cs │ │ │ │ ├── MultiPanel.cs │ │ │ │ ├── MultiPanelPage.cs │ │ │ │ └── MultiPanelSelectionChangeEventArgs.cs │ │ │ ├── NativeMethods.cs │ │ │ ├── NoFlickerListBox.cs │ │ │ ├── NoFlickerPanel.cs │ │ │ ├── PersistentSplitContainer.cs │ │ │ ├── PrintOptionsDialog.Designer.cs │ │ │ ├── PrintOptionsDialog.cs │ │ │ ├── PrintOptionsDialog.resx │ │ │ ├── ResolutionAction.cs │ │ │ ├── SkillQueueControl.cs │ │ │ ├── SplitButton.cs │ │ │ ├── Throbber.cs │ │ │ ├── TipWindow.Designer.cs │ │ │ ├── TipWindow.cs │ │ │ ├── TipWindow.resx │ │ │ ├── TrayIcon.Designer.cs │ │ │ ├── TrayIcon.cs │ │ │ ├── TrayIcon.resx │ │ │ ├── TreeView.cs │ │ │ └── TreeViewExtensions.cs │ │ ├── CustomEventArgs/ │ │ │ ├── ApiErrorTroubleshooterEventArgs.cs │ │ │ ├── AttributeChangedEventArgs.cs │ │ │ ├── AttributeHighlightingEventArgs.cs │ │ │ ├── AttributeValueChangedEventArgs.cs │ │ │ ├── AttributeValueChangingEventArgs.cs │ │ │ ├── CharacterChangedEventArgs.cs │ │ │ ├── CharacterIdentityChangedEventArgs.cs │ │ │ ├── CloudStorageServiceProviderEventArgs.cs │ │ │ ├── ContractsEventArgs.cs │ │ │ ├── DataUpdateAvailableEventArgs.cs │ │ │ ├── DaySelectedEventArgs.cs │ │ │ ├── DropDownMouseMoveEventArgs.cs │ │ │ ├── ESIKeyCreationEventArgs.cs │ │ │ ├── ESIKeyInfoChangedEventArgs.cs │ │ │ ├── EveServerEventArgs.cs │ │ │ ├── IndustryJobsEventArgs.cs │ │ │ ├── LabelChangedEventArgs.cs │ │ │ ├── LoadoutEventArgs.cs │ │ │ ├── LoadoutFeedEventArgs.cs │ │ │ ├── MarketOrdersEventArgs.cs │ │ │ ├── PlanChangedEventArgs.cs │ │ │ ├── PlanetaryPinsEventArgs.cs │ │ │ ├── QueuedSkillsEventArgs.cs │ │ │ ├── SkillClickedEventArgs.cs │ │ │ ├── TimeCheckSyncEventArgs.cs │ │ │ ├── UpdateAvailableEventArgs.cs │ │ │ └── UriCharacterEventArgs.cs │ │ ├── Data/ │ │ │ ├── Agent.cs │ │ │ ├── Blueprint.cs │ │ │ ├── BlueprintCollection.cs │ │ │ ├── BlueprintMarketGroup.cs │ │ │ ├── BlueprintMarketGroupCollection.cs │ │ │ ├── Certificate.cs │ │ │ ├── CertificateCategoryCollection.cs │ │ │ ├── CertificateClass.cs │ │ │ ├── CertificateClassCollection.cs │ │ │ ├── CertificateCollection.cs │ │ │ ├── CertificateGroup.cs │ │ │ ├── CertificateLevel.cs │ │ │ ├── Constellation.cs │ │ │ ├── ControlTowerFuel.cs │ │ │ ├── ControlTowerFuelCollection.cs │ │ │ ├── Datafile.cs │ │ │ ├── EveProperty.cs │ │ │ ├── EvePropertyCategory.cs │ │ │ ├── EvePropertyCollection.cs │ │ │ ├── EvePropertyValue.cs │ │ │ ├── Faction.cs │ │ │ ├── Implant.cs │ │ │ ├── ImplantCollection.cs │ │ │ ├── Item.cs │ │ │ ├── ItemCollection.cs │ │ │ ├── MarketGroup.cs │ │ │ ├── MarketGroupCollection.cs │ │ │ ├── MarketGroupExtensions.cs │ │ │ ├── Mastery.cs │ │ │ ├── MasteryCertificate.cs │ │ │ ├── MasteryShip.cs │ │ │ ├── MasteryShipCollection.cs │ │ │ ├── Material.cs │ │ │ ├── MaterialCollection.cs │ │ │ ├── NPCCorporation.cs │ │ │ ├── Planet.cs │ │ │ ├── ReactionMaterial.cs │ │ │ ├── ReactionMaterialCollection.cs │ │ │ ├── Region.cs │ │ │ ├── Ship.cs │ │ │ ├── SolarSystem.cs │ │ │ ├── SolarSystemRange.cs │ │ │ ├── StaticBlueprints.cs │ │ │ ├── StaticCertificate.cs │ │ │ ├── StaticCertificateClass.cs │ │ │ ├── StaticCertificateGroup.cs │ │ │ ├── StaticCertificates.cs │ │ │ ├── StaticGeography.cs │ │ │ ├── StaticItems.cs │ │ │ ├── StaticMasteries.cs │ │ │ ├── StaticProperties.cs │ │ │ ├── StaticRecommendations.cs │ │ │ ├── StaticReprocessing.cs │ │ │ ├── StaticRequiredMaterial.cs │ │ │ ├── StaticSkill.cs │ │ │ ├── StaticSkillGroup.cs │ │ │ ├── StaticSkillLevel.cs │ │ │ ├── StaticSkills.cs │ │ │ ├── Station.cs │ │ │ └── StationServices.cs │ │ ├── EVEMon.Common.csproj │ │ ├── EmailProvider/ │ │ │ ├── DefaultProvider.cs │ │ │ ├── EmailProviders.cs │ │ │ ├── GmxProvider.cs │ │ │ ├── GoogleProvider.cs │ │ │ ├── HotmailProvider.cs │ │ │ ├── IEmailProvider.cs │ │ │ ├── YahooPlusProvider.cs │ │ │ └── YahooProvider.cs │ │ ├── Enumerations/ │ │ │ ├── AbbreviationFormat.cs │ │ │ ├── ActiveJobState.cs │ │ │ ├── AgentType.cs │ │ │ ├── AmarrMilitiaRank.cs │ │ │ ├── Ancestry.cs │ │ │ ├── AttributeOptimizationStrategy.cs │ │ │ ├── BlinkAction.cs │ │ │ ├── Bloodline.cs │ │ │ ├── BlueprintActivity.cs │ │ │ ├── BlueprintType.cs │ │ │ ├── CCPAPI/ │ │ │ │ ├── APIErrorType.cs │ │ │ │ ├── CCPAPIContactType.cs │ │ │ │ ├── CCPAPIKeyType.cs │ │ │ │ ├── CCPAPILocationType.cs │ │ │ │ ├── CCPAPIMethodsEnum.cs │ │ │ │ ├── CCPAPIPlanetTypes.cs │ │ │ │ ├── CCPContractStatus.cs │ │ │ │ ├── CCPJobCompletedStatus.cs │ │ │ │ ├── CCPOrderState.cs │ │ │ │ ├── ESIAPICharacterMethods.cs │ │ │ │ ├── ESIAPICorporationMethods.cs │ │ │ │ └── ESIAPIGenericMethods.cs │ │ │ ├── CaldariMilitiaRank.cs │ │ │ ├── CertificateFilter.cs │ │ │ ├── CertificateGrade.cs │ │ │ ├── CertificateSort.cs │ │ │ ├── CertificateStatus.cs │ │ │ ├── CharacterSaveFormat.cs │ │ │ ├── CharacterSortCriteria.cs │ │ │ ├── ConnectionStatus.cs │ │ │ ├── ContactGroup.cs │ │ │ ├── ContactType.cs │ │ │ ├── ContractAvailability.cs │ │ │ ├── ContractState.cs │ │ │ ├── ContractType.cs │ │ │ ├── DataCompression.cs │ │ │ ├── DescriptiveTextOptions.cs │ │ │ ├── EveAttribute.cs │ │ │ ├── EveImageSize.cs │ │ │ ├── EveImageSizeMode.cs │ │ │ ├── EveMailState.cs │ │ │ ├── GallenteMilitiaRank.cs │ │ │ ├── Gender.cs │ │ │ ├── ImplantSlots.cs │ │ │ ├── IssuedFor.cs │ │ │ ├── ItemFamily.cs │ │ │ ├── ItemMetaGroup.cs │ │ │ ├── ItemSlot.cs │ │ │ ├── JobState.cs │ │ │ ├── KillGroup.cs │ │ │ ├── KillLogFittingContentGroup.cs │ │ │ ├── LearningOptions.cs │ │ │ ├── LoadoutFormat.cs │ │ │ ├── MasteryStatus.cs │ │ │ ├── MedalGroup.cs │ │ │ ├── MinmatarMilitiaRank.cs │ │ │ ├── ObjectActivityFilter.cs │ │ │ ├── ObjectUsabilityFilter.cs │ │ │ ├── ObsoleteRemovalPolicy.cs │ │ │ ├── OrderState.cs │ │ │ ├── PathSearchCriteria.cs │ │ │ ├── PlanChange.cs │ │ │ ├── PlanEntrySort.cs │ │ │ ├── PlanEntryType.cs │ │ │ ├── PlanFormat.cs │ │ │ ├── PlanOperations.cs │ │ │ ├── PlanSort.cs │ │ │ ├── PlanetaryPinState.cs │ │ │ ├── QueryStatus.cs │ │ │ ├── Race.cs │ │ │ ├── RemappingPointStatus.cs │ │ │ ├── ServerStatus.cs │ │ │ ├── SkillFilter.cs │ │ │ ├── SkillSort.cs │ │ │ ├── SortOrder.cs │ │ │ ├── StandingGroup.cs │ │ │ ├── StandingStatus.cs │ │ │ ├── ThrobberState.cs │ │ │ ├── TrainingOrigin.cs │ │ │ ├── TransactionType.cs │ │ │ └── UISettings/ │ │ │ ├── AssetGrouping.cs │ │ │ ├── CalendarProvider.cs │ │ │ ├── CloseBehaviour.cs │ │ │ ├── CompatibilityMode.cs │ │ │ ├── ContractGrouping.cs │ │ │ ├── EVEMailMessagesGrouping.cs │ │ │ ├── EVENotificationsGrouping.cs │ │ │ ├── GoogleCalendarReminder.cs │ │ │ ├── IndustryJobGrouping.cs │ │ │ ├── MainWindowTitleFormat.cs │ │ │ ├── MarketOrderGrouping.cs │ │ │ ├── MarkupType.cs │ │ │ ├── ObsoleteEntryRemovalBehaviour.cs │ │ │ ├── PlanetaryGrouping.cs │ │ │ ├── PortraitSizes.cs │ │ │ ├── ReadingPanePositioning.cs │ │ │ ├── SystemTrayBehaviour.cs │ │ │ ├── ThreeStateSortOrder.cs │ │ │ ├── TrayPopupGrouping.cs │ │ │ ├── TrayPopupSort.cs │ │ │ ├── TrayPopupStyles.cs │ │ │ ├── UpdatePeriod.cs │ │ │ ├── WalletJournalGrouping.cs │ │ │ └── WalletTransactionGrouping.cs │ │ ├── EveMonClient.Events.cs │ │ ├── EveMonClient.cs │ │ ├── Exceptions/ │ │ │ └── APIException.cs │ │ ├── Extensions/ │ │ │ ├── EnumExtensions.cs │ │ │ ├── EventHandlerExtensions.cs │ │ │ ├── HttpExtensions.cs │ │ │ ├── ObjectExtensions.cs │ │ │ ├── PlanEntryExtensions.cs │ │ │ ├── SkillEnumerableExtensions.cs │ │ │ ├── SkillLevelEnumerableExtensions.cs │ │ │ ├── StaticSkillEnumerableExtensions.cs │ │ │ ├── StaticSkillExtensions.cs │ │ │ ├── StaticSkillLevelEnumerableExtensions.cs │ │ │ ├── StringExtensions.cs │ │ │ ├── TimeExtensions.cs │ │ │ └── WinFormsExtensions.cs │ │ ├── ExternalCalendar/ │ │ │ ├── CalendarEvent.cs │ │ │ ├── ExternalCalendar.cs │ │ │ ├── GoogleCalendarEvent.cs │ │ │ └── OutlookCalendarEvent.cs │ │ ├── Factories/ │ │ │ ├── DisposableWithCallback.cs │ │ │ ├── FontFactory.cs │ │ │ └── WindowsFactory.cs │ │ ├── GlobalSuppressions.cs │ │ ├── Helpers/ │ │ │ ├── AttributesOptimizer.cs │ │ │ ├── BlankCharacterUIHelper.cs │ │ │ ├── CharacterAttributeScratchpad.cs │ │ │ ├── CharacterExporter.cs │ │ │ ├── CharacterScratchpad.cs │ │ │ ├── ExceptionHandler.cs │ │ │ ├── FileHelper.cs │ │ │ ├── FormatHelper.cs │ │ │ ├── GAnalyticsTracker.cs │ │ │ ├── ImageHelper.cs │ │ │ ├── KillLogExporter.cs │ │ │ ├── ListViewExporter.cs │ │ │ ├── Loadout.cs │ │ │ ├── LoadoutBase.cs │ │ │ ├── LoadoutExporter.cs │ │ │ ├── LoadoutHelper.cs │ │ │ ├── LoadoutInfo.cs │ │ │ ├── PathFinder.cs │ │ │ ├── PlanEntrySorter.cs │ │ │ ├── PlanHelper.cs │ │ │ ├── PlanIOHelper.cs │ │ │ ├── PlanPrinter.cs │ │ │ ├── PlanScratchpad.cs │ │ │ ├── TaskHelper.cs │ │ │ ├── TimeCheck.cs │ │ │ └── UIHelper.cs │ │ ├── IgbService/ │ │ │ ├── ClientConnectedEventArgs.cs │ │ │ ├── IgbClientDataReadEventArgs.cs │ │ │ ├── IgbServer.cs │ │ │ ├── IgbTcpClient.cs │ │ │ └── IgbTcpListener.cs │ │ ├── InstanceManager.cs │ │ ├── Interfaces/ │ │ │ ├── ICharacterAttribute.cs │ │ │ ├── IEveMessage.cs │ │ │ ├── IListView.cs │ │ │ ├── ILoadoutInfo.cs │ │ │ ├── IPlanOperation.cs │ │ │ ├── IPlanOrderPluggable.cs │ │ │ ├── IQueryMonitor.cs │ │ │ ├── IQueryMonitorEx.cs │ │ │ ├── ISkillLevel.cs │ │ │ └── IStaticSkill.cs │ │ ├── Loadouts/ │ │ │ ├── LoadoutsProvider.cs │ │ │ └── Osmium/ │ │ │ └── OsmiumLoadoutsProvider.cs │ │ ├── MarketPricer/ │ │ │ ├── EveMarketer/ │ │ │ │ └── EMItemPricer.cs │ │ │ ├── Fuzzworks/ │ │ │ │ └── FuzzworksItemPricer.cs │ │ │ └── ItemPricer.cs │ │ ├── Models/ │ │ │ ├── APIMethod.cs │ │ │ ├── APIProvider.cs │ │ │ ├── AccountStatus.cs │ │ │ ├── Asset.cs │ │ │ ├── BaseCharacter.cs │ │ │ ├── BasePlan.cs │ │ │ ├── BuyOrder.cs │ │ │ ├── CCPCharacter.cs │ │ │ ├── CalendarEventAttendee.cs │ │ │ ├── Character.cs │ │ │ ├── CharacterAttribute.cs │ │ │ ├── CharacterIdentity.cs │ │ │ ├── Collections/ │ │ │ │ ├── AssetCollection.cs │ │ │ │ ├── CharacterIdentityIgnoreList.cs │ │ │ │ ├── ContactCollection.cs │ │ │ │ ├── ContractCollection.cs │ │ │ │ ├── EmploymentRecordCollection.cs │ │ │ │ ├── EveFactionWarfareStatsCollection.cs │ │ │ │ ├── EveFactionWarsCollection.cs │ │ │ │ ├── EveMailMessageCollection.cs │ │ │ │ ├── EveMailingListCollection.cs │ │ │ │ ├── EveNotificationCollection.cs │ │ │ │ ├── ImplantSetCollection.cs │ │ │ │ ├── IndustryJobCollection.cs │ │ │ │ ├── KillLogCollection.cs │ │ │ │ ├── LoyaltyCollection.cs │ │ │ │ ├── MarketOrderCollection.cs │ │ │ │ ├── MedalCollection.cs │ │ │ │ ├── PlanCollection.cs │ │ │ │ ├── PlanetaryColonyCollection.cs │ │ │ │ ├── ResearchPointCollection.cs │ │ │ │ ├── SkillCollection.cs │ │ │ │ ├── SkillGroupCollection.cs │ │ │ │ ├── StandingCollection.cs │ │ │ │ ├── UpcomingCalendarEventCollection.cs │ │ │ │ ├── WalletJournalCollection.cs │ │ │ │ └── WalletTransactionsCollection.cs │ │ │ ├── Comparers/ │ │ │ │ ├── AssetComparer.cs │ │ │ │ ├── CharacterComparer.cs │ │ │ │ ├── ContractComparer.cs │ │ │ │ ├── ContractItemComparer.cs │ │ │ │ ├── EveMailMessageComparer.cs │ │ │ │ ├── EveNotificationComparer.cs │ │ │ │ ├── IndustryJobComparer.cs │ │ │ │ ├── KillLogComparer.cs │ │ │ │ ├── MarketOrderComparer.cs │ │ │ │ ├── MedalComparer.cs │ │ │ │ ├── PlanComparer.cs │ │ │ │ ├── PlanEntryComparer.cs │ │ │ │ ├── PlanetaryPinComparer.cs │ │ │ │ ├── ResearchPointComparer.cs │ │ │ │ ├── SerializableSettingsComparer.cs │ │ │ │ ├── WalletJournalComparer.cs │ │ │ │ └── WalletTransactionComparer.cs │ │ │ ├── Contact.cs │ │ │ ├── Contract.cs │ │ │ ├── ContractBid.cs │ │ │ ├── ContractItem.cs │ │ │ ├── Corporation.cs │ │ │ ├── ESIKey.cs │ │ │ ├── ESIMethod.cs │ │ │ ├── EmploymentRecord.cs │ │ │ ├── EveFactionWar.cs │ │ │ ├── EveFactionWarfareStats.cs │ │ │ ├── EveFactionalWarfareStats.cs │ │ │ ├── EveMailBody.cs │ │ │ ├── EveMailMessage.cs │ │ │ ├── EveMailingList.cs │ │ │ ├── EveNotification.cs │ │ │ ├── EveNotificationText.cs │ │ │ ├── EveServer.cs │ │ │ ├── Extended/ │ │ │ │ ├── ESIMethods.cs │ │ │ │ ├── EveNotificationTextParser.cs │ │ │ │ └── InternalEveNotificationTextParser.cs │ │ │ ├── FactionalWarfareStats.cs │ │ │ ├── ImplantSet.cs │ │ │ ├── IndustryJob.cs │ │ │ ├── InvalidPlanEntry.cs │ │ │ ├── KillLog.cs │ │ │ ├── KillLogItem.cs │ │ │ ├── Loyalty.cs │ │ │ ├── MarketOrder.cs │ │ │ ├── Medal.cs │ │ │ ├── Plan.cs │ │ │ ├── PlanEntry.cs │ │ │ ├── PlanetaryColony.cs │ │ │ ├── PlanetaryLink.cs │ │ │ ├── PlanetaryPin.cs │ │ │ ├── PlanetaryRoute.cs │ │ │ ├── QueuedSkill.cs │ │ │ ├── RemappingPoint.cs │ │ │ ├── RemappingResult.cs │ │ │ ├── ResearchPoint.cs │ │ │ ├── SellOrder.cs │ │ │ ├── Skill.cs │ │ │ ├── SkillGroup.cs │ │ │ ├── SkillLevel.cs │ │ │ ├── SkillLevelSet.cs │ │ │ ├── SkillQueue.cs │ │ │ ├── Standing.cs │ │ │ ├── UpcomingCalendarEvent.cs │ │ │ ├── UriCharacter.cs │ │ │ ├── WalletJournal.cs │ │ │ └── WalletTransaction.cs │ │ ├── Net/ │ │ │ ├── DownloadResult.cs │ │ │ ├── ExceptionMessages.Designer.cs │ │ │ ├── ExceptionMessages.resx │ │ │ ├── HttpClientServiceRequest.cs │ │ │ ├── HttpWebClientService.ImageDownload.cs │ │ │ ├── HttpWebClientService.StreamDownload.cs │ │ │ ├── HttpWebClientService.StringDownload.cs │ │ │ ├── HttpWebClientService.XmlDownload.cs │ │ │ ├── HttpWebClientService.cs │ │ │ ├── HttpWebClientServiceException.cs │ │ │ ├── HttpWebClientServiceExceptionStatus.cs │ │ │ ├── HttpWebClientServiceState.cs │ │ │ ├── INetworkChangeSubscriber.cs │ │ │ ├── NetworkMonitor.cs │ │ │ ├── RequestParams.cs │ │ │ └── ResponseParams.cs │ │ ├── Notifications/ │ │ │ ├── APIErrorNotificationEventArgs.cs │ │ │ ├── ContractsNotificationEventArgs.cs │ │ │ ├── EveMailMessageNotificationEventArgs.cs │ │ │ ├── EveNotificationNotificationEventArgs.cs │ │ │ ├── IndustryJobsNotificationEventArgs.cs │ │ │ ├── MarketOrdersNotificationEventArgs.cs │ │ │ ├── NotificationBehaviour.cs │ │ │ ├── NotificationCategory.cs │ │ │ ├── NotificationEventArgs.cs │ │ │ ├── NotificationInvalidationEventArgs.cs │ │ │ ├── NotificationPriority.cs │ │ │ ├── PlanetaryPinsNotificationEventArgs.cs │ │ │ └── SkillCompletionNotificationEventArgs.cs │ │ ├── Properties/ │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ └── Resources.resx │ │ ├── QueryMonitor/ │ │ │ ├── CCPQueryMonitorBase.cs │ │ │ ├── CharacterDataQuerying.cs │ │ │ ├── CharacterQueryMonitor.cs │ │ │ ├── CorporationDataQuerying.cs │ │ │ ├── CorporationQueryMonitor.cs │ │ │ ├── ESIKeyQueryMonitor.cs │ │ │ ├── PagedQueryMonitor.cs │ │ │ ├── QueryMonitor.cs │ │ │ └── QueryMonitorCollection.cs │ │ ├── Resources/ │ │ │ ├── Cursors/ │ │ │ │ └── ContextMenuPointer.cur │ │ │ ├── License/ │ │ │ │ └── gpl.txt │ │ │ ├── MD5Sums.txt │ │ │ ├── Skill_Select/ │ │ │ │ ├── Group0/ │ │ │ │ │ ├── Default.Designer.cs │ │ │ │ │ ├── Default.resources │ │ │ │ │ └── Default.resx │ │ │ │ ├── Group1/ │ │ │ │ │ ├── Dice_Spots.Designer.cs │ │ │ │ │ ├── Dice_Spots.resources │ │ │ │ │ └── Dice_Spots.resx │ │ │ │ ├── Group2/ │ │ │ │ │ ├── Slashes.Designer.cs │ │ │ │ │ ├── Slashes.resources │ │ │ │ │ └── Slashes.resx │ │ │ │ ├── Group3/ │ │ │ │ │ ├── Pie_Slices.Designer.cs │ │ │ │ │ ├── Pie_Slices.resources │ │ │ │ │ └── Pie_Slices.resx │ │ │ │ ├── Group4/ │ │ │ │ │ ├── Pentagons.Designer.cs │ │ │ │ │ ├── Pentagons.resources │ │ │ │ │ └── Pentagons.resx │ │ │ │ ├── Group5/ │ │ │ │ │ ├── Pentagrams.Designer.cs │ │ │ │ │ ├── Pentagrams.resources │ │ │ │ │ └── Pentagrams.resx │ │ │ │ ├── Group6/ │ │ │ │ │ ├── Black_Dice.resources │ │ │ │ │ └── Black_Dice.resx │ │ │ │ ├── Group7/ │ │ │ │ │ ├── Red_Dice.resources │ │ │ │ │ └── Red_Dice.resx │ │ │ │ ├── Group8/ │ │ │ │ │ ├── Bars.Designer.cs │ │ │ │ │ ├── Bars.resources │ │ │ │ │ └── Bars.resx │ │ │ │ ├── IconSettings.Designer.cs │ │ │ │ └── IconSettings.settings │ │ │ ├── callback_fail.htm │ │ │ ├── callback_ok.htm │ │ │ ├── chrFactions.txt │ │ │ ├── eve-blueprints-en-US.xml.gzip │ │ │ ├── eve-certificates-en-US.xml.gzip │ │ │ ├── eve-geography-en-US.xml.gzip │ │ │ ├── eve-items-en-US.xml.gzip │ │ │ ├── eve-masteries-en-US.xml.gzip │ │ │ ├── eve-properties-en-US.xml.gzip │ │ │ ├── eve-reprocessing-en-US.xml.gzip │ │ │ └── eve-skills-en-US.xml.gzip │ │ ├── Scheduling/ │ │ │ ├── Enumerations.cs │ │ │ ├── RecurringScheduleEntry.cs │ │ │ ├── ScheduleDateTimeRange.cs │ │ │ ├── ScheduleEntry.cs │ │ │ ├── ScheduleEntryTitleComparer.cs │ │ │ ├── Scheduler.cs │ │ │ └── SimpleScheduleEntry.cs │ │ ├── Serialization/ │ │ │ ├── Datafiles/ │ │ │ │ ├── BlueprintsDatafile.cs │ │ │ │ ├── CertificatesDatafile.cs │ │ │ │ ├── DatafileConstants.Designer.cs │ │ │ │ ├── DatafileConstants.resx │ │ │ │ ├── GeoDatafile.cs │ │ │ │ ├── ItemsDatafile.cs │ │ │ │ ├── MasteriesDatafile.cs │ │ │ │ ├── PropertiesDatafile.cs │ │ │ │ ├── ReprocessingDatafile.cs │ │ │ │ ├── SerializableAgent.cs │ │ │ │ ├── SerializableBlueprint.cs │ │ │ │ ├── SerializableBlueprintMarketGroup.cs │ │ │ │ ├── SerializableCertificate.cs │ │ │ │ ├── SerializableCertificateClass.cs │ │ │ │ ├── SerializableCertificateGroup.cs │ │ │ │ ├── SerializableCertificatePrerequisite.cs │ │ │ │ ├── SerializableCertificateRecommendation.cs │ │ │ │ ├── SerializableConstellation.cs │ │ │ │ ├── SerializableControlTowerFuel.cs │ │ │ │ ├── SerializableItem.cs │ │ │ │ ├── SerializableItemMaterials.cs │ │ │ │ ├── SerializableJump.cs │ │ │ │ ├── SerializableMarketGroup.cs │ │ │ │ ├── SerializableMastery.cs │ │ │ │ ├── SerializableMasteryCertificate.cs │ │ │ │ ├── SerializableMasteryShip.cs │ │ │ │ ├── SerializableMaterialQuantity.cs │ │ │ │ ├── SerializablePlanet.cs │ │ │ │ ├── SerializablePrereqSkill.cs │ │ │ │ ├── SerializablePrerequisiteSkill.cs │ │ │ │ ├── SerializableProperty.cs │ │ │ │ ├── SerializablePropertyCategory.cs │ │ │ │ ├── SerializablePropertyValue.cs │ │ │ │ ├── SerializableReactionInfo.cs │ │ │ │ ├── SerializableRegion.cs │ │ │ │ ├── SerializableRequiredMaterial.cs │ │ │ │ ├── SerializableSkill.cs │ │ │ │ ├── SerializableSkillGroup.cs │ │ │ │ ├── SerializableSkillPrerequisite.cs │ │ │ │ ├── SerializableSolarSystem.cs │ │ │ │ ├── SerializableStation.cs │ │ │ │ ├── SerializableStationList.cs │ │ │ │ ├── SkillsDatafile.cs │ │ │ │ └── datafile-transform.xslt │ │ │ ├── Esi/ │ │ │ │ ├── EsiAPIAssetList.cs │ │ │ │ ├── EsiAPIAttributes.cs │ │ │ │ ├── EsiAPICalendarEvent.cs │ │ │ │ ├── EsiAPICalendarEventAttendees.cs │ │ │ │ ├── EsiAPICalendarEvents.cs │ │ │ │ ├── EsiAPICharacterNames.cs │ │ │ │ ├── EsiAPICharacterSheet.cs │ │ │ │ ├── EsiAPIClones.cs │ │ │ │ ├── EsiAPIContactNotifications.cs │ │ │ │ ├── EsiAPIContactsList.cs │ │ │ │ ├── EsiAPIContractBids.cs │ │ │ │ ├── EsiAPIContractItems.cs │ │ │ │ ├── EsiAPIContracts.cs │ │ │ │ ├── EsiAPICorpAccountBalance.cs │ │ │ │ ├── EsiAPICorporationSheet.cs │ │ │ │ ├── EsiAPIDivisions.cs │ │ │ │ ├── EsiAPIEmploymentHistory.cs │ │ │ │ ├── EsiAPIError.cs │ │ │ │ ├── EsiAPIEveFactionWars.cs │ │ │ │ ├── EsiAPIEveFactionalWarfareStats.cs │ │ │ │ ├── EsiAPIFactionalWarfareStats.cs │ │ │ │ ├── EsiAPIIndustryJobs.cs │ │ │ │ ├── EsiAPIJumpFatigue.cs │ │ │ │ ├── EsiAPIKillLog.cs │ │ │ │ ├── EsiAPIKillMail.cs │ │ │ │ ├── EsiAPILocation.cs │ │ │ │ ├── EsiAPILoyalty.cs │ │ │ │ ├── EsiAPIMailBody.cs │ │ │ │ ├── EsiAPIMailMessages.cs │ │ │ │ ├── EsiAPIMailingLists.cs │ │ │ │ ├── EsiAPIMarketOrders.cs │ │ │ │ ├── EsiAPIMedals.cs │ │ │ │ ├── EsiAPINotifications.cs │ │ │ │ ├── EsiAPIPlanet.cs │ │ │ │ ├── EsiAPIPlanetaryColoniesList.cs │ │ │ │ ├── EsiAPIPlanetaryColony.cs │ │ │ │ ├── EsiAPIResearchPoints.cs │ │ │ │ ├── EsiAPIServerStatus.cs │ │ │ │ ├── EsiAPIShip.cs │ │ │ │ ├── EsiAPISkillQueue.cs │ │ │ │ ├── EsiAPISkills.cs │ │ │ │ ├── EsiAPISovStructures.cs │ │ │ │ ├── EsiAPIStandings.cs │ │ │ │ ├── EsiAPIStation.cs │ │ │ │ ├── EsiAPIStructure.cs │ │ │ │ ├── EsiAPITokenInfo.cs │ │ │ │ ├── EsiAPIType.cs │ │ │ │ ├── EsiAPIWalletJournal.cs │ │ │ │ ├── EsiAPIWalletTransactions.cs │ │ │ │ ├── EsiAccountBalanceListItem.cs │ │ │ │ ├── EsiAssetListItem.cs │ │ │ │ ├── EsiCalendarEventAttendeeListItem.cs │ │ │ │ ├── EsiCalendarEventListItem.cs │ │ │ │ ├── EsiCharacterBase.cs │ │ │ │ ├── EsiCharacterNameListItem.cs │ │ │ │ ├── EsiContactListItem.cs │ │ │ │ ├── EsiContactNotifyListItem.cs │ │ │ │ ├── EsiContractBidsListItem.cs │ │ │ │ ├── EsiContractItemsListItem.cs │ │ │ │ ├── EsiContractListItem.cs │ │ │ │ ├── EsiDivisionListItem.cs │ │ │ │ ├── EsiEmploymentHistoryListItem.cs │ │ │ │ ├── EsiErrors.cs │ │ │ │ ├── EsiEveFactionWarfareTotals.cs │ │ │ │ ├── EsiEveFactionWarsListItem.cs │ │ │ │ ├── EsiEveFactionalWarfareStatsListItem.cs │ │ │ │ ├── EsiJobListItem.cs │ │ │ │ ├── EsiJumpCloneListItem.cs │ │ │ │ ├── EsiKillLogAttackersListItem.cs │ │ │ │ ├── EsiKillLogItemListItem.cs │ │ │ │ ├── EsiKillLogListItem.cs │ │ │ │ ├── EsiKillLogVictim.cs │ │ │ │ ├── EsiLocationBase.cs │ │ │ │ ├── EsiLoyaltyListItem.cs │ │ │ │ ├── EsiMailBase.cs │ │ │ │ ├── EsiMailMessagesListItem.cs │ │ │ │ ├── EsiMailRecipientListItem.cs │ │ │ │ ├── EsiMailingListsListItem.cs │ │ │ │ ├── EsiMedalsListItem.cs │ │ │ │ ├── EsiNotificationsListItem.cs │ │ │ │ ├── EsiOrderListItem.cs │ │ │ │ ├── EsiPlanetaryColonyListItem.cs │ │ │ │ ├── EsiPlanetaryContentsListItem.cs │ │ │ │ ├── EsiPlanetaryExtractorDetails.cs │ │ │ │ ├── EsiPlanetaryExtractorHead.cs │ │ │ │ ├── EsiPlanetaryFactoryDetails.cs │ │ │ │ ├── EsiPlanetaryLink.cs │ │ │ │ ├── EsiPlanetaryPin.cs │ │ │ │ ├── EsiPlanetaryRoute.cs │ │ │ │ ├── EsiPosition.cs │ │ │ │ ├── EsiRefTypeString.cs │ │ │ │ ├── EsiResearchListItem.cs │ │ │ │ ├── EsiResult.cs │ │ │ │ ├── EsiSkillListItem.cs │ │ │ │ ├── EsiSkillQueueListItem.cs │ │ │ │ ├── EsiSovStructureListItem.cs │ │ │ │ ├── EsiStandingsListItem.cs │ │ │ │ ├── EsiWalletJournalListItem.cs │ │ │ │ └── EsiWalletTransactionsListItem.cs │ │ │ ├── Eve/ │ │ │ │ ├── CCPAPIError.cs │ │ │ │ ├── CCPAPIResult.cs │ │ │ │ ├── IAPIResult.cs │ │ │ │ ├── ISerializableCharacterIdentity.cs │ │ │ │ ├── ISerializableWithLocalClock.cs │ │ │ │ ├── SerializableAPICharacterSheet.cs │ │ │ │ ├── SerializableAPIContracts.cs │ │ │ │ ├── SerializableAPIEveFactionalWarfareStats.cs │ │ │ │ ├── SerializableAPIKillLog.cs │ │ │ │ ├── SerializableAPIMailBodies.cs │ │ │ │ ├── SerializableAPIMailMessages.cs │ │ │ │ ├── SerializableAPIRefTypes.cs │ │ │ │ ├── SerializableAPIUpcomingCalendarEvents.cs │ │ │ │ ├── SerializableAPIWalletJournal.cs │ │ │ │ ├── SerializableAPIWalletTransactions.cs │ │ │ │ ├── SerializableCalendarEventAttendeeListItem.cs │ │ │ │ ├── SerializableCharacterAttributes.cs │ │ │ │ ├── SerializableCharacterCertificate.cs │ │ │ │ ├── SerializableCharacterJumpClone.cs │ │ │ │ ├── SerializableCharacterJumpCloneImplant.cs │ │ │ │ ├── SerializableCharacterListItem.cs │ │ │ │ ├── SerializableCharacterNameListItem.cs │ │ │ │ ├── SerializableCharacterSheetBase.cs │ │ │ │ ├── SerializableCharacterSkill.cs │ │ │ │ ├── SerializableContractListItem.cs │ │ │ │ ├── SerializableEmploymentHistory.cs │ │ │ │ ├── SerializableEmploymentHistoryListItem.cs │ │ │ │ ├── SerializableEveFacWarfareTotals.cs │ │ │ │ ├── SerializableEveFactionWarsListItem.cs │ │ │ │ ├── SerializableEveFactionalWarfareStatsListItem.cs │ │ │ │ ├── SerializableKillLogAttackersListItem.cs │ │ │ │ ├── SerializableKillLogItemListItem.cs │ │ │ │ ├── SerializableKillLogListItem.cs │ │ │ │ ├── SerializableKillLogVictim.cs │ │ │ │ ├── SerializableLocation.cs │ │ │ │ ├── SerializableMailBodiesListItem.cs │ │ │ │ ├── SerializableMailMessagesListItem.cs │ │ │ │ ├── SerializableNewImplant.cs │ │ │ │ ├── SerializableOutpost.cs │ │ │ │ ├── SerializableQueuedSkill.cs │ │ │ │ ├── SerializableRefTypesListItem.cs │ │ │ │ ├── SerializableUpcomingCalendarEventsListItem.cs │ │ │ │ ├── SerializableWalletJournalListItem.cs │ │ │ │ ├── SerializableWalletTransactionsListItem.cs │ │ │ │ └── rowsets-transform.xslt │ │ │ ├── EveMarketData/ │ │ │ │ └── MarketPricer/ │ │ │ │ ├── SerializableEMDItemPriceList.cs │ │ │ │ ├── SerializableEMDItemPriceListItem.cs │ │ │ │ └── SerializableEMDItemPrices.cs │ │ │ ├── EveMarketer/ │ │ │ │ └── MarketPricer/ │ │ │ │ ├── SerializableECItemPriceItem.cs │ │ │ │ ├── SerializableECItemPriceListItem.cs │ │ │ │ └── SerializableECItemPrices.cs │ │ │ ├── Exportation/ │ │ │ │ ├── OutputAttributeEnhancer.cs │ │ │ │ ├── OutputCharacter.cs │ │ │ │ ├── OutputPlan.cs │ │ │ │ ├── OutputPlans.cs │ │ │ │ ├── OutputSkill.cs │ │ │ │ ├── OutputSkillGroup.cs │ │ │ │ └── output-html.xslt │ │ │ ├── FittingClf/ │ │ │ │ ├── SerializableClfFitting.cs │ │ │ │ ├── SerializableClfFittingChargeType.cs │ │ │ │ ├── SerializableClfFittingDroneSet.cs │ │ │ │ ├── SerializableClfFittingDroneType.cs │ │ │ │ ├── SerializableClfFittingMetaData.cs │ │ │ │ ├── SerializableClfFittingModule.cs │ │ │ │ ├── SerializableClfFittingPreset.cs │ │ │ │ └── SerializableClfFittingShipType.cs │ │ │ ├── FittingXml/ │ │ │ │ ├── SerializableXmlFitting.cs │ │ │ │ ├── SerializableXmlFittingDescription.cs │ │ │ │ ├── SerializableXmlFittingHardware.cs │ │ │ │ ├── SerializableXmlFittingShipType.cs │ │ │ │ └── SerializableXmlFittings.cs │ │ │ ├── Flags.xml │ │ │ ├── Fuzzworks/ │ │ │ │ ├── SerializableFuzzworksPriceItem.cs │ │ │ │ └── SerializableFuzzworksPriceListItem.cs │ │ │ ├── Hammertime/ │ │ │ │ └── HammertimeStructure.cs │ │ │ ├── JsonResult.cs │ │ │ ├── NotificationRefTypes.xml │ │ │ ├── Osmium/ │ │ │ │ └── Loadout/ │ │ │ │ ├── SerializableOsmiumLoadoutAuthor.cs │ │ │ │ └── SerializableOsmiumLoadoutFeed.cs │ │ │ ├── PatchXml/ │ │ │ │ ├── SerializableDatafile.cs │ │ │ │ ├── SerializablePatch.cs │ │ │ │ └── SerializableRelease.cs │ │ │ ├── RefTypes.xml │ │ │ ├── Samples/ │ │ │ │ ├── Charactersheet.out.xml │ │ │ │ ├── Charactersheet.xml │ │ │ │ ├── HtmlExport.xml │ │ │ │ ├── OldPlan.xml │ │ │ │ └── OldSettings.xml │ │ │ ├── SerializableAPICredentials.cs │ │ │ ├── SerializableAPIError.cs │ │ │ ├── SerializableAPIResult.cs │ │ │ ├── SerializableEveFlags.cs │ │ │ ├── SerializableEveFlagsListItem.cs │ │ │ ├── SerializableEveIDToName.cs │ │ │ ├── SerializableEveIDToNameListItem.cs │ │ │ ├── SerializableNotificationRefTypes.cs │ │ │ ├── SerializableNotificationRefTypesListItem.cs │ │ │ └── Settings/ │ │ │ ├── SerializableAPIKey.cs │ │ │ ├── SerializableAPIMethod.cs │ │ │ ├── SerializableAPIProvider.cs │ │ │ ├── SerializableAPIUpdate.cs │ │ │ ├── SerializableAccount.cs │ │ │ ├── SerializableBuyOrder.cs │ │ │ ├── SerializableCCPCharacter.cs │ │ │ ├── SerializableCharacterIdentity.cs │ │ │ ├── SerializableContract.cs │ │ │ ├── SerializableEndPoint.cs │ │ │ ├── SerializableImplantSetCollection.cs │ │ │ ├── SerializableInvalidPlanEntry.cs │ │ │ ├── SerializableJob.cs │ │ │ ├── SerializableOrderBase.cs │ │ │ ├── SerializablePlan.cs │ │ │ ├── SerializablePlanEntry.cs │ │ │ ├── SerializablePortableEveInstallation.cs │ │ │ ├── SerializableRecurringScheduleEntry.cs │ │ │ ├── SerializableRemappingPoint.cs │ │ │ ├── SerializableResearchPoint.cs │ │ │ ├── SerializableScheduleEntry.cs │ │ │ ├── SerializableSellOrder.cs │ │ │ ├── SerializableSettings.cs │ │ │ ├── SerializableSettingsCharacter.cs │ │ │ ├── SerializableSettingsImplantSet.cs │ │ │ ├── SerializableStanding.cs │ │ │ ├── SerializableUriCharacter.cs │ │ │ └── settings-transform.xslt │ │ ├── Service/ │ │ │ ├── AutoShrink.cs │ │ │ ├── CodeCompiler.cs │ │ │ ├── Emailer.cs │ │ │ ├── EveFlag.cs │ │ │ ├── EveIDToName.cs │ │ │ ├── EveIDToStation.cs │ │ │ ├── EveNotificationType.cs │ │ │ ├── EveRefType.cs │ │ │ ├── IDToObjectProvider.cs │ │ │ ├── ISSOWebServer.cs │ │ │ ├── ImageService.cs │ │ │ ├── LocalXmlCache.cs │ │ │ ├── SSOAuthenticationService.cs │ │ │ └── SSOWebServerHttpListener.cs │ │ ├── Settings.cs │ │ ├── SettingsObjects/ │ │ │ ├── AssetColumn.cs │ │ │ ├── AssetColumnSettings.cs │ │ │ ├── AssetSettings.cs │ │ │ ├── BlueprintBrowserSettings.cs │ │ │ ├── CalendarSettings.cs │ │ │ ├── CertificateBrowserSettings.cs │ │ │ ├── CharacterUISettings.cs │ │ │ ├── CloudStorageServiceProviderSettings.cs │ │ │ ├── CombatLogSettings.cs │ │ │ ├── ContractColumn.cs │ │ │ ├── ContractColumnSettings.cs │ │ │ ├── ContractSettings.cs │ │ │ ├── CustomMsgBoxSettings.cs │ │ │ ├── EVEMailMessagesColumn.cs │ │ │ ├── EVEMailMessagesColumnSettings.cs │ │ │ ├── EVEMailMessagesSettings.cs │ │ │ ├── EveMailMessageColumn.cs │ │ │ ├── EveMailMessageColumnSettings.cs │ │ │ ├── EveMailMessageSettings.cs │ │ │ ├── EveNotificationColumn.cs │ │ │ ├── EveNotificationColumnSettings.cs │ │ │ ├── EveNotificationSettings.cs │ │ │ ├── EveNotificationsColumn.cs │ │ │ ├── EveNotificationsColumnSettings.cs │ │ │ ├── EveNotificationsSettings.cs │ │ │ ├── ExportationSettings.cs │ │ │ ├── G15Settings.cs │ │ │ ├── IColumnSettings.cs │ │ │ ├── IgbSettings.cs │ │ │ ├── IndustryJobColumn.cs │ │ │ ├── IndustryJobColumnSettings.cs │ │ │ ├── IndustryJobSettings.cs │ │ │ ├── ItemBrowserSettings.cs │ │ │ ├── LoadoutsProviderSettings.cs │ │ │ ├── MainWindowSettings.cs │ │ │ ├── MarketOrderColumn.cs │ │ │ ├── MarketOrderColumnSettings.cs │ │ │ ├── MarketOrderSettings.cs │ │ │ ├── MarketPricerSettings.cs │ │ │ ├── ModifiedSerializableDictionary.cs │ │ │ ├── MonitoredCharacterSettings.cs │ │ │ ├── NotificationCategorySettings.cs │ │ │ ├── NotificationSettings.cs │ │ │ ├── PlanColumn.cs │ │ │ ├── PlanColumnSettings.cs │ │ │ ├── PlanExportSettings.cs │ │ │ ├── PlanSorting.cs │ │ │ ├── PlanWindowSettings.cs │ │ │ ├── PlanetaryColumn.cs │ │ │ ├── PlanetaryColumnSettings.cs │ │ │ ├── PlanetarySettings.cs │ │ │ ├── PortableEveInstallationsSettings.cs │ │ │ ├── ProxyAuthentication.cs │ │ │ ├── ProxySettings.cs │ │ │ ├── ResearchColumn.cs │ │ │ ├── ResearchColumnSettings.cs │ │ │ ├── ResearchSettings.cs │ │ │ ├── SchedulerSettings.cs │ │ │ ├── SchedulerUISettings.cs │ │ │ ├── SerializableColor.cs │ │ │ ├── SerializableDictionary.cs │ │ │ ├── SerializableRectangle.cs │ │ │ ├── ShipBrowserSettings.cs │ │ │ ├── SkillBrowserSettings.cs │ │ │ ├── SkillPieChartSettings.cs │ │ │ ├── ToolTipNotificationBehaviour.cs │ │ │ ├── TrayPopupSettings.cs │ │ │ ├── TrayTooltipSettings.cs │ │ │ ├── UISettings.cs │ │ │ ├── UpdatePeriodExtensions.cs │ │ │ ├── UpdateSettings.cs │ │ │ ├── WalletJournalColumn.cs │ │ │ ├── WalletJournalColumnSettings.cs │ │ │ ├── WalletJournalSettings.cs │ │ │ ├── WalletTransactionColumn.cs │ │ │ ├── WalletTransactionColumnSettings.cs │ │ │ ├── WalletTransactionSettings.cs │ │ │ └── WindowLocationSettings.cs │ │ ├── Threading/ │ │ │ └── Dispatcher.cs │ │ ├── UpdateManager.cs │ │ ├── Util.cs │ │ └── packages.config │ ├── EVEMon.LogitechG15/ │ │ ├── CycleEventArgs.cs │ │ ├── EVEMon.LogitechG15.csproj │ │ ├── G15Handler.cs │ │ ├── GlobalSuppressions.cs │ │ ├── LcdDisplay.cs │ │ ├── LcdInterface.cs │ │ ├── LcdLine.cs │ │ ├── LcdState.cs │ │ ├── Properties/ │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ └── Resources.resx │ │ └── app.config │ ├── EVEMon.PieChart/ │ │ ├── AngleChangeEventArgs.cs │ │ ├── ColorUtil.cs │ │ ├── EVEMon.PieChart.csproj │ │ ├── EdgeColor.cs │ │ ├── Enumerations.cs │ │ ├── GlobalSuppressions.cs │ │ ├── GraphicsUtil.cs │ │ ├── PieChart.cs │ │ ├── PieChartControl.cs │ │ ├── PieSlice.cs │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── Quadrilateral.cs │ │ ├── SkillsPieChart.Designer.cs │ │ ├── SkillsPieChart.cs │ │ ├── SkillsPieChart.resx │ │ └── app.config │ ├── EVEMon.Sales/ │ │ ├── CXIParser.cs │ │ ├── EVEMon.Sales.csproj │ │ ├── EveCentralParser.cs │ │ ├── GlobalSuppressions.cs │ │ ├── IMineralParser.cs │ │ ├── MineralDataRequest.cs │ │ ├── MineralParserException.cs │ │ ├── MineralPrice.cs │ │ ├── MineralTile.Designer.cs │ │ ├── MineralTile.cs │ │ ├── MineralTile.resx │ │ ├── MineralWorksheet.Designer.cs │ │ ├── MineralWorksheet.cs │ │ ├── MineralWorksheet.resx │ │ ├── Program.cs │ │ └── Properties/ │ │ └── AssemblyInfo.cs │ ├── EVEMon.Watchdog/ │ │ ├── EVEMon.Watchdog.csproj │ │ ├── GlobalSuppressions.cs │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ ├── Resources.resx │ │ │ ├── Settings.Designer.cs │ │ │ └── Settings.settings │ │ ├── WatchdogWindow.Designer.cs │ │ ├── WatchdogWindow.cs │ │ ├── WatchdogWindow.resx │ │ └── app.config │ └── EVEMon.WindowsApi/ │ ├── EVEMon.WindowsApi.csproj │ ├── GlobalSuppressions.cs │ ├── OSFeatureCheck.cs │ ├── Properties/ │ │ └── AssemblyInfo.cs │ ├── SafeNativeMethods.cs │ └── Windows7.cs ├── tests/ │ ├── Tests.EVEMon/ │ │ ├── AsyncVoidMethodsTests.cs │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── Tests.EVEMon.csproj │ │ ├── app.config │ │ └── packages.config │ ├── Tests.EVEMon.Common/ │ │ ├── AsyncVoidMethodsTests.cs │ │ ├── CompressionUncompressionTests.cs │ │ ├── GlobalSuppressions.cs │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── Tests.EVEMon.Common.csproj │ │ ├── TimeExtensionsTests.cs │ │ ├── app.config │ │ └── packages.config │ └── Tests.Helpers/ │ ├── AsyncVoidMethodsHelper.cs │ ├── Properties/ │ │ └── AssemblyInfo.cs │ └── Tests.Helpers.csproj ├── tools/ │ ├── EVESDEToSQL/ │ │ ├── EVESDEToSQL.exe.config │ │ ├── SDEFiles/ │ │ │ └── Put SDE zip or individual files here │ │ ├── System.Data.SQLite.xml │ │ ├── YamlDotNet.xml │ │ └── license.txt │ ├── InstallBuilder/ │ │ ├── EVEMonInstallerScript.nsi │ │ ├── GlobalSuppressions.cs │ │ ├── InstallBuilder.csproj │ │ ├── NETFrameworkCheck.nsh │ │ ├── NSIS/ │ │ │ ├── COPYING │ │ │ ├── Contrib/ │ │ │ │ ├── Language files/ │ │ │ │ │ ├── Afrikaans.nlf │ │ │ │ │ ├── Afrikaans.nsh │ │ │ │ │ ├── Albanian.nlf │ │ │ │ │ ├── Albanian.nsh │ │ │ │ │ ├── Arabic.nlf │ │ │ │ │ ├── Arabic.nsh │ │ │ │ │ ├── Basque.nlf │ │ │ │ │ ├── Basque.nsh │ │ │ │ │ ├── Belarusian.nlf │ │ │ │ │ ├── Belarusian.nsh │ │ │ │ │ ├── Bosnian.nlf │ │ │ │ │ ├── Bosnian.nsh │ │ │ │ │ ├── Breton.nlf │ │ │ │ │ ├── Breton.nsh │ │ │ │ │ ├── Bulgarian.nlf │ │ │ │ │ ├── Bulgarian.nsh │ │ │ │ │ ├── Catalan.nlf │ │ │ │ │ ├── Catalan.nsh │ │ │ │ │ ├── Croatian.nlf │ │ │ │ │ ├── Croatian.nsh │ │ │ │ │ ├── Czech.nlf │ │ │ │ │ ├── Czech.nsh │ │ │ │ │ ├── Danish.nlf │ │ │ │ │ ├── Danish.nsh │ │ │ │ │ ├── Dutch.nlf │ │ │ │ │ ├── Dutch.nsh │ │ │ │ │ ├── English.nlf │ │ │ │ │ ├── English.nsh │ │ │ │ │ ├── Esperanto.nlf │ │ │ │ │ ├── Esperanto.nsh │ │ │ │ │ ├── Estonian.nlf │ │ │ │ │ ├── Estonian.nsh │ │ │ │ │ ├── Farsi.nlf │ │ │ │ │ ├── Farsi.nsh │ │ │ │ │ ├── Finnish.nlf │ │ │ │ │ ├── Finnish.nsh │ │ │ │ │ ├── French.nlf │ │ │ │ │ ├── French.nsh │ │ │ │ │ ├── Galician.nlf │ │ │ │ │ ├── Galician.nsh │ │ │ │ │ ├── German.nlf │ │ │ │ │ ├── German.nsh │ │ │ │ │ ├── Greek.nlf │ │ │ │ │ ├── Greek.nsh │ │ │ │ │ ├── Hebrew.nlf │ │ │ │ │ ├── Hebrew.nsh │ │ │ │ │ ├── Hungarian.nlf │ │ │ │ │ ├── Hungarian.nsh │ │ │ │ │ ├── Icelandic.nlf │ │ │ │ │ ├── Icelandic.nsh │ │ │ │ │ ├── Indonesian.nlf │ │ │ │ │ ├── Indonesian.nsh │ │ │ │ │ ├── Irish.nlf │ │ │ │ │ ├── Irish.nsh │ │ │ │ │ ├── Italian.nlf │ │ │ │ │ ├── Italian.nsh │ │ │ │ │ ├── Japanese.nlf │ │ │ │ │ ├── Japanese.nsh │ │ │ │ │ ├── Korean.nlf │ │ │ │ │ ├── Korean.nsh │ │ │ │ │ ├── Kurdish.nlf │ │ │ │ │ ├── Kurdish.nsh │ │ │ │ │ ├── Latvian.nlf │ │ │ │ │ ├── Latvian.nsh │ │ │ │ │ ├── Lithuanian.nlf │ │ │ │ │ ├── Lithuanian.nsh │ │ │ │ │ ├── Luxembourgish.nlf │ │ │ │ │ ├── Luxembourgish.nsh │ │ │ │ │ ├── Macedonian.nlf │ │ │ │ │ ├── Macedonian.nsh │ │ │ │ │ ├── Malay.nlf │ │ │ │ │ ├── Malay.nsh │ │ │ │ │ ├── Mongolian.nlf │ │ │ │ │ ├── Mongolian.nsh │ │ │ │ │ ├── Norwegian.nlf │ │ │ │ │ ├── Norwegian.nsh │ │ │ │ │ ├── NorwegianNynorsk.nlf │ │ │ │ │ ├── NorwegianNynorsk.nsh │ │ │ │ │ ├── Polish.nlf │ │ │ │ │ ├── Polish.nsh │ │ │ │ │ ├── Portuguese.nlf │ │ │ │ │ ├── Portuguese.nsh │ │ │ │ │ ├── PortugueseBR.nlf │ │ │ │ │ ├── PortugueseBR.nsh │ │ │ │ │ ├── Romanian.nlf │ │ │ │ │ ├── Romanian.nsh │ │ │ │ │ ├── Russian.nlf │ │ │ │ │ ├── Russian.nsh │ │ │ │ │ ├── Serbian.nlf │ │ │ │ │ ├── Serbian.nsh │ │ │ │ │ ├── SerbianLatin.nlf │ │ │ │ │ ├── SerbianLatin.nsh │ │ │ │ │ ├── SimpChinese.nlf │ │ │ │ │ ├── SimpChinese.nsh │ │ │ │ │ ├── Slovak.nlf │ │ │ │ │ ├── Slovak.nsh │ │ │ │ │ ├── Slovenian.nlf │ │ │ │ │ ├── Slovenian.nsh │ │ │ │ │ ├── Spanish.nlf │ │ │ │ │ ├── Spanish.nsh │ │ │ │ │ ├── SpanishInternational.nlf │ │ │ │ │ ├── SpanishInternational.nsh │ │ │ │ │ ├── Swedish.nlf │ │ │ │ │ ├── Swedish.nsh │ │ │ │ │ ├── Thai.nlf │ │ │ │ │ ├── Thai.nsh │ │ │ │ │ ├── TradChinese.nlf │ │ │ │ │ ├── TradChinese.nsh │ │ │ │ │ ├── Turkish.nlf │ │ │ │ │ ├── Turkish.nsh │ │ │ │ │ ├── Ukrainian.nlf │ │ │ │ │ ├── Ukrainian.nsh │ │ │ │ │ ├── Uzbek.nlf │ │ │ │ │ ├── Uzbek.nsh │ │ │ │ │ ├── Welsh.nlf │ │ │ │ │ └── Welsh.nsh │ │ │ │ ├── Modern UI/ │ │ │ │ │ ├── System.nsh │ │ │ │ │ └── ioSpecial.ini │ │ │ │ ├── Modern UI 2/ │ │ │ │ │ ├── Deprecated.nsh │ │ │ │ │ ├── Interface.nsh │ │ │ │ │ ├── Localization.nsh │ │ │ │ │ ├── MUI2.nsh │ │ │ │ │ ├── Pages/ │ │ │ │ │ │ ├── Components.nsh │ │ │ │ │ │ ├── Directory.nsh │ │ │ │ │ │ ├── Finish.nsh │ │ │ │ │ │ ├── InstallFiles.nsh │ │ │ │ │ │ ├── License.nsh │ │ │ │ │ │ ├── StartMenu.nsh │ │ │ │ │ │ ├── UninstallConfirm.nsh │ │ │ │ │ │ └── Welcome.nsh │ │ │ │ │ └── Pages.nsh │ │ │ │ └── zip2exe/ │ │ │ │ ├── Base.nsh │ │ │ │ ├── Classic.nsh │ │ │ │ └── Modern.nsh │ │ │ ├── Docs/ │ │ │ │ ├── AdvSplash/ │ │ │ │ │ └── advsplash.txt │ │ │ │ ├── Banner/ │ │ │ │ │ └── Readme.txt │ │ │ │ ├── BgImage/ │ │ │ │ │ └── BgImage.txt │ │ │ │ ├── Dialer/ │ │ │ │ │ └── Dialer.txt │ │ │ │ ├── InstallOptions/ │ │ │ │ │ ├── Changelog.txt │ │ │ │ │ └── Readme.html │ │ │ │ ├── Math/ │ │ │ │ │ └── Math.txt │ │ │ │ ├── Modern UI/ │ │ │ │ │ ├── Changelog.txt │ │ │ │ │ ├── License.txt │ │ │ │ │ └── Readme.html │ │ │ │ ├── Modern UI 2/ │ │ │ │ │ ├── License.txt │ │ │ │ │ └── Readme.html │ │ │ │ ├── MultiUser/ │ │ │ │ │ └── Readme.html │ │ │ │ ├── NSISdl/ │ │ │ │ │ ├── License.txt │ │ │ │ │ └── ReadMe.txt │ │ │ │ ├── Splash/ │ │ │ │ │ └── splash.txt │ │ │ │ ├── StartMenu/ │ │ │ │ │ └── Readme.txt │ │ │ │ ├── StrFunc/ │ │ │ │ │ └── StrFunc.txt │ │ │ │ ├── System/ │ │ │ │ │ ├── System.html │ │ │ │ │ └── WhatsNew.txt │ │ │ │ ├── VPatch/ │ │ │ │ │ └── Readme.html │ │ │ │ ├── makensisw/ │ │ │ │ │ ├── License.txt │ │ │ │ │ └── Readme.txt │ │ │ │ ├── nsDialogs/ │ │ │ │ │ └── Readme.html │ │ │ │ └── nsExec/ │ │ │ │ └── nsExec.txt │ │ │ ├── Examples/ │ │ │ │ ├── AdvSplash/ │ │ │ │ │ └── Example.nsi │ │ │ │ ├── Banner/ │ │ │ │ │ └── Example.nsi │ │ │ │ ├── BgImage/ │ │ │ │ │ └── Example.nsi │ │ │ │ ├── FileFunc.ini │ │ │ │ ├── FileFunc.nsi │ │ │ │ ├── FileFuncTest.nsi │ │ │ │ ├── InstallOptions/ │ │ │ │ │ ├── test.ini │ │ │ │ │ ├── test.nsi │ │ │ │ │ ├── testimgs.ini │ │ │ │ │ ├── testimgs.nsi │ │ │ │ │ ├── testlink.ini │ │ │ │ │ ├── testlink.nsi │ │ │ │ │ ├── testnotify.ini │ │ │ │ │ └── testnotify.nsi │ │ │ │ ├── Library.nsi │ │ │ │ ├── LogicLib.nsi │ │ │ │ ├── Math/ │ │ │ │ │ ├── math.nsi │ │ │ │ │ ├── mathtest.ini │ │ │ │ │ ├── mathtest.nsi │ │ │ │ │ └── mathtest.txt │ │ │ │ ├── Memento.nsi │ │ │ │ ├── Modern UI/ │ │ │ │ │ ├── Basic.nsi │ │ │ │ │ ├── HeaderBitmap.nsi │ │ │ │ │ ├── MultiLanguage.nsi │ │ │ │ │ ├── StartMenu.nsi │ │ │ │ │ └── WelcomeFinish.nsi │ │ │ │ ├── Plugin/ │ │ │ │ │ ├── exdll-vs2008.sln │ │ │ │ │ ├── exdll-vs2008.vcproj │ │ │ │ │ ├── exdll.c │ │ │ │ │ ├── exdll.dpr │ │ │ │ │ ├── exdll.dsp │ │ │ │ │ ├── exdll.dsw │ │ │ │ │ ├── exdll_with_unit.dpr │ │ │ │ │ ├── extdll.inc │ │ │ │ │ ├── nsis/ │ │ │ │ │ │ ├── api.h │ │ │ │ │ │ ├── pluginapi.h │ │ │ │ │ │ └── pluginapi.lib │ │ │ │ │ └── nsis.pas │ │ │ │ ├── Splash/ │ │ │ │ │ └── Example.nsi │ │ │ │ ├── StartMenu/ │ │ │ │ │ └── Example.nsi │ │ │ │ ├── StrFunc.nsi │ │ │ │ ├── System/ │ │ │ │ │ ├── SysFunc.nsh │ │ │ │ │ ├── System.nsh │ │ │ │ │ └── System.nsi │ │ │ │ ├── TextFunc.ini │ │ │ │ ├── TextFunc.nsi │ │ │ │ ├── TextFuncTest.nsi │ │ │ │ ├── UserInfo/ │ │ │ │ │ └── UserInfo.nsi │ │ │ │ ├── UserVars.nsi │ │ │ │ ├── VPatch/ │ │ │ │ │ ├── example.nsi │ │ │ │ │ ├── newfile.txt │ │ │ │ │ ├── oldfile.txt │ │ │ │ │ └── patch.pat │ │ │ │ ├── VersionInfo.nsi │ │ │ │ ├── WordFunc.ini │ │ │ │ ├── WordFunc.nsi │ │ │ │ ├── WordFuncTest.nsi │ │ │ │ ├── bigtest.nsi │ │ │ │ ├── example1.nsi │ │ │ │ ├── example2.nsi │ │ │ │ ├── gfx.nsi │ │ │ │ ├── languages.nsi │ │ │ │ ├── makensis.nsi │ │ │ │ ├── nsDialogs/ │ │ │ │ │ ├── InstallOptions.nsi │ │ │ │ │ ├── example.nsi │ │ │ │ │ ├── timer.nsi │ │ │ │ │ └── welcome.nsi │ │ │ │ ├── nsExec/ │ │ │ │ │ └── test.nsi │ │ │ │ ├── one-section.nsi │ │ │ │ ├── primes.nsi │ │ │ │ ├── rtest.nsi │ │ │ │ ├── silent.nsi │ │ │ │ ├── viewhtml.nsi │ │ │ │ └── waplugin.nsi │ │ │ ├── Include/ │ │ │ │ ├── Colors.nsh │ │ │ │ ├── FileFunc.nsh │ │ │ │ ├── InstallOptions.nsh │ │ │ │ ├── LangFile.nsh │ │ │ │ ├── Library.nsh │ │ │ │ ├── LogicLib.nsh │ │ │ │ ├── MUI.nsh │ │ │ │ ├── MUI2.nsh │ │ │ │ ├── Memento.nsh │ │ │ │ ├── MultiUser.nsh │ │ │ │ ├── Sections.nsh │ │ │ │ ├── StrFunc.nsh │ │ │ │ ├── TextFunc.nsh │ │ │ │ ├── UpgradeDLL.nsh │ │ │ │ ├── Util.nsh │ │ │ │ ├── VB6RunTime.nsh │ │ │ │ ├── VPatchLib.nsh │ │ │ │ ├── Win/ │ │ │ │ │ ├── WinDef.nsh │ │ │ │ │ ├── WinError.nsh │ │ │ │ │ ├── WinNT.nsh │ │ │ │ │ └── WinUser.nsh │ │ │ │ ├── WinCore.nsh │ │ │ │ ├── WinMessages.nsh │ │ │ │ ├── WinVer.nsh │ │ │ │ ├── WordFunc.nsh │ │ │ │ ├── nsDialogs.nsh │ │ │ │ └── x64.nsh │ │ │ ├── Menu/ │ │ │ │ └── index.html │ │ │ ├── NSIS.chm │ │ │ ├── Stubs/ │ │ │ │ ├── bzip2 │ │ │ │ ├── bzip2_solid │ │ │ │ ├── lzma │ │ │ │ ├── lzma_solid │ │ │ │ ├── uninst │ │ │ │ ├── zlib │ │ │ │ └── zlib_solid │ │ │ └── nsisconf.nsh │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── UAC.nsh │ │ ├── app.config │ │ └── packages.config │ ├── PatchXmlCreator/ │ │ ├── Action.cs │ │ ├── DatafileControl.Designer.cs │ │ ├── DatafileControl.cs │ │ ├── DatafileControl.resx │ │ ├── GlobalSuppressions.cs │ │ ├── Helper.cs │ │ ├── Output/ │ │ │ ├── patch-old.xml │ │ │ └── patch.xml │ │ ├── PatchXmlCreator.csproj │ │ ├── PatchXmlCreatorWindow.Designer.cs │ │ ├── PatchXmlCreatorWindow.cs │ │ ├── PatchXmlCreatorWindow.resx │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ ├── Resources.resx │ │ │ ├── Settings.Designer.cs │ │ │ └── Settings.settings │ │ └── app.config │ ├── ReSharper/ │ │ ├── EVEMonCodingStyle-ReSharper.xml │ │ ├── EVEMonCodingStyle-ReSharper6.1.DotSettings │ │ └── EVEMonCodingStyle-ReSharper9.x.DotSettings │ ├── ResFileCreator/ │ │ ├── GlobalSuppressions.cs │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── ResFileCreator.csproj │ │ └── app.config │ └── XmlGenerator/ │ ├── App.config │ ├── Collections/ │ │ ├── BagCollection.cs │ │ ├── IndexedCollection.cs │ │ └── RelationSetCollection.cs │ ├── Datafiles/ │ │ ├── Blueprints.cs │ │ ├── Certificates.cs │ │ ├── Geography.cs │ │ ├── Items.cs │ │ ├── Masteries.cs │ │ ├── Properties.cs │ │ ├── Reprocessing.cs │ │ └── Skills.cs │ ├── Extensions/ │ │ └── StringCleaning.cs │ ├── GlobalSuppressions.cs │ ├── Interfaces/ │ │ ├── IHasId.cs │ │ ├── IHasLongId.cs │ │ └── IRelation.cs │ ├── Models/ │ │ ├── EveStaticData.cs │ │ ├── agtAgentTypes.cs │ │ ├── agtAgents.cs │ │ ├── agtResearchAgents.cs │ │ ├── certCerts.cs │ │ ├── chrAncestries.cs │ │ ├── chrAttributes.cs │ │ ├── chrBloodlines.cs │ │ ├── chrFactions.cs │ │ ├── chrRaces.cs │ │ ├── cloneStates.cs │ │ ├── crpActivities.cs │ │ ├── crpNPCCorporationDivisions.cs │ │ ├── crpNPCCorporationResearchFields.cs │ │ ├── crpNPCCorporationTrades.cs │ │ ├── crpNPCCorporations.cs │ │ ├── crpNPCDivisions.cs │ │ ├── crtCertificates.cs │ │ ├── crtClasses.cs │ │ ├── crtRecommendations.cs │ │ ├── crtRelationships.cs │ │ ├── dgmAttributeCategories.cs │ │ ├── dgmAttributeTypes.cs │ │ ├── dgmEffects.cs │ │ ├── dgmExpressions.cs │ │ ├── dgmMasteries.cs │ │ ├── dgmTraits.cs │ │ ├── dgmTypeAttributes.cs │ │ ├── dgmTypeEffects.cs │ │ ├── dgmTypeMasteries.cs │ │ ├── dgmTypeTraits.cs │ │ ├── eveGraphics.cs │ │ ├── eveIcons.cs │ │ ├── eveUnits.cs │ │ ├── industryActivity.cs │ │ ├── industryActivityMaterials.cs │ │ ├── industryActivityProbabilities.cs │ │ ├── industryActivityProducts.cs │ │ ├── industryActivityRaces.cs │ │ ├── industryActivitySkills.cs │ │ ├── industryBlueprints.cs │ │ ├── invCategories.cs │ │ ├── invContrabandTypes.cs │ │ ├── invControlTowerResourcePurposes.cs │ │ ├── invControlTowerResources.cs │ │ ├── invFlags.cs │ │ ├── invGroups.cs │ │ ├── invItems.cs │ │ ├── invMarketGroups.cs │ │ ├── invMetaGroups.cs │ │ ├── invMetaTypes.cs │ │ ├── invNames.cs │ │ ├── invPositions.cs │ │ ├── invTraits.cs │ │ ├── invTypeMaterials.cs │ │ ├── invTypeReactions.cs │ │ ├── invTypes.cs │ │ ├── invUniqueNames.cs │ │ ├── mapCelestialStatistics.cs │ │ ├── mapConstellationJumps.cs │ │ ├── mapConstellations.cs │ │ ├── mapDenormalize.cs │ │ ├── mapJumps.cs │ │ ├── mapLandmarks.cs │ │ ├── mapLocationScenes.cs │ │ ├── mapLocationWormholeClasses.cs │ │ ├── mapRegionJumps.cs │ │ ├── mapRegions.cs │ │ ├── mapSolarSystemJumps.cs │ │ ├── mapSolarSystems.cs │ │ ├── mapUniverse.cs │ │ ├── planetSchematics.cs │ │ ├── planetSchematicsPinMap.cs │ │ ├── planetSchematicsTypeMap.cs │ │ ├── ramActivities.cs │ │ ├── ramAssemblyLineStations.cs │ │ ├── ramAssemblyLineTypeDetailPerCategory.cs │ │ ├── ramAssemblyLineTypeDetailPerGroup.cs │ │ ├── ramAssemblyLineTypes.cs │ │ ├── ramInstallationTypeContents.cs │ │ ├── sknLicenses.cs │ │ ├── sknMaterials.cs │ │ ├── sknSkins.cs │ │ ├── staOperationServices.cs │ │ ├── staOperations.cs │ │ ├── staServices.cs │ │ ├── staStationTypes.cs │ │ ├── staStations.cs │ │ ├── translationTables.cs │ │ ├── trnTranslationColumns.cs │ │ ├── trnTranslationLanguages.cs │ │ ├── trnTranslations.cs │ │ ├── warCombatZoneSystems.cs │ │ └── warCombatZones.cs │ ├── Program.cs │ ├── Properties/ │ │ └── AssemblyInfo.cs │ ├── Providers/ │ │ ├── Database.cs │ │ └── HoboleaksAlphaSkills.cs │ ├── StaticData/ │ │ ├── AgtAgentTypes.cs │ │ ├── AgtAgents.cs │ │ ├── AgtResearchAgents.cs │ │ ├── ChrFactions.cs │ │ ├── CrpNPCDivisions.cs │ │ ├── CrtCertificates.cs │ │ ├── CrtClasses.cs │ │ ├── CrtRecommendations.cs │ │ ├── CrtRelationships.cs │ │ ├── DgmAttributeCategories.cs │ │ ├── DgmAttributeTypes.cs │ │ ├── DgmMasteries.cs │ │ ├── DgmTraits.cs │ │ ├── DgmTypeAttributes.cs │ │ ├── DgmTypeEffects.cs │ │ ├── DgmTypeMasteries.cs │ │ ├── DgmTypeTraits.cs │ │ ├── EveIcons.cs │ │ ├── EveUnits.cs │ │ ├── IndustryActivity.cs │ │ ├── IndustryActivityMaterials.cs │ │ ├── IndustryActivityProbabilities.cs │ │ ├── IndustryActivityProducts.cs │ │ ├── IndustryActivitySkills.cs │ │ ├── IndustryBlueprints.cs │ │ ├── InvCategories.cs │ │ ├── InvControlTowerResourcePurposes.cs │ │ ├── InvControlTowerResources.cs │ │ ├── InvFlags.cs │ │ ├── InvGroups.cs │ │ ├── InvItems.cs │ │ ├── InvMarketGroups.cs │ │ ├── InvMetaTypes.cs │ │ ├── InvNames.cs │ │ ├── InvTraits.cs │ │ ├── InvTypeMaterials.cs │ │ ├── InvTypeReactions.cs │ │ ├── InvTypes.cs │ │ ├── MapConstellations.cs │ │ ├── MapRegions.cs │ │ ├── MapSolarSystems.cs │ │ ├── MapSolarSystemsJump.cs │ │ └── StaStations.cs │ ├── Utils/ │ │ └── Util.cs │ ├── XmlGenerator.csproj │ ├── Xmlfiles/ │ │ ├── Flags.cs │ │ └── Serialization/ │ │ ├── SerialiazableRowset.cs │ │ ├── SerializableInvFlagsRow.cs │ │ └── SerializableRoot.cs │ └── packages.config └── updates/ └── patch.xml ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ root = true # Unix-style newlines with a newline ending every file [*] end_of_line = crlf insert_final_newline = true indent_style = space indent_size = 4 csharp_new_line_before_open_brace = all csharp_new_line_before_else = true csharp_new_line_before_catch = true csharp_new_line_before_finally = true ================================================ FILE: .gitattributes ================================================ ############################################################################### # Set default behavior to automatically normalize line endings. ############################################################################### * text=auto ############################################################################### # Set default behavior for command prompt diff. # # This is need for earlier builds of msysgit that does not have it on by # default for csharp files. # Note: This is only used by command line ############################################################################### #*.cs diff=csharp ############################################################################### # Set the merge driver for project and solution files # # Merging from the command prompt will add diff markers to the files if there # are conflicts (Merging from VS is not affected by the settings below, in VS # the diff markers are never inserted). Diff markers may cause the following # file extensions to fail to load in VS. An alternative would be to treat # these files as binary and thus will always conflict and require user # intervention with every merge. To do so, just uncomment the entries below ############################################################################### #*.sln merge=binary #*.csproj merge=binary #*.vbproj merge=binary #*.vcxproj merge=binary #*.vcproj merge=binary #*.dbproj merge=binary #*.fsproj merge=binary #*.lsproj merge=binary #*.wixproj merge=binary #*.modelproj merge=binary #*.sqlproj merge=binary #*.wwaproj merge=binary ############################################################################### # behavior for image files # # image files are treated as binary by default. ############################################################################### #*.jpg binary #*.png binary #*.gif binary ############################################################################### # diff behavior for common document formats # # Convert binary document formats to text before diffing them. This feature # is only available from the command line. Turn it on by uncommenting the # entries below. ############################################################################### #*.doc diff=astextplain #*.DOC diff=astextplain #*.docx diff=astextplain #*.DOCX diff=astextplain #*.dot diff=astextplain #*.DOT diff=astextplain #*.pdf diff=astextplain #*.PDF diff=astextplain #*.rtf diff=astextplain #*.RTF diff=astextplain ================================================ FILE: .gitignore ================================================ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. # User-specific files *.suo *.user *.userosscache *.sln.docstates # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ x64/ x86/ build/ bld/ [Bb]in/ [Oo]bj/ # Visual Studio 2015 cache/options directory .vs/ # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* # NUNIT *.VisualState.xml TestResult.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c # DNX project.lock.json artifacts/ *_i.c *_p.c *_i.h *.ilk *.meta *.obj *.pch *.pdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *.log *.vspscc *.vssscc .builds *.pidb *.svclog *.scc # Chutzpah Test files _Chutzpah* # Visual C++ cache files ipch/ *.aps *.ncb *.opensdf *.sdf *.cachefile # Visual Studio profiler *.psess *.vsp *.vspx # TFS 2012 Local Workspace $tf/ # Guidance Automation Toolkit *.gpState # ReSharper is a .NET coding add-in _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user # JustCode is a .NET coding add-in .JustCode # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover # NCrunch _NCrunch_* .*crunch*.local.xml # MightyMoose *.mm.* AutoTest.Net/ # Web workbench (sass) .sass-cache/ # Installshield output folder [Ee]xpress/ # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT DocProject/Help/*.HxC DocProject/Help/*.hhc DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html # Click-Once directory publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml ## TODO: Comment the next line if you want to checkin your ## web deploy settings but do note that will include unencrypted ## passwords #*.pubxml *.publishproj # NuGet Packages *.nupkg # The packages folder can be ignored because of Package Restore **/packages/* # except build/, which is used as an MSBuild target. !**/packages/build/ # Uncomment if necessary however generally it will be regenerated when needed #!**/packages/repositories.config # Windows Azure Build Output csx/ *.build.csdef # Windows Store app package directory AppPackages/ # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache !*.[Cc]ache/ # Others ClientBin/ [Ss]tyle[Cc]op.* ~$* *~ *.dbmdl *.dbproj.schemaview *.pfx *.publishsettings node_modules/ orleans.codegen.cs # RIA/Silverlight projects Generated_Code/ # Backup & report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm # SQL Server files *.mdf *.ldf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings # Microsoft Fakes FakesAssemblies/ # Node.js Tools for Visual Studio .ntvs_analysis.dat # Visual Studio 6 build log *.plg # Visual Studio 6 workspace options file *.opt # LightSwitch generated files GeneratedArtifacts/ _Pvt_Extensions/ ModelManifest.xml *.bacpac /*.rb /*.bat /tools/XmlGenerator/*.sqlite ================================================ FILE: EVEMon.sln ================================================  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{D7B1651B-8895-4254-8EBF-029CBEE3C1E3}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{B2FD94FF-A895-4519-A97F-6DEA32F15F8E}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{9AB16E7E-E520-4444-8E8E-165129CC93B3}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EVEMon", "src\EVEMon\EVEMon.csproj", "{A2E5EFE0-614A-4567-95E5-92A4D94169AC}" ProjectSection(ProjectDependencies) = postProject {696E929A-6A4A-4C6D-A8B2-C4F25F781940} = {696E929A-6A4A-4C6D-A8B2-C4F25F781940} {8C4A87A0-780E-4765-ADD0-146091FE26F4} = {8C4A87A0-780E-4765-ADD0-146091FE26F4} {87682BB1-CCE5-4CA4-BDE8-1A2ACF0B3CE0} = {87682BB1-CCE5-4CA4-BDE8-1A2ACF0B3CE0} EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EVEMon.Common", "src\EVEMon.Common\EVEMon.Common.csproj", "{C0665275-3E0B-4117-81B0-751206ED03CD}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EVEMon.LogitechG15", "src\EVEMon.LogitechG15\EVEMon.LogitechG15.csproj", "{3067BDFB-C02D-4CAF-96AA-4D8F9F986180}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EVEMon.PieChart", "src\EVEMon.PieChart\EVEMon.PieChart.csproj", "{696E929A-6A4A-4C6D-A8B2-C4F25F781940}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EVEMon.WindowsApi", "src\EVEMon.WindowsApi\EVEMon.WindowsApi.csproj", "{D942D976-6185-4ECD-A83B-60260100D12E}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EVEMon.Watchdog", "src\EVEMon.Watchdog\EVEMon.Watchdog.csproj", "{8C4A87A0-780E-4765-ADD0-146091FE26F4}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.EVEMon.Common", "tests\Tests.EVEMon.Common\Tests.EVEMon.Common.csproj", "{C61CB94F-31DF-48BE-8053-FCE7DC6ECD7F}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InstallBuilder", "tools\InstallBuilder\InstallBuilder.csproj", "{5CE8E302-3577-41BC-A35F-C88AC625F7A7}" ProjectSection(ProjectDependencies) = postProject {87682BB1-CCE5-4CA4-BDE8-1A2ACF0B3CE0} = {87682BB1-CCE5-4CA4-BDE8-1A2ACF0B3CE0} {A2E5EFE0-614A-4567-95E5-92A4D94169AC} = {A2E5EFE0-614A-4567-95E5-92A4D94169AC} EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlGenerator", "tools\XmlGenerator\XmlGenerator.csproj", "{9366D54A-B516-4A1D-987B-B1BCE31D2A72}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PatchXmlCreator", "tools\PatchXmlCreator\PatchXmlCreator.csproj", "{E6907BAD-CDF4-4B3C-AF2E-E854D2E2D959}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResFileCreator", "tools\ResFileCreator\ResFileCreator.csproj", "{87682BB1-CCE5-4CA4-BDE8-1A2ACF0B3CE0}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A7AC1A9C-97FC-4937-A8CA-684650A99D01}" ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig SharedAssemblyInfo.cs = SharedAssemblyInfo.cs SharedAssemblyInfo.template.cs = SharedAssemblyInfo.template.cs EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.EVEMon", "tests\Tests.EVEMon\Tests.EVEMon.csproj", "{FD639BF6-3414-4FB2-8325-61744D44F028}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.Helpers", "tests\Tests.Helpers\Tests.Helpers.csproj", "{1917E258-0979-4333-8B20-5D66E8986E1C}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU Snapshot|Any CPU = Snapshot|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {A2E5EFE0-614A-4567-95E5-92A4D94169AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A2E5EFE0-614A-4567-95E5-92A4D94169AC}.Debug|Any CPU.Build.0 = Debug|Any CPU {A2E5EFE0-614A-4567-95E5-92A4D94169AC}.Release|Any CPU.ActiveCfg = Release|Any CPU {A2E5EFE0-614A-4567-95E5-92A4D94169AC}.Release|Any CPU.Build.0 = Release|Any CPU {A2E5EFE0-614A-4567-95E5-92A4D94169AC}.Snapshot|Any CPU.ActiveCfg = Snapshot|Any CPU {A2E5EFE0-614A-4567-95E5-92A4D94169AC}.Snapshot|Any CPU.Build.0 = Snapshot|Any CPU {C0665275-3E0B-4117-81B0-751206ED03CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C0665275-3E0B-4117-81B0-751206ED03CD}.Debug|Any CPU.Build.0 = Debug|Any CPU {C0665275-3E0B-4117-81B0-751206ED03CD}.Release|Any CPU.ActiveCfg = Release|Any CPU {C0665275-3E0B-4117-81B0-751206ED03CD}.Release|Any CPU.Build.0 = Release|Any CPU {C0665275-3E0B-4117-81B0-751206ED03CD}.Snapshot|Any CPU.ActiveCfg = Snapshot|Any CPU {C0665275-3E0B-4117-81B0-751206ED03CD}.Snapshot|Any CPU.Build.0 = Snapshot|Any CPU {3067BDFB-C02D-4CAF-96AA-4D8F9F986180}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3067BDFB-C02D-4CAF-96AA-4D8F9F986180}.Debug|Any CPU.Build.0 = Debug|Any CPU {3067BDFB-C02D-4CAF-96AA-4D8F9F986180}.Release|Any CPU.ActiveCfg = Release|Any CPU {3067BDFB-C02D-4CAF-96AA-4D8F9F986180}.Release|Any CPU.Build.0 = Release|Any CPU {3067BDFB-C02D-4CAF-96AA-4D8F9F986180}.Snapshot|Any CPU.ActiveCfg = Snapshot|Any CPU {3067BDFB-C02D-4CAF-96AA-4D8F9F986180}.Snapshot|Any CPU.Build.0 = Snapshot|Any CPU {696E929A-6A4A-4C6D-A8B2-C4F25F781940}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {696E929A-6A4A-4C6D-A8B2-C4F25F781940}.Debug|Any CPU.Build.0 = Debug|Any CPU {696E929A-6A4A-4C6D-A8B2-C4F25F781940}.Release|Any CPU.ActiveCfg = Release|Any CPU {696E929A-6A4A-4C6D-A8B2-C4F25F781940}.Release|Any CPU.Build.0 = Release|Any CPU {696E929A-6A4A-4C6D-A8B2-C4F25F781940}.Snapshot|Any CPU.ActiveCfg = Snapshot|Any CPU {696E929A-6A4A-4C6D-A8B2-C4F25F781940}.Snapshot|Any CPU.Build.0 = Snapshot|Any CPU {D942D976-6185-4ECD-A83B-60260100D12E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D942D976-6185-4ECD-A83B-60260100D12E}.Debug|Any CPU.Build.0 = Debug|Any CPU {D942D976-6185-4ECD-A83B-60260100D12E}.Release|Any CPU.ActiveCfg = Release|Any CPU {D942D976-6185-4ECD-A83B-60260100D12E}.Release|Any CPU.Build.0 = Release|Any CPU {D942D976-6185-4ECD-A83B-60260100D12E}.Snapshot|Any CPU.ActiveCfg = Snapshot|Any CPU {D942D976-6185-4ECD-A83B-60260100D12E}.Snapshot|Any CPU.Build.0 = Snapshot|Any CPU {8C4A87A0-780E-4765-ADD0-146091FE26F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8C4A87A0-780E-4765-ADD0-146091FE26F4}.Debug|Any CPU.Build.0 = Debug|Any CPU {8C4A87A0-780E-4765-ADD0-146091FE26F4}.Release|Any CPU.ActiveCfg = Release|Any CPU {8C4A87A0-780E-4765-ADD0-146091FE26F4}.Release|Any CPU.Build.0 = Release|Any CPU {8C4A87A0-780E-4765-ADD0-146091FE26F4}.Snapshot|Any CPU.ActiveCfg = Snapshot|Any CPU {8C4A87A0-780E-4765-ADD0-146091FE26F4}.Snapshot|Any CPU.Build.0 = Snapshot|Any CPU {C61CB94F-31DF-48BE-8053-FCE7DC6ECD7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C61CB94F-31DF-48BE-8053-FCE7DC6ECD7F}.Debug|Any CPU.Build.0 = Debug|Any CPU {C61CB94F-31DF-48BE-8053-FCE7DC6ECD7F}.Release|Any CPU.ActiveCfg = Release|Any CPU {C61CB94F-31DF-48BE-8053-FCE7DC6ECD7F}.Snapshot|Any CPU.ActiveCfg = Snapshot|Any CPU {5CE8E302-3577-41BC-A35F-C88AC625F7A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5CE8E302-3577-41BC-A35F-C88AC625F7A7}.Debug|Any CPU.Build.0 = Debug|Any CPU {5CE8E302-3577-41BC-A35F-C88AC625F7A7}.Release|Any CPU.ActiveCfg = Release|Any CPU {5CE8E302-3577-41BC-A35F-C88AC625F7A7}.Release|Any CPU.Build.0 = Release|Any CPU {5CE8E302-3577-41BC-A35F-C88AC625F7A7}.Snapshot|Any CPU.ActiveCfg = Snapshot|Any CPU {5CE8E302-3577-41BC-A35F-C88AC625F7A7}.Snapshot|Any CPU.Build.0 = Snapshot|Any CPU {9366D54A-B516-4A1D-987B-B1BCE31D2A72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9366D54A-B516-4A1D-987B-B1BCE31D2A72}.Debug|Any CPU.Build.0 = Debug|Any CPU {9366D54A-B516-4A1D-987B-B1BCE31D2A72}.Release|Any CPU.ActiveCfg = Release|Any CPU {9366D54A-B516-4A1D-987B-B1BCE31D2A72}.Snapshot|Any CPU.ActiveCfg = Snapshot|Any CPU {E6907BAD-CDF4-4B3C-AF2E-E854D2E2D959}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E6907BAD-CDF4-4B3C-AF2E-E854D2E2D959}.Debug|Any CPU.Build.0 = Debug|Any CPU {E6907BAD-CDF4-4B3C-AF2E-E854D2E2D959}.Release|Any CPU.ActiveCfg = Release|Any CPU {E6907BAD-CDF4-4B3C-AF2E-E854D2E2D959}.Snapshot|Any CPU.ActiveCfg = Snapshot|Any CPU {87682BB1-CCE5-4CA4-BDE8-1A2ACF0B3CE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {87682BB1-CCE5-4CA4-BDE8-1A2ACF0B3CE0}.Debug|Any CPU.Build.0 = Debug|Any CPU {87682BB1-CCE5-4CA4-BDE8-1A2ACF0B3CE0}.Release|Any CPU.ActiveCfg = Release|Any CPU {87682BB1-CCE5-4CA4-BDE8-1A2ACF0B3CE0}.Release|Any CPU.Build.0 = Release|Any CPU {87682BB1-CCE5-4CA4-BDE8-1A2ACF0B3CE0}.Snapshot|Any CPU.ActiveCfg = Snapshot|Any CPU {87682BB1-CCE5-4CA4-BDE8-1A2ACF0B3CE0}.Snapshot|Any CPU.Build.0 = Snapshot|Any CPU {FD639BF6-3414-4FB2-8325-61744D44F028}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FD639BF6-3414-4FB2-8325-61744D44F028}.Debug|Any CPU.Build.0 = Debug|Any CPU {FD639BF6-3414-4FB2-8325-61744D44F028}.Release|Any CPU.ActiveCfg = Release|Any CPU {FD639BF6-3414-4FB2-8325-61744D44F028}.Snapshot|Any CPU.ActiveCfg = Snapshot|Any CPU {1917E258-0979-4333-8B20-5D66E8986E1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1917E258-0979-4333-8B20-5D66E8986E1C}.Debug|Any CPU.Build.0 = Debug|Any CPU {1917E258-0979-4333-8B20-5D66E8986E1C}.Release|Any CPU.ActiveCfg = Release|Any CPU {1917E258-0979-4333-8B20-5D66E8986E1C}.Snapshot|Any CPU.ActiveCfg = Snapshot|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {A2E5EFE0-614A-4567-95E5-92A4D94169AC} = {D7B1651B-8895-4254-8EBF-029CBEE3C1E3} {C0665275-3E0B-4117-81B0-751206ED03CD} = {D7B1651B-8895-4254-8EBF-029CBEE3C1E3} {3067BDFB-C02D-4CAF-96AA-4D8F9F986180} = {D7B1651B-8895-4254-8EBF-029CBEE3C1E3} {696E929A-6A4A-4C6D-A8B2-C4F25F781940} = {D7B1651B-8895-4254-8EBF-029CBEE3C1E3} {D942D976-6185-4ECD-A83B-60260100D12E} = {D7B1651B-8895-4254-8EBF-029CBEE3C1E3} {8C4A87A0-780E-4765-ADD0-146091FE26F4} = {D7B1651B-8895-4254-8EBF-029CBEE3C1E3} {C61CB94F-31DF-48BE-8053-FCE7DC6ECD7F} = {B2FD94FF-A895-4519-A97F-6DEA32F15F8E} {5CE8E302-3577-41BC-A35F-C88AC625F7A7} = {9AB16E7E-E520-4444-8E8E-165129CC93B3} {9366D54A-B516-4A1D-987B-B1BCE31D2A72} = {9AB16E7E-E520-4444-8E8E-165129CC93B3} {E6907BAD-CDF4-4B3C-AF2E-E854D2E2D959} = {9AB16E7E-E520-4444-8E8E-165129CC93B3} {87682BB1-CCE5-4CA4-BDE8-1A2ACF0B3CE0} = {9AB16E7E-E520-4444-8E8E-165129CC93B3} {FD639BF6-3414-4FB2-8325-61744D44F028} = {B2FD94FF-A895-4519-A97F-6DEA32F15F8E} {1917E258-0979-4333-8B20-5D66E8986E1C} = {B2FD94FF-A895-4519-A97F-6DEA32F15F8E} EndGlobalSection EndGlobal ================================================ FILE: README.md ================================================ [![GPL licensed](https://img.shields.io/badge/license-GPL%20v2-blue.svg)]() [![GitHub tag](https://img.shields.io/github/tag/peterhaneve/evemon.svg)]() # **EVEMon** A lightweight, easy-to-use standalone Windows application designed to assist you in keeping track of your EVE Online character progression. For complete info on *How To Contribute* please visit the [wiki](https://bitbucket.org/EVEMonDevTeam/evemon/wiki) section **Maintainer of the ESI fork:** [EVE:Peter Han](https://github.com/peterhaneve/evemon) (GitHub) **Owner:** [EVEMonDevTeam](https://github.com/evemondevteam/) (GitHub) [EVEMonDevTeam](https://bitbucket.org/EVEMonDevTeam) (Bitbucket) **Website:** [EVEMon](https://evemondevteam.github.io/evemon/) **Documentation:** [EVEMon Docs](https://evemon.readthedocs.org/) **Feedback & Ideas:** [On UserVoice](https://evemon.uservoice.com/) **Admins:** [JimiC](https://github.com/JimiC) (GitHub) [Jimi C](https://bitbucket.org/Desmont_McCallock) (Bitbucket) ================================================ FILE: SharedAssemblyInfo.cs ================================================ using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyDescription("EVEMon Offline Character Utility for ESI, repository URL: https://github.com/peterhaneve/evemon")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("EVEMon Development Team")] [assembly: AssemblyProduct("EVEMon")] [assembly: AssemblyCopyright("Copyright © 2006-2021, EVEMon Development Team")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // Friend assembly for unit testing [assembly: InternalsVisibleTo("Tests.EVEMon.Common")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] // Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // [assembly: AssemblyVersion("4.0.20.0")] [assembly: AssemblyFileVersion("4.0.20.4986")] [assembly: AssemblyInformationalVersion("4.0.20")] // Neutral Language [assembly: NeutralResourcesLanguage("en-US")] ================================================ FILE: SharedAssemblyInfo.template.cs ================================================ using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyDescription("EVEMon Offline Character Utility for ESI, repository URL: https://github.com/peterhaneve/evemon")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("EVEMon Development Team")] [assembly: AssemblyProduct("EVEMon")] [assembly: AssemblyCopyright("Copyright © 2006-$UTCYEAR$, EVEMon Development Team")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // Friend assembly for unit testing [assembly: InternalsVisibleTo("Tests.EVEMon.Common")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] // Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // [assembly: AssemblyVersion("4.0.20.0")] [assembly: AssemblyFileVersion("4.0.20.$REVNUM$")] [assembly: AssemblyInformationalVersion("4.0.20")] // Neutral Language [assembly: NeutralResourcesLanguage("en-US")] ================================================ FILE: designs/AutoUpdate-Architecture.bmml ================================================ circle none Google AppEngine circle none BattleClinic false bottom true false Update.xml%20Silos circle none BattleClinic bottom true false Content%20Silos%3A%0A%20-%20DataFiles%20%28*.xml.gz%29%0A%20-%20Binaries%20%28Installer%2C%20ZIP%20Archive%29 %3Cupdate%3E%0A%20%3Cpackage%20name%3D%22EVEMon%22%3E%0A%20%20%3Cdate%3E09/01/10%3C/date%3E%0A%20%20%3Cversion%3E1.3.1.2138%3C/version%3E%0A%20%20%3Cinstaller%3EEVEMon-install-1.3.1.2138.exe%3C/installer%3E%0A%20%20%3Carguments%3E/S%20/AUTORUN%20/SKIPDOTNET%20/D%3D%25EVEMON_EXECUTABLE_PATH%25%3C/arguments%3E%0A%20%20%3Cservers%3E%0A%20%20%20%3Cserver%3Ehttp%3A//evemon.static.battleclinic.com/builds/installers/%3C/server%3E%0A%20%20%20%3Cserver%3Ehttp%3A//evemon.battleclinic.com/builds/installers/%3C/server%3E%0A%20%20%20%3Cserver%3Ehttp%3A//evemon-cdn.appspot.com/builds/installers/%3C/server%3E%0A%20%20%3C/servers%3E%0A%20%20%3Ccontributors%3E%0A%20%20%20%3Ccontributor%3ERichard%20Slater%3C/contributor%3E%0A%20%20%20%3Ccontributor%3EAlice%3C/contributor%3E%0A%20%20%20%3Ccontributor%3EBob%3C/contributor%3E%0A%20%20%3C/contributors%3E%0A%20%20%3Cimportant%3E%0A%3C%21%5BCDATA%5BImportant%20messages%20go%20here%5D%5D%3E%0A%20%20%3C/important%3E%0A%20%20%3Cmessage%3E%0A%3C%21%5BCDATA%5BMessages%20about%20the%20release%20go%20here%5D%5D%3E%0A%20%20%3C/message%3E%0A%20%3C/package%3E%0A%20%3Cdatafiles%3E%0A%20%20%3Cdatafile%3E%0A%20%20%20%20%3Cname%3Eeve-certificates-en-US.xml.gz%3C/name%3E%0A%20%20%20%20%3Cculture%3Een-US%3C/culture%3E%0A%20%20%20%20%3Cversion%3E2249%3C/version%3E%0A%20%20%20%20%3CminimumAssembly%3E1.3.1.2138%3C/minimumAssembly%3E%0A%20%20%20%20%3Cdate%3E25/05/2010%3C/date%3E%0A%20%20%20%20%3Cmd5%3E9ced7a636195498d6df59a3e669e585a%3C/md5%3E%0A%20%20%20%20%3Cservers%3E%0A%20%20%20%20%20%3Cserver%3Ehttp%3A//evemon.static.battleclinic.com/builds/installers/%3C/server%3E%0A%20%20%20%20%20%3Cserver%3Ehttp%3A//evemon.battleclinic.com/builds/installers/%3C/server%3E%0A%20%20%20%20%20%3Cserver%3Ehttp%3A//evemon-cdn.appspot.com/builds/installers/%3C/server%3E%0A%20%20%20%20%3C/servers%3E%0A%20%20%20%20%3Cmessage%3E%3C%21%5BCDATA%5BMessage%20Goes%20Here%5D%5D%3E%3C/message%3E%0A%20%20%3C/datafile%3E%0A%20%3C/datafiles%3E%0A%3C/update%3E ================================================ FILE: designs/AutoUpdate-UI-EVEMonUpdate.bmml ================================================ EVEMon%20Update New%20external%20EVEMon%20Update%20written%20in%20Pure%20.NET%202.0%20%28as%20EVEMon%20is%20now%29%20for%20maximum%20compatibility.%0A%20-%20identify%20missing%20dependancies%0A%20-%20download%20updates%0A%20-%20repair%20damaged%20or%20missing%20EVEMon%20data%0A%20-%20clear%20out%20redundant%20files%20in%20%25APPDATA%25%5CEVEMon%0A%20%0AEVEMon.Update.dll%20provides%20shared%20services%2C%20so%20EVEMon%20can%20identify%20if%20an%20data%20or%20program%20update%20is%20available%2C%20then%20close%20and%20launch%20updater.%0A%20%0AEVEMon%20Update%20will%20request%20admin%20privalages%20on%20Windows%207/Vista%20to%20update%20Program%20Files%20and%20Data%20stored%20in%20EVEMon%5CResources Data%20Files Binaries EVEMon%201.3.2 Blueprints%20Datafile Certificates%20Datafile Items%20Datafile Ships%20Datafile Update%2C%20Tools Multi-threaded%20download%20from%20multiple%20sources%3A%0A%20-%20Static.BattleClinic%0A%20-%20EVE%20Files%0A%20-%20Zofu%0A%20-%20Google%20AppEngine*%0A%20-%20AmazonS3*%0A%20-%20Windows%20Azure*%0A%20%0A*%20%7E%240.15/GB top true false top true false Apply%20Updates top true false Downloads%20not%20applied%20untill%20MD5s%20checked Check%20for%20Updates%0Ax%20Automatically%20Apply%0Ax%20Start%20EVEMon%20when%20Applied Cleanup%20AppData View%20Details bottom false true Displays%20a%20dialog%20detailing%20the%20messages%20from%20Update.xml ================================================ FILE: designs/AutoUpdate-UI-UpdateDetails.bmml ================================================ Update%20Details EVEMon%201.3.2%3A%0A%20%0A%21%21%21%20Important%20Notice%20%21%21%21%0A%20%0AContributors%3A%0A%20*%20Alice%0A%20*%20Bob%0A%20*%20Charlie%0A%20%0AMessages%20about%20EVEMon%201.3.2%0A%20%0ABlueprints%20Datafile%20%2825%20May%202010%20-%20Version%202249%29%0AMessage%0A%20%0ACertificates%20Datafile%20%2825%20May%202010%20-%20Version%202249%29%0AMessage true Bold/Larger%20Title Red%20Important%20Notice Text%20is%20in%20a%20RTF%20box%20for%20easy%20formatting. ================================================ FILE: designs/PosMonitor.bmml ================================================ 26 true true true true EVEMon 27 Scetrov%2C%20Vortecs%2C%20Haust%20Vindur 16 Scetrov false 10 Male%20Gallente%20Gallente%0ACorporation%3A%20OcUK%0ABalance%3A%201%2C203%2C482%2C742%20ISK%0A%20 false 10 Inteligence%3A%2024.20%0APerception%2019.80%0ACharisma%3A%2019.80%0AWilpower%3A%2019.80%0AMemory%3A%2030.80 right false 10 Known%20Skills%3A%20221%0ASkills%20at%20Level%20V%3A%20112%0ATotal%20SP%3A%2092%2C704%2C844%0AClone%20Limit%3A%20120%2C000%2C000%0AClone%20Grade%20Tau 0 10 00%3A59%3A59 Skills Queue Market%20Orders selected POSs true 10 Currently%20Training%3A%0A237%20SP/Hour false 10 Projectile%20Weapon%20Rigging%20IV%0A2%20hours%2C%2013%20minutes%2C%2055%20seconds%0ASat%2022/04/2010%2018%3A42%3A15 Wormhole%20POS%20%28%2322345%29%20/%20J100150%20/%20Online%0APOS%20%2388472%20/%20Elonya%20/%20Online%0APOS%20%2344538%20/%20Piak%20/%20Offline%0APOS%20%2344476%20/%20Piekura%20/%20Offline none true 16 -1 Item%20Required%2C%20Quantity%2C%20Cycles%20Remaining%2C%20Time%20Untill%20%0ACharters%2C%2050%2C%2010%2C%2010h%0ACoolant%2C%201344%2C%20168%2C%207d%0AEnriched%20Uranium%2C%20672%2C%20168%2C%207d%0AHelium%20Isotopes%2C%2075600%2C%20168%2C%207d%0AMechanical%20Parts%2C%20840%2C%20168%2C%207d%0AOxygen%2C%204200%2C%20168%2C%207d%0ARobotics%2C%20168%2C%20168%2C%207d%0AHeavy%20Water%2C%201854%2C%20-%2C%20-%0ALiquid%20Ozone%2C%201245%2C%20-%2C%20- 0 true none 0 AlertIcon%7Csmall 1 1 bottom false none 0 AlertIcon%7Csmall Warning%20icon%20denotes%20a%20POS%20that%20requires%20attention.%20If%20we%20create%20a%20generic%20accordion%20it%20probably%20best%20to%20allow%20%22Owner%20Draw%22%20for%20the%20title%20section. 1 1 top false Individual%20list%20items%20can%20be%20colourd%20to%20show%20thresholds%20%28Red%20%3D%20%3C1d%2C%20Yello%20%3D%201-3%20days%2C%20Green%20%3D%204-7%20days%29%20 right Accordion%20allows%20the%20display%20of%20essential%20information%20about%20the%20POS%20What%2C%20Where%20and%20Status%20along%20with%20a%20notification%20icon.%20Expanding%20one%20will%20collapse%20all%20others%20ensuring%20that%20space%20is%20maximized. 1 1 top false Variable%20fuels%20would%20show%20a%20hyphen%20when%20PG/CPU%20not%20set. 1 -1 top false Right%20click%20menu%20on%20title%20bar%20allows%20user%20to%20access%20a%20configuration%20dialog%20box%20to%20set%20a%20Custom%20Name%2C%20PG%20and%20CPU%20usage. false false bottom false false 1 1 top false true Single%20click%20a%20heading%20and%20it%20will%20expand%20one%20heading%20and%20collapse%20all%20others%2C%20clicking%20an%20expanded%20heading%20will%20not%20have%20any%20effect. ================================================ FILE: src/EVEMon/APIErrorHandling/APIErrorWindow.Designer.cs ================================================ namespace EVEMon.ApiErrorHandling { partial class ApiErrorWindow { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ApiErrorWindow)); this.ErrorLabel = new System.Windows.Forms.Label(); this.IconPictureBox = new System.Windows.Forms.PictureBox(); this.MainTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); this.CopyToClipboardLinkLabel = new System.Windows.Forms.LinkLabel(); this.DetailsPanel = new System.Windows.Forms.Panel(); this.DetailsTextBox = new System.Windows.Forms.TextBox(); this.TroubleshooterPanel = new System.Windows.Forms.Panel(); ((System.ComponentModel.ISupportInitialize)(this.IconPictureBox)).BeginInit(); this.MainTableLayoutPanel.SuspendLayout(); this.DetailsPanel.SuspendLayout(); this.SuspendLayout(); // // ErrorLabel // this.ErrorLabel.AutoSize = true; this.ErrorLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.ErrorLabel.Location = new System.Drawing.Point(53, 10); this.ErrorLabel.Name = "ErrorLabel"; this.ErrorLabel.Size = new System.Drawing.Size(521, 40); this.ErrorLabel.TabIndex = 1; this.ErrorLabel.Text = "Error details."; // // IconPictureBox // this.IconPictureBox.Dock = System.Windows.Forms.DockStyle.Fill; this.IconPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("IconPictureBox.Image"))); this.IconPictureBox.Location = new System.Drawing.Point(13, 13); this.IconPictureBox.Name = "IconPictureBox"; this.IconPictureBox.Size = new System.Drawing.Size(34, 34); this.IconPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; this.IconPictureBox.TabIndex = 0; this.IconPictureBox.TabStop = false; // // MainTableLayoutPanel // this.MainTableLayoutPanel.AutoSize = true; this.MainTableLayoutPanel.ColumnCount = 2; this.MainTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 40F)); this.MainTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); this.MainTableLayoutPanel.Controls.Add(this.ErrorLabel, 1, 0); this.MainTableLayoutPanel.Controls.Add(this.IconPictureBox, 0, 0); this.MainTableLayoutPanel.Controls.Add(this.CopyToClipboardLinkLabel, 1, 1); this.MainTableLayoutPanel.Controls.Add(this.DetailsPanel, 0, 2); this.MainTableLayoutPanel.Controls.Add(this.TroubleshooterPanel, 0, 3); this.MainTableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; this.MainTableLayoutPanel.Location = new System.Drawing.Point(0, 0); this.MainTableLayoutPanel.Name = "MainTableLayoutPanel"; this.MainTableLayoutPanel.Padding = new System.Windows.Forms.Padding(10, 10, 10, 0); this.MainTableLayoutPanel.RowCount = 4; this.MainTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 40F)); this.MainTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.MainTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); this.MainTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.MainTableLayoutPanel.Size = new System.Drawing.Size(587, 466); this.MainTableLayoutPanel.TabIndex = 3; // // CopyToClipboardLinkLabel // this.CopyToClipboardLinkLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.CopyToClipboardLinkLabel.AutoSize = true; this.CopyToClipboardLinkLabel.Location = new System.Drawing.Point(487, 50); this.CopyToClipboardLinkLabel.Margin = new System.Windows.Forms.Padding(0); this.CopyToClipboardLinkLabel.Name = "CopyToClipboardLinkLabel"; this.CopyToClipboardLinkLabel.Padding = new System.Windows.Forms.Padding(0, 5, 0, 5); this.CopyToClipboardLinkLabel.Size = new System.Drawing.Size(90, 23); this.CopyToClipboardLinkLabel.TabIndex = 4; this.CopyToClipboardLinkLabel.TabStop = true; this.CopyToClipboardLinkLabel.Text = "Copy to Clipboard"; this.CopyToClipboardLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.CopyToClipboardLinkLabel_LinkClicked); // // DetailsPanel // this.DetailsPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.DetailsPanel.BackColor = System.Drawing.SystemColors.Window; this.DetailsPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.MainTableLayoutPanel.SetColumnSpan(this.DetailsPanel, 2); this.DetailsPanel.Controls.Add(this.DetailsTextBox); this.DetailsPanel.Location = new System.Drawing.Point(10, 73); this.DetailsPanel.Margin = new System.Windows.Forms.Padding(0, 0, 0, 10); this.DetailsPanel.Name = "DetailsPanel"; this.DetailsPanel.Padding = new System.Windows.Forms.Padding(10); this.DetailsPanel.Size = new System.Drawing.Size(567, 371); this.DetailsPanel.TabIndex = 2; // // DetailsTextBox // this.DetailsTextBox.BackColor = System.Drawing.SystemColors.Window; this.DetailsTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None; this.DetailsTextBox.Dock = System.Windows.Forms.DockStyle.Fill; this.DetailsTextBox.Location = new System.Drawing.Point(10, 10); this.DetailsTextBox.Multiline = true; this.DetailsTextBox.Name = "DetailsTextBox"; this.DetailsTextBox.ReadOnly = true; this.DetailsTextBox.Size = new System.Drawing.Size(545, 349); this.DetailsTextBox.TabIndex = 3; this.DetailsTextBox.Text = "No error details are available."; // // TroubleshooterPanel // this.TroubleshooterPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.TroubleshooterPanel.AutoSize = true; this.TroubleshooterPanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.TroubleshooterPanel.BackColor = System.Drawing.SystemColors.InactiveCaption; this.TroubleshooterPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.MainTableLayoutPanel.SetColumnSpan(this.TroubleshooterPanel, 2); this.TroubleshooterPanel.ForeColor = System.Drawing.SystemColors.ControlText; this.TroubleshooterPanel.Location = new System.Drawing.Point(10, 454); this.TroubleshooterPanel.Margin = new System.Windows.Forms.Padding(0, 0, 0, 10); this.TroubleshooterPanel.Name = "TroubleshooterPanel"; this.TroubleshooterPanel.Size = new System.Drawing.Size(567, 2); this.TroubleshooterPanel.TabIndex = 2; this.TroubleshooterPanel.Visible = false; // // ApiErrorWindow // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.SystemColors.Window; this.ClientSize = new System.Drawing.Size(587, 466); this.Controls.Add(this.MainTableLayoutPanel); this.MaximizeBox = false; this.MinimizeBox = false; this.MinimumSize = new System.Drawing.Size(500, 500); this.Name = "ApiErrorWindow"; this.Text = "API Error Details"; ((System.ComponentModel.ISupportInitialize)(this.IconPictureBox)).EndInit(); this.MainTableLayoutPanel.ResumeLayout(false); this.MainTableLayoutPanel.PerformLayout(); this.DetailsPanel.ResumeLayout(false); this.DetailsPanel.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.Label ErrorLabel; private System.Windows.Forms.PictureBox IconPictureBox; private System.Windows.Forms.TableLayoutPanel MainTableLayoutPanel; private System.Windows.Forms.TextBox DetailsTextBox; private System.Windows.Forms.Panel TroubleshooterPanel; private System.Windows.Forms.LinkLabel CopyToClipboardLinkLabel; private System.Windows.Forms.Panel DetailsPanel; } } ================================================ FILE: src/EVEMon/APIErrorHandling/APIErrorWindow.cs ================================================ using EVEMon.Common; using EVEMon.Common.Controls; using EVEMon.Common.CustomEventArgs; using EVEMon.Common.Enumerations.CCPAPI; using EVEMon.Common.Helpers; using EVEMon.Common.Net; using EVEMon.Common.Notifications; using EVEMon.Common.Serialization.Eve; using System; using System.Drawing; using System.Runtime.InteropServices; using System.Text; using System.Windows.Forms; namespace EVEMon.ApiErrorHandling { /// /// Displays an error window if appropriate a troubleshooter is displayed to help the user resolve the issue. /// public partial class ApiErrorWindow : EVEMonForm { private readonly HttpTimeoutTroubleshooter m_httpTimeoutTroubleshooter = new HttpTimeoutTroubleshooter(); private APIErrorNotificationEventArgs m_notification; private ApiErrorTroubleshooter m_troubleshooter; private bool m_troubleshooterUsed; /// /// Constructor /// public ApiErrorWindow() { InitializeComponent(); } /// /// Gets or sets the notification for this error. /// internal APIErrorNotificationEventArgs Notification { get { return m_notification; } set { if (value != null) { var exception = value.Result?.Exception; string errorText = GetErrorLabelText(value); m_notification = value; ErrorLabel.Text = errorText; // Several clients are getting TrustFailure for badly configured SSL // certificates, provide better debugging info if (errorText.ToLower().Contains("trustfailure")) DetailsTextBox.Text = Properties.Resources.ErrorTrustFailure; else if (exception != null) DetailsTextBox.Text = exception.ToString(); DisplayTroubleshooter(exception); } } } /// /// Displays the troubleshooter. /// /// The exception. private void DisplayTroubleshooter(Exception exception) { TroubleshooterPanel.Visible = false; m_troubleshooter = GetTroubleshooter(exception); if (m_troubleshooter == null) return; TroubleshooterPanel.Visible = true; TroubleshooterPanel.Controls.Add(m_troubleshooter); m_troubleshooter.ErrorResolved += troubleshooter_ErrorResolved; m_troubleshooter.Dock = DockStyle.Fill; } /// /// Gets the troubleshooter. /// /// The exception. /// A troubleshooter for the error message. private ApiErrorTroubleshooter GetTroubleshooter(Exception exception) { var httpException = exception as HttpWebClientServiceException; return httpException?.Status == HttpWebClientServiceExceptionStatus.Timeout ? m_httpTimeoutTroubleshooter : null; } /// /// Handles the ErrorResolved event when a http timeout is displayed of the troubleshooter control. /// /// The source of the event. /// The instance containing the event data. private void troubleshooter_ErrorResolved(object sender, ApiErrorTroubleshooterEventArgs e) { m_troubleshooterUsed = true; if (e == null) return; if (!e.Resolved) { TroubleshooterPanel.BackColor = Color.DarkSalmon; return; } EveMonClient.Notifications.Invalidate(new NotificationInvalidationEventArgs( m_notification)); PerformAction(e.Action); } /// /// Performs the action. /// /// The action. private void PerformAction(ResolutionAction action) { switch (action) { case ResolutionAction.Close: Close(); break; case ResolutionAction.HideTroubleshooter: TroubleshooterPanel.Hide(); break; case ResolutionAction.None: TroubleshooterPanel.BackColor = Color.PaleGreen; break; default: throw new NotImplementedException(); } } /// /// Gets the error label text. /// /// The value. /// String representing the error. private static string GetErrorLabelText(APIErrorNotificationEventArgs value) { if (value == null) return "No error selected."; return value.ToString() + Environment.NewLine + (value.Result == null ? "No details were provided." : GetErrorLabelTextDetail(value.Result)); } /// /// Gets the error label text detail. /// /// The value. private static string GetErrorLabelTextDetail(IAPIResult result) { switch (result.ErrorType) { case APIErrorType.None: return "No error specified"; case APIErrorType.CCP: return $"CCP Error: {result.ErrorMessage}"; case APIErrorType.Http: return $"HTTP error: {result.ErrorMessage}"; case APIErrorType.Xml: return $"XML error: {result.ErrorMessage}"; case APIErrorType.Json: return $"XSLT error: {result.ErrorMessage}"; default: throw new NotImplementedException(); } } /// /// On closing, disposes of the troubleshooter. /// /// protected override void OnFormClosed(FormClosedEventArgs e) { base.OnFormClosed(e); if (m_troubleshooter != null) { m_troubleshooter.Dispose(); m_troubleshooter = null; } } /// /// Handles the LinkClicked event of the CopyToClipboardLinkLabel control. /// /// The source of the event. /// The instance containing the event data. private void CopyToClipboardLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { StringBuilder builder = new StringBuilder(); builder.Append("EVEMon "); builder.AppendLine(EveMonClient.FileVersionInfo.FileVersion); builder.AppendLine().AppendLine("API Error:"); builder.AppendLine(GetErrorLabelText(Notification)); if (m_troubleshooter != null) { builder.AppendLine(); builder.Append("A troubleshooter was displayed " + (m_troubleshooterUsed ? "and used." : "but not used.")); } try { Clipboard.Clear(); Clipboard.SetText(builder.ToString(), TextDataFormat.Text); } catch (ExternalException ex) { // Occurs when another process is using the clipboard ExceptionHandler.LogException(ex, true); MessageBox.Show(Properties.Resources.ErrorClipboardFailure, "Error copying", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } ================================================ FILE: src/EVEMon/APIErrorHandling/APIErrorWindow.resx ================================================ text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 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 RK5CYII= ================================================ FILE: src/EVEMon/APIErrorHandling/HttpTimeoutTroubleshooter.Designer.cs ================================================ namespace EVEMon.ApiErrorHandling { partial class HttpTimeoutTroubleshooter { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Component Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.MainTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); this.ExplanationLabel = new System.Windows.Forms.Label(); this.TimeoutLabel = new System.Windows.Forms.Label(); this.TimeoutDropDown = new System.Windows.Forms.ComboBox(); this.SetTimeoutButton = new System.Windows.Forms.Button(); this.MainTableLayoutPanel.SuspendLayout(); this.SuspendLayout(); // // MainTableLayoutPanel // this.MainTableLayoutPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.MainTableLayoutPanel.AutoSize = true; this.MainTableLayoutPanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.MainTableLayoutPanel.ColumnCount = 2; this.MainTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 28.57143F)); this.MainTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 71.42857F)); this.MainTableLayoutPanel.Controls.Add(this.ExplanationLabel, 0, 0); this.MainTableLayoutPanel.Controls.Add(this.TimeoutLabel, 0, 1); this.MainTableLayoutPanel.Controls.Add(this.TimeoutDropDown, 1, 1); this.MainTableLayoutPanel.Controls.Add(this.SetTimeoutButton, 1, 2); this.MainTableLayoutPanel.Location = new System.Drawing.Point(0, 0); this.MainTableLayoutPanel.Name = "MainTableLayoutPanel"; this.MainTableLayoutPanel.RowCount = 3; this.MainTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.MainTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.MainTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.MainTableLayoutPanel.Size = new System.Drawing.Size(357, 97); this.MainTableLayoutPanel.TabIndex = 0; // // ExplanationLabel // this.ExplanationLabel.AutoSize = true; this.MainTableLayoutPanel.SetColumnSpan(this.ExplanationLabel, 2); this.ExplanationLabel.Location = new System.Drawing.Point(5, 5); this.ExplanationLabel.Margin = new System.Windows.Forms.Padding(5); this.ExplanationLabel.Name = "ExplanationLabel"; this.ExplanationLabel.Size = new System.Drawing.Size(343, 26); this.ExplanationLabel.TabIndex = 0; this.ExplanationLabel.Text = "The server EVEMon contacted did not respond in a timely manner, you can extend th" + "e length of time EVEMon waits before giving up:"; // // TimeoutLabel // this.TimeoutLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.TimeoutLabel.AutoSize = true; this.TimeoutLabel.Location = new System.Drawing.Point(49, 41); this.TimeoutLabel.Margin = new System.Windows.Forms.Padding(5); this.TimeoutLabel.Name = "TimeoutLabel"; this.TimeoutLabel.Size = new System.Drawing.Size(48, 13); this.TimeoutLabel.TabIndex = 1; this.TimeoutLabel.Text = "Timeout:"; this.TimeoutLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // TimeoutDropDown // this.TimeoutDropDown.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.TimeoutDropDown.Items.AddRange(new object[] { "10 Seconds (Default)", "15 Seconds", "20 Seconds", "30 Seconds", "40 Seconds", "50 Seconds", "1 Minute"}); this.TimeoutDropDown.Location = new System.Drawing.Point(105, 39); this.TimeoutDropDown.Name = "TimeoutDropDown"; this.TimeoutDropDown.Size = new System.Drawing.Size(140, 21); this.TimeoutDropDown.TabIndex = 2; // // SetTimeoutButton // this.SetTimeoutButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.SetTimeoutButton.Location = new System.Drawing.Point(248, 66); this.SetTimeoutButton.Name = "SetTimeoutButton"; this.SetTimeoutButton.Size = new System.Drawing.Size(106, 28); this.SetTimeoutButton.TabIndex = 3; this.SetTimeoutButton.Text = "Set Timeout"; this.SetTimeoutButton.UseVisualStyleBackColor = true; this.SetTimeoutButton.Click += new System.EventHandler(this.SetTimeoutButton_Click); // // HttpTimeoutTroubleshooter // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoSize = true; this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.Controls.Add(this.MainTableLayoutPanel); this.Name = "HttpTimeoutTroubleshooter"; this.Size = new System.Drawing.Size(358, 100); this.MainTableLayoutPanel.ResumeLayout(false); this.MainTableLayoutPanel.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.TableLayoutPanel MainTableLayoutPanel; private System.Windows.Forms.Label ExplanationLabel; private System.Windows.Forms.Label TimeoutLabel; private System.Windows.Forms.ComboBox TimeoutDropDown; private System.Windows.Forms.Button SetTimeoutButton; } } ================================================ FILE: src/EVEMon/APIErrorHandling/HttpTimeoutTroubleshooter.cs ================================================ using System; using System.Collections.Generic; using System.Linq; using System.Text; using EVEMon.Common; using EVEMon.Common.Controls; using EVEMon.Common.SettingsObjects; using EVEMon.Common.Extensions; namespace EVEMon.ApiErrorHandling { /// /// Http Timeout Troubleshooter displays when a HTTP Timeout has occurred. /// public partial class HttpTimeoutTroubleshooter : ApiErrorTroubleshooter { /// /// Initializes a new instance of the class. /// public HttpTimeoutTroubleshooter() { InitializeComponent(); List options = new List(); UpdateSettings updateSettings = new UpdateSettings(); // Lets add 10 - 60 to the list for (int i = 10; i <= 60; i += 10) { string text = string.Empty; if (i == updateSettings.HttpTimeout) text = "Default"; if (i == Settings.Updates.HttpTimeout) text = "Current"; options.Add(new TimeoutOption(i, text)); } // If the current is set to something odd we add it and sort by Seconds if (options.All(x => x.Seconds != Settings.Updates.HttpTimeout)) options.Add(new TimeoutOption(Settings.Updates.HttpTimeout, "Current")); // If the default is not in the list we add it if (options.All(x => x.Seconds != updateSettings.HttpTimeout)) options.Add(new TimeoutOption(updateSettings.HttpTimeout, "Default")); options.Sort((a, b) => a.Seconds.CompareTo(b.Seconds)); // Databind TimeoutDropDown.DataSource = options; TimeoutDropDown.DisplayMember = "Label"; TimeoutDropDown.ValueMember = "Seconds"; } /// /// Handles the Click event of the SetTimeoutButton control. /// /// The source of the event. /// The instance containing the event data. private void SetTimeoutButton_Click(object sender, EventArgs e) { Settings.Updates.HttpTimeout = (int)TimeoutDropDown.SelectedValue; OnErrorResolved(ResolutionAction.Close); } /// /// Private class to store and format suitable time spans. /// private class TimeoutOption { private readonly string m_text; /// /// Initializes a new instance of the class. /// /// The seconds. /// The text. public TimeoutOption(int seconds, string text) { Seconds = seconds; m_text = text; } /// /// Gets or sets the seconds. /// /// The seconds. public int Seconds { get; } /// /// Gets the label. /// /// The label. public string Label { get { StringBuilder builder = new StringBuilder(); if (Seconds % 60 == 0) { int minutes = Seconds / 60; builder.Append($"{minutes} Minute{(minutes.S())}"); } else builder.Append($"{Seconds} Seconds"); if (!string.IsNullOrEmpty(m_text)) builder.Append($" ({m_text})"); return builder.ToString(); } } } } } ================================================ FILE: src/EVEMon/APIErrorHandling/HttpTimeoutTroubleshooter.resx ================================================ text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ================================================ FILE: src/EVEMon/About/AboutWindow.Designer.cs ================================================ namespace EVEMon.About { partial class AboutWindow { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutWindow)); this.LegalLayoutPanel = new System.Windows.Forms.FlowLayoutPanel(); this.GplLabel = new System.Windows.Forms.Label(); this.HeaderLayoutPanel = new System.Windows.Forms.FlowLayoutPanel(); this.LogoPictureBox = new System.Windows.Forms.PictureBox(); this.VerCopyLayoutPanel = new System.Windows.Forms.FlowLayoutPanel(); this.EVEMonLabel = new System.Windows.Forms.Label(); this.VersionLabel = new System.Windows.Forms.Label(); this.CopyrightLabel = new System.Windows.Forms.Label(); this.DevelopmentTeamLabel = new System.Windows.Forms.Label(); this.HomePageLinkLabel = new System.Windows.Forms.LinkLabel(); this.BodyLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); this.leftPanel = new System.Windows.Forms.FlowLayoutPanel(); this.AuthorsLayoutPanel = new System.Windows.Forms.FlowLayoutPanel(); this.CreatedByLabel = new System.Windows.Forms.Label(); this.ContinuedByLabel = new System.Windows.Forms.Label(); this.DonationsLabel = new System.Windows.Forms.Label(); this.DevContribLabel = new System.Windows.Forms.Label(); this.devsList = new System.Windows.Forms.ListView(); this.CredentialsLabels = new System.Windows.Forms.Label(); this.credentialsFlowLayoutPanel = new System.Windows.Forms.FlowLayoutPanel(); this.ccpGamesLinkLabel = new System.Windows.Forms.LinkLabel(); this.ccpDocsLinkLabel = new System.Windows.Forms.LinkLabel(); this.bitbucketLinkLabel = new System.Windows.Forms.LinkLabel(); this.gitHubLinkLabel = new System.Windows.Forms.LinkLabel(); this.eveMarketerLinkLabel = new System.Windows.Forms.LinkLabel(); this.eveMarketDataLinkLabel = new System.Windows.Forms.LinkLabel(); this.googleApisLinkLabel = new System.Windows.Forms.LinkLabel(); this.dropboxSDKLinkLabel = new System.Windows.Forms.LinkLabel(); this.oneDriveSDKLinkLabel = new System.Windows.Forms.LinkLabel(); this.lironLeviLinkLabel = new System.Windows.Forms.LinkLabel(); this.battleClinicLinkLabel = new System.Windows.Forms.LinkLabel(); this.stackOverflowLinkLabel = new System.Windows.Forms.LinkLabel(); this.forgotLabel = new System.Windows.Forms.Label(); this.LegalLayoutPanel.SuspendLayout(); this.HeaderLayoutPanel.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.LogoPictureBox)).BeginInit(); this.VerCopyLayoutPanel.SuspendLayout(); this.BodyLayoutPanel.SuspendLayout(); this.leftPanel.SuspendLayout(); this.AuthorsLayoutPanel.SuspendLayout(); this.credentialsFlowLayoutPanel.SuspendLayout(); this.SuspendLayout(); // // LegalLayoutPanel // this.LegalLayoutPanel.AutoSize = true; this.LegalLayoutPanel.Controls.Add(this.GplLabel); this.LegalLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; this.LegalLayoutPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; this.LegalLayoutPanel.Location = new System.Drawing.Point(0, 100); this.LegalLayoutPanel.Margin = new System.Windows.Forms.Padding(0); this.LegalLayoutPanel.Name = "LegalLayoutPanel"; this.LegalLayoutPanel.Size = new System.Drawing.Size(307, 221); this.LegalLayoutPanel.TabIndex = 10; // // GplLabel // this.GplLabel.AutoSize = true; this.GplLabel.Location = new System.Drawing.Point(3, 9); this.GplLabel.Margin = new System.Windows.Forms.Padding(3, 9, 3, 30); this.GplLabel.Name = "GplLabel"; this.GplLabel.Size = new System.Drawing.Size(301, 182); this.GplLabel.TabIndex = 6; this.GplLabel.Text = resources.GetString("GplLabel.Text"); // // HeaderLayoutPanel // this.HeaderLayoutPanel.AutoSize = true; this.HeaderLayoutPanel.Controls.Add(this.LogoPictureBox); this.HeaderLayoutPanel.Controls.Add(this.VerCopyLayoutPanel); this.HeaderLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; this.HeaderLayoutPanel.Location = new System.Drawing.Point(0, 0); this.HeaderLayoutPanel.Margin = new System.Windows.Forms.Padding(0); this.HeaderLayoutPanel.Name = "HeaderLayoutPanel"; this.HeaderLayoutPanel.Size = new System.Drawing.Size(251, 100); this.HeaderLayoutPanel.TabIndex = 0; this.HeaderLayoutPanel.WrapContents = false; // // LogoPictureBox // this.LogoPictureBox.Dock = System.Windows.Forms.DockStyle.Top; this.LogoPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("LogoPictureBox.Image"))); this.LogoPictureBox.Location = new System.Drawing.Point(0, 0); this.LogoPictureBox.Margin = new System.Windows.Forms.Padding(0); this.LogoPictureBox.Name = "LogoPictureBox"; this.LogoPictureBox.Size = new System.Drawing.Size(100, 100); this.LogoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.LogoPictureBox.TabIndex = 7; this.LogoPictureBox.TabStop = false; // // VerCopyLayoutPanel // this.VerCopyLayoutPanel.AutoSize = true; this.VerCopyLayoutPanel.Controls.Add(this.EVEMonLabel); this.VerCopyLayoutPanel.Controls.Add(this.VersionLabel); this.VerCopyLayoutPanel.Controls.Add(this.CopyrightLabel); this.VerCopyLayoutPanel.Controls.Add(this.DevelopmentTeamLabel); this.VerCopyLayoutPanel.Controls.Add(this.HomePageLinkLabel); this.VerCopyLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; this.VerCopyLayoutPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; this.VerCopyLayoutPanel.Location = new System.Drawing.Point(100, 0); this.VerCopyLayoutPanel.Margin = new System.Windows.Forms.Padding(0); this.VerCopyLayoutPanel.Name = "VerCopyLayoutPanel"; this.VerCopyLayoutPanel.Padding = new System.Windows.Forms.Padding(0, 17, 0, 0); this.VerCopyLayoutPanel.Size = new System.Drawing.Size(151, 100); this.VerCopyLayoutPanel.TabIndex = 8; this.VerCopyLayoutPanel.WrapContents = false; // // EVEMonLabel // this.EVEMonLabel.AutoSize = true; this.EVEMonLabel.Location = new System.Drawing.Point(3, 17); this.EVEMonLabel.Name = "EVEMonLabel"; this.EVEMonLabel.Size = new System.Drawing.Size(49, 13); this.EVEMonLabel.TabIndex = 0; this.EVEMonLabel.Text = "EVEMon"; // // VersionLabel // this.VersionLabel.AutoSize = true; this.VersionLabel.Location = new System.Drawing.Point(3, 30); this.VersionLabel.Name = "VersionLabel"; this.VersionLabel.Size = new System.Drawing.Size(59, 13); this.VersionLabel.TabIndex = 1; this.VersionLabel.Text = "Version {0}"; // // CopyrightLabel // this.CopyrightLabel.AutoSize = true; this.CopyrightLabel.Location = new System.Drawing.Point(3, 43); this.CopyrightLabel.Name = "CopyrightLabel"; this.CopyrightLabel.Size = new System.Drawing.Size(107, 13); this.CopyrightLabel.TabIndex = 5; this.CopyrightLabel.Text = "Copyright 2006-{0}"; // // DevelopmentTeamLabel // this.DevelopmentTeamLabel.AutoSize = true; this.DevelopmentTeamLabel.Location = new System.Drawing.Point(3, 56); this.DevelopmentTeamLabel.Name = "DevelopmentTeamLabel"; this.DevelopmentTeamLabel.Size = new System.Drawing.Size(145, 13); this.DevelopmentTeamLabel.TabIndex = 6; this.DevelopmentTeamLabel.Text = "EVEMon Development Team"; // // HomePageLinkLabel // this.HomePageLinkLabel.AutoSize = true; this.HomePageLinkLabel.Location = new System.Drawing.Point(3, 69); this.HomePageLinkLabel.Name = "HomePageLinkLabel"; this.HomePageLinkLabel.Size = new System.Drawing.Size(38, 13); this.HomePageLinkLabel.TabIndex = 0; this.HomePageLinkLabel.TabStop = true; this.HomePageLinkLabel.Text = "http://"; this.HomePageLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.HomePageLinkLabel_LinkClicked); // // BodyLayoutPanel // this.BodyLayoutPanel.AutoSize = true; this.BodyLayoutPanel.ColumnCount = 3; this.BodyLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 53.59629F)); this.BodyLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); this.BodyLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 46.40371F)); this.BodyLayoutPanel.Controls.Add(this.leftPanel, 0, 0); this.BodyLayoutPanel.Controls.Add(this.DevContribLabel, 1, 0); this.BodyLayoutPanel.Controls.Add(this.devsList, 1, 1); this.BodyLayoutPanel.Controls.Add(this.CredentialsLabels, 2, 0); this.BodyLayoutPanel.Controls.Add(this.credentialsFlowLayoutPanel, 2, 1); this.BodyLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; this.BodyLayoutPanel.Location = new System.Drawing.Point(9, 9); this.BodyLayoutPanel.Name = "BodyLayoutPanel"; this.BodyLayoutPanel.RowCount = 2; this.BodyLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.BodyLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.BodyLayoutPanel.Size = new System.Drawing.Size(779, 403); this.BodyLayoutPanel.TabIndex = 11; // // leftPanel // this.leftPanel.Controls.Add(this.HeaderLayoutPanel); this.leftPanel.Controls.Add(this.LegalLayoutPanel); this.leftPanel.Controls.Add(this.AuthorsLayoutPanel); this.leftPanel.Dock = System.Windows.Forms.DockStyle.Fill; this.leftPanel.Location = new System.Drawing.Point(3, 3); this.leftPanel.Name = "leftPanel"; this.BodyLayoutPanel.SetRowSpan(this.leftPanel, 2); this.leftPanel.Size = new System.Drawing.Size(313, 397); this.leftPanel.TabIndex = 7; // // AuthorsLayoutPanel // this.AuthorsLayoutPanel.AutoSize = true; this.AuthorsLayoutPanel.Controls.Add(this.CreatedByLabel); this.AuthorsLayoutPanel.Controls.Add(this.ContinuedByLabel); this.AuthorsLayoutPanel.Controls.Add(this.DonationsLabel); this.AuthorsLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; this.AuthorsLayoutPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; this.AuthorsLayoutPanel.Location = new System.Drawing.Point(0, 321); this.AuthorsLayoutPanel.Margin = new System.Windows.Forms.Padding(0); this.AuthorsLayoutPanel.Name = "AuthorsLayoutPanel"; this.AuthorsLayoutPanel.Size = new System.Drawing.Size(285, 39); this.AuthorsLayoutPanel.TabIndex = 0; this.AuthorsLayoutPanel.WrapContents = false; // // CreatedByLabel // this.CreatedByLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.CreatedByLabel.AutoSize = true; this.CreatedByLabel.Location = new System.Drawing.Point(3, 0); this.CreatedByLabel.Name = "CreatedByLabel"; this.CreatedByLabel.Size = new System.Drawing.Size(279, 13); this.CreatedByLabel.TabIndex = 2; this.CreatedByLabel.Text = "Originally created by Timothy \'Six Anari\' Fries of Goonfleet."; // // ContinuedByLabel // this.ContinuedByLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.ContinuedByLabel.AutoSize = true; this.ContinuedByLabel.Location = new System.Drawing.Point(3, 13); this.ContinuedByLabel.Name = "ContinuedByLabel"; this.ContinuedByLabel.Size = new System.Drawing.Size(257, 13); this.ContinuedByLabel.TabIndex = 3; this.ContinuedByLabel.Text = "Continued by the listed \'Developers and contributors\'."; // // DonationsLabel // this.DonationsLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.DonationsLabel.AutoSize = true; this.DonationsLabel.Location = new System.Drawing.Point(3, 26); this.DonationsLabel.Name = "DonationsLabel"; this.DonationsLabel.Size = new System.Drawing.Size(211, 13); this.DonationsLabel.TabIndex = 4; this.DonationsLabel.Text = "Donations of ISK are always appreciated. ;)"; // // DevContribLabel // this.DevContribLabel.AutoSize = true; this.DevContribLabel.Location = new System.Drawing.Point(322, 0); this.DevContribLabel.Name = "DevContribLabel"; this.DevContribLabel.Size = new System.Drawing.Size(140, 13); this.DevContribLabel.TabIndex = 8; this.DevContribLabel.Text = "Developers and contributors"; // // devsList // this.devsList.Dock = System.Windows.Forms.DockStyle.Fill; this.devsList.FullRowSelect = true; this.devsList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; this.devsList.Location = new System.Drawing.Point(322, 16); this.devsList.MultiSelect = false; this.devsList.Name = "devsList"; this.devsList.Size = new System.Drawing.Size(176, 384); this.devsList.TabIndex = 9; this.devsList.UseCompatibleStateImageBehavior = false; this.devsList.View = System.Windows.Forms.View.Details; // // CredentialsLabels // this.CredentialsLabels.AutoSize = true; this.CredentialsLabels.Location = new System.Drawing.Point(504, 0); this.CredentialsLabels.Name = "CredentialsLabels"; this.CredentialsLabels.Size = new System.Drawing.Size(183, 13); this.CredentialsLabels.TabIndex = 10; this.CredentialsLabels.Text = "External contributions and credentials"; // // credentialsFlowLayoutPanel // this.credentialsFlowLayoutPanel.Controls.Add(this.ccpGamesLinkLabel); this.credentialsFlowLayoutPanel.Controls.Add(this.ccpDocsLinkLabel); this.credentialsFlowLayoutPanel.Controls.Add(this.bitbucketLinkLabel); this.credentialsFlowLayoutPanel.Controls.Add(this.gitHubLinkLabel); this.credentialsFlowLayoutPanel.Controls.Add(this.eveMarketerLinkLabel); this.credentialsFlowLayoutPanel.Controls.Add(this.eveMarketDataLinkLabel); this.credentialsFlowLayoutPanel.Controls.Add(this.googleApisLinkLabel); this.credentialsFlowLayoutPanel.Controls.Add(this.dropboxSDKLinkLabel); this.credentialsFlowLayoutPanel.Controls.Add(this.oneDriveSDKLinkLabel); this.credentialsFlowLayoutPanel.Controls.Add(this.lironLeviLinkLabel); this.credentialsFlowLayoutPanel.Controls.Add(this.battleClinicLinkLabel); this.credentialsFlowLayoutPanel.Controls.Add(this.stackOverflowLinkLabel); this.credentialsFlowLayoutPanel.Controls.Add(this.forgotLabel); this.credentialsFlowLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; this.credentialsFlowLayoutPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; this.credentialsFlowLayoutPanel.Location = new System.Drawing.Point(504, 16); this.credentialsFlowLayoutPanel.Name = "credentialsFlowLayoutPanel"; this.credentialsFlowLayoutPanel.Size = new System.Drawing.Size(272, 384); this.credentialsFlowLayoutPanel.TabIndex = 11; // // ccpGamesLinkLabel // this.ccpGamesLinkLabel.AutoSize = true; this.ccpGamesLinkLabel.LinkArea = new System.Windows.Forms.LinkArea(0, 0); this.ccpGamesLinkLabel.Location = new System.Drawing.Point(0, 0); this.ccpGamesLinkLabel.Margin = new System.Windows.Forms.Padding(0); this.ccpGamesLinkLabel.Name = "ccpGamesLinkLabel"; this.ccpGamesLinkLabel.Padding = new System.Windows.Forms.Padding(5, 3, 0, 3); this.ccpGamesLinkLabel.Size = new System.Drawing.Size(235, 32); this.ccpGamesLinkLabel.TabIndex = 7; this.ccpGamesLinkLabel.Text = "CCP Games for their efforts towards community developers."; this.ccpGamesLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkLabel_LinkClicked); // // ccpDocsLinkLabel // this.ccpDocsLinkLabel.AutoSize = true; this.ccpDocsLinkLabel.LinkArea = new System.Windows.Forms.LinkArea(0, 0); this.ccpDocsLinkLabel.Location = new System.Drawing.Point(0, 32); this.ccpDocsLinkLabel.Margin = new System.Windows.Forms.Padding(0); this.ccpDocsLinkLabel.Name = "ccpDocsLinkLabel"; this.ccpDocsLinkLabel.Padding = new System.Windows.Forms.Padding(5, 3, 0, 3); this.ccpDocsLinkLabel.Size = new System.Drawing.Size(217, 19); this.ccpDocsLinkLabel.TabIndex = 8; this.ccpDocsLinkLabel.Text = "CCP 3rd party docs for their documentation."; this.ccpDocsLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkLabel_LinkClicked); // // bitbucketLinkLabel // this.bitbucketLinkLabel.AutoSize = true; this.bitbucketLinkLabel.LinkArea = new System.Windows.Forms.LinkArea(0, 0); this.bitbucketLinkLabel.Location = new System.Drawing.Point(0, 51); this.bitbucketLinkLabel.Margin = new System.Windows.Forms.Padding(0); this.bitbucketLinkLabel.Name = "bitbucketLinkLabel"; this.bitbucketLinkLabel.Padding = new System.Windows.Forms.Padding(5, 3, 0, 3); this.bitbucketLinkLabel.Size = new System.Drawing.Size(165, 19); this.bitbucketLinkLabel.TabIndex = 21; this.bitbucketLinkLabel.Text = "Bitbucket for hosting the project."; this.bitbucketLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkLabel_LinkClicked); // // gitHubLinkLabel // this.gitHubLinkLabel.AutoSize = true; this.gitHubLinkLabel.LinkArea = new System.Windows.Forms.LinkArea(0, 0); this.gitHubLinkLabel.Location = new System.Drawing.Point(0, 70); this.gitHubLinkLabel.Margin = new System.Windows.Forms.Padding(0); this.gitHubLinkLabel.Name = "gitHubLinkLabel"; this.gitHubLinkLabel.Padding = new System.Windows.Forms.Padding(5, 3, 0, 3); this.gitHubLinkLabel.Size = new System.Drawing.Size(238, 32); this.gitHubLinkLabel.TabIndex = 22; this.gitHubLinkLabel.Text = "GitHub for hosting the project and providing our representation site."; this.gitHubLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkLabel_LinkClicked); // // eveMarketerLinkLabel // this.eveMarketerLinkLabel.AutoSize = true; this.eveMarketerLinkLabel.LinkArea = new System.Windows.Forms.LinkArea(0, 0); this.eveMarketerLinkLabel.Location = new System.Drawing.Point(0, 102); this.eveMarketerLinkLabel.Margin = new System.Windows.Forms.Padding(0); this.eveMarketerLinkLabel.Name = "eveMarketerLinkLabel"; this.eveMarketerLinkLabel.Padding = new System.Windows.Forms.Padding(5, 3, 0, 3); this.eveMarketerLinkLabel.Size = new System.Drawing.Size(216, 19); this.eveMarketerLinkLabel.TabIndex = 12; this.eveMarketerLinkLabel.Text = "EVEMarketer for their market data and API."; this.eveMarketerLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkLabel_LinkClicked); // // eveMarketDataLinkLabel // this.eveMarketDataLinkLabel.AutoSize = true; this.eveMarketDataLinkLabel.LinkArea = new System.Windows.Forms.LinkArea(0, 0); this.eveMarketDataLinkLabel.Location = new System.Drawing.Point(0, 121); this.eveMarketDataLinkLabel.Margin = new System.Windows.Forms.Padding(0); this.eveMarketDataLinkLabel.Name = "eveMarketDataLinkLabel"; this.eveMarketDataLinkLabel.Padding = new System.Windows.Forms.Padding(5, 3, 0, 3); this.eveMarketDataLinkLabel.Size = new System.Drawing.Size(233, 19); this.eveMarketDataLinkLabel.TabIndex = 19; this.eveMarketDataLinkLabel.Text = "EVE-MarketData for their market data and API."; this.eveMarketDataLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkLabel_LinkClicked); // // googleApisLinkLabel // this.googleApisLinkLabel.AutoSize = true; this.googleApisLinkLabel.LinkArea = new System.Windows.Forms.LinkArea(0, 0); this.googleApisLinkLabel.Location = new System.Drawing.Point(0, 140); this.googleApisLinkLabel.Margin = new System.Windows.Forms.Padding(0); this.googleApisLinkLabel.Name = "googleApisLinkLabel"; this.googleApisLinkLabel.Padding = new System.Windows.Forms.Padding(5, 3, 0, 3); this.googleApisLinkLabel.Size = new System.Drawing.Size(132, 19); this.googleApisLinkLabel.TabIndex = 10; this.googleApisLinkLabel.Text = "Google for their API SDK."; this.googleApisLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkLabel_LinkClicked); // // dropboxSDKLinkLabel // this.dropboxSDKLinkLabel.AutoSize = true; this.dropboxSDKLinkLabel.LinkArea = new System.Windows.Forms.LinkArea(0, 0); this.dropboxSDKLinkLabel.Location = new System.Drawing.Point(0, 159); this.dropboxSDKLinkLabel.Margin = new System.Windows.Forms.Padding(0); this.dropboxSDKLinkLabel.Name = "dropboxSDKLinkLabel"; this.dropboxSDKLinkLabel.Padding = new System.Windows.Forms.Padding(5, 3, 0, 3); this.dropboxSDKLinkLabel.Size = new System.Drawing.Size(138, 19); this.dropboxSDKLinkLabel.TabIndex = 17; this.dropboxSDKLinkLabel.Text = "Dropbox for their API SDK."; this.dropboxSDKLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkLabel_LinkClicked); // // oneDriveSDKLinkLabel // this.oneDriveSDKLinkLabel.AutoSize = true; this.oneDriveSDKLinkLabel.LinkArea = new System.Windows.Forms.LinkArea(0, 0); this.oneDriveSDKLinkLabel.Location = new System.Drawing.Point(0, 178); this.oneDriveSDKLinkLabel.Margin = new System.Windows.Forms.Padding(0); this.oneDriveSDKLinkLabel.Name = "oneDriveSDKLinkLabel"; this.oneDriveSDKLinkLabel.Padding = new System.Windows.Forms.Padding(5, 3, 0, 3); this.oneDriveSDKLinkLabel.Size = new System.Drawing.Size(189, 19); this.oneDriveSDKLinkLabel.TabIndex = 18; this.oneDriveSDKLinkLabel.Text = "Microsoft OneDrive for their API SDK."; this.oneDriveSDKLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkLabel_LinkClicked); // // lironLeviLinkLabel // this.lironLeviLinkLabel.AutoSize = true; this.lironLeviLinkLabel.LinkArea = new System.Windows.Forms.LinkArea(0, 0); this.lironLeviLinkLabel.Location = new System.Drawing.Point(0, 197); this.lironLeviLinkLabel.Margin = new System.Windows.Forms.Padding(0); this.lironLeviLinkLabel.Name = "lironLeviLinkLabel"; this.lironLeviLinkLabel.Padding = new System.Windows.Forms.Padding(5, 3, 0, 3); this.lironLeviLinkLabel.Size = new System.Drawing.Size(141, 19); this.lironLeviLinkLabel.TabIndex = 15; this.lironLeviLinkLabel.Text = "Liron Levi for his MultiPanel"; this.lironLeviLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkLabel_LinkClicked); // // battleClinicLinkLabel // this.battleClinicLinkLabel.AutoSize = true; this.battleClinicLinkLabel.LinkArea = new System.Windows.Forms.LinkArea(0, 0); this.battleClinicLinkLabel.Location = new System.Drawing.Point(0, 216); this.battleClinicLinkLabel.Margin = new System.Windows.Forms.Padding(0); this.battleClinicLinkLabel.Name = "battleClinicLinkLabel"; this.battleClinicLinkLabel.Padding = new System.Windows.Forms.Padding(5, 3, 0, 3); this.battleClinicLinkLabel.Size = new System.Drawing.Size(270, 32); this.battleClinicLinkLabel.TabIndex = 20; this.battleClinicLinkLabel.Text = "BattleClinic, especially SghnDubh and MrCue, and the rest of the staff for the de" + "cade long support."; // // stackOverflowLinkLabel // this.stackOverflowLinkLabel.AutoSize = true; this.stackOverflowLinkLabel.LinkArea = new System.Windows.Forms.LinkArea(0, 0); this.stackOverflowLinkLabel.Location = new System.Drawing.Point(0, 248); this.stackOverflowLinkLabel.Margin = new System.Windows.Forms.Padding(0); this.stackOverflowLinkLabel.Name = "stackOverflowLinkLabel"; this.stackOverflowLinkLabel.Padding = new System.Windows.Forms.Padding(5, 3, 0, 3); this.stackOverflowLinkLabel.Size = new System.Drawing.Size(264, 32); this.stackOverflowLinkLabel.TabIndex = 16; this.stackOverflowLinkLabel.Text = "The users of Stack Overflow who contributed advice and code snippits."; this.stackOverflowLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkLabel_LinkClicked); // // forgotLabel // this.forgotLabel.AutoSize = true; this.forgotLabel.Location = new System.Drawing.Point(0, 280); this.forgotLabel.Margin = new System.Windows.Forms.Padding(0); this.forgotLabel.Name = "forgotLabel"; this.forgotLabel.Padding = new System.Windows.Forms.Padding(5, 3, 0, 3); this.forgotLabel.Size = new System.Drawing.Size(266, 58); this.forgotLabel.TabIndex = 14; this.forgotLabel.Text = "And also the ones we forgot, the ones who lurk in the shadows of the forums to he" + "lp us deal with users, all the people who reported bugs to the forums and the on" + "es who dared to test our betas."; // // AboutWindow // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoSize = true; this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.BackColor = System.Drawing.SystemColors.Window; this.ClientSize = new System.Drawing.Size(797, 421); this.Controls.Add(this.BodyLayoutPanel); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "AboutWindow"; this.Padding = new System.Windows.Forms.Padding(9); this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "About EVEMon"; this.LegalLayoutPanel.ResumeLayout(false); this.LegalLayoutPanel.PerformLayout(); this.HeaderLayoutPanel.ResumeLayout(false); this.HeaderLayoutPanel.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.LogoPictureBox)).EndInit(); this.VerCopyLayoutPanel.ResumeLayout(false); this.VerCopyLayoutPanel.PerformLayout(); this.BodyLayoutPanel.ResumeLayout(false); this.BodyLayoutPanel.PerformLayout(); this.leftPanel.ResumeLayout(false); this.leftPanel.PerformLayout(); this.AuthorsLayoutPanel.ResumeLayout(false); this.AuthorsLayoutPanel.PerformLayout(); this.credentialsFlowLayoutPanel.ResumeLayout(false); this.credentialsFlowLayoutPanel.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.FlowLayoutPanel LegalLayoutPanel; private System.Windows.Forms.FlowLayoutPanel HeaderLayoutPanel; private System.Windows.Forms.PictureBox LogoPictureBox; private System.Windows.Forms.FlowLayoutPanel VerCopyLayoutPanel; private System.Windows.Forms.Label EVEMonLabel; private System.Windows.Forms.Label VersionLabel; private System.Windows.Forms.Label CopyrightLabel; private System.Windows.Forms.LinkLabel HomePageLinkLabel; private System.Windows.Forms.Label GplLabel; private System.Windows.Forms.TableLayoutPanel BodyLayoutPanel; private System.Windows.Forms.FlowLayoutPanel AuthorsLayoutPanel; private System.Windows.Forms.Label CreatedByLabel; private System.Windows.Forms.Label ContinuedByLabel; private System.Windows.Forms.Label DonationsLabel; private System.Windows.Forms.FlowLayoutPanel leftPanel; private System.Windows.Forms.Label DevContribLabel; private System.Windows.Forms.ListView devsList; private System.Windows.Forms.Label CredentialsLabels; private System.Windows.Forms.FlowLayoutPanel credentialsFlowLayoutPanel; private System.Windows.Forms.LinkLabel ccpGamesLinkLabel; private System.Windows.Forms.LinkLabel ccpDocsLinkLabel; private System.Windows.Forms.LinkLabel googleApisLinkLabel; private System.Windows.Forms.LinkLabel eveMarketerLinkLabel; private System.Windows.Forms.Label forgotLabel; private System.Windows.Forms.LinkLabel lironLeviLinkLabel; private System.Windows.Forms.LinkLabel stackOverflowLinkLabel; private System.Windows.Forms.Label DevelopmentTeamLabel; private System.Windows.Forms.LinkLabel dropboxSDKLinkLabel; private System.Windows.Forms.LinkLabel eveMarketDataLinkLabel; private System.Windows.Forms.LinkLabel oneDriveSDKLinkLabel; private System.Windows.Forms.LinkLabel bitbucketLinkLabel; private System.Windows.Forms.LinkLabel gitHubLinkLabel; private System.Windows.Forms.LinkLabel battleClinicLinkLabel; } } ================================================ FILE: src/EVEMon/About/AboutWindow.cs ================================================ using System; using System.Collections; using System.Diagnostics; using System.Drawing; using System.Windows.Forms; using EVEMon.Common; using EVEMon.Common.Constants; using EVEMon.Common.Controls; using EVEMon.Common.Factories; using EVEMon.Common.Helpers; namespace EVEMon.About { /// /// Displays the About Window (Help -> About) containing contrib, /// legal and version information about the application. /// public partial class AboutWindow : EVEMonForm { private readonly SortedList m_headers; private readonly SortedList m_developersList; /// /// Setup the list of developers and the standard font /// public AboutWindow() { InitializeComponent(); devsList.SelectedIndexChanged += devsList_SelectedIndexChanged; EVEMonLabel.Font = FontFactory.GetDefaultFont(8.25F, FontStyle.Bold); DevContribLabel.Font = FontFactory.GetDefaultFont(8.25F, FontStyle.Bold); CredentialsLabels.Font = FontFactory.GetDefaultFont(8.25F, FontStyle.Bold); // list of headings m_headers = new SortedList { { 1, "Guru" }, { 2, "Guru (Retired)" }, { 3, "Consultants"}, { 4, "Developers" }, { 5, "Developers (Retired)" }, { 6, "Contributors" } }; // list of developers by heading m_developersList = new SortedList { // EVEMon Guru { "Blitz Bandis", 1 }, // Guru (Retired) { "Jimi", 2 }, { "Araan Sunn", 2 }, { "Six Anari", 2 }, { "Anders Chydenius", 2 }, { "Brad Stone", 2 }, { "Eewec Ourbyni", 2 }, { "Richard Slater", 2 }, { "Vehlin", 2 }, // Consultants { "MrCue", 3 }, { "Nericus Demeeny", 3 }, { "Tonto Auri", 3 }, // Developers { "Peter Han", 4 }, // Developers (Retired) { "Collin Grady", 5 }, { "DCShadow", 5 }, { "DonQuiche", 5 }, { "Grauw", 5 }, { "Jalon Mevek", 5 }, { "Labogh", 5 }, { "romanl", 5 }, { "Safrax", 5 }, { "Stevil Knevil", 5 }, { "TheBelgarion", 5 }, // Contributors { "Abomb", 6 }, { "Adam Butt", 6 }, { "Aethlyn", 6 }, { "Aevum Decessus", 6 }, { "aliceturing", 6 }, { "aMUSiC", 6 }, { "Arengor", 6 }, { "ATGardner", 6 }, { "Barend", 6 }, { "berin", 6 }, { "bugusnot", 6 }, { "Candle", 6 }, { "coeus", 6 }, { "CrazyMahone", 6 }, { "CyberTech", 6 }, { "Derath Ellecon", 6 }, { "Dariana", 6 }, { "Eviro", 6 }, { "exi", 6 }, { "FangVV", 6 }, { "Femaref", 6 }, { "Flash", 6 }, { "Galideeth", 6 }, { "gareth", 6 }, { "gavinl", 6 }, { "GoneWacko", 6 }, { "Good speed", 6 }, { "happyslinky", 6 }, { "Innocent Enemy", 6 }, { "Jazzy_Josh", 6 }, { "jdread", 6 }, { "Jeff Zellner", 6 }, { "jthiesen", 6 }, { "justinian", 6 }, { "Kelos Pelmand", 6 }, { "Kingdud", 6 }, { "Kw4h", 6 }, { "Kunnis Niam", 6 }, { "lerthe61", 6 }, { "Lexiica", 6 }, { "Master of Dice", 6 }, { "Maximilian Kernbach", 6 }, { "MaZ", 6 }, { "mexx24", 6 }, { "Michayel Lyon", 6 }, { "mintoko", 6 }, { "misterilla", 6 }, { "Moq", 6 }, { "morgangreenacre", 6 }, { "Namistai", 6 }, { "Nascent Nimbus", 6 }, { "NetMage", 6 }, { "Nagapito", 6 }, { "Nilyen", 6 }, { "Nimrel", 6 }, { "Niom", 6 }, { "Pharazon", 6 }, { "Phoenix Flames", 6 }, { "phorge", 6 }, { "Protag", 6 }, { "Optica", 6 }, { "Quantix Blackstar", 6 }, { "Risako", 6 }, { "Ruldar", 6 }, { "Safarian Lanar", 6 }, { "scoobyrich", 6 }, { "Sertan Deras", 6 }, { "shaver", 6 }, { "Shocky", 6 }, { "Shwehan Juanis", 6 }, { "skolima", 6 }, { "Spiff Nutter", 6 }, { "stiez", 6 }, { "Subkahnshus", 6 }, { "SyndicateAexeron", 6 }, { "The_Assimilator", 6 }, { "TheConstructor", 6 }, { "Travis Puderbaugh", 6 }, { "Trin", 6 }, { "vardoj", 6 }, { "Waste Land", 6 }, { "wrok", 6 }, { "xNomeda", 6 }, { "ykoehler", 6 }, { "Zarra Kri", 6 }, { "Zofu", 6 } }; } /// /// Prevents the user to select an item in the list. /// /// /// private void devsList_SelectedIndexChanged(object sender, EventArgs e) { if (devsList.SelectedItems.Count != 0) devsList.SelectedItems.Clear(); } /// /// Populates and adds links to the various labels and list /// boxes on the form. /// /// protected override void OnLoad(EventArgs e) { base.OnLoad(e); HomePageLinkLabel.Text = NetworkConstants.EVEMonMainPage; CopyrightLabel.Text = string.Format(CultureConstants.DefaultCulture, CopyrightLabel.Text, DateTime.UtcNow.Year); VersionLabel.Text = GetVersionText(); AddDevelopersToListView(); AddLinkToLabel(ccpGamesLinkLabel, "CCP Games", "http://www.ccpgames.com/"); AddLinkToLabel(ccpDocsLinkLabel, "CCP 3rd party docs", "https://eveonline-third-party-documentation.readthedocs.org/en/latest/"); AddLinkToLabel(bitbucketLinkLabel, "Bitbucket", "https://bitbucket.org/"); AddLinkToLabel(gitHubLinkLabel, "GitHub", "https://github.com/"); AddLinkToLabel(eveMarketerLinkLabel, "EVEMarketer", "http://www.evemarketer.com/"); AddLinkToLabel(eveMarketDataLinkLabel, "EVE-MarketData", "http://eve-marketdata.com/"); AddLinkToLabel(googleApisLinkLabel, "Google", "https://github.com/google/google-api-dotnet-client/"); AddLinkToLabel(dropboxSDKLinkLabel, "Dropbox", "https://github.com/dropbox/dropbox-sdk-dotnet/"); AddLinkToLabel(oneDriveSDKLinkLabel, "Microsoft OneDrive", "https://github.com/OneDrive/onedrive-sdk-csharp/"); AddLinkToLabel(lironLeviLinkLabel, "Liron Levi", "http://www.codeproject.com/Articles/37397/A-Multipanel-Control-in-C/"); AddLinkToLabel(stackOverflowLinkLabel, "Stack Overflow", "http://stackoverflow.com/"); } /// /// Gets the version text. /// /// private string GetVersionText() { FileVersionInfo version = EveMonClient.FileVersionInfo; // Adds environment process info VersionLabel.Text += $" ({(Environment.Is64BitProcess ? "64" : "32")} bit)"; // Returns the application product version (AssemblyInformationalVersion) // or the application file version (AssemblyFileVersion) // if the build is in SNAPSHOT if (!EveMonClient.IsDebugBuild) { return string.Format(CultureConstants.InvariantCulture, VersionLabel.Text, EveMonClient.IsSnapshotBuild ? version.FileVersion : version.ProductVersion); } // Returns the application file version (AssemblyFileVersion) // and adds " (Debug)" to the version number if the build is in DEBUG VersionLabel.Text += @" (Debug)"; return string.Format(CultureConstants.InvariantCulture, VersionLabel.Text, version.FileVersion); } /// /// Little function to allow us to add links to a link label /// after the contents has been set, purely by the contained /// text /// /// /// At present this function only works on the first instance /// of a string within the text property of the link label, /// further insances will be ignored. /// /// LinkLabel to act upon /// text to make a link /// URL for the link to point to private static void AddLinkToLabel(LinkLabel label, string linkText, string url) { int start = label.Text.IndexOf(linkText, StringComparison.Ordinal); int length = linkText.Length; label.Links.Add(start, length, url); } /// /// Loops through the list of headings and developers and adds /// them to the list box. /// private void AddDevelopersToListView() { devsList.Columns.Add(new ColumnHeader()); // Set up the list of developers for (int i = 0; i < m_headers.Count; i++) { ListViewGroup group = new ListViewGroup(m_headers.GetByIndex(i).ToString()); devsList.Groups.Add(group); for (int j = 0; j < m_developersList.Count; j++) { if (!m_headers.GetKey(i).Equals(m_developersList.GetByIndex(j))) continue; ListViewItem item = new ListViewItem(m_developersList.GetKey(j).ToString(), group); devsList.Items.Add(item); } } devsList.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); } /// /// Handles the LinkClicked event of the llHomePage LinkLabel. /// Navigates to the EVEMon website in a browser. /// /// The source of the event. /// The instance containing the event data. private void HomePageLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { Util.OpenURL(new Uri(NetworkConstants.EVEMonMainPage)); } /// /// Handles the LinkClicked event of the IconSourceLinkLabel control. /// /// The source of the event. /// The instance containing the event data. private void LinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { if (e.Link.LinkData.GetType() != typeof(string)) return; try { Uri linkUri = new Uri(e.Link.LinkData.ToString()); Util.OpenURL(linkUri); } catch (UriFormatException ex) { // uri is malformed, never mind just ignore it ExceptionHandler.LogException(ex, true); } } } } ================================================ FILE: src/EVEMon/About/AboutWindow.resx ================================================ text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 This program is free software; you can redistribute it and/or modify it under the terms of version 2 the GNU General Public License as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 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 ================================================ FILE: src/EVEMon/ApiCredentialsManagement/CharacterDeletionWindow.Designer.cs ================================================ namespace EVEMon.ApiCredentialsManagement { partial class CharacterDeletionWindow { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CharacterDeletionWindow)); System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem("123456"); System.Windows.Forms.ListViewItem listViewItem2 = new System.Windows.Forms.ListViewItem("234567"); System.Windows.Forms.ListViewItem listViewItem3 = new System.Windows.Forms.ListViewItem("3456789"); System.Windows.Forms.ListViewItem listViewItem4 = new System.Windows.Forms.ListViewItem("123123123"); System.Windows.Forms.ListViewItem listViewItem5 = new System.Windows.Forms.ListViewItem("455345"); System.Windows.Forms.ListViewItem listViewItem6 = new System.Windows.Forms.ListViewItem("1234553234"); System.Windows.Forms.ListViewItem listViewItem7 = new System.Windows.Forms.ListViewItem("1235435"); System.Windows.Forms.ListViewItem listViewItem8 = new System.Windows.Forms.ListViewItem("12314124"); System.Windows.Forms.ListViewItem listViewItem9 = new System.Windows.Forms.ListViewItem("1235454"); System.Windows.Forms.ListViewItem listViewItem10 = new System.Windows.Forms.ListViewItem("45656456"); this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.characterToRemoveLabel = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.cancelButton = new System.Windows.Forms.Button(); this.deleteButton = new System.Windows.Forms.Button(); this.noCharactersLabel = new System.Windows.Forms.Label(); this.esiKeysListView = new System.Windows.Forms.ListView(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.SuspendLayout(); // // pictureBox1 // this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); this.pictureBox1.Location = new System.Drawing.Point(13, 13); this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Size = new System.Drawing.Size(32, 32); this.pictureBox1.TabIndex = 0; this.pictureBox1.TabStop = false; // // characterToRemoveLabel // this.characterToRemoveLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.characterToRemoveLabel.AutoSize = true; this.characterToRemoveLabel.ForeColor = System.Drawing.SystemColors.ControlText; this.characterToRemoveLabel.Location = new System.Drawing.Point(51, 22); this.characterToRemoveLabel.Name = "characterToRemoveLabel"; this.characterToRemoveLabel.Size = new System.Drawing.Size(214, 13); this.characterToRemoveLabel.TabIndex = 1; this.characterToRemoveLabel.Text = "You are about to delete the character \"{0}\"."; this.characterToRemoveLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // label2 // this.label2.AutoSize = true; this.label2.ForeColor = System.Drawing.Color.DarkRed; this.label2.Location = new System.Drawing.Point(51, 44); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(168, 13); this.label2.TabIndex = 2; this.label2.Text = "All your data and plans will be lost!"; // // cancelButton // this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.cancelButton.Location = new System.Drawing.Point(327, 142); this.cancelButton.Name = "cancelButton"; this.cancelButton.Size = new System.Drawing.Size(75, 23); this.cancelButton.TabIndex = 3; this.cancelButton.Text = "&Cancel"; this.cancelButton.UseVisualStyleBackColor = true; this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click); // // deleteButton // this.deleteButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.deleteButton.DialogResult = System.Windows.Forms.DialogResult.OK; this.deleteButton.Location = new System.Drawing.Point(246, 142); this.deleteButton.Name = "deleteButton"; this.deleteButton.Size = new System.Drawing.Size(75, 23); this.deleteButton.TabIndex = 4; this.deleteButton.Text = "&Delete"; this.deleteButton.UseVisualStyleBackColor = true; this.deleteButton.Click += new System.EventHandler(this.deleteButton_Click); // // noCharactersLabel // this.noCharactersLabel.AutoSize = true; this.noCharactersLabel.Location = new System.Drawing.Point(51, 66); this.noCharactersLabel.Name = "noCharactersLabel"; this.noCharactersLabel.Size = new System.Drawing.Size(181, 13); this.noCharactersLabel.TabIndex = 6; this.noCharactersLabel.Text = "The ESI key{0} will also be removed:"; // // esiKeysListView // this.esiKeysListView.BorderStyle = System.Windows.Forms.BorderStyle.None; this.esiKeysListView.Items.AddRange(new System.Windows.Forms.ListViewItem[] { listViewItem1, listViewItem2, listViewItem3, listViewItem4, listViewItem5, listViewItem6, listViewItem7, listViewItem8, listViewItem9, listViewItem10}); this.esiKeysListView.Location = new System.Drawing.Point(238, 66); this.esiKeysListView.Name = "esiKeysListView"; this.esiKeysListView.Size = new System.Drawing.Size(192, 94); this.esiKeysListView.TabIndex = 7; this.esiKeysListView.UseCompatibleStateImageBehavior = false; this.esiKeysListView.View = System.Windows.Forms.View.List; // // CharacterDeletionWindow // this.AcceptButton = this.cancelButton; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.SystemColors.Window; this.ClientSize = new System.Drawing.Size(414, 177); this.Controls.Add(this.noCharactersLabel); this.Controls.Add(this.deleteButton); this.Controls.Add(this.cancelButton); this.Controls.Add(this.label2); this.Controls.Add(this.characterToRemoveLabel); this.Controls.Add(this.pictureBox1); this.Controls.Add(this.esiKeysListView); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "CharacterDeletionWindow"; this.Text = "Delete Character"; ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.PictureBox pictureBox1; private System.Windows.Forms.Label characterToRemoveLabel; private System.Windows.Forms.Label label2; private System.Windows.Forms.Button cancelButton; private System.Windows.Forms.Button deleteButton; private System.Windows.Forms.Label noCharactersLabel; private System.Windows.Forms.ListView esiKeysListView; } } ================================================ FILE: src/EVEMon/ApiCredentialsManagement/CharacterDeletionWindow.cs ================================================ using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Windows.Forms; using EVEMon.Common; using EVEMon.Common.Constants; using EVEMon.Common.Controls; using EVEMon.Common.Factories; using EVEMon.Common.Models; using EVEMon.Common.Extensions; namespace EVEMon.ApiCredentialsManagement { public partial class CharacterDeletionWindow : EVEMonForm { private readonly Character m_character; private List m_esiKeys; /// /// Constructor. /// private CharacterDeletionWindow() { InitializeComponent(); characterToRemoveLabel.Font = FontFactory.GetFont("Tahoma", FontStyle.Bold); } /// /// Constructor. /// /// public CharacterDeletionWindow(Character character) : this() { m_character = character; } /// /// Occurs when the control loads. /// /// The instance containing the event data. protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (DesignMode) return; esiKeysListView.Items.Clear(); // Replaces end of text with character's name characterToRemoveLabel.Text = string.Format(CultureConstants.DefaultCulture, characterToRemoveLabel.Text, m_character.Name); // Find the API keys bind only to this character m_esiKeys = EveMonClient.ESIKeys.Select(apiKey => new { apiKey, identities = apiKey.CharacterIdentities }).Where(apiKey => apiKey.identities.Count() == 1 && apiKey.identities. Contains(m_character.Identity)).Select(apiKey => apiKey.apiKey).ToList(); esiKeysListView.Items.AddRange(m_esiKeys.Select(key => new ListViewItem( key.ID.ToString(CultureConstants.DefaultCulture))).ToArray()); // Checks whether there will be no characters left after this deletion and hide/display the relevant labels bool noCharactersLeft = m_esiKeys.Any() && m_character is CCPCharacter; noCharactersLabel.Text = string.Format(CultureConstants.DefaultCulture, noCharactersLabel.Text, m_esiKeys.Count.S()); noCharactersLabel.Visible = noCharactersLeft; // Resize window if there is no ESI key to remove if (!noCharactersLeft) Size = new Size(Size.Width, Size.Height - esiKeysListView.Height / 2); } /// /// Delete button click. /// /// /// private void deleteButton_Click(object sender, EventArgs e) { // Always clear the ESI keys since keys are locked to a character // Note: Keep this order of removal m_esiKeys.ForEach(apiKey => EveMonClient.ESIKeys.Remove(apiKey)); EveMonClient.Characters.Remove(m_character); Close(); } /// /// Closes the window. /// /// /// private void cancelButton_Click(object sender, EventArgs e) { Close(); } } } ================================================ FILE: src/EVEMon/ApiCredentialsManagement/CharacterDeletionWindow.resx ================================================ text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 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 ================================================ FILE: src/EVEMon/ApiCredentialsManagement/CharacterImportationWindow.Designer.cs ================================================ using EVEMon.Common; using EVEMon.Common.Controls; using EVEMon.Common.Enumerations; namespace EVEMon.ApiCredentialsManagement { partial class CharacterImportationWindow { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.labelName = new System.Windows.Forms.Label(); this.labelErrorHeader = new System.Windows.Forms.Label(); this.urlRadio = new System.Windows.Forms.RadioButton(); this.urlTextBox = new System.Windows.Forms.TextBox(); this.fileRadio = new System.Windows.Forms.RadioButton(); this.fileTextBox = new System.Windows.Forms.TextBox(); this.fileButton = new System.Windows.Forms.Button(); this.urlThrobber = new EVEMon.Common.Controls.Throbber(); this.namePanel = new System.Windows.Forms.Panel(); this.nameTextBox = new System.Windows.Forms.TextBox(); this.errorPanel = new System.Windows.Forms.FlowLayoutPanel(); this.labelError = new System.Windows.Forms.Label(); this.okButton = new System.Windows.Forms.Button(); this.cancelButton = new System.Windows.Forms.Button(); this.delayQueryTimer = new System.Windows.Forms.Timer(this.components); ((System.ComponentModel.ISupportInitialize)(this.urlThrobber)).BeginInit(); this.namePanel.SuspendLayout(); this.errorPanel.SuspendLayout(); this.SuspendLayout(); // // labelName // this.labelName.AutoSize = true; this.labelName.Location = new System.Drawing.Point(5, 7); this.labelName.Name = "labelName"; this.labelName.Size = new System.Drawing.Size(35, 13); this.labelName.TabIndex = 0; this.labelName.Text = "Name"; // // labelErrorHeader // this.labelErrorHeader.AutoSize = true; this.labelErrorHeader.ForeColor = System.Drawing.Color.DarkRed; this.labelErrorHeader.Location = new System.Drawing.Point(3, 0); this.labelErrorHeader.Name = "labelErrorHeader"; this.labelErrorHeader.Size = new System.Drawing.Size(260, 13); this.labelErrorHeader.TabIndex = 8; this.labelErrorHeader.Text = "An error occurred while trying to import this character :"; // // urlRadio // this.urlRadio.AutoSize = true; this.urlRadio.Checked = true; this.urlRadio.Location = new System.Drawing.Point(13, 13); this.urlRadio.Name = "urlRadio"; this.urlRadio.Size = new System.Drawing.Size(69, 17); this.urlRadio.TabIndex = 0; this.urlRadio.TabStop = true; this.urlRadio.Text = "Use URL"; this.urlRadio.UseVisualStyleBackColor = true; this.urlRadio.CheckedChanged += new System.EventHandler(this.radio_CheckedChanged); // // urlTextBox // this.urlTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.urlTextBox.Location = new System.Drawing.Point(85, 13); this.urlTextBox.Name = "urlTextBox"; this.urlTextBox.Size = new System.Drawing.Size(457, 20); this.urlTextBox.TabIndex = 1; // // fileRadio // this.fileRadio.AutoSize = true; this.fileRadio.Location = new System.Drawing.Point(13, 49); this.fileRadio.Name = "fileRadio"; this.fileRadio.Size = new System.Drawing.Size(63, 17); this.fileRadio.TabIndex = 2; this.fileRadio.TabStop = true; this.fileRadio.Text = "Use File"; this.fileRadio.UseVisualStyleBackColor = true; this.fileRadio.CheckedChanged += new System.EventHandler(this.radio_CheckedChanged); // // fileTextBox // this.fileTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.fileTextBox.Location = new System.Drawing.Point(85, 49); this.fileTextBox.Name = "fileTextBox"; this.fileTextBox.ReadOnly = true; this.fileTextBox.Size = new System.Drawing.Size(457, 20); this.fileTextBox.TabIndex = 3; // // fileButton // this.fileButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.fileButton.Location = new System.Drawing.Point(548, 47); this.fileButton.Name = "fileButton"; this.fileButton.Size = new System.Drawing.Size(29, 23); this.fileButton.TabIndex = 4; this.fileButton.Text = "..."; this.fileButton.UseVisualStyleBackColor = true; this.fileButton.Click += new System.EventHandler(this.fileButton_Click); // // urlThrobber // this.urlThrobber.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.urlThrobber.Location = new System.Drawing.Point(548, 10); this.urlThrobber.MaximumSize = new System.Drawing.Size(24, 24); this.urlThrobber.MinimumSize = new System.Drawing.Size(24, 24); this.urlThrobber.Name = "urlThrobber"; this.urlThrobber.Size = new System.Drawing.Size(24, 24); this.urlThrobber.State = ThrobberState.Stopped; this.urlThrobber.TabIndex = 5; this.urlThrobber.TabStop = false; // // namePanel // this.namePanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.namePanel.Controls.Add(this.nameTextBox); this.namePanel.Controls.Add(this.labelName); this.namePanel.Location = new System.Drawing.Point(85, 87); this.namePanel.Name = "namePanel"; this.namePanel.Size = new System.Drawing.Size(280, 31); this.namePanel.TabIndex = 5; // // nameTextBox // this.nameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.nameTextBox.Location = new System.Drawing.Point(45, 4); this.nameTextBox.Name = "nameTextBox"; this.nameTextBox.Size = new System.Drawing.Size(232, 20); this.nameTextBox.TabIndex = 1; // // errorPanel // this.errorPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.errorPanel.Controls.Add(this.labelErrorHeader); this.errorPanel.Controls.Add(this.labelError); this.errorPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; this.errorPanel.Location = new System.Drawing.Point(80, 87); this.errorPanel.Name = "errorPanel"; this.errorPanel.Size = new System.Drawing.Size(492, 31); this.errorPanel.TabIndex = 9; // // labelError // this.labelError.AutoSize = true; this.labelError.ForeColor = System.Drawing.Color.DarkRed; this.labelError.Location = new System.Drawing.Point(3, 13); this.labelError.Name = "labelError"; this.labelError.Size = new System.Drawing.Size(35, 13); this.labelError.TabIndex = 9; this.labelError.Text = "label2"; // // okButton // this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK; this.okButton.Location = new System.Drawing.Point(416, 126); this.okButton.Name = "okButton"; this.okButton.Size = new System.Drawing.Size(75, 23); this.okButton.TabIndex = 6; this.okButton.Text = "OK"; this.okButton.UseVisualStyleBackColor = true; this.okButton.Click += new System.EventHandler(this.okButton_Click); // // cancelButton // this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.cancelButton.Location = new System.Drawing.Point(497, 126); this.cancelButton.Name = "cancelButton"; this.cancelButton.Size = new System.Drawing.Size(75, 23); this.cancelButton.TabIndex = 7; this.cancelButton.Text = "Cancel"; this.cancelButton.UseVisualStyleBackColor = true; // // delayQueryTimer // this.delayQueryTimer.Interval = 400; this.delayQueryTimer.Tick += new System.EventHandler(this.delayQueryTimer_Tick); // // CharacterImportationWindow // this.AcceptButton = this.okButton; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.SystemColors.Window; this.CancelButton = this.cancelButton; this.ClientSize = new System.Drawing.Size(589, 161); this.Controls.Add(this.cancelButton); this.Controls.Add(this.okButton); this.Controls.Add(this.errorPanel); this.Controls.Add(this.namePanel); this.Controls.Add(this.urlThrobber); this.Controls.Add(this.fileButton); this.Controls.Add(this.fileTextBox); this.Controls.Add(this.fileRadio); this.Controls.Add(this.urlTextBox); this.Controls.Add(this.urlRadio); this.MaximizeBox = false; this.MinimizeBox = false; this.MinimumSize = new System.Drawing.Size(597, 193); this.Name = "CharacterImportationWindow"; this.Text = "Character Importation"; ((System.ComponentModel.ISupportInitialize)(this.urlThrobber)).EndInit(); this.namePanel.ResumeLayout(false); this.namePanel.PerformLayout(); this.errorPanel.ResumeLayout(false); this.errorPanel.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.RadioButton urlRadio; private System.Windows.Forms.TextBox urlTextBox; private System.Windows.Forms.RadioButton fileRadio; private System.Windows.Forms.TextBox fileTextBox; private System.Windows.Forms.Button fileButton; private Throbber urlThrobber; private System.Windows.Forms.Panel namePanel; private System.Windows.Forms.TextBox nameTextBox; private System.Windows.Forms.Button okButton; private System.Windows.Forms.Button cancelButton; private System.Windows.Forms.Timer delayQueryTimer; private System.Windows.Forms.FlowLayoutPanel errorPanel; private System.Windows.Forms.Label labelError; private System.Windows.Forms.Label labelErrorHeader; private System.Windows.Forms.Label labelName; } } ================================================ FILE: src/EVEMon/ApiCredentialsManagement/CharacterImportationWindow.cs ================================================ using System; using System.Threading.Tasks; using System.Windows.Forms; using EVEMon.Common.Collections.Global; using EVEMon.Common.Controls; using EVEMon.Common.CustomEventArgs; using EVEMon.Common.Enumerations; using EVEMon.Common.Models; namespace EVEMon.ApiCredentialsManagement { /// /// A windows to import characters from files or urls. /// public partial class CharacterImportationWindow : EVEMonForm { // When multiple downloads are fired, we only want to react to the latest one, this is done through versioning. private int m_version; private UriCharacterEventArgs m_args; private UriCharacter m_uriCharacter; /// /// Constructor for a new character creation. /// public CharacterImportationWindow() { InitializeComponent(); errorPanel.Visible = false; namePanel.Visible = false; okButton.Enabled = false; } /// /// Constructor to update a character. /// public CharacterImportationWindow(UriCharacter uriCharacter) : this() { m_uriCharacter = uriCharacter; } /// /// On load, subscribe events. /// /// protected override void OnLoad(EventArgs e) { base.OnLoad(e); urlTextBox.TextChanged += urlTextBox_TextChanged; if (m_uriCharacter == null) return; if (m_uriCharacter.Uri.IsFile) { fileTextBox.Text = m_uriCharacter.Uri.ToString(); fileRadio.Checked = true; } else { urlTextBox.Text = m_uriCharacter.Uri.ToString(); urlRadio.Checked = true; } } /// /// Enable or disable the proper controls when the user changes the radio buttons. /// /// /// private void radio_CheckedChanged(object sender, EventArgs e) { urlTextBox.Enabled = urlRadio.Checked; urlThrobber.Enabled = urlRadio.Checked; fileButton.Enabled = fileRadio.Checked; fileTextBox.Enabled = fileRadio.Checked; } /// /// When the users changes the url, we query from the web. /// /// /// private void urlTextBox_TextChanged(object sender, EventArgs e) { delayQueryTimer.Stop(); delayQueryTimer.Start(); } /// /// We would like to check the provided url anytime the url textbox changes but it would be stressful, so we only do it when the user didn't type /// anything in the last 400ms. Once this timer expires, we do the check. /// /// /// private async void delayQueryTimer_Tick(object sender, EventArgs e) { await TryUri(urlTextBox.Text); } /// /// When the users clicks the "..." button, we open a file selection dialog, then try to read the specified XML. /// /// /// private async void fileButton_Click(object sender, EventArgs e) { using (OpenFileDialog form = new OpenFileDialog()) { form.Title = @"Import character file"; form.Filter = @"CCP XML Character (*.xml)|*.xml"; form.FilterIndex = 0; DialogResult dr = form.ShowDialog(); if (dr == DialogResult.Cancel) return; fileTextBox.Text = form.FileName; fileRadio.Checked = true; await TryUri(form.FileName); } } /// /// Try to download a character XML from the given URI. /// /// private async Task TryUri(string uri) { m_version++; m_args = null; // Update controls okButton.Enabled = false; namePanel.Visible = false; errorPanel.Visible = false; urlThrobber.State = ThrobberState.Rotating; // Starts querying the web or the hard drive, and invokes the given callback on result int version = m_version; var result = await GlobalCharacterCollection.TryAddOrUpdateFromUriAsync(new Uri(uri)); if (version != m_version) return; urlThrobber.State = ThrobberState.Stopped; // Was there an error ? if (result.HasError) { okButton.Enabled = false; errorPanel.Visible = true; labelError.Text = result.Error; return; } nameTextBox.Text = result.CharacterName; namePanel.Visible = true; okButton.Enabled = true; m_args = result; } /// /// When the user clicks the OK button, we may have to generate the character /// /// /// private void okButton_Click(object sender, EventArgs e) { // Shouldn't occur but, well... if (m_args == null || m_args.HasError) { DialogResult = DialogResult.Cancel; return; } // Generates or updates the character if (m_uriCharacter == null) m_uriCharacter = m_args.CreateCharacter(); else m_args.UpdateCharacter(m_uriCharacter); m_uriCharacter.Name = nameTextBox.Text; DialogResult = DialogResult.OK; } } } ================================================ FILE: src/EVEMon/ApiCredentialsManagement/CharacterImportationWindow.resx ================================================ text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 17, 17 ================================================ FILE: src/EVEMon/ApiCredentialsManagement/EsiKeyDeletionWindow.Designer.cs ================================================ namespace EVEMon.ApiCredentialsManagement { sealed partial class EsiKeyDeletionWindow { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem("John Doe"); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EsiKeyDeletionWindow)); this.deletionLabel = new System.Windows.Forms.Label(); this.cancelButton = new System.Windows.Forms.Button(); this.deleteButton = new System.Windows.Forms.Button(); this.charactersListView = new System.Windows.Forms.ListView(); this.pictureBox = new System.Windows.Forms.PictureBox(); this.infoLabel = new System.Windows.Forms.Label(); this.deleteWarningLabel = new System.Windows.Forms.Label(); this.charactersListGroupBox = new System.Windows.Forms.GroupBox(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit(); this.charactersListGroupBox.SuspendLayout(); this.SuspendLayout(); // // deletionLabel // this.deletionLabel.AutoSize = true; this.deletionLabel.Location = new System.Drawing.Point(51, 22); this.deletionLabel.Name = "deletionLabel"; this.deletionLabel.Size = new System.Drawing.Size(238, 13); this.deletionLabel.TabIndex = 4; this.deletionLabel.Text = "You are about to delete the ESI key with ID : {0}."; this.deletionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // cancelButton // this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.cancelButton.Location = new System.Drawing.Point(435, 180); this.cancelButton.Name = "cancelButton"; this.cancelButton.Size = new System.Drawing.Size(75, 23); this.cancelButton.TabIndex = 0; this.cancelButton.Text = "&Cancel"; this.cancelButton.UseVisualStyleBackColor = true; // // deleteButton // this.deleteButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.deleteButton.DialogResult = System.Windows.Forms.DialogResult.OK; this.deleteButton.Location = new System.Drawing.Point(354, 180); this.deleteButton.Name = "deleteButton"; this.deleteButton.Size = new System.Drawing.Size(75, 23); this.deleteButton.TabIndex = 1; this.deleteButton.Text = "&Delete"; this.deleteButton.UseVisualStyleBackColor = true; this.deleteButton.Click += new System.EventHandler(this.deleteButton_Click); // // charactersListView // this.charactersListView.BorderStyle = System.Windows.Forms.BorderStyle.None; this.charactersListView.CheckBoxes = true; listViewItem1.StateImageIndex = 0; this.charactersListView.Items.AddRange(new System.Windows.Forms.ListViewItem[] { listViewItem1}); this.charactersListView.Location = new System.Drawing.Point(308, 28); this.charactersListView.Name = "charactersListView"; this.charactersListView.Size = new System.Drawing.Size(181, 77); this.charactersListView.TabIndex = 2; this.charactersListView.UseCompatibleStateImageBehavior = false; this.charactersListView.View = System.Windows.Forms.View.List; // // pictureBox // this.pictureBox.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox.Image"))); this.pictureBox.Location = new System.Drawing.Point(13, 13); this.pictureBox.Name = "pictureBox"; this.pictureBox.Size = new System.Drawing.Size(32, 32); this.pictureBox.TabIndex = 3; this.pictureBox.TabStop = false; // // infoLabel // this.infoLabel.Location = new System.Drawing.Point(6, 28); this.infoLabel.Name = "infoLabel"; this.infoLabel.Size = new System.Drawing.Size(296, 48); this.infoLabel.TabIndex = 6; this.infoLabel.Text = "If you choose to leave your character, it will be displayed as cached and automat" + "ically reconnected once it is found on another one of your ESI keys."; // // deleteWarningLabel // this.deleteWarningLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.deleteWarningLabel.ForeColor = System.Drawing.Color.DarkRed; this.deleteWarningLabel.Location = new System.Drawing.Point(6, 90); this.deleteWarningLabel.Name = "deleteWarningLabel"; this.deleteWarningLabel.Size = new System.Drawing.Size(304, 15); this.deleteWarningLabel.TabIndex = 7; this.deleteWarningLabel.Text = "Removing characters means losing all their data and plans!"; // // charactersListGroupBox // this.charactersListGroupBox.Controls.Add(this.deleteWarningLabel); this.charactersListGroupBox.Controls.Add(this.infoLabel); this.charactersListGroupBox.Controls.Add(this.charactersListView); this.charactersListGroupBox.Location = new System.Drawing.Point(15, 60); this.charactersListGroupBox.Name = "charactersListGroupBox"; this.charactersListGroupBox.Size = new System.Drawing.Size(495, 114); this.charactersListGroupBox.TabIndex = 8; this.charactersListGroupBox.TabStop = false; this.charactersListGroupBox.Text = "Select the characters you want to remove"; // // EsiKeyDeletionWindow // this.AcceptButton = this.cancelButton; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.SystemColors.Window; this.CancelButton = this.cancelButton; this.ClientSize = new System.Drawing.Size(522, 215); this.Controls.Add(this.charactersListGroupBox); this.Controls.Add(this.deletionLabel); this.Controls.Add(this.pictureBox); this.Controls.Add(this.deleteButton); this.Controls.Add(this.cancelButton); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; this.Name = "EsiKeyDeletionWindow"; this.Text = "Delete an ESI key"; ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit(); this.charactersListGroupBox.ResumeLayout(false); this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.Button cancelButton; private System.Windows.Forms.Button deleteButton; private System.Windows.Forms.ListView charactersListView; private System.Windows.Forms.PictureBox pictureBox; private System.Windows.Forms.Label infoLabel; private System.Windows.Forms.Label deleteWarningLabel; private System.Windows.Forms.GroupBox charactersListGroupBox; private System.Windows.Forms.Label deletionLabel; } } ================================================ FILE: src/EVEMon/ApiCredentialsManagement/EsiKeyDeletionWindow.cs ================================================ using System; using System.Drawing; using System.Linq; using System.Windows.Forms; using EVEMon.Common; using EVEMon.Common.Constants; using EVEMon.Common.Controls; using EVEMon.Common.Extensions; using EVEMon.Common.Factories; using EVEMon.Common.Models; namespace EVEMon.ApiCredentialsManagement { public sealed partial class EsiKeyDeletionWindow : EVEMonForm { private readonly ESIKey m_apiKey; /// /// Constructor. /// private EsiKeyDeletionWindow() { InitializeComponent(); deletionLabel.Font = FontFactory.GetFont("Tahoma", FontStyle.Bold); } /// /// Constructor. /// /// The ESI key. /// esiKey public EsiKeyDeletionWindow(ESIKey esiKey) : this() { esiKey.ThrowIfNull(nameof(esiKey), "ESI key can't be null"); m_apiKey = esiKey; } /// /// Occurs when the control loads. /// /// The instance containing the event data. protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (DesignMode) return; charactersListView.ItemCheck += charactersListView_ItemCheck; deletionLabel.Text = string.Format(CultureConstants.DefaultCulture, deletionLabel.Text, m_apiKey.ID); // Add characters charactersListView.Items.Clear(); foreach (ListViewItem item in m_apiKey.CharacterIdentities.Select( id => new ListViewItem(id.CharacterName) { Tag = id.CCPCharacter, Checked = id.CCPCharacter != null && id.CCPCharacter.Identity.ESIKeys.All(key => key == m_apiKey), })) { // Gray out a character with another associated API key if (!item.Checked) item.ForeColor = SystemColors.GrayText; // Strikeout and gray out a character in the API key's ignored list if (item.Tag == null) { item.Font = FontFactory.GetFont(Font, FontStyle.Strikeout); item.ForeColor = SystemColors.GrayText; item.Checked = true; } charactersListView.Items.Add(item); } // If character list is empty resize the window if (charactersListView.Items.Count != 0) return; charactersListGroupBox.Visible = false; Size = new Size(Size.Width - charactersListGroupBox.Height / 2, Size.Height - charactersListGroupBox.Height); } /// /// Handles the ItemCheck event of the charactersListView control. /// /// The source of the event. /// The instance containing the event data. private void charactersListView_ItemCheck(object sender, ItemCheckEventArgs e) { CCPCharacter ccpCharacter = charactersListView.Items[e.Index].Tag as CCPCharacter; if (ccpCharacter == null) e.NewValue = CheckState.Checked; if (ccpCharacter != null && ccpCharacter.Identity.ESIKeys.Any(key => key != m_apiKey)) e.NewValue = CheckState.Unchecked; } /// /// "Delete" button. /// /// /// private void deleteButton_Click(object sender, EventArgs e) { // Remove the API key EveMonClient.ESIKeys.Remove(m_apiKey); // Remove the characters from the collection foreach (CCPCharacter ccpCharacter in charactersListView.Items.Cast().Where( item => item.Checked).Select(item => item.Tag as CCPCharacter).Where( ccpCharacter => ccpCharacter != null).Where( ccpCharacter => !ccpCharacter.Identity.ESIKeys.Any())) { EveMonClient.Characters.Remove(ccpCharacter); } // Closes the window Close(); } } } ================================================ FILE: src/EVEMon/ApiCredentialsManagement/EsiKeyDeletionWindow.resx ================================================ text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 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 ================================================ FILE: src/EVEMon/ApiCredentialsManagement/EsiKeyUpdateOrAdditionWindow.Designer.cs ================================================ using EVEMon.Common.Controls; using EVEMon.Common.Controls.MultiPanel; using EVEMon.Common.Helpers; using System; namespace EVEMon.ApiCredentialsManagement { partial class EsiKeyUpdateOrAdditionWindow { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); try { m_server.Dispose(); } catch (Exception ex) { // Do not rethrow while disposing ExceptionHandler.LogException(ex, true); } } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EsiKeyUpdateOrAdditionWindow)); System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem("Mary Jane"); System.Windows.Forms.ListViewItem listViewItem2 = new System.Windows.Forms.ListViewItem("Ali Baba"); System.Windows.Forms.ListViewItem listViewItem3 = new System.Windows.Forms.ListViewItem("John Doe"); this.GuideLabel = new System.Windows.Forms.Label(); this.ButtonNext = new System.Windows.Forms.Button(); this.ButtonPrevious = new System.Windows.Forms.Button(); this.ButtonCancel = new System.Windows.Forms.Button(); this.MultiPanel = new EVEMon.Common.Controls.MultiPanel.MultiPanel(); this.CredentialsPage = new EVEMon.Common.Controls.MultiPanel.MultiPanelPage(); this.Throbber = new EVEMon.Common.Controls.Throbber(); this.ButtonESILogin = new System.Windows.Forms.Button(); this.ResultPage = new EVEMon.Common.Controls.MultiPanel.MultiPanelPage(); this.KeyTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); this.KeyLabel = new System.Windows.Forms.Label(); this.KeyPicture = new System.Windows.Forms.PictureBox(); this.CharactersGroupBox = new System.Windows.Forms.GroupBox(); this.ResultsMultiPanel = new EVEMon.Common.Controls.MultiPanel.MultiPanel(); this.CharactersListPage = new EVEMon.Common.Controls.MultiPanel.MultiPanelPage(); this.CharactersListView = new System.Windows.Forms.ListView(); this.WarningLabel = new System.Windows.Forms.Label(); this.AuthenticationErrorPage = new EVEMon.Common.Controls.MultiPanel.MultiPanelPage(); this.AuthenticationErrorGuideLabel = new System.Windows.Forms.Label(); this.LoginDeniedErrorPage = new EVEMon.Common.Controls.MultiPanel.MultiPanelPage(); this.LoginDeniedLinkLabel = new System.Windows.Forms.LinkLabel(); this.GeneralErrorPage = new EVEMon.Common.Controls.MultiPanel.MultiPanelPage(); this.GeneralErrorLabel = new System.Windows.Forms.Label(); this.ESITokenFailedErrorPage = new EVEMon.Common.Controls.MultiPanel.MultiPanelPage(); this.ESITokenFailedLabel = new System.Windows.Forms.Label(); this.CachedWarningPage = new EVEMon.Common.Controls.MultiPanel.MultiPanelPage(); this.CachedWarningLabel = new System.Windows.Forms.Label(); this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components); this.LabelShiftClick = new System.Windows.Forms.Label(); this.MultiPanel.SuspendLayout(); this.CredentialsPage.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.Throbber)).BeginInit(); this.ResultPage.SuspendLayout(); this.KeyTableLayoutPanel.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.KeyPicture)).BeginInit(); this.CharactersGroupBox.SuspendLayout(); this.ResultsMultiPanel.SuspendLayout(); this.CharactersListPage.SuspendLayout(); this.AuthenticationErrorPage.SuspendLayout(); this.LoginDeniedErrorPage.SuspendLayout(); this.GeneralErrorPage.SuspendLayout(); this.ESITokenFailedErrorPage.SuspendLayout(); this.CachedWarningPage.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit(); this.SuspendLayout(); // // GuideLabel // this.GuideLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.GuideLabel.Location = new System.Drawing.Point(3, 3); this.GuideLabel.Name = "GuideLabel"; this.GuideLabel.Size = new System.Drawing.Size(267, 79); this.GuideLabel.TabIndex = 3; this.GuideLabel.Text = "Ensure that the character shown is the correct character to import.\r\n\r\nCharacters" + " can be imported and hidden later through the ESI keys management window."; // // ButtonNext // this.ButtonNext.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.ButtonNext.Location = new System.Drawing.Point(337, 177); this.ButtonNext.Name = "ButtonNext"; this.ButtonNext.Size = new System.Drawing.Size(75, 23); this.ButtonNext.TabIndex = 1; this.ButtonNext.Text = "&Next >"; this.ButtonNext.UseVisualStyleBackColor = true; this.ButtonNext.Click += new System.EventHandler(this.ButtonNext_Click); // // ButtonPrevious // this.ButtonPrevious.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.ButtonPrevious.Enabled = false; this.ButtonPrevious.Location = new System.Drawing.Point(256, 177); this.ButtonPrevious.Name = "ButtonPrevious"; this.ButtonPrevious.Size = new System.Drawing.Size(75, 23); this.ButtonPrevious.TabIndex = 0; this.ButtonPrevious.Text = "< &Previous"; this.ButtonPrevious.UseVisualStyleBackColor = true; this.ButtonPrevious.Click += new System.EventHandler(this.ButtonPrevious_Click); // // ButtonCancel // this.ButtonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.ButtonCancel.CausesValidation = false; this.ButtonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.ButtonCancel.Location = new System.Drawing.Point(435, 177); this.ButtonCancel.Name = "ButtonCancel"; this.ButtonCancel.Size = new System.Drawing.Size(75, 23); this.ButtonCancel.TabIndex = 2; this.ButtonCancel.Text = "&Cancel"; this.ButtonCancel.UseVisualStyleBackColor = true; this.ButtonCancel.Click += new System.EventHandler(this.ButtonCancel_Click); // // MultiPanel // this.MultiPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.MultiPanel.Controls.Add(this.CredentialsPage); this.MultiPanel.Controls.Add(this.ResultPage); this.MultiPanel.Location = new System.Drawing.Point(0, 0); this.MultiPanel.Name = "MultiPanel"; this.MultiPanel.SelectedPage = this.CredentialsPage; this.MultiPanel.Size = new System.Drawing.Size(522, 171); this.MultiPanel.TabIndex = 0; // // CredentialsPage // this.CredentialsPage.CausesValidation = false; this.CredentialsPage.Controls.Add(this.LabelShiftClick); this.CredentialsPage.Controls.Add(this.Throbber); this.CredentialsPage.Controls.Add(this.ButtonESILogin); this.CredentialsPage.Dock = System.Windows.Forms.DockStyle.Fill; this.CredentialsPage.Location = new System.Drawing.Point(0, 0); this.CredentialsPage.Name = "CredentialsPage"; this.CredentialsPage.Size = new System.Drawing.Size(522, 171); this.CredentialsPage.TabIndex = 0; this.CredentialsPage.Text = "credentialsPage"; // // Throbber // this.Throbber.Anchor = System.Windows.Forms.AnchorStyles.Top; this.Throbber.Location = new System.Drawing.Point(249, 76); this.Throbber.MaximumSize = new System.Drawing.Size(24, 24); this.Throbber.MinimumSize = new System.Drawing.Size(24, 24); this.Throbber.Name = "Throbber"; this.Throbber.Size = new System.Drawing.Size(24, 24); this.Throbber.State = EVEMon.Common.Enumerations.ThrobberState.Stopped; this.Throbber.TabIndex = 1; this.Throbber.TabStop = false; this.Throbber.Visible = false; // // ButtonESILogin // this.ButtonESILogin.Anchor = System.Windows.Forms.AnchorStyles.Top; this.ButtonESILogin.Image = ((System.Drawing.Image)(resources.GetObject("ButtonESILogin.Image"))); this.ButtonESILogin.Location = new System.Drawing.Point(126, 12); this.ButtonESILogin.Name = "ButtonESILogin"; this.ButtonESILogin.Size = new System.Drawing.Size(270, 45); this.ButtonESILogin.TabIndex = 0; this.ButtonESILogin.UseVisualStyleBackColor = true; this.ButtonESILogin.Click += new System.EventHandler(this.ButtonESILogin_Click); // // ResultPage // this.ResultPage.Controls.Add(this.KeyTableLayoutPanel); this.ResultPage.Controls.Add(this.CharactersGroupBox); this.ResultPage.Dock = System.Windows.Forms.DockStyle.Fill; this.ResultPage.Location = new System.Drawing.Point(0, 0); this.ResultPage.Name = "ResultPage"; this.ResultPage.Size = new System.Drawing.Size(522, 171); this.ResultPage.TabIndex = 2; this.ResultPage.Text = "resultPage"; // // KeyTableLayoutPanel // this.KeyTableLayoutPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.KeyTableLayoutPanel.AutoSize = true; this.KeyTableLayoutPanel.ColumnCount = 2; this.KeyTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 8.141962F)); this.KeyTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 91.85804F)); this.KeyTableLayoutPanel.Controls.Add(this.KeyLabel, 1, 0); this.KeyTableLayoutPanel.Controls.Add(this.KeyPicture, 0, 0); this.KeyTableLayoutPanel.Location = new System.Drawing.Point(12, 12); this.KeyTableLayoutPanel.Name = "KeyTableLayoutPanel"; this.KeyTableLayoutPanel.RowCount = 1; this.KeyTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); this.KeyTableLayoutPanel.Size = new System.Drawing.Size(498, 38); this.KeyTableLayoutPanel.TabIndex = 0; // // KeyLabel // this.KeyLabel.AutoSize = true; this.KeyLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.KeyLabel.Location = new System.Drawing.Point(43, 0); this.KeyLabel.Name = "KeyLabel"; this.KeyLabel.Size = new System.Drawing.Size(452, 38); this.KeyLabel.TabIndex = 1; this.KeyLabel.Text = "Short description on info retrieval procedure."; this.KeyLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // KeyPicture // this.KeyPicture.Image = ((System.Drawing.Image)(resources.GetObject("KeyPicture.Image"))); this.KeyPicture.Location = new System.Drawing.Point(3, 3); this.KeyPicture.Name = "KeyPicture"; this.KeyPicture.Size = new System.Drawing.Size(32, 32); this.KeyPicture.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; this.KeyPicture.TabIndex = 0; this.KeyPicture.TabStop = false; // // CharactersGroupBox // this.CharactersGroupBox.Controls.Add(this.ResultsMultiPanel); this.CharactersGroupBox.Location = new System.Drawing.Point(12, 50); this.CharactersGroupBox.Name = "CharactersGroupBox"; this.CharactersGroupBox.Size = new System.Drawing.Size(479, 118); this.CharactersGroupBox.TabIndex = 3; this.CharactersGroupBox.TabStop = false; this.CharactersGroupBox.Text = "Characters exposed by API key"; // // ResultsMultiPanel // this.ResultsMultiPanel.Controls.Add(this.CharactersListPage); this.ResultsMultiPanel.Controls.Add(this.AuthenticationErrorPage); this.ResultsMultiPanel.Controls.Add(this.LoginDeniedErrorPage); this.ResultsMultiPanel.Controls.Add(this.GeneralErrorPage); this.ResultsMultiPanel.Controls.Add(this.ESITokenFailedErrorPage); this.ResultsMultiPanel.Controls.Add(this.CachedWarningPage); this.ResultsMultiPanel.Dock = System.Windows.Forms.DockStyle.Fill; this.ResultsMultiPanel.Location = new System.Drawing.Point(3, 16); this.ResultsMultiPanel.Name = "ResultsMultiPanel"; this.ResultsMultiPanel.SelectedPage = this.ESITokenFailedErrorPage; this.ResultsMultiPanel.Size = new System.Drawing.Size(473, 99); this.ResultsMultiPanel.TabIndex = 5; // // CharactersListPage // this.CharactersListPage.Controls.Add(this.CharactersListView); this.CharactersListPage.Controls.Add(this.GuideLabel); this.CharactersListPage.Controls.Add(this.WarningLabel); this.CharactersListPage.Dock = System.Windows.Forms.DockStyle.Fill; this.CharactersListPage.Location = new System.Drawing.Point(0, 0); this.CharactersListPage.Name = "CharactersListPage"; this.CharactersListPage.Size = new System.Drawing.Size(473, 99); this.CharactersListPage.TabIndex = 0; this.CharactersListPage.Text = "charactersListPage"; // // CharactersListView // this.CharactersListView.BorderStyle = System.Windows.Forms.BorderStyle.None; this.CharactersListView.FullRowSelect = true; this.CharactersListView.HideSelection = false; listViewItem1.StateImageIndex = 0; listViewItem2.StateImageIndex = 0; listViewItem3.Checked = true; listViewItem3.StateImageIndex = 1; this.CharactersListView.Items.AddRange(new System.Windows.Forms.ListViewItem[] { listViewItem1, listViewItem2, listViewItem3}); this.CharactersListView.Location = new System.Drawing.Point(276, 3); this.CharactersListView.Name = "CharactersListView"; this.CharactersListView.Size = new System.Drawing.Size(197, 76); this.CharactersListView.TabIndex = 2; this.CharactersListView.UseCompatibleStateImageBehavior = false; this.CharactersListView.View = System.Windows.Forms.View.List; // // WarningLabel // this.WarningLabel.AutoSize = true; this.WarningLabel.ForeColor = System.Drawing.Color.DarkRed; this.WarningLabel.Location = new System.Drawing.Point(3, 82); this.WarningLabel.Name = "WarningLabel"; this.WarningLabel.Size = new System.Drawing.Size(402, 13); this.WarningLabel.TabIndex = 4; this.WarningLabel.Text = "Beware! When you remove characters, all their data and plans will be definitely l" + "ost !"; // // AuthenticationErrorPage // this.AuthenticationErrorPage.Controls.Add(this.AuthenticationErrorGuideLabel); this.AuthenticationErrorPage.Dock = System.Windows.Forms.DockStyle.Fill; this.AuthenticationErrorPage.Location = new System.Drawing.Point(0, 0); this.AuthenticationErrorPage.Name = "AuthenticationErrorPage"; this.AuthenticationErrorPage.Size = new System.Drawing.Size(473, 99); this.AuthenticationErrorPage.TabIndex = 1; this.AuthenticationErrorPage.Text = "authenticationErrorPage"; // // AuthenticationErrorGuideLabel // this.AuthenticationErrorGuideLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.AuthenticationErrorGuideLabel.Location = new System.Drawing.Point(0, 0); this.AuthenticationErrorGuideLabel.Name = "AuthenticationErrorGuideLabel"; this.AuthenticationErrorGuideLabel.Padding = new System.Windows.Forms.Padding(54, 0, 0, 0); this.AuthenticationErrorGuideLabel.Size = new System.Drawing.Size(473, 99); this.AuthenticationErrorGuideLabel.TabIndex = 0; this.AuthenticationErrorGuideLabel.Text = resources.GetString("AuthenticationErrorGuideLabel.Text"); this.AuthenticationErrorGuideLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // LoginDeniedErrorPage // this.LoginDeniedErrorPage.Controls.Add(this.LoginDeniedLinkLabel); this.LoginDeniedErrorPage.Dock = System.Windows.Forms.DockStyle.Fill; this.LoginDeniedErrorPage.Location = new System.Drawing.Point(0, 0); this.LoginDeniedErrorPage.Name = "LoginDeniedErrorPage"; this.LoginDeniedErrorPage.Size = new System.Drawing.Size(473, 99); this.LoginDeniedErrorPage.TabIndex = 2; this.LoginDeniedErrorPage.Text = "loginDeniedErrorPage"; // // LoginDeniedLinkLabel // this.LoginDeniedLinkLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.LoginDeniedLinkLabel.LinkArea = new System.Windows.Forms.LinkArea(149, 49); this.LoginDeniedLinkLabel.Location = new System.Drawing.Point(0, 0); this.LoginDeniedLinkLabel.Name = "LoginDeniedLinkLabel"; this.LoginDeniedLinkLabel.Padding = new System.Windows.Forms.Padding(40, 0, 0, 0); this.LoginDeniedLinkLabel.Size = new System.Drawing.Size(473, 99); this.LoginDeniedLinkLabel.TabIndex = 0; this.LoginDeniedLinkLabel.TabStop = true; this.LoginDeniedLinkLabel.Text = resources.GetString("LoginDeniedLinkLabel.Text"); this.LoginDeniedLinkLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.LoginDeniedLinkLabel.UseCompatibleTextRendering = true; this.LoginDeniedLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LoginDeniedLinkLabel_LinkClicked); // // GeneralErrorPage // this.GeneralErrorPage.Controls.Add(this.GeneralErrorLabel); this.GeneralErrorPage.Dock = System.Windows.Forms.DockStyle.Fill; this.GeneralErrorPage.Location = new System.Drawing.Point(0, 0); this.GeneralErrorPage.Name = "GeneralErrorPage"; this.GeneralErrorPage.Size = new System.Drawing.Size(473, 99); this.GeneralErrorPage.TabIndex = 3; this.GeneralErrorPage.Text = "generalErrorPage"; // // GeneralErrorLabel // this.GeneralErrorLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.GeneralErrorLabel.Location = new System.Drawing.Point(0, 0); this.GeneralErrorLabel.Name = "GeneralErrorLabel"; this.GeneralErrorLabel.Padding = new System.Windows.Forms.Padding(50, 0, 50, 0); this.GeneralErrorLabel.Size = new System.Drawing.Size(473, 99); this.GeneralErrorLabel.TabIndex = 0; this.GeneralErrorLabel.Text = "An error occurred while retrieving the information.\r\n\r\nThe error message was: {0}" + ""; this.GeneralErrorLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // ESITokenFailedErrorPage // this.ESITokenFailedErrorPage.Controls.Add(this.ESITokenFailedLabel); this.ESITokenFailedErrorPage.Dock = System.Windows.Forms.DockStyle.Fill; this.ESITokenFailedErrorPage.Location = new System.Drawing.Point(0, 0); this.ESITokenFailedErrorPage.Name = "ESITokenFailedErrorPage"; this.ESITokenFailedErrorPage.Size = new System.Drawing.Size(473, 99); this.ESITokenFailedErrorPage.TabIndex = 5; this.ESITokenFailedErrorPage.Text = ""; // // ESITokenFailedLabel // this.ESITokenFailedLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.ESITokenFailedLabel.Location = new System.Drawing.Point(0, 0); this.ESITokenFailedLabel.Name = "ESITokenFailedLabel"; this.ESITokenFailedLabel.Padding = new System.Windows.Forms.Padding(35, 0, 0, 0); this.ESITokenFailedLabel.Size = new System.Drawing.Size(473, 99); this.ESITokenFailedLabel.TabIndex = 0; this.ESITokenFailedLabel.Text = "EVEMon did not receive a valid response from the CCP SSO server.\r\n\r\nTry again in " + "a few minutes."; this.ESITokenFailedLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // CachedWarningPage // this.CachedWarningPage.Controls.Add(this.CachedWarningLabel); this.CachedWarningPage.Dock = System.Windows.Forms.DockStyle.Fill; this.CachedWarningPage.Location = new System.Drawing.Point(0, 0); this.CachedWarningPage.Name = "CachedWarningPage"; this.CachedWarningPage.Size = new System.Drawing.Size(473, 98); this.CachedWarningPage.TabIndex = 6; this.CachedWarningPage.Text = "cachedWarningPage"; // // CachedWarningLabel // this.CachedWarningLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.CachedWarningLabel.Location = new System.Drawing.Point(0, 0); this.CachedWarningLabel.Name = "CachedWarningLabel"; this.CachedWarningLabel.Size = new System.Drawing.Size(473, 98); this.CachedWarningLabel.TabIndex = 0; this.CachedWarningLabel.Text = "Due to the fact that the cached timer has not yet expired,\r\nyour query attempt wi" + "ll result in getting the same data you already have.\r\nTry again after: {0}"; this.CachedWarningLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // errorProvider // this.errorProvider.ContainerControl = this; // // LabelShiftClick // this.LabelShiftClick.Anchor = System.Windows.Forms.AnchorStyles.Top; this.LabelShiftClick.AutoSize = true; this.LabelShiftClick.Location = new System.Drawing.Point(111, 60); this.LabelShiftClick.Name = "LabelShiftClick"; this.LabelShiftClick.Size = new System.Drawing.Size(301, 13); this.LabelShiftClick.TabIndex = 2; this.LabelShiftClick.Text = "SHIFT+Click will copy ESI authentication URL to the clipboard"; this.LabelShiftClick.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // EsiKeyUpdateOrAdditionWindow // this.AcceptButton = this.ButtonNext; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.SystemColors.Window; this.CancelButton = this.ButtonCancel; this.ClientSize = new System.Drawing.Size(522, 212); this.Controls.Add(this.ButtonCancel); this.Controls.Add(this.ButtonPrevious); this.Controls.Add(this.ButtonNext); this.Controls.Add(this.MultiPanel); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "EsiKeyUpdateOrAdditionWindow"; this.Text = "ESI Key Import"; this.MultiPanel.ResumeLayout(false); this.CredentialsPage.ResumeLayout(false); this.CredentialsPage.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.Throbber)).EndInit(); this.ResultPage.ResumeLayout(false); this.ResultPage.PerformLayout(); this.KeyTableLayoutPanel.ResumeLayout(false); this.KeyTableLayoutPanel.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.KeyPicture)).EndInit(); this.CharactersGroupBox.ResumeLayout(false); this.ResultsMultiPanel.ResumeLayout(false); this.CharactersListPage.ResumeLayout(false); this.CharactersListPage.PerformLayout(); this.AuthenticationErrorPage.ResumeLayout(false); this.LoginDeniedErrorPage.ResumeLayout(false); this.GeneralErrorPage.ResumeLayout(false); this.ESITokenFailedErrorPage.ResumeLayout(false); this.CachedWarningPage.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit(); this.ResumeLayout(false); } #endregion private MultiPanel MultiPanel; private MultiPanelPage CredentialsPage; private System.Windows.Forms.Button ButtonNext; private System.Windows.Forms.Button ButtonPrevious; private System.Windows.Forms.Button ButtonCancel; private MultiPanelPage ResultPage; private System.Windows.Forms.PictureBox KeyPicture; private System.Windows.Forms.GroupBox CharactersGroupBox; private System.Windows.Forms.ListView CharactersListView; private System.Windows.Forms.Label WarningLabel; private System.Windows.Forms.TableLayoutPanel KeyTableLayoutPanel; private System.Windows.Forms.Label KeyLabel; private MultiPanel ResultsMultiPanel; private MultiPanelPage CharactersListPage; private MultiPanelPage AuthenticationErrorPage; private System.Windows.Forms.Label AuthenticationErrorGuideLabel; private System.Windows.Forms.ErrorProvider errorProvider; private MultiPanelPage LoginDeniedErrorPage; private System.Windows.Forms.LinkLabel LoginDeniedLinkLabel; private MultiPanelPage GeneralErrorPage; private System.Windows.Forms.Label GeneralErrorLabel; private MultiPanelPage ESITokenFailedErrorPage; private System.Windows.Forms.Label ESITokenFailedLabel; private MultiPanelPage CachedWarningPage; private System.Windows.Forms.Label CachedWarningLabel; private System.Windows.Forms.Label GuideLabel; private System.Windows.Forms.Button ButtonESILogin; private Throbber Throbber; private System.Windows.Forms.Label LabelShiftClick; } } ================================================ FILE: src/EVEMon/ApiCredentialsManagement/EsiKeyUpdateOrAdditionWindow.cs ================================================ using EVEMon.Common; using EVEMon.Common.Constants; using EVEMon.Common.Controls; using EVEMon.Common.Controls.MultiPanel; using EVEMon.Common.CustomEventArgs; using EVEMon.Common.Enumerations; using EVEMon.Common.Enumerations.CCPAPI; using EVEMon.Common.Helpers; using EVEMon.Common.Models; using EVEMon.Common.Properties; using EVEMon.Common.Serialization; using EVEMon.Common.Service; using EVEMon.SettingsUI; using System; using System.IO; using System.Threading.Tasks; using System.Windows.Forms; namespace EVEMon.ApiCredentialsManagement { public partial class EsiKeyUpdateOrAdditionWindow : EVEMonForm { private readonly SSOAuthenticationService m_authService; private readonly bool m_updateMode; private bool m_keyValid; private ESIKey m_esiKey; private ESIKeyCreationEventArgs m_creationArgs; private readonly SSOWebServerHttpListener m_server; private readonly string m_state; /// /// Constructor for new ESI credential. /// public EsiKeyUpdateOrAdditionWindow() { InitializeComponent(); m_keyValid = false; m_server = new SSOWebServerHttpListener(); m_state = DateTime.UtcNow.ToFileTime().ToString(); m_authService = SSOAuthenticationService.GetInstance(); } /// /// Constructor for editing existing ESI credentials. /// /// public EsiKeyUpdateOrAdditionWindow(ESIKey esiKey) : this() { m_esiKey = esiKey; m_updateMode = m_esiKey != null; } /// /// Starts the SSO server. /// private void StartServer() { try { m_server.Start(); WaitForToken(); } catch (IOException) { MessageBox.Show(string.Format(Properties.Resources.ErrorSSOStartup, SSOWebServerHttpListener.PORT), @"Cannot start authentication", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } /// /// Starts waiting for a token in the background, calling UpdateTokens when it arrives /// or fails. /// private void WaitForToken() { m_server.BeginWaitForCode(m_state, UpdateTokens); } /// /// Receives the result and updates the code text box if needed. /// /// private void UpdateTokens(Task results) { string code; if (results.IsFaulted) { // Retry and log ExceptionHandler.LogException(results.Exception, true); WaitForToken(); } else if (!results.IsCanceled && !string.IsNullOrEmpty(code = results.Result)) { // If a token is received, use SSOAuthenticationService to convert to a token // null is returned if the user cancels m_authService.VerifyAuthCode(code, GoToResults); Throbber.State = ThrobberState.Rotating; Throbber.Visible = true; } } /// /// Update the controls visibility depending on whether we are in update or creation mode. /// /// protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (DesignMode) return; if (m_authService == null) { MessageBox.Show(Properties.Resources.ErrorSetClientID, @"Client ID not set", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); Close(); // General > Network... using (SettingsForm form = new SettingsForm(0, 1)) { form.ShowDialog(this); } } WarningLabel.Visible = m_updateMode; CharactersListView.Items.Clear(); MultiPanel.SelectedPage = CredentialsPage; MultiPanel.SelectionChange += MultiPanel_SelectionChange; UpdateButtons(CredentialsPage); } /// /// When we switch panels, we update the "next", "previous" and "cancel" buttons. /// /// /// private void MultiPanel_SelectionChange(object sender, MultiPanelSelectionChangeEventArgs args) { UpdateButtons(args?.NewPage ?? MultiPanel.SelectedPage); } /// /// When we switch panels, we update the "next", "previous" and "cancel" buttons. /// /// The page selected. private void UpdateButtons(MultiPanelPage newPage) { bool nextPrev = false; if (newPage == CredentialsPage) StartServer(); else { nextPrev = true; ButtonNext.Text = m_updateMode ? "&Update" : "&Import"; ButtonNext.Focus(); } ButtonPrevious.Visible = nextPrev; ButtonPrevious.Enabled = nextPrev; ButtonNext.Visible = nextPrev; // Disable "Import" on error ButtonNext.Enabled = nextPrev && (newPage != ResultPage || m_keyValid); Throbber.State = ThrobberState.Stopped; Throbber.Visible = false; } /// /// Previous. /// When the previous button is clicked, we select the first page. /// /// /// private void ButtonPrevious_Click(object sender, EventArgs e) { if (MultiPanel.SelectedPage == ResultPage) MultiPanel.SelectedPage = CredentialsPage; } /// /// Cancel. /// Closes the window. /// /// /// private void ButtonCancel_Click(object sender, EventArgs e) { m_creationArgs = null; Close(); } /// /// Next / Import / Update. /// /// /// private void ButtonNext_Click(object sender, EventArgs e) { // Only works on the last page if (MultiPanel.SelectedPage == ResultPage) Complete(); } /// /// Goes to the results page once the key has been received from the server. /// private void GoToResults(AccessResponse response) { // Fail if an empty response is received bool failed = string.IsNullOrEmpty(response?.AccessToken) || string.IsNullOrEmpty( response?.RefreshToken); // If the arguments have not been invalidated since the last time... if (m_creationArgs != null) MultiPanel.SelectedPage = ResultPage; else if (failed) { // Error when fetching the key KeyPicture.Image = Resources.KeyWrong32; KeyLabel.Text = Properties.Resources.ErrorNoToken; CharactersGroupBox.Text = @"Error report"; ResultsMultiPanel.SelectedPage = ESITokenFailedErrorPage; MultiPanel.SelectedPage = ResultPage; m_keyValid = false; } else { long newID = DateTime.UtcNow.ToFileTime(); // Are we updating existing API key? if (m_updateMode) m_esiKey.TryUpdateAsync(response, OnUpdated); else ESIKey.TryAddOrUpdateAsync(newID, response, OnUpdated); } } /// /// Validates the operation and closes the window. /// private void Complete() { if (m_creationArgs == null) return; m_esiKey = m_creationArgs.CreateOrUpdate(); // Closes the window Close(); } /// /// When ESI credentials have been updated. /// /// private void OnUpdated(object sender, ESIKeyCreationEventArgs e) { m_creationArgs = e; var error = e.CCPError; CharactersGroupBox.Text = "Characters exposed by ESI key"; // Updates the picture and label for key type if (error != null) { string message = error.ErrorMessage; KeyPicture.Image = Resources.KeyWrong32; KeyLabel.Text = message; CharactersGroupBox.Text = "Error report"; ResultsMultiPanel.SelectedPage = GetErrorPage(e, message); m_keyValid = false; } else { var id = e.Identity; KeyPicture.Image = Resources.DefaultCharacterImage32; KeyLabel.Text = "This is a character ESI key."; ResultsMultiPanel.SelectedPage = CharactersListPage; // Updates the characters list CharactersListView.Items.Clear(); CharactersListView.Items.Add(new ListViewItem(id.CharacterName) { Tag = id, }); m_keyValid = true; } // Issue a warning if the ESI key has no scopes if (e.AccessMask == 0UL) { WarningLabel.Text = Properties.Resources.ErrorNoScopes; WarningLabel.Visible = true; } // Issue a warning if the ESI key does not have the basic scopes else if (e.AccessMask < (long)CCPAPIMethodsEnum.BasicCharacterFeatures) { WarningLabel.Text = Properties.Resources.ErrorFewScopes; WarningLabel.Visible = true; } else WarningLabel.Visible = m_updateMode; // Selects the last page MultiPanel.SelectedPage = ResultPage; } /// /// Gets the error page. /// /// The instance containing the /// event data. /// The error message. /// The error page to display. private MultiPanelPage GetErrorPage(ESIKeyCreationEventArgs e, string message) { if (e.CCPError.IsAuthenticationFailure) return AuthenticationErrorPage; if (e.CCPError.IsLoginDeniedByAccountStatus) return LoginDeniedErrorPage; GeneralErrorLabel.Text = string.Format(CultureConstants.DefaultCulture, GeneralErrorLabel.Text, message); return GeneralErrorPage; } /// /// On the first page, when a textbox is changed, we ensure the previously generated /// is destroyed. /// /// /// private void IDTextBox_TextChanged(object sender, EventArgs e) { m_creationArgs = null; } /// /// On the first page, when a textbox is changed, we ensure the previously generated /// is destroyed. /// /// /// private void VerificationCodeTextBox_TextChanged(object sender, EventArgs e) { m_creationArgs = null; } /// /// Handles the LinkClicked event of the LoginDeniedLinkLabel control. /// /// The source of the event. /// The /// instance containing the event data. private void LoginDeniedLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { Util.OpenURL(new Uri(NetworkConstants.CCPAccountManage)); } /// /// Starts a browser with the ESI login page. /// /// The source of the event. /// The instance containing the event /// data. private void ButtonESILogin_Click(object sender, EventArgs e) { if (ModifierKeys.HasFlag(Keys.Shift)) { if (m_authService != null) Clipboard.SetText(m_authService.GetAuthenticationURL(m_state, SSOWebServerHttpListener.PORT).ToString()); } else m_authService?.SpawnBrowserForLogin(m_state, SSOWebServerHttpListener.PORT); } } } ================================================ FILE: src/EVEMon/ApiCredentialsManagement/EsiKeyUpdateOrAdditionWindow.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 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 Either the ID or the Verification Code (or both) you provided was wrong. Select the "Previous" button and retry, entering the correct credentials. If this account was freshly created, you have to wait, at least one hour, for CCP to include it in the API. The subscription of the account, this API key belongs to, has expired. If the API key belongs to one of your accounts, consider re-subscribing at : https://secure.eveonline.com/AccountManMenu.aspx 17, 17 ================================================ FILE: src/EVEMon/ApiCredentialsManagement/EsiKeysListBox.cs ================================================ using EVEMon.Common.Constants; using EVEMon.Common.Controls; using EVEMon.Common.Factories; using EVEMon.Common.Models; using EVEMon.Common.Properties; using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; using System.Windows.Forms.VisualStyles; namespace EVEMon.ApiCredentialsManagement { /// /// Displays a list of API keys. /// public sealed class EsiKeysListBox : NoFlickerListBox { private readonly Font m_smallFont; private readonly Font m_smallBoldFont; private readonly Font m_strikeoutFont; private readonly Font m_middleFont; private readonly Font m_boldFont; private readonly List m_esiKeys = new List(); private bool m_pendingUpdate; /// /// Constructor. /// public EsiKeysListBox() { DrawMode = DrawMode.OwnerDrawFixed; DrawItem += OnDrawItem; m_smallFont = FontFactory.GetFont(Font.FontFamily, 6.5f); m_smallBoldFont = FontFactory.GetFont(m_smallFont, FontStyle.Bold); m_strikeoutFont = FontFactory.GetFont(m_smallFont, FontStyle.Strikeout); m_middleFont = FontFactory.GetFont(Font.FontFamily, 8.0f); m_boldFont = FontFactory.GetFont(Font, FontStyle.Bold); } /// /// Releases the unmanaged resources used by the /// and its child controls and optionally releases the managed resources. /// /// true to release both managed and unmanaged resources; false to release only unmanaged resources. protected override void Dispose(bool disposing) { DrawItem -= OnDrawItem; base.Dispose(disposing); } /// /// Gets or sets the enumeration of displayed ESI keys. /// [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public IEnumerable ESIKeys { get { return m_esiKeys; } set { m_esiKeys.Clear(); if (value != null) m_esiKeys.AddRange(value); UpdateContent(); } } /// /// Gets the size of the check box. /// /// The size of the check box. internal static Size CheckBoxSize => new Size(12, 12); /// /// Updates the content. /// private void UpdateContent() { if (!Visible) { m_pendingUpdate = true; return; } m_pendingUpdate = false; int scrollBarPosition = TopIndex; ESIKey oldSelection = SelectedItem as ESIKey; BeginUpdate(); try { Items.Clear(); foreach (ESIKey apiKey in ESIKeys) { Items.Add(apiKey); if (apiKey == oldSelection) SelectedIndex = Items.Count - 1; } } finally { EndUpdate(); TopIndex = scrollBarPosition; } } /// /// When the visibility changes, we check whether there is an update pending. /// /// protected override void OnVisibleChanged(EventArgs e) { base.OnVisibleChanged(e); if (Visible && m_pendingUpdate) UpdateContent(); } /// /// Draws the ESI key info. /// /// The sender. /// The instance containing the event data. private void OnDrawItem(object sender, DrawItemEventArgs e) { ItemHeight = m_boldFont.Height + m_middleFont.Height + m_smallBoldFont.Height * 2; // Background Graphics g = e.Graphics; bool isSelected = (e.State & DrawItemState.Selected) == DrawItemState.Selected; Brush fontBrush = isSelected ? SystemBrushes.HighlightText : SystemBrushes.ControlText; e.DrawBackground(); if (e.Index < 0 || e.Index >= Items.Count) return; ESIKey esiKey = (ESIKey)Items[e.Index]; Image icon = GetIcon(esiKey); Margin = new Padding((ItemHeight - icon.Height) / 2); int left = e.Bounds.Left + Margin.Left; int top = e.Bounds.Top + Margin.Top / 4; // Draws the checbox CheckBoxRenderer.DrawCheckBox(g, new Point(left, (ItemHeight - CheckBoxSize.Height) / 2), esiKey.Monitored ? CheckBoxState.CheckedNormal : CheckBoxState.UncheckedNormal); left += CheckBoxSize.Width + Margin.Left * 2; // Draws the picture of the API key type g.DrawImage(icon, new Rectangle(left, top + Margin.Top, icon.Width, icon.Height)); // Texts drawing DrawTexts(g, esiKey, left, top, fontBrush, icon); e.DrawFocusRectangle(); } /// /// Draws the texts. /// /// The top. /// The g. /// The ESI key. /// The left. /// The font brush. /// The icon. private void DrawTexts(Graphics g, ESIKey esiKey, int left, int top, Brush fontBrush, Image icon) { // Draws the texts on the upper third left += icon.Width + Margin.Left; // Api key ID string apiKeyId = esiKey.ID.ToString(CultureConstants.InvariantCulture); g.DrawString(apiKeyId, m_boldFont, fontBrush, new Point(left, top + 2)); int indentedLeft = left + g.MeasureString(apiKeyId, m_boldFont).ToSize().Width + Margin.Left * 2; // Api key verification code string tokenText = string.IsNullOrEmpty(esiKey.AccessToken) ? "No access token" : "Access token present"; g.DrawString(tokenText, Font, fontBrush, new Point(indentedLeft, top)); indentedLeft += g.MeasureString(esiKey.AccessToken, Font).ToSize().Width + Margin.Left * 2; // Draw the texts on the middle third top += g.MeasureString(apiKeyId, Font).ToSize().Height; #if false // Account header string accountHeader = "Account"; g.DrawString(accountHeader, m_boldFont, fontBrush, new Point(left, top)); indentedLeft = left + g.MeasureString(accountHeader, m_boldFont).ToSize().Width + Margin.Left * 2; // Account created string accountCreatedText = esiKey.AccountCreated != DateTime.MinValue ? esiKey.AccountCreated.ToLocalTime().ToString(CultureConstants.DefaultCulture) : "-"; string accountCreated = $"Created: {accountCreatedText}"; g.DrawString(accountCreated, m_middleFont, fontBrush, new Point(indentedLeft, top)); indentedLeft += g.MeasureString(accountCreated, m_middleFont).ToSize().Width + Margin.Left * 2; // Account paid until string accountPaidUntilText = esiKey.AccountExpires != DateTime.MinValue ? esiKey.AccountExpires.ToLocalTime().ToString(CultureConstants.DefaultCulture) : "-"; string accountPaidUntil = $"Paid Until: {accountPaidUntilText}"; g.DrawString(accountPaidUntil, m_middleFont, fontBrush, new Point(indentedLeft, top)); indentedLeft += g.MeasureString(accountPaidUntil, m_middleFont).ToSize().Width + Margin.Left * 2; // Account status header string accountStatusHeader = "Status: "; g.DrawString(accountStatusHeader, m_middleFont, fontBrush, new Point(indentedLeft, top)); indentedLeft += g.MeasureString(accountStatusHeader, m_middleFont).ToSize().Width; // Account status body string accountStatusBody = esiKey.AccountExpires != DateTime.MinValue ? esiKey.AccountExpires > DateTime.UtcNow ? "Active" : "Expired" : "-"; Brush accountStatusBrush = esiKey.AccountExpires != DateTime.MinValue ? new SolidBrush(esiKey.AccountExpires > DateTime.UtcNow ? Color.DarkGreen : Color.Red) : fontBrush; g.DrawString(accountStatusBody, m_middleFont, accountStatusBrush, new Point(indentedLeft, top)); // Draws the texts on the lower third top += g.MeasureString(accountCreated, m_middleFont).ToSize().Height; #endif bool isFirst = true; foreach (CharacterIdentity identity in esiKey.CharacterIdentities) { // Draws "; " between ids if (!isFirst) { g.DrawString("; ", m_smallFont, fontBrush, new Point(left, top)); left += g.MeasureString("; ", Font).ToSize().Width; } isFirst = false; // Selects font Font font = m_smallFont; CCPCharacter ccpCharacter = identity.CCPCharacter; if (ccpCharacter != null && ccpCharacter.Monitored) font = m_smallBoldFont; // Draws character's name g.DrawString(identity.CharacterName, font, fontBrush, new Point(left, top)); left += g.MeasureString(identity.CharacterName, font).ToSize().Width; } } /// /// Gets the icon. /// /// The API key. /// private static Image GetIcon(ESIKey apiKey) { Image icon; if (apiKey.HasError) icon = Resources.KeyWrong32; else icon = Resources.DefaultCharacterImage32; return icon; } } } ================================================ FILE: src/EVEMon/ApiCredentialsManagement/EsiKeysManagementWindow.Designer.cs ================================================ using EVEMon.Common.Controls.MultiPanel; namespace EVEMon.ApiCredentialsManagement { partial class EsiKeysManagementWindow { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem(new string[] { "", "CCP", "987654321", "John Doe", "123456", "Auto", "(none)"}, 0); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EsiKeysManagementWindow)); this.esiKeysLabel = new System.Windows.Forms.Label(); this.charactersLabel = new System.Windows.Forms.Label(); this.esiKeyListLabel = new System.Windows.Forms.Label(); this.charactersListLabel = new System.Windows.Forms.Label(); this.closeButton = new System.Windows.Forms.Button(); this.tabControl = new System.Windows.Forms.TabControl(); this.charactersTabPage = new System.Windows.Forms.TabPage(); this.charactersPagePanel = new System.Windows.Forms.Panel(); this.charactersMultiPanel = new EVEMon.Common.Controls.MultiPanel.MultiPanel(); this.charactersListPage = new EVEMon.Common.Controls.MultiPanel.MultiPanelPage(); this.charactersListView = new System.Windows.Forms.ListView(); this.columnMonitored = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnType = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnID = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnESIKeyID = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnStatus = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnUri = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.noCharactersPage = new EVEMon.Common.Controls.MultiPanel.MultiPanelPage(); this.charactersToolStrip = new System.Windows.Forms.ToolStrip(); this.importCharacterMenu = new System.Windows.Forms.ToolStripButton(); this.deleteCharacterMenu = new System.Windows.Forms.ToolStripButton(); this.editUriMenu = new System.Windows.Forms.ToolStripButton(); this.groupingMenu = new System.Windows.Forms.ToolStripButton(); this.esiKeysTabPage = new System.Windows.Forms.TabPage(); this.esiKeysPagePanel = new System.Windows.Forms.Panel(); this.esiKeysMultiPanel = new EVEMon.Common.Controls.MultiPanel.MultiPanel(); this.esiKeysListPage = new EVEMon.Common.Controls.MultiPanel.MultiPanelPage(); this.esiKeysListBox = new EVEMon.ApiCredentialsManagement.EsiKeysListBox(); this.noESIKeysPage = new EVEMon.Common.Controls.MultiPanel.MultiPanelPage(); this.esiKeysToolStrip = new System.Windows.Forms.ToolStrip(); this.addESIKeyMenu = new System.Windows.Forms.ToolStripButton(); this.deleteESIKeyMenu = new System.Windows.Forms.ToolStripButton(); this.editESIKeyMenu = new System.Windows.Forms.ToolStripButton(); this.tabControl.SuspendLayout(); this.charactersTabPage.SuspendLayout(); this.charactersPagePanel.SuspendLayout(); this.charactersMultiPanel.SuspendLayout(); this.charactersListPage.SuspendLayout(); this.noCharactersPage.SuspendLayout(); this.charactersToolStrip.SuspendLayout(); this.esiKeysTabPage.SuspendLayout(); this.esiKeysPagePanel.SuspendLayout(); this.esiKeysMultiPanel.SuspendLayout(); this.esiKeysListPage.SuspendLayout(); this.noESIKeysPage.SuspendLayout(); this.esiKeysToolStrip.SuspendLayout(); this.SuspendLayout(); // // esiKeysLabel // this.esiKeysLabel.AutoSize = true; this.esiKeysLabel.Dock = System.Windows.Forms.DockStyle.Top; this.esiKeysLabel.ForeColor = System.Drawing.SystemColors.Highlight; this.esiKeysLabel.Location = new System.Drawing.Point(3, 3); this.esiKeysLabel.Name = "esiKeysLabel"; this.esiKeysLabel.Size = new System.Drawing.Size(50, 13); this.esiKeysLabel.TabIndex = 1; this.esiKeysLabel.Text = "ESI Keys"; // // charactersLabel // this.charactersLabel.AutoSize = true; this.charactersLabel.Dock = System.Windows.Forms.DockStyle.Top; this.charactersLabel.ForeColor = System.Drawing.SystemColors.Highlight; this.charactersLabel.Location = new System.Drawing.Point(3, 3); this.charactersLabel.Name = "charactersLabel"; this.charactersLabel.Size = new System.Drawing.Size(58, 13); this.charactersLabel.TabIndex = 5; this.charactersLabel.Text = "Characters"; // // esiKeyListLabel // this.esiKeyListLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.esiKeyListLabel.ForeColor = System.Drawing.SystemColors.ControlDarkDark; this.esiKeyListLabel.Location = new System.Drawing.Point(0, 0); this.esiKeyListLabel.Name = "esiKeyListLabel"; this.esiKeyListLabel.Size = new System.Drawing.Size(796, 318); this.esiKeyListLabel.TabIndex = 0; this.esiKeyListLabel.Text = "First add your ESI key using the above buttons."; this.esiKeyListLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // charactersListLabel // this.charactersListLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.charactersListLabel.ForeColor = System.Drawing.SystemColors.ControlDarkDark; this.charactersListLabel.Location = new System.Drawing.Point(0, 0); this.charactersListLabel.Name = "charactersListLabel"; this.charactersListLabel.Size = new System.Drawing.Size(796, 318); this.charactersListLabel.TabIndex = 10; this.charactersListLabel.Text = "First add your ESI key at ESI Keys section, characters will then appear in this l" + "ist.\r\nYou can also import XML character sheets from files or URLs."; this.charactersListLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // closeButton // this.closeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.closeButton.CausesValidation = false; this.closeButton.Location = new System.Drawing.Point(732, 406); this.closeButton.Name = "closeButton"; this.closeButton.Size = new System.Drawing.Size(90, 23); this.closeButton.TabIndex = 9; this.closeButton.Text = "&Close"; this.closeButton.UseVisualStyleBackColor = true; this.closeButton.Click += new System.EventHandler(this.closeButton_Click); // // tabControl // this.tabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.tabControl.Controls.Add(this.charactersTabPage); this.tabControl.Controls.Add(this.esiKeysTabPage); this.tabControl.Location = new System.Drawing.Point(12, 12); this.tabControl.Name = "tabControl"; this.tabControl.SelectedIndex = 0; this.tabControl.Size = new System.Drawing.Size(810, 388); this.tabControl.TabIndex = 12; // // charactersTabPage // this.charactersTabPage.Controls.Add(this.charactersPagePanel); this.charactersTabPage.Controls.Add(this.charactersLabel); this.charactersTabPage.Location = new System.Drawing.Point(4, 22); this.charactersTabPage.Name = "charactersTabPage"; this.charactersTabPage.Padding = new System.Windows.Forms.Padding(3); this.charactersTabPage.Size = new System.Drawing.Size(802, 362); this.charactersTabPage.TabIndex = 1; this.charactersTabPage.Text = "Characters"; this.charactersTabPage.UseVisualStyleBackColor = true; // // charactersPagePanel // this.charactersPagePanel.Controls.Add(this.charactersMultiPanel); this.charactersPagePanel.Controls.Add(this.charactersToolStrip); this.charactersPagePanel.Dock = System.Windows.Forms.DockStyle.Fill; this.charactersPagePanel.Location = new System.Drawing.Point(3, 16); this.charactersPagePanel.Name = "charactersPagePanel"; this.charactersPagePanel.Size = new System.Drawing.Size(796, 343); this.charactersPagePanel.TabIndex = 16; // // charactersMultiPanel // this.charactersMultiPanel.Controls.Add(this.charactersListPage); this.charactersMultiPanel.Controls.Add(this.noCharactersPage); this.charactersMultiPanel.Dock = System.Windows.Forms.DockStyle.Fill; this.charactersMultiPanel.Location = new System.Drawing.Point(0, 25); this.charactersMultiPanel.Name = "charactersMultiPanel"; this.charactersMultiPanel.SelectedPage = this.charactersListPage; this.charactersMultiPanel.Size = new System.Drawing.Size(796, 318); this.charactersMultiPanel.TabIndex = 15; // // charactersListPage // this.charactersListPage.BackColor = System.Drawing.SystemColors.Window; this.charactersListPage.Controls.Add(this.charactersListView); this.charactersListPage.Dock = System.Windows.Forms.DockStyle.Fill; this.charactersListPage.Location = new System.Drawing.Point(0, 0); this.charactersListPage.Name = "charactersListPage"; this.charactersListPage.Size = new System.Drawing.Size(796, 318); this.charactersListPage.TabIndex = 0; this.charactersListPage.Text = "charactersListPage"; // // charactersListView // this.charactersListView.CheckBoxes = true; this.charactersListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.columnMonitored, this.columnType, this.columnID, this.columnName, this.columnESIKeyID, this.columnStatus, this.columnUri}); this.charactersListView.Dock = System.Windows.Forms.DockStyle.Fill; this.charactersListView.FullRowSelect = true; this.charactersListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; listViewItem1.StateImageIndex = 0; this.charactersListView.Items.AddRange(new System.Windows.Forms.ListViewItem[] { listViewItem1}); this.charactersListView.Location = new System.Drawing.Point(0, 0); this.charactersListView.MultiSelect = false; this.charactersListView.Name = "charactersListView"; this.charactersListView.Size = new System.Drawing.Size(796, 318); this.charactersListView.TabIndex = 12; this.charactersListView.UseCompatibleStateImageBehavior = false; this.charactersListView.View = System.Windows.Forms.View.Details; this.charactersListView.ColumnWidthChanging += new System.Windows.Forms.ColumnWidthChangingEventHandler(this.charactersListView_ColumnWidthChanging); this.charactersListView.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.charactersListView_ItemChecked); this.charactersListView.SelectedIndexChanged += new System.EventHandler(this.charactersListView_SelectedIndexChanged); this.charactersListView.DoubleClick += new System.EventHandler(this.charactersListView_DoubleClick); this.charactersListView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.charactersListView_KeyDown); // // columnMonitored // this.columnMonitored.Text = ""; this.columnMonitored.Width = 36; // // columnType // this.columnType.Text = "Type"; this.columnType.Width = 49; // // columnID // this.columnID.Text = "ID"; this.columnID.Width = 84; // // columnName // this.columnName.Text = "Name"; this.columnName.Width = 117; // // columnESIKeyID // this.columnESIKeyID.Text = "Key ID"; this.columnESIKeyID.Width = 75; // // columnStatus // this.columnStatus.Text = "Status"; // // columnUri // this.columnUri.Text = "Uri"; this.columnUri.Width = 358; // // noCharactersPage // this.noCharactersPage.Controls.Add(this.charactersListLabel); this.noCharactersPage.Dock = System.Windows.Forms.DockStyle.Fill; this.noCharactersPage.Location = new System.Drawing.Point(0, 0); this.noCharactersPage.Name = "noCharactersPage"; this.noCharactersPage.Size = new System.Drawing.Size(796, 318); this.noCharactersPage.TabIndex = 1; this.noCharactersPage.Text = "noCharactersPage"; // // charactersToolStrip // this.charactersToolStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; this.charactersToolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.importCharacterMenu, this.deleteCharacterMenu, this.editUriMenu, this.groupingMenu}); this.charactersToolStrip.Location = new System.Drawing.Point(0, 0); this.charactersToolStrip.Name = "charactersToolStrip"; this.charactersToolStrip.Size = new System.Drawing.Size(796, 25); this.charactersToolStrip.TabIndex = 13; // // importCharacterMenu // this.importCharacterMenu.Image = ((System.Drawing.Image)(resources.GetObject("importCharacterMenu.Image"))); this.importCharacterMenu.ImageTransparentColor = System.Drawing.Color.Magenta; this.importCharacterMenu.Name = "importCharacterMenu"; this.importCharacterMenu.Size = new System.Drawing.Size(72, 22); this.importCharacterMenu.Text = "&Import..."; this.importCharacterMenu.Click += new System.EventHandler(this.importCharacterMenu_Click); // // deleteCharacterMenu // this.deleteCharacterMenu.Enabled = false; this.deleteCharacterMenu.Image = ((System.Drawing.Image)(resources.GetObject("deleteCharacterMenu.Image"))); this.deleteCharacterMenu.ImageTransparentColor = System.Drawing.Color.Magenta; this.deleteCharacterMenu.Name = "deleteCharacterMenu"; this.deleteCharacterMenu.Size = new System.Drawing.Size(69, 22); this.deleteCharacterMenu.Text = "&Delete..."; this.deleteCharacterMenu.Click += new System.EventHandler(this.deleteCharacterMenu_Click); // // editUriMenu // this.editUriMenu.Enabled = false; this.editUriMenu.Image = ((System.Drawing.Image)(resources.GetObject("editUriMenu.Image"))); this.editUriMenu.ImageTransparentColor = System.Drawing.Color.Magenta; this.editUriMenu.Name = "editUriMenu"; this.editUriMenu.Size = new System.Drawing.Size(74, 22); this.editUriMenu.Text = "&Edit Uri..."; this.editUriMenu.Click += new System.EventHandler(this.editUriButton_Click); // // groupingMenu // this.groupingMenu.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; this.groupingMenu.Checked = true; this.groupingMenu.CheckOnClick = true; this.groupingMenu.CheckState = System.Windows.Forms.CheckState.Checked; this.groupingMenu.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.groupingMenu.ImageTransparentColor = System.Drawing.Color.Magenta; this.groupingMenu.Name = "groupingMenu"; this.groupingMenu.Size = new System.Drawing.Size(101, 22); this.groupingMenu.Text = "&Group characters"; this.groupingMenu.Click += new System.EventHandler(this.groupingMenu_Click); // // esiKeysTabPage // this.esiKeysTabPage.Controls.Add(this.esiKeysPagePanel); this.esiKeysTabPage.Controls.Add(this.esiKeysLabel); this.esiKeysTabPage.Location = new System.Drawing.Point(4, 22); this.esiKeysTabPage.Name = "esiKeysTabPage"; this.esiKeysTabPage.Padding = new System.Windows.Forms.Padding(3); this.esiKeysTabPage.Size = new System.Drawing.Size(802, 362); this.esiKeysTabPage.TabIndex = 0; this.esiKeysTabPage.Text = "ESI Keys"; this.esiKeysTabPage.UseVisualStyleBackColor = true; // // esiKeysPagePanel // this.esiKeysPagePanel.Controls.Add(this.esiKeysMultiPanel); this.esiKeysPagePanel.Controls.Add(this.esiKeysToolStrip); this.esiKeysPagePanel.Dock = System.Windows.Forms.DockStyle.Fill; this.esiKeysPagePanel.Location = new System.Drawing.Point(3, 16); this.esiKeysPagePanel.Name = "esiKeysPagePanel"; this.esiKeysPagePanel.Size = new System.Drawing.Size(796, 343); this.esiKeysPagePanel.TabIndex = 17; // // esiKeysMultiPanel // this.esiKeysMultiPanel.Controls.Add(this.esiKeysListPage); this.esiKeysMultiPanel.Controls.Add(this.noESIKeysPage); this.esiKeysMultiPanel.Dock = System.Windows.Forms.DockStyle.Fill; this.esiKeysMultiPanel.Location = new System.Drawing.Point(0, 25); this.esiKeysMultiPanel.Name = "esiKeysMultiPanel"; this.esiKeysMultiPanel.SelectedPage = this.noESIKeysPage; this.esiKeysMultiPanel.Size = new System.Drawing.Size(796, 318); this.esiKeysMultiPanel.TabIndex = 16; // // esiKeysListPage // this.esiKeysListPage.BackColor = System.Drawing.SystemColors.Window; this.esiKeysListPage.Controls.Add(this.esiKeysListBox); this.esiKeysListPage.Dock = System.Windows.Forms.DockStyle.Fill; this.esiKeysListPage.Location = new System.Drawing.Point(0, 0); this.esiKeysListPage.Name = "esiKeysListPage"; this.esiKeysListPage.Size = new System.Drawing.Size(796, 318); this.esiKeysListPage.TabIndex = 0; this.esiKeysListPage.Text = ""; // // esiKeysListBox // this.esiKeysListBox.BorderStyle = System.Windows.Forms.BorderStyle.None; this.esiKeysListBox.Dock = System.Windows.Forms.DockStyle.Fill; this.esiKeysListBox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; this.esiKeysListBox.FormattingEnabled = true; this.esiKeysListBox.ItemHeight = 46; this.esiKeysListBox.Location = new System.Drawing.Point(0, 0); this.esiKeysListBox.Name = "esiKeysListBox"; this.esiKeysListBox.Size = new System.Drawing.Size(796, 318); this.esiKeysListBox.TabIndex = 0; this.esiKeysListBox.MouseClick += new System.Windows.Forms.MouseEventHandler(this.apiKeysListBox_MouseClick); this.esiKeysListBox.SelectedIndexChanged += new System.EventHandler(this.apiKeysListBox_SelectedIndexChanged); this.esiKeysListBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.esiKeysListBox_KeyDown); this.esiKeysListBox.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.apiKeysListBox_MouseDoubleClick); // // noESIKeysPage // this.noESIKeysPage.Controls.Add(this.esiKeyListLabel); this.noESIKeysPage.Dock = System.Windows.Forms.DockStyle.Fill; this.noESIKeysPage.Location = new System.Drawing.Point(0, 0); this.noESIKeysPage.Name = "noESIKeysPage"; this.noESIKeysPage.Size = new System.Drawing.Size(796, 318); this.noESIKeysPage.TabIndex = 1; this.noESIKeysPage.Text = ""; // // esiKeysToolStrip // this.esiKeysToolStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; this.esiKeysToolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.addESIKeyMenu, this.deleteESIKeyMenu, this.editESIKeyMenu}); this.esiKeysToolStrip.Location = new System.Drawing.Point(0, 0); this.esiKeysToolStrip.Name = "esiKeysToolStrip"; this.esiKeysToolStrip.Size = new System.Drawing.Size(796, 25); this.esiKeysToolStrip.TabIndex = 3; // // addESIKeyMenu // this.addESIKeyMenu.Image = ((System.Drawing.Image)(resources.GetObject("addESIKeyMenu.Image"))); this.addESIKeyMenu.ImageTransparentColor = System.Drawing.Color.Magenta; this.addESIKeyMenu.Name = "addESIKeyMenu"; this.addESIKeyMenu.Size = new System.Drawing.Size(58, 22); this.addESIKeyMenu.Text = "&Add..."; this.addESIKeyMenu.Click += new System.EventHandler(this.addESIKeyMenu_Click); // // deleteESIKeyMenu // this.deleteESIKeyMenu.Enabled = false; this.deleteESIKeyMenu.Image = ((System.Drawing.Image)(resources.GetObject("deleteESIKeyMenu.Image"))); this.deleteESIKeyMenu.ImageTransparentColor = System.Drawing.Color.Magenta; this.deleteESIKeyMenu.Name = "deleteESIKeyMenu"; this.deleteESIKeyMenu.Size = new System.Drawing.Size(69, 22); this.deleteESIKeyMenu.Text = "&Delete..."; this.deleteESIKeyMenu.Click += new System.EventHandler(this.deleteESIKeyMenu_Click); // // editESIKeyMenu // this.editESIKeyMenu.Enabled = false; this.editESIKeyMenu.Image = ((System.Drawing.Image)(resources.GetObject("editESIKeyMenu.Image"))); this.editESIKeyMenu.ImageTransparentColor = System.Drawing.Color.Magenta; this.editESIKeyMenu.Name = "editESIKeyMenu"; this.editESIKeyMenu.Size = new System.Drawing.Size(56, 22); this.editESIKeyMenu.Text = "&Edit..."; this.editESIKeyMenu.Click += new System.EventHandler(this.editAPIKeyMenu_Click); // // EsiKeysManagementWindow // this.AcceptButton = this.closeButton; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.SystemColors.Window; this.CausesValidation = false; this.ClientSize = new System.Drawing.Size(834, 441); this.Controls.Add(this.tabControl); this.Controls.Add(this.closeButton); this.MaximizeBox = false; this.MinimumSize = new System.Drawing.Size(600, 400); this.Name = "EsiKeysManagementWindow"; this.Text = "ESI Keys Management"; this.tabControl.ResumeLayout(false); this.charactersTabPage.ResumeLayout(false); this.charactersTabPage.PerformLayout(); this.charactersPagePanel.ResumeLayout(false); this.charactersPagePanel.PerformLayout(); this.charactersMultiPanel.ResumeLayout(false); this.charactersListPage.ResumeLayout(false); this.noCharactersPage.ResumeLayout(false); this.charactersToolStrip.ResumeLayout(false); this.charactersToolStrip.PerformLayout(); this.esiKeysTabPage.ResumeLayout(false); this.esiKeysTabPage.PerformLayout(); this.esiKeysPagePanel.ResumeLayout(false); this.esiKeysPagePanel.PerformLayout(); this.esiKeysMultiPanel.ResumeLayout(false); this.esiKeysListPage.ResumeLayout(false); this.noESIKeysPage.ResumeLayout(false); this.esiKeysToolStrip.ResumeLayout(false); this.esiKeysToolStrip.PerformLayout(); this.ResumeLayout(false); } #endregion private System.Windows.Forms.Button closeButton; private System.Windows.Forms.TabControl tabControl; private System.Windows.Forms.TabPage esiKeysTabPage; private System.Windows.Forms.TabPage charactersTabPage; private System.Windows.Forms.ListView charactersListView; private System.Windows.Forms.ColumnHeader columnType; private System.Windows.Forms.ColumnHeader columnName; private System.Windows.Forms.ColumnHeader columnESIKeyID; private System.Windows.Forms.ColumnHeader columnUri; private System.Windows.Forms.ColumnHeader columnMonitored; private MultiPanel esiKeysMultiPanel; private MultiPanelPage esiKeysListPage; private MultiPanelPage noESIKeysPage; private MultiPanel charactersMultiPanel; private MultiPanelPage charactersListPage; private MultiPanelPage noCharactersPage; private System.Windows.Forms.ToolStrip charactersToolStrip; private System.Windows.Forms.ToolStripButton importCharacterMenu; private System.Windows.Forms.ToolStripButton deleteCharacterMenu; private System.Windows.Forms.ToolStripButton editUriMenu; private System.Windows.Forms.ToolStripButton groupingMenu; private System.Windows.Forms.ToolStrip esiKeysToolStrip; private System.Windows.Forms.ToolStripButton addESIKeyMenu; private System.Windows.Forms.ToolStripButton deleteESIKeyMenu; private System.Windows.Forms.ToolStripButton editESIKeyMenu; private System.Windows.Forms.Panel charactersPagePanel; private System.Windows.Forms.Panel esiKeysPagePanel; private System.Windows.Forms.Label esiKeysLabel; private System.Windows.Forms.Label charactersLabel; private System.Windows.Forms.Label esiKeyListLabel; private System.Windows.Forms.Label charactersListLabel; private EsiKeysListBox esiKeysListBox; private System.Windows.Forms.ColumnHeader columnID; private System.Windows.Forms.ColumnHeader columnStatus; } } ================================================ FILE: src/EVEMon/ApiCredentialsManagement/EsiKeysManagementWindow.cs ================================================ using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Windows.Forms; using EVEMon.Common; using EVEMon.Common.Constants; using EVEMon.Common.Controls; using EVEMon.Common.CustomEventArgs; using EVEMon.Common.Enumerations.CCPAPI; using EVEMon.Common.Factories; using EVEMon.Common.Models; namespace EVEMon.ApiCredentialsManagement { public partial class EsiKeysManagementWindow : EVEMonForm { private readonly Dictionary m_monitoredCharacters = new Dictionary(); private int m_refreshingCharactersCounter; /// /// Constructor. /// public EsiKeysManagementWindow() { InitializeComponent(); esiKeysListBox.Font = FontFactory.GetFont("Tahoma", 9.75f); charactersListView.Font = FontFactory.GetFont("Tahoma", 9.75f); esiKeysLabel.Font = FontFactory.GetFont("Tahoma", 12F); esiKeyListLabel.Font = FontFactory.GetFont("Tahoma", 12F); charactersLabel.Font = FontFactory.GetFont("Tahoma", 12F); charactersListLabel.Font = FontFactory.GetFont("Tahoma", 12F); } /// /// On loading, intialize the controls and subscribe events. /// /// protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (DesignMode) return; ListViewHelper.EnableDoubleBuffer(charactersListView); EveMonClient.ESIKeyCollectionChanged += EveMonClient_ESIKeyCollectionChanged; EveMonClient.ESIKeyInfoUpdated += EveMonClient_ESIKeyInfoUpdated; EveMonClient.CharacterCollectionChanged += EveMonClient_CharacterCollectionChanged; EveMonClient.CharacterUpdated += EveMonClient_CharacterUpdated; EveMonClient.AccountStatusUpdated += EveMonClient_AccountStatusUpdated; Disposed += OnDisposing; UpdateESIKeysList(); UpdateCharactersList(); AdjustLastColumn(); // Selects the second page if no API key known so far if (EveMonClient.Characters.Count == 0) tabControl.SelectedIndex = 1; } /// /// Occurs on disposing. /// /// The sender. /// The instance containing the event data. private void OnDisposing(object sender, EventArgs e) { // Unsubscribe events EveMonClient.ESIKeyCollectionChanged -= EveMonClient_ESIKeyCollectionChanged; EveMonClient.ESIKeyInfoUpdated -= EveMonClient_ESIKeyInfoUpdated; EveMonClient.CharacterCollectionChanged -= EveMonClient_CharacterCollectionChanged; EveMonClient.CharacterUpdated -= EveMonClient_CharacterUpdated; EveMonClient.AccountStatusUpdated -= EveMonClient_AccountStatusUpdated; Disposed -= OnDisposing; // Update the monitored status of selected characters foreach (var monitoredCharacter in m_monitoredCharacters) if (EveMonClient.Characters.Contains(monitoredCharacter.Key)) monitoredCharacter.Key.Monitored = monitoredCharacter.Value; } /// /// When the size changes, we adjust the characters' columns. /// /// protected override void OnSizeChanged(EventArgs e) { base.OnSizeChanged(e); if (charactersListView != null) AdjustLastColumn(); } #region Global Events Handlers /// /// When the ESI key collection changes, we update the content. /// /// /// private void EveMonClient_ESIKeyCollectionChanged(object sender, EventArgs e) { UpdateESIKeysList(); } /// /// When the ESI key info updates, we update the content. /// /// /// private void EveMonClient_ESIKeyInfoUpdated(object sender, EventArgs e) { if (!Visible) return; esiKeysListBox.Invalidate(); } /// /// When the characters collection changed, we update the characters list. /// /// /// private void EveMonClient_CharacterCollectionChanged(object sender, EventArgs e) { UpdateCharactersList(); } /// /// When the character changes, the displayed names changes too. /// /// /// private void EveMonClient_CharacterUpdated(object sender, CharacterChangedEventArgs e) { UpdateCharactersList(); } /// /// When the account status updates, we update the content. /// /// /// private void EveMonClient_AccountStatusUpdated(object sender, EventArgs e) { if (!Visible) return; esiKeysListBox.Invalidate(); } #endregion #region ESI keys management /// /// Updates the ESI keys list. /// private void UpdateESIKeysList() { if (!Visible) return; esiKeysListBox.ESIKeys = EveMonClient.ESIKeys; esiKeysMultiPanel.SelectedPage = EveMonClient.ESIKeys.Any() ? esiKeysListPage : noESIKeysPage; } /// /// Handles the MouseClick event of the apiKeysListBox control. /// /// The source of the event. /// The instance containing the event data. private void apiKeysListBox_MouseClick(object sender, MouseEventArgs e) { bool itemClicked = false; // Search for the clicked item for (int index = 0; index < esiKeysListBox.ESIKeys.Count(); index++) { Rectangle rect = esiKeysListBox.GetItemRectangle(index); // Did click occured generally on the item ? if (!rect.Contains(e.Location)) continue; itemClicked = true; int yOffset = (rect.Height - EsiKeysListBox.CheckBoxSize.Height) / 2; Rectangle cbRect = new Rectangle(rect.Left + esiKeysListBox.Margin.Left, rect.Top + yOffset, EsiKeysListBox.CheckBoxSize.Width, EsiKeysListBox.CheckBoxSize.Height); cbRect.Inflate(2, 2); // Did click occured on the checkbox ? if (e.Button == MouseButtons.Middle || !cbRect.Contains(e.Location)) continue; ESIKey esiKey = esiKeysListBox.ESIKeys.ElementAt(index); esiKey.Monitored = !esiKey.Monitored; esiKeysListBox.Invalidate(); } if (!itemClicked) esiKeysListBox.SelectedIndex = -1; } /// /// When the selection changes, we update the controls. /// /// /// private void apiKeysListBox_SelectedIndexChanged(object sender, EventArgs e) { deleteESIKeyMenu.Enabled = esiKeysListBox.SelectedIndex != -1; editESIKeyMenu.Enabled = esiKeysListBox.SelectedIndex != -1; } /// /// On double click, forces the edition. /// /// /// private void apiKeysListBox_MouseDoubleClick(object sender, MouseEventArgs e) { // Search for the double-clicked item int index = 0; foreach (ESIKey esiKey in esiKeysListBox.ESIKeys) { Rectangle rect = esiKeysListBox.GetItemRectangle(index); index++; if (!rect.Contains(e.Location)) continue; // Open the edition window using (EsiKeyUpdateOrAdditionWindow window = new EsiKeyUpdateOrAdditionWindow(esiKey)) { window.ShowDialog(this); return; } } } /// /// API key toolbar > Edit. /// /// /// private void editAPIKeyMenu_Click(object sender, EventArgs e) { ESIKey esiKey = esiKeysListBox.ESIKeys.ElementAt(esiKeysListBox.SelectedIndex); using (EsiKeyUpdateOrAdditionWindow window = new EsiKeyUpdateOrAdditionWindow(esiKey)) { window.ShowDialog(this); } } /// /// ESI key toolbar > Add. /// /// /// private void addESIKeyMenu_Click(object sender, EventArgs e) { using (EsiKeyUpdateOrAdditionWindow window = new EsiKeyUpdateOrAdditionWindow()) { window.ShowDialog(this); } } /// /// Accounts toolbar > Delete /// /// /// private void deleteESIKeyMenu_Click(object sender, EventArgs e) { if (esiKeysListBox.SelectedIndex == -1) return; ESIKey apiKey = esiKeysListBox.ESIKeys.ElementAt(esiKeysListBox.SelectedIndex); using (EsiKeyDeletionWindow window = new EsiKeyDeletionWindow(apiKey)) { window.ShowDialog(this); } deleteESIKeyMenu.Enabled = esiKeysListBox.SelectedIndex != -1; editESIKeyMenu.Enabled = esiKeysListBox.SelectedIndex != -1; } /// /// Handles the KeyDown event of the esiKeysListBox control. /// /// /// private void esiKeysListBox_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Delete) deleteESIKeyMenu_Click(sender, e); } #endregion #region Characters management /// /// Updates the characters list. /// private void UpdateCharactersList() { if (!Visible) return; // Begin the update m_refreshingCharactersCounter++; // Update the list view item UpdateCharactersListContent(); // Invalidates the API keys list esiKeysListBox.Invalidate(); // Make a help message appears when no characters exist charactersMultiPanel.SelectedPage = EveMonClient.Characters.Count == 0 ? noCharactersPage : charactersListPage; // End of the update m_refreshingCharactersCounter--; } /// /// Recreate the items in the characters listview /// private void UpdateCharactersListContent() { int position = charactersListView.GetVerticalScrollBarPosition(); charactersListView.BeginUpdate(); try { // Retrieve current selection and grouping option List oldSelection = new List(charactersListView.SelectedItems.Cast() .Select(x => x.Tag).OfType()); charactersListView.Groups.Clear(); charactersListView.Items.Clear(); // Grouping (no ESI key, ESI key #1, ESI key #2, character files, character urls) bool isGrouping = groupingMenu.Checked; ListViewGroup noESIKeyGroup = new ListViewGroup("No ESI key"); ListViewGroup fileGroup = new ListViewGroup("Character files"); ListViewGroup urlGroup = new ListViewGroup("Character urls"); Dictionary apiKeyGroups = new Dictionary(); if (isGrouping) ArrangeByGroup(fileGroup, apiKeyGroups, noESIKeyGroup, urlGroup); // Add items foreach (Character character in EveMonClient.Characters.OrderBy(x => x.Name)) { ListViewItem item = new ListViewItem { Checked = character.Monitored, Tag = character }; // Retrieve the texts for the different columns IEnumerable esiKeys = character.Identity.ESIKeys.OrderBy(esiKey => esiKey.ID); string apiKeyIDText = esiKeys.Any() ? string.Join(", ", esiKeys.Select(esiKey => esiKey.ID)) : string.Empty; string typeText = "CCP"; string uriText = "-"; UriCharacter uriCharacter = character as UriCharacter; if (uriCharacter != null) { typeText = uriCharacter.Uri.IsFile ? "File" : "Url"; uriText = uriCharacter.Uri.ToString(); if (isGrouping) item.Group = uriCharacter.Uri.IsFile ? fileGroup : urlGroup; } // Grouping CCP characters else if (isGrouping) { if (!esiKeys.Any()) item.Group = noESIKeyGroup; else item.Group = apiKeyGroups[esiKeys.First()]; } // Add the item and its subitems item.SubItems.Add(new ListViewItem.ListViewSubItem(item, typeText)); item.SubItems.Add(new ListViewItem.ListViewSubItem(item, character.CharacterID.ToString( CultureConstants.DefaultCulture))); item.SubItems.Add(new ListViewItem.ListViewSubItem(item, character.Name)); item.SubItems.Add(new ListViewItem.ListViewSubItem(item, apiKeyIDText)); item.SubItems.Add(new ListViewItem.ListViewSubItem(item, character. EffectiveCharacterStatus.ToString())); item.SubItems.Add(new ListViewItem.ListViewSubItem(item, uriText)); charactersListView.Items.Add(item); if (oldSelection.Contains(character)) item.Selected = true; } // Auto-resize the columns charactersListView.Columns.Cast().Where( column => column.Index != charactersListView.Columns.Count - 1).ToList().ForEach(column => column.Width = -2); AdjustLastColumn(); } finally { charactersListView.EndUpdate(); charactersListView.SetVerticalScrollBarPosition(position); } // Forces a refresh of the enabled/disabled items UpdateControlsUsability(); } /// /// Arranges the by group. /// /// The file group. /// The ESI key groups. /// The no ESI key group. /// The URL group. private void ArrangeByGroup(ListViewGroup fileGroup, Dictionary esiKeyGroups, ListViewGroup noESIKeyGroup, ListViewGroup urlGroup) { bool hasNoESIKey = false; bool hasFileChars = false; bool hasUrlChars = false; // Scroll through listview items to gather the groups foreach (Character character in EveMonClient.Characters) { UriCharacter uriCharacter = character as UriCharacter; // Uri character ? if (uriCharacter != null) { if (uriCharacter.Uri.IsFile) hasFileChars = true; else hasUrlChars = true; } // CCP character ? else { if (!character.Identity.ESIKeys.Any()) hasNoESIKey = true; else { foreach (ESIKey apiKey in character.Identity.ESIKeys.Where( esiKey => !esiKeyGroups.ContainsKey(esiKey))) { esiKeyGroups.Add(apiKey, new ListViewGroup($"Key ID #{apiKey.ID}")); } } } } // Add the groups if (hasNoESIKey) charactersListView.Groups.Add(noESIKeyGroup); foreach (ListViewGroup group in esiKeyGroups.Values) { charactersListView.Groups.Add(group); } if (hasFileChars) charactersListView.Groups.Add(fileGroup); if (hasUrlChars) charactersListView.Groups.Add(urlGroup); } /// /// Adjusts the last column width. /// private void AdjustLastColumn() { ColumnHeader lastColumn = charactersListView.Columns[charactersListView.Columns.Count - 1]; int pad = Size.Width - charactersListView.Size.Width; int width = charactersListView.Columns.Cast().Where(column => column.Index != lastColumn.Index).Select( column => column.Width).Sum(); int lastColumnMaxWidth = charactersListView.Columns[lastColumn.Index].ListView.Items.Cast().Select( item => TextRenderer.MeasureText(item.SubItems[lastColumn.Index].Text, Font).Width).Concat( new[] { TextRenderer.MeasureText(charactersListView.Columns[lastColumn.Index].Text, Font).Width }). Concat(new[] { charactersListView.ClientSize.Width - width - pad }).Max() + pad; lastColumn.Width = lastColumnMaxWidth; } /// /// Updates the controls usability. /// private void UpdateControlsUsability() { // "Edit uri" enabled when an uri char is selected editUriMenu.Enabled = charactersListView.SelectedItems.Count > 0 && charactersListView.SelectedItems[0].Tag is UriCharacter; // Delete char enabled if one character selected deleteCharacterMenu.Enabled = charactersListView.SelectedItems.Count > 0; } /// /// We monitor/unmonitor characters as they are checked. /// /// /// private void charactersListView_ItemChecked(object sender, ItemCheckedEventArgs e) { if (m_refreshingCharactersCounter != 0) return; // Add the character with changed monitoring status to the dictionary, // we will deal with them on closing Character character = (Character)e.Item.Tag; m_monitoredCharacters[character] = e.Item.Checked; } /// /// Handle the "delete" button. /// /// /// private void charactersListView_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Delete) deleteCharacterMenu_Click(sender, e); } /// /// On double click, we edit if this is an uri character. /// /// /// private void charactersListView_DoubleClick(object sender, EventArgs e) { editUriButton_Click(sender, e); } /// /// When the index changes, we enable or disable the toolbar buttons. /// /// /// private void charactersListView_SelectedIndexChanged(object sender, EventArgs e) { UpdateControlsUsability(); } /// /// Characters toolbar > Import... /// /// /// private void importCharacterMenu_Click(object sender, EventArgs e) { using (CharacterImportationWindow form = new CharacterImportationWindow()) { form.ShowDialog(this); } } /// /// Characters toolbar > Delete... /// /// /// private void deleteCharacterMenu_Click(object sender, EventArgs e) { // Retrieve the selected URI character if (charactersListView.SelectedItems.Count == 0) return; ListViewItem item = charactersListView.SelectedItems[0]; Character character = item.Tag as Character; // Opens the character deletion using (CharacterDeletionWindow window = new CharacterDeletionWindow(character)) { window.ShowDialog(this); } } /// /// Characters toolbar > Edit Uri... /// /// /// private void editUriButton_Click(object sender, EventArgs e) { // Retrieve the selected URI character if (charactersListView.SelectedItems.Count == 0) return; ListViewItem item = charactersListView.SelectedItems[0]; UriCharacter uriCharacter = item.Tag as UriCharacter; // Returns if the selected item is not an Uri character if (uriCharacter == null) return; // Opens the importation form using (CharacterImportationWindow form = new CharacterImportationWindow(uriCharacter)) { form.ShowDialog(this); } } /// /// Characters toolbar > Group items /// /// /// private void groupingMenu_Click(object sender, EventArgs e) { m_refreshingCharactersCounter++; UpdateCharactersListContent(); m_refreshingCharactersCounter--; } #endregion #region Local Events /// /// Close on "close" button click. /// /// /// private void closeButton_Click(object sender, EventArgs e) { Close(); } /// /// Handles the ColumnWidthChanging event of the charactersListView control. /// /// The source of the event. /// The instance containing the event data. private void charactersListView_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e) { e.Cancel = true; e.NewWidth = charactersListView.Columns[e.ColumnIndex].Width; } #endregion } } ================================================ FILE: src/EVEMon/ApiCredentialsManagement/EsiKeysManagementWindow.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 33, 22 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAITSURBVDhPY8AB2OOAYNWqVVvjosK6uBkYxKHixAFubm6x w4cP3v8PBEd2rf2vLie8AipFNOCqzEu9uWvd/P9F8d7/RbiYjgHFmICYBYhZoWy8QNRYRXqPrSLff2MJ rv/yQtybgWKCUMwHxGxAzAjEWIFoiLvdieuXT/3ftnjS31g3k39BVnL/jZQkNgLlTIBYFog5gJgZiDEB 0OjAWZ21IO//v3Jmz59We/u/kQ7K/wuCnN8BpcOAWAuIgeEKNgDTFQIcDPErZ/f837Nz27/N9fV/8iOd /3noS/3PSrL/CQyAXKASCyAGeQV7WPCyMsQvmNb2/8qVK3+2AQ2I8ND/Z6Mk/L/Wx+sX0IBqoBIfIAZ5 AxQOoEBFBRxMDFHT24r+b18/69/GJZP/RnsY/nPREgEaYPsLKN0KxIFADDIAZ2yIxwa7nrp9fs//eqAL Ip11/qlr6/8XlY/5zSBvvhoo7w/EokCMPQxAQFVGtKQ1Peh/qr/1P2tV0f+cZj6/GLzq/zNYp54DSlsC MS8Q404L+hoKqQdXTPnv7ev7T8Yl9j9Y886XEBqBVzB41HtBtaACIy3V+Cd3rvzXDStCaEbHMEOwAXZ2 dsXaytK99oHBTyVd0j7BDUHYDtGMwwUgv3GysbGpAmkDIDZkcC3dAtbkWbcKyMeZhJEBKIRBcQyKazYG lwo/Bo+6lQzutd4gSQRgYAAAxhfLOmTc9f8AAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJBSURBVDhPjZJfSJNhFMbP5tzmPjZKXWrZ0tXKdtFiU8xK F6yapBe1hehAV4H0B7IYFkmMj6gJRTdFVFhgf25soFLSQlvFMkJE6KJVRIE3devVbhzbd3pe2U24DR/4 wfuec97zvef5XiogXR8UjUZf9wW6bklEVbn42iRJ0obZ2cQiQ59mxnmHpWIsl1qzDEMD/T9nJkY5FOzg SoP6M2JqoAGluXVRmV3bNsVb603sqjbwlnJpCrH1OUxAC1Qgr8zHvW1zP77Oc+z53Wzv4UbFt9fCTmv1 S+QawWagByVgtdD62MjNsBifkwvxTMTtzvYc2MoXfZ4lpLuAHcDXlQarb7FOT8EXj25zfDqmTMly5kKP R2l3bORzp9zLMOA8SvYAMUp+L4ylFHxyf5iTyWQmhgbd7Q5lv7WCw51H0mhwFSWdQIwhfBCm/i+9mgIP hkP8ZnJEmXh6Jxvw7lYO2ivRoDWNdAT4QT0o+Deqev2H5n99ifM1zC+bTeyskbjFKqVw4uEgUaKJ6Azq 8nsgZKs1D0ZO+/ho807lAxHLJepMDdF7mej7Ava7iEIoK/wWHA11/Ymxe+x2N2Xbao0sq1Wi0fIrorSL aBQlFlDwHZDTbgv++Z3kGwMBPul18GOdJvsXX35LtISTHSgp/hJ1Op01PHTpnd+zb1GWpNRHFWW6ib6N E6XAXB0umSvNK9G9TKvV2rYTXREeOImeIdbSQHR9Gntc4fJKZREJhzVw3YGHfxZrMbP45+VGohNlRM1Y Q0T/AGCztFW8+bqAAAAAAElFTkSuQmCC iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAImSURBVDhPY8AB2OOAYNWqVVvjosK6uBkYxKHixAFubm6x w4cP3v8PBEd2rf2vLie8AipFNOCqzEu9uWvd/P9F8d7/RbiYjgHFmICYBYhZoWy8QNRYRXqPrSLff2MJ rv/yQtybgWKCUMwHxGxAzAjEWIFoiLvdieuXT/3ftnjS31g3k39BVnL/jZQkNgLlTIBYFog5gJgZiDEB 0OjAWZ21IO//v3Jmz59We/u/kQ7K/wuCnN8BpcOAWAuIgeEKNgDTFQIcDPErZ/f837Nz27/N9fV/8iOd /3noS/3PSrL/CQyA3BQ/v7h/Jib/b/Z2/wcqxwwLXlaG+AXT2v5fuXLlzzagAREe+v9slIT/1/p4/bKx spiyurHx/7+IoP8gQ4DKQYGKCjiYGKKmtxX9375+1r/6+vp/0R6G/1y0RP53xrv/njRp0v9t27b9n1aQ /393ba0pUDnW2BCPDXY9devc7v9AA/5EOuv8C7BW/L9zlsn/i7tM/jc0NPwvLy93AqrDHgYgoCojWtKR E/k/1d/6n7+dOlzz8gkm/0ODPeKBSniBGHda0NdQSD24Ysp/e2AMrJiOpDnAKhUoDUrWeNMBg5GWavzN y8f/r58H0Ty7w+S/lZVeM1BKBohBAYc/JbKzsyuumGrz/+j2nv+L+0z++7gabgEKWwExDxATTMYgBZwm wGiaWAd0doR7JJCvAsSgZIzf6UgAFMIgp4I0gDAoA2FxOgMDADzw0XYSH3YFAAAAAElFTkSuQmCC 182, 24 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKtSURBVDhPYxgIwAHE7BAmYcAoISEhys/PLwjl8+rp6enI yUloAdmcECFUwKgFBOLi4oogDojOycnJ83ZzzARxubi4JHU1NIzl5CSNQXyQGhQA1Ot048aN29N7my6y MjDoykiI2OVmpjb4uto2sDAwWAGViPBzsRpzsTKADBADYiaQPjgwN9SuvnX5zP9ZXZX/OVgYSrhYWY1V pPjqJfmZG5iZGZyUZGVNNJSVLYX5OE0EuFn1gFpEITqhQJCLNdVTXva3sRz7f05WxuZAX8/axMjQNmNN 2UZVacFGTTXlWA0NFXsJYT5ToFOM2dkZlKBaGRiYmZmdFi6Y8KG/sf5fRrD1f09DxbdeHi6bU+Ij+6z0 lJutdBV6dDSUKlRVFV2EeDktQAawsTGoQrUzMAjzc5W9enz7/8Nrp/+XJXr9zw+3/e9opXctLMh7io6C aKuphnS3jppCrbKCrL8gD4cN2AAGBjWodqBnBLkqnt059//i4c3/Y9z0/qf7mfy3NdW44+1qu0hDXqTb QFm4WdpOcINMqNA5CU++LlZWBn2gNnBsgQEfJ0vOvYt7/5/bu+p/pIvu/yQ3jf9qkkJ3LI11VqhICnTz cTGVSwXyX/X+b/BfIpz/GNB2daA2YYhuCJCpyw5/snxK439/K9X/8sJsr0UE+E7oqsoulrXn2SYdwflJ OlzwLMgA6Uj+o1IRggelogWyoHrBgDUj0v1EQ4b/f1c9kf9CXKxHtdRVZvu42k6SDxO8DdKIjqVi+bdD 9YIBc3NV4aHNiyb8Lwkz/y8nwrkLmPK8xUVEvMVc+CZKRfIdko4XfA3TCMJAfipULwQAk66vvrbGJAlh nkmsTExhQCFQHgAmSgaglxlYZBKEtoEMANFAPlbACMSgTMIDxKBch5JUQTaCNCNsZmAAAM/Wv1R/XfPh AAAAAElFTkSuQmCC iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMPSURBVDhPjZMLSFNhFMeve2933m132nzUVjln1szssVlq WktctcpHMstyxUJmqZkPoheGryyNHizpQUIRlfTAlmYviwoqLQMhlB5WksSSyMpAy/R07hYmWdAffnD4 c/7nft/9vo8YKbVaHaBSqSZhKXI7blEURWu1mqljSFLxyxotPz+/oPr6q3W1F050aNTKVWixGZ+maSon N3fH09ZHXdYViUfRkjD+KE3RjF/d0nzX2XL7EoQGq05wudwQtNkSiWhGecnOhp53HZCfnvICPaMr8Kfw cwajXtO5RKeEsXJRTUnJruraCzU35+rDygJ8xKdTY0Ngsj/5ClsN7gQhRDzcJUFo0y0pl8/s2923ITkK IkLHvW1ocPR0PnsCGWlJzvWW+K6q4myIC5X0BfpKz2G/HvFCuEyYoMT8jHuNjk+979/AkbJNsHyuBiym cDAbQiAt0QCNV2rhceNFsCXowTw/qIcUcosw5ocIXAPGSMXbWx/f/tzT1Q4F1njIWbMUSvPWwZrwYDDN DoQDpVvAXr4dkrFeOcv7m5dEeApj0xDaNYCmBFubHtT1dr9sguULwqD60B64at8HQxQF29Q+kGaKAHPU TLgvl0IhTQ3JSIEDYwsQH9cAPpsdd6xi6+uWG2dgWZQWHDXH4cnd67B/ohJ6pVI4pPKFm95yeE55go4W 9vM5Hsx/iEXkrgEoUcrC8Gv2mOjByGAFXDx5EL462yDTbITjMjGAvz/0yuUQTXIHBSyiFfs3I9MR5iRc YlnNi88fKc6EhNkToKokGw6XFw4VJMfBHVoCH2kavshkEC0TDZIcj0vYr0OY/bOYMCPWiuT4Sntlcact KdK5dqHug8WSNNDs6w1tnp5gJIXfC2WSH4M4xMbjPsT+0Veax+NNUigUVj6fY1sUo3NYTKqB+2ISdBS3 XyoW3pKLROeLOJy3ZwWCdvJvA0bKZJyXX1GY152aqOuPDPR6w2MRG9EW4aHPwVe2CGv3+f9LuJrA8cqx WUpfxV4hn5OFFvMuhvf7v+IhYgRX7KqH7/1vEcRPO3cLlcOCMdEAAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJcSURBVDhPY6A2YNQCAnFxcUUoHwZwiaMCoBqnGzdu3J7e 23SRlYFBFyqMUxwDmBtqV9+6fOb/rK7K/xwsDKUgW8XExJTQxEugyhmhNAIIcrGmesrL/jaWY/+vp6M5 9fbt23eAtl4W5GZthImzsTAUAJVyAjEvEDOB9IEBMzOz08IFEz70N9b/ywi2/h/jZfoZZmuKv/93mLiH ofQLFhamdKAWWSBmA2sGAWF+rrJXj2//f3jt9P+yRK//IQ5a/71MZP+BbO1uqf5/4+zh/wUxbv/zwmz/ u5kb7/lnYvL/Zm/3f6h2BgZRQa6KZ3fO/b94ePN/D3OV/+uXzvp/Zt/G/yBb47yM/zdW5P0PstP8Xxzv 9X91Y+P/fxFB/0GGQLUzMPBxsuTcu7j3/7m9q/47Gyv9h7lmUlvF//xw2//xwW7/EwJM/k+aNOn/tm3b /k8ryP8/KTHRBaodDGTqssOfLJ/S+N9eX+4/yDUXDm36H+Om9z/dz+R/Upj9/52zTP5f3GXyv6Gh4b+X l1cWUA8oIOGANSPS/URDhv9/MxXB/yDXnNm7+n+ki+7/vAgzuOblE0z+O9qb1wDVqwIxC1gnFDA3VxUe 2rxowv8MX8P/9dERP0CuSQo0+b9iOkKzg7nKKaBaLZB6sC5kAEyqvvraGpMkBHmnpEV43O4sjfm/fh5E 8+wOk/9W5lpbWJmYIoFKBSA6MAEodYESCX9zVd6RFVNt/h/d3vN/cZ/J/7g4F5BGfiDmAGJEAsIFQK4x AUbTxDqT/06uZmVAIZy24gIw1/AAMchWTD8zMDAAABupFmmInoHqAAAAAElFTkSuQmCC ================================================ FILE: src/EVEMon/App.config ================================================ 
%appdata%/EVEMon/AccountInfo.xml ================================================ FILE: src/EVEMon/BlankCharacter/BlankCharacterControl.Designer.cs ================================================ namespace EVEMon.BlankCharacter { partial class BlankCharacterControl { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Component Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BlankCharacterControl)); this.rbFemale = new System.Windows.Forms.RadioButton(); this.rbMale = new System.Windows.Forms.RadioButton(); this.tbCharacterName = new System.Windows.Forms.TextBox(); this.gbRace = new System.Windows.Forms.GroupBox(); this.tlpRaces = new System.Windows.Forms.TableLayoutPanel(); this.pictureBox3 = new System.Windows.Forms.PictureBox(); this.pictureBox2 = new System.Windows.Forms.PictureBox(); this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.rbCaldari = new System.Windows.Forms.RadioButton(); this.rbAmarr = new System.Windows.Forms.RadioButton(); this.rbGallente = new System.Windows.Forms.RadioButton(); this.rbMinmatar = new System.Windows.Forms.RadioButton(); this.pbAmarr = new System.Windows.Forms.PictureBox(); this.gbBloodline = new System.Windows.Forms.GroupBox(); this.tlpBloodline = new System.Windows.Forms.TableLayoutPanel(); this.rbBloodline3 = new System.Windows.Forms.RadioButton(); this.rbBloodline2 = new System.Windows.Forms.RadioButton(); this.pbBloodline3 = new System.Windows.Forms.PictureBox(); this.pbBloodline1 = new System.Windows.Forms.PictureBox(); this.pbBloodline2 = new System.Windows.Forms.PictureBox(); this.rbBloodline1 = new System.Windows.Forms.RadioButton(); this.gbAncestry = new System.Windows.Forms.GroupBox(); this.tlpAncestry = new System.Windows.Forms.TableLayoutPanel(); this.lblAncestry1 = new System.Windows.Forms.Label(); this.rbAncestry2 = new System.Windows.Forms.RadioButton(); this.pbAncestry1 = new System.Windows.Forms.PictureBox(); this.rbAncestry1 = new System.Windows.Forms.RadioButton(); this.rbAncestry3 = new System.Windows.Forms.RadioButton(); this.lblAncestry3 = new System.Windows.Forms.Label(); this.lblAncestry2 = new System.Windows.Forms.Label(); this.pbAncestry2 = new System.Windows.Forms.PictureBox(); this.pbAncestry3 = new System.Windows.Forms.PictureBox(); this.ilAncestry = new System.Windows.Forms.ImageList(this.components); this.gbGender = new System.Windows.Forms.GroupBox(); this.gbCharacterName = new System.Windows.Forms.GroupBox(); this.ilBloodline = new System.Windows.Forms.ImageList(this.components); this.tlpGender = new System.Windows.Forms.TableLayoutPanel(); this.pbFemale = new System.Windows.Forms.PictureBox(); this.pbMale = new System.Windows.Forms.PictureBox(); this.lblFemale = new System.Windows.Forms.Label(); this.lblMale = new System.Windows.Forms.Label(); this.gbRace.SuspendLayout(); this.tlpRaces.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pbAmarr)).BeginInit(); this.gbBloodline.SuspendLayout(); this.tlpBloodline.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbBloodline3)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pbBloodline1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pbBloodline2)).BeginInit(); this.gbAncestry.SuspendLayout(); this.tlpAncestry.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbAncestry1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pbAncestry2)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pbAncestry3)).BeginInit(); this.gbGender.SuspendLayout(); this.gbCharacterName.SuspendLayout(); this.tlpGender.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbFemale)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pbMale)).BeginInit(); this.SuspendLayout(); // // rbFemale // this.rbFemale.AutoSize = true; this.rbFemale.Checked = true; this.rbFemale.Dock = System.Windows.Forms.DockStyle.Fill; this.rbFemale.Location = new System.Drawing.Point(3, 3); this.rbFemale.Name = "rbFemale"; this.rbFemale.Padding = new System.Windows.Forms.Padding(20, 0, 0, 0); this.tlpGender.SetRowSpan(this.rbFemale, 2); this.rbFemale.Size = new System.Drawing.Size(43, 94); this.rbFemale.TabIndex = 0; this.rbFemale.TabStop = true; this.rbFemale.UseVisualStyleBackColor = true; this.rbFemale.Click += new System.EventHandler(this.rbFemale_Click); // // rbMale // this.rbMale.AutoSize = true; this.rbMale.Dock = System.Windows.Forms.DockStyle.Fill; this.rbMale.Location = new System.Drawing.Point(3, 103); this.rbMale.Name = "rbMale"; this.rbMale.Padding = new System.Windows.Forms.Padding(20, 0, 0, 0); this.tlpGender.SetRowSpan(this.rbMale, 2); this.rbMale.Size = new System.Drawing.Size(43, 87); this.rbMale.TabIndex = 1; this.rbMale.UseVisualStyleBackColor = true; this.rbMale.Click += new System.EventHandler(this.rbMale_Click); // // tbCharacterName // this.tbCharacterName.Dock = System.Windows.Forms.DockStyle.Fill; this.tbCharacterName.Location = new System.Drawing.Point(13, 16); this.tbCharacterName.Name = "tbCharacterName"; this.tbCharacterName.Size = new System.Drawing.Size(200, 20); this.tbCharacterName.TabIndex = 4; this.tbCharacterName.TextChanged += new System.EventHandler(this.tbCharacterName_TextChanged); // // gbRace // this.gbRace.Controls.Add(this.tlpRaces); this.gbRace.Location = new System.Drawing.Point(13, 13); this.gbRace.Name = "gbRace"; this.gbRace.Size = new System.Drawing.Size(470, 135); this.gbRace.TabIndex = 5; this.gbRace.TabStop = false; this.gbRace.Text = "Race"; // // tlpRaces // this.tlpRaces.ColumnCount = 4; this.tlpRaces.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); this.tlpRaces.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); this.tlpRaces.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); this.tlpRaces.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); this.tlpRaces.Controls.Add(this.pictureBox3, 3, 0); this.tlpRaces.Controls.Add(this.pictureBox2, 2, 0); this.tlpRaces.Controls.Add(this.pictureBox1, 1, 0); this.tlpRaces.Controls.Add(this.rbCaldari, 1, 1); this.tlpRaces.Controls.Add(this.rbAmarr, 0, 1); this.tlpRaces.Controls.Add(this.rbGallente, 2, 1); this.tlpRaces.Controls.Add(this.rbMinmatar, 3, 1); this.tlpRaces.Controls.Add(this.pbAmarr, 0, 0); this.tlpRaces.Dock = System.Windows.Forms.DockStyle.Fill; this.tlpRaces.Location = new System.Drawing.Point(3, 16); this.tlpRaces.Name = "tlpRaces"; this.tlpRaces.RowCount = 2; this.tlpRaces.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 71.94244F)); this.tlpRaces.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 28.05755F)); this.tlpRaces.Size = new System.Drawing.Size(464, 116); this.tlpRaces.TabIndex = 0; // // pictureBox3 // this.pictureBox3.Dock = System.Windows.Forms.DockStyle.Fill; this.pictureBox3.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox3.Image"))); this.pictureBox3.Location = new System.Drawing.Point(351, 3); this.pictureBox3.Name = "pictureBox3"; this.pictureBox3.Size = new System.Drawing.Size(110, 77); this.pictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pictureBox3.TabIndex = 7; this.pictureBox3.TabStop = false; // // pictureBox2 // this.pictureBox2.Dock = System.Windows.Forms.DockStyle.Fill; this.pictureBox2.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox2.Image"))); this.pictureBox2.Location = new System.Drawing.Point(235, 3); this.pictureBox2.Name = "pictureBox2"; this.pictureBox2.Size = new System.Drawing.Size(110, 77); this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pictureBox2.TabIndex = 6; this.pictureBox2.TabStop = false; // // pictureBox1 // this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill; this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); this.pictureBox1.Location = new System.Drawing.Point(119, 3); this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Size = new System.Drawing.Size(110, 77); this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pictureBox1.TabIndex = 5; this.pictureBox1.TabStop = false; // // rbCaldari // this.rbCaldari.AutoSize = true; this.rbCaldari.Location = new System.Drawing.Point(168, 86); this.rbCaldari.Margin = new System.Windows.Forms.Padding(52, 3, 3, 3); this.rbCaldari.Name = "rbCaldari"; this.rbCaldari.Size = new System.Drawing.Size(14, 13); this.rbCaldari.TabIndex = 1; this.rbCaldari.UseVisualStyleBackColor = true; this.rbCaldari.Click += new System.EventHandler(this.rbCaldari_Click); // // rbAmarr // this.rbAmarr.AutoSize = true; this.rbAmarr.Checked = true; this.rbAmarr.Location = new System.Drawing.Point(52, 86); this.rbAmarr.Margin = new System.Windows.Forms.Padding(52, 3, 3, 3); this.rbAmarr.Name = "rbAmarr"; this.rbAmarr.RightToLeft = System.Windows.Forms.RightToLeft.No; this.rbAmarr.Size = new System.Drawing.Size(14, 13); this.rbAmarr.TabIndex = 0; this.rbAmarr.TabStop = true; this.rbAmarr.UseVisualStyleBackColor = true; this.rbAmarr.Click += new System.EventHandler(this.rbAmarr_Click); // // rbGallente // this.rbGallente.AutoSize = true; this.rbGallente.Location = new System.Drawing.Point(284, 86); this.rbGallente.Margin = new System.Windows.Forms.Padding(52, 3, 3, 3); this.rbGallente.Name = "rbGallente"; this.rbGallente.Size = new System.Drawing.Size(14, 13); this.rbGallente.TabIndex = 2; this.rbGallente.UseVisualStyleBackColor = true; this.rbGallente.Click += new System.EventHandler(this.rbGallente_Click); // // rbMinmatar // this.rbMinmatar.AutoSize = true; this.rbMinmatar.Location = new System.Drawing.Point(400, 86); this.rbMinmatar.Margin = new System.Windows.Forms.Padding(52, 3, 3, 3); this.rbMinmatar.Name = "rbMinmatar"; this.rbMinmatar.Size = new System.Drawing.Size(14, 13); this.rbMinmatar.TabIndex = 3; this.rbMinmatar.UseVisualStyleBackColor = true; this.rbMinmatar.Click += new System.EventHandler(this.rbMinmatar_Click); // // pbAmarr // this.pbAmarr.Dock = System.Windows.Forms.DockStyle.Fill; this.pbAmarr.Image = ((System.Drawing.Image)(resources.GetObject("pbAmarr.Image"))); this.pbAmarr.Location = new System.Drawing.Point(3, 3); this.pbAmarr.Name = "pbAmarr"; this.pbAmarr.Size = new System.Drawing.Size(110, 77); this.pbAmarr.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pbAmarr.TabIndex = 4; this.pbAmarr.TabStop = false; // // gbBloodline // this.gbBloodline.Controls.Add(this.tlpBloodline); this.gbBloodline.Location = new System.Drawing.Point(13, 156); this.gbBloodline.Name = "gbBloodline"; this.gbBloodline.Size = new System.Drawing.Size(148, 212); this.gbBloodline.TabIndex = 6; this.gbBloodline.TabStop = false; this.gbBloodline.Text = "Bloodline"; // // tlpBloodline // this.tlpBloodline.ColumnCount = 2; this.tlpBloodline.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35F)); this.tlpBloodline.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 65F)); this.tlpBloodline.Controls.Add(this.rbBloodline3, 0, 2); this.tlpBloodline.Controls.Add(this.rbBloodline2, 0, 1); this.tlpBloodline.Controls.Add(this.pbBloodline3, 1, 2); this.tlpBloodline.Controls.Add(this.pbBloodline1, 1, 0); this.tlpBloodline.Controls.Add(this.pbBloodline2, 1, 1); this.tlpBloodline.Controls.Add(this.rbBloodline1, 0, 0); this.tlpBloodline.Dock = System.Windows.Forms.DockStyle.Fill; this.tlpBloodline.Location = new System.Drawing.Point(3, 16); this.tlpBloodline.Name = "tlpBloodline"; this.tlpBloodline.Padding = new System.Windows.Forms.Padding(0, 0, 0, 6); this.tlpBloodline.RowCount = 3; this.tlpBloodline.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); this.tlpBloodline.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); this.tlpBloodline.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); this.tlpBloodline.Size = new System.Drawing.Size(142, 193); this.tlpBloodline.TabIndex = 0; // // rbBloodline3 // this.rbBloodline3.AutoSize = true; this.rbBloodline3.Dock = System.Windows.Forms.DockStyle.Fill; this.rbBloodline3.Location = new System.Drawing.Point(3, 127); this.rbBloodline3.Name = "rbBloodline3"; this.rbBloodline3.Padding = new System.Windows.Forms.Padding(20, 0, 0, 0); this.rbBloodline3.Size = new System.Drawing.Size(43, 57); this.rbBloodline3.TabIndex = 5; this.rbBloodline3.UseVisualStyleBackColor = true; this.rbBloodline3.Click += new System.EventHandler(this.rbBloodline3_Click); // // rbBloodline2 // this.rbBloodline2.AutoSize = true; this.rbBloodline2.Dock = System.Windows.Forms.DockStyle.Fill; this.rbBloodline2.Location = new System.Drawing.Point(3, 65); this.rbBloodline2.Name = "rbBloodline2"; this.rbBloodline2.Padding = new System.Windows.Forms.Padding(20, 0, 0, 0); this.rbBloodline2.Size = new System.Drawing.Size(43, 56); this.rbBloodline2.TabIndex = 4; this.rbBloodline2.UseVisualStyleBackColor = true; this.rbBloodline2.Click += new System.EventHandler(this.rbBloodline2_Click); // // pbBloodline3 // this.pbBloodline3.Dock = System.Windows.Forms.DockStyle.Fill; this.pbBloodline3.Image = ((System.Drawing.Image)(resources.GetObject("pbBloodline3.Image"))); this.pbBloodline3.Location = new System.Drawing.Point(49, 124); this.pbBloodline3.Margin = new System.Windows.Forms.Padding(0); this.pbBloodline3.Name = "pbBloodline3"; this.pbBloodline3.Size = new System.Drawing.Size(93, 63); this.pbBloodline3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pbBloodline3.TabIndex = 2; this.pbBloodline3.TabStop = false; // // pbBloodline1 // this.pbBloodline1.Dock = System.Windows.Forms.DockStyle.Fill; this.pbBloodline1.Image = ((System.Drawing.Image)(resources.GetObject("pbBloodline1.Image"))); this.pbBloodline1.Location = new System.Drawing.Point(49, 0); this.pbBloodline1.Margin = new System.Windows.Forms.Padding(0); this.pbBloodline1.Name = "pbBloodline1"; this.pbBloodline1.Padding = new System.Windows.Forms.Padding(0, 0, 0, 5); this.pbBloodline1.Size = new System.Drawing.Size(93, 62); this.pbBloodline1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pbBloodline1.TabIndex = 0; this.pbBloodline1.TabStop = false; // // pbBloodline2 // this.pbBloodline2.Dock = System.Windows.Forms.DockStyle.Fill; this.pbBloodline2.Image = ((System.Drawing.Image)(resources.GetObject("pbBloodline2.Image"))); this.pbBloodline2.Location = new System.Drawing.Point(49, 62); this.pbBloodline2.Margin = new System.Windows.Forms.Padding(0); this.pbBloodline2.Name = "pbBloodline2"; this.pbBloodline2.Padding = new System.Windows.Forms.Padding(0, 0, 0, 5); this.pbBloodline2.Size = new System.Drawing.Size(93, 62); this.pbBloodline2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pbBloodline2.TabIndex = 1; this.pbBloodline2.TabStop = false; // // rbBloodline1 // this.rbBloodline1.AutoSize = true; this.rbBloodline1.Checked = true; this.rbBloodline1.Dock = System.Windows.Forms.DockStyle.Fill; this.rbBloodline1.Location = new System.Drawing.Point(3, 3); this.rbBloodline1.Name = "rbBloodline1"; this.rbBloodline1.Padding = new System.Windows.Forms.Padding(20, 0, 0, 0); this.rbBloodline1.Size = new System.Drawing.Size(43, 56); this.rbBloodline1.TabIndex = 3; this.rbBloodline1.TabStop = true; this.rbBloodline1.UseVisualStyleBackColor = true; this.rbBloodline1.Click += new System.EventHandler(this.rbBloodline1_Click); // // gbAncestry // this.gbAncestry.Controls.Add(this.tlpAncestry); this.gbAncestry.Location = new System.Drawing.Point(165, 156); this.gbAncestry.Name = "gbAncestry"; this.gbAncestry.Size = new System.Drawing.Size(166, 212); this.gbAncestry.TabIndex = 7; this.gbAncestry.TabStop = false; this.gbAncestry.Text = "Ancestry"; // // tlpAncestry // this.tlpAncestry.ColumnCount = 2; this.tlpAncestry.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35F)); this.tlpAncestry.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 65F)); this.tlpAncestry.Controls.Add(this.lblAncestry1, 1, 1); this.tlpAncestry.Controls.Add(this.rbAncestry2, 0, 2); this.tlpAncestry.Controls.Add(this.pbAncestry1, 1, 0); this.tlpAncestry.Controls.Add(this.rbAncestry1, 0, 0); this.tlpAncestry.Controls.Add(this.rbAncestry3, 0, 4); this.tlpAncestry.Controls.Add(this.lblAncestry3, 1, 5); this.tlpAncestry.Controls.Add(this.lblAncestry2, 1, 3); this.tlpAncestry.Controls.Add(this.pbAncestry2, 1, 2); this.tlpAncestry.Controls.Add(this.pbAncestry3, 1, 4); this.tlpAncestry.Dock = System.Windows.Forms.DockStyle.Fill; this.tlpAncestry.Location = new System.Drawing.Point(3, 16); this.tlpAncestry.Name = "tlpAncestry"; this.tlpAncestry.Padding = new System.Windows.Forms.Padding(0, 0, 0, 6); this.tlpAncestry.RowCount = 6; this.tlpAncestry.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 44F)); this.tlpAncestry.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.32972F)); this.tlpAncestry.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 44F)); this.tlpAncestry.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33514F)); this.tlpAncestry.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 44F)); this.tlpAncestry.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33514F)); this.tlpAncestry.Size = new System.Drawing.Size(160, 193); this.tlpAncestry.TabIndex = 0; // // lblAncestry1 // this.lblAncestry1.AutoSize = true; this.lblAncestry1.Dock = System.Windows.Forms.DockStyle.Fill; this.lblAncestry1.ImageIndex = 0; this.lblAncestry1.Location = new System.Drawing.Point(56, 44); this.lblAncestry1.Margin = new System.Windows.Forms.Padding(0); this.lblAncestry1.Name = "lblAncestry1"; this.lblAncestry1.Size = new System.Drawing.Size(104, 18); this.lblAncestry1.TabIndex = 8; this.lblAncestry1.Text = "Liberal Holders"; this.lblAncestry1.TextAlign = System.Drawing.ContentAlignment.TopCenter; // // rbAncestry2 // this.rbAncestry2.AutoSize = true; this.rbAncestry2.Dock = System.Windows.Forms.DockStyle.Fill; this.rbAncestry2.Location = new System.Drawing.Point(3, 65); this.rbAncestry2.Name = "rbAncestry2"; this.rbAncestry2.Padding = new System.Windows.Forms.Padding(20, 0, 0, 0); this.tlpAncestry.SetRowSpan(this.rbAncestry2, 2); this.rbAncestry2.Size = new System.Drawing.Size(50, 56); this.rbAncestry2.TabIndex = 5; this.rbAncestry2.UseVisualStyleBackColor = true; this.rbAncestry2.Click += new System.EventHandler(this.rbAncestry2_Click); // // pbAncestry1 // this.pbAncestry1.Dock = System.Windows.Forms.DockStyle.Fill; this.pbAncestry1.Location = new System.Drawing.Point(56, 0); this.pbAncestry1.Margin = new System.Windows.Forms.Padding(0); this.pbAncestry1.Name = "pbAncestry1"; this.pbAncestry1.Size = new System.Drawing.Size(104, 44); this.pbAncestry1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pbAncestry1.TabIndex = 2; this.pbAncestry1.TabStop = false; // // rbAncestry1 // this.rbAncestry1.AutoSize = true; this.rbAncestry1.Checked = true; this.rbAncestry1.Dock = System.Windows.Forms.DockStyle.Fill; this.rbAncestry1.Location = new System.Drawing.Point(3, 3); this.rbAncestry1.Name = "rbAncestry1"; this.rbAncestry1.Padding = new System.Windows.Forms.Padding(20, 0, 0, 0); this.tlpAncestry.SetRowSpan(this.rbAncestry1, 2); this.rbAncestry1.Size = new System.Drawing.Size(50, 56); this.rbAncestry1.TabIndex = 4; this.rbAncestry1.TabStop = true; this.rbAncestry1.UseVisualStyleBackColor = true; this.rbAncestry1.Click += new System.EventHandler(this.rbAncestry1_Click); // // rbAncestry3 // this.rbAncestry3.AutoSize = true; this.rbAncestry3.Dock = System.Windows.Forms.DockStyle.Fill; this.rbAncestry3.Location = new System.Drawing.Point(3, 127); this.rbAncestry3.Name = "rbAncestry3"; this.rbAncestry3.Padding = new System.Windows.Forms.Padding(20, 0, 0, 0); this.tlpAncestry.SetRowSpan(this.rbAncestry3, 2); this.rbAncestry3.Size = new System.Drawing.Size(50, 57); this.rbAncestry3.TabIndex = 6; this.rbAncestry3.UseVisualStyleBackColor = true; this.rbAncestry3.Click += new System.EventHandler(this.rbAncestry3_Click); // // lblAncestry3 // this.lblAncestry3.AutoSize = true; this.lblAncestry3.Dock = System.Windows.Forms.DockStyle.Fill; this.lblAncestry3.ImageIndex = 2; this.lblAncestry3.Location = new System.Drawing.Point(56, 168); this.lblAncestry3.Margin = new System.Windows.Forms.Padding(0); this.lblAncestry3.Name = "lblAncestry3"; this.lblAncestry3.Size = new System.Drawing.Size(104, 19); this.lblAncestry3.TabIndex = 9; this.lblAncestry3.Text = "Religious Reclaimers"; this.lblAncestry3.TextAlign = System.Drawing.ContentAlignment.TopCenter; // // lblAncestry2 // this.lblAncestry2.AutoSize = true; this.lblAncestry2.Dock = System.Windows.Forms.DockStyle.Fill; this.lblAncestry2.ImageIndex = 1; this.lblAncestry2.Location = new System.Drawing.Point(56, 106); this.lblAncestry2.Margin = new System.Windows.Forms.Padding(0); this.lblAncestry2.Name = "lblAncestry2"; this.lblAncestry2.Size = new System.Drawing.Size(104, 18); this.lblAncestry2.TabIndex = 7; this.lblAncestry2.Text = "Weathy Commoners"; this.lblAncestry2.TextAlign = System.Drawing.ContentAlignment.TopCenter; // // pbAncestry2 // this.pbAncestry2.Dock = System.Windows.Forms.DockStyle.Fill; this.pbAncestry2.Location = new System.Drawing.Point(59, 65); this.pbAncestry2.Name = "pbAncestry2"; this.pbAncestry2.Size = new System.Drawing.Size(98, 38); this.pbAncestry2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pbAncestry2.TabIndex = 10; this.pbAncestry2.TabStop = false; // // pbAncestry3 // this.pbAncestry3.Dock = System.Windows.Forms.DockStyle.Fill; this.pbAncestry3.Location = new System.Drawing.Point(59, 127); this.pbAncestry3.Name = "pbAncestry3"; this.pbAncestry3.Size = new System.Drawing.Size(98, 38); this.pbAncestry3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pbAncestry3.TabIndex = 11; this.pbAncestry3.TabStop = false; // // ilAncestry // this.ilAncestry.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilAncestry.ImageStream"))); this.ilAncestry.TransparentColor = System.Drawing.Color.Transparent; this.ilAncestry.Images.SetKeyName(0, "Liberal.png"); this.ilAncestry.Images.SetKeyName(1, "Wealthy.png"); this.ilAncestry.Images.SetKeyName(2, "Religious.png"); this.ilAncestry.Images.SetKeyName(3, "Free.png"); this.ilAncestry.Images.SetKeyName(4, "Border.png"); this.ilAncestry.Images.SetKeyName(5, "Navy.png"); this.ilAncestry.Images.SetKeyName(6, "Cyber.png"); this.ilAncestry.Images.SetKeyName(7, "Unionists.png"); this.ilAncestry.Images.SetKeyName(8, "Zealots.png"); this.ilAncestry.Images.SetKeyName(9, "Merchandisers.png"); this.ilAncestry.Images.SetKeyName(10, "Scientists.png"); this.ilAncestry.Images.SetKeyName(11, "Tube.png"); this.ilAncestry.Images.SetKeyName(12, "Entrepreneurs.png"); this.ilAncestry.Images.SetKeyName(13, "Mercs.png"); this.ilAncestry.Images.SetKeyName(14, "Dissenters.png"); this.ilAncestry.Images.SetKeyName(15, "Inventors.png"); this.ilAncestry.Images.SetKeyName(16, "Monks.png"); this.ilAncestry.Images.SetKeyName(17, "Stargazers.png"); this.ilAncestry.Images.SetKeyName(18, "Activists.png"); this.ilAncestry.Images.SetKeyName(19, "Miners.png"); this.ilAncestry.Images.SetKeyName(20, "Immigrants.png"); this.ilAncestry.Images.SetKeyName(21, "Artists.png"); this.ilAncestry.Images.SetKeyName(22, "Diplomats.png"); this.ilAncestry.Images.SetKeyName(23, "Reborn.png"); this.ilAncestry.Images.SetKeyName(24, "Sang.png"); this.ilAncestry.Images.SetKeyName(25, "Saan.png"); this.ilAncestry.Images.SetKeyName(26, "Jing.png"); this.ilAncestry.Images.SetKeyName(27, "Tinkerers.png"); this.ilAncestry.Images.SetKeyName(28, "Traders.png"); this.ilAncestry.Images.SetKeyName(29, "Rebels.png"); this.ilAncestry.Images.SetKeyName(30, "Workers.png"); this.ilAncestry.Images.SetKeyName(31, "Tribal.png"); this.ilAncestry.Images.SetKeyName(32, "Slave.png"); this.ilAncestry.Images.SetKeyName(33, "Drifters.png"); this.ilAncestry.Images.SetKeyName(34, "Mystics.png"); this.ilAncestry.Images.SetKeyName(35, "Retailers.png"); // // gbGender // this.gbGender.Controls.Add(this.tlpGender); this.gbGender.Location = new System.Drawing.Point(337, 156); this.gbGender.Name = "gbGender"; this.gbGender.Size = new System.Drawing.Size(146, 212); this.gbGender.TabIndex = 8; this.gbGender.TabStop = false; this.gbGender.Text = "Gender"; // // gbCharacterName // this.gbCharacterName.Controls.Add(this.tbCharacterName); this.gbCharacterName.Location = new System.Drawing.Point(135, 371); this.gbCharacterName.Name = "gbCharacterName"; this.gbCharacterName.Padding = new System.Windows.Forms.Padding(13, 3, 13, 3); this.gbCharacterName.Size = new System.Drawing.Size(226, 46); this.gbCharacterName.TabIndex = 9; this.gbCharacterName.TabStop = false; this.gbCharacterName.Text = "Blank Character Name"; // // ilBloodline // this.ilBloodline.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilBloodline.ImageStream"))); this.ilBloodline.TransparentColor = System.Drawing.Color.Transparent; this.ilBloodline.Images.SetKeyName(0, "amarr.png"); this.ilBloodline.Images.SetKeyName(1, "ni-kunni.png"); this.ilBloodline.Images.SetKeyName(2, "khanid.png"); this.ilBloodline.Images.SetKeyName(3, "deteis.png"); this.ilBloodline.Images.SetKeyName(4, "civire.png"); this.ilBloodline.Images.SetKeyName(5, "achura.png"); this.ilBloodline.Images.SetKeyName(6, "gallente.png"); this.ilBloodline.Images.SetKeyName(7, "intaki.png"); this.ilBloodline.Images.SetKeyName(8, "jin-mei.png"); this.ilBloodline.Images.SetKeyName(9, "sebiestor.png"); this.ilBloodline.Images.SetKeyName(10, "brutor.png"); this.ilBloodline.Images.SetKeyName(11, "verokhior.png"); // // tlpGender // this.tlpGender.ColumnCount = 2; this.tlpGender.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35F)); this.tlpGender.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 65F)); this.tlpGender.Controls.Add(this.rbFemale, 0, 0); this.tlpGender.Controls.Add(this.pbFemale, 1, 0); this.tlpGender.Controls.Add(this.rbMale, 0, 2); this.tlpGender.Controls.Add(this.pbMale, 1, 2); this.tlpGender.Controls.Add(this.lblFemale, 1, 1); this.tlpGender.Controls.Add(this.lblMale, 1, 3); this.tlpGender.Dock = System.Windows.Forms.DockStyle.Fill; this.tlpGender.Location = new System.Drawing.Point(3, 16); this.tlpGender.Name = "tlpGender"; this.tlpGender.RowCount = 4; this.tlpGender.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.tlpGender.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); this.tlpGender.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.tlpGender.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); this.tlpGender.Size = new System.Drawing.Size(140, 193); this.tlpGender.TabIndex = 2; // // pbFemale // this.pbFemale.Dock = System.Windows.Forms.DockStyle.Fill; this.pbFemale.Image = ((System.Drawing.Image)(resources.GetObject("pbFemale.Image"))); this.pbFemale.Location = new System.Drawing.Point(52, 3); this.pbFemale.Name = "pbFemale"; this.pbFemale.Size = new System.Drawing.Size(85, 74); this.pbFemale.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pbFemale.TabIndex = 2; this.pbFemale.TabStop = false; // // pbMale // this.pbMale.Dock = System.Windows.Forms.DockStyle.Fill; this.pbMale.Image = ((System.Drawing.Image)(resources.GetObject("pbMale.Image"))); this.pbMale.Location = new System.Drawing.Point(52, 103); this.pbMale.Name = "pbMale"; this.pbMale.Size = new System.Drawing.Size(85, 66); this.pbMale.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pbMale.TabIndex = 3; this.pbMale.TabStop = false; // // lblFemale // this.lblFemale.AutoSize = true; this.lblFemale.Dock = System.Windows.Forms.DockStyle.Fill; this.lblFemale.Location = new System.Drawing.Point(52, 80); this.lblFemale.Name = "lblFemale"; this.lblFemale.Size = new System.Drawing.Size(85, 20); this.lblFemale.TabIndex = 4; this.lblFemale.Text = "Female"; this.lblFemale.TextAlign = System.Drawing.ContentAlignment.TopCenter; // // lblMale // this.lblMale.AutoSize = true; this.lblMale.Dock = System.Windows.Forms.DockStyle.Fill; this.lblMale.Location = new System.Drawing.Point(52, 172); this.lblMale.Name = "lblMale"; this.lblMale.Size = new System.Drawing.Size(85, 21); this.lblMale.TabIndex = 5; this.lblMale.Text = "Male"; this.lblMale.TextAlign = System.Drawing.ContentAlignment.TopCenter; // // BlankCharacterControl // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.Color.Transparent; this.Controls.Add(this.gbCharacterName); this.Controls.Add(this.gbGender); this.Controls.Add(this.gbAncestry); this.Controls.Add(this.gbBloodline); this.Controls.Add(this.gbRace); this.Name = "BlankCharacterControl"; this.Size = new System.Drawing.Size(497, 425); this.Load += new System.EventHandler(this.BlankCharacterControl_Load); this.gbRace.ResumeLayout(false); this.tlpRaces.ResumeLayout(false); this.tlpRaces.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pbAmarr)).EndInit(); this.gbBloodline.ResumeLayout(false); this.tlpBloodline.ResumeLayout(false); this.tlpBloodline.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbBloodline3)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pbBloodline1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pbBloodline2)).EndInit(); this.gbAncestry.ResumeLayout(false); this.tlpAncestry.ResumeLayout(false); this.tlpAncestry.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbAncestry1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pbAncestry2)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pbAncestry3)).EndInit(); this.gbGender.ResumeLayout(false); this.gbCharacterName.ResumeLayout(false); this.gbCharacterName.PerformLayout(); this.tlpGender.ResumeLayout(false); this.tlpGender.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbFemale)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pbMale)).EndInit(); this.ResumeLayout(false); } #endregion private System.Windows.Forms.GroupBox gbRace; private System.Windows.Forms.RadioButton rbAmarr; private System.Windows.Forms.GroupBox gbBloodline; private System.Windows.Forms.GroupBox gbAncestry; private System.Windows.Forms.GroupBox gbGender; private System.Windows.Forms.GroupBox gbCharacterName; private System.Windows.Forms.RadioButton rbCaldari; private System.Windows.Forms.ImageList ilBloodline; private System.Windows.Forms.TableLayoutPanel tlpRaces; private System.Windows.Forms.RadioButton rbGallente; private System.Windows.Forms.RadioButton rbMinmatar; private System.Windows.Forms.PictureBox pbAmarr; private System.Windows.Forms.PictureBox pictureBox3; private System.Windows.Forms.PictureBox pictureBox2; private System.Windows.Forms.PictureBox pictureBox1; private System.Windows.Forms.RadioButton rbFemale; private System.Windows.Forms.RadioButton rbMale; private System.Windows.Forms.PictureBox pbBloodline1; private System.Windows.Forms.PictureBox pbBloodline2; private System.Windows.Forms.PictureBox pbBloodline3; private System.Windows.Forms.TableLayoutPanel tlpAncestry; private System.Windows.Forms.TableLayoutPanel tlpBloodline; private System.Windows.Forms.RadioButton rbBloodline3; private System.Windows.Forms.RadioButton rbBloodline2; private System.Windows.Forms.RadioButton rbBloodline1; private System.Windows.Forms.RadioButton rbAncestry1; private System.Windows.Forms.RadioButton rbAncestry2; private System.Windows.Forms.RadioButton rbAncestry3; private System.Windows.Forms.Label lblAncestry2; private System.Windows.Forms.ImageList ilAncestry; private System.Windows.Forms.Label lblAncestry1; private System.Windows.Forms.Label lblAncestry3; private System.Windows.Forms.PictureBox pbAncestry1; private System.Windows.Forms.PictureBox pbAncestry2; private System.Windows.Forms.PictureBox pbAncestry3; private System.Windows.Forms.TextBox tbCharacterName; private System.Windows.Forms.TableLayoutPanel tlpGender; private System.Windows.Forms.PictureBox pbFemale; private System.Windows.Forms.PictureBox pbMale; private System.Windows.Forms.Label lblFemale; private System.Windows.Forms.Label lblMale; } } ================================================ FILE: src/EVEMon/BlankCharacter/BlankCharacterControl.cs ================================================ using System; using System.Drawing; using System.Windows.Forms; using EVEMon.Common.Constants; using EVEMon.Common.Enumerations; using EVEMon.Common.Factories; using EVEMon.Common.Helpers; using EVEMon.Common.Extensions; namespace EVEMon.BlankCharacter { public partial class BlankCharacterControl : UserControl { /// /// A list of all of the bloodlines sorted by the order they appear in the picture /// control. /// private static readonly Bloodline[] BLOODLINES_BY_INDEX = { // Amarr 0-2 Bloodline.Amarr, Bloodline.Ni_Kunni, Bloodline.Khanid, // Caldari 3-5 Bloodline.Deteis, Bloodline.Civire, Bloodline.Achura, // Gallente 6-8 Bloodline.Gallente, Bloodline.Intaki, Bloodline.Jin_Mei, // Minmatar 9-11 Bloodline.Sebiestor, Bloodline.Brutor, Bloodline.Vherokior }; /// /// A list of all the ancestries sorted by the bloodline which uses them. /// private static readonly Ancestry[] ANCESTRIES_BY_INDEX = { // Amarr Ancestry.Liberal_Holders, Ancestry.Wealthy_Commoners, Ancestry.Religious_Reclaimers, // Ni-Kunni Ancestry.Free_Merchants, Ancestry.Border_Runners, Ancestry.Navy_Veterans, // Khanid Ancestry.Cyber_Knights, Ancestry.Unionists, Ancestry.Zealots, // Deteis Ancestry.Merchandisers, Ancestry.Scientists, Ancestry.Tube_Child, // Civire Ancestry.Entrepreneurs, Ancestry.Mercs, Ancestry.Dissenters, // Achura Ancestry.Inventors, Ancestry.Monks, Ancestry.Stargazers, // Gallente Ancestry.Activists, Ancestry.Miners, Ancestry.Immigrants, // Intaki Ancestry.Artists, Ancestry.Diplomats, Ancestry.Reborn, // Jin-Mei Ancestry.Sang_Do_Caste, Ancestry.Saan_Go_Caste, Ancestry.Jing_Ko_Caste, // Sebiestor Ancestry.Tinkerers, Ancestry.Traders, Ancestry.Rebels, // Brutor Ancestry.Workers, Ancestry.Tribal_Traditionalists, Ancestry.Slave_Child, // Vherokior: Ancestry.Drifters, Ancestry.Mystics, Ancestry.Retailers }; private Font m_amarrFont; private Font m_caldariFont; private Font m_gallenteFont; private Font m_minmatarFont; /// /// Initializes a new instance of the class. /// public BlankCharacterControl() { InitializeComponent(); } /// /// Handles the Load event of the BlankCharacterControl. /// /// The source of the event. /// The instance containing the event data. private void BlankCharacterControl_Load(object sender, EventArgs e) { ForeColor = SystemColors.GrayText; m_amarrFont = FontFactory.GetFont("Niagara Solid", 10f); m_caldariFont = FontFactory.GetFont("Impact", 8.25f); m_gallenteFont = FontFactory.GetFont("Arial Rounded MT Bold", 8.25f); m_minmatarFont = FontFactory.GetFont("Moolboran", 9f); BlankCharacterUIHelper.Race = Race.Amarr; UpdateBloodlineControl(); } #region Update Methods /// /// Updates the bloodline controls. /// private void UpdateBloodlineControl() { int index = 0; switch (BlankCharacterUIHelper.Race) { case Race.Amarr: lblAncestry1.Font = lblAncestry2.Font = lblAncestry3.Font = m_amarrFont; break; case Race.Caldari: index = 3; lblAncestry1.Font = lblAncestry2.Font = lblAncestry3.Font = m_caldariFont; break; case Race.Gallente: index = 6; lblAncestry1.Font = lblAncestry2.Font = lblAncestry3.Font = m_gallenteFont; break; case Race.Minmatar: index = 9; lblAncestry1.Font = lblAncestry2.Font = lblAncestry3.Font = m_minmatarFont; break; default: throw new NotImplementedException(); } // Calculate bloodlines based on image position (they used to match up in code, // but the codes were remapped to match the SDE) Bloodline bloodline1 = BLOODLINES_BY_INDEX[index], bloodline2 = BLOODLINES_BY_INDEX[index + 1], bloodline3 = BLOODLINES_BY_INDEX[index + 2]; pbBloodline1.Image = ilBloodline.Images[index]; pbBloodline2.Image = ilBloodline.Images[index + 1]; pbBloodline3.Image = ilBloodline.Images[index + 2]; pbBloodline1.Tag = bloodline1; pbBloodline2.Tag = bloodline2; pbBloodline3.Tag = bloodline3; if (rbBloodline1.Checked) BlankCharacterUIHelper.Bloodline = bloodline1; if (rbBloodline2.Checked) BlankCharacterUIHelper.Bloodline = bloodline2; if (rbBloodline3.Checked) BlankCharacterUIHelper.Bloodline = bloodline3; UpdateAncestryControl(); } /// /// Updates the ancestry controls. /// private void UpdateAncestryControl() { int index = 0; switch (BlankCharacterUIHelper.Bloodline) { case Bloodline.Unknown: case Bloodline.Amarr: break; case Bloodline.Ni_Kunni: index = 3; break; case Bloodline.Khanid: index = 6; break; case Bloodline.Deteis: index = 9; break; case Bloodline.Civire: index = 12; break; case Bloodline.Achura: index = 15; break; case Bloodline.Gallente: index = 18; break; case Bloodline.Intaki: index = 21; break; case Bloodline.Jin_Mei: index = 24; break; case Bloodline.Sebiestor: index = 27; break; case Bloodline.Brutor: index = 30; break; case Bloodline.Vherokior: index = 33; break; default: throw new NotImplementedException(); } // Calculate bloodlines based on image position (they used to match up in code, // but the codes were remapped to match the SDE) Ancestry ancestry1 = ANCESTRIES_BY_INDEX[index], ancestry2 = ANCESTRIES_BY_INDEX[ index + 1], ancestry3 = ANCESTRIES_BY_INDEX[index + 2]; pbAncestry1.Image = ilAncestry.Images[index]; pbAncestry2.Image = ilAncestry.Images[index + 1]; pbAncestry3.Image = ilAncestry.Images[index + 2]; lblAncestry1.Text = ancestry1.ToString().ToUpper(CultureConstants.DefaultCulture). UnderscoresToSpaces(); lblAncestry2.Text = ancestry2.ToString().ToUpper(CultureConstants.DefaultCulture). UnderscoresToSpaces(); lblAncestry3.Text = ancestry3.ToString().ToUpper(CultureConstants.DefaultCulture). UnderscoresToSpaces(); lblAncestry1.Tag = ancestry1; lblAncestry2.Tag = ancestry2; lblAncestry3.Tag = ancestry3; if (rbAncestry1.Checked) BlankCharacterUIHelper.Ancestry = ancestry1; if (rbAncestry2.Checked) BlankCharacterUIHelper.Ancestry = ancestry2; if (rbAncestry3.Checked) BlankCharacterUIHelper.Ancestry = ancestry3; } #endregion #region Event Handlers /// /// Handles the Click event of the rbAmarr control. /// /// The source of the event. /// The instance containing the event data. private void rbAmarr_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Race = Race.Amarr; UpdateBloodlineControl(); } /// /// Handles the Click event of the rbCaldari control. /// /// The source of the event. /// The instance containing the event data. private void rbCaldari_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Race = Race.Caldari; UpdateBloodlineControl(); } /// /// Handles the Click event of the rbGallente control. /// /// The source of the event. /// The instance containing the event data. private void rbGallente_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Race = Race.Gallente; UpdateBloodlineControl(); } /// /// Handles the Click event of the rbMinmatar control. /// /// The source of the event. /// The instance containing the event data. private void rbMinmatar_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Race = Race.Minmatar; UpdateBloodlineControl(); } /// /// Handles the Click event of the rbBloodline1 control. /// /// The source of the event. /// The instance containing the event data. private void rbBloodline1_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Bloodline = (Bloodline)pbBloodline1.Tag; UpdateAncestryControl(); } /// /// Handles the Click event of the rbBloodline2 control. /// /// The source of the event. /// The instance containing the event data. private void rbBloodline2_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Bloodline = (Bloodline)pbBloodline2.Tag; UpdateAncestryControl(); } /// /// Handles the Click event of the rbBloodline3 control. /// /// The source of the event. /// The instance containing the event data. private void rbBloodline3_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Bloodline = (Bloodline)pbBloodline3.Tag; UpdateAncestryControl(); } /// /// Handles the Click event of the rbAncestry1 control. /// /// The source of the event. /// The instance containing the event data. private void rbAncestry1_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Ancestry = (Ancestry)lblAncestry1.Tag; } /// /// Handles the Click event of the rbAncestry2 control. /// /// The source of the event. /// The instance containing the event data. private void rbAncestry2_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Ancestry = (Ancestry)lblAncestry2.Tag; } /// /// Handles the Click event of the rbAncestry3 control. /// /// The source of the event. /// The instance containing the event data. private void rbAncestry3_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Ancestry = (Ancestry)lblAncestry3.Tag; } /// /// Handles the Click event of the rbFemale control. /// /// The source of the event. /// The instance containing the event data. private void rbFemale_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Gender = Gender.Female; } /// /// Handles the Click event of the rbMale control. /// /// The source of the event. /// The instance containing the event data. private void rbMale_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Gender = Gender.Male; } /// /// Handles the TextChanged event of the tbCharacterName control. /// /// The source of the event. /// The instance containing the event data. private void tbCharacterName_TextChanged(object sender, EventArgs e) { BlankCharacterUIHelper.CharacterName = tbCharacterName.Text; } #endregion } } ================================================ FILE: src/EVEMon/BlankCharacter/BlankCharacterControl.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 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 rkJggg== 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 0MbAg2HgfwFn37I1Hks2+gAAAABJRU5ErkJggg== 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 galotLtVDAAAAABJRU5ErkJggg== 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 BEXWJdoXTfdOAAAAAElFTkSuQmCC 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 gg== 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 Ba4QkBKiAAAAAElFTkSuQmCC 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 126, 17 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2 +QAAAk1TRnQBSQFMAgEBJAEAASgBAAEoAQABMAEAATABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABwAMAAeABAQIAAQEBAAEIBgABaAEBFwABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHA AdwBwAEAAfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANC AQADOQEAAYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ ATMDAAFmAwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJm AgABZgGZAgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEz AgABzAFmAgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEA AWYBAAEzAQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/ AQABMwFmAgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEA ATMBmQFmAQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEA ATMCzAEAATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEA ATMBAAFmAQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEz AZkBAAFmATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEA AWYBmQFmAQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFm AcwB/wEAAWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEz AZkBAAGZAQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIA AZkBZgEzAQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHM AQACmQH/AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZ Af8BMwEAAZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEA AZkBAAHMAQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFm AgABzAFmATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFm AQABzAKZAQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/ AgABzAH/ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEA AZkBAAHMATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEz AQABzAJmAQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEA Af8BmQHMAQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEA Av8BMwEAAcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEA Av8BZgEAASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4 AQAB8AH7Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA///AP8A/wD/AP8A /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A /wD/ACYAAf+8AAL/AQAC9AH/ZAAB/wH0Af9QAAT/AvMBvAEcAe8B8QH/YAAC/wHyAe0B8QH/TwAC/wHy AfMC9AHxAZMB7QGSAfAB9AT/WgAB/wHzAfQBBwFEAbwC/1AAAfcB8AEHAfIB9AG8ARwB6wFtAZIC8gHv AfEB/wMAAv9TAAH/AfIBBwHvAQcBbgG8AvEB9AT/SwAB7QHzAf8B8wG8AQcC7AHtAe8B7QH3Ae8B9wEH AfIB8wHyArwB8wL/TQAC/wL0AfAB7wEHAe8BvAHxAfABBwHwAfID8AHyAfQB/xkAAv8BAA//HQAB7QHy A/8B8AFuAesB7wH0AfEBBwH3AewB7QGSAe8DkgHvAfEB8wH/HAAR/x8AAf8B8QEHAe8C7AEHAbwB8AHy AbwBBwLwBAcB8QH/FgAE/wH0Av8N9Ab/GAAB7AHxAf8BAAH/AfABbgHsAe0BvAH3AvMB7wLsAZIB9wPv AgcB8wH/GQAC/wP0BfMG9Ab/HAAB/wHyAQcB7AFLARMB7AIHAusGBwHxAfIB/xQAA/8C9AfzAfIB8AIH AfMB8gHxAvIB8QX0B/8SAAHsAbwB/wEAAf8BBwFuAe0B8AH0AW4B7wHyAfMB8AEHA5IB7wMHAfAB9AT/ EwAC/wH0AfMB8QHwAbwBBwHvAZMB7wEHAbwB8AHxAfIC8wX0Af8ZAAP/AQAB/wHzAewBcwFuAUoB7QHs AUsBEwXvAbwC8gH0AQAE/w4AAv8B9AHzAfABBwG8AfEBBwLvAQcB7wHtA+wB7QHvBOsB8ALyAvMF9AP/ EQAB7AHwAf8BAAH/Ae8C7AHzAQAB7AHvAfEB8AG8AQcC8AQHAbwB8AH0Av8C9AH/EQAC/wHzAfABBwFz AW4BFAFEAUMBIgFDARUBEgHrAewB7QHvAgcBvAEHAbwB8gH0GQAB8wHwAfMC9AG8AXMBwwGZAW4BkgHs AXQBSgHtAW4BSwJuAe8B8AG8AfMC/wH0AfMB9AH/DQAB/wH0AfMB7wIVAesBkgHsARMB6gEVAeoCFALq AfcB7AHrARIB6gHrAewBBwHvARQBBwHyBPMD9AL/DwABbgG8Af8BAAH0ARwC7AHzAfABbgHxAf8B8wHv AUQBBwW8AfAB8QHyAfMB/wH0AfMB9AH/DwAC/wH0AfABbgkOAwsDEQFEAfcB8gH0Av8ZAAHzAQcB7wHq AewB9wEcAsMBmQHvAQcBcwFEAXMBdAFKAREBFQFuAbwB8AHyAfQB/wH0AfIB8wH/DQAB8wG8Ae8B7AFt AUMBEgFtAesB7AHrAeoB6wGSAusB9wHvAQcC7wHsAe0B6wFtARQBQwHqAQcBvAHvAQcB8QPzAvQD/wwA AW0BvAH/AQAB9AHtAusB7QHrAZIB9AEAAf8B8AETAfcBvAHzAfQC8wHyAvMB8gLzA/QC/w0AAf8B9AHw AW4GDgEQAUsBdAQcAgcBvAHxAvMB9AL/GQAB9AG8AW4DSwFEA24B9wEcAW4BSwFKAXQBSgJEAW4BBwHy AfQC/wH0AvMB9AH/CwAB8QHtARIBFQFtAesBEgGSAuwBbQESAewB9wMHAbwBBwHwAQcC7wIHAe8B9wHr AuwBFAJtAewBvALyAvMB9AL/DAABbgG8AgAB8wHtA+sBbQHsAe8B8AHvAewBFAHvAvEB8gH0BP8B9ALz AvQD/w0AAf8B9AG8AREGDgFLAXQCkwSZAQcCvAHyAfMB9Af/FAAB/wHxARwBGgEHAUsBRAHvAfEB7QOT AUsBbgFEARABQwFEAW4BBwH0A/8B9ALzAfQB/woAAfIB6gESAeoB9wHvAQcBvAHwAgcBvAEHAfcB7wG8 AfECvAEHBu8BBwG8Ae8BBwG8AewBFAHrAe8B6wHwAvEB8gHzAfQB/wwAAewB8AIAAfIBHALsAm0BbgES AUMBEQFKARQB8QHyAvAB8QHyAfMB9AEAAv8E9AH/DgAB/wH0AfABFQUOAQ8BSwJ0AZMCdAFzAm4BdAGT AQcB8gH0Bf8B9AP/EwAB8wH2ARsBBwFLAe8B8QFvApQCmQREAUMBRAHvAfEB8wH/AgAB/wPzAfQJAAH/ AfEC6gHvAfQB8wHyAvMB8gHxA/ABvAPwAQcBkgHtAuwC7QL3Au8BBwG8AQcBkgLsAesB9wG8AfEC8gHz Af8LAAH/AW0BvAIAAfIBBwEcAewC6wHqARMBQwFEAUoB8QH/AfIBvAHyAfMC8gHxAfMD9AT/DAAD/wH0 AfEBkwFEBg4EEQEQBA4BEAESAbwD9ALzAfEB8gHzAvQC/xEAAf8BvAGTAe0B6wGSAXQBdQKaApkBRQJE AUUB7QHvAbwB8QHyBPQB8wL0Af8KAAH0AuwBBwH3AvEBvAEHAbwE8gHxAfIB8AHtAeoBFQJDAeoBbQHr Ae0BkgTvAwcB7wHtAewB9wHxAvMB9AH/CwAB/wHqAbwCAAHyAe8D7AH3ARMBFAFDAUQBbQHvAfIB/wHw AbwB8wL0AfMB8QLyAvMB9AH/DAAC/wLzAfIB8QG8AZMBbgFEAQ8NDgHtAbwB8gHzAfIB8AG8Ae8BbQHs AQcB8wL/DwAB/wIAAfQBvAHxAfIB7wEWAXUBlAGaApkBRQNEAe0BcwHvA/IC8wP0Av8LAAHyAewB6gES Ae0BFAERAUMBbQHsAQcB7APqARUBEQEPBQ4BFQHrAZIF7wEHAfABvAHtAW0B6gHwA/QB/wwAAeoBBwIA AfEBHAGTARwBbgEcARIBFQFDAUoB7wHsAe8B/wHxAfAB9AH/AfQB/wH0A/MC9AL/CwAC/wHyAewB7wEH ArwBBwKTCEsBRAMOAUsBkwG8A/ABvAEHAZMBRAEOARMB8AH0Af8PAAHzAv8BBwFuAewB/wHwAXQDdQHD ARoBbgNEARQBRAGSAfIB8wLwAvQD/w0AAfQB8AEHAm0BBwG8AZIBEwMVAUMFEQIQAg8BDgEVAewB9wEH Ae0C7wG8AQcB7wHtAe8B7AHyBP8MAAHqAbwBAAH/AfEBcwEcAZMBHAHtAeoBQwFEAW4B7AFuAfQB/wLw AfQB8wj0BP8IAAP/AfQB7wFDARUB7AHvAgcDkwF0BHkBdAEiAg4BSgJ0BW4BSgFEAg4BDwG8AfQB/w0A Af8B8QG8Af8B9AGUAUsBRAH0AfABdAF1AZQBGwL2Ab0BdAFLAUUCRAHsAfEB8gHvARwB8wX/DQAB/wH0 AfAB7wFtARQB6wG8AfcB7AFDARUCQwERAkMDEQEQAg8BFQHsAesBFAFtAewBvAGSAfcB7AHrAQcB8gP/ DQABbgG8AQAB/wHwAW4B6gEcAXQBSgFtAUMBSgFzAW4B8gEAAfQBvAHxAf8B8QHyAv8C9Af/BgAD/wL0 AfMBvAEcAUoBbgFzARwCkwN0BHkBSwIOAUQCdAFEAg4BIgUOARAB7AHxAfQB/w0AAfQBHAEHAf8B8wGU AUsBRAH0AfMBkwEaA/YBGgGaAZMBmgFvAkQB7QHzAfEBHAF0AfEG/w4AAf8B8wG8Ae8B8AH0AfIB8AHs AREBQwYVAxECEAHqAewBFQLqAW0B7wHsAm0BvAH0EAABbgG8AgABBwFKAUQBbgF0AW4BSgETAXQBkwEH AgAB8wEHAfEB/wHwAfMCAAHzAf8BAAL/CgAC/wH0AfMB8gHwAbwBkwFvAW4BSwJEAUMDIgMRAUQDDgFE AksCDgFLAW8BbgFKAUQBSwFzAZMB8AH0Av8NAAHxAW4BHAHyAfMBbwFLAW4B/wG8AQcEGgGaAZQCkwFv AUQBSwEcAfMBvAF0AXUBBwH0A/8UAAH/AfQB8wHxAe0CQwETBBIBEwIVAxEBEwHtARIBQwHsAfEB8wEH AfcB8AHzEQABSgG8AgABHAEVAUQBSgFuAXMBSwFtAW4BmQG8AQAB/wHzAbwD8AH0Av8B8AH0DAAC/wHx AQcB7wHtAW4BHAFEFA4BDwFLAW8BdAOTAQcBvAHyAfQC/w0AAbwBGgGTAbwB8wGTAZoBkwHwAW4BSgFu ARwFkwFuAUsBbwF0AQcB8gK8AZoBmQH0FwAB/wLzAfIB7AEVARIB6gHrAuwB6wHqARMBFAEVAhEBEwHv AQcB7wG8AvQB/wH0Af8SAAFKAQcCAAEcAkQBSgFLAW4BSwFuAUoBmQHwAQAB/wHyA7wD8AK8AfQMAAH/ AfQBBwESARABDgFEAW4GDgEiAhUBSgNLBEoBQwEPBA4BFQFuAZMBcwHtAQcBvAHzAfQC/w0AAe8BvAGT AbwB9AKTAQcB7QJLAkQBbQFuARwB7QHvAewBbgF0AbwB8gH0AfMBvAGaARoB9A4AAfIBBwG8AfMC9AH/ AfQBvAEHAfcB7wHwAewBFAHqAewB9wIHAfcB6wESARQCFQERARMBvAHzAfQE/xQAAUoBvAIAARwERAJK AW4BkgEHAZkC/wHzAfACvAIHAe8BBwHzDgAB/wH0AfEB7wESARwBcwEPAw4BSgF0AXoDmgN0AXMCmgJ6 AZkBSgQOAUQBkwEVAg4B6gHvAfEC/w0AAbwBdAGTAQcB9AP/AewCbghEAe0B8wL0AfMB7QJKARwB9A0A AfQBBwHvA/cBEgGSAesCkgLsAQcBbQETAW0B7AEHAvIB7wHsAW0BEgEUARUBQwHqAfAZAAH/AW4BBwL/ AbwBSgFDAUQDSwHsAf8B8wGZAQcB/wHzA/ABvAIHAbwB8gH/DQAC/wH0AfMB8gHwAbwBHAFDAg4BbgJ0 AXoBeQFKBA4BQwF5AnoBmgFSAg4BAAEOAW4BHAESAesB7QEcAQcB8AH0Af8NAAHzAXQBbgEcAf8CAAH/ AW0BRAEjASIBQwMiARABIgERAW0B8QH/AQAB/wEHAksBHAHyDQAB8gHvAfEB8AIHAW0BEgHsAfMB8gHv AfQB8QH3AeoB7AHtAQcB8QH0AbwB7QHrARIBEwEVARQB7AHyGQAB8wFLAW4B8wEAAfEB7AFDAUQBSgFL AW4BvAEAAfMBHAHsAf8B8gK8AfABvAIHAvAB9A0ABP8C9AHzAfAB7wFzAUQBEQFzAXQBmgF0ASIEDgFD AXkBmgKZAUoCDgFDAW4BkwK8AfEB8gHzAfQD/w0AAfMBcwFuARwB/wIAAfQFRAEVAUQBFQFDAiIBEQHw Af8CAAHwAXMBFQEcAfINAAHzAfcB7wL/AfQC7AEHAbwB8wMAAfAB7AHrAe0B7wG8AfABBwHtAesBEgET ARUBEwGSAfQZAAHyAUsCRAHzAfQBHAFEARUCRAFuAfIBAAHzAhwB/wHxBLwBBwG8AQcB8gH/EQAD/wH0 AfMCvAHvAesBSgFzAXQBIgMOAUoBdAGaAXQBbgFKAQ4BEQFuAZMBvAHyAfMD9AP/DwAB8AFzAW4BRAHt Af8BAAHyASIBbghEARUBIgHxAgAB/wG8AUQBSgGTAfQNAAH/AfAC7wEHAe8BkgHxAQAB/wMAAf8B8wHv AuwB7QP3AewBbQESAhMB7AHxGQAB/wG8AkoBcwEVAhwBcwFEARUBRAFKAfIBAAHxAW4BvAH/AfABBwO8 AQcBvAHxAf8UAAL/AfQB8wHyAfABvAEHAZkBdAFKAw4BIgJ0AXMCHAIHAbwB8AHzAfQG/xAAAQcBdAFL AUQCSgG8Ae8BbgFLAkQBQwIiAUMBFQJEAUMBvAHwAe8B7AJEAUsBBwH/DgAB/wP0AfMB9AH/BgAB/wHy Ae8B7AHrAewB7QHsAW0B6gISAesBBwH0GQAB/wEcAUoB7AGZAXMBRAFuAXQBSwFEARABRAHxAQABkgFK Av8BvAMHAbwBBwG8AfIVAAP/AvQB8gHwAbwBmQFEAksBDwIOAUQBcwGTAQcBvAHwAfEB8wL0A/8UAAHy ARwBbgFzAnQBbgFLAXQBSwJKAUQCDwEiBEQBEgNEAUoBSwFzAfAB/xwAAf8B8gHvAewCbQISARQB6gHt AQcB9AH/GQAB9AEcAUoBBwHwAXQBRAFLAW4BdAFKARABQwG8AfEBSgFtAv8BvAQHA7wB/xUAA/8C9AHy AbwBbgIPAXQBbgEQAg4BDwFzAZkBvAHxA/QC/xYAAf8B8wEHAZkBmgF6AXQBSwF0Am4BSwFEAw8BQwFK AkQBFQFEAksBdAGaAQcB/x4AAf8B9AG8Ae0B7ALrAewBBwHyAf8bAAH0AW4BSgG8Af8BvAFzAW4CSwFz AUQBFQHsAeoBSgGSAv8B8QQHAfAB/wG8AfIB/xQABP8B9AHyAQcBEwEOAUoBkwF0AW4BDwMOAewB8AHz AfQE/xcAAf8B9AHxAbwBGgGZAZoDdAFLAiIBDwELARACRAFzAW4BSwGZAZoBmQG8AfQB/yAAAf8B8wHx A/AB9AH/HAAB8gFuARIBvAH/AfMBcwFuAUoBFQFLAXMCRAIRAZIB8gH/AfMB7wMHAfMB/wHyAfAB/xYA Av8B9AHxAe8BDwEUARwBmQGTAXQBRAMOAW0B8AH0Bf8ZAAH/AfMB8AGZARoBdAGZAZoBdAMiAQsBIgFE AUoBdAEaAXQBmQEHAfIB8AH/RQAB9AEcAXMBvAEAAfMBmQF0AhUBRAGaAZkBbgFDARUB9wEHAfAB8gEH Au8BBwHzAQAB8AHyAf8WAAL/AfQB8QHsAQ4BHAKZAZMBcwELAw4B7QHxAfQD/x4AAfABdAFLAZkBdAFL AiIDCwFEApoBwwF0ARwBSgLtAf9FAAHzAXQBSgHwAQAB/wHyAbwCSgFEAUoBGgEbApkBBwHwAQcCvAEH Au8B8wH/AQcB9BcAAv8B9AHwAW0BHAEHAZMBcwFLARACDgERAXMBvAHzA/8fAAHzAQcB7wGZAXQBbgNL AUQBCwFLAXkBdAGZARwBvAEcAW4BvEYAAfIBBwFuAfADAAHyAUsBSgFEASIB8wH0AfMBBwHwAf8B8AQH Ae8C8QEHAfQXAAL/AfQBvAHvAbwB7wFKASIBDgEPAUMBbgGTAfAB8wH0Av8hAAH/AfQB8wHwAQcBdAJv AW4CRAJKAW4B7QHvAewB6wHsAbwB9EQAAf8B8AGZARoDAAEHAkoBRAFtAfQBAAH/AbwB8QEAAfQBvAMH Ae8BBwHvAfAYAAP/AfMB8gHxARwCDgFLARwBBwG8AfIB8wP/JQAB8gGTBHQBbwNEAUoBRAFKA0QBSgFE AfJEAAH/AeoBBwH/AQAB/wHtARwBSgFEAXQB9AEAAfQBvAHxAQAB9AG8AQcB7wEHAbwCBwHyGQAD/wH0 AfMB7wEQAREBkwEHAfAB8wH0A/8lAAH/AfABkwJ0AcMBmQFvAkoBbQZLAW4B8AH/RQAB6gG8AgAB9AHs AkQBcwGZAfQBAAH0AbwB8QEAAf8B9AG8AQcB7wHyAvAB8hsAAv8B9AHwAewBIgHsAfAB8wH0A/8mAAH/ AfABdAFLAXQBwwFuAUsCSgFzAfAB8QEHAnMBvAH0Af9GAAFEAe8CAAH/AQcDGgGZAf8BAAH0AvACAAH/ AbwBBwHvAfMfAAH/AfQB8wHyAQcBbQHwAfQC/ygAAf8BvAFLAW4BdAHDAZkBbgFEAewB/04AAUoBvAMA AfQBGgHxARoB8AMAAfQB8AH/AQAB9AMHAfMgAAL/AfQB8wHxAfIC/ykAAf8BvANEA0MBSwHzTwABbgG8 BAAB/wH0AfMB/wMAAfQB8QIAAfMDBwH0IQAD/wL0Av8pAAH/AfQB7wF0AZkCdAFuAe9PAAHyARwB8wsA Af8B8QIAAf8B8AK8Af8kAAL/LAAB/wG8AXMDmgEcAfMB/00AAf8BBwG8DAAB/wHxAwAB/wHzAfRTAAH/ AfQBHAGTARsBBwHyTwAB/wHzAf8MAAH0AfNaAAH/AfQB8wH0AfYB/10AAf8B8gH/vQAC//8A/wD+AAT/ uwAD/wH0Av+IAAn/KAAD/wH0ARQD/4cADf8kAAP/Ae8BRAH0A/8VAAH/FQAE/wwAAv9GAAX/AvMB9AHz Cv8hAAL/AfMB7AFLAe8B9AP/FAAB/xAAC/9QAAX/AfQB8wHwAewBvAHxAfIB8wL0Cv8aAAX/AfABEwFz AXQB8wj/FQAc/0kABP8B9AHzAfIB8AH3AUQBSgGSAQcB8AHxAfIB8wL0CP8YAAT/AvQB7wFKARwBcwEH AfIB9Aj/EgAN/wH0BPMB8QHyAfMB9A3/QgAE/wH0AfMB8AEHAe8B7AFKAUwBRAHrAe8BvAHwAfEB8gHz AvQH/xYABP8B9AHyAfABFAFzAnkBBwHwAfIB8wP0Bv8PAA3/AfMB8gHwArwB7AEPAUMB8AHyAfMB9Az/ QAAD/wH0AfIB8AHvAZIB6wESARUBSwJSAkoBkgG8AfAB8gHzBfQG/xIAA/8B9AHzAfIB8AG8AQcBSgEa ARwBmQFzAgcC8AHxAfIC8wH0Bv8KAAX/AvQC8wHyBPMB8gG8AfcB7AHrAW0BEQFKAUMBEgEHAfAC8wT0 C/87AAP/AfQB8gEHAfcBEgFDAUoBUQVSAVEBSgHsAbwC8gHzBvQF/xEAAv8B9AHyAfEC7wHsAesBbQG8 Ae0BbgFtAusB7wO8AvAB8QHzAfQE/woAA/8C9AHzAfEEBwO8AQcB7QESARQBEQEPAUoBHAFKAUMB6wHv AQcB8ATyA/MC9Af/FwAC/yIAAv8B8gEHAewBQwFLBFgEWQF6AZoBGgG8AfEC8gHzAvQD8wL0BP8PAAL/ AfQB8gEHAe8B6wJDARABmQK8AeoBmQFEAhABbQHwAfEEvAHxAfMB9AT/CAAD/wHxAe8BBwGSARIBDgET AesC7wHtAhAB7QGZAUoBFQFDARwBRAFDARMB7QHvBPcCBwO8AfIB8wH0Bf8WAAL/AfIXAAH/CQAC/wH0 AbwB6wFKAXkCmgIaAXQBWAF6AZoCGgK8AfED8wLxAvQB8wPyAfQE/w0AAv8B9AHzAfAB7AEUAUoBSwJ0 AZkB8AHyAfcBHAF5AXQBSwFEARUB7QLxAfACvAHwAfIB9AT/BwAB9AK8Ae0BFQFDARQBEwFKARUBEQEP ARMBFQFDARUBDwEVAXMBSwEPAhEBEAEPARQB6wHsAesB7QHsApIC9wIHAfAB8gHzAfQD/wQABP8OAAH/ AfMB8QL/DwAD/wMAAf8JAAH/AfQB8wHtAXMBmQIbAfAC8QFKAZkBGgHwBAcB8AG8AfAB8QLvAfEB9AHz AfIC8AHyAfQD/w0AAv8B8wHwAesBFAFLApkCGgEHAewB8gHrAe8BvAGZAXkBUgFLARUBbQG8AfIB8QHw AbwB8AHyAfMD/wcAAfEB6gFKAW0BEgHsAUQBFQHqAW0BSwFKAUQBEQIVAUMBDgFDAUQBEQMPAUoB7QH3 Ae8CHAFzAUoBFAHrAvcC7wG8AfEB8wP/BAAB/wH0BP8CAAP/BwAB/wHyAQcB9AP/CAAG/wHzAfQB/wIA Af8JAAH/AfQBBwHsARoBGwHzAbwB8AHyAfEBUgHzAgcC7wIHAbwCBwQcAfMB9AHyAfACvAHyAfQD/w0A Af8B8gHrARUBeQEaAfMB8gG8AfABmQFuAewBbQG8AvAB7wGZAXQBUgFEARIB8QH0AfMB8QG8AfAB8QH0 A/8GAAHzARwBSgEVAUMBFAFzAXQBRAEVAeoBRAJRARABDwFDARAEDgEVAfIC8wEbAhoBmQF5AlgBRAES Ae0C9wEHAfAB8gH0Av8EAALyC/8CAAT/AfABBwP0Av8DAAn/AfIBvAH0Av8BAAH/CAAC/wHxAe8BBwHw AfIBBwG8AvMB8gEHAfEBBwHvAfcB7wG8AfADvAHvAxwBcwLzAfICvAHwAfME/woAA/8B7wFKARoBGwHw AbwC8gHxARwBmQFzARoDBwG8AQcBHAJSAUoB6wHyAfQB8wHxAbwB8AHyAfQD/wQAAf8B8wHsAUoBSwJK AUMBEgFzAXQBSgFEAUoCSwFEAREDDwFDAewB8gHzARsBmQEcBVECSwFEARUB7QLvAfAB8gH0Av8EAAH/ AfcB8wH/AfQB/wH0AfID9Aj/AQcB8AHyAfMB8gHzAfQG/wHzAfIC9AH/AfQBkgHxAvQB/wEAAf8IAAH/ AfQBvAIHAbwB9wEHAfEB9AH/AfMB8gHxAfABBwH3AQcB8AHxAfIB8QG8AQcB9wNzAQcB9AHyAfACvAHy AfQD/woAAf8B9AHwAUoBHAH0AfAB7wHwAvMB8gG8AZkBGwG8Au8B9wHvAQcB9wFzAlIBSgHsAfMB9AHz AfEBvAHwAfMD/wQAAf8BBwEUAUMBRAFKAXQBSwFEAUMBSgFuAUQBFQNDAREBDwEOAeoBBwHzARoBdAFR AUsESgZEAW0B7wEHAfAB8gH0Av8EAAH/AbwB7wL/AfQB8wHvAfMK9AIHAfIB8QHwAfEB8wP0A/MBkgHw AvMB9AG8Ae8B8gHzAfQB/wEAAv8HAAH/AfQB8AK8AgcB7wHwAfMB/wL0AfMB8AMHAfAD8gHwArwBHAJz AXQB8wH0AfICvAHxAfQD/wkAAv8B8wEVAW4BGwH0Au8B8QHzAfQB8gHxAbwB8gIHAfcBkgHsAu8B9wFL AlIBRAG8AvQB8wHwAbwB8gH0A/8DAAH/Ae8CRAEVAREBQwFzAXkB7AFKARUBDgEQAQ8CDgEPAUMB6gHz ARsBHANKAVEEWAFKARUCEAFDARUBRAHtAbwB8QHyAfQC/wUAAf8B7AHyA/8C7wPzAfAB8QLzAfIC8wLv AfEBvAEHAbwB8QHyAQcC8gHxAQcB9wPyAfEB7wHyAvMB9AX/BwAB9AHyAfEC8AHvArwB8gLzAbwB7ANK AewBBwHwAvEC8AHxAbwCcwFMAZkB8wHxAvAB8QH0A/8IAAL/AfQBBwEVAZoB9AG8AQcBvAHxAfMB9AHz AvECvAHvAfcC7wH3A+8BSwFSAUsBcwHzAfQB8wHxAfAB8gH0A/8EAAHzAQcB7AFKAUQBQwEVARMB6wEU ARABFQFRAUoBEAIPAeoB8AEaAXkBUgFRB1gBUQFLAUoBEQEQAUMB6wHvAbwB8QHzAfQC/wYAAfAB9wP/ AfMB7AHyAvMBvAGSAfIC8QHyAfAB7ALvAgcBvAHxAu0C8AG8Ae0BvAHyAvEB7wEHAvIB8wH0Bf8HAAH/ AvQC8gHwArwC8QH3AW4BdAJ5AVIBUQFLAfcB8AHxAvIC8wFzAkwBHAHyAfEB8AHxAfIB9AP/CAAC/wHz AesBUQEaAfAB8gHxAQcB7QG8AfMB9AHzAvIB8QHwAgcB9wEUAfcCBwHtAUsBUgFLAfEC9AHyAfAB8gH0 A/8EAAH/AfQB8wHvAewB6gFEAkoBRAFKAhwBUQFEAQ8BbQHyApkBGgdYAVEBWAF5AlEBRAERARMBHAEH AfAB8QHzAfQC/wYAAf8B9wG8AQAC/wLvAvQB8QHtAbwB8QLwAZIB6wEHAesB7wEHAfABvAESAQcC8QLv AfEB8gHxAQcB7wHwA/MB9AH/AQAD/wYAA/8D9AHyAfEB8AEHAfcBSwGaARoCGwGZAXkBUgFLAQcB8QHz AvQB/wHvAkwBUgHxA/IB8wL0Av8IAAH/AfQB8AEUAVkBGwHwAfMBBwISAesB8QLzAfQD8QG8AQcBbQER AUMBkgEHAe8BSwFYAVIBBwH0AfMC8gHzAfQD/wUAAv8B9AHzAe8BcwJKAUQBHAEaAUoBFQFDARIB8AHv ArwBeQdYAVEBWAGZAVECSgFEAesB7wHwAfEB8gHzAfQC/wcAAfIB7AHyAgAB/wHsAfIB/wHzAQcB9wHw AfEB7wFtAfcB7wHrAewC8AHtAbwC8gHxAesBvALyAfAB6gHwAfQC8wH0Av8BAAP/BgAH/wHzAfEBvAHs AZkBGwG8Ae8B8AEHARwBeQFSARwB9AT/AfABSwFMAVIBvAHxA/MB9AP/BwAC/wH0Ae8BSgFZARoB8gH0 AfEB8AHyAQcB7wHxAQcB6wEVARMB9wEHAewB6gG8AZkB7wG8AQcBbQJSARwC8wLyAfQE/wYAA/8B9AHy AbwBHAFKAXMBHAFEAhEB7wK8AfABmQhYAVEBUgEaAVEDSgFtAQcC8gLzAfQC/wcAAf8B7wFtAfMB/wEA AQcBkgH0Af8B8wHvAbwB8QHsAe8CvAGSAesBvAEHAfcB8gHzAfEB7AH3AfIB8wHxAewB8AHzAf8C9AL/ AgAD/wYAAf8B9AX/AfQB8gHwAXMBGgHzAewBEgEUAeoB6wFRAVgBeQH0BP8B8QEVAUwBUgG8AfIB8wL0 BP8HAAL/AfQB7AFLAVgBGgHzAfQB/wH0AfMB8gEHAeoBFQFKAksBFQEUARwB7wS8AfEB7AFKAVIBdAHy A/MB9AT/BwAD/wL0AfIB7wEcARIBFQERAe0BGgG8AfIBGgGaAXkDWAJ5AlgBUgFRARsBcwJKAXMBkgHx AvMD9AL/CAAB9AHsAe0B8wEAAfIB6gHsAfQB/wHyAfMB9wEHAfAC9AHxAewB6wHzAfEB9AHzAZIBbQEH AfQB8wH3ARwB8QX/AwAD/wYAAv8B9AX/AfQB8QGZARsBvAFmAosBswESARUCeQH0A/8B9AG8AUMBTAFS AbwB8wH0Bv8HAAL/AfQB7AFLAXoBmQL0BP8B8wFzAVIBegFYAUwBdAG8AQcB8QTyAfEBkgEVAUwBcwHx AfIB8wH0BP8LAAL/AfQB8wHwARwCEwH0AZkB8gEbARoBmgF6AZkCeQKZAnkCUQHzAXMBFQFKAXQBBwHy AfME9AL/CQAB8gHtAewB9AHtAewBFAHsAfQBAAHzAQcB8gH/AgAB/wEHAW0B8gL/Ae0B6gHvAewB8ALs AfAJAAP/BgAB/wLzAfQE/wH0AfMBmQHzAewBkQG1Ae8BtQGRARQBmQG8Af8B8wH0AvMBvAFDAUwBUgG8 AfMB9Ab/BwAC/wH0ARIBSwF0AZkB8wX/AfQBBwFKAXkBWAFSAUsB6gHxAfIB8wHyAfEC8wEHARABUgF0 AfMB9AX/DQAC/wH0AfMB8QHrAe8B8AHxAhsBGgWZAhoBvAGZAVIBUQHzAW4BFQFKARwB8AHzA/QE/woA AfAC7AGSAfEBvAHrAfcB8wIHAfIBAAHzAfIBAAH0AQcBkgHyAe8B6wG8AfEB7wHtAesBvAH0CQAC/wcA Af8B8QHwAfMC9AL/AfQB8wEHAfMBHAH3AbwB8QEJAbQBbQEaAbwC8wHxAfAB8gEHAUMBUgFYAbwB8wf/ BwAC/wH0AesBSwFSAZkB8wH0AfIBBwHxAQcB7AEVAUoBmgEaAXQBRAEOARMB7AH3AuwC9AEHARABUgF0 AfQF/w8AAv8B8wHyAe0B8QEcAxsCGgKZAbwD8AG8AZkBdAFYARsBSgEVAUQBcwHxAfQH/woAAf8BvAHs AfEB/wEAAbwB7AGSAQcB8QL/AQcB9wL/AfEB7wHsAe8B8AL/AfEBkgEHAfQB/wkAAf8HAAH/AfQBvAEU ARwC8wL0Af8B8wHwAhsB9wEHAbwBuwHrAZkC8QH0AfMB9wFDAQcB9wEVAVIBeQHyAfMD/wsAAv8B9AHs AUsBTAEcAfMB9AHvARUBEQEcAZkBHAGZARoBBwFLAUUBEAEHARoBTAFKARwC/wHvAUMBdAGZBP8SAAH/ AfMB8gGSAfEBGwLzARsCGgK8AfACGwHxArwBdAGZARoBSgEVAUQBHAHzCP8MAAHwAfMDAAHxArwB9AEA AfMB7AEcAbwBAAH/AfAB8QHwAf8CAAH0AfAD/xEAAf8B9AEHAUsBSgHsAfAB8wP0AfIB8QHyARsBBwG1 Ae0BBwHyAfAB8wH0AfMBkgFSAUsBSgFRAVgBmQHyAfMC/wwAAv8B9AHvAUsBUgF0AfAB8wHwAZkB8gHw ARwBGwHxARoBSwF0AbwBdAGZAfEBvAGZAbwB/wH0Ae0BRAF0AZkB9AL/EwAB/wHzAfAB7wHwAvMCGwG8 AhoB8QTyAfABvAF0ARsBmQFKARUBSgGZAfQI/xEAAf8B8wHwAv8B7wHwAfIB7wHzAQAB8wHyAf8GAAL/ EQAB/wH0AQcBUQFMAksB9wHyAvQB8wHyAfEB8AHyAfMB8QHwAfEB8wL0AfMB7AJ5AVIBWAF5AbwB8gH0 Af8OAAH/AfQBvAFKAVIBTAG8AfMB9AHyAvQBcwJ0AUwBUQJMASsBUQHwAfQB8wH0Af8B8gFtAUsBmQG8 AfQB/xQAAf8B9ALwA/MCGwHwBBsB8gHxARsB8gGZAXkB8wGZAUoBFQFKAZkI/xMAAv8BAAH3AbwB/wEA AfEBBwP/AgAB/xcAAf8B8wG8AVEBWAJMAUsB6gHwAvQC8wPyA/MD9AHyAXMBmgJ6AVkBUgG8AvMB/w4A Af8B9AHxAesCUgF0AfIB8wL/AfMBSwEsASsBRAFSAUMBJQEsASMB7wH0Av8B9AEHARQBWAEaAfEB9AH/ FAAB/wH0AfIB8QEbAfMDGwHxAhsE8wIbApkB8wGZAUoBFQFuAbwF/xgAAfQB7AH0A/8BvAHyHAAB/wHz AQcBUgFYA1IBdAEcAfEE9APzAfQD/wH0AfIBHAEaApoBegF5AXMBBwHyAfQB/w0AAv8B8wH3AVEBUgFK AQcB8gH0Af8B8QEVAUwBSwFzAZkBeQJKASQBdAP0AfIB6wFLAZkBvAHzAv8UAAL/AfMB8AHyBRsB8gbz ARsBvAEbAfMBdAFKAUQBcwHxHQAB8gHqAfIB/wEAAfQBBwHxAf8bAAH/AfMBBwFSAVkBWAJSAbwB8AHy AfQK/wH0AfEBHAQaARsBGgG8AfMC/w4AAf8B9AHwAUQBTAFLAUoB8AHzAfQBBwFKBRoBGwF5AVMBUgLz AfIB7QFEAXQBGwHwAfQB/xUAAv8B9AHxAfIGGwbzAfEBGgH0AfABUQJKAQcB8x0AAf8B7wHsAfQBAAGS Ae8B/xwAAf8B9AHvAVIDegFYAXMB8AHzAfQK/wH0AfABHALzAvQB8AHzAfQC/w8AAf8B9AHzAQcBSwFS AUsBbQHwAfIB7wFRAZoEGgL0AXoBeQLyAZIBQwFRAhoB8wH0Af8WAAH/AfQB8wHwAfQEGwfzAfAB9AHz AXkCSgF5AfAB9B8AAe0B8QHyAe0B9B0AAf8B9AG8AZkBvAGZAXoBWAFRAesBBwHzCv8B9ALwAvIB8AHy AfMB9AL/EQAB/wH0AfIBHAJSAUoBbQG8AfcBcwGaBRoB9AHzAZkB8AGSAUoBUgGaARoB8QH0Af8YAAH/ AfQB8gHwAfICGwfzAfIB8wH0ARoCSwFzAbwB8gH/HwAB9AH3ARwB8wH/HQAC/wG8AfAB8gHwAZkBegF5 AVIBSwHrAQcB8wj/AfME8QHzAvQD/xEAAf8B9AHzAfABdAJSAUoBEwHsAW4BegGaBBoB9AEbARwBbQFK AXQBGgLxAfMB9AH/GAAC/wHzAfIB8AHyARsK8wF0AUsBdAHwAfEB9AH/HwAB/wHxAfAB/x8AA/8C9AHy ARoBmgF6AVkBUgFKAusBHAG8AfAB9AH/AfQB/wLzAvID9AL/FAAB/wH0AfMBvAF6A1gBSgFDAUwBmgIa ARsB9AEbAXkBFAFRAZoBGwH0AfAB8wH0Av8ZAAH/AfQB8wHxAfICGwTzARsC8wEbAZkBWAF5AfAB8QH0 Af9EAAX/AfMB8AEaAZoBegF0AhwC7wEHAfQC/wH0Av8B9AT/FwAB/wH0AfMB8QEHAZkBeQJ0AVgBmgIa ARsC8wHwAhsB8wHyAfAB8gH0Av8bAAL/AfMB8QHyAfMBGwbzARoBmQEaAfAB8gH0Av9HAAP/AfQB8wHw ARoBmQIcAQcCvAHzAv8B9AP/GwAC/wH0AfMB8gHwAQcCmQIaARsG9AHxAfAB8QHzAfQC/x0AAv8B9AHy AfEH8wLyAfAB8gP/SwAC/wL0AfMDvAHwAfEB8wH0Av8gAAH/AvQB8wHyAfABvAHwARsB8gHzA/QCvAHx AfIB8wH0Av8fAAL/AvQB8gG8AvEC9AHxAbwB8wH0Av9OAAP/BPQG/yEAAv8B9ALzAvIB8QPwAfED8gHz AvQC/yIAAv8C9ATzAfQD/1EAC/8jAAP/AvQG8wP0A/8lAAr/gwAD/wP0Bf+4AAP//wD/AP8A/wD/AP8A jQAQ/4EAAv8LAAb/GwAB/wHzDPID8wH/WAAE/yMAB/8FAAP/AfQB8wH0Av8bAAH/AfAN7wEHAbwB/yEA Af8B9AH/CgAB/ygABv8iAAH/A/QJ/wL0AfMB7wH3AfQB/xwAAQcG7QfsAe0B7wHzHwAC/wHzAfIB8wL/ BAAC/wX0A/8aAAb/AgAK/xcAB/8BAAH/AvMF9AL/AvQD8wHwAewB7QEHAfQC/xcAA/8FSwRKBkQBcwHx Bf8ZAAL/AfQB8gLwAfMC/wIAAv8B8wHyAvEB8gLzAfQD/xgAB/8BAAH/BvQD/xcACP8B8gHtAe8B8QHz AfQE8wLyA/EBkgLvAbwB8wb/EgAB/wHzAfABvAFLAUoCSwREARUCQwREAXMBvAHxAvMB8gL/GAAB/wH0 AfMB8gEHAeoB8QHzAf8BAAH/AfQB8gTxAvID8wL/FwAB/wH0A/MC9AP/BfMC9AL/GAAC/wH0Af8C9AH/ AQcB7wH3AeoB7AHyAfMC8gHxAvACvAHsAe0BBwHyAvME9AT/DwAB/wHyAbwC7wJLA0QBQwIiAUMEIgFE ARUBcwHwBPEB8wH0Af8VAAL/AvQB8wHyAe0BFAHtAfEB8wH/AfQE8QG8Ae8B9wHvAQcB8QHzAfQB/xcA Af8B8wLwAfEB8gHzAfQB/wH0B/MB9AL/FwAD/wb0AfEB7wLqAe8B8AHyAfACBwHvAewBkgEHAfEC8gTz BPQC/w4AAf8B8wG8AQcB7wFLAUoCRAFDCSIBFQFzAfEB8wTyAfMB9AH/FAAC/wL0AfMBBwFsARMBQwEH AfEB8wHyAvEB8AEHAesB6gISAeoB7AHvAfQB/xcAAfQBvAMHAbwB8AHyAvMF8gPzAfQB/xUABP8B9AHz AvQC8wH0Af8B9AEHAfcB6wFtAe0B7wHrAm0B6gEHAvEC8gfzAvQB/w8AAf8B9AHzAbwBSwEVAUQCQwQi AhADIgEVAXMC9ATzAfQB/xUAA/8B9AHyARECbAEPAewF8QHwAewBEgGuAWwCEgEUAQ4B7wH/FgAB/wHz Ae8BkgL3Ae8BBwG8A/EG8gLzAfQWAAH/AvQB8wHyAvQB8wHyAvMB9AH/AfQBvAHvARQBEQESAesB7wH3 AewBkgHxAvIB8wj0Af8PAAH/AQAC/wFEAUMCEAQiBxAB7AL0AvMC9AH/FgAD/wHzAewBQwFtARIBDwET AbwE8QHvAW0B7AH3AewBEgFtAewBbQHqAfAB/xUAAf8B8gHtA+wB7QL3AgcBvAHxB/IB9AH/FQAC/wHy AfEBvAHzAf8B9AHzAfICvAHxAfQB/wHyAbwB6wETAW0B7QLvAZIB7AGSAQcB8AHzBf8B9AL/DgAB/wHz A/8CQwERASIBFQMiBRABQwEiAW0B8gHzAbwB8gL/FwAD/wG8ARQBQwHsAeoBDwFDAe8C8QHyAfABbQHs AbwBBwHsAW0B7QHvAbUBbQHsAfQVAAH/AfIB7AFtAusD7AGSAfcB7wXxA/IB8wH/FgAB/wHyAbwB7wHx AfQB/wH0AfIB8AL3AZIB8wH0AesB7AHvAesBEwHsAbwB8AEHAe8BkgH3Ae8BBwHxAfIB8wT/DgAB8wGS AewBbQFEAkMDRAFKASIBQwJEA0oBRAEQASIBbQHzAewBBxoAAf8B9AESARUBQwGRARQBDwFDAW0C8QHz ARIBkQH3Ae8B7QHsAesB7AHvAbsB6wESAfIVAAH/AfEBbQESAuoE6wHsAfcB8AbxAfIB8wH/FwAB8wEH Ae8B8AP/AfQB8gHxAe8B7AHrAhUB7AHvAbwB9wETARIB7AEHAfMB8gHxAu8B9wHsAe8B/w8AAv8BvAEi AUQCSgJLAkQBSgFRAUQBSgFLAUoBRAVKAUQB7AFKAZID/xcAAf8B6wETAUMBEwHsARQBDgFDARUB9wG8 AfcBbAL3Ae0B7AHrAewB6wHsAfcB7QHrAfEC/xMAAf8B8gISAhME6gFtAe0B8AfxAfMB/xcAAfQB7wHs Ae8B8wIAAf8B9AHzAfEBBwHrAewB6gHtAbwD7wLsAfcBkgEHAfEC9AHzAbwB8xAAAfQBGgEcAQ8BRAFL AXQBeQJ0AVIBSwFRAUsGdAJ5AXQBSgFEAUMB7AHzAfIB/xYAAf8BBwFmAkMBEwHrARUBDgERARQBEwEH AesBrgPtAesBbQHrAuwB7QHvAewBvAL/EwAB/wHyAeoBFAFEARIBSgHqAhIBRAHrAfAH8QHzAf8XAAH/ AbwB7AHtAfACAAL/AfQB8gHsAeoB7AHtAvcC7wL3AuwCvAPvAQcBvAH0Af8PAAH/AZkBmgEVAUMBSwF5 ApoBdAFRAksBSgV5A6ABmgFLAUoBRAF5ARoB8hcAAfMBEgERAQ4BEAHtAQcB7AEOAQ8BEQEVAewB6wGR AuwB7QLrAewB9wLsAe8C9wL/DgAC/wMAAf8B8gHqAkQBEgETAUQBFQFEARQB6wHwB/EB8gH/GAAB8wHs AeoB7wH0AwAB/wG8AewBBwLvAewBBwLtAe8DBwHtAbwB/wH0AQcB7AESAZIB8w8AAgcBeQF0AUQBUQFL AnkBcwFLAUoCRANKAksBdAJ5AXMBSwFDAUoBeQFzAfIB/xYAAe0CEQEQAeoBkgHvAZIBFAEOAQ8BEQET AeoB7QHsAesBkQHtAfcB7QH3Ae8B7QP3Av8NAAHzAuwB8gH0AgAB8gHqAhECQwIVAkQB6wHwAfIG8QHz AfQB8wL/FQAB9AH3ARMB7QG8Af8BAAL/AfQB8wHxAbwBBwHvAe0B9wGSAesB7AGSAbwB8gHzAfQCAAH0 AfABvAH/DwAB8AEHAZkBdAFLAXQBSgHvAXMDSwFKBEQBSgFLAnQBbgHsAUsBQwF0AXMB6wG8Af8VAAHw AhUCEQESAeoC6wJDARQBDwEQARQB7QHrAeoB7wH3AQcB9wHtAZIB7QH3Ae8B9wL/DQAB/wHyARwBbgHs Ae8B8wG8ARUCDwIRAUMCFQFEAW4B8AHyBvEB8wHyAvEB9AH/FQABvAEUAW0BBwHzA/8B9AHzAfEBvAMH Ae8D7AHvAfAB9AL/BAAB/xAAAf8BvAEcAUoBSwF0AUsB8gEcAUQCSwFKAkQCSgFLAkoBkgH/AewBdAFD AksBBwH/FQAB/wFDARQBDwJtARIBrgHqAWYBEQEOARQBFQEQAeoB9wHsAesB9AG8AfMB8QLvAfcCBwH3 Av8QAAHzAe0BEgJEAw8BEAIiAREBFQFEAesB8AHyCPEB8gHxAfIB/xYAAewBEwK8AfMC9AHzAfIB8QHw AgcBvAHwAQcBkgH3AQcB8wL/FwAB/wHzARwBmQGaAXQBHAHyA0QBSgJEAkoBRAFKAUQBvAHwAUoBeQGZ AUoBHAH/FQAB/wHsARABQwITAQ8BFQERBQ4BEAFtAewBBwHrAe0B8QG8AfAB8QG8AfcC7AH3AewC/xAA AfQB8QG8AeoCbgJEAg8DIgEQAewB7wHrAQcBvAjxAfMB/xYAAQcBFAHsAbwB8wH0AfMC8gHwAwcBvAHw AfECBwHyAfQB/xoAAfMBmQGgAXQBbgFKAUQBSwFuCEsB7QEUAXQBmgHDARwB9BYAAf8BBwHtAeoBEAMP Aw4BEAIOARAB6wHvAfMC7AH3AewCkgHsAe0C7AHvAewC/xAAAbwCbgFtAW4BGgEcAW4BQwEiBA8B7AFt AkQB7QHwB/EB9BcAAfMBbQEUAbwB8gH0AvMB8gHsA+sB7AEHAfIC8wH0Av8bAAEaAXkBdAFLAkQBSwFz BHQBSwF0AXMBSwFtAUoBdAGaAUsB9BkAAfEBFAFDAewCBwL3AewBrgFtAhAB6gHwAf8B9wHsAZIB6wHt AfcB7QEHAuwBvAHsAv8PAAHzAW4BSgFtAnQBSwVEAw8BFAMRAW0BvAHxAvIE8QH0FwAB/wHtAQ4B9wG8 AQAC9AG8AesB6gJtAeoBEgHxA/QB/xwAAfMBHAF0AXMCRAFLAXMBdAJ6AnQCSwFKAUQBSwJ0AfAZAAHz AeoBFAHsAfAB9AHzAfABBwL3AZIBbQERAeoBBwK8AewB7QHrAfcBkgHsAe8BbQHtAbwB6wL/DwAB8gNu AXMBHAREARQDRAFDAkQBQwFEAe0D8QHyBPEB8gH0Av8VAAHwAQ8BbQG8AfMB/wH0AW0B7QFtAesCbQHq AfcB9AP/HAAB/wEHAXQBcwJEAUoCSwJ0AksDSgFLAnQBBxoAAfQB7AFtAfcBBwHxAe8BEwFDARIBrgHr Aa4BEgFDAesB9AHwAewB7QHrAfcC7AHtAW0BkgHzAesC/w8AAfIBbgFKAUQB7QH/AW4FRAJDAUoBbgFE AkMB7AfxAfMB8gHxAfIB9AH/FAAB9AETARUBBwG8Af8B8AEPAewB6wHqA20B7QHzAf8fAAH/AXQBcwFK AUQBSgRLAVEBSgEVAUoDSwFzAfQaAAH0ARIB7AH3AuwBBwJtAe0BrgFsAa4BbQERARQB9AHwAZIB7wHs AQcC7AH3AW0BBwH/AewC/w8AAfACbgFEAe0B9AJuAkoDRAFtAW4BdQFLAUMBFQHsB/EBAAH/AfMC8QHz FQAB9wEOAewBuwHyAe0BFQHrAewBFAESAW0BEgHsAfIhAAHyAUsBSgJLAUoERANKAUsBUQFKAQcB/xkA Af8B7wESAfcC7wFtAfcCBwGSAW0BEwHsAesBEwFtAfQB8gHvAfIB9wG8Au0BBwHqAQcB/wHtAv8QAAGT AW4BSwFEAewBdAJuAUsBbgFKAhMBbQREAW4BkgG8AfAD8QHzBAAB9AHzAfEB9AH/EgABvAEOARMBvAHs ARMBvAH3AuwB6gESAW0B9wHwIQAB/wHsAUMCRAFKAXMDRAJLAkoCRAHzGgAB9AHsARIB9wLvAbwB8gGS AewC9wHtAfcB6wESAe8B9AHyAe8B8gH3AQcC7AH3AeoBBwHzAQcB/xEAAfQBBwFLAUQBbgF0AW8BSwJE AUoBEgJKAQ4BDwFEAW4BbQJuARwB8QLyAf8FAAL/AfQB/xIAAbwBDwERAQcBvAHvAfQBEgFDAZIB7wH3 Ae8BvAHzIAAB/wG8AZkBmgOgAXQDRAFKAXkBegF0AUsBSgHzGgAB8wHqARIB9wLvAgcB6wIVAvcBkQHr ARMB8AH0AfIB8AHyAe0BvAH3AewBBwHqAQcBvAH0EwABBwFLAUQBmQF0AW8BbgNEAUsCbgFEAUMBSgHx AfABkgFuAUsB7QHyAf8cAAG8ARABQwFtAe8BuwHsAhEB6wP0AfAB/x8AAf8BBwSaAaABmgF5BEoBdAOg AZoBmQG8AfQYAAHzAeoBbAGSAfcC7AG1BPcBkQHsAesBbAG8Af8B8wHyAfQB9wHxAbwB7wHxAfcB8wL/ FAACHAHDAXUBdAFLA0QBSgFLAm4BSgFuAfID8QEHARwBcwG8Af8bAAG8ARUBQwFtAeoB7wETARUBbQLz AvAB/yAAAf8BvAEbAfMBGgGZAZoBmQFLAkoBSwFKAXMBmgKZAbwB8wG8AfAYAAH0AewBbAHtAfcB7AFt AZEB8QHzAQcBkQHsAe0B7AFtAfAB/wH0AvMBvAHyAQcCvAHxA/8UAAH0ARwBmQF1AXQCRAFKAkQBbwGU ApkBvAPxAfMBAAH/AfMB8AH0GwABvAERARABEQHqAe8BEQHtAfAB9AG8AfAB/yQAAv8B9AIHAUoBcwF5 AXQBSwFuAZMB8QP/GgAB/wHtAWwBrgFsAm0BkQG8AfMB9wJtAZEB7QFtAfAD/wH0AfEB8AH3AfMB9AP/ FQAB8AJzAXUBbgFEA0oBRAJ0AXMB8AHzBPEB/x4AAf8B7AEPAg4B9wFtAREB8ALvAfMB/yUAAv8C9AHz AQcCdAF5ARwB8AHzAfQD/xoAAfQB7AFtARIDEwHrAfABBwHtAeoCEwGuAeoBvAT/AfMC8AT/GAAB/wHy AQcBcwFLAkQBbgEHAfIBAAH/AfIE8QH0GAAB9AHxAfMB/wEAAfQB8QEVAhABEQH3AUMBFQHzAZIBvAH/ JgAC/wL0AfABHAFzAXQBcwF0AbwB8wL0Av8aAAH0AewBbQHqAusBkgEHAfAB8wG8Ae8B7AHrAa4B6gHv Bf8B9AT/GwAB/wHvA0QB7QH/AgAB9ALxAfIC8QH0GAAB9ALsAfAC9AGSAUMCEQFDAZIBDwEVAfEB7AHw JwAC/wL0AQcBcwF5ApoBeQEHAfMC9AL/GgAB9AHsARQB6wG1B/8B8gEHAfcBbQEHAf8DAAX/HAAB/wEc A0QBSwH/AgAB8wHxA/IB8QH0GAAB9AHtARUB7AHvAZIBEgMRARQB9wEPAREBvAHrAfAnAAL/AvQBvAF6 AZoBwwGgAZoBmQHzAvQD/xkAAf8B7wFsAW0B9wH0Bv8B8wEHAe0B6wHxAf8kAAHzAnMCSwFuAbwCAAH0 AvEB8gLxAfQZAAHwAewCFQFDBBEB6wHvAREB7QH0AfAB8ScAAv8C9AG8AZkCwwGgAZoBvAHzAfQD/xoA Af8B8gHrAW0B9wHxBv8B8QHvAe0B9wH0Af8kAAHwAXQBkwEaAnQBBwIAAf8B8gHxAfIC8QH0GQAB/wHy Ae0BQwERAkMBFQHqAfIB7AH3AfQB8gHwAf8nAAP/AfQB8wGZAsMBoAGaAfAC9AP/GwAB/wG8AewB9wHw Bv8BvAEHAe0B8QH/JQABBwEcAhoBmQF0AQcDAAH0AfEB8gHxAfIcAAHyAbwD7AHvAfMB7QHsAQcBvAHy AfQoAAP/AvQB8AGZApoBvAHzAfQD/xwAAv8B8gEHAbwB9AX/AbwB7wG8AfQB/yUAAbwBcwFuAZoBdAFu AQcEAAH0AfMB9B4AAfIB8QPyAbwB9wG8AfEB9CsABP8B9AHyAfAB8gHzAfQE/xwAA/8B9AHxBvAB8QHz A/8lAAHzARwBdAGaAnQB8AUAAv8fAAH/BfQC/y4ABP8C9AX/HwAC/wP0A/MC9AP/JgAB/wEHAXQBmgF0 Ae0B/1wACv8gAAb/AfQG/ygAAbwBHAEHAf9gAAX/IgAM/ykAAf8B9AH/iwAG//8A/wD/AMAAB/+NAAP/ JgAO/4gAAf8B9AHzAfQB/yUAA/8B9AL/AfQI/1QAD/8jAAH/AfQB8gHsAfAB9AH/IwAD/wHzA/IC8QHy AfEC8gH0BP9QAAP/BPQF8wT0A/8hAAH/AfQB8AERAewB8gH0Af8iAAP/AfIBvAH3A20CFAHqAfcBvAHz AfQC/yIAC/8iAAL/AfQB8wHyAvEG8APxAfIB8wL0Av8bAAT/AfQB8gHtAREBcwEHAfIB9AT/HwAC/wHw AewBFAMVARQBQwJKAewB7wHyAv8cABf/GwAB/wH0AfMB8QHwAgcB9wPtApIC9wHvAgcC8AHyAfMB9AP/ FwAC/wL0AfIB8QEHARIBRAFzARwBvAHyAfMC9AL/HgAB/wH0AfcB6gEVAUMBFQFEAksBdAF5ApkBvAH0 Af8bAAT/AvQG8wLyA/MB9Af/GQAB/wH0AfMB8AEHAfcC7AFtAeoBbQHrAW0C6wLsAe0BkgH3Ae8BBwHw AfEB8wH0Av8VAAL/AfMB8gHwAbwB7wHtARUBSwJzAu8BvAHxAfIB8wH0Av8dAAH0ARwB6gFKAkQBSwFS AXkBmgEaARsCvAHzAf8aAAP/AfQB8wHxAbwB9wFtARQGQwESAewBvAHxAvMB9AX/FgAB/wH0AfMBvAGS Ae0BkQFtAmwBFAVsAm0C6wPtAu8BvAHxAfMC/xIAAv8B9AHyAbwBBwH3AZIB7AFtAUQBUQF0AUsB7AHt AvcBBwHwAfEB8wH0Av8aAAL/AfIB7QFLAXMCSwFSAZoBGgEbAfIBvAHxAfQB/xkAA/8B8wHxAQcB7AHq AUoBSwF0AXkCmQJ5AXQBUQFLAUoB6gGSAQcB8gHzAfQF/xQAAf8B8wHwAu0BkQGuAWwBFQIUAUMBFQJD ARQBbAGuAeoC6wLsAe0BkgHvAQcB8AHzAfQC/xAAAf8B9AHyAQcB9wHsAesBEgEUARUBSgJ0AUsBFAFt AesB7QGSAfcBBwHwAfIB9AL/GgAC/wHyARwBcwJLAVIBmgEbAfEBBwG8AfIB9AH/GAAD/wHzAfABkgES AXMBmQMaArwB8AG8AQcDmQF0AVEBSwFtAe8C8AHyAfQE/xMAAfQBBwGRAfcBkQFsAhQBEQFDAhEBEAER AhUCQwEVARIBbQHrAewC7QGSAe8BBwHwAfMB9AH/EAAB/wHzAQcB9wHrARABEQEVAUsBdAMcAXQBSgFD ARMBFAHsAu0B7wEHAfEB8wH/GwAB/wH0AfMB7AMVAUsBmQLvAbwB8gH0A/8TAAX/AfMB8AFtAeoCGgIb AfAB8gLzAfQB8wHyAfECBwKZAXkBUQFtAe8BvAEHAfEB8wH0A/8SAAG8AfcBuwGuARQBEAFsARMDFAEV AQ8BDgEQAkMBDgEPAUMBbAFtAewB6wPtAe8BBwHwAfMB9AH/DQAC/wH0AfABkgETAUMBSgFzA5kEHAJ0 AUoBFQESAewC7QGSAQcB8QHzAv8ZAAL/AfQB7QFDAUQBeQEbAZkBHAHvAQcB8wX/DQAK/wHyAW0BcwEa AfMB8gHwAfMD9AHzAfIC8QHwAbwDBwGZAXkBUQHsAQcB8AEHAfAB8gH0B/8MAAH0AfcBugGRAWwBFQEU AW0C6wGSAewB6gEUAg8CEQEQAREBDwFDAeoBbQLsAu0B9wHvAQcB8QHzAv8LAAL/AfQB8gH3ARIBRAFz ARoBmQFzAUoBFAIVARQBSgFuAhwBcwJKAewC7QGSAQcB8QHzAv8XAAP/AfQBFAFEAUsBdAGZAZoBmQGS Ae8B8QH0Bf8MAAj/AfQB8wH3AewBGwH0AbwB8QHyAfQD8wHxAbwBBwLvAQcC7wIHARwBeQF0AXMCvAEH AfAB8gH0Bv8LAAH0Ae0BkQGuARQCbAHsAe8BvAIHAe0B7AHqARUDEQEPARACEQEUAW0B6wPtAu8BBwHw AfMB9AL/CAAC/wL0AfIBBwESAUoBmgEbARwBQwIRAUMDFQERASIBQwFuARwBcwFLAUQB7ALtAe8BBwHy AfQD/xQABP8B9AHzAUQCQwHrAbwB7wHtAfcBBwHyCf8IAAj/AfQBBwFtARsB9AEHAbwB8AHxA/IB8AG8 Ae8B9wTvAvcCBwJ5AXQB7AG8AgcB8AHzAfQF/woAAf8BvAKRAWwBEQJsAewC9AHzAQcC7AFtARMBFQIR AQ4CEQEQAUMBEgFtAewBkgLvAgcB8AHyAfMC/wcAAv8B9AHzAfEBBwESAUsBwwHyAewCEQFDBBUCFAIV AUMBSgJzAUsBbQHtAZIB7wEHAbwB8gHzAfQE/w0ACP8B9AHzAe8BFQFLAZkBHAGSAe0BkgHvAbwB8gL0 B/8GAAj/AfMB8QHrAQcB9AG8AgcCvAHwAbwBBwL3AW0BFAHqARQB6wH3BAcBHAF0AXkBdAEcAbwC8AHx AfMB9AT/CgAB8wH3ApEBbAETARQB7AH3AbwB8wG8Ae8B9wLsAW0BEwFDAQ4BFQIRAQ8BQwESAesB7QH3 Ae8CBwHwAfEB8gHzAfQB/wcAAf8B9AHzAfIB8AHrAUoBGgH0AewBEQEVARQEFQIUARMBFAEVAREBQwFE AnMBbgHsAu8CBwHwAfIC8wL0Av8MAAf/AfQB8wHxAfcBFAF5ARsBHAKSAewBkgEHAbwB8QHyAfMB9Aj/ AwAI/wHyAZIB7AHzAfQCBwG8AQcBvAEHAe8B6wIUAUMBEQFDARMBHAFtAfcB8AG8AvABcwF0AXkBHAG8 AfAB8QHyAvME/woAAQcBtAGRAW0CFAETAesBbQHrAQcC9wHvAe0B7AHrARIBQwEOAg8CEAFDARIB6gHs AfcCBwG8AvEB8wH0Av8HAAH/AvQB8wEHARUBHAH0AZkBEQFEAxIDFAQSARUBQwFEARUBSgF0AnMB7wIH AvAC8gHzAvQC/wwABP8D9AHzAfABvAHtAUQBcwGZAewB9wGSAewC7wEHArwB8QHyAvMB9AX/AwAH/wH0 AfEBbQGZAfQDBwK8AQcB6wESAUMBEAESAUQBEAEPAUQB7wHtAW4B9wHyAfAB8QEHAXQBeQF0AQcE8gL0 A/8JAAH0AbsCkQFsAUMBEAEVAeoBEgHvAfIB9wLvAu0B6wFtARMBDwEOAQ8BQwERAUMCEgFtAe0CvAHx AvIB8wH0Av8IAAL/AfQB7wFKAcMB8QFEAUoC6wJtAeoDEgJtARIBQwEVAeoCRAFKAXMBUQHvAbwC8AHy AvMC9AP/DAAD/wH0AfMB8gLxAQcB9wEUAREBSwJKAvcE7wEHArwB8ALxAfIC9A7/AQcBbQEaAfABBwFt AZICBwH3ARQBSgFEAUMCFQFDARIBSgFDAUoBHAHrAe0B8AHvAesBbgJ5AQcB8gHzAvIB8wH0A/8JAAHy AfcBtAGuARQCFQJDARABvAEHAewB7wH3Ae0B9wHtAesBEgERAQ8CEQEQAUMBFAFtAesBkgHvAfAC8gHz AvQC/woAAf8B7QFRAfQBcwFEAXMC7QLsAW0BEwEUAeoB6wFtARQBEQEVAhICRAFLAXMBHALxAfIB8wH0 Bf8OAAP/AfMB8AIHAe8B7AEiAUsBUQFLAUQD7wMHBLwC8ALyAfMB9An/AfQB8QHvAfIB7wF0ARsBHAHs AQ8BFAHrARQB6gEUAewBcwESAREBEAETAW4BcwJKAUQCSgESARMBQwESAXQBeQEcAfMB7wH3AfIB9AT/ CQABBwK7AZEBbAESAWwBEwEUARMB9wHsAW0C7wIHAe0B7AFtAUMCEAIPAUMBFQFtAewBkQEHAfEB8gHz AvQC/wkAAf8BvAHtARMBegEbAW4B7AEcAe8B9wHtAewB6wETAUMC6wEUARABEQETARIB6gJEAUoBUQFL Ae8B8QHzAfQB/xMAA/8B8wG8AgcB7wEUAUsBeQGaAZkB6wHvAQcFvAXwA/IB8wH0B/8B9AHzAewBmQHx Ae0BmQEaAW0BEAEOAQ8CSwFKAUMBbQFzAUQBFQFEAXMB7wEcAnMBSwFEAXMB6gEUAREBQwFLAXkBHAH0 AesBbgHwAfMB9AP/CQABBwK7AuwCkQH3Ae8B9wHrAeoB7AHzAfQB8gHvAe0B7AHrARUCEAEPARABFQET AusB7AEHAfIC8wH0Av8GAAH/AfQB8gH3AeoBFQFEAVEBmgGZAUoBbgHvAbwB9wLtAewB7QHqAesBEwER ARABQwFtAewB6wHqAkQBSwFRAewBBwHxAfQB/xMAA/8B8AHvA7wBbQFLARwBGgEcAeoBBwHwBfEH8gLz AvQH/wHxAW4BGgHxAe0BmQEaARIBEAEOAQ8BRAF0ARwBbQEUAUoBcwEaAZkCHAOZARwBcwFKARQBQwEV ARQBRAF0AXkB8wHvAXQB7wHzAvQC/wkAArsBtAHqAhUBFAETARQCQwEUAW0CvAP3AewBbQEUAUMBEQEQ AREBQwESAusBkQEHAfMC9AP/BgAB/wEcA24DdAGaARwBSgEcAbwB8gH3Au8B7AHtARMBQwERASIBEAHq AfcC7AFtARIBRAFLAXMBSwETAeoB7QHyAf8SAAP/AbwB6gHrAfEB8AETAUsBmQEaAZkBSgHvAvMB8AHz AvIB8wr0B/8BvAFzAZkB8gHtAZkBBwESARABDgEQAewBSwFzAQcBbgFDAZkDGwGZARwDGgGZARwBbQES AhMBFAFSAZkB8wEHARwBvAHyAfQD/wkAAbwBuwGRAeoCFAFDARECEAEVAhMB6wHvAfIBBwH3AuwBbQEV AhEBQwEUAeoB6wHsAZEBvAL0A/8IAAH/AfABvAEaAZkDeQF0AW0BHAG8AfMB8AO7AfcBEQMiARUC9wHr AewB6wFtAUQBSwJ0AlECSwFRAfMOAAL/AfQD/wHzAewBEgITARABSwF5ARoBmQFtAfMB7wFtAe8E9Aj/ AfQI/wHwAXMBmQHzAe0BmQEHARIBEAEPAREBcwFKAUMBHAGZAXMBmQIbAZkBSgFLAZkBGwMaARwBEgHq ARMBbQFRAZkB8wEHARwBGgHyAfQMAAG8AbsBtAFsAkMBEQIQARUBFAEVAeoBFAGSAfQBvAH3Ae0B7AHr ARUCEAERARUBEgLrAfcBvAH0Av8MAAH/AfQBGwGZA3QBEgHtAbwC8wHxAfAB8gFtBBEB7AEJAfcB7AHt AewBbQEVAUsBdAKZAhoB8AHyAf8OAAP/AewBvAH0Af8B7wFKAm4BcwFLAZkBGwGZAUoBBwHsAe8B/wL0 AfIB8QH0EP8B8AFzAZkB8gHtApkB6gERARABQwNKAUQBHAHxAhsBvAFKAW4BHAEaAvMCGwEcARQBbQES AeoBbgGZAfMB7wGZARoB8wH0Af8LAAG8AQkBuwFsARQBQwMRAUMBFQEUAeoBFAHsAfQBBwLtAewBbQEV AhEBQwEUAeoC7AG7AbwC/xAAAbwBcwF0AXMBSgHsAQcB8gEHAbwC8wFDASIBEQEQAeoB8QEJAe8B9wLs AeoBFQFzARoCvAHxAfQB/wwAA/8BAAP/AbwBSgHrAQcB7QESApkBdAFLAZkB8AEcAUsCHAGZAfQBBwLs Ae8B9BD/AfIBHAGZAfEDHAFKA0MBSwEcAm4BSgHsAfABGgFuAe8B8gLzBPQB7wEUAewBbQESAXMBmQH0 Ae0BBwG8AfMB9AH/CwAB8AG8AbsB6wGRAWwBQwERARQBEQFDARQBFQESAfcB9AEHA+0B6wESAkMBFQES AW0B7AH3AfAB8gH/EQAB/wEcAXQBcwFKAewB7wHwAe0BEwG8AfADIgEUAbwB8wEJAe8C7QHsAkQBHAG8 EQAC/wH3AesB9AL/AfIB6wEcAhMCGgF0AksBdAG8ARwBSgF5ApkBbQETAXMBmQH0BP8EAAn/AfMBHAEa AfEB7wJ5AW0BFAFKAUMBcwEaApkBcwFKARQB7QEcAfQBGwEaBPQB8wHtARIB7AFtARUBdAEHAfQBHAEa AfAB9AL/CwAB9AEJAbsBkQHtAWwBFAERAUMBFQEQARUBFAERAQcB9AEHAfcC7QHrARICEQEVAeoB6wGR AbsB8AH/EwABvAFLAXMBSgHqAewBBwG8AesBFAEVASIBEQFKAe8B9AHyAfABBwH3Ae0BbQERAUoBmQHw EgAB/wHxAW4BEgHvAfIB7wFKAZkBGgKZAXQBSgFEAUoBcwIcAUQBSgEcARoBGwG8AZkBHAHyAbwB7AEH AfMC/wQACP8B8QHyAfMB7wF0AXkBcwFDARUBFAFuARoCGwEaAZkBSwGZARsB9AIaBPQB8QHsAW0B7AHq AUoBmQEHAfQB8ALzAfQB/w0AAbwBCQKRAWwBEwEUA0MCDwEVAe8B9AG8Ae8C9wHsARQCEQETAW0CkQG7 AfAB/xMAAfMBSwFRAUsBRAFtAe0BvAHwAeoBIgFDAe0B8gP0AfIBBwH3Ae0BFAFDARwBvAH/EQAC/wH0 Ae8BbgFEAW0B6wEcARoBmQF0AXMBSwFEARUBcwF5ARwBmQFKARQBbgEcARoCGwGZAW4BEgFzAQcB9AL/ CAAH/wHxAXMCeQEVAREBFQEUAe8BBwEaBBsC8wEbAfMC9AHzARsBvAJtAZIBEwF0AZkBvAP/AfQC/w0A AfIB8AK7AZEDFAERARABFAEVARAB6wHyAvABBwHtAW0CQwEUAW0BkQH3AbsBvAHzFQABvAJRAUoBFQHr AfcCvAHrARwE9AHzAfABBwHvAW0BEQFLAZkB8RIAAf8B9AHzAesB6gFRBJkBdAJLAUQCFQEbApkB9AFz ARUBRAFLAXkBmQEaARsBGgGZAUsBBwL0Av8HAAb/AQAB/wFzAnkBSwIUAewB9AHzAbwB7wEaARsCGgEb A/MB8gK8AQcB6wHqAewBSgGZAbwB8wEAAf8B9AH/DwAB9ALwArsCkQFsARUCEAERARABQwFtAe8BBwHy AewBFAEVARIBbQHsAfcBuwG8AfEB9BUAAfQBHAF0AUsCRAFtAe0B7wHwAfMD9AHzAfABvAEcAW4BFQFK AZoBGwH0EQAC/wHzAZIBEQFzApkBcwFLAW0CRAJDAUoCGgEcARoB9AEaAUoBFQFEAUoBbgFzARwBmQEa AXMBEwHvAfMB9AH/BwAG/wEAAf8B8AF0AXkBcwHvAfMF/wHzAfABvATwAfIB8wH0Av8B9AHyAW0BdAEa AfAB/wEAA/8QAALzAfEB8wG7ApEB6gESARQBFQJDARUBEwESAhMCFAFsAZEB9wG7AbwB8gHzFwAB8wJ0 AUsBRAFDAUQB6wGSAQcB8AHyAfMB8gEaARwBSgEVAUsBGgEbAfIB/xEAAf8B9AEHARQBSgKZAUsBRAEV AW0BSwJzARwBGgEbAQcBdAEaAvQBGgFLAUQBFQJEAUoBcwEcARoBcwHqAfAB9AH/BwAF/wMAAf8BHAF5 AXQBHAH0D/8C9AHzAe8BSwEaARsB8gH/BAAB/w8AAf8B8ALzAbsBkQG7AZEEbAIUARUBFAMTAeoBkQH3 AbsB8AHyAfAB/xgAAfACdAFLARUCIgFEAW0DcwFuAUoBRAEVAVEBwwHzAfESAAL/AfQB7QFKAZkBHAES AUMBbQHxBPQB8gHwARsB7wFuAZkB8AG8AvQBGgGZAe0B6wESARUBRAFzAZkBcwESAfMB/xAAAfMBHAF5 AXQBkg7/AvQB8wEHARUBmQEbAbwC/xYAAfAB8wHyAQkBtAJsAesBuwFsAeoEbAFtAewDuwHwAfIB8AH/ GQAB/wHwAZkBHAFzAUoBFQERAyIBEQEVAUoBSwGZAfQB8QHyEwAC/wHzARUB7wEHAe0B6wGSAvIE8ALx AfABBwFuAZkB8QHwAbwF8gG8Ae8C6wHsAZkBcwH3AfQB/w8AAf8B8gEcAXQBcwHsAfAE9AX/A/QB8wHx AfcB6wEaARsB8AHzAv8WAAH/AfIB8wHxAQkBuwKRAa4GkQL3AbsB8AHxAvIB/xsAAf8B9AG8Ae8BmQFz AW4BSwJKAUsBcwEaARsB8wHwAfMB/xMAAv8B8AHtArwB7wEHAfAB8gLzAvIE8wHvAUsB7wHwAfIC8QHw A/EBvAHwAfEBBwLvAQcB7QHyAf8QAAH/AfABmQF5AXQBbgGSAfEB8gfzAfIB8AHvAesBHAEaAfQB8AHx AfQC/xcAAf8D8QEJArsBtAK7AZEB9wK7AQkBvAHwAfMC8QH/HwAB8wG8A5kDeQEbAfIBvAHzFgAB/wH0 AewBvAHxAfIB9wHwAfMJ9AEHAXMB8AHxAfMB9ALzAvIB8QHzAfEB8AHzAfACvAHvAfEB/xIAAfEBBwGZ AXkBUQEVAewBvAHwAfEC8gHxAbwBBwLrARoB8wH0AfAB8QHzAfQB/xoAAfQB8AHzAfEBCQLwAQkE8AHy AvQB8AH0IwAB/wHzAbwCdAGZARsB8xgAAf8B9AHsAfAB8wG8AQcB8gr/AfMBvAHwAfIB9AP/BPQC8wG8 AfAC8gG8AfAB/xIAAf8B8QEHApkBeQFzAUoC7AHtARwB7AFuAewBmQEbAfMB8gHwAfIB8wL0Af8bAAH/ BPIB8wH0A/MD8gHzAf8mAAH0AXMBdAGZAbwB/xgAAv8B7wHxAfQC8wL/BwAH/wEAB/8B9AHzAfAB8gHz AQcBvAH/EgAC/wHzAfABBwOZARwBcwJ0AZkBGgEbAfMB8gHwAfEB8gHzAfQC/x4AAv8H9AL/KQAB7wF0 AZkB8BkAAv8B8AL0Av8NAAH/BgAG/wP0AfMB9AH/EwAC/wH0AfMB8QG8AfAEGwHzAfEB8AG8AfEB8gHz AvQC/1MAAfEBdAEaAfQZAAb/GAAC/wEABf8VAAP/AvQK8wL0Av9VAAH/AXQBGgH/GgAE/xwABf8WAAX/ B/QF/1cAAQcB8lsABv9dAAH/AfT/AP8A/wD/AP8AbgAI/7YADf+xAAT/CvQE/yIACv+BAAP/AvQK8wH0 A/8iAAb/AfQE/1YACv8gAAL/AfQB8wLyCfEB8gHzAfQC/xoACP8B9AHzAfID8QH0A/9UAA3/HgAC/wH0 AfMB8gLwArwBBwS8AvAB8QHyAfMB9AL/FwAF/wL0A/8B8QFLARoBmQF0AUQB7QHzA/8DAAj/FAAF/wkA Av8jAAL/C/QC/x0AAv8B8wHyAfABBwH3Ae0C7AGSAfcC7QH3AQcBvAHxAfIB8wH0Av8WAAP/AfQC8gLx AfMB9AHwAZkBGwGZAXMBSwHsAfAB8w3/FAAB/wPzAfQB/wYAAv8B9AHzAv8gAAL/AfQB8wTyBPEB8gHz Av8dAAH/AfQB8gHwAe8BbQIUA2wD6gESAW0B7AEHAfAC8wL/FgAD/wHzAe8D9wG8AfIB8QGZARsBmQES AUoB6gH3AfMB9A3/EgAB/wHzAe8BkgHvAbwB8wH0BAAB/wH0AfICBwHyAfQB/x8AAv8B9AHxAbwFBwHv AQcBvAHxAfQB/xwAAv8B8wHxAfcBEgFDBGYCEwISARMCFAHqAe8B8QHzAv8WAAH/AfQB7QHrAW4BRAER AesB9wIHAZkBGwGZAksB6gH3AbwB8gHzBP8E9AX/EQAB/wH3AREBFQFtAewB7wG8AfMD/wH0AfEB6gFD AesB7wHzAf8fAAL/AfMBBwH3AZIC7QGSAu0BkgHvAfAB9AL/BQAB/xUAAf8B9AHyAe8BEgIVA0MBDQEV AUMBFQEUARMBFAFmAREBEgHvAfMC/xUAAv8B8wFzARoBmQFzAUoBEwHsAe8B9wEaARsBmQJLAeoB7AH3 AQcB8QH0A/8B9AHzAfEB8wH0Bv8PAAHzAeoCSgEUAW0B7AHtAQcB8QLzAfEB7AEQAUQBbQHvAfMB/xkA B/8B9AHyAZIC7AVtAuwBBwHzCf8TAAL/AfQB8AFtAUMCZgEVAUMBFQINAkMCFALqAWYBEQHqAfEB9AH/ FAAD/wHzAQcBGwGZARIBSgETAusB7AGZARsBmQJLARMB6wHsAfcBvAHwAfMB9wFtAUoBQwFtAfAB8gH0 Bv8OAAH0ARwBcwFLAUQBFQHsAu0B7wEHAbwB7QEVAUQBbgFzAQcB/xkAAf8B9AX/AfQB8gHwAewBbQQS ARMBEgFtAesB7wHyAfQE/wP0Af8TAAL/AfMB7wEVAmYDbAFmAWwBZgESAmwCrgFtAWwCZgHvAfMC/xIA A/8B9AHyAgcB7AETAUoBEwHqAesBbQGZAfMBmQFRAUsBSgFzAW0B7QH3AbwB8QHsARoBmQFzARIB7wHx AfIB8wb/DQAB/wHzARwBcwFLAUQBEgLvAZIB7QHsAhUBSwEcAbwB/xoABPQD8wHyAfABBwHqAhIDEwEU ARMB6gESAZIBvAHyAvMD9ALzAf8SAAL/AfQB8gHsARUBFAETAWwB6gFsAa4BuwEJArsBkQNsAa4BbAFm AesB8gH0Af8SAAL/AvQB8QGZARwBbQEUARMBEgHtAQcBbQGZAfMBmQJzARIBmQFuAuwB9wEHAe8BGwGZ AW0BbgHvAQcB8AHyAfMB9AT/DwAB9AEHAXMBSwFKAZIB8QHvAewBFQERAUsBHAG8AfQbAAPyAvEB8AG8 AQcB7wGSAW0BEgEUARUBQwMUARIBEwHrAe8BBwG8A/EB8gHxAfIB/xIAAv8B9AHzAesBFQFmARMBrgES ARMCrgH3AbsBtAGuAmwBbQKuAWYBEgHxAfQB/xIAAv8B9AHzAfEBmQHwAXMBQwEUARUB7AEaAW0BmQHz AZkBeQFzARIBGgFuAW0B7AGSAu8BGwGZAUsBbgHtAgcB8AHyAfMB9AP/EAAB/wEHAXMBbgFEAesB9wHr ARABSgEcAe8B8AHzAfQOAAL/CgAD8AG8AQcB7wH3Ae0B7AHqARMBFAQVAhQBFQEUARIB7AHtAfcB7wEH A7wB8AH/EgAC/wHzAbwBEgJmAWwBiwJsApEBtAG1AbQBbAFmAWwBiwFsAa4BbAFmAfEB9AL/EQAC/wHx AXMCBwG8AfACFQFDAXMBmQFtAZkB8wEaARwBcwHrAbwBbgFtAesB7AH3AZkBGwGZAUsBbgL3AQcBvAHw AfEB8gH0Av8FAAP/CgABvAJzAUoB6wEUAUMB7QEHAfABvALxAfMB9AL/CAAC/wH0Av8JAAHxArwBBwHv AZIB7AHqARMBEQEVARQDFQJDAhUBFAEVARMB6gHrAe0B7wIHArwTAAL/AfMBBwNmA2wBZgFsAq4BkQGL AUMBZgGLAa4BbAGLAWwBZgHxAfQC/xAAA/8BBwEaAQcCvAHwAe0BQwEUApkBbQHvAfMBGgGZAewB6wHv AUoBbQHsAW0B9wHvARsBmQFLAW0B7AHrAe8BBwK8AfEB8wL/BAAC/wHzAv8HAAL/AfMBBwIcAW0BFQES Ae8B9AHzAfEB8AG8AfAB8gHzAv8HAAH/AfMB8gH0Af8JAAH0A+8B9wHtAeoBFAERARABEwFsAW0BZgMQ AREBtAHqAREBEAEVARIB6wHtA+8BBxMAAv8B8wFDA2YBbAGLAmwDZgFDAWYDbAGRAa4CbAFmAewB9AL/ EAAC/wH0AQcBGgG8AQcB8QEHAfMBEwEVAe8BmQESARwB8wEaAZkBbgHrAZkBbgHsAW0C7AHvARsBmQFL AW4BcwF5AewBBwK8AfAB8wL/BAAB/wHzAvIB9AH/BgAB9AHzAbwB7wH3AhwBbQHtAf8BAAH/AfQB8wHy A7wB8wH0Af8FAAH/AfMC8gH/CgAB8wLvAfcB7QHqAWwB6gGuA5EBtQFtAWYBEAEVARMBuwGRAq4B6gFt AesB7QGSAu8BBxMAAv8B8gEUAUMCZgOuAZEBtAGuApEBtAEJAq4CkQGLAmwBrgHxAf8RAAL/AfQBBwG8 AgcB8wGZAfIBkgEVAe8BmQFEAZkB9AEbAZkBSwETAZkBcwLsAQcC7wHzAZkBcwHsAe8BmQH3AQcCvAHx AfQC/wUAAf8B8wLyAfMB9AX/AfMBvAHvAgcB6gFzARwB7wH/AgAD/wHzAfEC8ALxAvQD/wHzAvIB8wH/ CgABvAP3Ae0B6wKuAbUBuwMJAa4BbAEQAq4BGQEJAfcEkQHtAZIB9wHvAQcTAAL/AfcBFAFDAWYB6gGu AZEBrgGRAWwBZgNsAZEBrgGRAbUBuwGuAmwBrgHxAf8RAAP/AQcBGgIHAfMBvAEHAbwB6gHvARoB7QEa AfQB8wEaARwBcwGZAXMC9wGZAu8B8wEaAXQB7AEHAZkB9wHwArwB8gH0Av8GAAL0AfMB8gLzAvQB8wHw AbwB7wEHAfAB6wHqAQcBvAEcAQcB/wQAAf8B9AHzAfEB8AG8AfAB8gPzAvIB9AL/BQAB9ATvBPcB7QHs Aa4BtQK7AwkCkQEQAbQBrgEJARkBCQO7AesB7QGSBPcCBwHyAf8PAAH/AesBFAFDAWYBrgGRArQBkQGu AWYBDQFmA64BtQHcAbsBrgJsAa4B8QH/CwAB/wYAAf8B9AEHARoC7wHzARoBeQHxAfcBmQEaA/QDGwHz ARoBcwHvAfcBmQLvAfMBGgGZARwBvAF5Ae8B8gHxAfAB8wH0Av8HAAH/AfQE8gHxAbwC7wEHAfIB7AHq Ae8C/wEHAZkBBwYAAf8B9AHzAfIFvAHyAfMB9AcAAfQB7wL3Be8B9wHtAesBkQGuAWwBFAFmAWwBZgG7 AUMBuwESARMBEgFsAa4BtAGRAewBkgL3Au8E9wHxAf8OAAH/AW0BFAEVARIBrgGRArsCtAG1AbQBuwG0 ApEC4QG0Aa4CbAGuAfEB/wsAA/8EAAL/AQcBGgFKAXQB8wEbAZkBvAHvAZkBBwHzAfQB8AEcAXMBmQEa AZkB7QHvAfcBvAGSAe0B8wEaAZkB7AHvARwBBwH0AfMC9AP/CAAC/wH0AfMB8AG8Au8BBwHxAZIBbgEH Af8CAAH/AfABmQEHAf8FAAL/AfQB8gS8AfIB8AH0BwAB/wHwAfcG7wH3Ae0B7AGRAa4BbAEQARUBQwEV Aa4BQwGuARUBEwERAmwBkQHsAZIB9wHvAfcF7wH3AfMPAAH/AfMB7AEUARIBbAKuAZEDtAHwARkCtAGR AbsBtAGuA2wB9wH0DAAD/wQAAv8BvAEaAe8BGwH0AfMCGgG8AZkBHAG8AQcBdAFzAW4BSgFzARwD9wEH AW0BcwHzARsBmQFKAW4BmQEHB/8CAAH/BwAB/wH0AfIB8AIHAfAB7wFzAbwB8wH/AwAB9AEaAZkBvAH/ BAAD/wHzAfID8QHwAe8B9AgAAfIG9wGSAe8BkgH3Am0BEwEVAeoDbQEQAhIBbAEVAW0BrgGRAe0C9wHv BfcB7wH3Af8PAAL/AbwBFAISAWwBkQG0Aq4BtAG7ARkBuwGuAZEBuwGRAWwBZgJsAfAB/wwAA/8EAAL/ AfMBvAP0ARsBGgEbAfQBGgHtAfIBvAHvAZkBGwEcA+8EBwEbAfQBGwEaAQcBmQF5AQcH/wIAAfABBwcA Af8B9AHzAvIBvAHsARoB8gX/AQAB9AEaAZkBBwMABP8C8wL0AfMB7AHwCQAB9AP3AZIG9wHrAWwBEgKu AmwBrgEVAW0BrgKRAeoBrgHrAewB7wf3Ae8B8hAAAv8BvAEUAWwCZgFsAa4BbAFmAZEBCQEZAZEEbAJm AWwB6gG8AfQMAAP/BAAC/wH0AfAB8gEbAfABdAESAXMBmQEcAesBBwG8AfEBGgEbARoE7wG8AQcD9AEa AZkCGwF0AfAE/wIAAf8CAAH0AewB8gH/BgAD/wHzAewBHAG8Cf8BGgGTAbwB9Ab/AfQC/wG8Ae0B/woA AQcC9wGSBfcBkgHsAeoBkQK7A5EBbAFtAbQBtQEJAfcBrgHsAe0I9wHvAf8QAAL/AbwBEwHqAWwFZgGu AQkBGQGLBGYDbAHqAbwB/wwAA/8EAAL/AfQB8wHxAbwBmQIcAW4B7wLsAesB8wH0ARsBGgGZAe8BvAIH AbwCBwHyARoBdAFLAXMBHAEHAfME/wIAAf8DAAHxAe8B9AgAAfQB7AEcAfAJ/wEAAfQBGgGZAe8B9Ab/ AQAB/wHvAfALAAH0CfcBkgHsAxkBuwGRAWYBQwETAbUDCQG1AewBkgj3AfASAAH/AfABEwHqAusDbAKR AQkBGQauAmwB6gG8Af8MAAP/BAAC/wL0AfMCvAGZARsCvAEHAfAB6wHvAvQBGwEcAQcB8gPwAbwCBwEc AZkBvAEcAfAB8wH0A/8DAAH/BAAB7wEHBwAB/wHvAXQB8AH/CwAB9AHvAXQBBwL/BQAB8QEHAf8MAAEH AfcD7wX3Ae0B9wG7ARkBkQESAhUBEwFtAbUCCQKSBPcD7wH3AbwB/xIAAf8B8QETAW0BrgG0AbsBtQK7 ARkB/wEZArsDtAGRAYsBbAEUAfEB/xMAAv8C9AHyAfEB8wEaAbwBGgEHAfEBvAHtAeoBvAHyAfABvAHy AfMC8gG8AfACvAHwARoBGwG8AfAB8gH0A/8DAAH/BAAB9AH3AQcB/wQAAf8BBwFuAbwB9AH/AwAC/wIA AfQB/wMAAfQBBwHrAe0B8wH/AwAB8gHvAfINAAHxBe8D9wPvAu0CrgEUARUBrgFsAW0B9wPvBPcE7wEH AfQTAAHyAeoBbQGRAbQBGQLiA/8D4gHcArsBkQFsAWYBbAH0Af8TAAP/AfQB8gHxAvQBGgHvAQcB8gG8 AQcBEwH3AbwB8AHxAe8B8gPzAvEB8AH0AfMBGgGZAfAB8wH0Af8FAAH/BAAB/wHxAbwB8AH/AgAB9AHv ARIBHAHzAf8EAAH0ARwB8gK8Af8EAAH0AXMBRAHrAfECAAHzAe0B8gH/DQAB9AEHA+8F9wLvAfcB7AG0 AZEDrgG0Ae0BkgHvAQcF9wTvAQcB9A4AAv8DAAH/AewBbQGRAbQBCQLiA/8D4gHcAQkBtAGuAWwBZgHt Af8VAAL/AvQB8AG8AfQB8gEHAfEC8wEHAusB8QHvARQB6gG8A/QB8wHyAfAB8wH0AfABHAHxAfQC/wUA Af8GAAHwAgcC/wHvARABUQG8BwABmQFKAVEB8gYAAfQCSgESAe0BBwHsAfIB9BAAAfIB8AHvBfcB7wMH ARIBbQGRAq4BbQG8AfMB8AG8BvcBBwHwAfEB/w4AAf8D9AH/AQAB/wEHAWwBrgGRAbsC4gX/AeIB4QG7 AbQBiwFsAWYBBwEAA/8B9AL/EAAC/wH0AfMB8gG8AfAB8gPzAe8BbQEUAeoB6wEcAQcBkgHyA/QC8wO8 AfIC9AL/BQAB/wcAAfEBkgFtAeoBEQFLAQcB9AUAAf8B8wKZAXkBBwH0Af8FAAEHAXMBFAEPAREB9wHz EgAB/wHwBfcB8QL0AfADbQGuAWwBbQHwAfQC/wb3AfQB/w8AAf8B9AHyAbwB8gH0Af8BAAHyAeoBrgGR AboBGQHiBP8B9AHiAeEBuwG0AYsCbAH/AQAB/wH0AfMB8QHzAv8PAAP/AvQE8wHyAbwC7AHtAQcB8AEa AZkBHAEHBfQB8wHyAfMC9AP/DQAB/wHwAUMCEQESAfAB/wUAAfMCBwEbAbwBBwHwAf8FAAH/AZIBEQEV ARQB7AH/EwAB8QT3Ae8B8wEAAf8BvAJtAZEBCQKRAfIC/wEAAe8E9wHvAf8QAAH/AfMBvAIHAfMB/wEA Af8B7wFtAa4BugEZAeIB9AP/AuIB4QG7AbQBiwFsAfIBAAL/AfMBvAIHAfMB/xAAA/8D9AHzAQcBbQEU ARwBvAHxARsB7wF0ApkB7AHwB/QD/xAAAfABEQFtARMBEgHzCAAB/wEaAfMJAAHwARQBEgGZAXMBBxIA Af8B8AT3Ae8B9AEAAf8B8wGuAbsCGQEJAZIB8wP/Ae8E9wG8EAAC/wHwAQcB9AEHAfAB9AIAAf8BvAHt AZEBuwHhBeIBGQK7Aa4B7AG8AgAB/wH0AfABvAHwAbwB8wH/EQAD/wH0AfEB7AHrARwB8gEbAfABBwHv Am0BdAEaARwB7QHxA/QF/xAAAf8B7wFzAZkC7AG8Af8HAAH/AfIB9AgAAf8CkgEHARoBvAH/EgAB/wG8 AvcB7wH3Ae8B9AEAAf8B9AGuAbsCGQEJAfcB9AP/Ae8B9wLvAfcBBxAAAv8B8wG8AfABvAHyAf8DAAH/ AfQBvAH3AboBCQMZAQkBuwGRAfcB8gH0AwAC/wHzAfABvAHxAfQB/xIAAv8B9ALvAfIC8wG8ARwB6gH3 AfABcwOZAXMB7QHzAvQF/xEAAfQB8AG8AvIB8AG8AfIHAAL/BwAB9AH3AQcC9AHxAfQTAAH/AbwB9wTv AfQBAAL/AewBkQEJARkBCQHwAf8CAAH/AfcF7xIAAf8B8gEHAfIB9AH/BgAB/wL0Av8LAAL/AfQB8gH0 Af8TAAL/AfQB8wLxAQcBEgHtAfABvAEaAfMB8AEaAZkBGgGZARIBBwL0Av8VAAP/AQAB9AHwAfQB7wH/ DQAB8wHsAfEB/xgAAfAC7wMHAfQCAAH/AfMB7wHsAfcBBwH0BAAF7wG8EgAC/wHzAfQB/woAA/8MAAH/ AfQB/xQAAv8B9AHzAfEB9AG8AZIB7wHwAfMB8AHxARIBHAGZARoBmQHsAe0B9AP/GgAB/wHyAfEB9wEH AfIB9AcAAf8B8wHyAewB8QH/GQAB8gPvAQcBvAH/BAAB/wLzAv8EAAEHBO8B9BMAA/8JAAP/AfQD/woA Av8VAAL/AfQB8wLyAfQB8gH0AfMBHAHrAbwB7QEcApkBvAEHAfAB9AP/HAAB/wH0AfIBBwG8AfMEAAH/ AfIB7wH3Ae8B9AH/GgAB9AEHAu8BBwH0DgAB8QPvAfEgAAH/AfQB8wHyAfMB9AH/IgAB/wH0AvMB8AHz A/QBbQHvARwCGgEbAbwB8QHzAvQC/yEAAf8B8wMAAf8BvAH3AfAB/x8AAfMB8gH0EAAB9AHyAfMB/x8A Af8B9AHyAfABBwG8AfIB9AH/IQAC/wH0AfMB8QT0AQcBGwHwAfEBBwG8AfIB8wL0Av8pAAH/VwAB/wHz AfABBwG8AQcBvAHyAfQB/yAAAv8C9AHzAfAC9AHzAfQB8gHwAfEB9wHrAfMC9AP/gQAB/wHyAQcBvAH0 AgcB8AHzAf8gAAL/A/QB8wP0AfAC8wHyAfEBFAHzAvQC/4IAAf8B8wHxAQcBvAEHAbwB8wL/IQAD/wL0 AfIB8QHzBPQB8gG8AfQD/4MAAv8B8wHxAbwB8AHzAfQB/yMABP8D9An/hQAC/wH0AfIB8wL/JQAI/40A Bf8pAAL//wD/AP8AkAAI/7MABf8J9Ab/GAAB/wMAAf8WAAP/dAAC/wL0AvMB8gHxB/AB8gLzA/QD/xYA Af8BAAT/EwAF/1gAAv8ZAAH/AfQC8wHxAvABvAHvAewB6gQUAewB9wEHAfAD8gHzAvQB/xUAAv8B9AP/ EwAB/wH0AfMC9AH/RAAT/wH0A/8WAAH/AfQB8wHxAbwBBwHvAewBEgFDARUBEQQVAREBQwEUAe0B7wHw A/EB8wH0A/8SAAL/AfQB/wH0A/8PAAL/AfQB8wHyAfEB8wH0Af9DAAH/AfEB8gHzDvQB8QG8AfIB9AH/ FQAB/wH0AfMB8AEHAe8B6wEUARIB6wFtAeoGEgHrAW0CEgHrAQcBvALwAfEB8wL0Af8RAAL/AfMB/wP0 Av8JAAb/AfQB8wHxArwB8QH0Av8VAAH/DgAD/xsAAfMBcwHvB/IC8QPyAfMB8gHwAesBRAHvAfIC/xQA Af8B8wHwAe8B7QETARIBBwHyAbwB6wHqBRIB7AHvAfcB7QHsARIBFAGSBPAB8QHzAfQC/xAAAf8B8gH/ AfQC8wH0Af8FAAT/BPQC8wHyAfADBwHwAfMB9AH/FAAB/wH0Bv8DAAX/AvQB8xsAAf8BmQF5AQcBvAEH A+8EBwS8AfcBRAGZAe8B8gH0Av8SAAL/AfIBBwHtARIB9wHwAbwB7wHwAe8BEgHqBBIB7QGSAbwDBwHs ARMB7AEHBPAB8gH0Av8PAAH0AfAB/wH0A/MB9Af/AfQB8wHyBPEB8AEHAfcC7wEHAbwB8gH0Af8TAAH0 AfID8wHyAfMB9AUAAf8B8wHyAfMC8gLxAf8aAAHzAZkBeQHvAfcC7AHtApIB9wQHAe8BbQF0AgcB8QHz AvQC/xAAAf8B9AHxAe0B6gEHAfMCBwHvAgcC6gMSAesC7QHvAbwBBwHvAQcB7AEVAewBBwLwAbwB8AHy AfQB/w8AAfQBvAH0Af8B8wHyAfEB8gbzAfIB8QG8AgcE7wLsAfcB7wEHAbwB8gH0Av8RAAH0BbwBmQG8 AfMFAAH/AgcDvAEHAfcB8QH/GQAB/wHwAXoBcwHsAeoBEwIQAhEB6gHvArwBkgFuARoB9wEHAvAB8gHz AfQC/xAAAf8BvAESAQcB9AIHAfcD7QHsAm0CEgHtAuwC7QHsAe8BkgHvAesBEwHtAQcB8AG8AQcBvAHy AfQB/w4AAfQBBwL/AfMB8gfwAbwBBwPvAu0C7wGSAeoB7AH3AQcBvAHxAfIB8wH0Af8QAAH/AfcB7QH3 Au8BBwGgAZkB8gUAAfQBkwKZAe8CHALtAfMWAAT/AfEBGgF0AUoBRAVLAUoBRAFKARIBRAF0Ae8BBwPw AbwB8AHyAfMH/woAAfQBEgGSAfMBBwG8Ae0B9wHtAewB7QHsAm0B6gFtAfcB7ALrAe0BbQHrAuwB6wHq ARMB7wG8AfACvAHwAfMB9AH/DQAB9AEHAfQB/wH0AfIB8AK8AwcB7wL3AZIF7QHsARQB6gHsAfcBvAHw AfEB8gHzAfQC/w4AAf8BBwFuAewB7QEcAe0BmQGgAZkB8gUAAfQBkwGaAZkB7QHsAe0B7AHrAZIB9BUA Av8C9AHxAXMBegF5AXQEeQF0AXMESwFzAQcB8QLyAfABvAEHAbwB8AHyAfME9AL/CQABBwETAfABvAIH AewB7wP3AewBEgJtAesB7AGSAuwBkgHsARQBkgHtAesB6gETAewBvALxAvAB8gH0Af8NAAH0AQcB8wL/ AfMB8QPwAQcB7wH3Au0C7AHtAuwBbQEUAW0B6gFtAZIB8QLyAfMC9AL/DgAB8AFuAusBbgFzAW4BmQGg AZkB8wUAAf8BkwGaARoBcwFuAXMBbgFtAW4BHAH/FAAB/wH0AfMB8AHsAXkBoAGaARoB9wLvAbwBBwHv AZIBcwFRAksBkgHwA/IB8AQHAfAC8gLzAfQC/wcAAfQBbQH3AbwCBwLtAe8C8AIHARICbQLqAZIC7wEH Ae0BEQGSAgcB6wISAbwC8wHxAfAB8gH0Af8NAAHzAe8B8gEAAf8B9AHzA/EB8AEHAfcB7AQUARUBEQEV AW0BcwESARQBkgHyA/MB9AP/DQAB/wHtAm0B6wFuAeoBbgGZAaABmQH0BgAB7wGaAcMBmQJuAW0CEgFt AfAUAAH/AfQB8QFzAXkBoAEbAfcB7AHtAe8BvAPyAbwBBwH3AXMCSwHvAfED8gHwAQcC7wEHAbwB8QHy AfMB9AL/BwAB8QETAQcB8AHyAbwB6wGSAbwBBwHyAfEBBwETAe0B7AHrAeoB9wLwAu8BEQHsAfEB8wEH AW0BEwGSAfMB9AHyAfEB8gH0Af8NAAH0Ae8B8AH0Av8B8wPyAbwB7QFtBBQCFQEUAesBdAFzAeoBFAHs AfID9AL/DwABvAHqAW0BSgHqAm4BmQHDAZoBmQH0BgABvAGZAsMBcwFuAW0BSgFtARIBkgH/EwAB/wH0 Ae8BdAGgAfQBBwHvAXMBHAHvAQcB8QHyAfMBBwEcAQcB7QJLAW4B8APzAfIB8AEHAu8B8AHyAfMB9AP/ BwAB7AFtAe8C9AG8AeoC7wH3AbwB7wH3Ae0BuwH3AewBbQHsAe8B8AGSAe0BEQFtAfAB/wH0Ae0BbQHs AfMB9APzAfQB/w0AAfQB7wHsAe0BBwHwAfEB8AEHAfcBbQISAeoBbQESARQBFQEUAW4BeQJzARIBQwES AfIB9AT/DgAB/wHtARIBbgFKARICbgIaAZoB8AH/BgAB/wGTAZkBwwGZAW4BbQFEAW4BbQHrAfITAAH/ AfIBSwF6AcMBvAH0AfIBBwGZAgcBvAHxAfIBHAG8AfABBwFzAksBHATzAfEBvAEHAbwB8QHzAfQC/wgA Af8BFAHsAQcBAAH/AewB6wH3AewC7QH3AewBBwHwAbsB7QHrA+wBbQETAREBEgH3Af8BAAHxARIB6wG8 AfQC8wH0Af8NAAH/AfQB7wHrARQCFQLqARUBEgHqA20BEgEUARUBFAHqAZkBegFzAesBEgEVAUMB7wH0 Av8QAAHwARIBbgFzARQBEgFuAcMCmQEcAfQCAAHzAu8B9AH/AQABvAGTAZkBwwGTAW0BRAFuAZMBEgHv EwAB/wEHAXQBoAHwAv8B9AHzAbwBmQHxAvABHAGZAfABvALwAW4BSwFzAfEC8wHyAfECvAHwAfMB9AL/ CQABBwEUAewB8wH/AfIBFAH3Ae8BvAHvAe0B9wHtAfMB9AHwAbsB7wHtAW0BFAISAeoBEgHsAfIB/wHy ARUB6wEHA/QC/w0AAf8B9AEHAfcB7ALrAW0B6wHsAe0B7ALrAW0BFAITAeoBHAJ5AusBEgEUAUMB6wL/ EAAB/wHvAW4BmQFuAUQB6gSZAe0C/wG8AewB6wLqAQcBAAHyAZMBGgGTAZkBbgFEAUoBmgFzAW4B9BIA AfQBcwF5ARoB8wEAA/8B8QGZAfAB8gEcAZkDBwG8AfEBBwJLAQcC8gLxAfAB8QHyAfQC/woAAewBFAHs Av8B7QHsAe0BkgG7AbwB8QK8AvQB8wHwAbsBkgHrBG0BEgFtAQcB9AHzARIBbQHvAvQC/w4AAf8B9AEH AfEB8wH3AZEB6wHsAfcBBwGSAewBbQETARIBSgFuAZkBGgHtAXMBbgFtARMCFAHqAfMRAAH0Ae0CmQHq AUQBcwEaARwCkwHyAQAB8QETAeoC7AFtARMC9AEcAZkBHAKZAeoBRAEcAZkBcwHwEgAB8wFuAXkBGgH/ BAAB/wHxAQcB8wIHAfEBvAEHAbwB8QHyAXMBSwEcAvIC8QLyAfMB9AL/CgAB7AETAewB/wHzARQB7QHr AewB9wG7AbwE9AHyAfMBvAHvAfcC6wFtAxIB6wHwAfMB7AFtAQcD/w8AAf8B9AEHAfIBAAH3AbsB7AGR AbsBBwHsAW0BEwEUAUoCdAGZAQcB7QHsAesBEwIUAUsB7AHxEQAB9AHtAZoBkwISApMB8QHvAQcBAAH/ AZIBFAHqAe8B7AETAREBkgH/AfABkwG8AZMBmgFuAUQBbQGaARwBvAwAAf8B8QEHAbwB8QHzAbwBSwF0 ARoFAAH/AfMB9AHxAfIB8wHxArwB8AHyAfMBBwJLAe8BvAEHAu8BBwHzBP8JAAHsARIB7AH/Ae8BbQHs AesB7AHtAe8BBwHyAfQB8gHxAfAB8QHyAbwBBwHvAe0B7ANtAewB8AHzAewBbQEHAv8QAAH/AfQB7wHy AQAB8QG7Ae0B9wHvAfcBbQETARUBSgF0A3MBdAGZAe0B6gETARIBSwF0ARwB8wH/EAAB9AGTARoB6wEU AW4BmQFzAfQBkwHwAf8B8wFtAeoB7QG8AQcB7AEUAW0B9AHyAZkBvAEcApkBSgEUApkBBwsAAf8B8QFt AkoESwF0ARoB/wHzArwBBwG8AfQB7wEcAZkB8wEcBOwB8AHyAksFSgFzAfAE/wkAAewBEgHsAf8B8AKS A+wB9wK8AfIB8QHvAfIB8wLwAbwBuwH3AuwB9wIHAfAB9AHsAW0BBxIAAf8B9AEHAfIC/wGSAbsC9wHt ARIBFQEUAUoBSwFzAW0B7AF5AZkB7wHsAesBcwKZAfEB8wH/EAAB/wEHAW4CFAKZARwB/wGTAQcB/wHy AW0B6gHsAbwB7QLqAesB9AHwAZkBvAEHAXMBmQHqAUMBSgF0AfMMAAHwARwEmQFzAVEBdAEaAQAB8wLw ArwB9AG8AfQBwwH/AQcC7wMHAfMBbgFRBRwBmQHwBP8JAAHtARIBbQH/AgAB8gEHA/cBBwH/AQcBkgHr AbwB8QG8AQAB9AEHAbwC8wHwAfMCAAH0AeoB6wG8EgAB/wH0Ae8B8gL/AbwB9wGRAewBbQEUAREBRAFK ARIB6wHqAewBHAF0AXkCmQGgARoBmQH/AfMB/xAAAf8BvALrARwBmQFuARwB/wGTAQcB9AG8ARMB7QPz AfAB6wESAfQBvAGZAbwBBwGTAXMBkwJuAXMB/wwAAf8D8wL0AQcBSwFzARoFAAL/AfQC8gEAAv8B9AIA Af8B8wFLAXkB8wL/AfQC8wH0DQABBwHqAW0B8wQAAfQB8gHwAfEB/wHyAfEB8wHtAbwB8QIAAfEB8wHy Av8CAAH/AfIBEQHtAfESAAH/AfQBBwHyA/8B6wLsARMBQwERARQBEwESAesBbQGRAe8BUgF5ApoBeQKZ A/8QAAH/ApkBBwGZArwBkwHzAvEB9AHwAesCHAGZARoBCAEcAesB9AHzAbwB8wEHAZMBvAGZARwBvAGT AfQNAAT/AQAB8wJLAZkB/wQAAf8B8QHzAf8BAAHxA/8CAAH/AZIBSwG8Af8FAAH/DQAB/wLqAe8GAAL/ AgAB/wH0AfMB8gHzAgAC/wYAAbwBQwH3AfQSAAH/AfQB7wHyAv8B9ALrAeoBFQIRARUBFAESAusBuwEc AXQBeQF6AXkBvAHzAQcD/xAAAf8BBwGZAbwBHAHvAfMBkwEHA/QB8AEHA5kCGgGZAe8C8wH0AfEBkwHv AfIBHAEHAbwBkwH/EgAB9AFzAUsBcwH0BAAB9AG8AfQBAAH0AQcB9AQAAfMBRAF0AfEVAAGSAW0BEgH/ FwAB/wHrARIBBwH0EgAB/wH0Ae8B8gL/AfQBbQHqARQBQwERAhUBFAESAW0B7AH3AXkBUgFMAVIBHAG8 Af8B8BQAAfEBdAEHARwBdAHxAgcD8wG8ARoDCAMaAbwB8gLzAfABkwHzAe8BkwEHAZMBBxMAAf8BHAJL AZkB/wIAAf8BvAHzAwAC8QH/AgAB/wHrAUsBmQH0FQAB8QFtAeoBBxcAAfIBEgH3AbwB/xIAAf8B9AHv AfIBAAL/AeoBEgEVAhEBFQEUARIB6wHvARoBmQF0AVIBSwF0AhwBAAHzFAAB9AGTAZkB7wGZAQcB8wH0 AfMB8gHxAbwBGwH0ARsBGgMbARoBvALyAvMB8QF0AZMBBwGZAfEUAAHzA0sB8AIAAbwB8AH/AwAB/wLx Av8BHAFLAXkB8AH/FQAB9AHsAesB7AH0FQAB/wGSAesBBwHzAf8SAAH/AfQB7wHyA/8CFAEVAUMCFQET AewBCAHDARoBeQFLAlICHAGZAQAB9BQAAf8B7wGTARwBkwEHAvQC8gG8ARsB9gH0ARsE9AH2AfIB8ALy AfMB8gF0ARwCkwH0FQABvANLAfQBAAGgAfMFAAH0AfMBAAEHAUsBeQGZAfQXAAEHAesBEgEHBwAB8gH/ BAAB8wH/BgABvAHqAbwB8AH/EwAB/wH0Ae8B8gMAAhQDFQESAesBmQEbAaABmQEcAksBUgEcAbwBmQH/ FgAB9AEcAQcB8QHzAfQB8wHyAbwB9AL2A/QF9gHwAfEB8gHzAfQB8QG8AXQB8AH/FQAB/wGZAXMBSwFz AfID/wQAAfQB8QHvAVEBeQEaAfMB/xcAAf8B7AFtARIB8QH/BQABbQHyAwAB8gHsAfQEAAH/AfEBEgEH AfEB/xQAAf8B9AHvAfICAAH0ARUCQwEVARIB7AEcAZkBeQKZARwBUgFLAVIB7wG8AZkB/wIAAv8TAAHz A/QC8wHxAfAB9gH/BvYD/wH0AbwB8QHyA/QB8QH/FwAB/wGZAVECSwEcAe8BvAHwAfIB8QG8AhwBmQGa ARoB9AH/GQAB9AHtAW0BEgG8Af8EAAHrAfMDAAHyAfcB9AQAAfEB6wEHAfIB8xUAAf8B9AHvAfICAAFt AhEBFAFtAe0CHAF5AVIBvAIcAXQBUQFSAQcB8AEcAwAC/xMAAv8C9AHzAfIB8AEbAf8D9gf/AfYBvAHx AfIB8wL0A/8YAAEcAUsCUQF0AVEBdAFRAXMBeQGaAqAB9AG8AfQbAAHxAewB6wETAQcB/wMAAesB9AMA AfIB9wH0AwABvAFtAQcB9AHyAf8VAAH/AfQB7wHyAgACEQEVAW0C7wFLAbwBBwEcAfIB8AG8ARwBcwEc AQcB8AEcAwAC/xMAAv8C9AHzAfIBvAEbAf8D9gj/AbwC8QHzAvQD/xcAAfQB7AGZAbwBmQEcApkCmgMa ARsB8gK8Af8aAAH/AfAB9wHrAeoB7QHyAf8BAAHsAfMDAAHyAfcB9AH/AfMB9wHsAe8B8wHxAf8WAAH/ AfQB7wHyAQAB8AERARQB7AHvAZkBHAFLAfIBvAH/AfQB8QHvAxwC8wEcGAAC/wL0AfMB8gG8ARsB/wL2 Cf8BGwHwAfEB8wL0A/8WAAH/AfcBSwG8AfQB/wH0AvMC8gHzAvQB/wH0AfABGgHyAf8aAAH/AfQB7wHs AesB6gHtAbwB7AHzAwAB8gGSAQcB9wFtAfcB8gHxAfMB/xcAAf8B9AHvAfEB/wHsARQB7AG8AfQB8wG8 Ae8B/wHwAv8B9AG8AZkBHAHvAQAB9AEcGAAC/wL0AfMB8gG8ARsC/wH2Bf8D9gH/AbwB8AHxAfMC9AP/ FgABvAFEAaAB/wsAAf8B8wHyAbwB9BwAAf8B8AEHAbsB9wESAesB8wMAAfIB7wHsAfcB9AHzAbwC/xgA Af8B9AH3AfIBvAETAfcB8QH/AgAB9AIAAfIBAAL/AfMB9AEcAbwCAAHzGAAC/wL0AfMB8gLwAvYB9AH2 BP8B9gH0AvYBvAHxAfIB8wL0A/8UAAH/AfQBHAFzAbwNAAH/AfABvAHwAf8cAAH/AfQB8gHwAQcBvAH0 AwAB8gEHAfAC8gHzAf8aAAH/AfQB7QLqAQcB9AQAAfQCAAH2AQAC/wEAAfQBmQHzAgAB9BgAAv8C9AHz AfIB8QG8ARsC9AX2AfQBGwH0ARsBvAHxAfIB8wL0Av8VAAL/ARwBmQH0DgAB/wHwAfEB/x4AAf8C9AHx AfQDAAH0AfAB8wH0Af8cAAH/AfQB9wHsAfEB/wUAAf8EAAL/AQAB9AEcAf8bAAL/AvQC8wHxArwBGwH0 BfYB9AIbAbwB8AHyAfMC9AP/FgAB/wH0AfMB/1oAAfMB7QHyDwAB/wHwAwABvBgAA/8C9AHzAfIB8QHw AbwBGwHDARsB9gP0ARsBvAHwAvIB8wH0A/91AAH0Ae8BvBAAAfYDAAH0GQAD/wL0AfMB8gHxAfABvAIa AxsCvAHxAvIB8wL0A/91AAH/AbwB9C4AA/8D9AHzAvIB8QLwArwB8AHxAvIC8wL0A/+pAAL/BPQD8wPy A/ME9AT/qQAF/wz0Bf+rAAn/AvQI/7EADP+4AAL/AQAC//8A/wD/AOsACv9+AAf/DwAG/xsADP9YAAX/ HwAD/wP0A/8NAAf/GgAC/wn0Av9VAAP/BfQF/xkAAv8B9APyAfMB9AT/CgAC/wH0AfMD9AL/GAAC/wH0 CvMC/y0ABf8fAAP/AfQB8wHyAfEC8AHxAvIC8wP0Bf8SAAL/AfQB8gG8Ae8B9wEHAfAB8wb/BwAB/wH0 AfMB8AHvAfAB8gT/FgAC/wHzAfEF8AK8AfAB8gH0Af8rAAL/BPQB/wIABv8XAAH/AfQB8wHxAQcB7AJt ARIB6gHsAQcCvALxAvIB8wL0Av8RAAH/AfQB8gEHAesC7AHqAe0BvAHzAfQE/wcAAf8B9AG8AfcBkgHs AQcB9AP/FgAB/wH0AfEBBwXvAfcB7wEHAbwB9AH/KgAB/wHzAbwD7wHwAfQC/wH0AvIB8wL0Af8WAAH0 AfMB8AHrAUQBSgFEAREBFQERAg4BFQHsAu8CBwG8AfEB8gHzAf8SAAHzAfABbQEHAewBFQEUAeoB9wG8 AfIB9AX/BAAC/wHzAewB6wH3AesB7wHyBP8VAAH/AfQBBwGSAe0G7AGSAQcB8wH/IAAG/wQAAf8BBwHr A0oBkgHzAf8B9AEHAewBbQHsAbwB9AH/FQAB/wHzAfcBFQFKAUsBcwEcAZMBHAHsAesBSgEUAhABQwFt AesBkgHvAQcB8QH0Av8OAAL/AfQBBwEcAfMB7AFDARQC6wH3AbwB8gH0Cf8B9AHzArwB8AHvAQcB8AL0 BP8TAAH/AfMB9wHsAesBbQLqARIBbQHrAewB7wHzAf8fAAH/AvQB8gEHAfIB9AL/AgAB/wG8BJkBcwH0 Af8B8AGZAnMBbgESAfMB/xUAAfMB6wFKAXMBmQEaAfQDGwGZARoBGwG8AZkBcwFKAUQBEQEVAewB7wHw AfMB9AH/DgAC/wHzAQcB6wGSAeoCQwHtAuwB7wEHAfEB9Af/AfQB8wHwAQcBkgG8Ae0BBwHxAfIB8wH0 A/8SAAL/AfMB7AFtAeoDEgEUARIBbQHqAfcB8gH0Af8dAAH/AfQB8wHwAe0BEgHsAfEB8wH0Af8BAAH/ AbwBmgEbAfQBGgEHAfQBAAEHApkBGgGZAUsB8wH/FQABSgFzAZkC9AEbAxoB9AGZAUQBFQFKAXMBmQEa AZkBdAFLAu0BBwHxAfMB9AH/DQAB/wH0AfIB7wHrAQcB7AESARAB7AHxARIB6wH3AQcB8QH0Bf8B9AHy AfAB9wHvAbwB8AHvAewBBwLxAfIB9AL/DwAD/wH0AfIBvAHrAuoBEgETAhIB6gFtARIB7AHwAfMB9AP/ FwAD/wHzAfEBBwHvAZIBFQFDAesB8AH0Af8BAAH/AfMBvAHwAfIB8AHxAv8BBwEcARoBGwEaAe8B/xYA AfECGgIbBRoB9AGZAUoBEQEQAREBRAFKAW4BHAHvAe0B7wG8AfIB9AH/DAAB/wH0AfIBBwHvAewBkgEH Ae0B6gFtAfABHAESAewB9wHvAfAB8wH0A/8B9AHwAe8B8AG8AwcB7wHsAZIB8AHxAfQC/w4AAf8B8QHy AfMB8gG8AesBFAISARMBFAETAhIB6gESARQB7QHwAfIB8wHwAfIB/xYAAf8B9AHzAQcB9wGSAvcBFQEP AUMBkgHxAfQB/wEAAf8C9AHzAvQC8wHxAwcB8AH0GAAB9AHyArwBHAGZBBoBGwHxARwBRAFDAhEBFQFu Au0B7wEHAfEB8wH/CwAB/wH0AfMBvAHtAZIB9wHrAgcBkgHqAe0B9AFtAeoB7AHtAe8B8AHzA/QB8QG8 AfcB7wEHAu8BBwLvAewB7wHxAfMC/w0AAf8B8gEHAfIB8AEHAZIBFAEVAhMDFAITAhIBQwESAe8BBwHx AbwB6gHxFQAB/wH0AfIC9wHtAewC7wHtAUMBDwEQAewB8AH0BgAB8wEHAuwBvAH0Af8dAAH0ARoBHANK AW4CHAEbARoBdAJKAVEBBwGSAe0B7wEHAfEB8wH/CwAB/wH0AbwBEgHvAesBFAFtAesB8AEHAewBEgHw AQcBFAFtAuwB7wHwA/IBBwHvAbwBBwHtAe8DBwEcAQcB7AHwAfQC/w0AAvIB8AHyAQcB7QFtAQ8BEgJt AesCQwIUARIBbQIVAesBkgG8AfIB7AFtAfMSAAL/AfQB8AHvAe0B7AHtAfcB7wLtAewBFAEPAUMB9wHy Af8EAAH/AbwBcwFKAUQBSgHvAf8eAAHzAXMBDwEQAQ8BFQFKARUBSgGZARsBmQF0AZkC9wLvAQcB8QHz Af8KAAL/AfMB7ALvAW0B7ALrAe8B8AEcAW0B7AHyAewBbQPsAe8BBwHwAe8BvAHxAbwC8AH3AZIB7wEH AfcBBwHtAfID/wwAAf8B8QLyAfAC7AFtARIB6wHsAfcB7AJDAhQB7QHsAesBbQHqAewB7wHyAQcBbAHs Af8RAAH/AfQB8AH3Au0B9wHsAvcE7QESAQ4BFAHvAfMB/wIAAf8B9AEHAZkBHAF0AXMB7AH/HgAB/wG8 AewBbgHqAUsBRAERAUMBHAF0AUQBSgFEAesB7wIHAbwB8QHzAv8JAAL/AfMB6wEcAewBbQG8AQcC6wHw AQcB7QESAe8B8AETAuwB6wHsApIBBwHwAbwBBwG8AvAB7QTvAfcB8wH0A/8LAAHvAfQB8AHzAbwC6wK1 AQcBvAH0AbUB6gEUAuwCvAEHAewD9wLxAa4BtAG8EQAB/wHzAfcB7QH3AfABkgETARIB7AHtA+wB7QFt AQ8BEAEHBfQB7wF5ARoBGwGZARwB/yAAAfQB8QEHAfcB6gEVAUMBcwEVAUMBcwEQAUMB7QIHAbwB8AHy AfQB/wkAAv8B8wJtAewB7wHxAfMC7AHvAfABBwLrAfIB7wLtAfcB6wLsAbwBBwHwArwB8QHwARwB6wHv AbwB7AEHAfIB9AP/CgAB9AGRAf8B8AH0AfIC9wG8Ad0D/wEHAW0BEgEHAfcBvAH/AfQBvAK1AfcB9AHz AesBrgHvAf8PAAH/AfQB8gH3Au8BuwHtAhEBFAFtAewC9wLtAeoBEAEUAQcC9ALzAbwBmQEbAfMB8AHz Av8fAAP/AfQBvAIRAXMBRAERAZkBSwFuAQcD8AHxAfIB8wL/CAAC/wHzAe8B7QHwAfMB8QHwAfcB7wHs AQcBvAEcAW0B7wHzAesBkgH3AZIC7AEHAe8CvAHwAQcB9wEHAeoBBwG8Ae8B8AHxAfIB9AL/CgAB8AG0 Af8B8QH/AfQB7wEHAe8BkgP3AW0BBwHrAfIB7QHsA/cBtQHdAbwC9AHsARMB9wH0DwAB/wHzAfAB7wEH AfcBBwHwAfcBFAEPARUBEgHsAvcB7QLsAUMBFAHvAbwBHAJzAe0BvAHyAfQBAAL/IQAB8wH0AfIBEAER AW4BcwEVAW0BmQEHAfAB8QTyAfMB9AH/CQAB/wH0AfAB7QHwAfQB8AHsAe8BHAG8Ae0B8AG8Ae0B6wHx Ae8B9wEHAfcB7QHsAe8BkgHvAQcB8AG8Ae8B8QFtAfAC8gHxAfIB8wH0A/8IAAH/Ae8BiwHwAgcB7wHt AQcB7QHrA0MBFAH3AewB/wHtARUBZgESAewB9wEHAfcC7wFtARUBrgHxDgAB/wH0AfIB7wG8AfcBvAHz AgcBvAHsAhABFAFtAe0B9wHtAewB7QEVAREB9wGaAksBSgHsAfMB9AIAAf8dAAL/AfAB7AHqAewBbQEQ AUoBHAEaAZkBGgEHAfAD8gPzAfQC/wkAAf8B9AHzAe8BBwHzAfEB6wEcAewB8QLvAfAB7wHqAewB8gHs AbwBBwHvAfcB7wGSAe0B7wEHAfEBBwHxAfcF9AT/CQAB/wHsAWwBrgSRAu0BbQERAuoBEgHqARMB6wES AW0BEwHrAewB9wHtAWwDEwEUAesBvA4AAf8B8wEHAe8B9wG8AfMB9AHwAwcB7wHqAhEB6gLsAW0C7AET Ae8BGgNLAesB8AHzAfQBAAL/GAAC/wH0AbwB7QFtAkoBSwFKAUQBEQFKARwBmQHyAfMB8AHyAvME9AP/ CgAB/wH0AfABbQHxAfQBBwHtARwB7QHxAfcB8wHwAe0BEgLvAewBvAIHAe8B9wLsApIDBwHzAvQH/wgA AfQB6wKuAZECtAG7Ae0B7AFtARQC7AISAhMBbQHqARMBbQHtAfcBkQGuAW0B6gFtARQBbQEHDgAB/wHx Au8B8QHyAfQD8wO8Ae8BkgETAQ8BQwEUARMB6wH3AZIBmQEaA0sBEwHtAbwB8wEAAv8YAAH/AfABbQES AUsCHAGZARoBmQEcAW4CFQFLAfIB8wHyAfMD9AT/DQAB/wHzAQcB9wH0AfICHAHrAfEBBwH3AfIBBwJt AQcB7AEHAfABBwHvAgcB9wHvAfABvAHvAewC8AH0CP8HAAH0Ae8GGQEHAesB6gH3AuwG9wHrAbUB6wH3 AgcDtQLvAbwOAAH/AQcB9wHyAfEB9AHzAbsBBwT0AfAB9wEHAesBEQFDARIB7AH3AesBvAH0AXQBSwFK AREBRAFLAewD/xgAAf8BvAHvARoBGwb0ARoBSgFDAXMB9AHzA/QD/xAAAf8B9AHyAewB8QH0AQcBHAGZ Ae8B9AHrAvEB7wESAZIBvAHrAfAB8QG8AgcC7wIHAbwB7AHrAe8B8wj/BQAB/wG8Au8GBwHvAe0BuwHz AvcBEgEVARMCEgH3Ae0B8AG8AbUCuwMHA+8BBwHwAf8LAAH/AQcCvAH0AfMB8gG8AfAB8gHwAfMC9AHx Ae8B9wGSAeoBFQETAeoBbQG8ARoBTAJLAREBRAFLAUMB8gP/GAAB/wHzAfIB8QHyAfEBGwHyARoB7wFL ARUBQwEcAfQB8wH0BP8RAAL/AfMB9wHvAfQB8gEcAQcB7QHyAfMB7QHzAfEB7AHqAQcB7AHvA/EB8AHv AwcB9wK8AfAB8gH0B/8FAAHzAeoBbAFtA2wCrgGRArUBCQH/Au8BFAEPAkMBFAH3Ae0B9AHxAbsBtQGu BmwBEwHtAf8LAAH/AfEB7wHtAQcCvAHxAfMB8AEHAbwB9AHzAfQB8gEHAe0B7wH3AeoBFAETARsBGgFM AksBEQFKAUsBIgHyBP8ZAAL/AQAB9ALzAbwBBwHvARUBQwEcAfQBGwP/EwAC/wH0AfAB7QHzAfQBvAHv AewBvAH0AQcBvAH0AQcCbQEcAewBvAHxAfIB8wLxAbwBBwH3AbwB8gHxAfAB8wf/BQAB8wNtA2wCrgGR AbsCGQHtAbwBBwEVAg4BQwEUAfcB8AHzAfABGQG7AbUB7QJsAxIB6gH3Af8NAAH0AfAB7QHvAfAB9wG8 AfIB8AHzAvQBvAHsARIB6gHtAvIB7AEUAe8BwwFMAksBEQFKAUsBEQHwBP8dAAT/AfQB6gFDARwB9AEb Af8WAAH/AfQB8wH3AbwB9AHyAZkC9wH0AfMB7wH0AfMBHAEUAewB6wH3AbwB8QHyAfMB8gHxAfABvAIH AbwB8AHzBP8IAAH0AW0CbAHqAe0B7wQHAvQBvAEHAe8B6gEUAhIBbQHvAfcB8AHzAhkB4QG7AZEBbQNs Ae0BBwH/DgAB/wHyAQcC9wEHAfAB8QH0AfMB8AHsARIB7AHtAZIBvAHsAeoBEgG8ARoBUgFLAUoBQwFK AUsBEQG8AfQD/x0AAv8DAAHrARABHAHzAfIB/xcAAf8B9AHwAewB8wH0AQcB7wHsAfIB9AIHAfQB8QHr ARIB7AESAe8B8AHyAfMB9AHzAfIB8QLwAfEB8gH0A/8JAAH/AewCbAHqAfcBvAbwAbwB9wHtAewB6gHt ARIB6wLvArwB8ALxAvAB7AFsAYsBkQHyAfAB/xAAAfQB8QHvAewB7wG8AfEBvAGSAewB7wG8Ae8B7AFu AeoBEgEUAZkBwwF0AksBIgFKAUsBEQEHA/8aAAH0Af8BAAHzAfcBHAMAAZIBFQGZARsB8wH/FwAB/wH0 AfMB7QG8AfQBGwHvAu0B9AHzAe0B8gH0AQcCEgHrAewBvAHyAfQC/wXzAvQD/woAAQcCbAHqAWwBvAUA Af8B9AHwAe0B9wESAewBEwHsAfcB8QH0Av8DAAH/AZIBbAGRAbQB/wHzFAABBwHsAe0BvAHvAe0B9wEH AfABcwFKAesBbQISARwBwwF0AUwBSwERAUoBSwERAbwB9AL/GAAB9AG8AZIB9AHvARUBEQFKAQcC9AHs ARUCGgHzAf8YAAH/AfMBvAHsAfMB9AEHAe8B6gHxAf8B8gGSAvQB7QEUARIBbQEHAfIB9AT/A/QE/wsA AfQCbAESAW0BBwUAAf8B9AHwAewB7QISARMB7AHvAfMB/wUAAfQBkgK0ARkB8AH/FAAB/wHyAQcB7QEH AfAB8gHvAXMBSgJtAeoBEgFuAZkBwwFSAUsBSgERAkoBEQHxAfQC/xcAAfMB7AHtAuwBEAERARUBcwGZ ARwBBwHvAZkCGwHzAf8YAAH/AfQB8wHvAbwB9AHwAe8BHAHvAfQB/wG8AfAB9AG8ARIBFAHrAfcB8gH0 Cv8NAAH3AWwBEgHqAfcB/wQAAv8B8gLtAewBEgH3AewBBwH0Af8FAAH0AZEBtAEJAfQB8AH/FgAB9AHw AQcBvAGZAW4BEgHqARIC6gFtARwBvAH0AZkBcwFKAREBRAFKAREB8QH0Av8XAAHsARUBcwFKAUMBEQFE AXMBmQK8AvAB8gHzAfIB8AH/GAAB/wH0AfMBvAHvAfQB8wIHAe0B8wH/AfIB9wH0AfMBkgISAW0B8AHz AfQJ/w0AAfIBbQISAesB/wUAAf8B9AH3Ae0B7wH/AQcB7AHwAfQB/wUAAfMBtAEJAfQB8QH0GQAB9AG8 AewB6gFtAuoBEgFKAW0B7AEHApkBGgEcAUQBSgFLASIB8QH0Av8VAAH0AesBQwEcAVEBQwERARUBcwEH AfMC/wb0GgAB/wH0AfIB7QHyAfQB8AHvAZIBvAL0AfAB7wH0AbwBbQESAW0B7AG8AfMB9An/DAAB/wHv ARQBEwESAfIFAAL/Ae8B7QH3AfMBBwHtAfIB/wYAAfABGQHiAfQB8QH/GwAB8wH3AW0B6gFKAXMB7wH3 AQcBvAKZARsBmQJKAUsBIgHwA/8UAAHzAewBEAJzAW0CEQFzAZkB9CMAAv8B9AHvAfcB9AHzAQcB7wH3 AvQB8wHsAbwB9AEHARIBEwESARQBBwHzCP8NAAH/AfIB6wIUAe0B/wUAAf8B8AHrAfcB8AH3Ae8B9AH/ BgABBwHiAf8B8gHzHQAB/wG8Ae0B7AHvAfAC8gHwArwBGgEbAXMBUQFLAREB8gP/EwAB9AHsARECcwEU ARUBEQFuAbwB8wH/JAAB/wH0AfIB7QHxAfQB8AHsAesBBwL0AfABkgHzAfIBbQEUARIBQwESAfEB9Af/ DwABvAHqARQBEwHzBgAB/wHxAvcB7wHyAf8GAAHyAuIB/wHyAf8fAAHzAbwB9wHvAbwC8AHyAfQBvAEb ARoBmQF5AUoB8gL/EwAB9AHrARABcwEaAe8BFQERAW0C8ScAAf8B8wG8AewC8wLsARIBBwLzAfcBBwH0 AQcBEgNDAe8B9AX/EgABBwFtARMBkgH/BgAF/wYAAfQBvAH/AfMB8AH/HwAC/wH0AfEB7wEHAfEB8wL0 AbwCmQEbARoBSwHyAv8TAAHzAXMBHAHwAfMBcwFKAW4BGgHzAf8nAAH/AfQB8wHsAbwB9AHwAe0BEgET AbwB8wHqAW0BvAHvAUoBQwERAUQBBwH0A/8UAAH/AbwBrgETAbwGAAL/CAAB/wHxAf8B9AHxAfQB/x8A BP8C8gH/A/QB8wEHAZkBwwHyAbwB9AL/EwAB/wHxAfAB8wH/AQcBHAG8AfEB/ygAAv8B8wLsAvMBBwEU ARUB7wHzAe8BSwFEAUsBRQFRARQB7AHwAfQB/xgAAbwBtAESAfIPAAHyAvMB8QH/IwAF/wX0AfMB8QHy A/8WAAH/AgAB/wHxAfAB/yoAAf8B9AHsARQBBwH0Ae0BIwFLAe8B9AHxAXQBUgGZAUoBmQEHAbwB8wL/ GQAB8wHvAesBvAH/CgAC/wPxAfMB/yUAD/9HAAH/AfQB7wJKAUsBUgF0ARwBvAL0AbwB8AHyArwB8QHz AfQC/xkAAv8B8gHvAbwB9AkAAfMBvAHwAfMB/ykADP9IAAL/AfMB7wF0ApkBvAHwAfQC/wH0A/IB8wL0 Av8dAAH/AfQB8wgAAf8B8wH0gQAB/wH0AfMB8gEHAbwB8wH0Af8CAAP/AvQC/68AAf8C9ALzAfQC/wYA Af+xAAj//wD/AP8A/wDAAAH/AgAB/7oACP8/AAb/BQAC/wQAAv8MAAH/VgAL/z0AA/8F9AP/AQAB/wLz Af8BAAL/AvMB/wsAAv8RAAL/FgAC/ycACP8C9AHzAfQD/xwAAf8fAAL/AfQB8gH0Bf8BAAH/AfEB9wG8 AvQB8gH0AbwB7wHzAf8EAAP/AwAC/xAAAf8C9AH/CgAB9AoAAf8B8wH/JAAI/wH0AvMB8gHxAfIB9AL/ GwAE/x0AAf8B9AHyAfQE/wEAAv8B8QH3AZIB7wEHAe8B9wHvAfcBkgG8Af8DAAL0BP8CAAH/EAAB/wHx Af8JAAH/AfQBvAL/CQAB9AHxAf8iAAX/AvQB8wLyAfED8AHyAfQB/xwAAf8B8gHwAfQB/xsAAv8B8wHx AfQD/wIAAf8B8gHvCZIB9wHzAwAB/wH0AvMB9AL/AgAB/w8AAfMBvAHzAf8IAAH/AfAB9wHxAf8IAAH/ AfMBBwH0IQAE/wH0AfMC8gHxAfADvAEHAe8BBwHyAf8dAAHyAe8B8wH/GwAC/wHzAfAC9AH/AwAB/wHw Ae8B9wmSAfAB/wIAA/8B8wHyA/8BAAH/DgAB/wHwAe0BvAcAAf8B9AHxAe8B7AHvAfIB9AH/BgAB/wHv AfcB8yEAAv8C9AHyAfEC8AG8AgcB7wGSAW0CQwFtAfMcAAH/Au8B8QH/GgAB/wH0Af8B9AHwAfEC9AL/ AQAB9AG8B+8B9wKSAu8B8gH/AgAB/wL0AfAB8wL/AQAB/w4AAf8BBwHqAfMB/wIAAv8B9AHyAQcB7wH3 AesBSgHsAfcB7wG8AfIB9AH/AwAB/wG8AeoB8gH/GAAC/wUAA/8B8wHyAvABvAIHAe8B7AETARQB6wHt AfcB7QHyHAAB9AHtAfcB8AL/GQAB/wP0AfIBvAHxAfQD/wH0AQcC7wHsAe0E7wLsAu8BBwH/AQAC/wH0 AfIBvAHzBP8NAAL/AfcBSgG8Af8CAAH/AfEB7wL3Ae0B7AHqAW4B6wLtAvcBBwHzAf8BAAH/AfQBBwEU AfAB/xcACv8B9AHyArwBBwHvAewB6wEUAQ4BFQISAfcB8AHvAfMcAAHyAewBkQG8AfEaAAL/AfMC9AHx AQcBvAH0Av8B8gK8AewBbAHsAQcBkgHrAe8BkQFsAZICBwH0Av8B9AHzArwB8wH0A/8NAAL/AewBSgH3 AfMC/wG8AfcBkgL3Ae0B7AFLAW4BSgHsAvcCkgH3AfEC/wHxAZIBRAG8Af8UAAz/AfQB8gG8AQcB7wHs ARICDwERARQCFQESARQB6wHsAfMZAAP/AfEB6wGRAbwB8QH0Av8XAAL/AfMB8QHzAvIBvAHwAvQB8gG8 AZEBbAFlAWwBFAFDAQ8BQwNsAgcB8QH/AfQB8wG8AQcB8AHzAvQB/w4AAv8B7AFKAewB8AH0AbwB9wHt AewB7QMcAXMBbgFLAUoBRAFtAuwB7QH3AfEB9AG8AesBSgG8Av8SAAT/AvQC8wLyAfABBwHwAbwCBwHs AeoCFQEUARIBFAEVARIB7AFmAg8BkgH/GQAB/wH0AfMBBwESAZEBBwG8AfIC9AL/FQAC/wH0AfIC8AHx AfIB8AHxAfQB8gHvAWwBZQINBA8BZgJsAe8BvAHxAfQB8QG8AQcB8AHyAvMB9AH/DgAC/wHsAUoBbQHy AfAB9wHsAesBcwMaApkCcwFuA0oB6gHrAe0B7wHyAfABEgFKAbwC/xIAAv8B9AHzAfIC8AK8Ae8CFAHs Au8B7AEUARIB7QEQAUMBFAEQAe8B9wFmAREBFQFDAe8B/xMABv8B9AHyAfAB6gETAZEB7QPxAfIB8wH0 B/8OAAP/AvQB8gK8AfMD8gHtAWwCDQUPAWYCDQGRAfECvAEHAfAB8QHwArwB8wL/DgAC/wHvAUoBSwLv AewB6gFuARwDGgGZAe8BBwEcAZkBHAFzA0oB6wHtAQcBHAFKAUsB8QH/EgAC/wH0AfECvAIHAu8B6wHv AQcC9wHsARQBEQHqAfcBDgERA20B7QETAUMB7AGSAfcB9BAAA/8B9ATzAfIB8QEHAeoBEgHtAZEB6gHs AfEB8AHxAvIE8wP0Av8MAAL/A/QC8wLxAfMC8QGuARUCDQMOAgABDQEVAmYB9wK8AfIDvAHxAfMB9AL/ DgAC/wHxAUoBcwEcAe0BEgFKAXMBHAEHAe8BvAHyA/MB8gEHARwCcwFuAUoBbQHtAesBSgF5AfMB/xMA AfQB8AG8AQcE7wHsAfcCBwH3AeoBFAFDAQ8B6gHwARUBFAHsAUMBZgETAa4B9wHtAesB6gHwEAAC/wHz AvIC8QLwAQcBbQFsAe8CBwGRAeoB6wEHAfEB8gHxAfACvAHwAfEB8gHzAfQC/wwAAv8B9APzAfIB8wHy AfMBvAFsAw0DDgIAAQ0BQwEVAWYBrgG8AfACvAHxAvMB9AP/DwAB/wH0AhwB7wFtAUQBbgFzA+0B9wXv ARwB7QLsARwBcwFKAewB7wFSARoC9BIAAf8B9AHxAQcG9wLsAe0B7AEOARQBEAESAfEB9AHwAe0BBwHw AbQBZgEOAQ8BZgEOARIB8A8AAf8B9AHzA/IC8QHwAQcBbQFsArwC8AHtAesBbAHrAfEC8wHxA/AC8QHy AfMC9AL/CwAF/wH0A/MB7wFmAg0BFQIOAWwBDwEAAQ0CQwEVAYYBvALwAfMB8QHwAfIC8wH0Af8QAAH0 AfMBBwHvAkoBHAGSA+0B7AHtA/cE7QEcAfcBHAJKAbwBBwH/AfQB/xEAAv8B9AHyAQcB9wTsAe0BEgEV AesBEgEOARIB7AHxAfMBvAH3Ae8B7QG8AYsBFAETARUB7AG0Ae8B9A0AAv8B9AHzAfEEvAEHAe8BEgFs AfcBBwHzAfABvAHwAe0CbAHsAfEB8gHxAbwCBwHwAfED8gHzAfQE/wkABf8D9AGuAQ0BQwJmAQABEAGR AesBAAEVAa4BbAEUAWYBkgHxAfMB8QHzBf8RAAH/AfMB9AH3AUQBUQHwAbwB6gHrAewB6wHtAewE7QHs AesBcwHwAbwBcwFKAQcD9AkAAf8HAAL/AvQB8AHqARUCFAITARIB6gHrAewBEgFDAe0CvAH3AhIB9wEH AfABBwHtAQcB7QGSAQcB9AH/DQAB/wH0AfMB8AHrARMEEgHqAZECuwHtAfECbQEHAewB6wGRAWwBbQUS AZIB8gXzA/QC/woABf8B8gFmAQ0BZgFDAQ4BAAEQAZEB6wIAARQCbAFmAa4B8gHzAfQF/xIAAf8B9AHw AewBSgG8AfEBbQJEAkoBcwF0AxwBdAJzAVIBHAHyARwBSwEHAfMB8QH/CQAB/wcAAf8C9AG8AQ4BQwH3 AesBEAEUAesB7AH3Ae0CEwHsAe8BbQRDAQcB8gHwAfQB8wHwAe8BBwL/DQAB/wH0AfMB8gHrAWwCuwOR AbsB8gEHAbsBkQFDARQBbAEUAW0B7wEHBJEBuwHvAbsBkQHvBvMD9AH/DQAC/wGuAg0BDgGLAa4BAAEQ AZEB6wQAAUMCZgG8A/8XAAH/AfQCcwH0AbwBSwJEAkoBcwF5BpkBegF5AvIBSwEcAfAB9AoAAv8FAAL/ AfQBBwETAUMBbQG8AfAB9wESAQ8CEQEOAUMB7AHrARECDwESAesBEgHxAvQB8gG8AZIBBwH0Av8NAAP/ AfMBvAHxAfIB8QEHAZEBuwG8AfEB9AEHApEBuwH3AZEB7AHyAfQBvAKRAfcBvAHxA/IH9AP/DgAB/wFm AQ0BDwEOAowBDgEUAZEBbQEQBAABEQFmAfAC/xgAAv8BHAHtA/MBvAEcAUoBcwIcBJkBGgG8AfED8wFu AQcC/woAAv8FAAL/AfMBEgHsAfcBEgHvAfIC8AH3AeoBDwEOAkMBDwEOARABEgLsAQcB9AHzAfACBwHv AfIB9AL/AgAD/wkAAfQB9wHtAewD7QHrAZEBuwHzAf8B8wHsAZEBuwEHAe8CkQH3AvQBvAGuAZEF7QHs AQcH/w8AAfEBZgENAg4BEAEOAREBbQHrAW0BEwEOBAABZgHtAf8ZAAL/Au8B9AHzAfAB9AHzAW0BFAFK AUQESgHxAf8B9AHwAfIB8wHsAbwC/woAAf8GAAL/AfMB7wIHAe8BbQEHAvIB8wH0AQcB6wEPAg4BDwFD ARQB9wHxAfQB8gH3AQcB7wG8AfIB8wH0Av8BAAX/BwAB9AHrAZECuwKRAbsBkQG7AbwB9AEAAbwB9wEJ AbsB8wH0AewCuwHwAfQB8gHsAZEDuwSRAbwB/xQAAQcBZgENAg4BZgGMBW0BEgETARACAAFmAWwB/xoA Af8B8gEHAv8B8wGZAfIBcwFDARQBQwFEAhUBIwHyAfMBmQHzAv8B9wHyAf8LAAH/BgAB/wH0AfMBBwH3 AQcBvAHrAQ8B7wPxAvMB9wFDARMBEgEQAQ8BkgHwAbwB9wHtAewBBwG7AQcB8gL0Av8BAAT/BQAC/wHz AfAB8gTxAfIBvAG7AZEB7wHzAf8B8wK7Ae0B6wFtAbsB8gH/AfIBbQHqAe8F8gPwAfQB/xMAAbwCFAFD ARQBbAFtA5EB9wKuARICEwIUAesB/xoAAf8B9AEHAf8CAAHwAQcBcwEVAkMBSgIiAVEB8wEaAfMB/wEA Af8BBwH0EwAB/wH0AfIBvAIHAe8BEgERAZEB6wESAfcBvAHzAe8BEgHyAfAB9wHqAUMCEwESAhECEwHq AZIB8wH0Av8BAAP/BgAB8wHvAvcG7wH3AZEBuwGRAewC8wH3AQkEuwG8AfIB6wESAZEBuwHvA/cB7wL3 Ae8B7QEHAf8SAAG8AWwBFAFDARUBbAGuAZEBtQG7AQcB7wHtAa4BEgETAWYBFAHrAf8bAAH/AfMB/wIA Af8BBwFzAUoBIgFEAUsBIgFEAVEB8wEHAf8CAAHzAfQB/xMAAf8B9AHyAbwB8AEHAewBEgHsAUMBDgFD AfIB8AHzAe8B9wT0AfECEgHqAUMDDgFDAe8B8QH0Av8JAAHyAewBbAGRArsDCQHwAQkB8ALzARkBuwHs AfcBCQK8AfMB8AG7AWwBEgGuAbsBvAK7CZEBvBIAAbwBbAEVAkMBbAGuAZEBCQEZAvQB8AGSAW0BEgFm ARUB6wH/IQAB7wFzAUoBIgFKAXMBRAFLAVEC8RkAAf8B9AHwAbwB8AHzAQcB7QESARUBFAG8AfIBvAHw AfEB8wLxAfIC8QH3AfEB8AHvAfAB8gHwAbwBBwHzAf8LAAK8AfEL8gHxAQkCuwG8AQAC8wH/Ae8BkQG7 AbwO8gH/EQABvAGuARIBEwIUARMBkQEJARkD/wG8AewB6gIUAesB/yAAAf8B7wJKAUQBSwFKAXMBdAFz Ae8B8QH/GAAB/wHzAvAD9AH3AW0B7AGSAfQBvAHvAewB7QH3AbwD8AHyAfAB6wHqAfcBvAHsARIB7wHy AfQB/wsAD/8B8wG8AbsB9wHzAgAB8wHsAbsB8AHzD/8RAAHwAZEBbQESAUMBFAHqAZEBtQEJA/8BGQHs AeoCFAHtAf8gAAH/ARwBSgFEAiIBSgFzAXkBHAGSAQcB8wH/FwAB/wHzAbwC8AH0AfIB7wHrAfcB8AG8 AfACvAEHArwB7wHsAQcB7wEUAewBBwHyAewBEgHtAbwB8wL/GwAB8wEJAbsB7QH0Af8B6wGRAfIB8yEA AfMBCQGRAa4BEQEVARIB6gG1AhkC/wEZAewB6gEUARMB7yEAAfMB7AEVASIBDgEiA0QBSgHtAZIB7wHz Af8VAAH/AfQB8gHwAbwD8AH3AesBBwHwAbsC8AH0A/MB8QEHAbwB6gHrAQcB7QHyAZIB8QHzAvQB/xwA Af8B8gG8AbQB7QHrAZEBvAH0IgAB/wHwAbwBkQEUAhUBbQHsAvcCGQG7Aa4C6gGuAfEgAAH/AfIB6wFE AUoBRAIiARABIgFEAUoB7AGSAQcB9BQAAf8B9AHzAfECvAHwArwBkgFtBLwBuwHyBPQBCQEHAe0BbQLv AfABvAHzAfQD/x0AAf8B9AEIAbsB9wG8AfQkAAHzAfIBvAHrARMBFQHvAuwB6gHtAQkBtQGuAuoB9wH/ IAAB/wHwAkoBSwFKASIBFQIiAUoCcwHtAe8B9BQAAf8B8wHwAfEC8gHxAvABvAHwAbwB8AG8AbsBvAHw AvQC8gK8Ae8B6gHvAfEBvAHzAfQC/yEAAfMBvAHyAfQmAAG8AfMB7wHrARQBGQL3AeoBrgH3AbUBrgLq AfIhAAH/AQcBRAFKAXkBSwEiAQ4BIgEQAUoCdAFzAe8B9BMAAf8B8wHxAvID8wHyAvMB8gHwDLwB6gH3 AvAC9AH/IgAB/wHzAfQnAAH0AfAB8wEJAbUB9AK1Aa4BkQK1Aq4B8AL/IAAB/wHtAUQBSwGZAXMCDgEP ARUBSgFLAUoBcwGZAfMTAAH/AfMB8gL0Av8D9AHzAfIEvAbwA/IC7wEHAfIB9AL/TAAB/wHzAbwB8QHd AfQBvAG1Aq4BkQHPAa4BBwP/IAAB/wHtARUCSgEQAQACDgEPASIBDwEQAUoBmQHzEwAC/wH0Bv8B9AHx BbwB8gLzB/QB8wL0Av9MAAL/AfQBBwH0AfEC9AG1Aq4B7wH0AfIBvAH0Av8gAAH/Ae8BIgEOARQBEQFK AXQCDgMAAXMBmQH0EgAJ/wH0AfIB8AG8AfAC8gHzAfQC/wMACP9NAAL/AfIBBwH0Af8B8wHwAfcBjAEH Af8B9AHyAbwB9AL/IQAB7wEiAUMBdAJKAZkBIgFEARABEQFKARwBGgH0EgAB/wEAA/8BAAL/AfQB8gLx AvIC8wL/BQAB/wIAA/8EAAT/RwAB/wH0AfEBBwHzAfQC8AHtAYwBvAL0AfEBvAH0Av8hAAHwASIBRAGZ AUQBcwGZASIBRAFzAXQBSgEcARoB9BcAAf8C9AHzAfIC8wHyAvQB/xAABv9GAAH/AfQB8QEHAvMCBwHt AYwBtQLzAfABvAHzAv8hAAH0AeoBSwGZAQ8BcwGZASIBRAFzARwBIgEUAfIB/xYAAv8B9AHzBfQC/w8A CP9GAAH/AfQB8wEHAbwB8AO1Ac8BtQLwAQcBvAHzAv8hAAH/Ae8CbQEQARwBmQFKAZkBbgFKAZkBvAH/ FwAB/wT0Bf8IAAH/BgAB/wIABv9GAAL/AfMBvAIHAe8EtQMHAbwB8wL/IgAB9AG8AesBEgHsAUQBSgFz AesBbQGZAfEB/xcAAf8C9AL/AQAC/xUABf9HAAH/AfQBvAEHAbUB7wS1Ae8CBwHyAfQC/yQAAf8B8wH/ AbwB7QHxAf8B8wH0GQAF/2QAAv8B9AHwAbwBtQEHAbUBBwG1AgcB8QH0Av8pAAH/HQAD/2YAA/8B9AHw ArwBtQEHAbwBBwHwAfMD/7IAAv8C9AHxAbwB8QHzAvQC/7UAA/8B9AHzAfQE/7cAB///AP8A/wD/AP8A ngAE/1wACv9TAAP/A/QD/1kAAv8F9AHzAfQC/1IAAf8C9AHyAfEC8AHxAfMB9AH/WAAB/wH0AfMD8gHx AvIB8wH/UgAB/wH0AfEBBwLvAfcB7wG8AfMB/yAABf8D9AT/BQAC/wP0Bf8eAAEcAW4DHAFzAUoBbgHy AfQC/1AAAf8B9AHtAgcB7QHsAfcBBwHyBf8bAAL/AfQB8wHyBfEC8wL/AwAC/wHzAfIC8QLyAfMC9AH/ HQACHAHwAuwBHAHsAXQB8QHyAfQB/ycABv8jAAH/AfABvAHvAfABBwHtAZIB7wHxBPMC9AT/FQAB/wH0 AfIB8AIHA+8D8AHyAfQB/wMAAf8B9AHwAu8BvATwAfEB8wH0Af8bAAEcAZkBvAFKAUsBHAHsAXQB8AHy AfMB9AH/JAAC/wH0AvIB8QHyAfMB9AH/HwAC/wHzAe8BBwLyAbwBBwL3Ae8EBwLwAfEB8gLzAfQE/w4A Av8B9AHwAe8B7AFtARIB6gRKARwB8gP/AfMB7wETAREDQwERAeoB7QEHArwB8AHxAfMC/xMABv8BHAGa AfABSgFRAe8B7AF0AfAB8QHyAfMB9Ar/FwAD/wH0AfABBwL3Au0BBwG8AfIC9AP/GQAC/wH0AfABBwLw AfQCvAGSAe0DkgXvA7wB8QHyAfMB9AL/DQAB/wHzAfAB7AESAW0BHAEHAxoCmQG8AfQB/wH0AewBEwFE AUoBcwIcAnMBSgEVARMB7AO8AfAB8gH0Af8RAAL/BfQBHAGaAbwBSgFRAe8B7AF0AbwC8QHyAfMK9AL/ DQAG/wT0AbwC9wHsAZIBkQHsAZEB7QHvAQcB8QLyAfQB/xgAAv8B9AHzAfEBBwG8A/MBBwLtAe8BkgHt AZIF7wIHAvAB8gHzAfQC/wwAAf8B8QHrAUQBeQEbAfQB8wHxArwBGgHwAfQB/wHxARIBEQFzAZkBGgG8 AwcB7wEcAXMBSgEVAW0B8QHwAQcBvAHyAfQB/xAAAf8B9ALzA/IBHAGaAQcBSgFRAe8B7AF0AvAD8Qny AfMB9AH/DAAB/wH0AfMC8gLwAwcB9wHtAewD6wLsAW0B7ALtAQcB8AHxAfAB8wH/FgAC/wH0AfMB8gHx AbwBBwG8AfEBBwHsAZIB7wIHAu8BBwG8A/AC8QLyAvMC9AP/CgAB9AHsAUQBeQIbAfIB9AMAA/8B8AJK ARwBBwG8AgcB8QH0Af8B9AHxAe8BcwFLAUoB7AHyAfABBwG8AfMB/xAAAv8B9AHyA/EBHAGgAe8BSwFR Ae8B7AF0A/AB8QLwCPEB8gL0Af8KAAH/AfQB8wHyBPEB8AEHAZIB7QLsAesC7AGuAewB6gFtAesC7AH3 AbwB8AHxAfMB9AH/EwAC/wL0AfMB8QHwAbwBBwH3AbwB9wFtAesB8QPyAfEB8gHzB/QH/woAAQcBFAF0 ARoBvAH0BwAB9AHqAUsBmQEHAfEB8wHxAQcB8AHzAf8CAAH0AbwBcwFLAUoB7wHyAbwBBwHwAfQB/xAA Af8B9AHzAfIB8QHwARwBoAHvAUsBcwGZAewBcw3wAfEB8gHzAfQB/wgAAf8B8wHwAbwBkgLtAewB6wH3 AZIB7AJtAesCkQHtAZIBkQLtAZEC7AKuAe0B7wIHAfAB8wH0Av8QAAL/AfQB8wHyAfEB8AG8AQcB7wG8 AfQB8AHtAfQG/xcAAf8BEQFuARoBvAHyAf8GAAH/AfcBRAGgAQcBvAHyAbwB8wG8AQcB8QH0Af8DAAG8 AksBSgG8AfEBBwG8AfMB/xEAAf8B9AHzAvEBHAHDAQcBUQF0AZkB7AFzAvEC8AnxA/IB8wH0Af8HAAHv AewBbgF0AXkCegKgAXoBeQF0AUoBFQERARUB6gHrAZIB7AEHAbwB9wLvAZIB7QH3AQcB8AMHAfAB8gHz AfQB/w4AAf8B9ALzAfIB8QLwAfEBBwHyAvQBvAEHAfIB8QHwAgcB8AL0Af8TAAH/Ae8BRAEcAbwBBwHy Av8FAAH0AesBmQEaAQcB8AHtAeoB8wHwAQcB8QH0Af8EAAHvAksBHAHxAQcBvAHyAf8SAAH/AfQC8wGZ AcMBvAFzAXQBGgHtAW4C8gXxAvIH8wL0Af8FAAH/AfIBHAGZAQcCvAXwAfIB8wMbAcMBmQHsA20C7AGS Ae8B9wHtAfcBBwHzB/IB8wH0Av8LAAL/AfQC8wHyAfEB8AEHAfcB8QP0Ae8B6gFtAewB9wHvAQcB7wEH AfAB9BIAAfMBFQFKAZkB8AG8AfAB8wL/BAAB8QHsARsBvAHwAQcBSgFLAe8B8QG8AfEB9AH/BAAB9AFu AUsBcwG8AQcBvAHyAf8MAAKSBRwBkgH3AhwBGgGZAXQBeQEaARwBSwHtCOwB7QHyCP8FAAH/AfMBBwG8 AfAB8wH0A/8B9AHyArwDBwHwAbwB8AEbARoBmQEcAXQBbgHqAW0B7AH3AbUB8gHzAvQD/wX0Af8LAAH/ AvQB8QEHAfcBbQESAeoBvAT0AesBQwFtAe0EBwHxAbwB8hEAAQcBEQFzAZkB8wHxAfAB8QHzAf8EAAEH Ae8B9AHwAfQBvAFzAnQB8wLyAfQB/wUAARwCSwHvAQcBvAHzAf8MAAF0ARoEwwb0AcMCmgEaARwBdAGZ Ae8GmQHvAXMB8w8AAfAB8QH/BgACBwG7AgcBuwG1AQcC7wGRAQcB8QIbAcMBmQFLAeoBkQHwAfIB9AH/ BAAC/wL0Af8LAAH/AfEBBwH3AuwB6wESAeoBBwT0AZIBFQFtAe0B7wG8AvIB8wHyAbwB8QH0Af8OAAHt AUQBHAG8AfQB8wHyAfEB8gHzBP8B7QG8AfQB8gH/AfQBcwJ0A/QB/wQAAv8BBwFKAUsB7QHwAfEB9AH/ DAABmQHzBPEI8gF0AcMBHAFuAfABvAYHAbwB8QHzEAAB8wH0Af8FAAG8AfIBvAHyAfQB8gG8A/QB7wHz AfIB8AEHARsBGgEbAaACcwEcAfEB/wUABP8KAAH/AfEDBwH3Ae0B6wFtARIB9wT0AfcBFAETAewB7wG8 AfID9AHzAvAB/w4AAe0BSgFzAfAC/wH0A/IB8wL0Af8B7AG8AvMC/wHsAZkBeQH0CP8B9AEHAUQBcwEc AfIB9AH/DQAB7wEcA0oCSwFRAXMBdAF5ApkBeQGZARsBHAFRAUsHSgFuAfAB8gH/DwAB/wL0Af8EAAG8 AfMB8AHzAQAB8gG8AQAC/wEHAfQB/wH0AbwB/wHyAbwBBwIaApkBBwHyEgAB8QPwAgcB9wHtAesBEgHr A/QBBwHsARMBEgHrAfcB7wHxBfQC8AH0DQAB7QFKAXMB8QIAAv8B9ATzAfIBcwGZARsB8AHzAfQB7AGZ AZoB9AIAAf8D9APzAe8BRAFzARwB9AL/DQAC7wVRAXQBeQF6AaABwwH0AqABmQF0AXkBdAJRBUsBcwHw AfIB/xIAAvQDAAG8AfMB8AH/AQAB8wG8AgAB8wEHAf8BAAH0AbwC/wHxAbwCBwEaARsBmgF5AQcB/w4A Af8B8wHwAfQD8wHwAQcB7QFtARIBbQHyAfQB8QHvAQcB7wGSA/cBBwHxBfQC8QH/DAABHAFKAUsBBwQA Av8C9ALzAXMBmQHDAbwB9AHzAesBmQGgAfQCAAH/AvQE8wHtAUQBcwG8Af8PAAHvBBsBGgQbAZoBwwHz AZkC8wUbAxoCvAEaAfEB8AH/EgAC/wH0Af8BAAG8AfABvAHyAfQB8gG8AvMB8QG7AvMB8QEHAfMB8QEH Ae8BBwHxAfMB8AG8AQcBmQG8AfQMAAH/AfQB8AX0AfMBBwGSAesBEgHsAfIB8AHzAfAB8wG8AfIB8AS8 AfAB8wT0AbwB8gwAAbwBSgFLAe0B/wQABf8BHAF5AcMBvAH0AfABHAEbARoDAAP/BPQB6wFKARwB8xAA AW4BHAaSAxwBoAHzAZkBBwHvBBwBkgbtAXMB8QH/FAAC/wEAAbwB8ALyAfQB8gG8AvQB8wG7AvMB8QEH AfMB8gEHAfABBwH0AQAB/wHyAbwCBwG8Af8LAAH/AfEB8gb0AbwB7wFtAesBvAHxAf8BvAHvAfMB8QIA Af8B9AHyAfAB8gLxBPQBvAH0CwAB9AFKAksB8gkAAfMBdAGgARoB/wEAAbwBGwG8BgAD/wHzARQBUQGZ AfQQAAF5CpkBoAHzAZkBoAHDAqACGgKZBe8BmQH0GAAB/wL0AfMBAAH/AfADAAG8Af8BAAL0AQAB/wLz AfEB/wQAAbwBBwG8AfMLAAH/AfAH9AHyAfcB7AEHAfIBAAH/AfQB8QHyAf8FAAH/AfQC8wPyAfEB8AH0 DAAB7wFKAUsB6wH/CAAB9AEcAaABmQEHAf8B9AEbAf8IAAH/Ae0BRAGZARsB/xoAAQcBmgHzAXkBoAHz ARoBwyQAAfMB8gG8AfQB/wHzAwABvAH/AQAC9AEAAvEBvAHzAwAB/wEAAfABvAHwAfQB/woAAfMB8Ab0 AfIBvAEHAbwB8wH/AwAC/woABv8MAAH/AXMBSwFKAe8B/wcAAf8B8AKaARwBBwEAAfQIAAH/Ae8BFQFz ARoB8wH/GgABHAGaAfMBeQGgARsBBwHDJAAB/wHwAbwB8AHzAfAD8gEHAfEB8gG8AfAB8QIHAbwB/wIA Av8B9AHxAfIB8wH/CwAB8QHyBfQB8QHzAfQB8gHzJAAB8wJLAUQB9wH/CAAB8gF6AZoBcwG8CAAB/wEH AREBbgEaAfAcAAIcAfMBdAGaAcMBBwEbJQAB8wK8AfIB8AG8AfIB8wEHAfIB8AEHAfEBBwHvAQcB9AL/ BPQC/w0AAfEB8wL0AfMB8gLzAfIB8QHzJQAB/wEHAXMBSwFKAW0BvAHzA/8B9AHzAf8BAAEaApoBcwHv AfIB9AP/AfMB8QHrAUQBcwGZAfEB/xwAAhwB8gFzAXoBwwEHAfQnAAHyAfEC9AH/AQABvAH/AfIC8wEH AfMB/xYAAfAB8wT0AfEB8gH0Av8mAAH/AbwBHAFzAUsBRAESAesC7AFtARIBvAEAAf8BGgKaAXMB6wHs Au0B7AFtAUoBdAGZAhsB/x0AARwBdAHyAVEBeQHDAQcB9CcAAf8B8gK8AfAB8gG7AbwBBwG7AQcB8wH/ FwABvAHzAvQB8gHwAf8sAAHzApkBHAFzA0oBSwF0AZkB8wIAAbwBmgLDARoB7wHtAe8BGwHDAhsB8R8A ARwBcwHyAUsBdAEaAQcBGykAAfABCAHwAfMCCQIHAfMZAAHxAfQC8gH0LwAB/wHyBRoCGwHyAfMDAAH0 AfEBGgEbA/QB8gHxAfIB9CAAARwBcwHyAUsBcwEaAZkBwysAAf8C9AHzAfQbAALyAfQB/zIAAf8G9AH/ BQAB/wf0Af8hAAEcAXMB8gFLAXMBGgHvAcNLAAHxAf9rAAEcAXMB8wGZARoBGwHvAcO4AAGZAXQD8wH0 AZkBoLgAAvQD8wP0/wD/AP8A/wD/AP8A/wDLAAFCAU0BPgcAAT4DAAEoAwABwAMAAeABAQIAAQEBAAEB BgABLRYAA///AP8A/wD/AIUAIP8Bfxb/AfkBHwv/Af4BPwn/AcABBwv/AfgBHwn/AcABAAE/Cv8B8AEP Cf8B8AEAARwK/wHgAQABfwj/AfACAAEfCf8CAAEPAv8B+QEAAQED/wHwAgABDwP/AgABfwP/AgABDwL/ AcACAAEPAv8B8QIAAQcC/wH8AgABDwP/AgABDwL/BAABPwH/AfEDAAF/Af8B8AIAAQ8C/wH4AYABAAEI AX8B/gQAAR8B/wHxAQQCAAE/Af8B4AIAAQ8C/wH4AwABPwH+BAABBwH/AfEDAAEfAf8BwAIAAQ8C/wH4 AwABPwH+BQAB/wHxAQABgAEAAQcB/wHAAgABDwL/AfgDAAEfAfwFAAH/AfMDAAEHAf8BwAMAAX8B/wH4 AwABHwH4BQAB/wHzAgABCAEPAf8BwAMAAR8B/wH8AgABDAEfAfAFAAH/AeMDAAEPAf8EAAEHAf8B/AMA AR8B+AUAAf8B4wMAAR8B/gQAAQcB/wH2AwABHwH8BQAB/wHzAwABDwH+BAABBwH/AfADAAE/Af4FAAH/ AfIDAAEDAfwEAAEHAf8BwAMAAR8B/wQAAQEB/wHyAQABCAEAAQMB8AQAAQcB/wHAAwABDwH/AcADAAEP Af8B8wEAARgBGQE/AfAEAAEHAf8BwAMAAT8B/wH8AwABHwH/AfMBAAEQAQEB/wHgBAABBwH/AcACAAEB Av8B/AMAAT8B/wHzAQABEAEBAf8B4AQAAQcB/wHAAgABAQH/AfgEAAL/AfMCAAEDAf8B8AQAAQcB/wHA AgABAQH/AfADAAE/Av8B4AIAAQEB/wHwBAABBwH/AcEBgAEAAYEB/wHwAwABPwL/AeEBAAGAAQEB/wHw BAABBwH/AcEBgAEAAcEB/wHwAQEBwAEAAT8C/wHgAQABgAEBAv8EAAEfAf8BwAGAAQEBgQH/AfABCwGA AQABfwL/AcABAAGAAQMC/wHAAwABPwH/AcACAAEBAf8B+AEPAcABAAF/Av8BwAEAAYABBwL/AcACAAED Av8BwAIAAQED/wHgAQABfwL/AcACAAEDAv8B4AIAAQ8C/wHAAgABAwP/AfABAQP/AcACAAEBAv8B4AIA AQ8C/wHgAgABAwP/AfwBAwP/AcACAAEBAv8B+AIAAQ8C/wH4AgABBwj/AcICAAERAv8B+AIAAT8D/wIA AQcI/wHCAgABAwL/AfgCAAF/A/8CAAEPCP8BwwGAAQABAwL/AfgCAAT/AYABAAEDCP8BwwGBARABBwL/ AfgBAAEBBP8B8AEAAQEI/wHhAQEBEAEHAv8B/AEAAQME/wHgAQABAQj/AfMBAQEQAQcD/wEAAQcE/wHg AQABAwj/AfMBAQEYAT8D/wGAAR8E/wHgAQMJ/wHzAYMBiAE/A/8BwAE/BP8B4AEHCf8B8wHDAZgBPwP/ AeABPwT/AeABDwn/AeMB/wGYAT8D/wH8Bf8B8AEHCf8BxwH/AZwBfwn/AfABHwn/AccB/wGfCv8B+AEf C/8BHxf/AT9e/wH8AT8W/wH4AR8Q/wHgAQ8E/wHwAQ8Q/wHgAQAE/wHwAQcC/wHfAv8BDwH/AT8I/wIA AR8D/wHwAQMC/wHfAf8B4AEDCf8B/AIAAQED/wGAAQABHwL/AwABDwj/AfgDAAP/AgABBwH/Af4EAAE/ B/8B8AMAAX8B/wH+AgABAQH/AfwEAAEfB/8B4AMAAR8B/wH4AwABPwHwBAABAQf/AcADAAEPAf8B+AMA AT8B8AUAAv8B/gF/A/8B4AMAAQcB/wHwAwABDwHwBQAC/wH8AX8C/wF/AcADAAEDAf8B4AMAAQcB8AUA AfAB/wH8AR8B/wHHAX8BwAMAAQMB/wHgAwABBwHwBQAB8AExAfwBBwH4AQMBfwHAAwABAQH/AfADAAED AfAFAAHwAQABYAEDAYABAQF/AYAEAAH/AcADAAEBAeAFAAHwBAABAQF/AYAEAAH/AcADAAEBAeAFAAHw BAABAQE/AYAEAAH/AYAEAAHgBQAB+AUAAR8BwAQAAf8FAAHwBQAB/AUAAR8BwAQAAf8FAAHwBQAB/AFA AwABAQEfAYAEAAH/BQAB+AUAAf4BMAMAAQEBHwGABAAB/gUAAfwFAAH+AQgDAAEDAR8BgAQAAf4FAAH+ BQAB/wEIAwABBwEfAYAEAAH+BAABAQH/AcAEAAH/AYABIQGAAQEB/wEfAYAEAAH+BAABAwH/AeAEAAH/ AcABAgFAAQEB/wE/AYAEAAH+BAABBwH/AfAEAAH/AcECAAEBAf8BfwQAAQ8B/gQAAR8B/wH4BAAB/wHz AYQBIAHBAv8EAAEfAf4EAAE/Af8B+AQAAv8BgAERAfkC/wQAAT8B/wQAAX8B/wH4AwABAQL/AcgBgwF/ Av8EAAE/Af8EAAF/Af8B+AMAAQ8C/wHwAQ8D/wQAAR8B/wQAAX8B/wH4AgABAQP/AfABhwP/BAABHwH/ AYADAAL/AfgCAAEBA/8B8AGPA/8EAAE/Af8BgAMAAv8B/AIAAQED/wH8AR8D/wQAAX8B/wHAAgABAQL/ Af4CAAEBA/8B/AEfA/8EAAF/Af8BwAIAAQEC/wH+AgABAQP/AfwBPwP/AYACAAEBAv8B4AIAAQED/wIA AQMI/wHAAgABBwL/AfACAAEDA/8BgAEAAQMI/wH4AgABfwL/AfACAAEHA/8BwAEAAQcJ/wEAAQMD/wH8 AgABDwP/AeABAAEfCf8BgAEDA/8B/gIAAR8D/wH4AQABfwn/AcABBwT/AgABfwP/AfwBABD/AeABAxb/ AfwBf9D/AgAQ/wGfAfwBDwL/Af4CAAF/Cv8BhwT/AQEB8AEPAv8B/gIAAX8D/wHHAf4F/wEDBP8CAAEP A/8CAAF/A/8BAQHgAQcC/wH+AQYBAAF/Av8BAQIAAQMC/wH4AgABAwL/Af4BAAHAAQEC/wH+AQIBAAF/ Av8EAAE/Af8B8AIAAQEC/wH+AQABgAEBAv8B/AIAAX8C/wGAAwABDwH/AeADAAL/AfgCAAEBAv8B/AIA AT8C/wGAAwABBwH/AeADAAF/Af8B+AIAAQEC/wH8AgABPwH/Af4EAAEHAf8B8AMAAv8B+AIAAQEC/wH4 AgABPwL/BAABBwH/AfQCAAEBAv8B+AMAAv8B+AIAAR8C/wQAAQcB/wHgAgABAwL/AfgDAAL/AfgCAAEf Av8BgAMAAQcB/wHgAgABDwL/AfwDAAL/AfgCAAEfAv8BwAMAAT8B/wGAAgABAQL/AfwDAAE/Af8B+AIA AR8C/wHBAYACAAF/Af8BgAIAAQEC/wH4AwABPwH/AfgCAAEfAv8BwQGAAgABPwH/AYACAAEDAv8B+AMA AT8B/wE4AgABHwL/AuACAAE/Af8BgAIAAQEC/wH4AwABPwH+AQwCAAEDAv8B4AFAAQABDAE/Af8BgAIA AQEC/wHwAwABPwH+AwABAQL/AfACAAEPAX8B/wGAAgABAwL/AeADAAE/Af8BwAIAAQEC/wH4AgABHwL/ AcACAAEHAv8BwAMAAT8B/wHAAgABAQL/AfgCAAE/Av8B8AIAAQ8C/wHAAwABPwH/AcACAAEDAv8B+AIA AT8C/wH4AgABHwL/AfADAAE/Af8BgAIAAQMC/wH4ASABAAF/Av8B+AIAAT8C/wHgAwABPwH/AYADAAF/ Af8B/AIAAX8C/wH4AgABfwL/AeADAAE/Af8BgAMAAT8B/wH8AQABAQP/AfwCAAF/Av8B4AMAAT8B/wGA AgABCAE/Af8B/gEAAQMD/wH+AgABfwL/AcADAAE/Af8BwAIAAQ8BBwH/Af4BAAEDA/8B/gIAA/8BwAMA AX8B/wHAAgABDwGHAf8B/gEAAQMD/wH8AgAD/wHAAwAC/wHgAgABHwL/Af4BAAEDA/8B+AIAAT8C/wHA AwAC/wHwAgABDwL/Af4BAAEHA/8B+AIAAT8C/wHAAwAC/wHwAQABAQEPAv8B/gEAAQ8E/wIAA/8BwAIA AQEC/wHwAgAD/wH8AQABHwT/AgAD/wHAAgABAwL/AfwBAAGAA/8BCAEAAT8E/wIAA/8BwAIAAQcD/wEB AYAD/wIAAX8E/wIAA/8BwAEAAQ4BDwP/AQEBgAP/AgABfwT/AgABfwL/AcABAAEPBP8BAQGAA/8BgAEA AX8E/wIAA/8BwAEAAQ8E/wEBAYAD/wGAAQABfwT/AgAD/wHgAQABHwT/AQEBwQP/AeABAAX/AQABAQP/ AeABAAEfBP8BAQHjA/8B8AEDBf8BgAEBA/8B4AEAAR8E/wEBAfMD/wH4AQcF/wHgAQMD/wH4AQABPwT/ AQEL/wHgAQcD/wH4AQABPwT/AcML/wH8AR8D/wH4AQABfwT/AccR/wEDd/8B4AE/EP8B/gE/BP8BAAED EP8B/AEfBP8BAAEBCv8B4AEAAT8D/wH4AQ8D/wH+AgABfwn/AYABAAEPA/8B+AEHA/8B/gIAAX8D/wHg AQME/wIAAQMD/wGAAQABfwP/AgABfwL/AfgCAAEPAv8B/gMAAX8C/wIAAT8D/wIAAX8C/wHwAgABBwL/ AfwDAAE/Af8B/gIAAQ8D/wGAAQABfwL/AeACAAEBAv8B+AMAAR8B/wH4AgABAwP/AgABfwL/AcADAAF/ Af8B+AMAAQcB/wH4AgABAQP/AYABAAF/Av8BgAMAAT8B/wH4AwABBwH/AfgCAAEBA/8BwAEAAR8B/wH8 BAABHwH/AfgDAAEDAf8B4AMAAX8C/wHAAQABDwH/AYAFAAH/AfADAAEBAf8BwAMAAT8C/wGAAQABBwH/ AYAFAAH/AeAEAAH/BAABDwL/AwABfwGABQAB/wHABAAB/gQAAQEB/wHwAwABPwYAAf8BwAQAAf4FAAH/ AfADAAEHBgAB/wHABAAB/gUAAf8B8AMAAQcGAAH/AYAEAAH/BQAB/wHwCgAB/wGABAAB/wHAAwABAQH/ AfgKAAH/AYADAAEBAf8EAAE/Af8B+AoAAf8BgAMAAQMB8AQAAT8B/wH4CgAB/wGAAwABAwHwBAABHwH/ AfgKAAH/AYADAAEHAfgEAAEPAf8BwAkAAQcB/wGAAwABHwH+BAABDwH/AcAJAAEDAf8BgAMAAT8B/wHA AwABPwH8AUAJAAEDAf8BgAMAAX8B/wHAAgABBwH/AfwDAAEBAeAFAAEDAf8BgAMAAv8B4AIAAQcB/wH+ BAABeAUAAQcB/wHAAwAC/wHgAgABBwH/AfwEAAF/AYAEAAEHAf8BwAIAAQEC/wHwAgABDwH/AfwEAAE/ AYEDAAEBAR8B/wHAAgABAQL/AfACAAEPAf8B+AQAAT8BgQMAAQEBHwH/AeACAAEDAv8B+AIAAQ8B/wH4 BAABPwGDAYACAAEBAe8B/wHgAgABAwL/AfwCAAE/Af8B8AQAAT8B/wHAAgABAQL/AfgCAAEHAv8B/AIA AX8B/wHwBAABHwH/AcACAAEBAv8B+AIAAQ8C/wH+AgABfwH/AfAEAAEfAf8B4AIAAQEC/wH8AgABHwP/ AcABAwL/AfAEAAEfAf8B+AIAAQMD/wIAAX8D/wHwAQ8C/wHwBAABHwH/AfgCAAEDA/8BgAEABP8B/AEP Av8B8AEHAfABEAEAAR8B/wH4AgABBwP/AeABAwT/Af4BHwL/AfABHwH/AX4BAAEfAf8B/AIAAQ8J/wH+ AR8C/wHwAT8C/wHIAT8B/wH+AgABPwn/Af4BHwL/AfgBfwL/AfgBPwL/AgABfwr/AT8K/wH4AR8L/wE/ rP8B4AEfFv8BgAEDFf8B/gIAAX8D/wHgAQcP/wH8AgABfwP/AeABAwr/AfABAwP/AfwCAAE/Av8B8AEA AQMK/wHAAQED/wH4AgABHwL/AcABAAEBAcABPwH/AfwBHwHzBP8BgAEAA/8B+AIAAQ8C/wHAAwABPwH/ AfwBDwHABP8CAAP/AfgCAAEPAv8BwAMAAR8B/wH4AQcBgAF/A/8CAAP/AfACAAEPAv8BwAMAAQ8B/wH4 AgABfwP/AgABfQL/AfACAAEPAv8BgAMAAQMB/wH4AgABfwL/AcADAAL/AeACAAEPAv8EAAEBAf8B+AIA A/8BgAMAAv8B4AIAAQcB/wH+BQAB/wH4AQABAQP/AYADAAL/AcACAAEHAf8B/gUAAf8B/gEAAQMD/wGA AwAC/wHAAgABBwH/Af4FAAL/AQABAQH/AfkB/wGAAwAC/wHAAgABAwH/Af4FAAH4Af8BwAEAAR8B4AH/ AYACAAEBAv8BwAIAAQMB/wH8BQAB8AF/AgABDwHgAf8BgAIAAQEC/wHAAgABAwH/AfwFAAHwAT8BAAEg AQcBwQH/AYACAAEBAv8BwAIAAQcB/wH8BQAB+AIAATABAAEBAf8BgAIAAQEC/wHAAgABBwH/AfwFAAH8 AgABHgEAAQEB8AQAAQ8B/wHgAgABBwH/AX4FAAH+AgABHwGAAQcB8AQAAQcB/wHgAgABBwH/AR4FAAH/ AQABAwEHAcABBwHwBAABDwH/AeACAAEPAf8BHgUAAd8BwAEDAYMBwAEHAfgEAAEPAf8B4AIAAQ8B/wEe BQABzwHgAQABQwGAAQ8B+AQAAR8B/wHgAgABDwH/AR4EAAEGAcMB8AMAAQ8B/AQAAR8B/wHgAgABDwH/ AR4EAAEGAeMB/AEAARABAQEfAfwEAAE/Af8B8AIAAQ8B/wEeBAABDgHzAfgBPwH4Ah8B/gQAAT8B/wHw AgABDwH/Af4EAAEOAvABOQGcAQ4BPwH+BAABPwH/AfgCAAEPAf8B/gQAAT4B8AFgAXgBHgEMAT8B/gQA AT8B/wE4AgABHwL/BAABPgH8AQEB/AE/AQABfwH/AYADAAF/Af4BCAIAASABfwH/AYADAAE+Af4BAQHw AQ8BgAL/AcACAAEBAf8B/AEEAgABIAE/Af8BgAMAAT8B/gEBAfABDwGAAv8B4AEgAQIBAwH/AfwBBAIA AUABPwH/AcADAAL/AQMB/AF/AcAC/wHAASABAAEHAf8B+AEGAgABwAE/Af8B4AIAAQEB/wH+AQEB/AF/ AYAC/wHAASABAAEHAf8B+AEHAQABAQHAAT8B/wHwAgABAQL/AQAB/gF/AQEC/wHAASABDAEHAf8B/gEH AeAB/wHgAX8B/wHwAgABDwL/AYgBPwH+AR8C/wHgATABHgEHAf8B/gEPAfwBfwH4Av8B8AIAAQ8C/wH8 AQcB8AE/Av8B4AE8AR4BBwL/AR8B8AEfAfkC/wHwAgABDwP/AQMBwAF/Av8B4AF/Af4BDwP/AfABHwP/ AfgCAAEfA/8B8wGDA/8B+AL/AQ8D/wHgAQ8D/wH4AgABPwT/Ae8K/wHgAQcD/wH4AgABPw//AeABBwP/ AfgCAAF/D/8B4AEHA/8B/AIAEP8B4AEPA/8B/gEAAQEQ/wHwAR8E/wEAEf8B+AE/BP8B53H/AcABPxX/ AfgCAAF/Av8BuwL/AfEO/wHgAgABHwL/AaEC/wHBCv8B/gF/Av8BwAIAAQ8C/wGBAv8BwAj/AfACAAEf Av8BgAIAAQEC/wGAAX8B/wEAAX8H/wHwAgABHwL/BAAC/wGAAT8B4AEAAT8B/wH+Af8B/AF/Av8B8AIA AQ8C/wQAAT8B/wHAAT4CAAE/Af8B/AEDAYABfwL/AfACAAEHAf8B/gQAAR8B/wHAAwABPwH/AfgBBwHA AR8C/wH4AgABAQH/Af4EAAEfAf8BwAMAAR8B/wHwAQcBwAEPAv8B+AMAAv8EAAEPAf8BwAMAAR8B/wHg AQcBwAEPAv8BwAMAAQMB/wQAAQcB/wHAAwABDwH/AcABBwHAAQcC/wHAAwABAQH/BAABBwH/AcADAAEP Af8BwAEHAcABAwL/AcAEAAH+BAABBwH/AcQDAAEPAf8BgAEHAeABAwL/AcAEAAH+BAABBwH/AcADAAE/ Af8BgAEHAeABAQL/AcAEAAH+BAABBwH/AcADAAE/Af8BAAEHAeABAQL/AcADAAEDAfwBIAIAASABDwH/ AYADAAL/AQABDAEQAQEC/wHAAwABBwH8BAABDwH/AYACAAEBAf8B/gIAARABAAL/AcEDAAEPAfwEAAEf Af8BgAIAAQMB/wH+AQABEAIAAv8BwQHgAgABDwH8BAABPwH/AYQCAAEDAf8B/gEAASACAAH/AfABAwHg AgABBwH8BAABfwH/AYQCAAEBAf8B/gQAAf8B4AQAAQcB/AMAAQEC/wGAAgABAQH/Af4EAAH/AfABAgMA AQcB/AEwAQABQAFhAv8BgAIAAQEB/wH+BAAB/wHwAQMB4AGMAQABfwH8ATwBAAFgAcEC/wGAAgABAQH/ Af4EAAH/AfgBQQHhAQwBHwF/AfwBPwEwAWcB4QL/AYACAAEBAf8B/gQAAv8BwQHiATwBPwH/Af4BHwL/ AcEC/wGAAgABDwL/AwABAQL/AcABxwEYAT8B/wH+AR8C/wHBAv8BhAIAAS8C/wMAAQEC/wHgAccBAAE/ Af8B/gEPAv8BgQL/AYACAAEvAv8DAAEBAv8B8AFPAZABfwL/AQ8B5wGfAYMC/wGHAgABHwL/AYACAAEB Av8B8AEHAYABfwL/AQMB5wEeAQcC/wGGAgABGQL/AcACAAEDAv8B+AIAA/8BgQHnAR4BDwL/AYYCAAE5 Av8BwAIAAQEC/wH+AQABAQP/AcAB5wEcAQ8C/wGGAgABOQL/AcACAAEBAv8B/AIAA/8BwAEnAQABHwL/ AYQCAAE/Av8BwAIAAQEC/wH4AgABfwL/AeABBwEAAT8C/wGAAQABAQE/Av8BwAIAAQEC/wH4AX8B8AF/ Av8B+AEHAQABfwL/AYABNgGBAb8C/wHAAgABAQL/AeAB/wH4AT8C/wH8AQcBAQP/AYAB9gGRAb8C/wHA AgABAwL/AeAB/wH8AT8D/wIHA/8BgQH3AZED/wHAAgABAwL/AfAL/wHHAf8B8wG/Av8BwAIAAQcO/wHH Af8B+wG/Av8B4AIAAQcO/wHHBf8B4AIAAQ8U/wH4AgABDxT/AfgCAAEfFP8B/AIAAX8V/wHAAQMW/wH8 AZ98/wHgAQcP/wHgAT8B/wGBA/8BwAEDCv8B/AEfA/8BwAEfAf8BAQP/AYABAwr/AeABAAP/AYABBwH+ AQAD/wEAAQEF/wHwAX8D/wIAAQMC/wIAAf4BAAE/Av8BAAEBBf8BwAFgAX8C/wIAAQEC/wIAAf4BAAE/ Av8BAAEBBf8BgAEAAT8C/wIAAQEC/wGAAQABPAEAAR8C/wEAAQED/wH+AQcBgAEAAT8B/wH+AwABfwH+ BAABBwL/AQABAQP/AfwBAQGAAQABPwH/Af4DAAF/Af4EAAEHAf8B/gIAA/8B+AEAAYABQAE/Af8B/gMA AT8B/gQAAQcB/wHwAgABHwL/AcABAAGAAQABfwH/Af4DAAE/AfwEAAEHAf8B4AIAAQ8C/wHAAQABQAEA A/8DAAE/AfgEAAEHAf8BwAIAAQ8C/wGAAQABfgEDA/8B4AIAAT8B+AQAAQcB/wHAAgABBwH/Af4CAAE8 AQMD/wHwAgABPwHwBAABBwH/AYACAAEDAf8B/gIAARgBAwP/AfACAAEfAfAEAAEDAf8BgAIAAQMB/wH+ AwABAwP/AfwCAAEfAfAEAAEDAf8DAAEBAf8B/AMAAQED/wH8AgABDwHwBAABAwH/AwABAQH/AfwDAAEJ BP8CAAEPAfgEAAEBAf4DAAEBAf8B+AMAAQ0D/wHwAgABDwH4BAABAwH+AwABAQH/AfgDAAEEA/8DAAEP AfwEAAEBAf4DAAEBAf8B+AMAAQQD/wMAAT8B/gUAAf4DAAEBAf8B+AQAA/8CAAEBAf8B/gUAAfgEAAE/ AfgEAAF/Av8BgAEAAQMB/wH+BQAB+AQAAT8B+AQAAT8C/wHkAQABDwH/Af4FAAH4BAABPwH+BAABPwL/ Af4BAAE/Av8EAAEHAfgEAAE/Af8EAAE/Av8B/gFwAT8C/wGAAwABDwH4BAABPwH/AcADAAF/Av8B5AFw AT8C/wGAAwABDwH8AQ8BgAEBAcABfwH/AfgDAAF/Av8BgAEAAT8C/wHAAwABHwH8AQ8BgAEHAcABfwH/ AfgDAAF/Av8CAAE/Av8BwAMAAT8B/gEHAYABBwHAAX8B/wH+AwABfwL/AgABPwL/AcADAAE/Af4BBwHA AQcBwAP/AYACAAF/Af8B/AIAAX8C/wHgAwABHwH+AQcBwAEPAcAD/wHgAgABfwH/AfgBAAT/AeADAAE/ Af4BAwHgAQ8BwQP/AfACAAF/Af8B8AEABP8B8AMAAT8B/wGDAfABHwGBA/8B/AIAAv8B4AEDBP8B+AMA Av8BwQH4AT8BAwP/AfgCAAL/AeABAwT/AfgCAAEDAv8BwQH5Af4BAwP/AfgCAAL/AeABBwT/AfgCAAEP Av8B8AH/Af4BDwP/Af4BAAEBAv8B+wEPBP8B/AIAAQ8C/wH4AT8B8AEfBP8BAAEBCP8B/AIAAQ8C/wH4 AR8B8AF/BP8BwAEDCP8B/AIAAR8D/wEfAeMP/wH+AQABwAF/Ff8BAAH9Fv8BAJf/AfYX/wHAAT8H/wGB AfMBzwH/AX8J/wH+AQABPwb/Af4BAAEhAQcB/wE/Af8B5wL/AecE/wHwAQABHwL/Af4D/wH+AQABQAED AccBPwH/AcMB/wF/AeME/wHAAQABHwL/AfwBPwL/Af4BAQEAAQMBgQG/Af8BxwH8AR8B8QT/AYABAAE/ Av8B/AEfAv8B/AEDAQABAwGAAd8B/wHDAfwBHwHhBP8CAAE/Av8B/gEfAv8B/AEHAQABAQGAAV8B/wGH AfABBwHhBP8CAAE/Av8B/AEfAv8B+AEBAgABwAFfAf8BgwIAAeAD/wE+AgABPwL/AfwBDwL/AfgDAAGA AR8B/wEDAgABQAL/Af4DAAE/Av8B/AEfAv8B+AQAAR8B/wQAAv8B8AMAAT8C/wHgAQMC/wH4BAABPwH/ BAABfwH/AeADAAE/Av8B4AEAAv8B+AQAAT8B/wQAAX8B/wHgAwABPwH/AfgCAAEBAf8B+AQAAT8B/wQA Av8BwAMAAT8B/wHAAwABfwH4BAABPwH/BAAC/wHgAwABPwH/AcADAAE/AfwEAAE/Af8BgAMAAv8BwAMA AT8B/wGAAwABDwH+BAABPwH/AcADAAL/AYADAAE/Af4EAAEBAf8EAAF/Af8BwAIAAQEB/wF/BAABPwH+ BQAB/wHAAwAC/wHAAgABAQH/AX8EAAF/AfwFAAH/AfgCAAEPAv8B4AIAAQMB/wE+BAABfwH8BQAB/wH8 AgABHwL/AeACAAEDAf8BPgQAAWMB/gQAAQEB/wH8AgABPwL/AeACAAEDAf8BfgQAAUEB/AEAASACAAE/ Af8B/AIAAT8C/wHwAgABBwH/AX4EAAEhAfAEAAEfAf8B/AIAAT8C/wHwAcABAAGPAf8B/gQAASMB8AQA AQ8B/wH8AgABPwL/AfgBwAEBAY8B/wH+BAABPwHgBAABDwH/AfwCAAE/A/8B4AEDAv8B/gQAAf8B4AEA AQICAAEHAf8B/AIAAT8D/wHAAQEC/wH+BAAB/wHgAQABAQGAAQABBwH/AfwCAAE/A/8BwAEAAv8B/gQA A/8B4AEHA/8B/AIAAX8D/wHAAQABfwH/AfwDAAEBA/8B4AEPA/8B/AIAAX8D/wGAAQABfwH/AfgDAAEB A/8B8AEfA/8B/gIAAX8D/wGAAQABfwH/AfgDAAEHA/8B/AE/BP8CAAT/AYABAAF/Af8B8AMAAQ8D/wH8 AX8E/wIAAX8D/wGAAQABfwH/AfADAAEPCf8CAAF/A/8BgAEAAX8B/wHwAwABHwj/Af4CAAF/A/8BgAEA AX8B/wHgAQABAQHAAT8I/wH+AgABfwP/AcABAAF/Af8B6AGAAQcB2AHwCP8B/gIAAX8D/wHAAQABfwL/ AQABHwH/AeABfwf/Af4CAAF/A/8BwAEAAX8B/wH+AQABPwH/AYABfwf/Af4CAAF/A/8BwAEAAv8B/gEA AX8BvwFgAX8H/wH+AgABfwP/AeABAAL/Af4BCQL/AfABfwj/AgABfwP/AfgBAwL/Af4BDwz/AgAF/wG/ Av8B/gE/DP8CABb/AcABAxb/AeABBxb/AfABH7L/AfAL/wHwAQMK/wGAAT8K/wHgAQMK/wEAAR8K/wHg AQMK/wEAAR8D/wHgAQEB8AEDA/8B8AEACv8BAAEBA/8BwAEAAeABAQP/AfABAAT/Af4BBwT/AgABDwL/ AYABAAHgAQABfwL/AfABAAF/A/8B+AEBA/8B/AMAAX8B/gQAAR8B/wH8AwABHwL/AcABAAEPAv8B+AMA AT8B/gQAAQ8B/wH4AwABBwH/AcACAAEPAv8B8AMAAR8B/gQAAQcB/wH4AwABBwH/AYACAAEHAv8B4AMA AQcB/gEBAcACAAEHAf8B+AMAAQMB/wMAAQEC/wHAAwABBwH+AQcB8AEAAcABAwH/AfwDAAEDAfwEAAE/ Af8BwAEAAQEC/wH8AQcB4AEAAXABAwH/Af4DAAEBAfwEAAEPAf8BwAIAAT8B/wH4AQMB4AEAAXgBAwL/ AwABAQHwBAABAQH/AcACAAEfAf8B+AEBAeABAAF4AQMB/wHAAwABAQHwBQAB/wHgAgABDwH/AfgBAQHg AQABfAEDAf8BwAIAAQEB/wH8AX4CAAEBAeAB/wHgAgABAQH/AfgDAAHwAQMB/wHAAgABAQH/Af4BPgIA AQEB8AH/AcACAAEBAf8B+AQAAQcB/wHAAwAB/wH+AR4BEgIAAv8BwAMAAf8B+AFgAQABBgEAAQcB/wHA AwAC/wHOARMBEAEAAT8B/wQAAX8B+AF4AQABBgEAAR8B/wHAAwAC/wHCAwABHwH+BAABfwH4ATwBAAEO AQABPwH/AcADAAL/AfICAAEIAQ8B/gIAARgBAAE/AfgBPwHgAY8BwAE/Af8BwAIAAQEC/wH+ARMBkgIP Af4BAAEEAR8BAAE/AfwBHwHgAQ8B8AE/Av8B8AEPBP8BAwGSAR0BBwH+AQABBwE/AfABPwH8AQ8B4AFf AeABPwL/AfABDwT/AgABGAEPAf4BAAEfA/8B/gEHAfgBPwHAA/8B8AEPBP8BgAIAAT8B/gEAAT8D/wH+ AQABBAIAA/8B8AEPBP8B4AGAAX8B/wH+AQABPwT/AQABBAEAAQED/wHwAQ8E/wHgAQAC/wH+AQMF/wHA AQMBAAEHA/8B8AEPBP8B+AEDAv8B/gEPBf8B4AEDAYABDwP/AfABDwT/Af4BDwL/Af4BHwX/AfgBBwHA AR8D/wHwAQ8I/wH+AX8M/wHwAQ8W/wHwAQ8W/wHwAQ/4/ws= 17, 17 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC4 fQAAAk1TRnQBSQFMAgEBDAEAASgBAAEoAQABOAEAATgBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwAB4AMAAeADAAEBAQABCAYAAcQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/ AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/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/AP8AOgAC9AP/AQAD/wEAAv8CAAL/BgAC/wIAAf8CAAL/AQAE/wIA A/+3AAG8Au8B8gL/AvQC/wL0Av8C9AL/AgAC/wH0A/8B9AL/AfQC/wT0Av8C9AL/ewAy/wkAAfMC8AEH AfMB8QIHAfAB8gG8AQcC8QIHAfMB/wIAAf8B8AEHAbwB8QG8AQcB8wG8AQcBvAHxAbwDBwG8AfEBvAEH AfAB/3oAAf8B8wG8AfQB/wHxAbwB8gHxAQcB8QHwAQcD8AHxAQcB8wH0AfEB8gHzAfAC8QHwAvMBvAHx Af8B8QG8AfABBwHxAf8B8wHwA/EB9AHxAQcC8wHwAfIB/wkAAf8B8AH0AQcB8wHwAfQB8QHwAfIB8QHy AQcB8QHyAe8B9AH/AgAB/wHwAfQCBwHyAe8BvAHyAfABvAHxAvIBBwG8AQcB8QHyAQcB8QH/egAB/wHx Ae8B8gH/AfEBBwHzAfAB9wHzAQcB7wHyAvEBBwGSAfECvAHxAQcB8QH0AfMB7wEHAbwBBwG8AfABBwLy Ae8B8QHyAe8B8gH0AfEB7wIHAe0B8gK8AfQB/wkAAf8B8AH/AQcB9AHxAf8B8QHyAfQB8QHzAQcC8wHv Af8EAAHxAf8CBwH0Ae8BvAH0AvAD8gEHAfQB/wLzAe8B8nsAAfQB8AEHAbwB9AHyAQcB8QEHAZIB9AEH AfcB8QHzAfQBvAHtAgcB8wHyAe8B9AEAAf8B8AIHAu8BBwHyAf8B8wHvAvEB9wH/AQAB9AHwAQcBvAHs AgcB9AH/CgAB/wHwAf8BBwH0AfEB/wHxAfIB9AHyAfMBBwLzAe8E/wEAAfEB/wIHAfQB7wG8AfQC8ALy AfMBBwH0Af8C8wEHAfIKAAL/AvQX/wL0Av8BAAX/AQAC/wH0Av8BAAP/AQAE/zwAAf8B8gHvAfMBvAHz AfEBvAIHAZIB9AG8AgcB8gH/AfACBwHvAfIB8wHvAfQBAAH/AfEBvAEHArwBBwH/AQAB8wHvAfIB9AGS Af8BAAH0AfECBwHvAQcB7wHyAf8KAAH/AfAB/wEHAfQB8QH/AfEB8gH0AfIB8wEHAvMB7wH0AfEB7wEH Af8B8QH/AgcB9AHvAbwB9ALwAvIB8wHtAe8B8gLzAQcB8goAAf8BvAHvAQcB9wHxAbwB9wPvAfEBkgH3 Ae8BBwHzAQcB9wG8AfMB9wLvAfcB8ATvAfMB/wHxAZIB7wHzAv8BBwHvAgcB8gH0AQcB9wHyAf8CBwH0 Af88AAH/AfEB8AH/AfEBvAHwAbwB9AHxAZIB9AG8Ae8B8wHyAf8B8AGSAfMCBwHxAfcB8QL/AbwB8QHw Ae8BBwHvAfMB/wHzAe8B8gHwAe0B8wH/AfQBvAHxAbwB7AHzAe8BvAH/CgAB/wHwAf8BBwH0AfEB/wHx AfIB9AHyAfMBBwLzAe8B9AHyAfAB8gH/AfEB/wIHAfQB7wG8Af8C8ALyAfQB7wHxA/MBBwHyCgAB9AHw AfQB/wLvAfMBvAH0Af8B8AH/AQcB8QH0AQcB8QHzAQcC9AEHAfIB/wHyAfEB8AL/AfAB8QH/AQABBwHw Av8BvAEHAv8B8wEHAfMB8QHvAf8B8AG8AfQIABD/AQAF/wIABv8CAAX/AQAJ/wYAAf8B8gHvAfAB/wH0 Au8BBwHyAfAB9wHyAQcB9wHwAQcB8gEHAfcB8AEHAfEB9AHxAQcB8gHwAbwB8wHxAe8CvAEHAfMB8gHv AfAB8wHwAbwB8gLwAfQBvAHtAfABBwHyAf8KAAH/AfAB9AEHAfQB8AH/AvEB9AHxAfQB7wHyAfMB7wH/ BAAB8QH/AQcB7wH0AQcB7wH/AvAC8gHzAQcB8gPzAQcB8gH/CQAD/wHzAe8BvAH0AQcC8gHzAQABBwHx AfQBvAHyAfMBBwL0AQcB8AHzAfAB/wH0Af8B8gG8AfIB/wEAAQcB8QH/AfQBvAHyAgAB/wLwAfEB7wHy AQcB8gH/CAAB9AHzAvIC8wL0AfMC8gH0Af8B8wHyAfQB/wHzAfIB8QHzAv8BAAH/AfMC8gHzAf8BAAH/ AfQD8gH0Af8B9ALyAfMC9AHzAfIB9AH/BQAB/wHzAfIB8wH/AfQC8QHyAfMC8gHzBPIB8wHyAfEB8gHz Af8BAAH/AfMC8gL/AfMB8QHyAf8B8gHzAfIB8QH0Av8C8gHzAf8B9AHyAfEB8gHzAf8LAAH0AbwB9AEH AfMBvAH/AfEBvAHyAfEB9AHvAfQB8wEHAf8DAAH/AbwB/wHwAQcB9AHwAe8B/wPxAvMB7wIHAfEB9AEH AfAB/woAAfQBvAHvAfIB/wH0AQcBvAEHAfIBAAIHAbwBBwH0AfMBBwL0AgcB8AHvAf8B9AG8AQcB8QL/ AQABBwHxAf8B8gHvAfMCAAH/A/EB7wHwAbwB8QH/CAAB9AG8AgcB8AEHAbwB8gMHAfMB8QEHAbwB8wHx AQcBvAHwAbwB8QH/AQAB9AHwAgcB8QL/AfIBBwHwAfECBwLyAQcB7wG8AfIB8AEHAfAB9AH/QwAB/wHz AfQB8wH0AfMC9AHzA/QB8wP0Af8DAAH/AfMB9ALzAfQC8wb0A/MC9AHzAfQB/wkAAf8B8AG8AfMD9AEH AvQB8wH/AQcBvAHxAQcB9AHzAQcC9AEHAfIB/wHxAf8CBwP0Av8BBwHwAf8B8wG8AfEC/wH0AQcB8gHx Ae8B/wHwAbwB/wkAAfEB8gHwAfQB8AEHAfQC8QHwAfMBvAHwAvQB8AEHAfQB/wHzAbwB9AEAAf8B9AK8 Af8BAAHzArwB9AH/AfMB8AHvAfQB8AEHAfIB8QHwAfEB/3gAAf8B8gG8AfIBBwHxAfIBBwLwAQcB9AIH ArwB9AHxAbwB8gHzAe8BvAHxAQcB9AIHAfICBwG8AfEB7wEHA/ABBwLyAQcB8AH0AfAB7wHyAQcB8AH/ CQAC8gG8AfMCvAH0AvEBBwK8AfMB/wH0AfIBBwH/AQAB/wG8AfQCAAH0AbwB8AL/AbwB8QHwAf8BAAH/ AfEBBwHyAfACBwHwAQcB/3kAAv8B8gLwAfQB8wLyAfEB8gH/AvEB8gL/AfMC8gH0AfEB8gLxAv8B8QHw AfEB8gHwA/IB8QHyAf8B9AHxAfAB8wL/AfMC8QHzAf8KAALyAe8BvAEHAfMB/wLxAQcB8AEHAfQB/wH0 AfIBBwH/AQAB/wG8AfQCAAH0AbwB8AL/AbwC8QH/AQAB/wLxA/ADvAH/tAAC8gEHAbwBBwHyAf8C8QHw AfEBBwHwAf8B9AHyAQcB/wEAAfQBBwHzAv8B9AG8AfAC/wG8AvAB/wEAAf8B8QHwAfIB8QG8AvEBBwHy HQAC/wH0AfID8QHzA/8rAA3/UwAB/wHxAfIBvAHzAbwB8QH/AvEB8AHzAbwB8QH/AfMB8gHvAv8B9AEH AfIBvAHyAfMBvAHwAfQB8QEHAfABBwH0Af8B8QHwAQcB9AHwAQcB8gLxAfIZAAL/AfQB8gEHAewBEgEV AUMBEAERARQBbQHtAbwB8wL/JQAE/wH0AfEBvAHvAZIB7QHsAe0B9wEHAfAB8wH0Av9QAAH0AbwB8AHv AQcB8AHzAfQBvAHwAQcBvAHwAfMB9AG8AfAB7wHyAfQB8QEHAfABBwHvAbwCBwK8AfMB8QK8AfABvAHx AfQB8wG8AgcBvAHwAf8XAAL/AfQB8AHtAeoDEgETARQBFQNDAREBQwESAZIB8QL/IgAC/wH0AfEBBwHs AW0BEwFDAhEBEAIPARABQwHqAe0BvAH0Av9OAAH0BPMB9AH/AfQB8wHyAvMB9AH/AfQB8wHyAfMC9ATz AfID8wLyAv8B8wLyAfMC/wXzAf8XAAH/AfQB8AH3AuwB7QLsAesB6gESAxQCFQFDAREBEAETAe8B8gH/ HwAD/wHyAe8B7AFtAuoBEgETAhUCEQMPAQ4BDwFDAesBBwH0Af8pAAP/AQAD/18AAf8B8wEHAfcB7wEH Au8B7QLsAesB6gESARMDFAEVAkMBEQFDAesB8AL/HQAB/wH0AQcB7QPsAesCbQHqAm0B6gESARUBQwEQ AQ8DDgFDAewB8gL/HAAC/wcAAv8B8wHxAf8BAAH0AfEB8wH0Av8GAAL/UwAB/wHzAe8BBwS8AQcB7wL3 AewB6wFtAeoBEwMUARUCQwEQAREB6gG8Af8cAAH/AfMB7wHtAfcCkgPtAewBbQESAkQBEgHqAewB6wES AREBDwIOAQ8BbQHwAf8cAAHzAfIB/wQAAf8B9AEHAesBSgHrAfMBAAG8ARQBEgHsAQcB9AH/BAAB/wG8 Af9SAAH/AfQB7wEHBPAC8QEHAbwB8AG8Ae8B7QFtAhIDFAEVAkMCEQEUAbwB/xoAAf8B8wL3A+8CBwHs AUQCHgYLAREBbQHsARUBDwMOARQB8AH/GwAB8wHsAfMB/wIAAf8B8AFEAiMBIgFtAfMBAAEHAyIBEAHr AfEB/wMAAfMB7AH/UQAB/wH0AfcBvAHxAvAB8QHyAbwB8QH0A/8BAAH/AQcB6wHqARICFAIVA0MBEQEU AfIB/xgAAf8B9AL3AgcCvAGTAUUB6QEBAR8DAQIeBAsBDwHqARMBEAMOARQB8QH/GgAB/wFKAe0B8QL0 ARwBIwFLAUUCIwFtAfMB/wEHBSIBFAEHAvQB8QHrAe8B/1EAAf8CBwHwBPEB8AHzA/8EAAH/AfIB7AHq ARMDFAIVAkMBEQFtAfMB/xYAAv8B7wHsAe8BBwG8AQcBbwJFA+kDHwIBAUQCHgMLAUMBFAEQAw4B6gHz Af8XAAH/AQAB/wEcAUQBEgHrAW0FSwEjAUoB8QH0Ae8EIgJDAUQB6wFtARQB6wHzAgAB/ycABv8hAAH/ AfIB9wLwAvEB8AHxAfQC/wcAAf8B8QHrARIBEwMUARUDQwERAfcB/xYAAf8B8AHsAe0B9wIHAW8CRgIg BOkCRgFFAUQBIwIeAwsBEAFDARADDgHsAfQB/xUABP8B8wFzAiMBSgF0AZMBHAFSAksBSgHsAe0BEgIi AUQBbgHsAW4BRAIiAW0BvAH/AQAD/xsAAv8C9AL/AgAD/wHzAfIB8QHyAfMB9AP/HgAB/wHvAQcBvAHw AfEBvAHxAfQC/wkAAf8B7wFtARIBEwMUAhUCQwESAfEB/xQAAf8B8wHsAesB7ALvAW8CRgMgAekCRQFG AUUCRAFDAgsCHgMLAQ4BDwMOAUMBvAH/FQAB/wG8AfMC/wHyAW4BRAFzAbwC8QGZAUwBSwFzAhwBbQIi AW4BvAHyAfAB6wEiAUQB7wH0Av8B8wHxAf8aAAH/AfMBBwH3Ae0B7wHyAf8B9AHxAQcB7QFtAxIBbQHs Ae8B8QH0Av8bAAH/AfIB7wK8A/AB8wL/CwAB8gHsAW0BEgETAxQCFQFDARUBkgH/FAAB/wEHAW0B6wHt Ae8BbgFFAUYBQAMgAekBHgJFAUMCAAEOAQsBAQJEBAsBDgEPAw4B6wH0Af8UAAH/Ae8B7QHyAfQB8wHs AUoBBwHyAvQB8AJLAXMB9wHvAewBIgFEAe0B8gL/AfIBEgFEAe8B9AH/AfEB7AHzAf8WAAL/BPMB8gEH AW4BRAFtAe8B6wESARUBEQEQAhEBIgEQAREBFQESAe0B8AH0Af8aAAH/AQcB9wEHAbwB8AEHAfMC/wwA Af8B9wHrAW0BEgEUAhMBFAIVAUMBbQHzAf8SAAH/AfMB7AHqAesB7wFuAUUB6QIgASUBIAElAUUDRAEO AgsBAAEeAR8BRQERAR4ECwQOARUBvAH/FQAB8wJKAewB6wFEAewB8QH0Av8B8wNLAVEBcwFEASMBSgHv AfMD/wEHASIB6gHsAesBEgEcAf8XAAH0AfcB6wHqAesB7AEHAfMB8QFEAUMBFQFDAREBQwJEAeoB6wHt AZID9wHsAW0B7wHzAf8ZAAH0AfcB7wEHAbwBBwHxAv8NAAH/Ae8B7AHrAW0DEgETARQCFQETAQcB/xIA Af8B8ALqAesB7wFEAekEIAElAUYBbwFEAg4BAAELASQCCwHpAUUBEQIeAwsEDgEPAe0B/xUAAf8BBwFE AiIBRAEcAfMB/wIAAfQBHAFLAZkBBwG8ARwBRAFLAbwB9AH/AgAB8wEVAiIBRAEcAfMB/xcAAv8B9AG8 AW4CRAG8AfAFRAFuAe8BBwHxAfMC/wMAAf8B9AG8Ae8B8gH/FwAB/wHxAe0B7wEHAbwB7wH0EAABBwLs AesDbQETAhQCFQH3Af8SAAH/Ae8BFAETAesBEgEeAR8DIAFGAUUBbwFFAUMBDwIOAQsB6QEeAQsCRQEL AQEBHgQLBA4BbQHzAf8UAAL/AQcBSgEiAUQBBwL/AgAB/wGZAUsBdAEHAfABkgFEAW4B8AL/AgAB9AHs ASIBSgHvAfMC/xkAAv8BvAFuAUUB6gFEAUUBRAFFAW4B7wHwAfMB9AHzAfIC8QHyAfQC/wEAAf8B9AHz Af8XAAH/AfAB7AH3Ae8CBwP/DQAB/wHvAe0C7ALrAm0BEgMUAe0B9BIAAfQB7AEVARQBbQIeAQEB6QIg AUYBRAERAUQCRQFEAQ4BAAEfAQEBAAELAREBCwEBAh4ECwEPAg4BFQHwAf8UAAP/AfACSgHwAf8DAAH/ AbwCSwJzAksBdAHxAv8CAAH/ARwBFQHtAfMC/xsAAf8B8wHtA0UBSwFMAZMBvAHyAfQB8wG8AewBEgET ARIBbQHtAbwB8wL/GgAB/wG8Ae0D9wHxA/8MAAL/Ae8D7QHsAusB7AHqARMCFAHsAfQSAAHzARMBFQEU ARMBCwEeAQEBHwHpASABRgFFAUQBRQFGAW8BbgEQAQABAQHpAR4CAAEeAgECHgMLAQ8CDgFDAQcB/xUA Av8B9AFtAUoB8QH/BAAB8AFLAXQBvAEaARwBSwEcAfIC/wIAAf8B7wFDAQcC/x0AAfQB7QFEAUUBTAF0 AZkB8AHzAfQBvAHrARQBbQHsAe8BBwK8AQcB8AHzAf8aAAH/Ae8B7AHtAfcB7QHzAf8B9AHzAf8LAAH/ AfIC7wH3AZID7AHvAesB6gESARMB7AHzEQAB/wHyAREBQwEUARUBCwEeAQEBHwHpAiABRgHpAkYBbwFE AQ4BAAHpAUABIAIBAekCHwEBAR4DCwEOAg8BQwHvAv8WAAH/AW0BEwHwAf8EAAHxAUsBcwEHAfAB7QFL AZkB8wH/AwAB/wHvAUMBBwH/HQAB/wHwARIBRAFFAW8BGgHwAvQB7wESAW0B9wG8AfIB9AT/AvQB/xoA Af8B7wTsAfQB/wHwAe8B8wH/CAAC/wH0AQcB7wEHAe8B9wGSAe0B7AG8AesBbQLqAewB8xEAAf8B8AEQ AREBFAEQAQsBHgEBAh8EIAFGAW8BRAEPAQABCwVGAiABHwIBAR4CCwEOAg8BQwH3AfQB/xYAAf8B7AFE AQcB/wQAAfICSgFuAXMCSwG8AfQB/wMAAfQB7QFEAbwB/x0AAfMBbQFDAUQBRQGTAbwC9AHvAUQBbQHv AfMB9AT/AwAB/xsAAfQB9wHrAuwB6wH0Af8B8QHsAfcB9AgAAv8B8AHvAbwBBwHvBPcB8QHsAesCbQHs AfMRAAH/AbwBDwERARUBDwELAR4CAQEfAukBIAFGAW4BRAEOAQABCwFFAUYBbwFGAUUBRgMgAekBAQEe AgsBDgIQARUBkgH0Af8WAAH/Ae8BIgGSAfQEAAHzAesBSwHvAbwBHAFLAbwB9AH/AwAB9AFtARIB8gH/ HAAB/wFtAREBQwFEAW4BBwH0Af8BBwJEAe0B8wP/IgAB/wHvAm0B6wFtAfMBAAHzAe8B7AHtAfQB/wQA Av8B9AG8Ae8CvAIHA+8BvAHyAuwC6wHtAfMRAAH/AbwBDwEQAUMBDwILAR4CAQHpAUUCRgFuAREBDgEL AUYBEQEQAUUBRAELAekCIALpAR8BAQEeAQsBDgEQAREBFAHvAfQB/xYAAf8B8AEiAW0B8gH/AwAB9AHs AW0B8gH0AQcBSwG8Av8CAAH/AfABQwHsAfQB/xwAAfIBEAJDAUQBbgG8Af8B9AFuAkUB7QH0Af8kAAH/ Ae8BbQHrAW0B6wHxAv8B8AHvAewBbQG8AfQC/wL0AfEC7wLxAbwDBwG8AQcC8QPsAesB9wH0EQAB/wHw AQ4BDwERAQ8CCwIeAgEBRQFEAUYBbgERARABRQFvAW4BQwEQAQ8BCwFFAUYCIAHpAR8BAQEeAQsBDwIR ARMB7wH0Af8XAAH0AesBQwHvAf8DAAH/Ae0BbQHzAf8BvAFLAbwC/wIAAf8B7AFKAbwB/x4AAQcBFQFD AkQBbQHwAfQB8AF0AUsBbgG8Av8jAAH/AbwBEgJtAeoB7wH/AQAB8wIHAfcBbQHsAe0C7wL3AbwB8wHy AfEB8AEIArwC8AH0AQcD7QHsAe8B9BEAAf8B8gIPARABDwMLAh4CAQELAUQBEwEPAQ4BRQF0AW8BEwFE AkUCRgIgAekBHwEBAR4BCwEQAkMBEgEHAv8XAAH/AQcBRAESAfAB/wIAAf8BHAHqAfMBAAG8AXMB8AL/ AQAB/wEHAUQB7QHzAf8eAAH/AfcERAFtAfAB9AG8AZMBSwFuAQcB9AP/AwAD/xoAAf8B8QHqARMBEgHq AewB9AL/AfEB7wEHAbwBBwLvAQcBvAHyAfMC8gHxA/AB8QG8AfIB9AP3Au0BBwH/EgAB8wEVAw8ECwEe AQEBRQFEBA4BEAEUAW0BFAERBEYCIAHpAR8BAQEeAQsBQwEVARQBbQHwAv8YAAH0Ae0BRAHrAfED/wHv AeoB8wEAAbwBcwHxA/8BvAHqAXMBvAL/HgAB/wH0AesCQwJEAesB8AHzAfABkwFuAUoB7QEHAfIB9AL/ AfQB8wH0Af8bAAHzAesBFAETARIB6gHwAf8BAAH/AfAB7wK8AfAD8QHwAfEC8gHxAfAB8QHyAfAB8QH0 AfIB9wLvAvcB8AH/EgAB9AHrAw8ECwEeAUQBRQFEAQsCHgJEAREBDwEOAREERgIgAekBHwEBAR4BCwIU ARMB7AHyAf8ZAAH/AfIBcwFEAW0BvAH0Af8BBwFtAfMBAAG8ARwB8gH/AfQB7wFLAXQBvAH0Af8gAAH0 AewBEQFDA0QBbgEHAfIB8QEHARwBSwHqAesB7AGSAfcB7wHxAfQB/xsAAf8BkgEUAhMB6gHtAfQB/wEA Af8B8QEHArwB8ALxAfAF8QHyAfAB8QH0Af8BBwH3A+8BBwHzAf8SAAH/Ae8BDgIPAQ4ECwEjAUQCCwEf A0UBEAEAAQ8CRQFGARcBRgIgAekBHwEBAR4BEQESARMB6gHvAfQB/xkAAv8B8QFzAUQBEwHtAfAB7wHs AfMBAAG8ARwB8QG8AXMBSwGZAbwB8wL/HwAB/wHzARIBRAESBEQBbgH3AfAC8gEHAe8BkgHtAfcBBwHz Av8BAAP/GAAB/wG8AeoBEwISAW0BBwH/AgAB/wHzArwC8APxAfIC8wLwAfIC/wHyAZIFBwL/EgAB/wHw AUMBDgEPAQ4BAAcLAQEBRQFuARUBDgELAkUDRAMgAekBHwEBAQsBFALqAesBBwH/GwAC/wHzARwBSgEV AhQB6wHzAQABvAFLAeoBSgFzAZkBvAHzAv8dAAP/AfMB7QEUAesBBwH3AUQBQwJEAUUBbgHvAfEC8wP0 BP8B9AHwAfIB/xkAAfQB7AEUARMCEgHrAfEB/wIAAv8B8wK8AfAC8QHwAbwB8AHyAfQC/wH0AfcB7wG8 AQcCvAHyAf8UAAH0AesCDgEPAQ4GCwEeAkUBEgIPAUYBRAFDARABDgEBAyAB6QEfAQEBRANtAfcB8gH/ HAAC/wH0AfABHAFKASIBbQHzAQABvAFKAUsBmQG8AfIB9AL/HgAB8wH3AesBEwFuARwBBwHyAfQBEwNE AUUBSwFMAUsBbgH3AbwB8QLzAfIB8QH3AewB8AH/GwAB8AESARQBEgHqARMB6wHyAf8CAAP/AfQC8wHy AvMB9AL/AQAB9AL3A7wB8AEHAfQB/xQAAf8BBwERAw4BAAQLAx4BRQESAQ4BDwFuAQ4BFQJEBCABHwEB AUQB6gHrAuwBBwL/HgAC/wH0AfIBBwHsAfMBAAG8Ae8B8AHzAfQC/yAAAf8B8wG8AfAB8QLzAfIB7QFE Ae0B9wFuAUsCRQJLAUUCRAEUAhMBEgH3AfMB/xwAAf8B7QEUARMCEgETAW0B8AL/AgAK/wHzAZIB7QS8 AQcB8gL/FQAB9AHrAQ8DDgEABAsCHgJEAg4BAAEOAUMBRAHpBCACAQHqAuwB7QHvAfIB/yAAA/8B9AH3 AfMBAAG8AQcE/yMAA/8B8wEHAewB7QEHAfAB8wHxAQcBHANvBG4B7QEHAfEC/x4AAfQB6wITARIB6gEU ARIB7wHyA/8EAAP/AfQBvAHsAfcDvAPwAv8XAAHxARUEDgULAR4CRAERAQ8CDgELAQEDIAHpAR8BHgHq AewBkgH3Ae8BvAH0Af8jAAH/Ae8B8wEAArwB/ygAAf8B9AHzAvIB8wP/AfQC8gHxARoD8AHxAfMB9AL/ IAAB8wHrARQBEwISARMBFQFtAe8B8AHzBPQB8wHxAQcBkgHsAe8DBwG8AvAB9AH/GAAB/wEHARAEDgYL AkQBQwELAR4BCwEfASAB6QEfAQEBRAFtAe0B9wHvAgcB8wL/IwAB/wHvAfMBAALwAf8qABP/IgAB8gHs AxMDEgETAeoB6wHsA+0D7AH3Ae8DBwK8AfAB8wL/GQAB/wH3AQ8EDgEABAsFHgEBAh8CAQFEAesB9wLv AgcB8gL/JQABvAH0AQAB8AHyAf8yAAj/JQAB/wHzAfcB6gESARMF6gJtAesB7AHtAZIB9wTvArwB8AHz Av8bAAH/Ae8BEAUOBgsFHgFEAeoB7QH3Ae8BBwG8AQcB8gH0Af8mAAHwAfQBAAHwAfRhAAL/AbwB7AHq AhIC6gFtA+sB7APtAfcB7wEHAfABvAHxAfQC/x0AAf8BvAEVBQ8EDgQLAUMBEwHrAewBkgHvAQcB8AG8 AfIB9AH/JwAB8wH2AQAB8gH/ZAAB9AHvAesB6gESAuoBbQPrAewB7QGSAe8CvAHwAfMC/yAAAf8B8gHs ARQBEQMPAhACEQFDARQBEwHqAW0B7AHtAe8BBwLwAfIC/ygAAv8BAAL/ZQAC/wG8Ae8BkgTsAZIB9wHv AQcBvAHxAfMB9AL/IgAB/wH0AQcB7AESAUMDEQFDARUBEwESAeoBbQHsAZIB7wK8AfEB8wP/lAAC/wH0 AfIB8QLwAvEB8gHzAvQC/yUAAv8B9AHwAe8B7AHrA20C7AHtAZIB7wG8AvAB8gH0Av+YAAv/KAAE/wHz AfIB8QXwAfEB8gLzAfQD/50ABP8uAAf/AvQG/9MAC///AN0AAf8FAAH/AgAE/wMAAf8EAAH/AwAD/wMA Av8CAAP/BAAB/7QAAf8B9AH/AgAF/wH0AvMB9AH/AQAB/wH0Af8BAAP/AQAC/wH0AfMB9Ab/BPQB/wIA Af8B9AH/ggAD/wIAA/8CAAX/AQAD/wEAA/8BAAP/AQAF/xAAAfIB7wHzAf8BAAH0AfAB8QH/AfIBvALv AQcB8gH/AfEBBwH/AQAB/wHwAbwC/wHxAQcC7wHwAv8BvAHyAfQBvAHwAbwBBwH/AgAB8wHvAfSAAAH/ AfIBvAEHAfAC/wHzAbwB8AL/AfMBvAEHAbwB9AEAAfIBvAHxAf8B8gG8AfAB9AHwAbwC8wG8AgcB8AH0 Af8PAAHzAfEB7wL/AfIBBwHzAfIBBwHwAfMB8gG8AfcB9AIHAfQBAAH0AfMB7wH/AfIBvAHyAfMBvAH3 AfMB9AHvAQcB8AEHAfQB8AEHAfIC/wHwAe8B/38AAf8B8AP3Ae0B7wHyAQcB9wHsAv8B7wL3AZIBBwEA AfcBkgHvAfIBBwH3AewBvAH3Ae0BvAEHA/cBkgHwAf8PAAH/AbwB9wHzAf8B8QG8Af8B8AEHAfQC/wHy AQcB9AEHAe8B8wH/AfQB8wHvAf8CvAH0AQAB8QEHAfIB9ALvAQcB8gH/AfQCBwH/AfMB8AHxAf8NAAH/ AfMC8gHzAf8B8wH/AQAB/wL0AfIC8QLzAvEB8gH0AfIB8QHyAvQB/wEAAf8B8wH0Av8B9AEAAf8B8wHx AfIB8wH/EgAD/wEAAv8CAAP/AgAD/wEAA/8CAAL/AQAC/wIAAv8BAAL/FQAB8wHvAQcB9wIHAfcDBwHs Av8B7wMHAfcB/wHvAQcB7wHwAgcB6wIHAfcDBwLvAbwB9BEAAfQB8AEHAfIBBwHyAv8BBwH/AgAD/wEH Ae8B9wLvAfMB7wH/AgcB/wEAAfMBvAHyAfQB8AHzAu8C/wHxAQcB8gHxAe8B/w4AAbwBBwK8Ae8B8AH3 AQcB8QG8AQcBvAIHAbwB8AG8AQcBvALwAQcDvAHvAfQBAAHxArwB/wHyAbwBAAH/AfABBwK8Af8SAAHz AZIBvAH/Ae0BBwL/AQcB7AHxAQAB/wHyAZIB8gH/AfAB7AHzAQAB/wG8Ae0B8wHtAQcC/wEHAe0B/wH3 Ae8B/xQAAfMCBwGSAe8BBwLvAgcB7AH/AfQD7wEHAewB/wIHAe8B8AIHAesCBwH3AwcBkgHyFAABBwH3 AQcBvAH0Av8BkgH/AgAB/wH0Af8BBwG8AQcCvAHzAe8B/wIHAf8BAAHzAbwB8gH0AgcBvAHvAfEBAAH0 Ae8BkgEHAfIOAAH/AQcC8wEHAfcB9AHwAfcC7wHxAfIBBwIAAfQBBwHzAgABvAHvA7wB9wHzAfABBwHv AbwB/wHxAQcBAAH/AQcB9wHwAfEB/xIAAfEBvAHvAfEBBwHvAf8B8AHvAbwBBwEAAf8B8AH3AfEB/wHv AQcBkgHxAQcB7wHtAbwBBwHvAf8B8AEHAfcB8QEHAe8B/xQAAfMCBwGSAbwC8AHxAgcB7AH/AfIBBwL3 AQcB7AH/AgcB7wHwAgcC7AEHAe8B8AIHAZIB7AEHAfQSAAH0AfEB7wHxAf8BAAHwAe8BBwLzAQcB7wH/ AgcB9AEAAfQB8wHvAf8CBwH/AQAB8wG8AfIB9AHvAbwC8AHxAQAB/wLxAe8B9A4AAf8BBwLyAQcBvAH/ AfQC7wG8AfQB8gEHAgAB9AEHAfMCAAG8AQcDvAH3AQcBvAH0AQcBvAH/AfEBBwH/AfQB8AEHArwB/xIA AfEBvAHvAfEBBwHvAfMBBwK8AQcBAAH/AfAB9wHxAf8B8QG8Ae0C7AEHAe8B8AG8AfcB8QLvAfMB8gEH Ae8B/xQAAfMCBwGSAf8C9AHzAgcB7AH/AfABBwHvAfcBBwHsAfQCBwHvAfACBwHvAQcB7wGSAfEDBwH3 Ae8B8xIAAf8C8AH0Af8BAAH/AfEB7wH3Ae8B8AHzAf8CBwH/AQAB/wHyAfAB/wK8Af8BAAHzAQcB8wH0 AQcC7wG8Af8CAAH0AbwB8gH/DwABvAEHAbwCBwH/AQABvAHvAfIB/wHyAfECAAH0AfAB9AIAAbwBBwG8 AfAB8QEHAbwC/wK8AfABBwH3AbwB8gEHAe8BvAHwAf8SAAHxAbwB7wHxAQcB9wEHAe8BBwG8AQcBAAH/ AfAB9wHxAv8BvAHvAfcBBwHvAfIB8QG8AfcB7QHvAfAB/wHyAQcB7wH/FAAB8wEHAbwBkgG8AvcBvAEH AbwB7AH/Ae8BBwLvAQcBkgHxAgcB7wHwAbwBBwHtAe8BBwHtAwcB7wG8AfIB/xIAAf8B9AHzAf8DAAH/ AvMB8gH0Af8BAALzAf8BAAH/AfMC/wHzAfQB/wEAAf8B8gL/AfMC8gH/AwAB/wHzAv8PAAH0A/IB9AH/ AQAB/wHzAf8BAAH0Af8CAAH/AfQB/wIAAfMC8gHzAfQB8wH/AQAB/wL0BPIB9AHzAvIB8wH/EgAB8QG8 Ae8B8QEHAewB9wG8AQcBvAEHAQAB/wHwAfcB8QH/AQABvAHvAe0BBwHvAfQB8QG8AQcBvAH3AfIB/wHy AQcB7wH/FAAB8wEHAbwB7AGSAQcB7wMHAewB/wHvBAcB7wMHAe8B8AG8AQcB6wGSAQcB9wMHAZIB7wHx AfQTAAL/IwAB/0wAAfEBvAHvAfEBvAHvAQcB8wK8AQcB/wHyAQcB9wEHAfIC9AEHAe0B7wHwAf8B8QEH AfcBvAH3Ae8B9AHyAQcB7wH/FAAB9AK8AfcB7wIHAfIBvAEHAewB/wHvBQcB9wMHAfABvAEHAe8B9wIH AfIBvAEHAe8C9wHwAf+EAAHxAbwBBwHxAbwBBwHwAf8B8AG8AgcBkgHvAQcB7QGSAe8B/wEHAbwB7wHz Af8B8QEHAe8B8gG8AZIBvAHyAQcB7wH/FAAB/wH0AbwCBwG8Af8B9AG8AgcB9AIHAfEB8gIHAfECBwHx AfMBvAMHAbwB9AH/AfAEBwHzAf9cAAL/JgAB8wEHAfMB9AK8Af8BAAHxAQcB9AYHAfIB/wHyAbwB8AH/ AQAB9AG8AfEB/wHzAQcB8gH0AbwB8QH/WgAH/zIAAf8B8wHtARIBBwH0Af+bAAP/AfQB8gHwAe8B9wLt AfcB7wG8AfMB9AL/KgAC/wHyAe0BFAFDARUBQwHqAQcB8wL/lgAD/wHyAQcB7QESARUBQwEQAQsDDwER ARQB6wHvAfIC/yYAAf8B9AHxAe0BFAFDARQBEwEUARUBQwEVAW0B7wHyAv9iAAX/AQAE/ycAAv8B8gHv AewFRAIeBgsBEAESAfcB8gL/IgAB/wHzAbwB7AETARQEEwYUAeoB7wHyAv9gAAH/AQcC7wHzAf8BBwLv AfMB/yUAAf8B9AG8Ae0BbgZFBEQGCwFDAW0BBwH0Af8eAAL/AfMBBwHsAxIBEwMSAhMEFAETARQBFQHq AZIB8AH0Af8nAAL/AvQC8wH0A/8tAAHzAesB6gHrAfAB8wISAesB8QH/JAAB/wH0Ae8BbgVvAZMBHAHv AQcBvAIHAZIBbgFEASIDCwERARQB9wH0Af8dAAH0Ae8B7APrAW0B6gISAeoCEgITAxQCEwEUARUBFAES AewBvAH/JAAB/wHzAQcB7QHrAW0C6gHrAewBBwHzAf8sAAH0AewBbQHsAbwB8gETAW0B7QHyJAAB/wH0 ARwCbwIWAZQCBwHxAfMC9AT/AfQB8QHtARUECwFDAe0B9B0AAewB6wTsAesD6gFtARIB6gITAhQBFQEU ARMBFAITAhIB6gHzIgAB/wHwAe0BBwHsAREEEAERARIB7QL3AbwB/yoAAfQB9wFtAewB8AHyARQB6gGS AfMjAAH/AfQBkgFuAhYBlAEaAbwB8QHzAfQE/wYAAfMBbgMLAQwBEQGSAf8cAAESAe0B9wGSAuwB7QFt AeoBbQLrAe0BEgETARQDFQEUARMBFAETAhIB6gHzIQAB8wHsAe0B9AH/AfcFEAFDARIBBwH/AfEB6gHs AfEB/yQAAf8B8QHwAbwBBwHsAW0B7AHwAfIBFAESAewBBwO8AfMB/x0AAv8B7wJvARYBlAK8AfIB9Az/ AQAB/wHvAUQDCwFDAe8B/xsAARIB7ATtAuwB6wPsAe0B6wISARQBFQJDAxUBFAETARIB8x4AAv8B8AHt AQcB/wEAAf8B7wEPBBABFQFtAQcB/wEAAfQB7AESAQcC/yEAAf8BBwLrAuoBbQHrAe0BvAHyARQBEwEU ARUBQwIVAewB9BwAAv8B8AFuAW8BFgGTAbwB8AHzAfQC/wrzAv8BAAH/AQcBRAILAREBFQHxAf8aAAET AuwBkgH3ApgB9wKSAfcC7wEHAewDEwRDARUCEwESAfMeAAH/AbwB9wG8AfQCAAH/Ae8EEAERARUB6wG8 Af8CAAH0AZIBEgHvAfQB/yAAAfMB9wLvAfcB7QLsAZIBvAHyARQDEwEUAxMBBwH/GwAB/wHzARwBRgFv ARYBBwHwAfMC/wEAAbwB7ANuAewCbgLrAewB8AH/AgAB/wEHAUQCCwERAewB9AH/GQABFAHrAewBkgKY AQgBBwLvAQgB9wHyAfQBBwHqAuwBEwIRAUMBFAITARIB8x0AAf8BvAEcAbwB9AH/AgAB/wH3BBABEQEV AesBvAH/AgAB/wHzAewBEwEHAf8fAAH/Ae8B7QHvArwBBwH3Ae0B9wG8AfIBEgHqAm0B6gITARQB6wHz Af8aAAH/AbwCRgFvAZMBvAHzAv8CAAH3A28GbgHsAfAB/wMAAfQBkgFEAgsBFAG8Af8ZAAEVAeoB6wHt AQcBmAEIAbwB9wHvAQcB9wH0AQABBwHsAvcBEgIRARUCFAETARIB8x0AAfIB7QEHAfIB/wMAAf8B7wQQ AREBFQHrAbwB/wMAAf8B8AHqARIB8B4AAf8B8QHsAe0BBwHwAbwB8AEHAZIB9wHwAfIBEgHsAe8BvAEH AeoDEwHvAf8ZAAH/AfQB7QJGAW8BBwHzAv8DAAHzBbwFBwHzAf8DAAH/AfMB6gEeAQsBQwHsAfQZAAER ARIBbQHtAZgBCAHxAfABkgHtAfcB7wH/AQABBwH3AesBbQETAhUCFAEVARQBEgHzHAAB/wHsARwBvAH0 Af8DAAH/Ae8CEQIQAREBFAHsAbwB/wQAAfQBkgFDAW0B9B0AAfQBkgHrAe0B8QEHAfQB/wHzAvcB8AHy AW0B9wHyAv8B9wITARQBbQHyAf8YAAH/AfABRQJGAZMB8QL/BAAB7wFuBEUD6gJtAbwB/wQAAf8B7wFE AgsB6gHxAf8YAAEVARMBEgHsAQgB8gH0AfACCAH3AfMB/wEAAfQBvAHsAfcBbQHqAe0B6wETARQBEgHq AfMcAAEHAesBvAHxAf8EAAH/Ae8BFQJDAREBQwFKAewBvAH/BAAB/wG8ARMBEQEHHAAB/wHxAeoB6wHv AQcB9AIAAfQB7wH3AfAB8gHrAe8B9AIAAfQBEgMUAfcB/xgAAf8BBwJGAW8B7QH0Af8FAAH3ARYIkwHt AbwB/wUAAfMBRAILARUBBwH/GAABFQESAeoB7AFtAfcB8wHyAfcB8AHvAfEB/wEAAfQB9wIHAe0B7wEH AW0CEwESAeoB8xsAAf8BFAHrAbwB8wUAAf8B7wFKAhQCFQFKARwBvAH/BQAB8wHrARABFAH0GwAB/wHs AesB7AK8Af8CAAH/AbwB7wHxAfIB7AEHAf8DAAEHARIB6gESAW0B8gH/FgAB/wH0AZMB6QFGAW8BBwH/ BgAB9AHzB/IB8QHyAfQB/wUAAf8B6wILAUMB9wH/GAABEgHqAXIB7AGSAesBBwHwAe8B8QG8AfIB/wEA AfQBBwHxAbwB7wHxAe0B6gETARICbQHzGwABvAFDAesBBwH/BQAB/wG8AW0ESgHrARwB8AH/BQAB/wHs AhEBvAH/FQAF/wH0AvACvAH0AwAB/wHzAfEC9AHxAfIB/wMAAf8B9wHvAQcBvAH0Bv8RAAH/AfMBbgHp AUYBbwHyAf8GAAH0AfME8gXxAfMB/wYAAe8BHgELAREB7AH0GAABFAHqAewB7QKYAewB8QHwA/8CAAP/ AvEBvAHrAewCEgFtAesB8xoAAf8B7AFDAXIBBwH/BQAB/wHyARwCcwFyAesBHAEHAfIB/wUAAf8B7QER AUMB7QH/FQAB8wLvAbwB8AHyAfMB9AHzAfQB/wQAA/8BAAL/BAAB/wT0AfMB8QG8AQcB7wHxAf8RAAH/ AfMBRQHpAUUBbgH0BwAB7wFuBkUDbgEHAf8GAAHxAUQBHgERAesB8xgAARQB6gLsAfcBBwHtAfIB9AH/ BwAC/wHvAQcB9wFtAeoC6wHzGgAB/wESAREBbQEHAf8GAAH0AbwBCAGZARwBBwG8AfEC/wYAAe0BEQFD AesB/xUAAfACFAETARIBbQHrAewBkgHvAQcB8QH0AgAB/wH0Af8BAAL0Af8BAAH/AfIBvAEHAfcB7QHs AW0B6gETAhIBBwH/EQAB/wHyAUQCRQFuAfQHAAFuAkYBJQdGAe8B/wYAAfMCHgFEAW0B8gH/FwABFQES AusBbQGSAfAB9AoAAf8C8QHsAW0B6gFtAesB8xoAAfMBFAERAUoB7wH/BgAB/wH0AfIB8AG8AfAB8gH0 Af8HAAHsAhEB6wHzFQAB8AETARIB6gYSAeoB6wHvAv8B8AHtAfIB9AHtAe8B/wEAAbwBbQISBBQCEwHq AewBBwH/EQAB/wHyAkQBRQHrAf8HAAFuB0cCRgFvAe8B/wYAAfQCHgFEAW0B8gH/FwABQwESAW0D6wHy Af8BAAT/AQAG/wHtAewB6wFtAusB8xoAAfIBFAEQARUBkgH/BwAC/wP0A/8GAAH/AesBEAERAesB8hUA AfABEwESAuoBEgLqAW0B6wHsAfcBkgL/AQcB7QHwAfIB7AH3AfQBAAEHAeoBEgTqAW0B6gHrAW0B7AEH Af8SAAHzAUQBHgFEAW0B/wcAAW4JRwFvAQcB/wYAAfMCHgFEAewB8wH/FwABQwETAW0C6wH3AfIC/wEH AewBBwH/AQAB9AHsAe0B8gH/AfMB9wGSBOwB8xoAAfEBFAEQAREB6wHzCAAF/wgAAfMB6gEQAREB6wHy FQAB8AETAxID6gFtAesB7ALvAv8B8AEHAfAB8QG8AQcB9AEAAQcD7AHrBW0C6wEHAf8SAAHzAUQBHgFE ARIB8wcAAW4JRwFvAQcB/wYAAfIBRAE+AUQB7AHzGAACFALqAesBbQH0Af8B8gH3AQcB6wHxAf8B7QLs AfcB9AH/AQcBbQTsAfMaAAHxARQCEAESAfAB/wYAAf8B8QHsAeoB6wG8Af8HAAHwARQBEAFDAXMB8hUA AfAB6gLrAuwB9wEHAbwD8AHyAv8B8gHxAvMB8QHzAf8BAAHzAfABvAHwAbwB7wGSBewBBwH/EgAB8wHq AR4CRAHxBwABbgJGBkcBFwFvAQcB9AYAAQcDRAGSAfQYAAEUARMC6gHsAfcB9AH/AbwCmALsAfQB7QGY AQcBvAL/ApIE7AHyGgAB8gEUAhABEQHtAfQEAAL/AQcBcwEcAXgBcgESAe0B8wH/BAAB/wGSAhABQwHs AfQVAAHyAe8BBwG8AvAC8QHyAfMB9AL/AQAF/wH0Av8BAAL/AfQB8wHyAvEC8AG8AQcB7wHwAf8SAAH0 AewCCwFEAfcB/wYAAW4DRgVHARcBFgEHAfQFAAH/AewDRAHvAf8YAAEUARIB6gISAZIB9AH/AfQC7wEH AfAB/wEHAe8BBwHyAv8BBwHsAe0D7AHyGgAB8wEUAhABEQESAfAB/wMAAf8BvAEcApkBeAFzAesB7AEH Af8DAAH/AfEBEgIRARQB7QH/FQAB/wLzA/QB8AEHAe8BBwH0BAAB/wHzAv8C8wH/AwAB/wG8Au8BvAHz Av8C9AH/EwAB/wHvAgsBIgHqAfQGAAFuBEYERwEXARYBBwH0BQAB9ANFAW0BvAH/GAABFQHqARIBEwES AewBvAHwAfID7wHyAfEC7QHvAfAB8gG8Ae0F7AHyGgAB/wESBBAB6wHzAf8CAAH0AhwBmAGZAZgDcwHv AfQCAAH/AfQB7AMVAW0B7wH/FQAE/wEAAf8B7AMSAQcB/wIAAf8BvAHtAfIB9AHtAQcB/wMAAfIC6wHs Ae0B8wH/FwAB/wHwAUQCCwEVAbwB/wUAAW4FRgNHARcBlAEHAfQEAAH/AQcDRQHtAfMB/xgAAUMBEwES AhMDEgJtA+wC6wLtAuwB6wHsAfcB7QHsAu0B8hsAAZIBEQEQAREBEAFDAe0B9AIAAfMB7AFzAhwBmQF4 AXMBHAHvAfMB/wEAAfQBkgETAxQBcwHxGwAB/wHvBG0B8wIAAf8B9wHtAfAB8gHtAQcB8wIAAf8B7AHt AfcBBwG8AfQB/xgAAfQB6wILAUMB6wHzAf8EAAFuBUYCRwFGARcBlAEHAfQDAAH/AfMBbgJGAW8B7wL/ GAABQwUTARIBEwESA+oC6wHtAZgB9wGSAe0DmAGSA+wB8RsAAfIBEQQQAUMB7AHzAf8B8wHsAnMBHAKZ ARwBmQEHAfQB/wH0Ae0BEgJKARQBSgHtAfQbAAH/AfMB7AJtAeoB7AH/AQAB9AH3AZIB8AHyAe0BBwHy AgABvAL3AQcBvAHxAv8YAAH/Ae8BEQILAUQB9wH/BAABbgHpB0YBFwGUAQcB9AH/AgAB/wHvAkYBaQGT AfEB/xkAAUMDEwEUARMB6gETARIC6gFtAusC7QGSAfcB7QGYAQgBmAH3A+0B8RsAAf8B6wYRARIBvAHz ARwB6wFzARwDmQEIAbwB9AHwAW0FSgEcAQcB/xwAAf8BvAHqARIB6gETAe8BvAHvAewB9wHwAfIBkgHv AZIBvAEHAe0C7wEHAbwB9AH/GgAB8wFtAgsBEQESAbwB/wMAAW4C6QVGAUcBFwGUAQcB8wH/AQAB/wHw AUUBRgEXAW8B7wH0Af8ZAAERARQBEgMTARQEbQLsAZIB7ALtAZIB7QGYAggB8AKYAfcB8RwAAfMBQwYQ AREBbQHtAesCcwKZARoBvAHvAewBbQFzAesDSgFzAe8B/x4AAfQB7QESAeoBbQITARIB6wGSAfAB8gHs AfcB7ALrAfcBBwG8AfAB8gH/HAABBwFDAgsBEQESAbwC/wEAAeoCRQVGAUcB4wGUAQcB9AL/AfABbgEX AeMBFgHvAfIB/xoAARUBFAISARMBEgETARIBbQHrAuwB7wEHAewBkgL3AZgECAGYAQcB9wHyHQAB7wFD AhECEAERAUMBFQFDARICcwGZAZ8BGgGZARwBmQEcAnMCcgFzAQcB8QH/HgAB/wHwAewBbQXrAe0B8AHy AesB7AGSAfcB7wH3AQcB8gG8AfQB/xwAAf8B7QILAhEBEgEHAfQB/wHqAkUB6QVGARcBlAEHAfMB9AG8 AW4BFwHjARYBkwG8Av8aAAEUARMBEgHqAxIBbQHrAm0B7AHwAfEB7AL3AZIBmATCAggB7wHxHQAB9AHs ARUBEQEQARECQwEVARQBSgFtAXMBHAGZAsMBoAKZAhwBcwEcAZkBvAH0IAAB9AHvA+0B7AHrAW0B7QHw AfIB6wHtAQcCvAHwAfIBvAHzAf8eAAH0AewBEQELAhEBFAHtAfEBEgEjAUQBRQHpAkYBJQFGARcBlAHv AbwB7wFuARcBFgGUAQcBvAH0Af8bAAEUARMBEgHqARIC6gHrAewB6wFtAeoBbQHsAesCmAH3AZgGwgHv AfEB/xwAAf8B8wHtARQCEQFDAhUBFAFKAW0BcwEcAZkBGgKgARoEmQEIAbwB8wH/IQAB8wHwA7wB7QHr Ae0B8AHyAesB9wG8AfAD8QHyAv8fAAH0AewCIgELASIBQwESAUMCHgFEAUUB6QIlAkYBbwJuAUYB4wEW AZQBGgG8AfMC/xsAARQBEwESBOoE6wHsAm0B7AH3ApgBCALCARsCCAHxAQcB8QH/HQAB/wHyAZIBSgEU AhUBFAJKAXIBcwEcApkDoAGZAZ8BGgEbAfAB8wL/IQAC/wL0AfMB9wHrAe0B8AHyAW0BkgEHAfAB8wL0 Av8hAAH0AZIBQwYLAh4CAQHpBUYBFwHjARYBlAEaAbwB8wL/HAABFQMSAuoB6wTsAe0C7AHtAfcBmAII AsIDCAEbAQcB8QH/HQAC/wHzAQcB7ARKAXICcwIcApkCnwGZAcMB8AHxAfMC/yQAAv8B9AHtAW0B7AHw AfIBbQHtAe8B8AT/IgAC/wEHAUQCEQQLAh4BPgEBAUUDRgHjARYBlAG9AvAB8wL/HQABFAESAuoCEgHr BuwC7QKYAQgBwgIIA8IB8wHvAfIgAAH/AfQB8QEHAhwCcwMcA5kBGgEbAfIBvAHyAfQC/ycAAfMB6wFt AewB8AHyAW0B7AGSAbwB/ygAAfMB7QFEAwsERAJFAUYBbwEWAZQBvQEbAbwB8AHzAv8eAAETAm0C6gES AW0C7APtAewB7QH3AZgECAHCAfMCwgHzAe8B8iIAAf8B9AHyAbwB8AYbAfQB8AG8AfMB9AL/KQAB9AEH ArwC8wEHArwB8gH/KQAB/wHyAfcBbQESA0QB6gJuApMBBwK8AfAB8gH0Av8fAAH3AwcD7wO8AfAB8QHw AfID8wj0AbwB8yQAAf8C9AHzBPEB8gHzAvQC/ysABf8BAAH/AfQD/ysAAf8B9AHxAbwD7wIHArwB8QHy AfMB9AL/KAAC/xD0Av8lAAv/MwAD/y4ABv8E9AT/KwAS/5gACP//AP8A/wD/AIEABP8BAAb/AgAF/wMA Bv8DAA3/tQAB8wHwAfEC/wH0AfEDvAH/AgAB8wHwAQcB8AH/AwAB/wHxArwB8gH/AgAB/wHzAfIB/wHy AfAB9AH/AfEE8AHyAv9FAAH0AfMB9AL/AfQE8wH0BP8B9AHzAvQB8wH/AQAB/wH0AfMB9ALzAfQC/wP0 AvMD/wHzAf9FAAHxAbwB8AH/AfQB8AEHAfEBBwHvAf8CAAHyAQcBvAEHAfMB/wIAAfMB8QIHAfAB/wEA Af8B9AG8Ae8B9AHxAfcB8wH/AQcB7wLzAfECBwH/RAAB/wG8Ae8B8QH/AfQBBwHvAgcB7wHzAfQB7wH0 AfMBBwHvAbwBBwHvAfMB/wH0AQcB7wHwAQcB7wHwAf8B8QHvArwC7wL0AgcB/wsABf8BAAf/AQAT/wEA Bv8BAAj/CQAB8wHwAfEB8gK8AfMB/wG8Ae8B/wIAAfMB7wHyAfAB8QH/AgAB8AEHAfIBBwHxAf8BAAH0 AfABBwHvAf8B8wH3AfQBAAG8AQcB/wEAAf8B8gEHAbwB/0MAAf8B9AEHAfEC/wEHAZIB9AHxAbwB/wG8 AgcB9AG8AQcB8wHxAZIB9AH/AfQB7wHwAf8BvAHvAfMB9AHvAfAB9AHzAfAB7wH/AbwB7wHzAf8LAAH/ AfEBBwHwAv8B8wG8AfEBBwHvAfAB/wEAAf8B8AIHAfQB8wEHAbwB9AHwAgcBvAHyAfQB8QEHAfAC/wHz AbwB8AIHAfQB/wH0AbwB8QHwAgcB9AH/CQAB9AEHAfcC8AH0Af8BAAEHAfcB9AL/AfMB7wHzAfQBBwHz Af8B9AHyAQcB/wEHAfIB/wH0AfAB7wG8AQcB/wHzAfcB9AEAArwB/wIAAf8BvAGSAfQLABH/AQAE/wEA E/8PAAH/AgcB8wHwAbwB8QH/AfIBvAHzAbwB7wGSAfMCvAH0Af8CBwH0AfEB7wHyAf8BvAHvAfIBvAEH AfMBAAH0AbwB7wHyAfcB8gH/DQAB8wHvAv8B9AIHAfQB8AEHAfQD/wHyAbwB8AH0AQcBvAH0AfICvAH/ AfQB8AH0AfMB7wL/AfQCBwH0AfAB8wEAAf8B8AEHA/IB8AH/CgAB8wH0AfMBBwH/AwABBwHvAfcCBwLv AfMB/wEHA/cB7wHzAf8BBwHxAfQB8AEHAf8B8QHvAf8B8wH3AfQBAAK8Af8DAAIHAfMLAAHxBuwB8gH0 Ae0F7AHwAf8BAAHyAe0BBwH/AQAB/wEHBewBBwHyAfcBBwHxBuwB8QH/DgAB/wHzAe8B9wHvAfcC/wHz AwcB8wMHAbwB9AEAAfAB7QHvAfcBvAH0AQABvAHvAvcBvAH/AQAB9AG8AewB9wEHAfMB/w0AAfQBBwH/ AfQBBwG8AQcB9AHwAe8B9AHyAbwB8wHyAbwB8AEHAbwB8wH/AfEB7wH0AQAB/wHzAfIB9AEHAf8B9AEH AbwBBwH0AbwB9AH/AfABvAEHAfIB8wHyAfAB/woAAfMBvAIHAfMB/wIAAQcB7wHyAvMB8AHvAfMB/wHz AQcC8AEHAv8CBwG8AQcB8wEAAfEBBwH/AfMB9wH0AQABvAEHAf8DAAIHAfQLAAEHAu8CBwLvAQcBvAH3 Au8DBwHxAf8BAAHxAu8B/wEAAfQB7wUHAbwB8QHvAQcBvAYHAe8B/w8AAfQBBwK8AQcC/wHzAe8CBwH/ AfIC7wEHAfQBAAH0Ae8B8QHvAfAB/wEAAbwBBwLwAfcB8QH/AfQB8AHvAfEB7wEHAf8NAAH0AQcB9AEH AbwB8AG8AfQB8AHvAfQB8wHyAfQB8wG8Ae8BBwHyAf8BAAHxAe8B9AIAAfMB8gH0AQcB9AEHAbwB8AG8 AfQBvAHzAfEBvAHxAfAB8gHzAfIB8AH/CgAB8wG8AfEB8AEHAfMB/wEAAbwB7wH/AgAB8wEHAfEBAAH/ AbwCBwHzAQAB/wEHAe8BvAHyAf8BAAHwAe8B/wHzAfcB9AEAAbwBBwH/AQAC/wG8AQcB/wsAAQcC7wHz AfQBBwHvAQcBvAL3BAcB8wH/AQAB8QLvAf8BAAH0Ae8B9wHvAwcB8QHyAe8BBwH0AbwDBwLvAQcB/w8A Af8B8QH3Ae8B8gEAAf8B9AH3Ae8B8gL/AQcB9wEHAfQCAAEHAe8BBwHzAgABvAHvAvQB7wEHAf8B9AG8 Ae8B/wHxAfcB8w0AAfQCBwG8AfIB9AHwAfQB8AHvAfQDAAHzAbwCBwHzAf8BAAHxAe8B9AIAAfMB8QHz AgcBvAHyAfQB8AH0A7wB8QH/AfEB8gHzAfIB8AH/CgAB8gG8AfAB/wHwAQcB8wH/AbwB9wH0AgAB8QG8 AfAC/wHyAgcB/wEAAf8BBwHwAfEC/wEAAbwB7wH0AfMB9wHzAf8BvAEHAfQB/wH0AfEB8AHzAf8LAAEH AfcBBwH/AQABvAH3AQcBvAHvAZID7QGSAfAB/wEAAfEC7wH/AQAB9AHvAfcE7QEHAfEB7wEHAfIE7QH3 Ae8B8AH/DwAB/wHzAQcB7wH0AQAB/wHzAe8BBwH0AgAB8gHvAQcB9AH/AQAB8gHvAQcB/wIAAQcB7wHy AfMB7wHwAf8B8wHwAe8B9AG8AQcB9AwAAf8B8wEHAbwB8gH/AfQBBwHzAbwB7wHzAf8BAAH/AfICvAHy AbwB8gH/AfAB7wHzAv8B8gHwAfIBBwG8AfIB/wH0AQcB8wK8AfAC/wHwA/IBvAH/CgAD8AH/AfQCvAHz AfABBwH0AQAB/wHxAvAB/wEAAfQBvAHyAf8BAAH/AfAB8wH/AwABvAEHAfMB8QHvAvMB8AEHAvEC8AHz Af8MAAEHAfcB7wL0AQcB9wEHAbwB9wHvBAcB8gH/AfQBvALvAvQB8wLvBAcB8QHyAe8CBwLvAQcDvAHz Af8QAAH/AfAB8QH/AQAB/wG8AQcB8gH/AgAB/wG8AQcB8QH/AQAB/wG8AfEB/wEAAfQCBwHvAQcBvAH0 Af8BvAHwAfcCBwHyAf8MAAH/AfABvAHyAv8B8QEHAfABvAEHAfEB/wEAAf8B8AG8AQcB8wEHAbwB8QG8 AQcB8AH/AfMEvAHyAv8B8QEHA7wC/wHzAbwB8AG8AfABBwH0Af8JAAH/AfQE/wH0Af8C9AH/AQAC/wH0 Av8BAAH/AfQC/wEABP8DAAL0Af8C9AL/BfQC/w0AAQcB9wHtAvcBkgH3AQcBvAH3AZIE9wG8AQcC9wHv AZIB9wHvAbwC9wGSA/cBvAHxAe8CBwHvAfcBkgL3Ae8BvAH/EAAE/wEAAf8C9AH/AwAC/wH0Av8CAAH0 Af8CAAH/BPQD/wT0Av8NAAT/AQAI/wEAEv8BAAb/AQAI/x0AAv8kAAEHBu8B8wHyBu8B8AfvAfAG7wG8 AfIB7wHwAfMBBwPvAgcBvAH/xgAB/wX0Af8yAAb/ZgAE/wEACv9iAAL/AfQB8wTyAfMB9AL/XAAD/wMA Af8B9ALzAfQB/wH0A/MB9AH/AfQC8wH0Af8DAAP/WQAB/wHzAfAB7wHsAW0BEgFKARMBEgFtAewB7wHw AfMB/y0AB/8lAAH/AfMB8QH/AwAB8wHsAm0B9wHxAfcD6wHvAQcB6wHqAW0BBwH/AwAB8wHyAv9VAAL/ AfIB7wHsAkoBRAYjASIBFQFEAesB7wHyAf8oAAP/AfMB8gG8AQcBvAHxAfMB9AL/IQAB/wHzAQcB8AH/ AwAB8QNEAewB7wFuAUoCRAHsAe0CEAFEAe0B/wMAAfMB7AHvAfQB/yIAA/8FAAP/JgAB/wH0AQcBcwVL ASkCSgcjARUBbQHvAfQB/yUAAf8B8wEHAewB6wVKAW0B7AHvAfEB9AH/HgAB/wH0AQcB7wH0Af8DAAHx AUoBRAFKAe0B7wFuAUsBRQFEAewB7QIRAUQB7QH/AwAB/wGSARQB7wH/IQAB/wHxAe8B8wH/AwAB/wHy Ae8B8gH/JAAB/wHzARwBdARSAnQBcwEcAUsCcwJKAUQDIwFEARUB7AHzAf8iAAH/AfMBkgJKAUsCSgFE AkoFRAHsAfAC/xwAAf8BBwG8AQcB/wQAAfEDSwEcAe8CdAFLAUQB7AHtAUMBRAFFAe0B/wQAAfIBQwES AfAB/yAAAfIBEwEVAe0B8wH/AQAB/wHzAW0BQwHsAfIB/yIAAf8B8wFuAVIDegEaArwBmQFzAfABSwFt AfMCcwEcAXMBSgIjAUQBIgFtAfMB/yAAAf8BvAFKAksBUQFzA0sCSgFLAUoBRAMjAUQB9wH0Af8aAAH/ AfEBBwHwAbwB/wQAAfEDSwEcAe8CdAJLAewB7QJEAUsB7QH/BAAB/wIVAewB9AH/HgAB9AEUAREBQwEV Ae0B9AEAAfQB6gIRARAB7AHzAf8gAAH/AfMBbgFSAVkBegGgAfAB8QL/AZkBcwHwAUsB6wHzAXMBHAL0 AbwBdAFKA0QBbQHzAf8dAAH/AfQB7wFRAVIDdAGTAZkBHAJLAVECmQF0AUsBSgIjAUQB7QHyAf8ZAAH0 Ae8CBwHyAf8EAAHxA24BHAHvAnQBTAFLAewB7QJEAeoB9wH/BQAB7AEVAeoBBwH/HAAB/wHzARMBFAHq ARIBFAEVAZIB8gHqARUBEwESAUMBEAHsAfIB/x4AAf8B9AFzAVIBegGaARoB8AHzAf8BAAH/AZkBcwHw AVEB6wHzAW4BHAH0AgAB8wGZAUsBSgFEASIB6wH0HAAB/wH0AZkBdAJ5ApkBGgHwAfEB8AJLAXQBvAH0 AfIBGgEcAUsBSgJEAe0B8wH/FwAB/wHxAW4CBwHzAf8EAAHyAXMCbgHvAbwCdAFvAUsB7QHvAm0B6wG8 Af8FAAHvAUMBFQGSAfQB/xoAAf8B8gESARMB7QG8AQcB6wEUARUCFAHrAe8BBwHrARUBEQHsAfIB/x0A Af8BHAFSAXoBoAEaAfAB8wH/AgAB/wGZAXMB8AFLAesB8wFuARwB9AMAAfQBmQFLAUQBIwEVAZIB/xsA Af8BBwF0AnoCGgHxAfIC9AHyAUsBSgFzAfAB/wEAAf8B9AEbARwBSwFEAUoB9wH0FwAB/wEHAUoBHAHv AfMB/wQAAfQBvAIHAfEB8AN0AW4BkgHwAwcB8wH/BQABvAFDARUB6wHyAf8ZAAH/AfEBbQETAfcBvAHy AfMBBwFtARQBFQESAe8B8QH0AfAB6wEVAREB7AHyAf8bAAH/AbwBUgF6AZoBGgHwAfQC/wIAAf8BmQFz AfABSwHrAfMBbgEcAfQDAAH/AfQBHAFKAUQBIwEUAfAB/xkAAf8BvAF0AXoBmgHDAfAB8QHzA/8B8wFL AUoBcwHwAf8EAAH0AZkBSwJKAbwB/xYAAfQB7AFKAe0B9wHxBvMD8QHyAbwBkwF6AXQBbwHsBPEH8wEH AREBQwESAbwB/xgAAf8B8QFtARMB9wG8AfMC/wHwAW0CFAESAe0B8gL/AfEB6wJDAewB8gH/GgAB8wFz AVIBegGgAbwB9AL/AwAB/wGZARwB8AFLAewB8wFuARwB9AQAAf8B8wFzAUQCIwHrAfQZAAHzAUsBdAF6 AcMB8AHyAfQD/wEAAfMBSwFKAXMB8AH/BAAB/wH0AbwBSwFKAewB9BYAAfMBEgFEAuoF6wbsAXMBmQGa AXUBdAFLAusBbgXrA20BEwEQAREBFAHvAf8XAAH/AfIBbQEUAe0BvAHzAv8B8wHtAeoB7AFtARQBEwHt AfMC/wHyAesBEQFDAewB8gH/GQABBwFRAVIBegEHAfMD/wMAAf8BvAEcAfABcwHsAfMB6wEcAfQDAAP/ AbwBSgEjAUQBSgG8GAAB/wHtAUsBdAGaARoB8QH0Av8BAAL/AfABSwFKAUsB8AH/BQAB/wH2AZkCSgHx Af8UAAH/AfIBQwEVA0QCSgJLBHQBeQKZApoBegN0AkwDSwFKAUQBFAEVAUMDEQEUAfcB/xcAAfQC7AHv AbwB8wL/AfQB7AHrAfcBBwG8AW0CFAGSAfMC/wHyAewBbQHqAfcB9BgAAfQBcwFLAVIBegG8Av8B8gH0 AwAB/wG8ARwB8AFzAewB8wHrARwB9AMAAfQB8AL/AXMDRAHtAf8XAAHzAUsCdAGZAfEB9AH/AgAB/wHz AewDRAFuAfAB/wcAAfMBbgFEAe8B/xQAAf8B8QERBUQBSgFLAW4CdAOaAxoBmgF6BXQBTANLAUQCFAEV AkMBEQEVAe0B9BcAAfQD8wH0Af8BAAH0AuwB7wEHAfIB9AG8AeoCFQGSAfQBAAH/AfQD8gH/GAAB8gNL ARwB9AH/AfIBBwH/AwAB/wGZARwB8AFzAesB8wFzARwB9AMAAf8B9wG8Af8BvAFKAkQB6wHzFgAB/wHv AksBdAEaAfME/wHxAXMBUQNLAW4B8QH/BwAB/wGZAUoB7AH/EwAC/wHwAeoBbgLsAW4CcwEcAZMCmQQa AsMBGgWaAZMDdAFzAW4BbQHqAhICEwHqAZIB9AL/FAAH/wEAAbwC7AGSAQcB8wH/AfQB7AEUARMB7AHz Af8BAAX/FwAB/wG8AUoBSwFSAfcB/wH0ARwBvAH/AwAB/wGZARwBBwFRAW4BvAFuARwB9AMAAf8BBwHs AvQBSgFEAkoB8AH/FQAB/wFuAUsBUQGZAfAE/wHzAXQCeQJ0AXMBdAHyAf8IAAHzAW4BSgH0EgAB/wHz AfIBBwHsAe0FHAGTAe8CBwm8AgcEmQKTAhwC7QTsAfcB8QHyAfQVAAH0AwcB8QL/AfQBBwH3AewB6wEH AfQB9wEVARIB9wHxA/8B8QIHAfAB/xcAAf8B7wFEAUsBdAHwAQAB9AFzAQcB/wIAAf8B9AGZAXMBbgFS AUsCSgHtAfIB/wIAAf8BBwFtAfIB/wFzAUQCSgEHAf8VAAHzAksBUQGZAfIE/wGZAXoCmgEaAfEC8gH/ CQAB/wEcAUoB8xIAAf8B7AESB+oCbQHrAewBcwLsBO0B7AJzAuwBcwRuAusDbQXqARIB6gG8FQAB8wHs ARABEQFtAfAC/wHzAQcB7QHrAW0B7AEUAeoB9wHxAfQC/wEHAUMBEQFtAbwB/xcAAf8BHAFKAUsBcwH0 AQAB8wFRAXMB8wL/AfIBHAF0AVIBdAJSAksBSgHsAbwB/wEAAfYB6wFtAfEB/wEHA0oB7wH/FQAB8AJL AVEBmQH0Af8BAAH/AfIBmgGgAZoBGgHyAfQC8AHzAf8JAAHwAW4B8xIAAf8BQwEVBUMCFQEUAUQBSgFu A3QFmQZ0AW8BbgJLAUoBRAEUAhUBQwERAUMBEQFDARMBBxUAAf8B8wHsAkMBbQG8Av8B8wG8AfcB7AFt AesB7wHxAfQC/wHvAUMBFQHsAbwB9AH/FwAB9AEcAUoBSwFuAfQBAAH0AXMBSwHvAf8BvAF0AXkBegKa ApkBeQFRAUsCSgHvAf8BBwFKARwB8wH/AbwDSgHvAf8VAAG8AkoBSwGZAf8BAAL/AbwBoAF6AZkB8AH0 AbwBcwFLAe8B/wkAAfQBcwH0EgAB/wMVAkMDFQNEAUsBbgN0BZoBmQF5BXQBbwFMAksBSgJEARUEQwEV AeoB8BYAAf8B8wHsAhUBbQG8Av8B8gHtAesC7AHvAfMC/wHvAUMBFQHsAbwB9AH/GAAB9AEcAkoBbQH/ AQAB9AGZAXQB7wEHAXQBegEaAfABvAHxA/IBBwEcAUsBSgFEAe8BSgFuAbwB/wEAAfEDSgHvAf8VAAEH AUoBRAFLAQcB/wEAAv8BmQGgAXoBmQHwAf8BGgF5AVEBHAH0CQAB/wHvAf8TAAESAxUBFAETAhIC6gFt AW4BdAKTC5kBkwR0Am4CSgEUBBUBFAFtAfIXAAH/AfMB7AEUARMB6wHwAfMB9wHtAe8B7QLrAQcB9AHv AhQB7AG8AfQC/xgAAfQBHAIjAeoB/wEAAf8B8gEcAbwBcwF6ARoB8AH0BP8CAAH/AbwBcwFLARUB9wGZ AfIB/wEAAfADSgEHAf8VAAEHAUoBRAFLAe8B/wEAAv8BvAGgAXoBeQG8Af8BvAGaAZkBvAH/CQAC/xQA AewBQwIVARQB6gHtAu8DBwG8AxoC8QEaBJkB8QHwBBoBvAEHApkCHAHsARQCFQEUAUoB6wH0GQAB9AHs ARQBEwFtAesB7AHvAfEBvAH3AesBbQHqARUBFAHtAbwC/xoAAfQBHANKAfMCAAH/AfQB7wF0AZkBvALv AfAB8wL0AfMB8gEHAe8B7QJLAewB8gH/AgABBwFLAkoBBwH/FQABvAJEAUoBHAH0AQAC/wHwAaACegGZ AfIB/wLyAv8IAAL/FQABBwRDARIBkgH0Bf8F9AHzApkCGgEHAfIF8wT0Af8B8QIVAkQBbgGSAf8aAAH0 AewBFAESAesB7QHwAfEB8wG8AZIBbQESARMB7AG8A/8aAAH/Ae8BRAJKAbwDAAH/ARwBdAEHARwBdAFR A0sBbgJLAlEB7AEcAUsB7AH/AwABHANLAbwB/xUAAfIBSgEjAUQBbgHyA/8B8gEaAnoBeQGZAbwC8gHz Av8HAAL/FQAB9AEVA0MBFAHsAf8KAAH0Ae8BmQEaAfIBvAH0Cf8BAAHxARUCRAFKAXMBvAH/GwAB8wEU ARIB7QG8AfEC9AHzAQcB7QJtAZIB9AL/GwAB/wEHAkQBSgHsAf8CAAH0AXMB7QHzARwBmQGaBHoBoAKa AZkBBwHyAVEB7QH/AgAB/wFuAksBcwHxFgAB9AFLAiMBSgG8Af8BAAH/AfQBvAGaAXkBegGaAZkBHAGZ AfAC/x8AAesDQwEVAesB/wkAAf8B9AEHARoC8wG8AfQB/wkAAbwCRAFKAW4BHAHyGwAB/wHvARQB6wEH AfEB9AP/AfMBBwHsAW0B6gEHAfQB/xwAAfEBSgJEARMB8wIAAfQBcwH3Af8B9AIbAhoBoAGZAbwB8ALy AfQB/wFzARwB/wEAAf8B8QJLAVEBmQH0FgAB/wHsAkQBSgHtAfQD/wHyAfABGgN6AaABGwHwAv8FAAL/ GAAB8AEVA0MBEgHzCQAB/wH0AbwB8ALxAfAB9AH/CQAB9wFEAUoBbgEcAQcB9BoAAf8B9wERARIB7wHx AfQC/wEAAv8B8wEHAewBEgHqAQcB9AH/GwAB9AFzAkQBIwHvAf8BAAH/ARwB7wEAA/8B9AHzAXoBcwHz AvQC/wEAARwBBwH/AQAB/wEcAlEBdAEHAf8XAAG8AUQCIwFKAbwD/wH0AfIBvAEaAZoBeQF6ARoB8AL/ BAAE/xcAAfQB6wFDAhEBFQHwCQAC/wH0A/IB8wH/CQAB/wHrAUsBbgF0AQcB8AH/GQAB/wH3AUMBFQH3 AfEB9AL/AwAC/wHzAQcB6wHqAW0BBwH0Af8aAAH/Ae8BSgFEASMBSgHyAgAB8AEHAf8DAAH/AfQBeQHs BP8BAAH/AZkB8gL/AfEBcwFSAXQBmQHyAf8XAAH/AUoBRAEjAUQB7AHzA/8B9AHzAfEBvAF0AXkBmgHw Av8EAAX/FgAB/wG8ARQCEQEVAfcB/wkABv8KAAH0AW4CdAGZAQcB8wH/GAAB/wHvAUMBEAESAQcB9AL/ BQAC/wH0AZIC6wHtAfEB/xsAAfIBcwFKAUQBIwHsAfQBAAH/AfAB/wQAAfQBdAHrAf8EAAHzAbwC/wH0 ARwCdAGZAe8B/xkAAbwERAGSAfQBAAP/AfQB8AF0AVIBmQHxAv8DAAH/AfIB9wEHAfQC/xYAAfQB7AFD AhEB6gH0GQABvAJ0AZkBBwHwAfQB/xgAAf8B8AETAREBQwHrAfIB/wcAAf8B8QFtAesB9wHwAfQB/xsA Af8B7wFKA0QB7wP/BQAB9AF5AesB/wQAA/8B9AEHAXkBegF5ARoB8gH/GgAB7AFKA0QBkgHzBP8B8gFz AVEBeQHwAv8BAAL/AbwDSwG8Av8WAAH/AfIBEgIRAUMBvAH/FwAB/wHtAZMBmQK8AfMB/xoAAf8B8AES AREBQwHsAfIB/wUAAf8B8QLrAe8B8QHzAv8cAAH0AXMCSgFEARQB7wH0Af8FAAH0AXQB6wH/BQAB/wH0 AbwBmQKaARoBvAH/GwAB8wFzAUoDRAHsAfAB9AL/AfIBSwFRAXkBvAP/AfMB7wFRAlIBdAG8Af8YAAH/ AQcBEwIRAewB9AH/FQAB/wHxARwBmQK8AfIC/xsAAf8B8AESAUMBFQHsAfIB/wMAAf8B8QLrAe8B8AHz Av8eAAHyAUsCSgJEAfcB8wH/BAAB9AF0AesB/wMAAv8B8wEHAZkDoAG8AfQcAAH/AfEBcwFLAkoBRAFt ARwB8AHzAfECSwF5AbwB9AHyAQcBcwFSA3kBmQHzAf8ZAAH/Ae8BFAERARUBBwH/FAAB/wH0Ae8BmQEa AbwB8QH0Af8dAAH/AfAB6gFDARUB7AHyAf8BAAH/AfEBbQESAfcB8AHyAv8fAAH/AfABcwJKAkQB6wEH AfQB/wIAAfQBdAHrAf8CAAH/AfQBvAKZAqABGgG8AfMB/x0AAf8B8gEcAXMBSwRKAuwCSwFRAewBHAFz AVIBeQJ6AZoBGgHxAv8aAAH0Ae8BFAFDAW0B8QH/EgAC/wG8AQcBGgG8AfEB9AH/HwAB/wHwAW0BQwEV AZIB/wEAAfQB6gEUAe0BvAHzAv8hAAH/AfABcwNKAkQB6wHvAfEB9AHzAXQB6wLzAfEB7wEcAXkBmgKg ARoBvAHyAf8eAAL/AfMBvAF0AXMBSwRKBEsBUQFSAXQBeQGaARoB8AHxAfQC/xsAAf8BBwFKARUB7AHz Af8QAAL/AfEB7wHwAbwB8QH0Av8gAAH/AfEB6gFDAewB9AEAAfEBFQHsAbwB8gL/IwAB/wHyARwBSwZK ARIB6gFLA0oBUQFSAXoDoAEaAbwB8wL/HwAC/wH0AbwBmQF0AVEFSwFSAnQBeQGaARoBGwG8AfIB9AL/ HQAB/wHxAewBEwHtAfMB/w8AAf8B8QHvArwB8gL/IwAB/wHwAW0B7AH0Af8B8QHrAQcB8gL/JQAB/wH0 AQcBcwFLAkoESwFSAXQEUgJ6AaABGwHwAfQC/yIAAv8B8wG8ARoBmgF5A3QBmQGaARoBwwEbAbwB8gHz AfQC/x8AAf8B9AH3ARIB7AHyAf8NAAH/AfABHAG8AfAB9AH/JgAB/wHwAe8B9AH/AfIBBwHzAv8oAAH/ AfIBBwFzBksCUgJ0AnkBmQG8AfMB9AH/JQAC/wH0AfMB8QTwAfEC8AHxAfMC9AP/IgAB/wHyAfcB7wHx Af8KAAH/AfQCBwHwAfQC/ygAAf8B9AL/AfQD/ysAAf8B8wHwAZkCHAFzAnQBHAKZARoB8AHzA/8oAAT/ B/QD/ycAAf8B8wHxAfQB/wkAAf8C8gP/LAAD/zAAAv8B8wXyAfMB9AP/LAAL/zgAAv9kAAj//wD/AP8A YwABQgFNAT4HAAE+AwABKAMAAeADAAHgAwABAQEAAQEFAAGAARgWAAP//wD/AP8A/wD/AP8AJwAB/wEE AUwB/AHZAQwBfxb/AgABMAIAAT8O/wH4BQABAQH/AgABMAIAAT8O/wHwBQABAQH/AgABMAIAAT8O/wHw BQABAQH/AgABeAIAAX8O/wHwAgABCAEAAQgBAwH/AgABCAIAAX8B4AMAASABggEhB/8B4AIAAQgBBAEI AQMB/wUAAX8B4AUAAQEH/wHgBQABAwH/BQABfwHgAwABEAEAAQcB+AEAAQQCGAEgAQ8BwAUAAQMB/wIA AXgCAAE/AeABAgIAARABMAEHAfgCAAEIARABAAEHAcACAAFAAgABBwH/AgABcAIAAT8B8AECAgABEAEw AQcB+AIAAQgCAAEHCP8CAAFwAgABPwHgBQABBwH8AgABCAEgAQABHw7/AeAFAAEHAfwCAAGMAQEBAAE/ Dv8B4AUAAQ8B/AIAAYwBAQEAAT8V/wH8AgABgAEBAQABPwL/Af4BAAE/BP8B+AEAAT8J/wH4BQABPwL/ AeABAAEHBP8BwAEAAQcJ/wH4BQABPwL/AYABAAEBBP8BgAEAAQEJ/wH4BQABfwL/AwAD/wH+AwAF/wGI C/8B/gMAAT8C/wH+AwABPwL/AfwB/gEIAR8Bnwn/AfwDAAE/Av8B/AMAAT8C/wH8AXgBCAEPAR8J/wH4 AwABHwL/AfgDAAEfAv8B/AEwAQgBBwEfCf8B8AEAARABAAEPAv8B8AMAAQ8C/wH8AwABHwn/AfABAAF4 AQABBwL/AeADAAEHAv8B9AMAATcE/wHwAT8D/wHgAQEB/AEAAQcC/wHgAwABAwL/AeADAAEjA/8BgQGA AQcD/wHgAQMB/gEAAQMC/wHAAwABAwL/AeADAAEDA/8CAAEBA/8BwAEHAf8BAAEDAv8BwAMAAQEC/wHg AwABAwL/AfADAAP/AcABDwH/AQABAQL/AYADAAEBAv8B8AMAAQcC/wHwAwABfwL/AcABHwH/AQABAQL/ AYADAAEBAv8B8AEGAQABGAEHAv8B8AIAAXABPwL/AYABfwH/AYABAQL/AYAEAAL/AfABBgEAARgBBwL/ AfwCAAEEAT8C/wGAAR8B/wEAAQEC/wGABAAC/wHwAQ4BAAEYAQ8C/wH+AgABAQP/AYABHwH+AQABAQL/ AYAEAAL/AfgBDwEAARgBHwP/AgABAQP/AYABDwH+AQABAQL/BQABfwH/Af4BDwEAATgBPwL/Af4CAAEB A/8BgAEHAfgBAAEBAv8FAAF/Af8B/gEPAQABOAE/Av8B/gIAATsD/wGAAQcB+AEAAQEC/wUAAX8B/wH+ AQ8BAAE4AT8C/wH8AQABAQT/AYABgQHgAQABAQL/BQABfwH/Af4BBwEAATABPwL/AfwBAAEHBP8BgAMA AQEC/wUAAX8C/wEHAQABMAF/Av8B/gEAAQME/wGAAUACAAEBAv8FAAF/Av8BAwEIASABfwL/Af4CAAFx A/8BgAMAAQEC/wGABAABfwL/AYABCAEAAX8C/wH+AgABAQP/AcABIAIAAQEC/wGABAAD/wGAAQgBAAT/ AgABAQP/AcABEAIAAQEC/wGABAAD/wGAAQgBAAP/Af4CAAECAT8C/wHAARgCAAEBAv8BgAMAAQED/wHA AQgBAQP/AfADAAE/Av8B4AEMAgABAwL/AcADAAEBA/8B4AEIAQMD/wHwAwABfwL/AfABBgEAARABAwL/ AcADAAEBA/8B+AEIAQ8D/wHwAwAD/wHwAQEBgAEAAQMC/wHgAwABAwP/AfwBCAEfA/8B/AIAAQED/wH4 AQABPAEAAQcC/wHwAwABAwT/AYgF/wIAAQMD/wH8AwABDwL/AfADAAEDBP8BiAX/AcABAAEHA/8B/gMA AQ8C/wH4AwABBwT/AcgG/wHAAT8D/wH+AwABHwL/AfwDAAEPBP8ByQz/AwABPwL/Af4DAAEfBP8ByQz/ AeACAAT/AwABPwT/AckM/wHwAQABAQT/AYACAAE/Ef8B/AEAAQcE/wHAAgAT/wEAAR8E/wHgAQABARP/ AfAF/wH8AQABBxr/AQABHzr/Af4B+wEOAfcBHAHHAb8V/wH8AWABBAFEAQABAwEfD/8B+AHGAQgBiAGD Af8B/AEgAQABQAEAAQMBHw//AeABAAEIAQABAQH/AfwCAAFAAgABHw//AcABAAEIAQABAQH/AfwDAAFA AQABHwH/AQABgAEAARABIAF/Af8B4gFjAREBkwEnAv8BwAMAAQMB/wH+AQABYAEAAUABAAE/Af8DAAEQ ASABfwH/AeABAgEBAQABAwL/AcADAAEPAv8BAAFgAQABQAEQAX8B/gEAAQYBMAEAASABfwH/AeABAgIA AQMC/wHAAwABAwL/AQQBAAJAARABfwH+AQABBgEwAgABfwH/AeABAgIAAQMC/wHAAwABAwL/AQQBAAJA ARgBfwH/AQIBBgEwAgABfwH/AeABAgIAAQMC/wHAAwABAwL/AQ4BBAJAATgBfwH/AQIBJgEwARABAAF/ Af8B4AECAQgBAAEDAv8BwAMAAQMC/wGfA/8B/Qn/AeADAAEDAv8BwAMAAQEQ/wHgAwABAwL/AcADAAEB C/8B5wT/AeABIAEAASABAwv/AQEG/wGAE/8B4AEAAQ8E/wH8AQABHxL/AYABAAEDBP8B8AEAAQcL/wH+ AQgBfwT/AwAE/wHAAQABAQv/Af4BAAE/A/8B/gMAAX8C/wH+AwABfwT/AQABPwT/Af4BAAE/A/8B/AMA AT8C/wH+AwABPwP/AfwBAAEfBP8B/gEAAX8D/wH4AwABPwL/Af4DAAE/A/8B8AEAAQcE/wH+AQABfwP/ AfABAAEPAcABHwL/Af4DAAE/A/8B4AEAAQEE/wHgAQABAwP/AeACAAEgAQ8C/wH+AwABPwP/AQIBAAEg AX8D/wHAAQABAwP/AcACAAEQAQcC/wH+AwABPwP/AQYBAAEwAT8D/wHAAQABAQP/AcABBAEAARgBAwL/ Af4DAAE/Av8B/gEGAQABMAE/A/8BgAIAA/8BwAEMAQABHAEDAv8B/gEAAQgBAAE/Av8B/gEOAQABOAE/ A/8DAAP/AYABHAEAARwBAwL/Af4BAAEIAQABPwL/AfwBDgEAATwBHwP/AwABfwL/AYABPAEAAR4BAQL/ Af4BAAEIAQABPwL/AfwBHgEAATwBHwL/Af4BAwEAAcABfwL/AYABfAEAAR8BAQL/Af4BAAEIAQABPwL/ AfgBPgEAAT4BDwL/Af4BAwEAAeABPwL/AQAB/AEAAR8BAQL/Af4BAAEIAQABPwL/AfgBPgEAAT4BBwL/ AcABBwEAAeABAQL/AQAB/AEAAR8BgQL/Af4BAAEYAQABPwL/AfABPgEAAT4BBwL/AcABBwGJAeABAQL/ AQEB/AEAAR8BgQL/Af4BAAF/AQABPwL/AfABPwEAAT8BBwL/AcABAQGIAYABAQL/AQEB/AEAAR8BgAL/ Af4BAQH/AYABPwL/AfABPwEAAX8BBwL/AcACAAGAAQEC/wEBAfwBAAEfAYAC/wH+AQEBCAEAAT8C/wHw AT8BgAF+AQcC/wHAAgABgAEBAv8BgQH8AQABHwGAAv8B/gEAAQgBAAE/Av8B8AE/AcEB/gEHAv8BwAIA AYABAQL/AYEB/AEAAR8BgQL/Af4DAAE/Av8B8AEfAYAB/gEHAv8BwAIAAYABAQL/AYEB/AEAAR8BgQL/ Af4DAAE/Av8B8AEeAQABPAEHAv8BwAEBAQABgAEBAv8BgAH8AQABHwEBAv8B/gMAAT8C/wHwAQ4BAAE4 AQcC/wHAAQcBgAHgAQMC/wGAAfwBAAEfAQEC/wH+AwABPwL/AfABBgEAATABBwL/AcIBAwEAAeABPwL/ AYABfAEAAR4BAQL/Af4DAAE/Av8B+AEGAQABEAEPAv8B/gEDAQABwAE/Av8BwAE8AQABHAEBAv8B/gMA AT8C/wH4AwABDwL/Af4BAQEAAcABPwL/AcABPAEAAQwBAwL/Af4DAAE/Av8B+AMAAQ8D/wMAAX8C/wHg ARwBAAEIAQMC/wH+AwABPwL/AfwDAAEfA/8BgAIAA/8B8AEEAgABBwL/Af4DAAE/Av8B/gMAAR8D/wGA AgAD/wHwAwABBwL/Af4DAAE/Av8B/gMAAT8D/wHAAQABAQP/AfgDAAEPAv8B/gMAAR8C/wH+AwABPwP/ AeABAAEBA/8B/AMAAQ8C/wH+AwABHwP/AwABPwP/AeABAAEDA/8B/gMAAR8C/wH+AwABHwP/AwABfwP/ AfgBAAEHA/8B/gMAAT8C/wH+AwABPwP/AcACAAT/Af4BAAE/BP8BwAIAAX8C/wH+AwABPwP/AfABAAED BP8B/gEAAT8E/wHgAgAD/wH+AwABPwP/AfwBAAEPBP8B/gEIAT8E/wH4AQABAwT/AfwCAAE/A/8B/gEA AT8F/wH4Bf8B/AEAAQ8E/wH+AgABfxL/AYABf47/AfwBIAFgAeABcAEAAX8V/wH8AQABYAHgAWABAAEf CP8CAAEEAgABfwf/AfwBAAJgAUABAAEfB/8B/gUAAX8B8AJAAQABBAEIAQcB/AEAAmABQAEiAQ8H/wH+ BQABfwHwAQABQAMAAQcB/AEEAwABIwEPAf4CAAGEAgABfwH/BAABgAH/AfgEAAEQAQ8B/AEcAwABIwGP Af4CAAGEAgABPwH/AgABIAFAAYAB/wH4AgABBAIAAQ8B/AEMAgABEAEjAY8B/gIAAYQCAAE/Af8BgAEA ASABQAEAAf8B+AIAAUYCAAEPAfwBBAFiAQgBEAEiAQ8B/gIAAYQCAAE/Af8BggEAATABwAEAAf8B+AEA AeABRgIAAQ8B/AEAAWABCAEQAQABDwH+ARABAAGEAgABPwH/AYIBDAEQAcABAAH/AfABAAFAAwABDwH8 AQABQQEIAXABAAEfAf4FAAE/Af8BwgEMARABgAEAAf8B8AEAAUADAAEHAfwBAAFBAQgBcAEAAT8B/gUA AT8B/wHCARwBGQGAAQEB/wHwAYABQAEAAQgBEAEPA/8BnwP/Af4FAAE/GP8BAQb/AYEM/wH4AUABDwv/ AfwBAAE/Cv8B/AFwAQABBwEfCv8B8AEAAQ8F/wGABP8B+AFwAQABBwEPCv8BgAEAAQME/wH8AQABHwP/ AfABcAEAAgcD/wH+AT4BPwT/AwAE/wH4AQABBwP/AeABcAEAAgcD/wH8ARwBHwP/Af4DAAF/A/8B4AEA AQED/wHgAfABAAEHAYMD/wH8AQgBDwP/AfwDAAE/A/8BwAIAA/8BwAHwAQABBwGBA/8B+AEIAQcD/wH4 AwABHwP/AwABfwL/AcAB8AEAAQcBwQP/AeABAAEDA/8B8AECAQABYAEfAv8B/gMAAT8C/wGAAfABAAEH AcAD/wHAAQABAQP/AfABBgEAAXABDwL/Af4CAAGAAT8C/wGAAfABAAEHAcAD/wGAAgAD/wHgAQYBAAFw AQcC/wH8AgAB8AEfAv8BgAQAA/8DAAF/Av8B4AEOAQABeAEHAv8B/AEAAUAB8AEfAv8BgAQAAv8B/gMA AT8C/wHgAQ4BAAFwAQcC/wH4AQEBAAH4AQ8C/wUAAv8B/gMAAT8C/wHAAQ4BAAFwAQMC/wH4AQYBAAH+ AQ8C/wUAAv8B/gEEAQABEAE/Av8BwAEOAQABcAEDAv8B8AIAAf4BDwH/Af4FAAE/Af8B/AEEAQABCAE/ Av8BgAEOAQABcAEBAv8B8AIAAf8BDwH/AfwFAAE/Af8B/gMAAT8C/wGBAQwBAAEwAQEC/wHwAQABAQH/ AQ8B/wH8BQABPwH/Af4DAAE/Av8BgQIAARABAQL/AfABEAEAAf8BjwH/AfwFAAE/Af8B/gMAAT8C/wGB AwABAQL/AfABIAEAAf8BjwH/AfwFAAE/Av8DAAF/Av8BgQMAAYEC/wHwASABAAH/AY8B/wH+BQABPwL/ AYACAAF/Av8BgQEAAQYBAAGBAv8B8AEgAQAB/wGfAf8B/gUAAT8C/wHgAQABAQP/AYEBgAEAAQEBgQL/ AfABIAEAAf8BPwH/Af4FAAE/Av8B8AEAAQED/wGBAcABAAEDAYEC/wHwAgABfwE/Af8B/gEBAf8BgAEA AUABPwL/AfgBAAEDA/8BgAHAAQACAwL/AfABEAEAAX8D/wEBAf8BAAF/AcABfwL/AfABAAEDA/8CwAEA AQIBAwL/AfACAAF8A/8BAQH/AQABfwHAAX8C/wHgAQgBAQP/AcABRAEAASIBAwL/AfgCAAF4AX8C/wEB Af8BAAH/AYABfwL/AcABHAEAA/8BwAFjAYABQAEDAv8B+AIAAXgBPwL/AQAB/wGBAf8BgAF/Av8BgAE+ AQAD/wHgASMBwwHAAQcC/wH8AQQBAAFwAR8C/wGAA/8BgAF/Av8BgAF/AQAD/wHgAQcBwwHAAQcC/wH+ AgABQAEfAv8BgAF/Av8BAAP/AcABPgEAA/8B8AEHAcMB4AEPAv8B/gMAAT8C/wHAAT8B/wH+AQAD/wHg ARwBAQP/AfgBAwHDAYABHwL/Af4DAAE/Av8B4AE/Af8B/AEBA/8B8AEIAQMD/wH4AQABwwEAAR8D/wMA AT8C/wHwAR8B/wH4AQMD/wH4AQgBBwP/AfwDAAE/A/8DAAE/Av8B+AEPAf8B8AEDA/8B/AEIAQ8D/wH+ AwABPwP/AYACAAF/Av8B/AEHAf8B8AEPA/8B/gEAAR8E/wMAAX8D/wHgAgAD/wH+AQMB/wHgAT8E/wEA AT8E/wHAAQABAQT/AfABAAEBBP8BgQH/AYABfwT/AYABfwT/AfABAAEDBP8B/AEAAQ8E/wHgAf8BgQX/ AeMF/wH8AQABHwT/Af4BAAE/Bv8Bzwz/AQBs/ws= ================================================ FILE: src/EVEMon/BlankCharacter/BlankCharacterWindow.Designer.cs ================================================ namespace EVEMon.BlankCharacter { partial class BlankCharacterWindow { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.buttonCancel = new System.Windows.Forms.Button(); this.buttonOK = new System.Windows.Forms.Button(); this.bottomPanel = new System.Windows.Forms.Panel(); this.blankCharacterControl = new EVEMon.BlankCharacter.BlankCharacterControl(); this.bottomPanel.SuspendLayout(); this.SuspendLayout(); // // buttonCancel // this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.buttonCancel.Location = new System.Drawing.Point(412, 23); this.buttonCancel.Margin = new System.Windows.Forms.Padding(3, 20, 20, 3); this.buttonCancel.Name = "buttonCancel"; this.buttonCancel.Size = new System.Drawing.Size(75, 23); this.buttonCancel.TabIndex = 0; this.buttonCancel.Text = "Cancel"; this.buttonCancel.UseVisualStyleBackColor = true; this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); // // buttonOK // this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonOK.Location = new System.Drawing.Point(331, 23); this.buttonOK.Margin = new System.Windows.Forms.Padding(3, 20, 3, 3); this.buttonOK.Name = "buttonOK"; this.buttonOK.Size = new System.Drawing.Size(75, 23); this.buttonOK.TabIndex = 1; this.buttonOK.Text = "Import"; this.buttonOK.UseVisualStyleBackColor = true; this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); // // bottomPanel // this.bottomPanel.BackColor = System.Drawing.SystemColors.ControlLight; this.bottomPanel.Controls.Add(this.buttonCancel); this.bottomPanel.Controls.Add(this.buttonOK); this.bottomPanel.Dock = System.Windows.Forms.DockStyle.Bottom; this.bottomPanel.Location = new System.Drawing.Point(0, 425); this.bottomPanel.Name = "bottomPanel"; this.bottomPanel.Size = new System.Drawing.Size(497, 57); this.bottomPanel.TabIndex = 2; // // blankCharacterControl // this.blankCharacterControl.AutoSize = true; this.blankCharacterControl.BackColor = System.Drawing.Color.Transparent; this.blankCharacterControl.Dock = System.Windows.Forms.DockStyle.Fill; this.blankCharacterControl.ForeColor = System.Drawing.SystemColors.GrayText; this.blankCharacterControl.Location = new System.Drawing.Point(0, 0); this.blankCharacterControl.Name = "blankCharacterControl"; this.blankCharacterControl.Padding = new System.Windows.Forms.Padding(13); this.blankCharacterControl.Size = new System.Drawing.Size(497, 425); this.blankCharacterControl.TabIndex = 3; // // BlankCharacterWindow // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoSize = true; this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.BackColor = System.Drawing.SystemColors.Window; this.ClientSize = new System.Drawing.Size(497, 482); this.Controls.Add(this.blankCharacterControl); this.Controls.Add(this.bottomPanel); this.MaximizeBox = false; this.Name = "BlankCharacterWindow"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Blank Character Creator"; this.Load += new System.EventHandler(this.BlankCharacterWindow_Load); this.bottomPanel.ResumeLayout(false); this.bottomPanel.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.Button buttonCancel; private System.Windows.Forms.Button buttonOK; private System.Windows.Forms.Panel bottomPanel; private BlankCharacterControl blankCharacterControl; } } ================================================ FILE: src/EVEMon/BlankCharacter/BlankCharacterWindow.cs ================================================ using System; using System.Windows.Forms; using EVEMon.Common; using EVEMon.Common.Controls; using EVEMon.Common.Helpers; namespace EVEMon.BlankCharacter { public partial class BlankCharacterWindow : EVEMonForm { #region Constructor /// /// Initializes a new instance of the class. /// public BlankCharacterWindow() { InitializeComponent(); } #endregion #region Inherited Event Handlers /// /// Handles the Load event of the BlankCharacterWindow control. /// /// The source of the event. /// The instance containing the event data. private void BlankCharacterWindow_Load(object sender, EventArgs e) { EveMonClient.TimerTick += EveMonClient_TimerTick; Disposed += OnDisposed; buttonOK.Text = "Save"; buttonOK.Enabled = false; } /// /// Called when the instance get disposed. /// /// The sender. /// The instance containing the event data. private void OnDisposed(object sender, EventArgs e) { EveMonClient.TimerTick -= EveMonClient_TimerTick; Disposed -= OnDisposed; } #endregion #region Global Event Handlers /// /// Handles the TimerTick event of the EveMonClient control. /// /// The source of the event. /// The instance containing the event data. private void EveMonClient_TimerTick(object sender, EventArgs e) { buttonOK.Enabled = !string.IsNullOrEmpty(BlankCharacterUIHelper.CharacterName); AcceptButton = buttonOK.Enabled ? buttonOK : buttonCancel; } #endregion #region Control Handlers /// /// Handles the Click event of the buttonOK control. /// /// The source of the event. /// The instance containing the event data. private async void buttonOK_Click(object sender, EventArgs e) { // Three choices for one button switch (buttonOK.DialogResult) { // Save blank character case DialogResult.None: await BlankCharacterUIHelper.SaveAsync(OnCharacterSaved); break; // Add blank character case DialogResult.OK: await BlankCharacterUIHelper.AddBlankCharacterAsync(OnCharacterImported); break; } } /// /// Handles the Click event of the buttonCancel control. /// /// The source of the event. /// The instance containing the event data. private void buttonCancel_Click(object sender, EventArgs e) { Close(); } #endregion #region Callback Methods /// /// Called when character is saved. /// private void OnCharacterSaved() { buttonOK.Text = "Import"; buttonOK.DialogResult = DialogResult.OK; // Disabling control editing blankCharacterControl.Enabled = false; } /// /// Called when character is imported. /// private void OnCharacterImported() { Close(); } #endregion } } ================================================ FILE: src/EVEMon/BlankCharacter/BlankCharacterWindow.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ================================================ FILE: src/EVEMon/BlankCharacterControl.Designer.cs ================================================ namespace EVEMon.BlankCharacter { partial class BlankCharacterControl { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Component Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BlankCharacterControl)); this.rbFemale = new System.Windows.Forms.RadioButton(); this.rbMale = new System.Windows.Forms.RadioButton(); this.tbCharacterName = new System.Windows.Forms.TextBox(); this.gbRace = new System.Windows.Forms.GroupBox(); this.tlpRaces = new System.Windows.Forms.TableLayoutPanel(); this.pictureBox3 = new System.Windows.Forms.PictureBox(); this.pictureBox2 = new System.Windows.Forms.PictureBox(); this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.rbCaldari = new System.Windows.Forms.RadioButton(); this.rbAmarr = new System.Windows.Forms.RadioButton(); this.rbGallente = new System.Windows.Forms.RadioButton(); this.rbMinmatar = new System.Windows.Forms.RadioButton(); this.pbAmarr = new System.Windows.Forms.PictureBox(); this.gbBloodline = new System.Windows.Forms.GroupBox(); this.tlpBloodline = new System.Windows.Forms.TableLayoutPanel(); this.rbBloodline3 = new System.Windows.Forms.RadioButton(); this.rbBloodline2 = new System.Windows.Forms.RadioButton(); this.pbBloodline3 = new System.Windows.Forms.PictureBox(); this.pbBloodline1 = new System.Windows.Forms.PictureBox(); this.pbBloodline2 = new System.Windows.Forms.PictureBox(); this.rbBloodline1 = new System.Windows.Forms.RadioButton(); this.gbAncestry = new System.Windows.Forms.GroupBox(); this.tlpAncestry = new System.Windows.Forms.TableLayoutPanel(); this.lblAncestry1 = new System.Windows.Forms.Label(); this.rbAncestry2 = new System.Windows.Forms.RadioButton(); this.pbAncestry1 = new System.Windows.Forms.PictureBox(); this.rbAncestry1 = new System.Windows.Forms.RadioButton(); this.rbAncestry3 = new System.Windows.Forms.RadioButton(); this.lblAncestry3 = new System.Windows.Forms.Label(); this.lblAncestry2 = new System.Windows.Forms.Label(); this.pbAncestry2 = new System.Windows.Forms.PictureBox(); this.pbAncestry3 = new System.Windows.Forms.PictureBox(); this.ilAncestry = new System.Windows.Forms.ImageList(this.components); this.gbGender = new System.Windows.Forms.GroupBox(); this.gbCharacterName = new System.Windows.Forms.GroupBox(); this.ilBloodline = new System.Windows.Forms.ImageList(this.components); this.tlpGender = new System.Windows.Forms.TableLayoutPanel(); this.pbFemale = new System.Windows.Forms.PictureBox(); this.pbMale = new System.Windows.Forms.PictureBox(); this.lblFemale = new System.Windows.Forms.Label(); this.lblMale = new System.Windows.Forms.Label(); this.gbRace.SuspendLayout(); this.tlpRaces.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pbAmarr)).BeginInit(); this.gbBloodline.SuspendLayout(); this.tlpBloodline.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbBloodline3)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pbBloodline1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pbBloodline2)).BeginInit(); this.gbAncestry.SuspendLayout(); this.tlpAncestry.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbAncestry1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pbAncestry2)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pbAncestry3)).BeginInit(); this.gbGender.SuspendLayout(); this.gbCharacterName.SuspendLayout(); this.tlpGender.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbFemale)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pbMale)).BeginInit(); this.SuspendLayout(); // // rbFemale // this.rbFemale.AutoSize = true; this.rbFemale.Checked = true; this.rbFemale.Dock = System.Windows.Forms.DockStyle.Fill; this.rbFemale.Location = new System.Drawing.Point(3, 3); this.rbFemale.Name = "rbFemale"; this.rbFemale.Padding = new System.Windows.Forms.Padding(20, 0, 0, 0); this.tlpGender.SetRowSpan(this.rbFemale, 2); this.rbFemale.Size = new System.Drawing.Size(43, 94); this.rbFemale.TabIndex = 0; this.rbFemale.TabStop = true; this.rbFemale.UseVisualStyleBackColor = true; this.rbFemale.Click += new System.EventHandler(this.rbFemale_Click); // // rbMale // this.rbMale.AutoSize = true; this.rbMale.Dock = System.Windows.Forms.DockStyle.Fill; this.rbMale.Location = new System.Drawing.Point(3, 103); this.rbMale.Name = "rbMale"; this.rbMale.Padding = new System.Windows.Forms.Padding(20, 0, 0, 0); this.tlpGender.SetRowSpan(this.rbMale, 2); this.rbMale.Size = new System.Drawing.Size(43, 87); this.rbMale.TabIndex = 1; this.rbMale.UseVisualStyleBackColor = true; this.rbMale.Click += new System.EventHandler(this.rbMale_Click); // // tbCharacterName // this.tbCharacterName.Dock = System.Windows.Forms.DockStyle.Fill; this.tbCharacterName.Location = new System.Drawing.Point(13, 16); this.tbCharacterName.Name = "tbCharacterName"; this.tbCharacterName.Size = new System.Drawing.Size(200, 20); this.tbCharacterName.TabIndex = 4; this.tbCharacterName.TextChanged += new System.EventHandler(this.tbCharacterName_TextChanged); // // gbRace // this.gbRace.Controls.Add(this.tlpRaces); this.gbRace.Location = new System.Drawing.Point(13, 13); this.gbRace.Name = "gbRace"; this.gbRace.Size = new System.Drawing.Size(470, 135); this.gbRace.TabIndex = 5; this.gbRace.TabStop = false; this.gbRace.Text = "Race"; // // tlpRaces // this.tlpRaces.ColumnCount = 4; this.tlpRaces.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); this.tlpRaces.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); this.tlpRaces.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); this.tlpRaces.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); this.tlpRaces.Controls.Add(this.pictureBox3, 3, 0); this.tlpRaces.Controls.Add(this.pictureBox2, 2, 0); this.tlpRaces.Controls.Add(this.pictureBox1, 1, 0); this.tlpRaces.Controls.Add(this.rbCaldari, 1, 1); this.tlpRaces.Controls.Add(this.rbAmarr, 0, 1); this.tlpRaces.Controls.Add(this.rbGallente, 2, 1); this.tlpRaces.Controls.Add(this.rbMinmatar, 3, 1); this.tlpRaces.Controls.Add(this.pbAmarr, 0, 0); this.tlpRaces.Dock = System.Windows.Forms.DockStyle.Fill; this.tlpRaces.Location = new System.Drawing.Point(3, 16); this.tlpRaces.Name = "tlpRaces"; this.tlpRaces.RowCount = 2; this.tlpRaces.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 71.94244F)); this.tlpRaces.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 28.05755F)); this.tlpRaces.Size = new System.Drawing.Size(464, 116); this.tlpRaces.TabIndex = 0; // // pictureBox3 // this.pictureBox3.Dock = System.Windows.Forms.DockStyle.Fill; this.pictureBox3.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox3.Image"))); this.pictureBox3.Location = new System.Drawing.Point(351, 3); this.pictureBox3.Name = "pictureBox3"; this.pictureBox3.Size = new System.Drawing.Size(110, 77); this.pictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pictureBox3.TabIndex = 7; this.pictureBox3.TabStop = false; // // pictureBox2 // this.pictureBox2.Dock = System.Windows.Forms.DockStyle.Fill; this.pictureBox2.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox2.Image"))); this.pictureBox2.Location = new System.Drawing.Point(235, 3); this.pictureBox2.Name = "pictureBox2"; this.pictureBox2.Size = new System.Drawing.Size(110, 77); this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pictureBox2.TabIndex = 6; this.pictureBox2.TabStop = false; // // pictureBox1 // this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill; this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); this.pictureBox1.Location = new System.Drawing.Point(119, 3); this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Size = new System.Drawing.Size(110, 77); this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pictureBox1.TabIndex = 5; this.pictureBox1.TabStop = false; // // rbCaldari // this.rbCaldari.AutoSize = true; this.rbCaldari.Location = new System.Drawing.Point(168, 86); this.rbCaldari.Margin = new System.Windows.Forms.Padding(52, 3, 3, 3); this.rbCaldari.Name = "rbCaldari"; this.rbCaldari.Size = new System.Drawing.Size(14, 13); this.rbCaldari.TabIndex = 1; this.rbCaldari.UseVisualStyleBackColor = true; this.rbCaldari.Click += new System.EventHandler(this.rbCaldari_Click); // // rbAmarr // this.rbAmarr.AutoSize = true; this.rbAmarr.Checked = true; this.rbAmarr.Location = new System.Drawing.Point(52, 86); this.rbAmarr.Margin = new System.Windows.Forms.Padding(52, 3, 3, 3); this.rbAmarr.Name = "rbAmarr"; this.rbAmarr.RightToLeft = System.Windows.Forms.RightToLeft.No; this.rbAmarr.Size = new System.Drawing.Size(14, 13); this.rbAmarr.TabIndex = 0; this.rbAmarr.TabStop = true; this.rbAmarr.UseVisualStyleBackColor = true; this.rbAmarr.Click += new System.EventHandler(this.rbAmarr_Click); // // rbGallente // this.rbGallente.AutoSize = true; this.rbGallente.Location = new System.Drawing.Point(284, 86); this.rbGallente.Margin = new System.Windows.Forms.Padding(52, 3, 3, 3); this.rbGallente.Name = "rbGallente"; this.rbGallente.Size = new System.Drawing.Size(14, 13); this.rbGallente.TabIndex = 2; this.rbGallente.UseVisualStyleBackColor = true; this.rbGallente.Click += new System.EventHandler(this.rbGallente_Click); // // rbMinmatar // this.rbMinmatar.AutoSize = true; this.rbMinmatar.Location = new System.Drawing.Point(400, 86); this.rbMinmatar.Margin = new System.Windows.Forms.Padding(52, 3, 3, 3); this.rbMinmatar.Name = "rbMinmatar"; this.rbMinmatar.Size = new System.Drawing.Size(14, 13); this.rbMinmatar.TabIndex = 3; this.rbMinmatar.UseVisualStyleBackColor = true; this.rbMinmatar.Click += new System.EventHandler(this.rbMinmatar_Click); // // pbAmarr // this.pbAmarr.Dock = System.Windows.Forms.DockStyle.Fill; this.pbAmarr.Image = ((System.Drawing.Image)(resources.GetObject("pbAmarr.Image"))); this.pbAmarr.Location = new System.Drawing.Point(3, 3); this.pbAmarr.Name = "pbAmarr"; this.pbAmarr.Size = new System.Drawing.Size(110, 77); this.pbAmarr.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pbAmarr.TabIndex = 4; this.pbAmarr.TabStop = false; // // gbBloodline // this.gbBloodline.Controls.Add(this.tlpBloodline); this.gbBloodline.Location = new System.Drawing.Point(13, 156); this.gbBloodline.Name = "gbBloodline"; this.gbBloodline.Size = new System.Drawing.Size(148, 212); this.gbBloodline.TabIndex = 6; this.gbBloodline.TabStop = false; this.gbBloodline.Text = "Bloodline"; // // tlpBloodline // this.tlpBloodline.ColumnCount = 2; this.tlpBloodline.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35F)); this.tlpBloodline.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 65F)); this.tlpBloodline.Controls.Add(this.rbBloodline3, 0, 2); this.tlpBloodline.Controls.Add(this.rbBloodline2, 0, 1); this.tlpBloodline.Controls.Add(this.pbBloodline3, 1, 2); this.tlpBloodline.Controls.Add(this.pbBloodline1, 1, 0); this.tlpBloodline.Controls.Add(this.pbBloodline2, 1, 1); this.tlpBloodline.Controls.Add(this.rbBloodline1, 0, 0); this.tlpBloodline.Dock = System.Windows.Forms.DockStyle.Fill; this.tlpBloodline.Location = new System.Drawing.Point(3, 16); this.tlpBloodline.Name = "tlpBloodline"; this.tlpBloodline.Padding = new System.Windows.Forms.Padding(0, 0, 0, 6); this.tlpBloodline.RowCount = 3; this.tlpBloodline.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); this.tlpBloodline.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); this.tlpBloodline.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); this.tlpBloodline.Size = new System.Drawing.Size(142, 193); this.tlpBloodline.TabIndex = 0; // // rbBloodline3 // this.rbBloodline3.AutoSize = true; this.rbBloodline3.Dock = System.Windows.Forms.DockStyle.Fill; this.rbBloodline3.Location = new System.Drawing.Point(3, 127); this.rbBloodline3.Name = "rbBloodline3"; this.rbBloodline3.Padding = new System.Windows.Forms.Padding(20, 0, 0, 0); this.rbBloodline3.Size = new System.Drawing.Size(43, 57); this.rbBloodline3.TabIndex = 5; this.rbBloodline3.UseVisualStyleBackColor = true; this.rbBloodline3.Click += new System.EventHandler(this.rbBloodline3_Click); // // rbBloodline2 // this.rbBloodline2.AutoSize = true; this.rbBloodline2.Dock = System.Windows.Forms.DockStyle.Fill; this.rbBloodline2.Location = new System.Drawing.Point(3, 65); this.rbBloodline2.Name = "rbBloodline2"; this.rbBloodline2.Padding = new System.Windows.Forms.Padding(20, 0, 0, 0); this.rbBloodline2.Size = new System.Drawing.Size(43, 56); this.rbBloodline2.TabIndex = 4; this.rbBloodline2.UseVisualStyleBackColor = true; this.rbBloodline2.Click += new System.EventHandler(this.rbBloodline2_Click); // // pbBloodline3 // this.pbBloodline3.Dock = System.Windows.Forms.DockStyle.Fill; this.pbBloodline3.Image = ((System.Drawing.Image)(resources.GetObject("pbBloodline3.Image"))); this.pbBloodline3.Location = new System.Drawing.Point(49, 124); this.pbBloodline3.Margin = new System.Windows.Forms.Padding(0); this.pbBloodline3.Name = "pbBloodline3"; this.pbBloodline3.Size = new System.Drawing.Size(93, 63); this.pbBloodline3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pbBloodline3.TabIndex = 2; this.pbBloodline3.TabStop = false; // // pbBloodline1 // this.pbBloodline1.Dock = System.Windows.Forms.DockStyle.Fill; this.pbBloodline1.Image = ((System.Drawing.Image)(resources.GetObject("pbBloodline1.Image"))); this.pbBloodline1.Location = new System.Drawing.Point(49, 0); this.pbBloodline1.Margin = new System.Windows.Forms.Padding(0); this.pbBloodline1.Name = "pbBloodline1"; this.pbBloodline1.Padding = new System.Windows.Forms.Padding(0, 0, 0, 5); this.pbBloodline1.Size = new System.Drawing.Size(93, 62); this.pbBloodline1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pbBloodline1.TabIndex = 0; this.pbBloodline1.TabStop = false; // // pbBloodline2 // this.pbBloodline2.Dock = System.Windows.Forms.DockStyle.Fill; this.pbBloodline2.Image = ((System.Drawing.Image)(resources.GetObject("pbBloodline2.Image"))); this.pbBloodline2.Location = new System.Drawing.Point(49, 62); this.pbBloodline2.Margin = new System.Windows.Forms.Padding(0); this.pbBloodline2.Name = "pbBloodline2"; this.pbBloodline2.Padding = new System.Windows.Forms.Padding(0, 0, 0, 5); this.pbBloodline2.Size = new System.Drawing.Size(93, 62); this.pbBloodline2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pbBloodline2.TabIndex = 1; this.pbBloodline2.TabStop = false; // // rbBloodline1 // this.rbBloodline1.AutoSize = true; this.rbBloodline1.Checked = true; this.rbBloodline1.Dock = System.Windows.Forms.DockStyle.Fill; this.rbBloodline1.Location = new System.Drawing.Point(3, 3); this.rbBloodline1.Name = "rbBloodline1"; this.rbBloodline1.Padding = new System.Windows.Forms.Padding(20, 0, 0, 0); this.rbBloodline1.Size = new System.Drawing.Size(43, 56); this.rbBloodline1.TabIndex = 3; this.rbBloodline1.TabStop = true; this.rbBloodline1.UseVisualStyleBackColor = true; this.rbBloodline1.Click += new System.EventHandler(this.rbBloodline1_Click); // // gbAncestry // this.gbAncestry.Controls.Add(this.tlpAncestry); this.gbAncestry.Location = new System.Drawing.Point(165, 156); this.gbAncestry.Name = "gbAncestry"; this.gbAncestry.Size = new System.Drawing.Size(166, 212); this.gbAncestry.TabIndex = 7; this.gbAncestry.TabStop = false; this.gbAncestry.Text = "Ancestry"; // // tlpAncestry // this.tlpAncestry.ColumnCount = 2; this.tlpAncestry.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35F)); this.tlpAncestry.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 65F)); this.tlpAncestry.Controls.Add(this.lblAncestry1, 1, 1); this.tlpAncestry.Controls.Add(this.rbAncestry2, 0, 2); this.tlpAncestry.Controls.Add(this.pbAncestry1, 1, 0); this.tlpAncestry.Controls.Add(this.rbAncestry1, 0, 0); this.tlpAncestry.Controls.Add(this.rbAncestry3, 0, 4); this.tlpAncestry.Controls.Add(this.lblAncestry3, 1, 5); this.tlpAncestry.Controls.Add(this.lblAncestry2, 1, 3); this.tlpAncestry.Controls.Add(this.pbAncestry2, 1, 2); this.tlpAncestry.Controls.Add(this.pbAncestry3, 1, 4); this.tlpAncestry.Dock = System.Windows.Forms.DockStyle.Fill; this.tlpAncestry.Location = new System.Drawing.Point(3, 16); this.tlpAncestry.Name = "tlpAncestry"; this.tlpAncestry.Padding = new System.Windows.Forms.Padding(0, 0, 0, 6); this.tlpAncestry.RowCount = 6; this.tlpAncestry.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 44F)); this.tlpAncestry.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.32972F)); this.tlpAncestry.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 44F)); this.tlpAncestry.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33514F)); this.tlpAncestry.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 44F)); this.tlpAncestry.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33514F)); this.tlpAncestry.Size = new System.Drawing.Size(160, 193); this.tlpAncestry.TabIndex = 0; // // lblAncestry1 // this.lblAncestry1.AutoSize = true; this.lblAncestry1.Dock = System.Windows.Forms.DockStyle.Fill; this.lblAncestry1.ImageIndex = 0; this.lblAncestry1.Location = new System.Drawing.Point(56, 44); this.lblAncestry1.Margin = new System.Windows.Forms.Padding(0); this.lblAncestry1.Name = "lblAncestry1"; this.lblAncestry1.Size = new System.Drawing.Size(104, 18); this.lblAncestry1.TabIndex = 8; this.lblAncestry1.Text = "Liberal Holders"; this.lblAncestry1.TextAlign = System.Drawing.ContentAlignment.TopCenter; // // rbAncestry2 // this.rbAncestry2.AutoSize = true; this.rbAncestry2.Dock = System.Windows.Forms.DockStyle.Fill; this.rbAncestry2.Location = new System.Drawing.Point(3, 65); this.rbAncestry2.Name = "rbAncestry2"; this.rbAncestry2.Padding = new System.Windows.Forms.Padding(20, 0, 0, 0); this.tlpAncestry.SetRowSpan(this.rbAncestry2, 2); this.rbAncestry2.Size = new System.Drawing.Size(50, 56); this.rbAncestry2.TabIndex = 5; this.rbAncestry2.UseVisualStyleBackColor = true; this.rbAncestry2.Click += new System.EventHandler(this.rbAncestry2_Click); // // pbAncestry1 // this.pbAncestry1.Dock = System.Windows.Forms.DockStyle.Fill; this.pbAncestry1.Location = new System.Drawing.Point(56, 0); this.pbAncestry1.Margin = new System.Windows.Forms.Padding(0); this.pbAncestry1.Name = "pbAncestry1"; this.pbAncestry1.Size = new System.Drawing.Size(104, 44); this.pbAncestry1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pbAncestry1.TabIndex = 2; this.pbAncestry1.TabStop = false; // // rbAncestry1 // this.rbAncestry1.AutoSize = true; this.rbAncestry1.Checked = true; this.rbAncestry1.Dock = System.Windows.Forms.DockStyle.Fill; this.rbAncestry1.Location = new System.Drawing.Point(3, 3); this.rbAncestry1.Name = "rbAncestry1"; this.rbAncestry1.Padding = new System.Windows.Forms.Padding(20, 0, 0, 0); this.tlpAncestry.SetRowSpan(this.rbAncestry1, 2); this.rbAncestry1.Size = new System.Drawing.Size(50, 56); this.rbAncestry1.TabIndex = 4; this.rbAncestry1.TabStop = true; this.rbAncestry1.UseVisualStyleBackColor = true; this.rbAncestry1.Click += new System.EventHandler(this.rbAncestry1_Click); // // rbAncestry3 // this.rbAncestry3.AutoSize = true; this.rbAncestry3.Dock = System.Windows.Forms.DockStyle.Fill; this.rbAncestry3.Location = new System.Drawing.Point(3, 127); this.rbAncestry3.Name = "rbAncestry3"; this.rbAncestry3.Padding = new System.Windows.Forms.Padding(20, 0, 0, 0); this.tlpAncestry.SetRowSpan(this.rbAncestry3, 2); this.rbAncestry3.Size = new System.Drawing.Size(50, 57); this.rbAncestry3.TabIndex = 6; this.rbAncestry3.UseVisualStyleBackColor = true; this.rbAncestry3.Click += new System.EventHandler(this.rbAncestry3_Click); // // lblAncestry3 // this.lblAncestry3.AutoSize = true; this.lblAncestry3.Dock = System.Windows.Forms.DockStyle.Fill; this.lblAncestry3.ImageIndex = 2; this.lblAncestry3.Location = new System.Drawing.Point(56, 168); this.lblAncestry3.Margin = new System.Windows.Forms.Padding(0); this.lblAncestry3.Name = "lblAncestry3"; this.lblAncestry3.Size = new System.Drawing.Size(104, 19); this.lblAncestry3.TabIndex = 9; this.lblAncestry3.Text = "Religious Reclaimers"; this.lblAncestry3.TextAlign = System.Drawing.ContentAlignment.TopCenter; // // lblAncestry2 // this.lblAncestry2.AutoSize = true; this.lblAncestry2.Dock = System.Windows.Forms.DockStyle.Fill; this.lblAncestry2.ImageIndex = 1; this.lblAncestry2.Location = new System.Drawing.Point(56, 106); this.lblAncestry2.Margin = new System.Windows.Forms.Padding(0); this.lblAncestry2.Name = "lblAncestry2"; this.lblAncestry2.Size = new System.Drawing.Size(104, 18); this.lblAncestry2.TabIndex = 7; this.lblAncestry2.Text = "Weathy Commoners"; this.lblAncestry2.TextAlign = System.Drawing.ContentAlignment.TopCenter; // // pbAncestry2 // this.pbAncestry2.Dock = System.Windows.Forms.DockStyle.Fill; this.pbAncestry2.Location = new System.Drawing.Point(59, 65); this.pbAncestry2.Name = "pbAncestry2"; this.pbAncestry2.Size = new System.Drawing.Size(98, 38); this.pbAncestry2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pbAncestry2.TabIndex = 10; this.pbAncestry2.TabStop = false; // // pbAncestry3 // this.pbAncestry3.Dock = System.Windows.Forms.DockStyle.Fill; this.pbAncestry3.Location = new System.Drawing.Point(59, 127); this.pbAncestry3.Name = "pbAncestry3"; this.pbAncestry3.Size = new System.Drawing.Size(98, 38); this.pbAncestry3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pbAncestry3.TabIndex = 11; this.pbAncestry3.TabStop = false; // // ilAncestry // this.ilAncestry.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilAncestry.ImageStream"))); this.ilAncestry.TransparentColor = System.Drawing.Color.Transparent; this.ilAncestry.Images.SetKeyName(0, "Liberal.png"); this.ilAncestry.Images.SetKeyName(1, "Wealthy.png"); this.ilAncestry.Images.SetKeyName(2, "Religious.png"); this.ilAncestry.Images.SetKeyName(3, "Free.png"); this.ilAncestry.Images.SetKeyName(4, "Border.png"); this.ilAncestry.Images.SetKeyName(5, "Navy.png"); this.ilAncestry.Images.SetKeyName(6, "Cyber.png"); this.ilAncestry.Images.SetKeyName(7, "Unionists.png"); this.ilAncestry.Images.SetKeyName(8, "Zealots.png"); this.ilAncestry.Images.SetKeyName(9, "Merchandisers.png"); this.ilAncestry.Images.SetKeyName(10, "Scientists.png"); this.ilAncestry.Images.SetKeyName(11, "Tube.png"); this.ilAncestry.Images.SetKeyName(12, "Entrepreneurs.png"); this.ilAncestry.Images.SetKeyName(13, "Mercs.png"); this.ilAncestry.Images.SetKeyName(14, "Dissenters.png"); this.ilAncestry.Images.SetKeyName(15, "Inventors.png"); this.ilAncestry.Images.SetKeyName(16, "Monks.png"); this.ilAncestry.Images.SetKeyName(17, "Stargazers.png"); this.ilAncestry.Images.SetKeyName(18, "Activists.png"); this.ilAncestry.Images.SetKeyName(19, "Miners.png"); this.ilAncestry.Images.SetKeyName(20, "Immigrants.png"); this.ilAncestry.Images.SetKeyName(21, "Artists.png"); this.ilAncestry.Images.SetKeyName(22, "Diplomats.png"); this.ilAncestry.Images.SetKeyName(23, "Reborn.png"); this.ilAncestry.Images.SetKeyName(24, "Sang.png"); this.ilAncestry.Images.SetKeyName(25, "Saan.png"); this.ilAncestry.Images.SetKeyName(26, "Jing.png"); this.ilAncestry.Images.SetKeyName(27, "Tinkerers.png"); this.ilAncestry.Images.SetKeyName(28, "Traders.png"); this.ilAncestry.Images.SetKeyName(29, "Rebels.png"); this.ilAncestry.Images.SetKeyName(30, "Workers.png"); this.ilAncestry.Images.SetKeyName(31, "Tribal.png"); this.ilAncestry.Images.SetKeyName(32, "Slave.png"); this.ilAncestry.Images.SetKeyName(33, "Drifters.png"); this.ilAncestry.Images.SetKeyName(34, "Mystics.png"); this.ilAncestry.Images.SetKeyName(35, "Retailers.png"); // // gbGender // this.gbGender.Controls.Add(this.tlpGender); this.gbGender.Location = new System.Drawing.Point(337, 156); this.gbGender.Name = "gbGender"; this.gbGender.Size = new System.Drawing.Size(146, 212); this.gbGender.TabIndex = 8; this.gbGender.TabStop = false; this.gbGender.Text = "Gender"; // // gbCharacterName // this.gbCharacterName.Controls.Add(this.tbCharacterName); this.gbCharacterName.Location = new System.Drawing.Point(135, 371); this.gbCharacterName.Name = "gbCharacterName"; this.gbCharacterName.Padding = new System.Windows.Forms.Padding(13, 3, 13, 3); this.gbCharacterName.Size = new System.Drawing.Size(226, 46); this.gbCharacterName.TabIndex = 9; this.gbCharacterName.TabStop = false; this.gbCharacterName.Text = "Blank Character Name"; // // ilBloodline // this.ilBloodline.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilBloodline.ImageStream"))); this.ilBloodline.TransparentColor = System.Drawing.Color.Transparent; this.ilBloodline.Images.SetKeyName(0, "amarr.png"); this.ilBloodline.Images.SetKeyName(1, "ni-kunni.png"); this.ilBloodline.Images.SetKeyName(2, "khanid.png"); this.ilBloodline.Images.SetKeyName(3, "deteis.png"); this.ilBloodline.Images.SetKeyName(4, "civire.png"); this.ilBloodline.Images.SetKeyName(5, "achura.png"); this.ilBloodline.Images.SetKeyName(6, "gallente.png"); this.ilBloodline.Images.SetKeyName(7, "intaki.png"); this.ilBloodline.Images.SetKeyName(8, "jin-mei.png"); this.ilBloodline.Images.SetKeyName(9, "sebiestor.png"); this.ilBloodline.Images.SetKeyName(10, "brutor.png"); this.ilBloodline.Images.SetKeyName(11, "verokhior.png"); // // tlpGender // this.tlpGender.ColumnCount = 2; this.tlpGender.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35F)); this.tlpGender.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 65F)); this.tlpGender.Controls.Add(this.rbFemale, 0, 0); this.tlpGender.Controls.Add(this.pbFemale, 1, 0); this.tlpGender.Controls.Add(this.rbMale, 0, 2); this.tlpGender.Controls.Add(this.pbMale, 1, 2); this.tlpGender.Controls.Add(this.lblFemale, 1, 1); this.tlpGender.Controls.Add(this.lblMale, 1, 3); this.tlpGender.Dock = System.Windows.Forms.DockStyle.Fill; this.tlpGender.Location = new System.Drawing.Point(3, 16); this.tlpGender.Name = "tlpGender"; this.tlpGender.RowCount = 4; this.tlpGender.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.tlpGender.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); this.tlpGender.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.tlpGender.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); this.tlpGender.Size = new System.Drawing.Size(140, 193); this.tlpGender.TabIndex = 2; // // pbFemale // this.pbFemale.Dock = System.Windows.Forms.DockStyle.Fill; this.pbFemale.Image = ((System.Drawing.Image)(resources.GetObject("pbFemale.Image"))); this.pbFemale.Location = new System.Drawing.Point(52, 3); this.pbFemale.Name = "pbFemale"; this.pbFemale.Size = new System.Drawing.Size(85, 74); this.pbFemale.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pbFemale.TabIndex = 2; this.pbFemale.TabStop = false; // // pbMale // this.pbMale.Dock = System.Windows.Forms.DockStyle.Fill; this.pbMale.Image = ((System.Drawing.Image)(resources.GetObject("pbMale.Image"))); this.pbMale.Location = new System.Drawing.Point(52, 103); this.pbMale.Name = "pbMale"; this.pbMale.Size = new System.Drawing.Size(85, 66); this.pbMale.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pbMale.TabIndex = 3; this.pbMale.TabStop = false; // // lblFemale // this.lblFemale.AutoSize = true; this.lblFemale.Dock = System.Windows.Forms.DockStyle.Fill; this.lblFemale.Location = new System.Drawing.Point(52, 80); this.lblFemale.Name = "lblFemale"; this.lblFemale.Size = new System.Drawing.Size(85, 20); this.lblFemale.TabIndex = 4; this.lblFemale.Text = "Female"; this.lblFemale.TextAlign = System.Drawing.ContentAlignment.TopCenter; // // lblMale // this.lblMale.AutoSize = true; this.lblMale.Dock = System.Windows.Forms.DockStyle.Fill; this.lblMale.Location = new System.Drawing.Point(52, 172); this.lblMale.Name = "lblMale"; this.lblMale.Size = new System.Drawing.Size(85, 21); this.lblMale.TabIndex = 5; this.lblMale.Text = "Male"; this.lblMale.TextAlign = System.Drawing.ContentAlignment.TopCenter; // // BlankCharacterControl // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.Color.Transparent; this.Controls.Add(this.gbCharacterName); this.Controls.Add(this.gbGender); this.Controls.Add(this.gbAncestry); this.Controls.Add(this.gbBloodline); this.Controls.Add(this.gbRace); this.Name = "BlankCharacterControl"; this.Size = new System.Drawing.Size(497, 425); this.Load += new System.EventHandler(this.BlankCharacterControl_Load); this.gbRace.ResumeLayout(false); this.tlpRaces.ResumeLayout(false); this.tlpRaces.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pbAmarr)).EndInit(); this.gbBloodline.ResumeLayout(false); this.tlpBloodline.ResumeLayout(false); this.tlpBloodline.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbBloodline3)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pbBloodline1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pbBloodline2)).EndInit(); this.gbAncestry.ResumeLayout(false); this.tlpAncestry.ResumeLayout(false); this.tlpAncestry.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbAncestry1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pbAncestry2)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pbAncestry3)).EndInit(); this.gbGender.ResumeLayout(false); this.gbCharacterName.ResumeLayout(false); this.gbCharacterName.PerformLayout(); this.tlpGender.ResumeLayout(false); this.tlpGender.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbFemale)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pbMale)).EndInit(); this.ResumeLayout(false); } #endregion private System.Windows.Forms.GroupBox gbRace; private System.Windows.Forms.RadioButton rbAmarr; private System.Windows.Forms.GroupBox gbBloodline; private System.Windows.Forms.GroupBox gbAncestry; private System.Windows.Forms.GroupBox gbGender; private System.Windows.Forms.GroupBox gbCharacterName; private System.Windows.Forms.RadioButton rbCaldari; private System.Windows.Forms.ImageList ilBloodline; private System.Windows.Forms.TableLayoutPanel tlpRaces; private System.Windows.Forms.RadioButton rbGallente; private System.Windows.Forms.RadioButton rbMinmatar; private System.Windows.Forms.PictureBox pbAmarr; private System.Windows.Forms.PictureBox pictureBox3; private System.Windows.Forms.PictureBox pictureBox2; private System.Windows.Forms.PictureBox pictureBox1; private System.Windows.Forms.RadioButton rbFemale; private System.Windows.Forms.RadioButton rbMale; private System.Windows.Forms.PictureBox pbBloodline1; private System.Windows.Forms.PictureBox pbBloodline2; private System.Windows.Forms.PictureBox pbBloodline3; private System.Windows.Forms.TableLayoutPanel tlpAncestry; private System.Windows.Forms.TableLayoutPanel tlpBloodline; private System.Windows.Forms.RadioButton rbBloodline3; private System.Windows.Forms.RadioButton rbBloodline2; private System.Windows.Forms.RadioButton rbBloodline1; private System.Windows.Forms.RadioButton rbAncestry1; private System.Windows.Forms.RadioButton rbAncestry2; private System.Windows.Forms.RadioButton rbAncestry3; private System.Windows.Forms.Label lblAncestry2; private System.Windows.Forms.ImageList ilAncestry; private System.Windows.Forms.Label lblAncestry1; private System.Windows.Forms.Label lblAncestry3; private System.Windows.Forms.PictureBox pbAncestry1; private System.Windows.Forms.PictureBox pbAncestry2; private System.Windows.Forms.PictureBox pbAncestry3; private System.Windows.Forms.TextBox tbCharacterName; private System.Windows.Forms.TableLayoutPanel tlpGender; private System.Windows.Forms.PictureBox pbFemale; private System.Windows.Forms.PictureBox pbMale; private System.Windows.Forms.Label lblFemale; private System.Windows.Forms.Label lblMale; } } ================================================ FILE: src/EVEMon/BlankCharacterControl.cs ================================================ using System; using System.Drawing; using System.Windows.Forms; using EVEMon.Common.Constants; using EVEMon.Common.Enumerations; using EVEMon.Common.Factories; using EVEMon.Common.Helpers; namespace EVEMon.BlankCharacter { public partial class BlankCharacterControl : UserControl { private Font m_amarrFont; private Font m_caldariFont; private Font m_gallenteFont; private Font m_minmatarFont; /// /// Initializes a new instance of the class. /// public BlankCharacterControl() { InitializeComponent(); } /// /// Handles the Load event of the BlankCharacterControl. /// /// The source of the event. /// The instance containing the event data. private void BlankCharacterControl_Load(object sender, EventArgs e) { ForeColor = SystemColors.GrayText; m_amarrFont = FontFactory.GetFont("Niagara Solid", 10f); m_caldariFont = FontFactory.GetFont("Impact", 8.25f); m_gallenteFont = FontFactory.GetFont("Arial Rounded MT Bold", 8.25f); m_minmatarFont = FontFactory.GetFont("Moolboran", 9f); BlankCharacterUIHelper.Race = Race.Amarr; UpdateBloodlineControl(); } #region Update Methods /// /// Updates the bloodline controls. /// private void UpdateBloodlineControl() { int index = 0; switch (BlankCharacterUIHelper.Race) { case Race.Amarr: lblAncestry1.Font = lblAncestry2.Font = lblAncestry3.Font = m_amarrFont; break; case Race.Caldari: index = 3; lblAncestry1.Font = lblAncestry2.Font = lblAncestry3.Font = m_caldariFont; break; case Race.Gallente: index = 6; lblAncestry1.Font = lblAncestry2.Font = lblAncestry3.Font = m_gallenteFont; break; case Race.Minmatar: index = 9; lblAncestry1.Font = lblAncestry2.Font = lblAncestry3.Font = m_minmatarFont; break; default: throw new NotImplementedException(); } pbBloodline1.Image = ilBloodline.Images[index]; pbBloodline2.Image = ilBloodline.Images[index + 1]; pbBloodline3.Image = ilBloodline.Images[index + 2]; pbBloodline1.Tag = (Bloodline)Enum.ToObject(typeof(Bloodline), index); pbBloodline2.Tag = (Bloodline)Enum.ToObject(typeof(Bloodline), index + 1); pbBloodline3.Tag = (Bloodline)Enum.ToObject(typeof(Bloodline), index + 2); if (rbBloodline1.Checked) BlankCharacterUIHelper.Bloodline = (Bloodline)pbBloodline1.Tag; if (rbBloodline2.Checked) BlankCharacterUIHelper.Bloodline = (Bloodline)pbBloodline2.Tag; if (rbBloodline3.Checked) BlankCharacterUIHelper.Bloodline = (Bloodline)pbBloodline3.Tag; UpdateAncestryControl(); } /// /// Updates the ancestry controls. /// private void UpdateAncestryControl() { int index = 0; switch (BlankCharacterUIHelper.Bloodline) { case Bloodline.Amarr: break; case Bloodline.Ni_Kunni: index = 3; break; case Bloodline.Khanid: index = 6; break; case Bloodline.Deteis: index = 9; break; case Bloodline.Civire: index = 12; break; case Bloodline.Achura: index = 15; break; case Bloodline.Gallente: index = 18; break; case Bloodline.Intaki: index = 21; break; case Bloodline.Jin_Mei: index = 24; break; case Bloodline.Sebiestor: index = 27; break; case Bloodline.Brutor: index = 30; break; case Bloodline.Vherokior: index = 33; break; default: throw new NotImplementedException(); } pbAncestry1.Image = ilAncestry.Images[index]; pbAncestry2.Image = ilAncestry.Images[index + 1]; pbAncestry3.Image = ilAncestry.Images[index + 2]; lblAncestry1.Text = ((Ancestry)Enum.ToObject(typeof(Ancestry), index)).ToString().ToUpper(CultureConstants.DefaultCulture).Replace( "_", " "); lblAncestry2.Text = ((Ancestry)Enum.ToObject(typeof(Ancestry), index + 1)).ToString().ToUpper(CultureConstants.DefaultCulture).Replace ("_", " "); lblAncestry3.Text = ((Ancestry)Enum.ToObject(typeof(Ancestry), index + 2)).ToString().ToUpper(CultureConstants.DefaultCulture).Replace ("_", " "); lblAncestry1.Tag = (Ancestry)Enum.ToObject(typeof(Ancestry), index); lblAncestry2.Tag = (Ancestry)Enum.ToObject(typeof(Ancestry), index + 1); lblAncestry3.Tag = (Ancestry)Enum.ToObject(typeof(Ancestry), index + 2); if (rbAncestry1.Checked) BlankCharacterUIHelper.Ancestry = (Ancestry)lblAncestry1.Tag; if (rbAncestry2.Checked) BlankCharacterUIHelper.Ancestry = (Ancestry)lblAncestry2.Tag; if (rbAncestry3.Checked) BlankCharacterUIHelper.Ancestry = (Ancestry)lblAncestry3.Tag; } #endregion #region Event Handlers /// /// Handles the Click event of the rbAmarr control. /// /// The source of the event. /// The instance containing the event data. private void rbAmarr_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Race = Race.Amarr; UpdateBloodlineControl(); } /// /// Handles the Click event of the rbCaldari control. /// /// The source of the event. /// The instance containing the event data. private void rbCaldari_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Race = Race.Caldari; UpdateBloodlineControl(); } /// /// Handles the Click event of the rbGallente control. /// /// The source of the event. /// The instance containing the event data. private void rbGallente_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Race = Race.Gallente; UpdateBloodlineControl(); } /// /// Handles the Click event of the rbMinmatar control. /// /// The source of the event. /// The instance containing the event data. private void rbMinmatar_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Race = Race.Minmatar; UpdateBloodlineControl(); } /// /// Handles the Click event of the rbBloodline1 control. /// /// The source of the event. /// The instance containing the event data. private void rbBloodline1_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Bloodline = (Bloodline)pbBloodline1.Tag; UpdateAncestryControl(); } /// /// Handles the Click event of the rbBloodline2 control. /// /// The source of the event. /// The instance containing the event data. private void rbBloodline2_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Bloodline = (Bloodline)pbBloodline2.Tag; UpdateAncestryControl(); } /// /// Handles the Click event of the rbBloodline3 control. /// /// The source of the event. /// The instance containing the event data. private void rbBloodline3_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Bloodline = (Bloodline)pbBloodline3.Tag; UpdateAncestryControl(); } /// /// Handles the Click event of the rbAncestry1 control. /// /// The source of the event. /// The instance containing the event data. private void rbAncestry1_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Ancestry = (Ancestry)lblAncestry1.Tag; } /// /// Handles the Click event of the rbAncestry2 control. /// /// The source of the event. /// The instance containing the event data. private void rbAncestry2_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Ancestry = (Ancestry)lblAncestry2.Tag; } /// /// Handles the Click event of the rbAncestry3 control. /// /// The source of the event. /// The instance containing the event data. private void rbAncestry3_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Ancestry = (Ancestry)lblAncestry3.Tag; } /// /// Handles the Click event of the rbFemale control. /// /// The source of the event. /// The instance containing the event data. private void rbFemale_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Gender = Gender.Female; } /// /// Handles the Click event of the rbMale control. /// /// The source of the event. /// The instance containing the event data. private void rbMale_Click(object sender, EventArgs e) { BlankCharacterUIHelper.Gender = Gender.Male; } /// /// Handles the TextChanged event of the tbCharacterName control. /// /// The source of the event. /// The instance containing the event data. private void tbCharacterName_TextChanged(object sender, EventArgs e) { BlankCharacterUIHelper.CharacterName = tbCharacterName.Text; } #endregion } } ================================================ FILE: src/EVEMon/BlankCharacterControl.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 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 rkJggg== iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAABM6SURBVHhe7Vp5WNVl2p6ayj2XFDW1DJdSc2MTRRAVkR0UNHaOssp2WAVkFxJUFEVERAUVFcmt 0nHNJZfEFCttc0YrU9umz8n65vrmD/T57vvMeZvz8UkBOZNeF7/ruq/f4T2/5X3u536W9z384Q9tRxsD bQy0MdDGQBsDbQy0MfCQMNAHR1JycmpcfHyqNi6uVYiN06ZqNJpUa2tr/4fErOZPw8TExPS7//peLn36 sdS9Xy/vXDwv77x3Qc7+jHp8Ji7oxs/ge+J0/bs6nLpwTk6dr5Pte3aJi5tbQfPf/JBcOXbsWNMrn1+T 1w8fkMqdNbJhxzbdeeOuWtm0+7Wfwb+rdm7Xfbce16yr3SJrt1fL2prNsmbbJskrXiLWUyc/egQMHz7c 9MCRw1K8tkyylxZIFpCzrFAWwqD8FUuBIh3y8HnxmpVSsmm9FFetlaXr1khhRakUlK+S/LIVkpSXJZbW Ex89Anr06NFvppdnwRT7aQUTp9jqYANPTrKbUmBrN/VnOLq5FMwO8CuwtLbyXbW58l7RhjWyCITkr14h uauWSXxOuoyztnr0CLhfJD7WxGHv6OC7/8RbDdWv75AVVRVSSO+XFktOSZFos9Nk3MQJjz4BhrY/bnB4 zZrl95fPP2s49W6dVO/ZgZBYJoVlJXcXUQErQUBWmlg86gTQeGXzH3E8oT98fX39v/v+rw0f/fmK7D16 WHKXFkpafk6DqeW4gCVrV8vCkmWizUgVC6tHXAEkgIY/iaNdu3btcXQIDAzU3P7hbw3Xvrwux985JYtX rpCY+YkNo0zGBjq6u6at3bpJCspWijY9RcwnjGcIPNYEHpK618Q09N6n8U/B8I6dOnXqMmfOnOAffrzT cP3mDTlbf15K1pVLUkZaw/CRLwfhMY/P9vVJ27V/ryyrKJNYHQGWhRxvAoqY30bE/fLTb3siXPZP6euc D893gPFPBwcHh//thx8art+6Kefff0/WVm2Q9JyshpdHjwrB5R3xzg4hoaGZh08el+L15RKzYL6Yjbdc ynE92uP8lB5/NCClddNtKjkZjrfuyf8iACH/VIcOHej5iO9v3274HLKvu3hB1m2skqy8hQ1jTExiQJQR 3tkL7+oZFR2dd/zsGR0B0WlJYmY5bgXGn9GjB85dgc5AO+AJPQktn6YykgmKbmp8cFxd0/Kn6wjgI56A /NsHBgWFMuF9eu0vcqLujKzZsF4y83IbTM3NUkHQEFw3GNcPwnuMY7XapceQF4qQCCNTEsXU0qIc40MA fv8C0B8gWU8DVARJaNmhMrPKykxQTxkc/JvJetKkSZMTExPT1ldW1h49fuyDSx99eBtl6+759y7e3ntg /werVpfWRkZHpZqbm09qPANFgJ+f35yvvv2m4f2PLsufjh6RZaUlkpKVcdfU3DwPrxyPOYwDAeNw/Tg8 wyJGG7v66OmTsmRNqUQkx4uJpUU1xq2A8YA5MEpPhhHOXQCGRPMP5VVlPOKzHSTaoSMOxGmnXjhCQkLC duzcue/mV7fuffjpJ3Lq3FnZ+9Yh2f7GbqmqRc++ZbNsqNki1bteEyasQyeO3StaUfyms4uzBsmuE2dD Arx9fPxvfHWrgZKvfeN1yVm8SGKTE++ONhlbgNdOBcd2MH4qrp2KW4hpUEDlkZMnpLB0pYQnxIqJhfku jM8A3AAHwFpPwnM4dwMYCs0/lPfpYTqdxnfG0RWHu7u7R03t9t3ffPedfIz6fOLsaal9c4+UV1fJUngk d/kSyVjyqqQtytUhozAPPf5iKVhVLKVV63TXZuZm11pNnDjN08vT/7Mvvmg4WXdWqrZvlaSsBTI3Krxh xKiRuXitLV4/VW+8HQ0HpgPOsdrYzYffPi6LSpZLaHyMjLUw24dxDcBl8Sz9dVSCMcCcwDBo3mHofcpc Gd8NR1x8XMIHly9d+xIZ+r3Ll+TAsbdkDbJ0VsGrEj0/UTSR4eIbrBGfuUHiHxYsmqgICUvSijYzTeKz 0yV5YbZkFxVIMcoX7vv60PFjd/ceOShlVeslMilOvOcENgx56cVkGD4S6jPVy94Sc6K8bYApgGNMbOzm g8ePoisskrkxkTLG3OwAxiOAUMAPcAUsDQhovgIMY5/ep+zp+fT09MxbX9366YsbX0r9B+/Ljtd3S9Gq lRKfkvyjywz33WNMTeL79e8/CTHSh9JGvPTu82xf6+GjRmqnuTjtjEjQ3knKydQRwXP2kkVSuGqFbsUX EhslM/28G14YPCgcRvP+AUx4wIvAcBgyEjAFSMS06JiYzSR/4bIlegJMD2I8EggHAvQEWPwmAih/xj5j XqvVxt+4efOnq59/JqfRk2+p3S6Fy5bKK74+NcNHjHDjdbxeVQW8+P91ZQONX5ju7OG+KS0vW0dCLFpY bUaaRKcmiVeQ/93njAdqWOeBrsAzQG8851ngeeBFYDQwgQR4eXltXlayUsJio2V2UAAUYLof42FAiF4B TjgzBFQOaH4SbKwAZ2dnl/qLF69euXZVTpw+JZVbqiUjJ+uWvcP0DERFdxLE9hX2P8mShvsNm4//053h uycmTrJJSMxM+zIpJ0OiUMMj5seLd7Dm6779nrXHhJ8EGK+s4d2BPsBAYBhgBjAMHPBeTf/+/ZONehul 9OzVK7VT587RGJ8DaIBXAOaKsQDLIUthywggCawAjPvqLVt2Xrl6VY6fOinlleslZUHaTRvbSTHdu3fv 0aVLl6eRIzohUtqzm8NtBOONL+TZsDujYUS78VZWocgbN5Jzs2Qe6ngkVDDd1fk1PKeb/hqWLtbxAQC9 T/nTeCZCepdw1IOfZwI+AOPfE2C1YCmkgkgmiW3+oVQQFBQ09zpi/iiML9tQIalZGWI7ZUo6UkI3GN8V 6aELowTe7wjvd8J9XShhvIneY/Zld9ZTD37mGL972tHZKWUZqkY8lrPzoIJoEDFi5MuUMT3G+k3pM/4p ZWU8SxyVwmTIUsecwP6CJDD7ewMshxzjvVQQS27LGiFFwLaamr11WIxUbq2W5MwFgt2ZrayG7Nnh+adh fDcUiu7w/jMgoDfuI+P02kCAJWgwwA6NZ4JjNKw/r41JiN+ev3wpCEjQKQGrPCYzPoMdHT3ImKexNJqy pmcnAgwHfs+8wOaIyqAKZgPsBUjOUIBEcv3AUGzZYWNjY4ukd28HmpP0/IXiqwm6Yzx4kCuM7kzDIdee 8LwRjB8A4431GftlvIWxxwlyYixF7M4IXRcHmOgnP8zM3FxTXrXhp6TsDAmJi2EZvdd/wACu+O7n9cn6 Z7AikFSSSSP5PBJDz1MFLvr3kXCqjmHXcgLisV9fd+FdKcGmZUh0pFhPsd1NqQNdDQxnjz4KxlsA9Ay9 pRoWylXFKT/Tg/Qkv+d1lLVlTt7CowXY5QlP0Op6h5FjRrOvp0G8h9Lm9byWeeAlgJmd0lYJkirg80gA VcB3kkCuCRhuzEUtJ6BiXUXtvsMH0eTky6xAfxk67KVkGNsN6KtfmNDw8cAUgBNl8+EOeACUIcExZ4Be aQyOOwUEBq5Zv2WTxKQli194MPb3rE7p71XGM85pJD3K8FCrPZ4ZbgwFqoPv4jvZNY4BSJSqAC0n4ODh Qx9U19ZIQnqquHjNEKM+vZ1gKGN3GMDujP05X0jWvQBmXxrPidALytOcHKHUQc+SDJI102KcRdYb+/fJ fDRHgZFhYmtvdx3j9CbVwhxAyQ8EGM80iDFN8DMJYbKj+qgwgp851hdgNWEFaDkB5y/W3169vkIiErVi 7+4iWMAwthnjTDD0Do32BVh+aDwNJ/ucgGGs8x6CnmK8MhdQ0pysey8jozCW2PT8XAmcFyp2Lo7/zXH9 NbyHSZOVhOWM5ZUG8cy/SQrzgeoSSdgYgPmB8c8yrPoSfGz+8diHn3x8dylaVU10hNi7uQi8zQfTk/QO DQ/Un6kAGkOp8hrGKSdACfYD6CWCTQmN4YTpVRLBxc7Mc/UXdKtAP+QAO1enexinQphAVSZXS1rVWNEo Jrdu+mfzmfQ6Gya+m12kofzZmTb74MWPn6k7e/tVtLsBEaEyfYabtO/QXkmdWXouQAJIBqXNrM+GhUbT K4xPTo6T4OQJfuYYGxwSQ+NMjYyMvC5ibZELAryxiLKxt6MCqCbDXp6eVMarM1XAUGCi4zspeYJq4btI UOu8jxuf2L1nz+WC5UW6zOzkOUMg1UyM03AuONh2khBbYAygWGcTxEmpbpByZRNCqH06Fb/00uAJEyaE vnuxXrKxovQK8BXLiVZfYpwhwNLJfsCwlKk1hiEJqnVWZKv3K+Nb7n0aULyieHdxWalo5oWJ+yteMmjo kBqMs+cmAYx7lioaT6/T4+y4aKTag2vsMUP5kiBOuE9ERMSit8+clvS8XPHAe0abjj2HceYXdnNUFRWj FKCM0alUDxqq8oJ6f6uMx3N0qzje3DE8IiK/YlMllqqR8IyPjLeZ+D7GtQBVwBJG2bPW0niybmh4U6zr lhlcFAHtgW4bKiv37zt0EFtgmeI0041E79ATzCrC5KnaWc7L8LmN1WBIuPqONrXo4EPIZhczM7PZ23ft uBeVFC9egb4yw3f2/wx4bkCZfnLM4so7NF6VmiblRstVi81VI/DUtGnT3LHB8mP19hoJ10aLnZPDvWd6 9VyM53FRw1I6BmACZQ75td3dVhttyBAJoIyYWAblLXr1zALs4szWBMisIH+xnTq1DkYw8dH7bEIo42YZ r3764r4B91fRTncsLy/f9m59vawsWy0+mkBsbZnW43kqwVJlLL2sHs0hoEWebupiEsCkwrgbNt3Boaik vEyXB2b4ektgWIhYWFpW4DtKUy006JlfTDTK8/qfvrjB2hE7yanXb9yQvfv/JCmZ6eKKRDvg+efX4lnc 1GCFYa+hFMCa3zgEHojBhg9RiYWSZoYeiebHU5sQX5+IbtDT34fbVhIUFvKd+TiLdHzPcqNKTZOTUcbT 8/zRD6vJLsgvUZcuX7517sJ5KUOzNTc8FD9uWJ4EQVwOc1+P21rsLdgvsLQxwf5HCNAlQD0B7L9dR40e VZqRm/39XGx4uiFLv4JQiIrXfm1nPy0TxvHaX5yYLuvh4P4iN1BSU1PTP/zoo5totGQXVprz0xeIi4f7 zWf79VuIS+l9EsB1PfsLNlVU46++50HIwVABlDfbUDYk0Ta2tntTMjL+4TMnSFxmeYo34jUtO0vC5kVs NTUzo1Sb7LUVAQ4ODs7I+Nu+/vYbufThZUh/v+QXFoj/HM3fh40YXgqBBOBaKoA5gHmGbS37C1YZ5qUm 3/EgjOczFAGUNeXN1pILEk4qY9LkyYfh+X/MQrPi5Okhnn4+/AFDFi8vurMgM2OXn79fnIWFhQ1+M+nD hIcOrzeaHJt58+bFb9y4cfcnn35yh15/G/uK27DIyl2UD+mH/d3EzGwdEqIvRMIfP9ljsALwvVQgO8bW L2hawYyqAmSdy0+WO7a+KcBCMwvzN3yDAr6dFeAnjjM9xHW2l/iHzJXEBalSXLpKtr1WKwffOiLvnKuT C+9dFCyo5PTZd+St48dkz5tvyuaarSRMElLmi7e/7w386LkK22reiP0QcBYOAthheui9b7ih8auJthW2 3vcWqoBljeWNZY7lji1vLJAF5LxgbFwxdbp9nRcU4IzM7YB1gtvsf4ZFMH4IiUHfMB/bZ8gbkv3qQiBP srHSS0xLlfCoSEg+COV0ylFjY+MFqAbeSA0h8H4ECAgGAdzS4oKLVabxcrZFLW1rCfm5E8QDdKUQYDLS AMkkAMjApJOHvvTi2ok21nVOHm737JwdZSrg4O6qI8XVa6a4IVe4A25enuICtTi6ud6ztJrw9qAhgwtg +Cx43Qdxr4yn/Nles/sbA7C97gawZf63Z//GZKkwoArYhJgAXJ4yQ8/XK2EBznHAnL59+2aCjA3YyjqK Hyn/jH9YuoP/27trbjX+Dv6+MmL0yMPYS1yNxVQcjHSGp2cBQUAYEIExep5Zn3HPd6n2mv3/rzZZrfX0 L92nVMAJMBcwE3Ptzt2fYCARIAEEP0eSCOAVwANgVeCuj9rTU7tG3EMIgrGhwDwmPMY8wIUPN1KU8Vz9 seypzP8fkX5jQtSagBNhKHBZyvU5jWOXFgUkAVQEQyMBYJ4gGczkJIpgSWNdZyWJ0IPfc5yEsMwy0aqd n4fCeJKhSiIlyC6MJFCa9BJzAhOjRm8QDY8zAFeMHOPSmUSRFBJAQngP5U5V8DncvWWzwwUP1x9U3e/q eRqvDkMSqASGA3MCEyPVQANoCDM3VUGv0kh6nPmCf9Ng/mbPazwAhgU9zurCPoPJjuQy3/xuMW9odOPP igTWYTZInCi7RE6cy2Gu1rh3R6O4QcL+XcU/kxpj2xbgfiG9rX7U4P18jtpBotdbvYnxSwY8iO8UCZyg 2ofjxOk51mq10Ukpj9AbSUP5mV4eCjCR0mhublBJJFIlOrXO/12SXUsIakwEFcH8QGNoFNtnetUQHON3 jG9ex+t5X2OPP/TGGxKliGCloPfUfhybFvVzuDrTWMMNUiVz3vtIGX0/pagtKENCaFhTUNe3RHVt17Yx 0MbAg2HgfwFn37I1Hks2+gAAAABJRU5ErkJggg== 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 galotLtVDAAAAABJRU5ErkJggg== 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 BEXWJdoXTfdOAAAAAElFTkSuQmCC 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 gg== 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 Ba4QkBKiAAAAAElFTkSuQmCC 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 126, 17 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2 +QAAAk1TRnQBSQFMAgEBJAEAASgBAAEoAQABMAEAATABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABwAMAAeABAQIAAQEBAAEIBgABaAEBFwABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHA AdwBwAEAAfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANC AQADOQEAAYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ ATMDAAFmAwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJm AgABZgGZAgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEz AgABzAFmAgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEA AWYBAAEzAQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/ AQABMwFmAgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEA ATMBmQFmAQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEA ATMCzAEAATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEA ATMBAAFmAQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEz AZkBAAFmATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEA AWYBmQFmAQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFm AcwB/wEAAWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEz AZkBAAGZAQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIA AZkBZgEzAQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHM AQACmQH/AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZ Af8BMwEAAZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEA AZkBAAHMAQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFm AgABzAFmATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFm AQABzAKZAQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/ AgABzAH/ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEA AZkBAAHMATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEz AQABzAJmAQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEA Af8BmQHMAQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEA Av8BMwEAAcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEA Av8BZgEAASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4 AQAB8AH7Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA///AP8A/wD/AP8A /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A /wD/ACYAAf+8AAL/AQAC9AH/ZAAB/wH0Af9QAAT/AvMBvAEcAe8B8QH/YAAC/wHyAe0B8QH/TwAC/wHy AfMC9AHxAZMB7QGSAfAB9AT/WgAB/wHzAfQBBwFEAbwC/1AAAfcB8AEHAfIB9AG8ARwB6wFtAZIC8gHv AfEB/wMAAv9TAAH/AfIBBwHvAQcBbgG8AvEB9AT/SwAB7QHzAf8B8wG8AQcC7AHtAe8B7QH3Ae8B9wEH AfIB8wHyArwB8wL/TQAC/wL0AfAB7wEHAe8BvAHxAfABBwHwAfID8AHyAfQB/xkAAv8BAA//HQAB7QHy A/8B8AFuAesB7wH0AfEBBwH3AewB7QGSAe8DkgHvAfEB8wH/HAAR/x8AAf8B8QEHAe8C7AEHAbwB8AHy AbwBBwLwBAcB8QH/FgAE/wH0Av8N9Ab/GAAB7AHxAf8BAAH/AfABbgHsAe0BvAH3AvMB7wLsAZIB9wPv AgcB8wH/GQAC/wP0BfMG9Ab/HAAB/wHyAQcB7AFLARMB7AIHAusGBwHxAfIB/xQAA/8C9AfzAfIB8AIH AfMB8gHxAvIB8QX0B/8SAAHsAbwB/wEAAf8BBwFuAe0B8AH0AW4B7wHyAfMB8AEHA5IB7wMHAfAB9AT/ EwAC/wH0AfMB8QHwAbwBBwHvAZMB7wEHAbwB8AHxAfIC8wX0Af8ZAAP/AQAB/wHzAewBcwFuAUoB7QHs AUsBEwXvAbwC8gH0AQAE/w4AAv8B9AHzAfABBwG8AfEBBwLvAQcB7wHtA+wB7QHvBOsB8ALyAvMF9AP/ EQAB7AHwAf8BAAH/Ae8C7AHzAQAB7AHvAfEB8AG8AQcC8AQHAbwB8AH0Av8C9AH/EQAC/wHzAfABBwFz AW4BFAFEAUMBIgFDARUBEgHrAewB7QHvAgcBvAEHAbwB8gH0GQAB8wHwAfMC9AG8AXMBwwGZAW4BkgHs AXQBSgHtAW4BSwJuAe8B8AG8AfMC/wH0AfMB9AH/DQAB/wH0AfMB7wIVAesBkgHsARMB6gEVAeoCFALq AfcB7AHrARIB6gHrAewBBwHvARQBBwHyBPMD9AL/DwABbgG8Af8BAAH0ARwC7AHzAfABbgHxAf8B8wHv AUQBBwW8AfAB8QHyAfMB/wH0AfMB9AH/DwAC/wH0AfABbgkOAwsDEQFEAfcB8gH0Av8ZAAHzAQcB7wHq AewB9wEcAsMBmQHvAQcBcwFEAXMBdAFKAREBFQFuAbwB8AHyAfQB/wH0AfIB8wH/DQAB8wG8Ae8B7AFt AUMBEgFtAesB7AHrAeoB6wGSAusB9wHvAQcC7wHsAe0B6wFtARQBQwHqAQcBvAHvAQcB8QPzAvQD/wwA AW0BvAH/AQAB9AHtAusB7QHrAZIB9AEAAf8B8AETAfcBvAHzAfQC8wHyAvMB8gLzA/QC/w0AAf8B9AHw AW4GDgEQAUsBdAQcAgcBvAHxAvMB9AL/GQAB9AG8AW4DSwFEA24B9wEcAW4BSwFKAXQBSgJEAW4BBwHy AfQC/wH0AvMB9AH/CwAB8QHtARIBFQFtAesBEgGSAuwBbQESAewB9wMHAbwBBwHwAQcC7wIHAe8B9wHr AuwBFAJtAewBvALyAvMB9AL/DAABbgG8AgAB8wHtA+sBbQHsAe8B8AHvAewBFAHvAvEB8gH0BP8B9ALz AvQD/w0AAf8B9AG8AREGDgFLAXQCkwSZAQcCvAHyAfMB9Af/FAAB/wHxARwBGgEHAUsBRAHvAfEB7QOT AUsBbgFEARABQwFEAW4BBwH0A/8B9ALzAfQB/woAAfIB6gESAeoB9wHvAQcBvAHwAgcBvAEHAfcB7wG8 AfECvAEHBu8BBwG8Ae8BBwG8AewBFAHrAe8B6wHwAvEB8gHzAfQB/wwAAewB8AIAAfIBHALsAm0BbgES AUMBEQFKARQB8QHyAvAB8QHyAfMB9AEAAv8E9AH/DgAB/wH0AfABFQUOAQ8BSwJ0AZMCdAFzAm4BdAGT AQcB8gH0Bf8B9AP/EwAB8wH2ARsBBwFLAe8B8QFvApQCmQREAUMBRAHvAfEB8wH/AgAB/wPzAfQJAAH/ AfEC6gHvAfQB8wHyAvMB8gHxA/ABvAPwAQcBkgHtAuwC7QL3Au8BBwG8AQcBkgLsAesB9wG8AfEC8gHz Af8LAAH/AW0BvAIAAfIBBwEcAewC6wHqARMBQwFEAUoB8QH/AfIBvAHyAfMC8gHxAfMD9AT/DAAD/wH0 AfEBkwFEBg4EEQEQBA4BEAESAbwD9ALzAfEB8gHzAvQC/xEAAf8BvAGTAe0B6wGSAXQBdQKaApkBRQJE AUUB7QHvAbwB8QHyBPQB8wL0Af8KAAH0AuwBBwH3AvEBvAEHAbwE8gHxAfIB8AHtAeoBFQJDAeoBbQHr Ae0BkgTvAwcB7wHtAewB9wHxAvMB9AH/CwAB/wHqAbwCAAHyAe8D7AH3ARMBFAFDAUQBbQHvAfIB/wHw AbwB8wL0AfMB8QLyAvMB9AH/DAAC/wLzAfIB8QG8AZMBbgFEAQ8NDgHtAbwB8gHzAfIB8AG8Ae8BbQHs AQcB8wL/DwAB/wIAAfQBvAHxAfIB7wEWAXUBlAGaApkBRQNEAe0BcwHvA/IC8wP0Av8LAAHyAewB6gES Ae0BFAERAUMBbQHsAQcB7APqARUBEQEPBQ4BFQHrAZIF7wEHAfABvAHtAW0B6gHwA/QB/wwAAeoBBwIA AfEBHAGTARwBbgEcARIBFQFDAUoB7wHsAe8B/wHxAfAB9AH/AfQB/wH0A/MC9AL/CwAC/wHyAewB7wEH ArwBBwKTCEsBRAMOAUsBkwG8A/ABvAEHAZMBRAEOARMB8AH0Af8PAAHzAv8BBwFuAewB/wHwAXQDdQHD ARoBbgNEARQBRAGSAfIB8wLwAvQD/w0AAfQB8AEHAm0BBwG8AZIBEwMVAUMFEQIQAg8BDgEVAewB9wEH Ae0C7wG8AQcB7wHtAe8B7AHyBP8MAAHqAbwBAAH/AfEBcwEcAZMBHAHtAeoBQwFEAW4B7AFuAfQB/wLw AfQB8wj0BP8IAAP/AfQB7wFDARUB7AHvAgcDkwF0BHkBdAEiAg4BSgJ0BW4BSgFEAg4BDwG8AfQB/w0A Af8B8QG8Af8B9AGUAUsBRAH0AfABdAF1AZQBGwL2Ab0BdAFLAUUCRAHsAfEB8gHvARwB8wX/DQAB/wH0 AfAB7wFtARQB6wG8AfcB7AFDARUCQwERAkMDEQEQAg8BFQHsAesBFAFtAewBvAGSAfcB7AHrAQcB8gP/ DQABbgG8AQAB/wHwAW4B6gEcAXQBSgFtAUMBSgFzAW4B8gEAAfQBvAHxAf8B8QHyAv8C9Af/BgAD/wL0 AfMBvAEcAUoBbgFzARwCkwN0BHkBSwIOAUQCdAFEAg4BIgUOARAB7AHxAfQB/w0AAfQBHAEHAf8B8wGU AUsBRAH0AfMBkwEaA/YBGgGaAZMBmgFvAkQB7QHzAfEBHAF0AfEG/w4AAf8B8wG8Ae8B8AH0AfIB8AHs AREBQwYVAxECEAHqAewBFQLqAW0B7wHsAm0BvAH0EAABbgG8AgABBwFKAUQBbgF0AW4BSgETAXQBkwEH AgAB8wEHAfEB/wHwAfMCAAHzAf8BAAL/CgAC/wH0AfMB8gHwAbwBkwFvAW4BSwJEAUMDIgMRAUQDDgFE AksCDgFLAW8BbgFKAUQBSwFzAZMB8AH0Av8NAAHxAW4BHAHyAfMBbwFLAW4B/wG8AQcEGgGaAZQCkwFv AUQBSwEcAfMBvAF0AXUBBwH0A/8UAAH/AfQB8wHxAe0CQwETBBIBEwIVAxEBEwHtARIBQwHsAfEB8wEH AfcB8AHzEQABSgG8AgABHAEVAUQBSgFuAXMBSwFtAW4BmQG8AQAB/wHzAbwD8AH0Av8B8AH0DAAC/wHx AQcB7wHtAW4BHAFEFA4BDwFLAW8BdAOTAQcBvAHyAfQC/w0AAbwBGgGTAbwB8wGTAZoBkwHwAW4BSgFu ARwFkwFuAUsBbwF0AQcB8gK8AZoBmQH0FwAB/wLzAfIB7AEVARIB6gHrAuwB6wHqARMBFAEVAhEBEwHv AQcB7wG8AvQB/wH0Af8SAAFKAQcCAAEcAkQBSgFLAW4BSwFuAUoBmQHwAQAB/wHyA7wD8AK8AfQMAAH/ AfQBBwESARABDgFEAW4GDgEiAhUBSgNLBEoBQwEPBA4BFQFuAZMBcwHtAQcBvAHzAfQC/w0AAe8BvAGT AbwB9AKTAQcB7QJLAkQBbQFuARwB7QHvAewBbgF0AbwB8gH0AfMBvAGaARoB9A4AAfIBBwG8AfMC9AH/ AfQBvAEHAfcB7wHwAewBFAHqAewB9wIHAfcB6wESARQCFQERARMBvAHzAfQE/xQAAUoBvAIAARwERAJK AW4BkgEHAZkC/wHzAfACvAIHAe8BBwHzDgAB/wH0AfEB7wESARwBcwEPAw4BSgF0AXoDmgN0AXMCmgJ6 AZkBSgQOAUQBkwEVAg4B6gHvAfEC/w0AAbwBdAGTAQcB9AP/AewCbghEAe0B8wL0AfMB7QJKARwB9A0A AfQBBwHvA/cBEgGSAesCkgLsAQcBbQETAW0B7AEHAvIB7wHsAW0BEgEUARUBQwHqAfAZAAH/AW4BBwL/ AbwBSgFDAUQDSwHsAf8B8wGZAQcB/wHzA/ABvAIHAbwB8gH/DQAC/wH0AfMB8gHwAbwBHAFDAg4BbgJ0 AXoBeQFKBA4BQwF5AnoBmgFSAg4BAAEOAW4BHAESAesB7QEcAQcB8AH0Af8NAAHzAXQBbgEcAf8CAAH/ AW0BRAEjASIBQwMiARABIgERAW0B8QH/AQAB/wEHAksBHAHyDQAB8gHvAfEB8AIHAW0BEgHsAfMB8gHv AfQB8QH3AeoB7AHtAQcB8QH0AbwB7QHrARIBEwEVARQB7AHyGQAB8wFLAW4B8wEAAfEB7AFDAUQBSgFL AW4BvAEAAfMBHAHsAf8B8gK8AfABvAIHAvAB9A0ABP8C9AHzAfAB7wFzAUQBEQFzAXQBmgF0ASIEDgFD AXkBmgKZAUoCDgFDAW4BkwK8AfEB8gHzAfQD/w0AAfMBcwFuARwB/wIAAfQFRAEVAUQBFQFDAiIBEQHw Af8CAAHwAXMBFQEcAfINAAHzAfcB7wL/AfQC7AEHAbwB8wMAAfAB7AHrAe0B7wG8AfABBwHtAesBEgET ARUBEwGSAfQZAAHyAUsCRAHzAfQBHAFEARUCRAFuAfIBAAHzAhwB/wHxBLwBBwG8AQcB8gH/EQAD/wH0 AfMCvAHvAesBSgFzAXQBIgMOAUoBdAGaAXQBbgFKAQ4BEQFuAZMBvAHyAfMD9AP/DwAB8AFzAW4BRAHt Af8BAAHyASIBbghEARUBIgHxAgAB/wG8AUQBSgGTAfQNAAH/AfAC7wEHAe8BkgHxAQAB/wMAAf8B8wHv AuwB7QP3AewBbQESAhMB7AHxGQAB/wG8AkoBcwEVAhwBcwFEARUBRAFKAfIBAAHxAW4BvAH/AfABBwO8 AQcBvAHxAf8UAAL/AfQB8wHyAfABvAEHAZkBdAFKAw4BIgJ0AXMCHAIHAbwB8AHzAfQG/xAAAQcBdAFL AUQCSgG8Ae8BbgFLAkQBQwIiAUMBFQJEAUMBvAHwAe8B7AJEAUsBBwH/DgAB/wP0AfMB9AH/BgAB/wHy Ae8B7AHrAewB7QHsAW0B6gISAesBBwH0GQAB/wEcAUoB7AGZAXMBRAFuAXQBSwFEARABRAHxAQABkgFK Av8BvAMHAbwBBwG8AfIVAAP/AvQB8gHwAbwBmQFEAksBDwIOAUQBcwGTAQcBvAHwAfEB8wL0A/8UAAHy ARwBbgFzAnQBbgFLAXQBSwJKAUQCDwEiBEQBEgNEAUoBSwFzAfAB/xwAAf8B8gHvAewCbQISARQB6gHt AQcB9AH/GQAB9AEcAUoBBwHwAXQBRAFLAW4BdAFKARABQwG8AfEBSgFtAv8BvAQHA7wB/xUAA/8C9AHy AbwBbgIPAXQBbgEQAg4BDwFzAZkBvAHxA/QC/xYAAf8B8wEHAZkBmgF6AXQBSwF0Am4BSwFEAw8BQwFK AkQBFQFEAksBdAGaAQcB/x4AAf8B9AG8Ae0B7ALrAewBBwHyAf8bAAH0AW4BSgG8Af8BvAFzAW4CSwFz AUQBFQHsAeoBSgGSAv8B8QQHAfAB/wG8AfIB/xQABP8B9AHyAQcBEwEOAUoBkwF0AW4BDwMOAewB8AHz AfQE/xcAAf8B9AHxAbwBGgGZAZoDdAFLAiIBDwELARACRAFzAW4BSwGZAZoBmQG8AfQB/yAAAf8B8wHx A/AB9AH/HAAB8gFuARIBvAH/AfMBcwFuAUoBFQFLAXMCRAIRAZIB8gH/AfMB7wMHAfMB/wHyAfAB/xYA Av8B9AHxAe8BDwEUARwBmQGTAXQBRAMOAW0B8AH0Bf8ZAAH/AfMB8AGZARoBdAGZAZoBdAMiAQsBIgFE AUoBdAEaAXQBmQEHAfIB8AH/RQAB9AEcAXMBvAEAAfMBmQF0AhUBRAGaAZkBbgFDARUB9wEHAfAB8gEH Au8BBwHzAQAB8AHyAf8WAAL/AfQB8QHsAQ4BHAKZAZMBcwELAw4B7QHxAfQD/x4AAfABdAFLAZkBdAFL AiIDCwFEApoBwwF0ARwBSgLtAf9FAAHzAXQBSgHwAQAB/wHyAbwCSgFEAUoBGgEbApkBBwHwAQcCvAEH Au8B8wH/AQcB9BcAAv8B9AHwAW0BHAEHAZMBcwFLARACDgERAXMBvAHzA/8fAAHzAQcB7wGZAXQBbgNL AUQBCwFLAXkBdAGZARwBvAEcAW4BvEYAAfIBBwFuAfADAAHyAUsBSgFEASIB8wH0AfMBBwHwAf8B8AQH Ae8C8QEHAfQXAAL/AfQBvAHvAbwB7wFKASIBDgEPAUMBbgGTAfAB8wH0Av8hAAH/AfQB8wHwAQcBdAJv AW4CRAJKAW4B7QHvAewB6wHsAbwB9EQAAf8B8AGZARoDAAEHAkoBRAFtAfQBAAH/AbwB8QEAAfQBvAMH Ae8BBwHvAfAYAAP/AfMB8gHxARwCDgFLARwBBwG8AfIB8wP/JQAB8gGTBHQBbwNEAUoBRAFKA0QBSgFE AfJEAAH/AeoBBwH/AQAB/wHtARwBSgFEAXQB9AEAAfQBvAHxAQAB9AG8AQcB7wEHAbwCBwHyGQAD/wH0 AfMB7wEQAREBkwEHAfAB8wH0A/8lAAH/AfABkwJ0AcMBmQFvAkoBbQZLAW4B8AH/RQAB6gG8AgAB9AHs AkQBcwGZAfQBAAH0AbwB8QEAAf8B9AG8AQcB7wHyAvAB8hsAAv8B9AHwAewBIgHsAfAB8wH0A/8mAAH/ AfABdAFLAXQBwwFuAUsCSgFzAfAB8QEHAnMBvAH0Af9GAAFEAe8CAAH/AQcDGgGZAf8BAAH0AvACAAH/ AbwBBwHvAfMfAAH/AfQB8wHyAQcBbQHwAfQC/ygAAf8BvAFLAW4BdAHDAZkBbgFEAewB/04AAUoBvAMA AfQBGgHxARoB8AMAAfQB8AH/AQAB9AMHAfMgAAL/AfQB8wHxAfIC/ykAAf8BvANEA0MBSwHzTwABbgG8 BAAB/wH0AfMB/wMAAfQB8QIAAfMDBwH0IQAD/wL0Av8pAAH/AfQB7wF0AZkCdAFuAe9PAAHyARwB8wsA Af8B8QIAAf8B8AK8Af8kAAL/LAAB/wG8AXMDmgEcAfMB/00AAf8BBwG8DAAB/wHxAwAB/wHzAfRTAAH/ AfQBHAGTARsBBwHyTwAB/wHzAf8MAAH0AfNaAAH/AfQB8wH0AfYB/10AAf8B8gH/vQAC//8A/wD+AAT/ uwAD/wH0Av+IAAn/KAAD/wH0ARQD/4cADf8kAAP/Ae8BRAH0A/8VAAH/FQAE/wwAAv9GAAX/AvMB9AHz Cv8hAAL/AfMB7AFLAe8B9AP/FAAB/xAAC/9QAAX/AfQB8wHwAewBvAHxAfIB8wL0Cv8aAAX/AfABEwFz AXQB8wj/FQAc/0kABP8B9AHzAfIB8AH3AUQBSgGSAQcB8AHxAfIB8wL0CP8YAAT/AvQB7wFKARwBcwEH AfIB9Aj/EgAN/wH0BPMB8QHyAfMB9A3/QgAE/wH0AfMB8AEHAe8B7AFKAUwBRAHrAe8BvAHwAfEB8gHz AvQH/xYABP8B9AHyAfABFAFzAnkBBwHwAfIB8wP0Bv8PAA3/AfMB8gHwArwB7AEPAUMB8AHyAfMB9Az/ QAAD/wH0AfIB8AHvAZIB6wESARUBSwJSAkoBkgG8AfAB8gHzBfQG/xIAA/8B9AHzAfIB8AG8AQcBSgEa ARwBmQFzAgcC8AHxAfIC8wH0Bv8KAAX/AvQC8wHyBPMB8gG8AfcB7AHrAW0BEQFKAUMBEgEHAfAC8wT0 C/87AAP/AfQB8gEHAfcBEgFDAUoBUQVSAVEBSgHsAbwC8gHzBvQF/xEAAv8B9AHyAfEC7wHsAesBbQG8 Ae0BbgFtAusB7wO8AvAB8QHzAfQE/woAA/8C9AHzAfEEBwO8AQcB7QESARQBEQEPAUoBHAFKAUMB6wHv AQcB8ATyA/MC9Af/FwAC/yIAAv8B8gEHAewBQwFLBFgEWQF6AZoBGgG8AfEC8gHzAvQD8wL0BP8PAAL/ AfQB8gEHAe8B6wJDARABmQK8AeoBmQFEAhABbQHwAfEEvAHxAfMB9AT/CAAD/wHxAe8BBwGSARIBDgET AesC7wHtAhAB7QGZAUoBFQFDARwBRAFDARMB7QHvBPcCBwO8AfIB8wH0Bf8WAAL/AfIXAAH/CQAC/wH0 AbwB6wFKAXkCmgIaAXQBWAF6AZoCGgK8AfED8wLxAvQB8wPyAfQE/w0AAv8B9AHzAfAB7AEUAUoBSwJ0 AZkB8AHyAfcBHAF5AXQBSwFEARUB7QLxAfACvAHwAfIB9AT/BwAB9AK8Ae0BFQFDARQBEwFKARUBEQEP ARMBFQFDARUBDwEVAXMBSwEPAhEBEAEPARQB6wHsAesB7QHsApIC9wIHAfAB8gHzAfQD/wQABP8OAAH/ AfMB8QL/DwAD/wMAAf8JAAH/AfQB8wHtAXMBmQIbAfAC8QFKAZkBGgHwBAcB8AG8AfAB8QLvAfEB9AHz AfIC8AHyAfQD/w0AAv8B8wHwAesBFAFLApkCGgEHAewB8gHrAe8BvAGZAXkBUgFLARUBbQG8AfIB8QHw AbwB8AHyAfMD/wcAAfEB6gFKAW0BEgHsAUQBFQHqAW0BSwFKAUQBEQIVAUMBDgFDAUQBEQMPAUoB7QH3 Ae8CHAFzAUoBFAHrAvcC7wG8AfEB8wP/BAAB/wH0BP8CAAP/BwAB/wHyAQcB9AP/CAAG/wHzAfQB/wIA Af8JAAH/AfQBBwHsARoBGwHzAbwB8AHyAfEBUgHzAgcC7wIHAbwCBwQcAfMB9AHyAfACvAHyAfQD/w0A Af8B8gHrARUBeQEaAfMB8gG8AfABmQFuAewBbQG8AvAB7wGZAXQBUgFEARIB8QH0AfMB8QG8AfAB8QH0 A/8GAAHzARwBSgEVAUMBFAFzAXQBRAEVAeoBRAJRARABDwFDARAEDgEVAfIC8wEbAhoBmQF5AlgBRAES Ae0C9wEHAfAB8gH0Av8EAALyC/8CAAT/AfABBwP0Av8DAAn/AfIBvAH0Av8BAAH/CAAC/wHxAe8BBwHw AfIBBwG8AvMB8gEHAfEBBwHvAfcB7wG8AfADvAHvAxwBcwLzAfICvAHwAfME/woAA/8B7wFKARoBGwHw AbwC8gHxARwBmQFzARoDBwG8AQcBHAJSAUoB6wHyAfQB8wHxAbwB8AHyAfQD/wQAAf8B8wHsAUoBSwJK AUMBEgFzAXQBSgFEAUoCSwFEAREDDwFDAewB8gHzARsBmQEcBVECSwFEARUB7QLvAfAB8gH0Av8EAAH/ AfcB8wH/AfQB/wH0AfID9Aj/AQcB8AHyAfMB8gHzAfQG/wHzAfIC9AH/AfQBkgHxAvQB/wEAAf8IAAH/ AfQBvAIHAbwB9wEHAfEB9AH/AfMB8gHxAfABBwH3AQcB8AHxAfIB8QG8AQcB9wNzAQcB9AHyAfACvAHy AfQD/woAAf8B9AHwAUoBHAH0AfAB7wHwAvMB8gG8AZkBGwG8Au8B9wHvAQcB9wFzAlIBSgHsAfMB9AHz AfEBvAHwAfMD/wQAAf8BBwEUAUMBRAFKAXQBSwFEAUMBSgFuAUQBFQNDAREBDwEOAeoBBwHzARoBdAFR AUsESgZEAW0B7wEHAfAB8gH0Av8EAAH/AbwB7wL/AfQB8wHvAfMK9AIHAfIB8QHwAfEB8wP0A/MBkgHw AvMB9AG8Ae8B8gHzAfQB/wEAAv8HAAH/AfQB8AK8AgcB7wHwAfMB/wL0AfMB8AMHAfAD8gHwArwBHAJz AXQB8wH0AfICvAHxAfQD/wkAAv8B8wEVAW4BGwH0Au8B8QHzAfQB8gHxAbwB8gIHAfcBkgHsAu8B9wFL AlIBRAG8AvQB8wHwAbwB8gH0A/8DAAH/Ae8CRAEVAREBQwFzAXkB7AFKARUBDgEQAQ8CDgEPAUMB6gHz ARsBHANKAVEEWAFKARUCEAFDARUBRAHtAbwB8QHyAfQC/wUAAf8B7AHyA/8C7wPzAfAB8QLzAfIC8wLv AfEBvAEHAbwB8QHyAQcC8gHxAQcB9wPyAfEB7wHyAvMB9AX/BwAB9AHyAfEC8AHvArwB8gLzAbwB7ANK AewBBwHwAvEC8AHxAbwCcwFMAZkB8wHxAvAB8QH0A/8IAAL/AfQBBwEVAZoB9AG8AQcBvAHxAfMB9AHz AvECvAHvAfcC7wH3A+8BSwFSAUsBcwHzAfQB8wHxAfAB8gH0A/8EAAHzAQcB7AFKAUQBQwEVARMB6wEU ARABFQFRAUoBEAIPAeoB8AEaAXkBUgFRB1gBUQFLAUoBEQEQAUMB6wHvAbwB8QHzAfQC/wYAAfAB9wP/ AfMB7AHyAvMBvAGSAfIC8QHyAfAB7ALvAgcBvAHxAu0C8AG8Ae0BvAHyAvEB7wEHAvIB8wH0Bf8HAAH/ AvQC8gHwArwC8QH3AW4BdAJ5AVIBUQFLAfcB8AHxAvIC8wFzAkwBHAHyAfEB8AHxAfIB9AP/CAAC/wHz AesBUQEaAfAB8gHxAQcB7QG8AfMB9AHzAvIB8QHwAgcB9wEUAfcCBwHtAUsBUgFLAfEC9AHyAfAB8gH0 A/8EAAH/AfQB8wHvAewB6gFEAkoBRAFKAhwBUQFEAQ8BbQHyApkBGgdYAVEBWAF5AlEBRAERARMBHAEH AfAB8QHzAfQC/wYAAf8B9wG8AQAC/wLvAvQB8QHtAbwB8QLwAZIB6wEHAesB7wEHAfABvAESAQcC8QLv AfEB8gHxAQcB7wHwA/MB9AH/AQAD/wYAA/8D9AHyAfEB8AEHAfcBSwGaARoCGwGZAXkBUgFLAQcB8QHz AvQB/wHvAkwBUgHxA/IB8wL0Av8IAAH/AfQB8AEUAVkBGwHwAfMBBwISAesB8QLzAfQD8QG8AQcBbQER AUMBkgEHAe8BSwFYAVIBBwH0AfMC8gHzAfQD/wUAAv8B9AHzAe8BcwJKAUQBHAEaAUoBFQFDARIB8AHv ArwBeQdYAVEBWAGZAVECSgFEAesB7wHwAfEB8gHzAfQC/wcAAfIB7AHyAgAB/wHsAfIB/wHzAQcB9wHw AfEB7wFtAfcB7wHrAewC8AHtAbwC8gHxAesBvALyAfAB6gHwAfQC8wH0Av8BAAP/BgAH/wHzAfEBvAHs AZkBGwG8Ae8B8AEHARwBeQFSARwB9AT/AfABSwFMAVIBvAHxA/MB9AP/BwAC/wH0Ae8BSgFZARoB8gH0 AfEB8AHyAQcB7wHxAQcB6wEVARMB9wEHAewB6gG8AZkB7wG8AQcBbQJSARwC8wLyAfQE/wYAA/8B9AHy AbwBHAFKAXMBHAFEAhEB7wK8AfABmQhYAVEBUgEaAVEDSgFtAQcC8gLzAfQC/wcAAf8B7wFtAfMB/wEA AQcBkgH0Af8B8wHvAbwB8QHsAe8CvAGSAesBvAEHAfcB8gHzAfEB7AH3AfIB8wHxAewB8AHzAf8C9AL/ AgAD/wYAAf8B9AX/AfQB8gHwAXMBGgHzAewBEgEUAeoB6wFRAVgBeQH0BP8B8QEVAUwBUgG8AfIB8wL0 BP8HAAL/AfQB7AFLAVgBGgHzAfQB/wH0AfMB8gEHAeoBFQFKAksBFQEUARwB7wS8AfEB7AFKAVIBdAHy A/MB9AT/BwAD/wL0AfIB7wEcARIBFQERAe0BGgG8AfIBGgGaAXkDWAJ5AlgBUgFRARsBcwJKAXMBkgHx AvMD9AL/CAAB9AHsAe0B8wEAAfIB6gHsAfQB/wHyAfMB9wEHAfAC9AHxAewB6wHzAfEB9AHzAZIBbQEH AfQB8wH3ARwB8QX/AwAD/wYAAv8B9AX/AfQB8QGZARsBvAFmAosBswESARUCeQH0A/8B9AG8AUMBTAFS AbwB8wH0Bv8HAAL/AfQB7AFLAXoBmQL0BP8B8wFzAVIBegFYAUwBdAG8AQcB8QTyAfEBkgEVAUwBcwHx AfIB8wH0BP8LAAL/AfQB8wHwARwCEwH0AZkB8gEbARoBmgF6AZkCeQKZAnkCUQHzAXMBFQFKAXQBBwHy AfME9AL/CQAB8gHtAewB9AHtAewBFAHsAfQBAAHzAQcB8gH/AgAB/wEHAW0B8gL/Ae0B6gHvAewB8ALs AfAJAAP/BgAB/wLzAfQE/wH0AfMBmQHzAewBkQG1Ae8BtQGRARQBmQG8Af8B8wH0AvMBvAFDAUwBUgG8 AfMB9Ab/BwAC/wH0ARIBSwF0AZkB8wX/AfQBBwFKAXkBWAFSAUsB6gHxAfIB8wHyAfEC8wEHARABUgF0 AfMB9AX/DQAC/wH0AfMB8QHrAe8B8AHxAhsBGgWZAhoBvAGZAVIBUQHzAW4BFQFKARwB8AHzA/QE/woA AfAC7AGSAfEBvAHrAfcB8wIHAfIBAAHzAfIBAAH0AQcBkgHyAe8B6wG8AfEB7wHtAesBvAH0CQAC/wcA Af8B8QHwAfMC9AL/AfQB8wEHAfMBHAH3AbwB8QEJAbQBbQEaAbwC8wHxAfAB8gEHAUMBUgFYAbwB8wf/ BwAC/wH0AesBSwFSAZkB8wH0AfIBBwHxAQcB7AEVAUoBmgEaAXQBRAEOARMB7AH3AuwC9AEHARABUgF0 AfQF/w8AAv8B8wHyAe0B8QEcAxsCGgKZAbwD8AG8AZkBdAFYARsBSgEVAUQBcwHxAfQH/woAAf8BvAHs AfEB/wEAAbwB7AGSAQcB8QL/AQcB9wL/AfEB7wHsAe8B8AL/AfEBkgEHAfQB/wkAAf8HAAH/AfQBvAEU ARwC8wL0Af8B8wHwAhsB9wEHAbwBuwHrAZkC8QH0AfMB9wFDAQcB9wEVAVIBeQHyAfMD/wsAAv8B9AHs AUsBTAEcAfMB9AHvARUBEQEcAZkBHAGZARoBBwFLAUUBEAEHARoBTAFKARwC/wHvAUMBdAGZBP8SAAH/ AfMB8gGSAfEBGwLzARsCGgK8AfACGwHxArwBdAGZARoBSgEVAUQBHAHzCP8MAAHwAfMDAAHxArwB9AEA AfMB7AEcAbwBAAH/AfAB8QHwAf8CAAH0AfAD/xEAAf8B9AEHAUsBSgHsAfAB8wP0AfIB8QHyARsBBwG1 Ae0BBwHyAfAB8wH0AfMBkgFSAUsBSgFRAVgBmQHyAfMC/wwAAv8B9AHvAUsBUgF0AfAB8wHwAZkB8gHw ARwBGwHxARoBSwF0AbwBdAGZAfEBvAGZAbwB/wH0Ae0BRAF0AZkB9AL/EwAB/wHzAfAB7wHwAvMCGwG8 AhoB8QTyAfABvAF0ARsBmQFKARUBSgGZAfQI/xEAAf8B8wHwAv8B7wHwAfIB7wHzAQAB8wHyAf8GAAL/ EQAB/wH0AQcBUQFMAksB9wHyAvQB8wHyAfEB8AHyAfMB8QHwAfEB8wL0AfMB7AJ5AVIBWAF5AbwB8gH0 Af8OAAH/AfQBvAFKAVIBTAG8AfMB9AHyAvQBcwJ0AUwBUQJMASsBUQHwAfQB8wH0Af8B8gFtAUsBmQG8 AfQB/xQAAf8B9ALwA/MCGwHwBBsB8gHxARsB8gGZAXkB8wGZAUoBFQFKAZkI/xMAAv8BAAH3AbwB/wEA AfEBBwP/AgAB/xcAAf8B8wG8AVEBWAJMAUsB6gHwAvQC8wPyA/MD9AHyAXMBmgJ6AVkBUgG8AvMB/w4A Af8B9AHxAesCUgF0AfIB8wL/AfMBSwEsASsBRAFSAUMBJQEsASMB7wH0Av8B9AEHARQBWAEaAfEB9AH/ FAAB/wH0AfIB8QEbAfMDGwHxAhsE8wIbApkB8wGZAUoBFQFuAbwF/xgAAfQB7AH0A/8BvAHyHAAB/wHz AQcBUgFYA1IBdAEcAfEE9APzAfQD/wH0AfIBHAEaApoBegF5AXMBBwHyAfQB/w0AAv8B8wH3AVEBUgFK AQcB8gH0Af8B8QEVAUwBSwFzAZkBeQJKASQBdAP0AfIB6wFLAZkBvAHzAv8UAAL/AfMB8AHyBRsB8gbz ARsBvAEbAfMBdAFKAUQBcwHxHQAB8gHqAfIB/wEAAfQBBwHxAf8bAAH/AfMBBwFSAVkBWAJSAbwB8AHy AfQK/wH0AfEBHAQaARsBGgG8AfMC/w4AAf8B9AHwAUQBTAFLAUoB8AHzAfQBBwFKBRoBGwF5AVMBUgLz AfIB7QFEAXQBGwHwAfQB/xUAAv8B9AHxAfIGGwbzAfEBGgH0AfABUQJKAQcB8x0AAf8B7wHsAfQBAAGS Ae8B/xwAAf8B9AHvAVIDegFYAXMB8AHzAfQK/wH0AfABHALzAvQB8AHzAfQC/w8AAf8B9AHzAQcBSwFS AUsBbQHwAfIB7wFRAZoEGgL0AXoBeQLyAZIBQwFRAhoB8wH0Af8WAAH/AfQB8wHwAfQEGwfzAfAB9AHz AXkCSgF5AfAB9B8AAe0B8QHyAe0B9B0AAf8B9AG8AZkBvAGZAXoBWAFRAesBBwHzCv8B9ALwAvIB8AHy AfMB9AL/EQAB/wH0AfIBHAJSAUoBbQG8AfcBcwGaBRoB9AHzAZkB8AGSAUoBUgGaARoB8QH0Af8YAAH/ AfQB8gHwAfICGwfzAfIB8wH0ARoCSwFzAbwB8gH/HwAB9AH3ARwB8wH/HQAC/wG8AfAB8gHwAZkBegF5 AVIBSwHrAQcB8wj/AfME8QHzAvQD/xEAAf8B9AHzAfABdAJSAUoBEwHsAW4BegGaBBoB9AEbARwBbQFK AXQBGgLxAfMB9AH/GAAC/wHzAfIB8AHyARsK8wF0AUsBdAHwAfEB9AH/HwAB/wHxAfAB/x8AA/8C9AHy ARoBmgF6AVkBUgFKAusBHAG8AfAB9AH/AfQB/wLzAvID9AL/FAAB/wH0AfMBvAF6A1gBSgFDAUwBmgIa ARsB9AEbAXkBFAFRAZoBGwH0AfAB8wH0Av8ZAAH/AfQB8wHxAfICGwTzARsC8wEbAZkBWAF5AfAB8QH0 Af9EAAX/AfMB8AEaAZoBegF0AhwC7wEHAfQC/wH0Av8B9AT/FwAB/wH0AfMB8QEHAZkBeQJ0AVgBmgIa ARsC8wHwAhsB8wHyAfAB8gH0Av8bAAL/AfMB8QHyAfMBGwbzARoBmQEaAfAB8gH0Av9HAAP/AfQB8wHw ARoBmQIcAQcCvAHzAv8B9AP/GwAC/wH0AfMB8gHwAQcCmQIaARsG9AHxAfAB8QHzAfQC/x0AAv8B9AHy AfEH8wLyAfAB8gP/SwAC/wL0AfMDvAHwAfEB8wH0Av8gAAH/AvQB8wHyAfABvAHwARsB8gHzA/QCvAHx AfIB8wH0Av8fAAL/AvQB8gG8AvEC9AHxAbwB8wH0Av9OAAP/BPQG/yEAAv8B9ALzAvIB8QPwAfED8gHz AvQC/yIAAv8C9ATzAfQD/1EAC/8jAAP/AvQG8wP0A/8lAAr/gwAD/wP0Bf+4AAP//wD/AP8A/wD/AP8A jQAQ/4EAAv8LAAb/GwAB/wHzDPID8wH/WAAE/yMAB/8FAAP/AfQB8wH0Av8bAAH/AfAN7wEHAbwB/yEA Af8B9AH/CgAB/ygABv8iAAH/A/QJ/wL0AfMB7wH3AfQB/xwAAQcG7QfsAe0B7wHzHwAC/wHzAfIB8wL/ BAAC/wX0A/8aAAb/AgAK/xcAB/8BAAH/AvMF9AL/AvQD8wHwAewB7QEHAfQC/xcAA/8FSwRKBkQBcwHx Bf8ZAAL/AfQB8gLwAfMC/wIAAv8B8wHyAvEB8gLzAfQD/xgAB/8BAAH/BvQD/xcACP8B8gHtAe8B8QHz AfQE8wLyA/EBkgLvAbwB8wb/EgAB/wHzAfABvAFLAUoCSwREARUCQwREAXMBvAHxAvMB8gL/GAAB/wH0 AfMB8gEHAeoB8QHzAf8BAAH/AfQB8gTxAvID8wL/FwAB/wH0A/MC9AP/BfMC9AL/GAAC/wH0Af8C9AH/ AQcB7wH3AeoB7AHyAfMC8gHxAvACvAHsAe0BBwHyAvME9AT/DwAB/wHyAbwC7wJLA0QBQwIiAUMEIgFE ARUBcwHwBPEB8wH0Af8VAAL/AvQB8wHyAe0BFAHtAfEB8wH/AfQE8QG8Ae8B9wHvAQcB8QHzAfQB/xcA Af8B8wLwAfEB8gHzAfQB/wH0B/MB9AL/FwAD/wb0AfEB7wLqAe8B8AHyAfACBwHvAewBkgEHAfEC8gTz BPQC/w4AAf8B8wG8AQcB7wFLAUoCRAFDCSIBFQFzAfEB8wTyAfMB9AH/FAAC/wL0AfMBBwFsARMBQwEH AfEB8wHyAvEB8AEHAesB6gISAeoB7AHvAfQB/xcAAfQBvAMHAbwB8AHyAvMF8gPzAfQB/xUABP8B9AHz AvQC8wH0Af8B9AEHAfcB6wFtAe0B7wHrAm0B6gEHAvEC8gfzAvQB/w8AAf8B9AHzAbwBSwEVAUQCQwQi AhADIgEVAXMC9ATzAfQB/xUAA/8B9AHyARECbAEPAewF8QHwAewBEgGuAWwCEgEUAQ4B7wH/FgAB/wHz Ae8BkgL3Ae8BBwG8A/EG8gLzAfQWAAH/AvQB8wHyAvQB8wHyAvMB9AH/AfQBvAHvARQBEQESAesB7wH3 AewBkgHxAvIB8wj0Af8PAAH/AQAC/wFEAUMCEAQiBxAB7AL0AvMC9AH/FgAD/wHzAewBQwFtARIBDwET AbwE8QHvAW0B7AH3AewBEgFtAewBbQHqAfAB/xUAAf8B8gHtA+wB7QL3AgcBvAHxB/IB9AH/FQAC/wHy AfEBvAHzAf8B9AHzAfICvAHxAfQB/wHyAbwB6wETAW0B7QLvAZIB7AGSAQcB8AHzBf8B9AL/DgAB/wHz A/8CQwERASIBFQMiBRABQwEiAW0B8gHzAbwB8gL/FwAD/wG8ARQBQwHsAeoBDwFDAe8C8QHyAfABbQHs AbwBBwHsAW0B7QHvAbUBbQHsAfQVAAH/AfIB7AFtAusD7AGSAfcB7wXxA/IB8wH/FgAB/wHyAbwB7wHx AfQB/wH0AfIB8AL3AZIB8wH0AesB7AHvAesBEwHsAbwB8AEHAe8BkgH3Ae8BBwHxAfIB8wT/DgAB8wGS AewBbQFEAkMDRAFKASIBQwJEA0oBRAEQASIBbQHzAewBBxoAAf8B9AESARUBQwGRARQBDwFDAW0C8QHz ARIBkQH3Ae8B7QHsAesB7AHvAbsB6wESAfIVAAH/AfEBbQESAuoE6wHsAfcB8AbxAfIB8wH/FwAB8wEH Ae8B8AP/AfQB8gHxAe8B7AHrAhUB7AHvAbwB9wETARIB7AEHAfMB8gHxAu8B9wHsAe8B/w8AAv8BvAEi AUQCSgJLAkQBSgFRAUQBSgFLAUoBRAVKAUQB7AFKAZID/xcAAf8B6wETAUMBEwHsARQBDgFDARUB9wG8 AfcBbAL3Ae0B7AHrAewB6wHsAfcB7QHrAfEC/xMAAf8B8gISAhME6gFtAe0B8AfxAfMB/xcAAfQB7wHs Ae8B8wIAAf8B9AHzAfEBBwHrAewB6gHtAbwD7wLsAfcBkgEHAfEC9AHzAbwB8xAAAfQBGgEcAQ8BRAFL AXQBeQJ0AVIBSwFRAUsGdAJ5AXQBSgFEAUMB7AHzAfIB/xYAAf8BBwFmAkMBEwHrARUBDgERARQBEwEH AesBrgPtAesBbQHrAuwB7QHvAewBvAL/EwAB/wHyAeoBFAFEARIBSgHqAhIBRAHrAfAH8QHzAf8XAAH/ AbwB7AHtAfACAAL/AfQB8gHsAeoB7AHtAvcC7wL3AuwCvAPvAQcBvAH0Af8PAAH/AZkBmgEVAUMBSwF5 ApoBdAFRAksBSgV5A6ABmgFLAUoBRAF5ARoB8hcAAfMBEgERAQ4BEAHtAQcB7AEOAQ8BEQEVAewB6wGR AuwB7QLrAewB9wLsAe8C9wL/DgAC/wMAAf8B8gHqAkQBEgETAUQBFQFEARQB6wHwB/EB8gH/GAAB8wHs AeoB7wH0AwAB/wG8AewBBwLvAewBBwLtAe8DBwHtAbwB/wH0AQcB7AESAZIB8w8AAgcBeQF0AUQBUQFL AnkBcwFLAUoCRANKAksBdAJ5AXMBSwFDAUoBeQFzAfIB/xYAAe0CEQEQAeoBkgHvAZIBFAEOAQ8BEQET AeoB7QHsAesBkQHtAfcB7QH3Ae8B7QP3Av8NAAHzAuwB8gH0AgAB8gHqAhECQwIVAkQB6wHwAfIG8QHz AfQB8wL/FQAB9AH3ARMB7QG8Af8BAAL/AfQB8wHxAbwBBwHvAe0B9wGSAesB7AGSAbwB8gHzAfQCAAH0 AfABvAH/DwAB8AEHAZkBdAFLAXQBSgHvAXMDSwFKBEQBSgFLAnQBbgHsAUsBQwF0AXMB6wG8Af8VAAHw AhUCEQESAeoC6wJDARQBDwEQARQB7QHrAeoB7wH3AQcB9wHtAZIB7QH3Ae8B9wL/DQAB/wHyARwBbgHs Ae8B8wG8ARUCDwIRAUMCFQFEAW4B8AHyBvEB8wHyAvEB9AH/FQABvAEUAW0BBwHzA/8B9AHzAfEBvAMH Ae8D7AHvAfAB9AL/BAAB/xAAAf8BvAEcAUoBSwF0AUsB8gEcAUQCSwFKAkQCSgFLAkoBkgH/AewBdAFD AksBBwH/FQAB/wFDARQBDwJtARIBrgHqAWYBEQEOARQBFQEQAeoB9wHsAesB9AG8AfMB8QLvAfcCBwH3 Av8QAAHzAe0BEgJEAw8BEAIiAREBFQFEAesB8AHyCPEB8gHxAfIB/xYAAewBEwK8AfMC9AHzAfIB8QHw AgcBvAHwAQcBkgH3AQcB8wL/FwAB/wHzARwBmQGaAXQBHAHyA0QBSgJEAkoBRAFKAUQBvAHwAUoBeQGZ AUoBHAH/FQAB/wHsARABQwITAQ8BFQERBQ4BEAFtAewBBwHrAe0B8QG8AfAB8QG8AfcC7AH3AewC/xAA AfQB8QG8AeoCbgJEAg8DIgEQAewB7wHrAQcBvAjxAfMB/xYAAQcBFAHsAbwB8wH0AfMC8gHwAwcBvAHw AfECBwHyAfQB/xoAAfMBmQGgAXQBbgFKAUQBSwFuCEsB7QEUAXQBmgHDARwB9BYAAf8BBwHtAeoBEAMP Aw4BEAIOARAB6wHvAfMC7AH3AewCkgHsAe0C7AHvAewC/xAAAbwCbgFtAW4BGgEcAW4BQwEiBA8B7AFt AkQB7QHwB/EB9BcAAfMBbQEUAbwB8gH0AvMB8gHsA+sB7AEHAfIC8wH0Av8bAAEaAXkBdAFLAkQBSwFz BHQBSwF0AXMBSwFtAUoBdAGaAUsB9BkAAfEBFAFDAewCBwL3AewBrgFtAhAB6gHwAf8B9wHsAZIB6wHt AfcB7QEHAuwBvAHsAv8PAAHzAW4BSgFtAnQBSwVEAw8BFAMRAW0BvAHxAvIE8QH0FwAB/wHtAQ4B9wG8 AQAC9AG8AesB6gJtAeoBEgHxA/QB/xwAAfMBHAF0AXMCRAFLAXMBdAJ6AnQCSwFKAUQBSwJ0AfAZAAHz AeoBFAHsAfAB9AHzAfABBwL3AZIBbQERAeoBBwK8AewB7QHrAfcBkgHsAe8BbQHtAbwB6wL/DwAB8gNu AXMBHAREARQDRAFDAkQBQwFEAe0D8QHyBPEB8gH0Av8VAAHwAQ8BbQG8AfMB/wH0AW0B7QFtAesCbQHq AfcB9AP/HAAB/wEHAXQBcwJEAUoCSwJ0AksDSgFLAnQBBxoAAfQB7AFtAfcBBwHxAe8BEwFDARIBrgHr Aa4BEgFDAesB9AHwAewB7QHrAfcC7AHtAW0BkgHzAesC/w8AAfIBbgFKAUQB7QH/AW4FRAJDAUoBbgFE AkMB7AfxAfMB8gHxAfIB9AH/FAAB9AETARUBBwG8Af8B8AEPAewB6wHqA20B7QHzAf8fAAH/AXQBcwFK AUQBSgRLAVEBSgEVAUoDSwFzAfQaAAH0ARIB7AH3AuwBBwJtAe0BrgFsAa4BbQERARQB9AHwAZIB7wHs AQcC7AH3AW0BBwH/AewC/w8AAfACbgFEAe0B9AJuAkoDRAFtAW4BdQFLAUMBFQHsB/EBAAH/AfMC8QHz FQAB9wEOAewBuwHyAe0BFQHrAewBFAESAW0BEgHsAfIhAAHyAUsBSgJLAUoERANKAUsBUQFKAQcB/xkA Af8B7wESAfcC7wFtAfcCBwGSAW0BEwHsAesBEwFtAfQB8gHvAfIB9wG8Au0BBwHqAQcB/wHtAv8QAAGT AW4BSwFEAewBdAJuAUsBbgFKAhMBbQREAW4BkgG8AfAD8QHzBAAB9AHzAfEB9AH/EgABvAEOARMBvAHs ARMBvAH3AuwB6gESAW0B9wHwIQAB/wHsAUMCRAFKAXMDRAJLAkoCRAHzGgAB9AHsARIB9wLvAbwB8gGS AewC9wHtAfcB6wESAe8B9AHyAe8B8gH3AQcC7AH3AeoBBwHzAQcB/xEAAfQBBwFLAUQBbgF0AW8BSwJE AUoBEgJKAQ4BDwFEAW4BbQJuARwB8QLyAf8FAAL/AfQB/xIAAbwBDwERAQcBvAHvAfQBEgFDAZIB7wH3 Ae8BvAHzIAAB/wG8AZkBmgOgAXQDRAFKAXkBegF0AUsBSgHzGgAB8wHqARIB9wLvAgcB6wIVAvcBkQHr ARMB8AH0AfIB8AHyAe0BvAH3AewBBwHqAQcBvAH0EwABBwFLAUQBmQF0AW8BbgNEAUsCbgFEAUMBSgHx AfABkgFuAUsB7QHyAf8cAAG8ARABQwFtAe8BuwHsAhEB6wP0AfAB/x8AAf8BBwSaAaABmgF5BEoBdAOg AZoBmQG8AfQYAAHzAeoBbAGSAfcC7AG1BPcBkQHsAesBbAG8Af8B8wHyAfQB9wHxAbwB7wHxAfcB8wL/ FAACHAHDAXUBdAFLA0QBSgFLAm4BSgFuAfID8QEHARwBcwG8Af8bAAG8ARUBQwFtAeoB7wETARUBbQLz AvAB/yAAAf8BvAEbAfMBGgGZAZoBmQFLAkoBSwFKAXMBmgKZAbwB8wG8AfAYAAH0AewBbAHtAfcB7AFt AZEB8QHzAQcBkQHsAe0B7AFtAfAB/wH0AvMBvAHyAQcCvAHxA/8UAAH0ARwBmQF1AXQCRAFKAkQBbwGU ApkBvAPxAfMBAAH/AfMB8AH0GwABvAERARABEQHqAe8BEQHtAfAB9AG8AfAB/yQAAv8B9AIHAUoBcwF5 AXQBSwFuAZMB8QP/GgAB/wHtAWwBrgFsAm0BkQG8AfMB9wJtAZEB7QFtAfAD/wH0AfEB8AH3AfMB9AP/ FQAB8AJzAXUBbgFEA0oBRAJ0AXMB8AHzBPEB/x4AAf8B7AEPAg4B9wFtAREB8ALvAfMB/yUAAv8C9AHz AQcCdAF5ARwB8AHzAfQD/xoAAfQB7AFtARIDEwHrAfABBwHtAeoCEwGuAeoBvAT/AfMC8AT/GAAB/wHy AQcBcwFLAkQBbgEHAfIBAAH/AfIE8QH0GAAB9AHxAfMB/wEAAfQB8QEVAhABEQH3AUMBFQHzAZIBvAH/ JgAC/wL0AfABHAFzAXQBcwF0AbwB8wL0Av8aAAH0AewBbQHqAusBkgEHAfAB8wG8Ae8B7AHrAa4B6gHv Bf8B9AT/GwAB/wHvA0QB7QH/AgAB9ALxAfIC8QH0GAAB9ALsAfAC9AGSAUMCEQFDAZIBDwEVAfEB7AHw JwAC/wL0AQcBcwF5ApoBeQEHAfMC9AL/GgAB9AHsARQB6wG1B/8B8gEHAfcBbQEHAf8DAAX/HAAB/wEc A0QBSwH/AgAB8wHxA/IB8QH0GAAB9AHtARUB7AHvAZIBEgMRARQB9wEPAREBvAHrAfAnAAL/AvQBvAF6 AZoBwwGgAZoBmQHzAvQD/xkAAf8B7wFsAW0B9wH0Bv8B8wEHAe0B6wHxAf8kAAHzAnMCSwFuAbwCAAH0 AvEB8gLxAfQZAAHwAewCFQFDBBEB6wHvAREB7QH0AfAB8ScAAv8C9AG8AZkCwwGgAZoBvAHzAfQD/xoA Af8B8gHrAW0B9wHxBv8B8QHvAe0B9wH0Af8kAAHwAXQBkwEaAnQBBwIAAf8B8gHxAfIC8QH0GQAB/wHy Ae0BQwERAkMBFQHqAfIB7AH3AfQB8gHwAf8nAAP/AfQB8wGZAsMBoAGaAfAC9AP/GwAB/wG8AewB9wHw Bv8BvAEHAe0B8QH/JQABBwEcAhoBmQF0AQcDAAH0AfEB8gHxAfIcAAHyAbwD7AHvAfMB7QHsAQcBvAHy AfQoAAP/AvQB8AGZApoBvAHzAfQD/xwAAv8B8gEHAbwB9AX/AbwB7wG8AfQB/yUAAbwBcwFuAZoBdAFu AQcEAAH0AfMB9B4AAfIB8QPyAbwB9wG8AfEB9CsABP8B9AHyAfAB8gHzAfQE/xwAA/8B9AHxBvAB8QHz A/8lAAHzARwBdAGaAnQB8AUAAv8fAAH/BfQC/y4ABP8C9AX/HwAC/wP0A/MC9AP/JgAB/wEHAXQBmgF0 Ae0B/1wACv8gAAb/AfQG/ygAAbwBHAEHAf9gAAX/IgAM/ykAAf8B9AH/iwAG//8A/wD/AMAAB/+NAAP/ JgAO/4gAAf8B9AHzAfQB/yUAA/8B9AL/AfQI/1QAD/8jAAH/AfQB8gHsAfAB9AH/IwAD/wHzA/IC8QHy AfEC8gH0BP9QAAP/BPQF8wT0A/8hAAH/AfQB8AERAewB8gH0Af8iAAP/AfIBvAH3A20CFAHqAfcBvAHz AfQC/yIAC/8iAAL/AfQB8wHyAvEG8APxAfIB8wL0Av8bAAT/AfQB8gHtAREBcwEHAfIB9AT/HwAC/wHw AewBFAMVARQBQwJKAewB7wHyAv8cABf/GwAB/wH0AfMB8QHwAgcB9wPtApIC9wHvAgcC8AHyAfMB9AP/ FwAC/wL0AfIB8QEHARIBRAFzARwBvAHyAfMC9AL/HgAB/wH0AfcB6gEVAUMBFQFEAksBdAF5ApkBvAH0 Af8bAAT/AvQG8wLyA/MB9Af/GQAB/wH0AfMB8AEHAfcC7AFtAeoBbQHrAW0C6wLsAe0BkgH3Ae8BBwHw AfEB8wH0Av8VAAL/AfMB8gHwAbwB7wHtARUBSwJzAu8BvAHxAfIB8wH0Av8dAAH0ARwB6gFKAkQBSwFS AXkBmgEaARsCvAHzAf8aAAP/AfQB8wHxAbwB9wFtARQGQwESAewBvAHxAvMB9AX/FgAB/wH0AfMBvAGS Ae0BkQFtAmwBFAVsAm0C6wPtAu8BvAHxAfMC/xIAAv8B9AHyAbwBBwH3AZIB7AFtAUQBUQF0AUsB7AHt AvcBBwHwAfEB8wH0Av8aAAL/AfIB7QFLAXMCSwFSAZoBGgEbAfIBvAHxAfQB/xkAA/8B8wHxAQcB7AHq AUoBSwF0AXkCmQJ5AXQBUQFLAUoB6gGSAQcB8gHzAfQF/xQAAf8B8wHwAu0BkQGuAWwBFQIUAUMBFQJD ARQBbAGuAeoC6wLsAe0BkgHvAQcB8AHzAfQC/xAAAf8B9AHyAQcB9wHsAesBEgEUARUBSgJ0AUsBFAFt AesB7QGSAfcBBwHwAfIB9AL/GgAC/wHyARwBcwJLAVIBmgEbAfEBBwG8AfIB9AH/GAAD/wHzAfABkgES AXMBmQMaArwB8AG8AQcDmQF0AVEBSwFtAe8C8AHyAfQE/xMAAfQBBwGRAfcBkQFsAhQBEQFDAhEBEAER AhUCQwEVARIBbQHrAewC7QGSAe8BBwHwAfMB9AH/EAAB/wHzAQcB9wHrARABEQEVAUsBdAMcAXQBSgFD ARMBFAHsAu0B7wEHAfEB8wH/GwAB/wH0AfMB7AMVAUsBmQLvAbwB8gH0A/8TAAX/AfMB8AFtAeoCGgIb AfAB8gLzAfQB8wHyAfECBwKZAXkBUQFtAe8BvAEHAfEB8wH0A/8SAAG8AfcBuwGuARQBEAFsARMDFAEV AQ8BDgEQAkMBDgEPAUMBbAFtAewB6wPtAe8BBwHwAfMB9AH/DQAC/wH0AfABkgETAUMBSgFzA5kEHAJ0 AUoBFQESAewC7QGSAQcB8QHzAv8ZAAL/AfQB7QFDAUQBeQEbAZkBHAHvAQcB8wX/DQAK/wHyAW0BcwEa AfMB8gHwAfMD9AHzAfIC8QHwAbwDBwGZAXkBUQHsAQcB8AEHAfAB8gH0B/8MAAH0AfcBugGRAWwBFQEU AW0C6wGSAewB6gEUAg8CEQEQAREBDwFDAeoBbQLsAu0B9wHvAQcB8QHzAv8LAAL/AfQB8gH3ARIBRAFz ARoBmQFzAUoBFAIVARQBSgFuAhwBcwJKAewC7QGSAQcB8QHzAv8XAAP/AfQBFAFEAUsBdAGZAZoBmQGS Ae8B8QH0Bf8MAAj/AfQB8wH3AewBGwH0AbwB8QHyAfQD8wHxAbwBBwLvAQcC7wIHARwBeQF0AXMCvAEH AfAB8gH0Bv8LAAH0Ae0BkQGuARQCbAHsAe8BvAIHAe0B7AHqARUDEQEPARACEQEUAW0B6wPtAu8BBwHw AfMB9AL/CAAC/wL0AfIBBwESAUoBmgEbARwBQwIRAUMDFQERASIBQwFuARwBcwFLAUQB7ALtAe8BBwHy AfQD/xQABP8B9AHzAUQCQwHrAbwB7wHtAfcBBwHyCf8IAAj/AfQBBwFtARsB9AEHAbwB8AHxA/IB8AG8 Ae8B9wTvAvcCBwJ5AXQB7AG8AgcB8AHzAfQF/woAAf8BvAKRAWwBEQJsAewC9AHzAQcC7AFtARMBFQIR AQ4CEQEQAUMBEgFtAewBkgLvAgcB8AHyAfMC/wcAAv8B9AHzAfEBBwESAUsBwwHyAewCEQFDBBUCFAIV AUMBSgJzAUsBbQHtAZIB7wEHAbwB8gHzAfQE/w0ACP8B9AHzAe8BFQFLAZkBHAGSAe0BkgHvAbwB8gL0 B/8GAAj/AfMB8QHrAQcB9AG8AgcCvAHwAbwBBwL3AW0BFAHqARQB6wH3BAcBHAF0AXkBdAEcAbwC8AHx AfMB9AT/CgAB8wH3ApEBbAETARQB7AH3AbwB8wG8Ae8B9wLsAW0BEwFDAQ4BFQIRAQ8BQwESAesB7QH3 Ae8CBwHwAfEB8gHzAfQB/wcAAf8B9AHzAfIB8AHrAUoBGgH0AewBEQEVARQEFQIUARMBFAEVAREBQwFE AnMBbgHsAu8CBwHwAfIC8wL0Av8MAAf/AfQB8wHxAfcBFAF5ARsBHAKSAewBkgEHAbwB8QHyAfMB9Aj/ AwAI/wHyAZIB7AHzAfQCBwG8AQcBvAEHAe8B6wIUAUMBEQFDARMBHAFtAfcB8AG8AvABcwF0AXkBHAG8 AfAB8QHyAvME/woAAQcBtAGRAW0CFAETAesBbQHrAQcC9wHvAe0B7AHrARIBQwEOAg8CEAFDARIB6gHs AfcCBwG8AvEB8wH0Av8HAAH/AvQB8wEHARUBHAH0AZkBEQFEAxIDFAQSARUBQwFEARUBSgF0AnMB7wIH AvAC8gHzAvQC/wwABP8D9AHzAfABvAHtAUQBcwGZAewB9wGSAewC7wEHArwB8QHyAvMB9AX/AwAH/wH0 AfEBbQGZAfQDBwK8AQcB6wESAUMBEAESAUQBEAEPAUQB7wHtAW4B9wHyAfAB8QEHAXQBeQF0AQcE8gL0 A/8JAAH0AbsCkQFsAUMBEAEVAeoBEgHvAfIB9wLvAu0B6wFtARMBDwEOAQ8BQwERAUMCEgFtAe0CvAHx AvIB8wH0Av8IAAL/AfQB7wFKAcMB8QFEAUoC6wJtAeoDEgJtARIBQwEVAeoCRAFKAXMBUQHvAbwC8AHy AvMC9AP/DAAD/wH0AfMB8gLxAQcB9wEUAREBSwJKAvcE7wEHArwB8ALxAfIC9A7/AQcBbQEaAfABBwFt AZICBwH3ARQBSgFEAUMCFQFDARIBSgFDAUoBHAHrAe0B8AHvAesBbgJ5AQcB8gHzAvIB8wH0A/8JAAHy AfcBtAGuARQCFQJDARABvAEHAewB7wH3Ae0B9wHtAesBEgERAQ8CEQEQAUMBFAFtAesBkgHvAfAC8gHz AvQC/woAAf8B7QFRAfQBcwFEAXMC7QLsAW0BEwEUAeoB6wFtARQBEQEVAhICRAFLAXMBHALxAfIB8wH0 Bf8OAAP/AfMB8AIHAe8B7AEiAUsBUQFLAUQD7wMHBLwC8ALyAfMB9An/AfQB8QHvAfIB7wF0ARsBHAHs AQ8BFAHrARQB6gEUAewBcwESAREBEAETAW4BcwJKAUQCSgESARMBQwESAXQBeQEcAfMB7wH3AfIB9AT/ CQABBwK7AZEBbAESAWwBEwEUARMB9wHsAW0C7wIHAe0B7AFtAUMCEAIPAUMBFQFtAewBkQEHAfEB8gHz AvQC/wkAAf8BvAHtARMBegEbAW4B7AEcAe8B9wHtAewB6wETAUMC6wEUARABEQETARIB6gJEAUoBUQFL Ae8B8QHzAfQB/xMAA/8B8wG8AgcB7wEUAUsBeQGaAZkB6wHvAQcFvAXwA/IB8wH0B/8B9AHzAewBmQHx Ae0BmQEaAW0BEAEOAQ8CSwFKAUMBbQFzAUQBFQFEAXMB7wEcAnMBSwFEAXMB6gEUAREBQwFLAXkBHAH0 AesBbgHwAfMB9AP/CQABBwK7AuwCkQH3Ae8B9wHrAeoB7AHzAfQB8gHvAe0B7AHrARUCEAEPARABFQET AusB7AEHAfIC8wH0Av8GAAH/AfQB8gH3AeoBFQFEAVEBmgGZAUoBbgHvAbwB9wLtAewB7QHqAesBEwER ARABQwFtAewB6wHqAkQBSwFRAewBBwHxAfQB/xMAA/8B8AHvA7wBbQFLARwBGgEcAeoBBwHwBfEH8gLz AvQH/wHxAW4BGgHxAe0BmQEaARIBEAEOAQ8BRAF0ARwBbQEUAUoBcwEaAZkCHAOZARwBcwFKARQBQwEV ARQBRAF0AXkB8wHvAXQB7wHzAvQC/wkAArsBtAHqAhUBFAETARQCQwEUAW0CvAP3AewBbQEUAUMBEQEQ AREBQwESAusBkQEHAfMC9AP/BgAB/wEcA24DdAGaARwBSgEcAbwB8gH3Au8B7AHtARMBQwERASIBEAHq AfcC7AFtARIBRAFLAXMBSwETAeoB7QHyAf8SAAP/AbwB6gHrAfEB8AETAUsBmQEaAZkBSgHvAvMB8AHz AvIB8wr0B/8BvAFzAZkB8gHtAZkBBwESARABDgEQAewBSwFzAQcBbgFDAZkDGwGZARwDGgGZARwBbQES AhMBFAFSAZkB8wEHARwBvAHyAfQD/wkAAbwBuwGRAeoCFAFDARECEAEVAhMB6wHvAfIBBwH3AuwBbQEV AhEBQwEUAeoB6wHsAZEBvAL0A/8IAAH/AfABvAEaAZkDeQF0AW0BHAG8AfMB8AO7AfcBEQMiARUC9wHr AewB6wFtAUQBSwJ0AlECSwFRAfMOAAL/AfQD/wHzAewBEgITARABSwF5ARoBmQFtAfMB7wFtAe8E9Aj/ AfQI/wHwAXMBmQHzAe0BmQEHARIBEAEPAREBcwFKAUMBHAGZAXMBmQIbAZkBSgFLAZkBGwMaARwBEgHq ARMBbQFRAZkB8wEHARwBGgHyAfQMAAG8AbsBtAFsAkMBEQIQARUBFAEVAeoBFAGSAfQBvAH3Ae0B7AHr ARUCEAERARUBEgLrAfcBvAH0Av8MAAH/AfQBGwGZA3QBEgHtAbwC8wHxAfAB8gFtBBEB7AEJAfcB7AHt AewBbQEVAUsBdAKZAhoB8AHyAf8OAAP/AewBvAH0Af8B7wFKAm4BcwFLAZkBGwGZAUoBBwHsAe8B/wL0 AfIB8QH0EP8B8AFzAZkB8gHtApkB6gERARABQwNKAUQBHAHxAhsBvAFKAW4BHAEaAvMCGwEcARQBbQES AeoBbgGZAfMB7wGZARoB8wH0Af8LAAG8AQkBuwFsARQBQwMRAUMBFQEUAeoBFAHsAfQBBwLtAewBbQEV AhEBQwEUAeoC7AG7AbwC/xAAAbwBcwF0AXMBSgHsAQcB8gEHAbwC8wFDASIBEQEQAeoB8QEJAe8B9wLs AeoBFQFzARoCvAHxAfQB/wwAA/8BAAP/AbwBSgHrAQcB7QESApkBdAFLAZkB8AEcAUsCHAGZAfQBBwLs Ae8B9BD/AfIBHAGZAfEDHAFKA0MBSwEcAm4BSgHsAfABGgFuAe8B8gLzBPQB7wEUAewBbQESAXMBmQH0 Ae0BBwG8AfMB9AH/CwAB8AG8AbsB6wGRAWwBQwERARQBEQFDARQBFQESAfcB9AEHA+0B6wESAkMBFQES AW0B7AH3AfAB8gH/EQAB/wEcAXQBcwFKAewB7wHwAe0BEwG8AfADIgEUAbwB8wEJAe8C7QHsAkQBHAG8 EQAC/wH3AesB9AL/AfIB6wEcAhMCGgF0AksBdAG8ARwBSgF5ApkBbQETAXMBmQH0BP8EAAn/AfMBHAEa AfEB7wJ5AW0BFAFKAUMBcwEaApkBcwFKARQB7QEcAfQBGwEaBPQB8wHtARIB7AFtARUBdAEHAfQBHAEa AfAB9AL/CwAB9AEJAbsBkQHtAWwBFAERAUMBFQEQARUBFAERAQcB9AEHAfcC7QHrARICEQEVAeoB6wGR AbsB8AH/EwABvAFLAXMBSgHqAewBBwG8AesBFAEVASIBEQFKAe8B9AHyAfABBwH3Ae0BbQERAUoBmQHw EgAB/wHxAW4BEgHvAfIB7wFKAZkBGgKZAXQBSgFEAUoBcwIcAUQBSgEcARoBGwG8AZkBHAHyAbwB7AEH AfMC/wQACP8B8QHyAfMB7wF0AXkBcwFDARUBFAFuARoCGwEaAZkBSwGZARsB9AIaBPQB8QHsAW0B7AHq AUoBmQEHAfQB8ALzAfQB/w0AAbwBCQKRAWwBEwEUA0MCDwEVAe8B9AG8Ae8C9wHsARQCEQETAW0CkQG7 AfAB/xMAAfMBSwFRAUsBRAFtAe0BvAHwAeoBIgFDAe0B8gP0AfIBBwH3Ae0BFAFDARwBvAH/EQAC/wH0 Ae8BbgFEAW0B6wEcARoBmQF0AXMBSwFEARUBcwF5ARwBmQFKARQBbgEcARoCGwGZAW4BEgFzAQcB9AL/ CAAH/wHxAXMCeQEVAREBFQEUAe8BBwEaBBsC8wEbAfMC9AHzARsBvAJtAZIBEwF0AZkBvAP/AfQC/w0A AfIB8AK7AZEDFAERARABFAEVARAB6wHyAvABBwHtAW0CQwEUAW0BkQH3AbsBvAHzFQABvAJRAUoBFQHr AfcCvAHrARwE9AHzAfABBwHvAW0BEQFLAZkB8RIAAf8B9AHzAesB6gFRBJkBdAJLAUQCFQEbApkB9AFz ARUBRAFLAXkBmQEaARsBGgGZAUsBBwL0Av8HAAb/AQAB/wFzAnkBSwIUAewB9AHzAbwB7wEaARsCGgEb A/MB8gK8AQcB6wHqAewBSgGZAbwB8wEAAf8B9AH/DwAB9ALwArsCkQFsARUCEAERARABQwFtAe8BBwHy AewBFAEVARIBbQHsAfcBuwG8AfEB9BUAAfQBHAF0AUsCRAFtAe0B7wHwAfMD9AHzAfABvAEcAW4BFQFK AZoBGwH0EQAC/wHzAZIBEQFzApkBcwFLAW0CRAJDAUoCGgEcARoB9AEaAUoBFQFEAUoBbgFzARwBmQEa AXMBEwHvAfMB9AH/BwAG/wEAAf8B8AF0AXkBcwHvAfMF/wHzAfABvATwAfIB8wH0Av8B9AHyAW0BdAEa AfAB/wEAA/8QAALzAfEB8wG7ApEB6gESARQBFQJDARUBEwESAhMCFAFsAZEB9wG7AbwB8gHzFwAB8wJ0 AUsBRAFDAUQB6wGSAQcB8AHyAfMB8gEaARwBSgEVAUsBGgEbAfIB/xEAAf8B9AEHARQBSgKZAUsBRAEV AW0BSwJzARwBGgEbAQcBdAEaAvQBGgFLAUQBFQJEAUoBcwEcARoBcwHqAfAB9AH/BwAF/wMAAf8BHAF5 AXQBHAH0D/8C9AHzAe8BSwEaARsB8gH/BAAB/w8AAf8B8ALzAbsBkQG7AZEEbAIUARUBFAMTAeoBkQH3 AbsB8AHyAfAB/xgAAfACdAFLARUCIgFEAW0DcwFuAUoBRAEVAVEBwwHzAfESAAL/AfQB7QFKAZkBHAES AUMBbQHxBPQB8gHwARsB7wFuAZkB8AG8AvQBGgGZAe0B6wESARUBRAFzAZkBcwESAfMB/xAAAfMBHAF5 AXQBkg7/AvQB8wEHARUBmQEbAbwC/xYAAfAB8wHyAQkBtAJsAesBuwFsAeoEbAFtAewDuwHwAfIB8AH/ GQAB/wHwAZkBHAFzAUoBFQERAyIBEQEVAUoBSwGZAfQB8QHyEwAC/wHzARUB7wEHAe0B6wGSAvIE8ALx AfABBwFuAZkB8QHwAbwF8gG8Ae8C6wHsAZkBcwH3AfQB/w8AAf8B8gEcAXQBcwHsAfAE9AX/A/QB8wHx AfcB6wEaARsB8AHzAv8WAAH/AfIB8wHxAQkBuwKRAa4GkQL3AbsB8AHxAvIB/xsAAf8B9AG8Ae8BmQFz AW4BSwJKAUsBcwEaARsB8wHwAfMB/xMAAv8B8AHtArwB7wEHAfAB8gLzAvIE8wHvAUsB7wHwAfIC8QHw A/EBvAHwAfEBBwLvAQcB7QHyAf8QAAH/AfABmQF5AXQBbgGSAfEB8gfzAfIB8AHvAesBHAEaAfQB8AHx AfQC/xcAAf8D8QEJArsBtAK7AZEB9wK7AQkBvAHwAfMC8QH/HwAB8wG8A5kDeQEbAfIBvAHzFgAB/wH0 AewBvAHxAfIB9wHwAfMJ9AEHAXMB8AHxAfMB9ALzAvIB8QHzAfEB8AHzAfACvAHvAfEB/xIAAfEBBwGZ AXkBUQEVAewBvAHwAfEC8gHxAbwBBwLrARoB8wH0AfAB8QHzAfQB/xoAAfQB8AHzAfEBCQLwAQkE8AHy AvQB8AH0IwAB/wHzAbwCdAGZARsB8xgAAf8B9AHsAfAB8wG8AQcB8gr/AfMBvAHwAfIB9AP/BPQC8wG8 AfAC8gG8AfAB/xIAAf8B8QEHApkBeQFzAUoC7AHtARwB7AFuAewBmQEbAfMB8gHwAfIB8wL0Af8bAAH/ BPIB8wH0A/MD8gHzAf8mAAH0AXMBdAGZAbwB/xgAAv8B7wHxAfQC8wL/BwAH/wEAB/8B9AHzAfAB8gHz AQcBvAH/EgAC/wHzAfABBwOZARwBcwJ0AZkBGgEbAfMB8gHwAfEB8gHzAfQC/x4AAv8H9AL/KQAB7wF0 AZkB8BkAAv8B8AL0Av8NAAH/BgAG/wP0AfMB9AH/EwAC/wH0AfMB8QG8AfAEGwHzAfEB8AG8AfEB8gHz AvQC/1MAAfEBdAEaAfQZAAb/GAAC/wEABf8VAAP/AvQK8wL0Av9VAAH/AXQBGgH/GgAE/xwABf8WAAX/ B/QF/1cAAQcB8lsABv9dAAH/AfT/AP8A/wD/AP8AbgAI/7YADf+xAAT/CvQE/yIACv+BAAP/AvQK8wH0 A/8iAAb/AfQE/1YACv8gAAL/AfQB8wLyCfEB8gHzAfQC/xoACP8B9AHzAfID8QH0A/9UAA3/HgAC/wH0 AfMB8gLwArwBBwS8AvAB8QHyAfMB9AL/FwAF/wL0A/8B8QFLARoBmQF0AUQB7QHzA/8DAAj/FAAF/wkA Av8jAAL/C/QC/x0AAv8B8wHyAfABBwH3Ae0C7AGSAfcC7QH3AQcBvAHxAfIB8wH0Av8WAAP/AfQC8gLx AfMB9AHwAZkBGwGZAXMBSwHsAfAB8w3/FAAB/wPzAfQB/wYAAv8B9AHzAv8gAAL/AfQB8wTyBPEB8gHz Av8dAAH/AfQB8gHwAe8BbQIUA2wD6gESAW0B7AEHAfAC8wL/FgAD/wHzAe8D9wG8AfIB8QGZARsBmQES AUoB6gH3AfMB9A3/EgAB/wHzAe8BkgHvAbwB8wH0BAAB/wH0AfICBwHyAfQB/x8AAv8B9AHxAbwFBwHv AQcBvAHxAfQB/xwAAv8B8wHxAfcBEgFDBGYCEwISARMCFAHqAe8B8QHzAv8WAAH/AfQB7QHrAW4BRAER AesB9wIHAZkBGwGZAksB6gH3AbwB8gHzBP8E9AX/EQAB/wH3AREBFQFtAewB7wG8AfMD/wH0AfEB6gFD AesB7wHzAf8fAAL/AfMBBwH3AZIC7QGSAu0BkgHvAfAB9AL/BQAB/xUAAf8B9AHyAe8BEgIVA0MBDQEV AUMBFQEUARMBFAFmAREBEgHvAfMC/xUAAv8B8wFzARoBmQFzAUoBEwHsAe8B9wEaARsBmQJLAeoB7AH3 AQcB8QH0A/8B9AHzAfEB8wH0Bv8PAAHzAeoCSgEUAW0B7AHtAQcB8QLzAfEB7AEQAUQBbQHvAfMB/xkA B/8B9AHyAZIC7AVtAuwBBwHzCf8TAAL/AfQB8AFtAUMCZgEVAUMBFQINAkMCFALqAWYBEQHqAfEB9AH/ FAAD/wHzAQcBGwGZARIBSgETAusB7AGZARsBmQJLARMB6wHsAfcBvAHwAfMB9wFtAUoBQwFtAfAB8gH0 Bv8OAAH0ARwBcwFLAUQBFQHsAu0B7wEHAbwB7QEVAUQBbgFzAQcB/xkAAf8B9AX/AfQB8gHwAewBbQQS ARMBEgFtAesB7wHyAfQE/wP0Af8TAAL/AfMB7wEVAmYDbAFmAWwBZgESAmwCrgFtAWwCZgHvAfMC/xIA A/8B9AHyAgcB7AETAUoBEwHqAesBbQGZAfMBmQFRAUsBSgFzAW0B7QH3AbwB8QHsARoBmQFzARIB7wHx AfIB8wb/DQAB/wHzARwBcwFLAUQBEgLvAZIB7QHsAhUBSwEcAbwB/xoABPQD8wHyAfABBwHqAhIDEwEU ARMB6gESAZIBvAHyAvMD9ALzAf8SAAL/AfQB8gHsARUBFAETAWwB6gFsAa4BuwEJArsBkQNsAa4BbAFm AesB8gH0Af8SAAL/AvQB8QGZARwBbQEUARMBEgHtAQcBbQGZAfMBmQJzARIBmQFuAuwB9wEHAe8BGwGZ AW0BbgHvAQcB8AHyAfMB9AT/DwAB9AEHAXMBSwFKAZIB8QHvAewBFQERAUsBHAG8AfQbAAPyAvEB8AG8 AQcB7wGSAW0BEgEUARUBQwMUARIBEwHrAe8BBwG8A/EB8gHxAfIB/xIAAv8B9AHzAesBFQFmARMBrgES ARMCrgH3AbsBtAGuAmwBbQKuAWYBEgHxAfQB/xIAAv8B9AHzAfEBmQHwAXMBQwEUARUB7AEaAW0BmQHz AZkBeQFzARIBGgFuAW0B7AGSAu8BGwGZAUsBbgHtAgcB8AHyAfMB9AP/EAAB/wEHAXMBbgFEAesB9wHr ARABSgEcAe8B8AHzAfQOAAL/CgAD8AG8AQcB7wH3Ae0B7AHqARMBFAQVAhQBFQEUARIB7AHtAfcB7wEH A7wB8AH/EgAC/wHzAbwBEgJmAWwBiwJsApEBtAG1AbQBbAFmAWwBiwFsAa4BbAFmAfEB9AL/EQAC/wHx AXMCBwG8AfACFQFDAXMBmQFtAZkB8wEaARwBcwHrAbwBbgFtAesB7AH3AZkBGwGZAUsBbgL3AQcBvAHw AfEB8gH0Av8FAAP/CgABvAJzAUoB6wEUAUMB7QEHAfABvALxAfMB9AL/CAAC/wH0Av8JAAHxArwBBwHv AZIB7AHqARMBEQEVARQDFQJDAhUBFAEVARMB6gHrAe0B7wIHArwTAAL/AfMBBwNmA2wBZgFsAq4BkQGL AUMBZgGLAa4BbAGLAWwBZgHxAfQC/xAAA/8BBwEaAQcCvAHwAe0BQwEUApkBbQHvAfMBGgGZAewB6wHv AUoBbQHsAW0B9wHvARsBmQFLAW0B7AHrAe8BBwK8AfEB8wL/BAAC/wHzAv8HAAL/AfMBBwIcAW0BFQES Ae8B9AHzAfEB8AG8AfAB8gHzAv8HAAH/AfMB8gH0Af8JAAH0A+8B9wHtAeoBFAERARABEwFsAW0BZgMQ AREBtAHqAREBEAEVARIB6wHtA+8BBxMAAv8B8wFDA2YBbAGLAmwDZgFDAWYDbAGRAa4CbAFmAewB9AL/ EAAC/wH0AQcBGgG8AQcB8QEHAfMBEwEVAe8BmQESARwB8wEaAZkBbgHrAZkBbgHsAW0C7AHvARsBmQFL AW4BcwF5AewBBwK8AfAB8wL/BAAB/wHzAvIB9AH/BgAB9AHzAbwB7wH3AhwBbQHtAf8BAAH/AfQB8wHy A7wB8wH0Af8FAAH/AfMC8gH/CgAB8wLvAfcB7QHqAWwB6gGuA5EBtQFtAWYBEAEVARMBuwGRAq4B6gFt AesB7QGSAu8BBxMAAv8B8gEUAUMCZgOuAZEBtAGuApEBtAEJAq4CkQGLAmwBrgHxAf8RAAL/AfQBBwG8 AgcB8wGZAfIBkgEVAe8BmQFEAZkB9AEbAZkBSwETAZkBcwLsAQcC7wHzAZkBcwHsAe8BmQH3AQcCvAHx AfQC/wUAAf8B8wLyAfMB9AX/AfMBvAHvAgcB6gFzARwB7wH/AgAD/wHzAfEC8ALxAvQD/wHzAvIB8wH/ CgABvAP3Ae0B6wKuAbUBuwMJAa4BbAEQAq4BGQEJAfcEkQHtAZIB9wHvAQcTAAL/AfcBFAFDAWYB6gGu AZEBrgGRAWwBZgNsAZEBrgGRAbUBuwGuAmwBrgHxAf8RAAP/AQcBGgIHAfMBvAEHAbwB6gHvARoB7QEa AfQB8wEaARwBcwGZAXMC9wGZAu8B8wEaAXQB7AEHAZkB9wHwArwB8gH0Av8GAAL0AfMB8gLzAvQB8wHw AbwB7wEHAfAB6wHqAQcBvAEcAQcB/wQAAf8B9AHzAfEB8AG8AfAB8gPzAvIB9AL/BQAB9ATvBPcB7QHs Aa4BtQK7AwkCkQEQAbQBrgEJARkBCQO7AesB7QGSBPcCBwHyAf8PAAH/AesBFAFDAWYBrgGRArQBkQGu AWYBDQFmA64BtQHcAbsBrgJsAa4B8QH/CwAB/wYAAf8B9AEHARoC7wHzARoBeQHxAfcBmQEaA/QDGwHz ARoBcwHvAfcBmQLvAfMBGgGZARwBvAF5Ae8B8gHxAfAB8wH0Av8HAAH/AfQE8gHxAbwC7wEHAfIB7AHq Ae8C/wEHAZkBBwYAAf8B9AHzAfIFvAHyAfMB9AcAAfQB7wL3Be8B9wHtAesBkQGuAWwBFAFmAWwBZgG7 AUMBuwESARMBEgFsAa4BtAGRAewBkgL3Au8E9wHxAf8OAAH/AW0BFAEVARIBrgGRArsCtAG1AbQBuwG0 ApEC4QG0Aa4CbAGuAfEB/wsAA/8EAAL/AQcBGgFKAXQB8wEbAZkBvAHvAZkBBwHzAfQB8AEcAXMBmQEa AZkB7QHvAfcBvAGSAe0B8wEaAZkB7AHvARwBBwH0AfMC9AP/CAAC/wH0AfMB8AG8Au8BBwHxAZIBbgEH Af8CAAH/AfABmQEHAf8FAAL/AfQB8gS8AfIB8AH0BwAB/wHwAfcG7wH3Ae0B7AGRAa4BbAEQARUBQwEV Aa4BQwGuARUBEwERAmwBkQHsAZIB9wHvAfcF7wH3AfMPAAH/AfMB7AEUARIBbAKuAZEDtAHwARkCtAGR AbsBtAGuA2wB9wH0DAAD/wQAAv8BvAEaAe8BGwH0AfMCGgG8AZkBHAG8AQcBdAFzAW4BSgFzARwD9wEH AW0BcwHzARsBmQFKAW4BmQEHB/8CAAH/BwAB/wH0AfIB8AIHAfAB7wFzAbwB8wH/AwAB9AEaAZkBvAH/ BAAD/wHzAfID8QHwAe8B9AgAAfIG9wGSAe8BkgH3Am0BEwEVAeoDbQEQAhIBbAEVAW0BrgGRAe0C9wHv BfcB7wH3Af8PAAL/AbwBFAISAWwBkQG0Aq4BtAG7ARkBuwGuAZEBuwGRAWwBZgJsAfAB/wwAA/8EAAL/ AfMBvAP0ARsBGgEbAfQBGgHtAfIBvAHvAZkBGwEcA+8EBwEbAfQBGwEaAQcBmQF5AQcH/wIAAfABBwcA Af8B9AHzAvIBvAHsARoB8gX/AQAB9AEaAZkBBwMABP8C8wL0AfMB7AHwCQAB9AP3AZIG9wHrAWwBEgKu AmwBrgEVAW0BrgKRAeoBrgHrAewB7wf3Ae8B8hAAAv8BvAEUAWwCZgFsAa4BbAFmAZEBCQEZAZEEbAJm AWwB6gG8AfQMAAP/BAAC/wH0AfAB8gEbAfABdAESAXMBmQEcAesBBwG8AfEBGgEbARoE7wG8AQcD9AEa AZkCGwF0AfAE/wIAAf8CAAH0AewB8gH/BgAD/wHzAewBHAG8Cf8BGgGTAbwB9Ab/AfQC/wG8Ae0B/woA AQcC9wGSBfcBkgHsAeoBkQK7A5EBbAFtAbQBtQEJAfcBrgHsAe0I9wHvAf8QAAL/AbwBEwHqAWwFZgGu AQkBGQGLBGYDbAHqAbwB/wwAA/8EAAL/AfQB8wHxAbwBmQIcAW4B7wLsAesB8wH0ARsBGgGZAe8BvAIH AbwCBwHyARoBdAFLAXMBHAEHAfME/wIAAf8DAAHxAe8B9AgAAfQB7AEcAfAJ/wEAAfQBGgGZAe8B9Ab/ AQAB/wHvAfALAAH0CfcBkgHsAxkBuwGRAWYBQwETAbUDCQG1AewBkgj3AfASAAH/AfABEwHqAusDbAKR AQkBGQauAmwB6gG8Af8MAAP/BAAC/wL0AfMCvAGZARsCvAEHAfAB6wHvAvQBGwEcAQcB8gPwAbwCBwEc AZkBvAEcAfAB8wH0A/8DAAH/BAAB7wEHBwAB/wHvAXQB8AH/CwAB9AHvAXQBBwL/BQAB8QEHAf8MAAEH AfcD7wX3Ae0B9wG7ARkBkQESAhUBEwFtAbUCCQKSBPcD7wH3AbwB/xIAAf8B8QETAW0BrgG0AbsBtQK7 ARkB/wEZArsDtAGRAYsBbAEUAfEB/xMAAv8C9AHyAfEB8wEaAbwBGgEHAfEBvAHtAeoBvAHyAfABvAHy AfMC8gG8AfACvAHwARoBGwG8AfAB8gH0A/8DAAH/BAAB9AH3AQcB/wQAAf8BBwFuAbwB9AH/AwAC/wIA AfQB/wMAAfQBBwHrAe0B8wH/AwAB8gHvAfINAAHxBe8D9wPvAu0CrgEUARUBrgFsAW0B9wPvBPcE7wEH AfQTAAHyAeoBbQGRAbQBGQLiA/8D4gHcArsBkQFsAWYBbAH0Af8TAAP/AfQB8gHxAvQBGgHvAQcB8gG8 AQcBEwH3AbwB8AHxAe8B8gPzAvEB8AH0AfMBGgGZAfAB8wH0Af8FAAH/BAAB/wHxAbwB8AH/AgAB9AHv ARIBHAHzAf8EAAH0ARwB8gK8Af8EAAH0AXMBRAHrAfECAAHzAe0B8gH/DQAB9AEHA+8F9wLvAfcB7AG0 AZEDrgG0Ae0BkgHvAQcF9wTvAQcB9A4AAv8DAAH/AewBbQGRAbQBCQLiA/8D4gHcAQkBtAGuAWwBZgHt Af8VAAL/AvQB8AG8AfQB8gEHAfEC8wEHAusB8QHvARQB6gG8A/QB8wHyAfAB8wH0AfABHAHxAfQC/wUA Af8GAAHwAgcC/wHvARABUQG8BwABmQFKAVEB8gYAAfQCSgESAe0BBwHsAfIB9BAAAfIB8AHvBfcB7wMH ARIBbQGRAq4BbQG8AfMB8AG8BvcBBwHwAfEB/w4AAf8D9AH/AQAB/wEHAWwBrgGRAbsC4gX/AeIB4QG7 AbQBiwFsAWYBBwEAA/8B9AL/EAAC/wH0AfMB8gG8AfAB8gPzAe8BbQEUAeoB6wEcAQcBkgHyA/QC8wO8 AfIC9AL/BQAB/wcAAfEBkgFtAeoBEQFLAQcB9AUAAf8B8wKZAXkBBwH0Af8FAAEHAXMBFAEPAREB9wHz EgAB/wHwBfcB8QL0AfADbQGuAWwBbQHwAfQC/wb3AfQB/w8AAf8B9AHyAbwB8gH0Af8BAAHyAeoBrgGR AboBGQHiBP8B9AHiAeEBuwG0AYsCbAH/AQAB/wH0AfMB8QHzAv8PAAP/AvQE8wHyAbwC7AHtAQcB8AEa AZkBHAEHBfQB8wHyAfMC9AP/DQAB/wHwAUMCEQESAfAB/wUAAfMCBwEbAbwBBwHwAf8FAAH/AZIBEQEV ARQB7AH/EwAB8QT3Ae8B8wEAAf8BvAJtAZEBCQKRAfIC/wEAAe8E9wHvAf8QAAH/AfMBvAIHAfMB/wEA Af8B7wFtAa4BugEZAeIB9AP/AuIB4QG7AbQBiwFsAfIBAAL/AfMBvAIHAfMB/xAAA/8D9AHzAQcBbQEU ARwBvAHxARsB7wF0ApkB7AHwB/QD/xAAAfABEQFtARMBEgHzCAAB/wEaAfMJAAHwARQBEgGZAXMBBxIA Af8B8AT3Ae8B9AEAAf8B8wGuAbsCGQEJAZIB8wP/Ae8E9wG8EAAC/wHwAQcB9AEHAfAB9AIAAf8BvAHt AZEBuwHhBeIBGQK7Aa4B7AG8AgAB/wH0AfABvAHwAbwB8wH/EQAD/wH0AfEB7AHrARwB8gEbAfABBwHv Am0BdAEaARwB7QHxA/QF/xAAAf8B7wFzAZkC7AG8Af8HAAH/AfIB9AgAAf8CkgEHARoBvAH/EgAB/wG8 AvcB7wH3Ae8B9AEAAf8B9AGuAbsCGQEJAfcB9AP/Ae8B9wLvAfcBBxAAAv8B8wG8AfABvAHyAf8DAAH/ AfQBvAH3AboBCQMZAQkBuwGRAfcB8gH0AwAC/wHzAfABvAHxAfQB/xIAAv8B9ALvAfIC8wG8ARwB6gH3 AfABcwOZAXMB7QHzAvQF/xEAAfQB8AG8AvIB8AG8AfIHAAL/BwAB9AH3AQcC9AHxAfQTAAH/AbwB9wTv AfQBAAL/AewBkQEJARkBCQHwAf8CAAH/AfcF7xIAAf8B8gEHAfIB9AH/BgAB/wL0Av8LAAL/AfQB8gH0 Af8TAAL/AfQB8wLxAQcBEgHtAfABvAEaAfMB8AEaAZkBGgGZARIBBwL0Av8VAAP/AQAB9AHwAfQB7wH/ DQAB8wHsAfEB/xgAAfAC7wMHAfQCAAH/AfMB7wHsAfcBBwH0BAAF7wG8EgAC/wHzAfQB/woAA/8MAAH/ AfQB/xQAAv8B9AHzAfEB9AG8AZIB7wHwAfMB8AHxARIBHAGZARoBmQHsAe0B9AP/GgAB/wHyAfEB9wEH AfIB9AcAAf8B8wHyAewB8QH/GQAB8gPvAQcBvAH/BAAB/wLzAv8EAAEHBO8B9BMAA/8JAAP/AfQD/woA Av8VAAL/AfQB8wLyAfQB8gH0AfMBHAHrAbwB7QEcApkBvAEHAfAB9AP/HAAB/wH0AfIBBwG8AfMEAAH/ AfIB7wH3Ae8B9AH/GgAB9AEHAu8BBwH0DgAB8QPvAfEgAAH/AfQB8wHyAfMB9AH/IgAB/wH0AvMB8AHz A/QBbQHvARwCGgEbAbwB8QHzAvQC/yEAAf8B8wMAAf8BvAH3AfAB/x8AAfMB8gH0EAAB9AHyAfMB/x8A Af8B9AHyAfABBwG8AfIB9AH/IQAC/wH0AfMB8QT0AQcBGwHwAfEBBwG8AfIB8wL0Av8pAAH/VwAB/wHz AfABBwG8AQcBvAHyAfQB/yAAAv8C9AHzAfAC9AHzAfQB8gHwAfEB9wHrAfMC9AP/gQAB/wHyAQcBvAH0 AgcB8AHzAf8gAAL/A/QB8wP0AfAC8wHyAfEBFAHzAvQC/4IAAf8B8wHxAQcBvAEHAbwB8wL/IQAD/wL0 AfIB8QHzBPQB8gG8AfQD/4MAAv8B8wHxAbwB8AHzAfQB/yMABP8D9An/hQAC/wH0AfIB8wL/JQAI/40A Bf8pAAL//wD/AP8AkAAI/7MABf8J9Ab/GAAB/wMAAf8WAAP/dAAC/wL0AvMB8gHxB/AB8gLzA/QD/xYA Af8BAAT/EwAF/1gAAv8ZAAH/AfQC8wHxAvABvAHvAewB6gQUAewB9wEHAfAD8gHzAvQB/xUAAv8B9AP/ EwAB/wH0AfMC9AH/RAAT/wH0A/8WAAH/AfQB8wHxAbwBBwHvAewBEgFDARUBEQQVAREBQwEUAe0B7wHw A/EB8wH0A/8SAAL/AfQB/wH0A/8PAAL/AfQB8wHyAfEB8wH0Af9DAAH/AfEB8gHzDvQB8QG8AfIB9AH/ FQAB/wH0AfMB8AEHAe8B6wEUARIB6wFtAeoGEgHrAW0CEgHrAQcBvALwAfEB8wL0Af8RAAL/AfMB/wP0 Av8JAAb/AfQB8wHxArwB8QH0Av8VAAH/DgAD/xsAAfMBcwHvB/IC8QPyAfMB8gHwAesBRAHvAfIC/xQA Af8B8wHwAe8B7QETARIBBwHyAbwB6wHqBRIB7AHvAfcB7QHsARIBFAGSBPAB8QHzAfQC/xAAAf8B8gH/ AfQC8wH0Af8FAAT/BPQC8wHyAfADBwHwAfMB9AH/FAAB/wH0Bv8DAAX/AvQB8xsAAf8BmQF5AQcBvAEH A+8EBwS8AfcBRAGZAe8B8gH0Av8SAAL/AfIBBwHtARIB9wHwAbwB7wHwAe8BEgHqBBIB7QGSAbwDBwHs ARMB7AEHBPAB8gH0Av8PAAH0AfAB/wH0A/MB9Af/AfQB8wHyBPEB8AEHAfcC7wEHAbwB8gH0Af8TAAH0 AfID8wHyAfMB9AUAAf8B8wHyAfMC8gLxAf8aAAHzAZkBeQHvAfcC7AHtApIB9wQHAe8BbQF0AgcB8QHz AvQC/xAAAf8B9AHxAe0B6gEHAfMCBwHvAgcC6gMSAesC7QHvAbwBBwHvAQcB7AEVAewBBwLwAbwB8AHy AfQB/w8AAfQBvAH0Af8B8wHyAfEB8gbzAfIB8QG8AgcE7wLsAfcB7wEHAbwB8gH0Av8RAAH0BbwBmQG8 AfMFAAH/AgcDvAEHAfcB8QH/GQAB/wHwAXoBcwHsAeoBEwIQAhEB6gHvArwBkgFuARoB9wEHAvAB8gHz AfQC/xAAAf8BvAESAQcB9AIHAfcD7QHsAm0CEgHtAuwC7QHsAe8BkgHvAesBEwHtAQcB8AG8AQcBvAHy AfQB/w4AAfQBBwL/AfMB8gfwAbwBBwPvAu0C7wGSAeoB7AH3AQcBvAHxAfIB8wH0Af8QAAH/AfcB7QH3 Au8BBwGgAZkB8gUAAfQBkwKZAe8CHALtAfMWAAT/AfEBGgF0AUoBRAVLAUoBRAFKARIBRAF0Ae8BBwPw AbwB8AHyAfMH/woAAfQBEgGSAfMBBwG8Ae0B9wHtAewB7QHsAm0B6gFtAfcB7ALrAe0BbQHrAuwB6wHq ARMB7wG8AfACvAHwAfMB9AH/DQAB9AEHAfQB/wH0AfIB8AK8AwcB7wL3AZIF7QHsARQB6gHsAfcBvAHw AfEB8gHzAfQC/w4AAf8BBwFuAewB7QEcAe0BmQGgAZkB8gUAAfQBkwGaAZkB7QHsAe0B7AHrAZIB9BUA Av8C9AHxAXMBegF5AXQEeQF0AXMESwFzAQcB8QLyAfABvAEHAbwB8AHyAfME9AL/CQABBwETAfABvAIH AewB7wP3AewBEgJtAesB7AGSAuwBkgHsARQBkgHtAesB6gETAewBvALxAvAB8gH0Af8NAAH0AQcB8wL/ AfMB8QPwAQcB7wH3Au0C7AHtAuwBbQEUAW0B6gFtAZIB8QLyAfMC9AL/DgAB8AFuAusBbgFzAW4BmQGg AZkB8wUAAf8BkwGaARoBcwFuAXMBbgFtAW4BHAH/FAAB/wH0AfMB8AHsAXkBoAGaARoB9wLvAbwBBwHv AZIBcwFRAksBkgHwA/IB8AQHAfAC8gLzAfQC/wcAAfQBbQH3AbwCBwLtAe8C8AIHARICbQLqAZIC7wEH Ae0BEQGSAgcB6wISAbwC8wHxAfAB8gH0Af8NAAHzAe8B8gEAAf8B9AHzA/EB8AEHAfcB7AQUARUBEQEV AW0BcwESARQBkgHyA/MB9AP/DQAB/wHtAm0B6wFuAeoBbgGZAaABmQH0BgAB7wGaAcMBmQJuAW0CEgFt AfAUAAH/AfQB8QFzAXkBoAEbAfcB7AHtAe8BvAPyAbwBBwH3AXMCSwHvAfED8gHwAQcC7wEHAbwB8QHy AfMB9AL/BwAB8QETAQcB8AHyAbwB6wGSAbwBBwHyAfEBBwETAe0B7AHrAeoB9wLwAu8BEQHsAfEB8wEH AW0BEwGSAfMB9AHyAfEB8gH0Af8NAAH0Ae8B8AH0Av8B8wPyAbwB7QFtBBQCFQEUAesBdAFzAeoBFAHs AfID9AL/DwABvAHqAW0BSgHqAm4BmQHDAZoBmQH0BgABvAGZAsMBcwFuAW0BSgFtARIBkgH/EwAB/wH0 Ae8BdAGgAfQBBwHvAXMBHAHvAQcB8QHyAfMBBwEcAQcB7QJLAW4B8APzAfIB8AEHAu8B8AHyAfMB9AP/ BwAB7AFtAe8C9AG8AeoC7wH3AbwB7wH3Ae0BuwH3AewBbQHsAe8B8AGSAe0BEQFtAfAB/wH0Ae0BbQHs AfMB9APzAfQB/w0AAfQB7wHsAe0BBwHwAfEB8AEHAfcBbQISAeoBbQESARQBFQEUAW4BeQJzARIBQwES AfIB9AT/DgAB/wHtARIBbgFKARICbgIaAZoB8AH/BgAB/wGTAZkBwwGZAW4BbQFEAW4BbQHrAfITAAH/ AfIBSwF6AcMBvAH0AfIBBwGZAgcBvAHxAfIBHAG8AfABBwFzAksBHATzAfEBvAEHAbwB8QHzAfQC/wgA Af8BFAHsAQcBAAH/AewB6wH3AewC7QH3AewBBwHwAbsB7QHrA+wBbQETAREBEgH3Af8BAAHxARIB6wG8 AfQC8wH0Af8NAAH/AfQB7wHrARQCFQLqARUBEgHqA20BEgEUARUBFAHqAZkBegFzAesBEgEVAUMB7wH0 Av8QAAHwARIBbgFzARQBEgFuAcMCmQEcAfQCAAHzAu8B9AH/AQABvAGTAZkBwwGTAW0BRAFuAZMBEgHv EwAB/wEHAXQBoAHwAv8B9AHzAbwBmQHxAvABHAGZAfABvALwAW4BSwFzAfEC8wHyAfECvAHwAfMB9AL/ CQABBwEUAewB8wH/AfIBFAH3Ae8BvAHvAe0B9wHtAfMB9AHwAbsB7wHtAW0BFAISAeoBEgHsAfIB/wHy ARUB6wEHA/QC/w0AAf8B9AEHAfcB7ALrAW0B6wHsAe0B7ALrAW0BFAITAeoBHAJ5AusBEgEUAUMB6wL/ EAAB/wHvAW4BmQFuAUQB6gSZAe0C/wG8AewB6wLqAQcBAAHyAZMBGgGTAZkBbgFEAUoBmgFzAW4B9BIA AfQBcwF5ARoB8wEAA/8B8QGZAfAB8gEcAZkDBwG8AfEBBwJLAQcC8gLxAfAB8QHyAfQC/woAAewBFAHs Av8B7QHsAe0BkgG7AbwB8QK8AvQB8wHwAbsBkgHrBG0BEgFtAQcB9AHzARIBbQHvAvQC/w4AAf8B9AEH AfEB8wH3AZEB6wHsAfcBBwGSAewBbQETARIBSgFuAZkBGgHtAXMBbgFtARMCFAHqAfMRAAH0Ae0CmQHq AUQBcwEaARwCkwHyAQAB8QETAeoC7AFtARMC9AEcAZkBHAKZAeoBRAEcAZkBcwHwEgAB8wFuAXkBGgH/ BAAB/wHxAQcB8wIHAfEBvAEHAbwB8QHyAXMBSwEcAvIC8QLyAfMB9AL/CgAB7AETAewB/wHzARQB7QHr AewB9wG7AbwE9AHyAfMBvAHvAfcC6wFtAxIB6wHwAfMB7AFtAQcD/w8AAf8B9AEHAfIBAAH3AbsB7AGR AbsBBwHsAW0BEwEUAUoCdAGZAQcB7QHsAesBEwIUAUsB7AHxEQAB9AHtAZoBkwISApMB8QHvAQcBAAH/ AZIBFAHqAe8B7AETAREBkgH/AfABkwG8AZMBmgFuAUQBbQGaARwBvAwAAf8B8QEHAbwB8QHzAbwBSwF0 ARoFAAH/AfMB9AHxAfIB8wHxArwB8AHyAfMBBwJLAe8BvAEHAu8BBwHzBP8JAAHsARIB7AH/Ae8BbQHs AesB7AHtAe8BBwHyAfQB8gHxAfAB8QHyAbwBBwHvAe0B7ANtAewB8AHzAewBbQEHAv8QAAH/AfQB7wHy AQAB8QG7Ae0B9wHvAfcBbQETARUBSgF0A3MBdAGZAe0B6gETARIBSwF0ARwB8wH/EAAB9AGTARoB6wEU AW4BmQFzAfQBkwHwAf8B8wFtAeoB7QG8AQcB7AEUAW0B9AHyAZkBvAEcApkBSgEUApkBBwsAAf8B8QFt AkoESwF0ARoB/wHzArwBBwG8AfQB7wEcAZkB8wEcBOwB8AHyAksFSgFzAfAE/wkAAewBEgHsAf8B8AKS A+wB9wK8AfIB8QHvAfIB8wLwAbwBuwH3AuwB9wIHAfAB9AHsAW0BBxIAAf8B9AEHAfIC/wGSAbsC9wHt ARIBFQEUAUoBSwFzAW0B7AF5AZkB7wHsAesBcwKZAfEB8wH/EAAB/wEHAW4CFAKZARwB/wGTAQcB/wHy AW0B6gHsAbwB7QLqAesB9AHwAZkBvAEHAXMBmQHqAUMBSgF0AfMMAAHwARwEmQFzAVEBdAEaAQAB8wLw ArwB9AG8AfQBwwH/AQcC7wMHAfMBbgFRBRwBmQHwBP8JAAHtARIBbQH/AgAB8gEHA/cBBwH/AQcBkgHr AbwB8QG8AQAB9AEHAbwC8wHwAfMCAAH0AeoB6wG8EgAB/wH0Ae8B8gL/AbwB9wGRAewBbQEUAREBRAFK ARIB6wHqAewBHAF0AXkCmQGgARoBmQH/AfMB/xAAAf8BvALrARwBmQFuARwB/wGTAQcB9AG8ARMB7QPz AfAB6wESAfQBvAGZAbwBBwGTAXMBkwJuAXMB/wwAAf8D8wL0AQcBSwFzARoFAAL/AfQC8gEAAv8B9AIA Af8B8wFLAXkB8wL/AfQC8wH0DQABBwHqAW0B8wQAAfQB8gHwAfEB/wHyAfEB8wHtAbwB8QIAAfEB8wHy Av8CAAH/AfIBEQHtAfESAAH/AfQBBwHyA/8B6wLsARMBQwERARQBEwESAesBbQGRAe8BUgF5ApoBeQKZ A/8QAAH/ApkBBwGZArwBkwHzAvEB9AHwAesCHAGZARoBCAEcAesB9AHzAbwB8wEHAZMBvAGZARwBvAGT AfQNAAT/AQAB8wJLAZkB/wQAAf8B8QHzAf8BAAHxA/8CAAH/AZIBSwG8Af8FAAH/DQAB/wLqAe8GAAL/ AgAB/wH0AfMB8gHzAgAC/wYAAbwBQwH3AfQSAAH/AfQB7wHyAv8B9ALrAeoBFQIRARUBFAESAusBuwEc AXQBeQF6AXkBvAHzAQcD/xAAAf8BBwGZAbwBHAHvAfMBkwEHA/QB8AEHA5kCGgGZAe8C8wH0AfEBkwHv AfIBHAEHAbwBkwH/EgAB9AFzAUsBcwH0BAAB9AG8AfQBAAH0AQcB9AQAAfMBRAF0AfEVAAGSAW0BEgH/ FwAB/wHrARIBBwH0EgAB/wH0Ae8B8gL/AfQBbQHqARQBQwERAhUBFAESAW0B7AH3AXkBUgFMAVIBHAG8 Af8B8BQAAfEBdAEHARwBdAHxAgcD8wG8ARoDCAMaAbwB8gLzAfABkwHzAe8BkwEHAZMBBxMAAf8BHAJL AZkB/wIAAf8BvAHzAwAC8QH/AgAB/wHrAUsBmQH0FQAB8QFtAeoBBxcAAfIBEgH3AbwB/xIAAf8B9AHv AfIBAAL/AeoBEgEVAhEBFQEUARIB6wHvARoBmQF0AVIBSwF0AhwBAAHzFAAB9AGTAZkB7wGZAQcB8wH0 AfMB8gHxAbwBGwH0ARsBGgMbARoBvALyAvMB8QF0AZMBBwGZAfEUAAHzA0sB8AIAAbwB8AH/AwAB/wLx Av8BHAFLAXkB8AH/FQAB9AHsAesB7AH0FQAB/wGSAesBBwHzAf8SAAH/AfQB7wHyA/8CFAEVAUMCFQET AewBCAHDARoBeQFLAlICHAGZAQAB9BQAAf8B7wGTARwBkwEHAvQC8gG8ARsB9gH0ARsE9AH2AfIB8ALy AfMB8gF0ARwCkwH0FQABvANLAfQBAAGgAfMFAAH0AfMBAAEHAUsBeQGZAfQXAAEHAesBEgEHBwAB8gH/ BAAB8wH/BgABvAHqAbwB8AH/EwAB/wH0Ae8B8gMAAhQDFQESAesBmQEbAaABmQEcAksBUgEcAbwBmQH/ FgAB9AEcAQcB8QHzAfQB8wHyAbwB9AL2A/QF9gHwAfEB8gHzAfQB8QG8AXQB8AH/FQAB/wGZAXMBSwFz AfID/wQAAfQB8QHvAVEBeQEaAfMB/xcAAf8B7AFtARIB8QH/BQABbQHyAwAB8gHsAfQEAAH/AfEBEgEH AfEB/xQAAf8B9AHvAfICAAH0ARUCQwEVARIB7AEcAZkBeQKZARwBUgFLAVIB7wG8AZkB/wIAAv8TAAHz A/QC8wHxAfAB9gH/BvYD/wH0AbwB8QHyA/QB8QH/FwAB/wGZAVECSwEcAe8BvAHwAfIB8QG8AhwBmQGa ARoB9AH/GQAB9AHtAW0BEgG8Af8EAAHrAfMDAAHyAfcB9AQAAfEB6wEHAfIB8xUAAf8B9AHvAfICAAFt AhEBFAFtAe0CHAF5AVIBvAIcAXQBUQFSAQcB8AEcAwAC/xMAAv8C9AHzAfIB8AEbAf8D9gf/AfYBvAHx AfIB8wL0A/8YAAEcAUsCUQF0AVEBdAFRAXMBeQGaAqAB9AG8AfQbAAHxAewB6wETAQcB/wMAAesB9AMA AfIB9wH0AwABvAFtAQcB9AHyAf8VAAH/AfQB7wHyAgACEQEVAW0C7wFLAbwBBwEcAfIB8AG8ARwBcwEc AQcB8AEcAwAC/xMAAv8C9AHzAfIBvAEbAf8D9gj/AbwC8QHzAvQD/xcAAfQB7AGZAbwBmQEcApkCmgMa ARsB8gK8Af8aAAH/AfAB9wHrAeoB7QHyAf8BAAHsAfMDAAHyAfcB9AH/AfMB9wHsAe8B8wHxAf8WAAH/ AfQB7wHyAQAB8AERARQB7AHvAZkBHAFLAfIBvAH/AfQB8QHvAxwC8wEcGAAC/wL0AfMB8gG8ARsB/wL2 Cf8BGwHwAfEB8wL0A/8WAAH/AfcBSwG8AfQB/wH0AvMC8gHzAvQB/wH0AfABGgHyAf8aAAH/AfQB7wHs AesB6gHtAbwB7AHzAwAB8gGSAQcB9wFtAfcB8gHxAfMB/xcAAf8B9AHvAfEB/wHsARQB7AG8AfQB8wG8 Ae8B/wHwAv8B9AG8AZkBHAHvAQAB9AEcGAAC/wL0AfMB8gG8ARsC/wH2Bf8D9gH/AbwB8AHxAfMC9AP/ FgABvAFEAaAB/wsAAf8B8wHyAbwB9BwAAf8B8AEHAbsB9wESAesB8wMAAfIB7wHsAfcB9AHzAbwC/xgA Af8B9AH3AfIBvAETAfcB8QH/AgAB9AIAAfIBAAL/AfMB9AEcAbwCAAHzGAAC/wL0AfMB8gLwAvYB9AH2 BP8B9gH0AvYBvAHxAfIB8wL0A/8UAAH/AfQBHAFzAbwNAAH/AfABvAHwAf8cAAH/AfQB8gHwAQcBvAH0 AwAB8gEHAfAC8gHzAf8aAAH/AfQB7QLqAQcB9AQAAfQCAAH2AQAC/wEAAfQBmQHzAgAB9BgAAv8C9AHz AfIB8QG8ARsC9AX2AfQBGwH0ARsBvAHxAfIB8wL0Av8VAAL/ARwBmQH0DgAB/wHwAfEB/x4AAf8C9AHx AfQDAAH0AfAB8wH0Af8cAAH/AfQB9wHsAfEB/wUAAf8EAAL/AQAB9AEcAf8bAAL/AvQC8wHxArwBGwH0 BfYB9AIbAbwB8AHyAfMC9AP/FgAB/wH0AfMB/1oAAfMB7QHyDwAB/wHwAwABvBgAA/8C9AHzAfIB8QHw AbwBGwHDARsB9gP0ARsBvAHwAvIB8wH0A/91AAH0Ae8BvBAAAfYDAAH0GQAD/wL0AfMB8gHxAfABvAIa AxsCvAHxAvIB8wL0A/91AAH/AbwB9C4AA/8D9AHzAvIB8QLwArwB8AHxAvIC8wL0A/+pAAL/BPQD8wPy A/ME9AT/qQAF/wz0Bf+rAAn/AvQI/7EADP+4AAL/AQAC//8A/wD/AOsACv9+AAf/DwAG/xsADP9YAAX/ HwAD/wP0A/8NAAf/GgAC/wn0Av9VAAP/BfQF/xkAAv8B9APyAfMB9AT/CgAC/wH0AfMD9AL/GAAC/wH0 CvMC/y0ABf8fAAP/AfQB8wHyAfEC8AHxAvIC8wP0Bf8SAAL/AfQB8gG8Ae8B9wEHAfAB8wb/BwAB/wH0 AfMB8AHvAfAB8gT/FgAC/wHzAfEF8AK8AfAB8gH0Af8rAAL/BPQB/wIABv8XAAH/AfQB8wHxAQcB7AJt ARIB6gHsAQcCvALxAvIB8wL0Av8RAAH/AfQB8gEHAesC7AHqAe0BvAHzAfQE/wcAAf8B9AG8AfcBkgHs AQcB9AP/FgAB/wH0AfEBBwXvAfcB7wEHAbwB9AH/KgAB/wHzAbwD7wHwAfQC/wH0AvIB8wL0Af8WAAH0 AfMB8AHrAUQBSgFEAREBFQERAg4BFQHsAu8CBwG8AfEB8gHzAf8SAAHzAfABbQEHAewBFQEUAeoB9wG8 AfIB9AX/BAAC/wHzAewB6wH3AesB7wHyBP8VAAH/AfQBBwGSAe0G7AGSAQcB8wH/IAAG/wQAAf8BBwHr A0oBkgHzAf8B9AEHAewBbQHsAbwB9AH/FQAB/wHzAfcBFQFKAUsBcwEcAZMBHAHsAesBSgEUAhABQwFt AesBkgHvAQcB8QH0Av8OAAL/AfQBBwEcAfMB7AFDARQC6wH3AbwB8gH0Cf8B9AHzArwB8AHvAQcB8AL0 BP8TAAH/AfMB9wHsAesBbQLqARIBbQHrAewB7wHzAf8fAAH/AvQB8gEHAfIB9AL/AgAB/wG8BJkBcwH0 Af8B8AGZAnMBbgESAfMB/xUAAfMB6wFKAXMBmQEaAfQDGwGZARoBGwG8AZkBcwFKAUQBEQEVAewB7wHw AfMB9AH/DgAC/wHzAQcB6wGSAeoCQwHtAuwB7wEHAfEB9Af/AfQB8wHwAQcBkgG8Ae0BBwHxAfIB8wH0 A/8SAAL/AfMB7AFtAeoDEgEUARIBbQHqAfcB8gH0Af8dAAH/AfQB8wHwAe0BEgHsAfEB8wH0Af8BAAH/ AbwBmgEbAfQBGgEHAfQBAAEHApkBGgGZAUsB8wH/FQABSgFzAZkC9AEbAxoB9AGZAUQBFQFKAXMBmQEa AZkBdAFLAu0BBwHxAfMB9AH/DQAB/wH0AfIB7wHrAQcB7AESARAB7AHxARIB6wH3AQcB8QH0Bf8B9AHy AfAB9wHvAbwB8AHvAewBBwLxAfIB9AL/DwAD/wH0AfIBvAHrAuoBEgETAhIB6gFtARIB7AHwAfMB9AP/ FwAD/wHzAfEBBwHvAZIBFQFDAesB8AH0Af8BAAH/AfMBvAHwAfIB8AHxAv8BBwEcARoBGwEaAe8B/xYA AfECGgIbBRoB9AGZAUoBEQEQAREBRAFKAW4BHAHvAe0B7wG8AfIB9AH/DAAB/wH0AfIBBwHvAewBkgEH Ae0B6gFtAfABHAESAewB9wHvAfAB8wH0A/8B9AHwAe8B8AG8AwcB7wHsAZIB8AHxAfQC/w4AAf8B8QHy AfMB8gG8AesBFAISARMBFAETAhIB6gESARQB7QHwAfIB8wHwAfIB/xYAAf8B9AHzAQcB9wGSAvcBFQEP AUMBkgHxAfQB/wEAAf8C9AHzAvQC8wHxAwcB8AH0GAAB9AHyArwBHAGZBBoBGwHxARwBRAFDAhEBFQFu Au0B7wEHAfEB8wH/CwAB/wH0AfMBvAHtAZIB9wHrAgcBkgHqAe0B9AFtAeoB7AHtAe8B8AHzA/QB8QG8 AfcB7wEHAu8BBwLvAewB7wHxAfMC/w0AAf8B8gEHAfIB8AEHAZIBFAEVAhMDFAITAhIBQwESAe8BBwHx AbwB6gHxFQAB/wH0AfIC9wHtAewC7wHtAUMBDwEQAewB8AH0BgAB8wEHAuwBvAH0Af8dAAH0ARoBHANK AW4CHAEbARoBdAJKAVEBBwGSAe0B7wEHAfEB8wH/CwAB/wH0AbwBEgHvAesBFAFtAesB8AEHAewBEgHw AQcBFAFtAuwB7wHwA/IBBwHvAbwBBwHtAe8DBwEcAQcB7AHwAfQC/w0AAvIB8AHyAQcB7QFtAQ8BEgJt AesCQwIUARIBbQIVAesBkgG8AfIB7AFtAfMSAAL/AfQB8AHvAe0B7AHtAfcB7wLtAewBFAEPAUMB9wHy Af8EAAH/AbwBcwFKAUQBSgHvAf8eAAHzAXMBDwEQAQ8BFQFKARUBSgGZARsBmQF0AZkC9wLvAQcB8QHz Af8KAAL/AfMB7ALvAW0B7ALrAe8B8AEcAW0B7AHyAewBbQPsAe8BBwHwAe8BvAHxAbwC8AH3AZIB7wEH AfcBBwHtAfID/wwAAf8B8QLyAfAC7AFtARIB6wHsAfcB7AJDAhQB7QHsAesBbQHqAewB7wHyAQcBbAHs Af8RAAH/AfQB8AH3Au0B9wHsAvcE7QESAQ4BFAHvAfMB/wIAAf8B9AEHAZkBHAF0AXMB7AH/HgAB/wG8 AewBbgHqAUsBRAERAUMBHAF0AUQBSgFEAesB7wIHAbwB8QHzAv8JAAL/AfMB6wEcAewBbQG8AQcC6wHw AQcB7QESAe8B8AETAuwB6wHsApIBBwHwAbwBBwG8AvAB7QTvAfcB8wH0A/8LAAHvAfQB8AHzAbwC6wK1 AQcBvAH0AbUB6gEUAuwCvAEHAewD9wLxAa4BtAG8EQAB/wHzAfcB7QH3AfABkgETARIB7AHtA+wB7QFt AQ8BEAEHBfQB7wF5ARoBGwGZARwB/yAAAfQB8QEHAfcB6gEVAUMBcwEVAUMBcwEQAUMB7QIHAbwB8AHy AfQB/wkAAv8B8wJtAewB7wHxAfMC7AHvAfABBwLrAfIB7wLtAfcB6wLsAbwBBwHwArwB8QHwARwB6wHv AbwB7AEHAfIB9AP/CgAB9AGRAf8B8AH0AfIC9wG8Ad0D/wEHAW0BEgEHAfcBvAH/AfQBvAK1AfcB9AHz AesBrgHvAf8PAAH/AfQB8gH3Au8BuwHtAhEBFAFtAewC9wLtAeoBEAEUAQcC9ALzAbwBmQEbAfMB8AHz Av8fAAP/AfQBvAIRAXMBRAERAZkBSwFuAQcD8AHxAfIB8wL/CAAC/wHzAe8B7QHwAfMB8QHwAfcB7wHs AQcBvAEcAW0B7wHzAesBkgH3AZIC7AEHAe8CvAHwAQcB9wEHAeoBBwG8Ae8B8AHxAfIB9AL/CgAB8AG0 Af8B8QH/AfQB7wEHAe8BkgP3AW0BBwHrAfIB7QHsA/cBtQHdAbwC9AHsARMB9wH0DwAB/wHzAfAB7wEH AfcBBwHwAfcBFAEPARUBEgHsAvcB7QLsAUMBFAHvAbwBHAJzAe0BvAHyAfQBAAL/IQAB8wH0AfIBEAER AW4BcwEVAW0BmQEHAfAB8QTyAfMB9AH/CQAB/wH0AfAB7QHwAfQB8AHsAe8BHAG8Ae0B8AG8Ae0B6wHx Ae8B9wEHAfcB7QHsAe8BkgHvAQcB8AG8Ae8B8QFtAfAC8gHxAfIB8wH0A/8IAAH/Ae8BiwHwAgcB7wHt AQcB7QHrA0MBFAH3AewB/wHtARUBZgESAewB9wEHAfcC7wFtARUBrgHxDgAB/wH0AfIB7wG8AfcBvAHz AgcBvAHsAhABFAFtAe0B9wHtAewB7QEVAREB9wGaAksBSgHsAfMB9AIAAf8dAAL/AfAB7AHqAewBbQEQ AUoBHAEaAZkBGgEHAfAD8gPzAfQC/wkAAf8B9AHzAe8BBwHzAfEB6wEcAewB8QLvAfAB7wHqAewB8gHs AbwBBwHvAfcB7wGSAe0B7wEHAfEBBwHxAfcF9AT/CQAB/wHsAWwBrgSRAu0BbQERAuoBEgHqARMB6wES AW0BEwHrAewB9wHtAWwDEwEUAesBvA4AAf8B8wEHAe8B9wG8AfMB9AHwAwcB7wHqAhEB6gLsAW0C7AET Ae8BGgNLAesB8AHzAfQBAAL/GAAC/wH0AbwB7QFtAkoBSwFKAUQBEQFKARwBmQHyAfMB8AHyAvME9AP/ CgAB/wH0AfABbQHxAfQBBwHtARwB7QHxAfcB8wHwAe0BEgLvAewBvAIHAe8B9wLsApIDBwHzAvQH/wgA AfQB6wKuAZECtAG7Ae0B7AFtARQC7AISAhMBbQHqARMBbQHtAfcBkQGuAW0B6gFtARQBbQEHDgAB/wHx Au8B8QHyAfQD8wO8Ae8BkgETAQ8BQwEUARMB6wH3AZIBmQEaA0sBEwHtAbwB8wEAAv8YAAH/AfABbQES AUsCHAGZARoBmQEcAW4CFQFLAfIB8wHyAfMD9AT/DQAB/wHzAQcB9wH0AfICHAHrAfEBBwH3AfIBBwJt AQcB7AEHAfABBwHvAgcB9wHvAfABvAHvAewC8AH0CP8HAAH0Ae8GGQEHAesB6gH3AuwG9wHrAbUB6wH3 AgcDtQLvAbwOAAH/AQcB9wHyAfEB9AHzAbsBBwT0AfAB9wEHAesBEQFDARIB7AH3AesBvAH0AXQBSwFK AREBRAFLAewD/xgAAf8BvAHvARoBGwb0ARoBSgFDAXMB9AHzA/QD/xAAAf8B9AHyAewB8QH0AQcBHAGZ Ae8B9AHrAvEB7wESAZIBvAHrAfAB8QG8AgcC7wIHAbwB7AHrAe8B8wj/BQAB/wG8Au8GBwHvAe0BuwHz AvcBEgEVARMCEgH3Ae0B8AG8AbUCuwMHA+8BBwHwAf8LAAH/AQcCvAH0AfMB8gG8AfAB8gHwAfMC9AHx Ae8B9wGSAeoBFQETAeoBbQG8ARoBTAJLAREBRAFLAUMB8gP/GAAB/wHzAfIB8QHyAfEBGwHyARoB7wFL ARUBQwEcAfQB8wH0BP8RAAL/AfMB9wHvAfQB8gEcAQcB7QHyAfMB7QHzAfEB7AHqAQcB7AHvA/EB8AHv AwcB9wK8AfAB8gH0B/8FAAHzAeoBbAFtA2wCrgGRArUBCQH/Au8BFAEPAkMBFAH3Ae0B9AHxAbsBtQGu BmwBEwHtAf8LAAH/AfEB7wHtAQcCvAHxAfMB8AEHAbwB9AHzAfQB8gEHAe0B7wH3AeoBFAETARsBGgFM AksBEQFKAUsBIgHyBP8ZAAL/AQAB9ALzAbwBBwHvARUBQwEcAfQBGwP/EwAC/wH0AfAB7QHzAfQBvAHv AewBvAH0AQcBvAH0AQcCbQEcAewBvAHxAfIB8wLxAbwBBwH3AbwB8gHxAfAB8wf/BQAB8wNtA2wCrgGR AbsCGQHtAbwBBwEVAg4BQwEUAfcB8AHzAfABGQG7AbUB7QJsAxIB6gH3Af8NAAH0AfAB7QHvAfAB9wG8 AfIB8AHzAvQBvAHsARIB6gHtAvIB7AEUAe8BwwFMAksBEQFKAUsBEQHwBP8dAAT/AfQB6gFDARwB9AEb Af8WAAH/AfQB8wH3AbwB9AHyAZkC9wH0AfMB7wH0AfMBHAEUAewB6wH3AbwB8QHyAfMB8gHxAfABvAIH AbwB8AHzBP8IAAH0AW0CbAHqAe0B7wQHAvQBvAEHAe8B6gEUAhIBbQHvAfcB8AHzAhkB4QG7AZEBbQNs Ae0BBwH/DgAB/wHyAQcC9wEHAfAB8QH0AfMB8AHsARIB7AHtAZIBvAHsAeoBEgG8ARoBUgFLAUoBQwFK AUsBEQG8AfQD/x0AAv8DAAHrARABHAHzAfIB/xcAAf8B9AHwAewB8wH0AQcB7wHsAfIB9AIHAfQB8QHr ARIB7AESAe8B8AHyAfMB9AHzAfIB8QLwAfEB8gH0A/8JAAH/AewCbAHqAfcBvAbwAbwB9wHtAewB6gHt ARIB6wLvArwB8ALxAvAB7AFsAYsBkQHyAfAB/xAAAfQB8QHvAewB7wG8AfEBvAGSAewB7wG8Ae8B7AFu AeoBEgEUAZkBwwF0AksBIgFKAUsBEQEHA/8aAAH0Af8BAAHzAfcBHAMAAZIBFQGZARsB8wH/FwAB/wH0 AfMB7QG8AfQBGwHvAu0B9AHzAe0B8gH0AQcCEgHrAewBvAHyAfQC/wXzAvQD/woAAQcCbAHqAWwBvAUA Af8B9AHwAe0B9wESAewBEwHsAfcB8QH0Av8DAAH/AZIBbAGRAbQB/wHzFAABBwHsAe0BvAHvAe0B9wEH AfABcwFKAesBbQISARwBwwF0AUwBSwERAUoBSwERAbwB9AL/GAAB9AG8AZIB9AHvARUBEQFKAQcC9AHs ARUCGgHzAf8YAAH/AfMBvAHsAfMB9AEHAe8B6gHxAf8B8gGSAvQB7QEUARIBbQEHAfIB9AT/A/QE/wsA AfQCbAESAW0BBwUAAf8B9AHwAewB7QISARMB7AHvAfMB/wUAAfQBkgK0ARkB8AH/FAAB/wHyAQcB7QEH AfAB8gHvAXMBSgJtAeoBEgFuAZkBwwFSAUsBSgERAkoBEQHxAfQC/xcAAfMB7AHtAuwBEAERARUBcwGZ ARwBBwHvAZkCGwHzAf8YAAH/AfQB8wHvAbwB9AHwAe8BHAHvAfQB/wG8AfAB9AG8ARIBFAHrAfcB8gH0 Cv8NAAH3AWwBEgHqAfcB/wQAAv8B8gLtAewBEgH3AewBBwH0Af8FAAH0AZEBtAEJAfQB8AH/FgAB9AHw AQcBvAGZAW4BEgHqARIC6gFtARwBvAH0AZkBcwFKAREBRAFKAREB8QH0Av8XAAHsARUBcwFKAUMBEQFE AXMBmQK8AvAB8gHzAfIB8AH/GAAB/wH0AfMBvAHvAfQB8wIHAe0B8wH/AfIB9wH0AfMBkgISAW0B8AHz AfQJ/w0AAfIBbQISAesB/wUAAf8B9AH3Ae0B7wH/AQcB7AHwAfQB/wUAAfMBtAEJAfQB8QH0GQAB9AG8 AewB6gFtAuoBEgFKAW0B7AEHApkBGgEcAUQBSgFLASIB8QH0Av8VAAH0AesBQwEcAVEBQwERARUBcwEH AfMC/wb0GgAB/wH0AfIB7QHyAfQB8AHvAZIBvAL0AfAB7wH0AbwBbQESAW0B7AG8AfMB9An/DAAB/wHv ARQBEwESAfIFAAL/Ae8B7QH3AfMBBwHtAfIB/wYAAfABGQHiAfQB8QH/GwAB8wH3AW0B6gFKAXMB7wH3 AQcBvAKZARsBmQJKAUsBIgHwA/8UAAHzAewBEAJzAW0CEQFzAZkB9CMAAv8B9AHvAfcB9AHzAQcB7wH3 AvQB8wHsAbwB9AEHARIBEwESARQBBwHzCP8NAAH/AfIB6wIUAe0B/wUAAf8B8AHrAfcB8AH3Ae8B9AH/ BgABBwHiAf8B8gHzHQAB/wG8Ae0B7AHvAfAC8gHwArwBGgEbAXMBUQFLAREB8gP/EwAB9AHsARECcwEU ARUBEQFuAbwB8wH/JAAB/wH0AfIB7QHxAfQB8AHsAesBBwL0AfABkgHzAfIBbQEUARIBQwESAfEB9Af/ DwABvAHqARQBEwHzBgAB/wHxAvcB7wHyAf8GAAHyAuIB/wHyAf8fAAHzAbwB9wHvAbwC8AHyAfQBvAEb ARoBmQF5AUoB8gL/EwAB9AHrARABcwEaAe8BFQERAW0C8ScAAf8B8wG8AewC8wLsARIBBwLzAfcBBwH0 AQcBEgNDAe8B9AX/EgABBwFtARMBkgH/BgAF/wYAAfQBvAH/AfMB8AH/HwAC/wH0AfEB7wEHAfEB8wL0 AbwCmQEbARoBSwHyAv8TAAHzAXMBHAHwAfMBcwFKAW4BGgHzAf8nAAH/AfQB8wHsAbwB9AHwAe0BEgET AbwB8wHqAW0BvAHvAUoBQwERAUQBBwH0A/8UAAH/AbwBrgETAbwGAAL/CAAB/wHxAf8B9AHxAfQB/x8A BP8C8gH/A/QB8wEHAZkBwwHyAbwB9AL/EwAB/wHxAfAB8wH/AQcBHAG8AfEB/ygAAv8B8wLsAvMBBwEU ARUB7wHzAe8BSwFEAUsBRQFRARQB7AHwAfQB/xgAAbwBtAESAfIPAAHyAvMB8QH/IwAF/wX0AfMB8QHy A/8WAAH/AgAB/wHxAfAB/yoAAf8B9AHsARQBBwH0Ae0BIwFLAe8B9AHxAXQBUgGZAUoBmQEHAbwB8wL/ GQAB8wHvAesBvAH/CgAC/wPxAfMB/yUAD/9HAAH/AfQB7wJKAUsBUgF0ARwBvAL0AbwB8AHyArwB8QHz AfQC/xkAAv8B8gHvAbwB9AkAAfMBvAHwAfMB/ykADP9IAAL/AfMB7wF0ApkBvAHwAfQC/wH0A/IB8wL0 Av8dAAH/AfQB8wgAAf8B8wH0gQAB/wH0AfMB8gEHAbwB8wH0Af8CAAP/AvQC/68AAf8C9ALzAfQC/wYA Af+xAAj//wD/AP8A/wDAAAH/AgAB/7oACP8/AAb/BQAC/wQAAv8MAAH/VgAL/z0AA/8F9AP/AQAB/wLz Af8BAAL/AvMB/wsAAv8RAAL/FgAC/ycACP8C9AHzAfQD/xwAAf8fAAL/AfQB8gH0Bf8BAAH/AfEB9wG8 AvQB8gH0AbwB7wHzAf8EAAP/AwAC/xAAAf8C9AH/CgAB9AoAAf8B8wH/JAAI/wH0AvMB8gHxAfIB9AL/ GwAE/x0AAf8B9AHyAfQE/wEAAv8B8QH3AZIB7wEHAe8B9wHvAfcBkgG8Af8DAAL0BP8CAAH/EAAB/wHx Af8JAAH/AfQBvAL/CQAB9AHxAf8iAAX/AvQB8wLyAfED8AHyAfQB/xwAAf8B8gHwAfQB/xsAAv8B8wHx AfQD/wIAAf8B8gHvCZIB9wHzAwAB/wH0AvMB9AL/AgAB/w8AAfMBvAHzAf8IAAH/AfAB9wHxAf8IAAH/ AfMBBwH0IQAE/wH0AfMC8gHxAfADvAEHAe8BBwHyAf8dAAHyAe8B8wH/GwAC/wHzAfAC9AH/AwAB/wHw Ae8B9wmSAfAB/wIAA/8B8wHyA/8BAAH/DgAB/wHwAe0BvAcAAf8B9AHxAe8B7AHvAfIB9AH/BgAB/wHv AfcB8yEAAv8C9AHyAfEC8AG8AgcB7wGSAW0CQwFtAfMcAAH/Au8B8QH/GgAB/wH0Af8B9AHwAfEC9AL/ AQAB9AG8B+8B9wKSAu8B8gH/AgAB/wL0AfAB8wL/AQAB/w4AAf8BBwHqAfMB/wIAAv8B9AHyAQcB7wH3 AesBSgHsAfcB7wG8AfIB9AH/AwAB/wG8AeoB8gH/GAAC/wUAA/8B8wHyAvABvAIHAe8B7AETARQB6wHt AfcB7QHyHAAB9AHtAfcB8AL/GQAB/wP0AfIBvAHxAfQD/wH0AQcC7wHsAe0E7wLsAu8BBwH/AQAC/wH0 AfIBvAHzBP8NAAL/AfcBSgG8Af8CAAH/AfEB7wL3Ae0B7AHqAW4B6wLtAvcBBwHzAf8BAAH/AfQBBwEU AfAB/xcACv8B9AHyArwBBwHvAewB6wEUAQ4BFQISAfcB8AHvAfMcAAHyAewBkQG8AfEaAAL/AfMC9AHx AQcBvAH0Av8B8gK8AewBbAHsAQcBkgHrAe8BkQFsAZICBwH0Av8B9AHzArwB8wH0A/8NAAL/AewBSgH3 AfMC/wG8AfcBkgL3Ae0B7AFLAW4BSgHsAvcCkgH3AfEC/wHxAZIBRAG8Af8UAAz/AfQB8gG8AQcB7wHs ARICDwERARQCFQESARQB6wHsAfMZAAP/AfEB6wGRAbwB8QH0Av8XAAL/AfMB8QHzAvIBvAHwAvQB8gG8 AZEBbAFlAWwBFAFDAQ8BQwNsAgcB8QH/AfQB8wG8AQcB8AHzAvQB/w4AAv8B7AFKAewB8AH0AbwB9wHt AewB7QMcAXMBbgFLAUoBRAFtAuwB7QH3AfEB9AG8AesBSgG8Av8SAAT/AvQC8wLyAfABBwHwAbwCBwHs AeoCFQEUARIBFAEVARIB7AFmAg8BkgH/GQAB/wH0AfMBBwESAZEBBwG8AfIC9AL/FQAC/wH0AfIC8AHx AfIB8AHxAfQB8gHvAWwBZQINBA8BZgJsAe8BvAHxAfQB8QG8AQcB8AHyAvMB9AH/DgAC/wHsAUoBbQHy AfAB9wHsAesBcwMaApkCcwFuA0oB6gHrAe0B7wHyAfABEgFKAbwC/xIAAv8B9AHzAfIC8AK8Ae8CFAHs Au8B7AEUARIB7QEQAUMBFAEQAe8B9wFmAREBFQFDAe8B/xMABv8B9AHyAfAB6gETAZEB7QPxAfIB8wH0 B/8OAAP/AvQB8gK8AfMD8gHtAWwCDQUPAWYCDQGRAfECvAEHAfAB8QHwArwB8wL/DgAC/wHvAUoBSwLv AewB6gFuARwDGgGZAe8BBwEcAZkBHAFzA0oB6wHtAQcBHAFKAUsB8QH/EgAC/wH0AfECvAIHAu8B6wHv AQcC9wHsARQBEQHqAfcBDgERA20B7QETAUMB7AGSAfcB9BAAA/8B9ATzAfIB8QEHAeoBEgHtAZEB6gHs AfEB8AHxAvIE8wP0Av8MAAL/A/QC8wLxAfMC8QGuARUCDQMOAgABDQEVAmYB9wK8AfIDvAHxAfMB9AL/ DgAC/wHxAUoBcwEcAe0BEgFKAXMBHAEHAe8BvAHyA/MB8gEHARwCcwFuAUoBbQHtAesBSgF5AfMB/xMA AfQB8AG8AQcE7wHsAfcCBwH3AeoBFAFDAQ8B6gHwARUBFAHsAUMBZgETAa4B9wHtAesB6gHwEAAC/wHz AvIC8QLwAQcBbQFsAe8CBwGRAeoB6wEHAfEB8gHxAfACvAHwAfEB8gHzAfQC/wwAAv8B9APzAfIB8wHy AfMBvAFsAw0DDgIAAQ0BQwEVAWYBrgG8AfACvAHxAvMB9AP/DwAB/wH0AhwB7wFtAUQBbgFzA+0B9wXv ARwB7QLsARwBcwFKAewB7wFSARoC9BIAAf8B9AHxAQcG9wLsAe0B7AEOARQBEAESAfEB9AHwAe0BBwHw AbQBZgEOAQ8BZgEOARIB8A8AAf8B9AHzA/IC8QHwAQcBbQFsArwC8AHtAesBbAHrAfEC8wHxA/AC8QHy AfMC9AL/CwAF/wH0A/MB7wFmAg0BFQIOAWwBDwEAAQ0CQwEVAYYBvALwAfMB8QHwAfIC8wH0Af8QAAH0 AfMBBwHvAkoBHAGSA+0B7AHtA/cE7QEcAfcBHAJKAbwBBwH/AfQB/xEAAv8B9AHyAQcB9wTsAe0BEgEV AesBEgEOARIB7AHxAfMBvAH3Ae8B7QG8AYsBFAETARUB7AG0Ae8B9A0AAv8B9AHzAfEEvAEHAe8BEgFs AfcBBwHzAfABvAHwAe0CbAHsAfEB8gHxAbwCBwHwAfED8gHzAfQE/wkABf8D9AGuAQ0BQwJmAQABEAGR AesBAAEVAa4BbAEUAWYBkgHxAfMB8QHzBf8RAAH/AfMB9AH3AUQBUQHwAbwB6gHrAewB6wHtAewE7QHs AesBcwHwAbwBcwFKAQcD9AkAAf8HAAL/AvQB8AHqARUCFAITARIB6gHrAewBEgFDAe0CvAH3AhIB9wEH AfABBwHtAQcB7QGSAQcB9AH/DQAB/wH0AfMB8AHrARMEEgHqAZECuwHtAfECbQEHAewB6wGRAWwBbQUS AZIB8gXzA/QC/woABf8B8gFmAQ0BZgFDAQ4BAAEQAZEB6wIAARQCbAFmAa4B8gHzAfQF/xIAAf8B9AHw AewBSgG8AfEBbQJEAkoBcwF0AxwBdAJzAVIBHAHyARwBSwEHAfMB8QH/CQAB/wcAAf8C9AG8AQ4BQwH3 AesBEAEUAesB7AH3Ae0CEwHsAe8BbQRDAQcB8gHwAfQB8wHwAe8BBwL/DQAB/wH0AfMB8gHrAWwCuwOR AbsB8gEHAbsBkQFDARQBbAEUAW0B7wEHBJEBuwHvAbsBkQHvBvMD9AH/DQAC/wGuAg0BDgGLAa4BAAEQ AZEB6wQAAUMCZgG8A/8XAAH/AfQCcwH0AbwBSwJEAkoBcwF5BpkBegF5AvIBSwEcAfAB9AoAAv8FAAL/ AfQBBwETAUMBbQG8AfAB9wESAQ8CEQEOAUMB7AHrARECDwESAesBEgHxAvQB8gG8AZIBBwH0Av8NAAP/ AfMBvAHxAfIB8QEHAZEBuwG8AfEB9AEHApEBuwH3AZEB7AHyAfQBvAKRAfcBvAHxA/IH9AP/DgAB/wFm AQ0BDwEOAowBDgEUAZEBbQEQBAABEQFmAfAC/xgAAv8BHAHtA/MBvAEcAUoBcwIcBJkBGgG8AfED8wFu AQcC/woAAv8FAAL/AfMBEgHsAfcBEgHvAfIC8AH3AeoBDwEOAkMBDwEOARABEgLsAQcB9AHzAfACBwHv AfIB9AL/AgAD/wkAAfQB9wHtAewD7QHrAZEBuwHzAf8B8wHsAZEBuwEHAe8CkQH3AvQBvAGuAZEF7QHs AQcH/w8AAfEBZgENAg4BEAEOAREBbQHrAW0BEwEOBAABZgHtAf8ZAAL/Au8B9AHzAfAB9AHzAW0BFAFK AUQESgHxAf8B9AHwAfIB8wHsAbwC/woAAf8GAAL/AfMB7wIHAe8BbQEHAvIB8wH0AQcB6wEPAg4BDwFD ARQB9wHxAfQB8gH3AQcB7wG8AfIB8wH0Av8BAAX/BwAB9AHrAZECuwKRAbsBkQG7AbwB9AEAAbwB9wEJ AbsB8wH0AewCuwHwAfQB8gHsAZEDuwSRAbwB/xQAAQcBZgENAg4BZgGMBW0BEgETARACAAFmAWwB/xoA Af8B8gEHAv8B8wGZAfIBcwFDARQBQwFEAhUBIwHyAfMBmQHzAv8B9wHyAf8LAAH/BgAB/wH0AfMBBwH3 AQcBvAHrAQ8B7wPxAvMB9wFDARMBEgEQAQ8BkgHwAbwB9wHtAewBBwG7AQcB8gL0Av8BAAT/BQAC/wHz AfAB8gTxAfIBvAG7AZEB7wHzAf8B8wK7Ae0B6wFtAbsB8gH/AfIBbQHqAe8F8gPwAfQB/xMAAbwCFAFD ARQBbAFtA5EB9wKuARICEwIUAesB/xoAAf8B9AEHAf8CAAHwAQcBcwEVAkMBSgIiAVEB8wEaAfMB/wEA Af8BBwH0EwAB/wH0AfIBvAIHAe8BEgERAZEB6wESAfcBvAHzAe8BEgHyAfAB9wHqAUMCEwESAhECEwHq AZIB8wH0Av8BAAP/BgAB8wHvAvcG7wH3AZEBuwGRAewC8wH3AQkEuwG8AfIB6wESAZEBuwHvA/cB7wL3 Ae8B7QEHAf8SAAG8AWwBFAFDARUBbAGuAZEBtQG7AQcB7wHtAa4BEgETAWYBFAHrAf8bAAH/AfMB/wIA Af8BBwFzAUoBIgFEAUsBIgFEAVEB8wEHAf8CAAHzAfQB/xMAAf8B9AHyAbwB8AEHAewBEgHsAUMBDgFD AfIB8AHzAe8B9wT0AfECEgHqAUMDDgFDAe8B8QH0Av8JAAHyAewBbAGRArsDCQHwAQkB8ALzARkBuwHs AfcBCQK8AfMB8AG7AWwBEgGuAbsBvAK7CZEBvBIAAbwBbAEVAkMBbAGuAZEBCQEZAvQB8AGSAW0BEgFm ARUB6wH/IQAB7wFzAUoBIgFKAXMBRAFLAVEC8RkAAf8B9AHwAbwB8AHzAQcB7QESARUBFAG8AfIBvAHw AfEB8wLxAfIC8QH3AfEB8AHvAfAB8gHwAbwBBwHzAf8LAAK8AfEL8gHxAQkCuwG8AQAC8wH/Ae8BkQG7 AbwO8gH/EQABvAGuARIBEwIUARMBkQEJARkD/wG8AewB6gIUAesB/yAAAf8B7wJKAUQBSwFKAXMBdAFz Ae8B8QH/GAAB/wHzAvAD9AH3AW0B7AGSAfQBvAHvAewB7QH3AbwD8AHyAfAB6wHqAfcBvAHsARIB7wHy AfQB/wsAD/8B8wG8AbsB9wHzAgAB8wHsAbsB8AHzD/8RAAHwAZEBbQESAUMBFAHqAZEBtQEJA/8BGQHs AeoCFAHtAf8gAAH/ARwBSgFEAiIBSgFzAXkBHAGSAQcB8wH/FwAB/wHzAbwC8AH0AfIB7wHrAfcB8AG8 AfACvAEHArwB7wHsAQcB7wEUAewBBwHyAewBEgHtAbwB8wL/GwAB8wEJAbsB7QH0Af8B6wGRAfIB8yEA AfMBCQGRAa4BEQEVARIB6gG1AhkC/wEZAewB6gEUARMB7yEAAfMB7AEVASIBDgEiA0QBSgHtAZIB7wHz Af8VAAH/AfQB8gHwAbwD8AH3AesBBwHwAbsC8AH0A/MB8QEHAbwB6gHrAQcB7QHyAZIB8QHzAvQB/xwA Af8B8gG8AbQB7QHrAZEBvAH0IgAB/wHwAbwBkQEUAhUBbQHsAvcCGQG7Aa4C6gGuAfEgAAH/AfIB6wFE AUoBRAIiARABIgFEAUoB7AGSAQcB9BQAAf8B9AHzAfECvAHwArwBkgFtBLwBuwHyBPQBCQEHAe0BbQLv AfABvAHzAfQD/x0AAf8B9AEIAbsB9wG8AfQkAAHzAfIBvAHrARMBFQHvAuwB6gHtAQkBtQGuAuoB9wH/ IAAB/wHwAkoBSwFKASIBFQIiAUoCcwHtAe8B9BQAAf8B8wHwAfEC8gHxAvABvAHwAbwB8AG8AbsBvAHw AvQC8gK8Ae8B6gHvAfEBvAHzAfQC/yEAAfMBvAHyAfQmAAG8AfMB7wHrARQBGQL3AeoBrgH3AbUBrgLq AfIhAAH/AQcBRAFKAXkBSwEiAQ4BIgEQAUoCdAFzAe8B9BMAAf8B8wHxAvID8wHyAvMB8gHwDLwB6gH3 AvAC9AH/IgAB/wHzAfQnAAH0AfAB8wEJAbUB9AK1Aa4BkQK1Aq4B8AL/IAAB/wHtAUQBSwGZAXMCDgEP ARUBSgFLAUoBcwGZAfMTAAH/AfMB8gL0Av8D9AHzAfIEvAbwA/IC7wEHAfIB9AL/TAAB/wHzAbwB8QHd AfQBvAG1Aq4BkQHPAa4BBwP/IAAB/wHtARUCSgEQAQACDgEPASIBDwEQAUoBmQHzEwAC/wH0Bv8B9AHx BbwB8gLzB/QB8wL0Av9MAAL/AfQBBwH0AfEC9AG1Aq4B7wH0AfIBvAH0Av8gAAH/Ae8BIgEOARQBEQFK AXQCDgMAAXMBmQH0EgAJ/wH0AfIB8AG8AfAC8gHzAfQC/wMACP9NAAL/AfIBBwH0Af8B8wHwAfcBjAEH Af8B9AHyAbwB9AL/IQAB7wEiAUMBdAJKAZkBIgFEARABEQFKARwBGgH0EgAB/wEAA/8BAAL/AfQB8gLx AvIC8wL/BQAB/wIAA/8EAAT/RwAB/wH0AfEBBwHzAfQC8AHtAYwBvAL0AfEBvAH0Av8hAAHwASIBRAGZ AUQBcwGZASIBRAFzAXQBSgEcARoB9BcAAf8C9AHzAfIC8wHyAvQB/xAABv9GAAH/AfQB8QEHAvMCBwHt AYwBtQLzAfABvAHzAv8hAAH0AeoBSwGZAQ8BcwGZASIBRAFzARwBIgEUAfIB/xYAAv8B9AHzBfQC/w8A CP9GAAH/AfQB8wEHAbwB8AO1Ac8BtQLwAQcBvAHzAv8hAAH/Ae8CbQEQARwBmQFKAZkBbgFKAZkBvAH/ FwAB/wT0Bf8IAAH/BgAB/wIABv9GAAL/AfMBvAIHAe8EtQMHAbwB8wL/IgAB9AG8AesBEgHsAUQBSgFz AesBbQGZAfEB/xcAAf8C9AL/AQAC/xUABf9HAAH/AfQBvAEHAbUB7wS1Ae8CBwHyAfQC/yQAAf8B8wH/ AbwB7QHxAf8B8wH0GQAF/2QAAv8B9AHwAbwBtQEHAbUBBwG1AgcB8QH0Av8pAAH/HQAD/2YAA/8B9AHw ArwBtQEHAbwBBwHwAfMD/7IAAv8C9AHxAbwB8QHzAvQC/7UAA/8B9AHzAfQE/7cAB///AP8A/wD/AP8A ngAE/1wACv9TAAP/A/QD/1kAAv8F9AHzAfQC/1IAAf8C9AHyAfEC8AHxAfMB9AH/WAAB/wH0AfMD8gHx AvIB8wH/UgAB/wH0AfEBBwLvAfcB7wG8AfMB/yAABf8D9AT/BQAC/wP0Bf8eAAEcAW4DHAFzAUoBbgHy AfQC/1AAAf8B9AHtAgcB7QHsAfcBBwHyBf8bAAL/AfQB8wHyBfEC8wL/AwAC/wHzAfIC8QLyAfMC9AH/ HQACHAHwAuwBHAHsAXQB8QHyAfQB/ycABv8jAAH/AfABvAHvAfABBwHtAZIB7wHxBPMC9AT/FQAB/wH0 AfIB8AIHA+8D8AHyAfQB/wMAAf8B9AHwAu8BvATwAfEB8wH0Af8bAAEcAZkBvAFKAUsBHAHsAXQB8AHy AfMB9AH/JAAC/wH0AvIB8QHyAfMB9AH/HwAC/wHzAe8BBwLyAbwBBwL3Ae8EBwLwAfEB8gLzAfQE/w4A Av8B9AHwAe8B7AFtARIB6gRKARwB8gP/AfMB7wETAREDQwERAeoB7QEHArwB8AHxAfMC/xMABv8BHAGa AfABSgFRAe8B7AF0AfAB8QHyAfMB9Ar/FwAD/wH0AfABBwL3Au0BBwG8AfIC9AP/GQAC/wH0AfABBwLw AfQCvAGSAe0DkgXvA7wB8QHyAfMB9AL/DQAB/wHzAfAB7AESAW0BHAEHAxoCmQG8AfQB/wH0AewBEwFE AUoBcwIcAnMBSgEVARMB7AO8AfAB8gH0Af8RAAL/BfQBHAGaAbwBSgFRAe8B7AF0AbwC8QHyAfMK9AL/ DQAG/wT0AbwC9wHsAZIBkQHsAZEB7QHvAQcB8QLyAfQB/xgAAv8B9AHzAfEBBwG8A/MBBwLtAe8BkgHt AZIF7wIHAvAB8gHzAfQC/wwAAf8B8QHrAUQBeQEbAfQB8wHxArwBGgHwAfQB/wHxARIBEQFzAZkBGgG8 AwcB7wEcAXMBSgEVAW0B8QHwAQcBvAHyAfQB/xAAAf8B9ALzA/IBHAGaAQcBSgFRAe8B7AF0AvAD8Qny AfMB9AH/DAAB/wH0AfMC8gLwAwcB9wHtAewD6wLsAW0B7ALtAQcB8AHxAfAB8wH/FgAC/wH0AfMB8gHx AbwBBwG8AfEBBwHsAZIB7wIHAu8BBwG8A/AC8QLyAvMC9AP/CgAB9AHsAUQBeQIbAfIB9AMAA/8B8AJK ARwBBwG8AgcB8QH0Af8B9AHxAe8BcwFLAUoB7AHyAfABBwG8AfMB/xAAAv8B9AHyA/EBHAGgAe8BSwFR Ae8B7AF0A/AB8QLwCPEB8gL0Af8KAAH/AfQB8wHyBPEB8AEHAZIB7QLsAesC7AGuAewB6gFtAesC7AH3 AbwB8AHxAfMB9AH/EwAC/wL0AfMB8QHwAbwBBwH3AbwB9wFtAesB8QPyAfEB8gHzB/QH/woAAQcBFAF0 ARoBvAH0BwAB9AHqAUsBmQEHAfEB8wHxAQcB8AHzAf8CAAH0AbwBcwFLAUoB7wHyAbwBBwHwAfQB/xAA Af8B9AHzAfIB8QHwARwBoAHvAUsBcwGZAewBcw3wAfEB8gHzAfQB/wgAAf8B8wHwAbwBkgLtAewB6wH3 AZIB7AJtAesCkQHtAZIBkQLtAZEC7AKuAe0B7wIHAfAB8wH0Av8QAAL/AfQB8wHyAfEB8AG8AQcB7wG8 AfQB8AHtAfQG/xcAAf8BEQFuARoBvAHyAf8GAAH/AfcBRAGgAQcBvAHyAbwB8wG8AQcB8QH0Af8DAAG8 AksBSgG8AfEBBwG8AfMB/xEAAf8B9AHzAvEBHAHDAQcBUQF0AZkB7AFzAvEC8AnxA/IB8wH0Af8HAAHv AewBbgF0AXkCegKgAXoBeQF0AUoBFQERARUB6gHrAZIB7AEHAbwB9wLvAZIB7QH3AQcB8AMHAfAB8gHz AfQB/w4AAf8B9ALzAfIB8QLwAfEBBwHyAvQBvAEHAfIB8QHwAgcB8AL0Af8TAAH/Ae8BRAEcAbwBBwHy Av8FAAH0AesBmQEaAQcB8AHtAeoB8wHwAQcB8QH0Af8EAAHvAksBHAHxAQcBvAHyAf8SAAH/AfQC8wGZ AcMBvAFzAXQBGgHtAW4C8gXxAvIH8wL0Af8FAAH/AfIBHAGZAQcCvAXwAfIB8wMbAcMBmQHsA20C7AGS Ae8B9wHtAfcBBwHzB/IB8wH0Av8LAAL/AfQC8wHyAfEB8AEHAfcB8QP0Ae8B6gFtAewB9wHvAQcB7wEH AfAB9BIAAfMBFQFKAZkB8AG8AfAB8wL/BAAB8QHsARsBvAHwAQcBSgFLAe8B8QG8AfEB9AH/BAAB9AFu AUsBcwG8AQcBvAHyAf8MAAKSBRwBkgH3AhwBGgGZAXQBeQEaARwBSwHtCOwB7QHyCP8FAAH/AfMBBwG8 AfAB8wH0A/8B9AHyArwDBwHwAbwB8AEbARoBmQEcAXQBbgHqAW0B7AH3AbUB8gHzAvQD/wX0Af8LAAH/ AvQB8QEHAfcBbQESAeoBvAT0AesBQwFtAe0EBwHxAbwB8hEAAQcBEQFzAZkB8wHxAfAB8QHzAf8EAAEH Ae8B9AHwAfQBvAFzAnQB8wLyAfQB/wUAARwCSwHvAQcBvAHzAf8MAAF0ARoEwwb0AcMCmgEaARwBdAGZ Ae8GmQHvAXMB8w8AAfAB8QH/BgACBwG7AgcBuwG1AQcC7wGRAQcB8QIbAcMBmQFLAeoBkQHwAfIB9AH/ BAAC/wL0Af8LAAH/AfEBBwH3AuwB6wESAeoBBwT0AZIBFQFtAe0B7wG8AvIB8wHyAbwB8QH0Af8OAAHt AUQBHAG8AfQB8wHyAfEB8gHzBP8B7QG8AfQB8gH/AfQBcwJ0A/QB/wQAAv8BBwFKAUsB7QHwAfEB9AH/ DAABmQHzBPEI8gF0AcMBHAFuAfABvAYHAbwB8QHzEAAB8wH0Af8FAAG8AfIBvAHyAfQB8gG8A/QB7wHz AfIB8AEHARsBGgEbAaACcwEcAfEB/wUABP8KAAH/AfEDBwH3Ae0B6wFtARIB9wT0AfcBFAETAewB7wG8 AfID9AHzAvAB/w4AAe0BSgFzAfAC/wH0A/IB8wL0Af8B7AG8AvMC/wHsAZkBeQH0CP8B9AEHAUQBcwEc AfIB9AH/DQAB7wEcA0oCSwFRAXMBdAF5ApkBeQGZARsBHAFRAUsHSgFuAfAB8gH/DwAB/wL0Af8EAAG8 AfMB8AHzAQAB8gG8AQAC/wEHAfQB/wH0AbwB/wHyAbwBBwIaApkBBwHyEgAB8QPwAgcB9wHtAesBEgHr A/QBBwHsARMBEgHrAfcB7wHxBfQC8AH0DQAB7QFKAXMB8QIAAv8B9ATzAfIBcwGZARsB8AHzAfQB7AGZ AZoB9AIAAf8D9APzAe8BRAFzARwB9AL/DQAC7wVRAXQBeQF6AaABwwH0AqABmQF0AXkBdAJRBUsBcwHw AfIB/xIAAvQDAAG8AfMB8AH/AQAB8wG8AgAB8wEHAf8BAAH0AbwC/wHxAbwCBwEaARsBmgF5AQcB/w4A Af8B8wHwAfQD8wHwAQcB7QFtARIBbQHyAfQB8QHvAQcB7wGSA/cBBwHxBfQC8QH/DAABHAFKAUsBBwQA Av8C9ALzAXMBmQHDAbwB9AHzAesBmQGgAfQCAAH/AvQE8wHtAUQBcwG8Af8PAAHvBBsBGgQbAZoBwwHz AZkC8wUbAxoCvAEaAfEB8AH/EgAC/wH0Af8BAAG8AfABvAHyAfQB8gG8AvMB8QG7AvMB8QEHAfMB8QEH Ae8BBwHxAfMB8AG8AQcBmQG8AfQMAAH/AfQB8AX0AfMBBwGSAesBEgHsAfIB8AHzAfAB8wG8AfIB8AS8 AfAB8wT0AbwB8gwAAbwBSgFLAe0B/wQABf8BHAF5AcMBvAH0AfABHAEbARoDAAP/BPQB6wFKARwB8xAA AW4BHAaSAxwBoAHzAZkBBwHvBBwBkgbtAXMB8QH/FAAC/wEAAbwB8ALyAfQB8gG8AvQB8wG7AvMB8QEH AfMB8gEHAfABBwH0AQAB/wHyAbwCBwG8Af8LAAH/AfEB8gb0AbwB7wFtAesBvAHxAf8BvAHvAfMB8QIA Af8B9AHyAfAB8gLxBPQBvAH0CwAB9AFKAksB8gkAAfMBdAGgARoB/wEAAbwBGwG8BgAD/wHzARQBUQGZ AfQQAAF5CpkBoAHzAZkBoAHDAqACGgKZBe8BmQH0GAAB/wL0AfMBAAH/AfADAAG8Af8BAAL0AQAB/wLz AfEB/wQAAbwBBwG8AfMLAAH/AfAH9AHyAfcB7AEHAfIBAAH/AfQB8QHyAf8FAAH/AfQC8wPyAfEB8AH0 DAAB7wFKAUsB6wH/CAAB9AEcAaABmQEHAf8B9AEbAf8IAAH/Ae0BRAGZARsB/xoAAQcBmgHzAXkBoAHz ARoBwyQAAfMB8gG8AfQB/wHzAwABvAH/AQAC9AEAAvEBvAHzAwAB/wEAAfABvAHwAfQB/woAAfMB8Ab0 AfIBvAEHAbwB8wH/AwAC/woABv8MAAH/AXMBSwFKAe8B/wcAAf8B8AKaARwBBwEAAfQIAAH/Ae8BFQFz ARoB8wH/GgABHAGaAfMBeQGgARsBBwHDJAAB/wHwAbwB8AHzAfAD8gEHAfEB8gG8AfAB8QIHAbwB/wIA Av8B9AHxAfIB8wH/CwAB8QHyBfQB8QHzAfQB8gHzJAAB8wJLAUQB9wH/CAAB8gF6AZoBcwG8CAAB/wEH AREBbgEaAfAcAAIcAfMBdAGaAcMBBwEbJQAB8wK8AfIB8AG8AfIB8wEHAfIB8AEHAfEBBwHvAQcB9AL/ BPQC/w0AAfEB8wL0AfMB8gLzAfIB8QHzJQAB/wEHAXMBSwFKAW0BvAHzA/8B9AHzAf8BAAEaApoBcwHv AfIB9AP/AfMB8QHrAUQBcwGZAfEB/xwAAhwB8gFzAXoBwwEHAfQnAAHyAfEC9AH/AQABvAH/AfIC8wEH AfMB/xYAAfAB8wT0AfEB8gH0Av8mAAH/AbwBHAFzAUsBRAESAesC7AFtARIBvAEAAf8BGgKaAXMB6wHs Au0B7AFtAUoBdAGZAhsB/x0AARwBdAHyAVEBeQHDAQcB9CcAAf8B8gK8AfAB8gG7AbwBBwG7AQcB8wH/ FwABvAHzAvQB8gHwAf8sAAHzApkBHAFzA0oBSwF0AZkB8wIAAbwBmgLDARoB7wHtAe8BGwHDAhsB8R8A ARwBcwHyAUsBdAEaAQcBGykAAfABCAHwAfMCCQIHAfMZAAHxAfQC8gH0LwAB/wHyBRoCGwHyAfMDAAH0 AfEBGgEbA/QB8gHxAfIB9CAAARwBcwHyAUsBcwEaAZkBwysAAf8C9AHzAfQbAALyAfQB/zIAAf8G9AH/ BQAB/wf0Af8hAAEcAXMB8gFLAXMBGgHvAcNLAAHxAf9rAAEcAXMB8wGZARoBGwHvAcO4AAGZAXQD8wH0 AZkBoLgAAvQD8wP0/wD/AP8A/wD/AP8A/wDLAAFCAU0BPgcAAT4DAAEoAwABwAMAAeABAQIAAQEBAAEB BgABLRYAA///AP8A/wD/AIUAIP8Bfxb/AfkBHwv/Af4BPwn/AcABBwv/AfgBHwn/AcABAAE/Cv8B8AEP Cf8B8AEAARwK/wHgAQABfwj/AfACAAEfCf8CAAEPAv8B+QEAAQED/wHwAgABDwP/AgABfwP/AgABDwL/ AcACAAEPAv8B8QIAAQcC/wH8AgABDwP/AgABDwL/BAABPwH/AfEDAAF/Af8B8AIAAQ8C/wH4AYABAAEI AX8B/gQAAR8B/wHxAQQCAAE/Af8B4AIAAQ8C/wH4AwABPwH+BAABBwH/AfEDAAEfAf8BwAIAAQ8C/wH4 AwABPwH+BQAB/wHxAQABgAEAAQcB/wHAAgABDwL/AfgDAAEfAfwFAAH/AfMDAAEHAf8BwAMAAX8B/wH4 AwABHwH4BQAB/wHzAgABCAEPAf8BwAMAAR8B/wH8AgABDAEfAfAFAAH/AeMDAAEPAf8EAAEHAf8B/AMA AR8B+AUAAf8B4wMAAR8B/gQAAQcB/wH2AwABHwH8BQAB/wHzAwABDwH+BAABBwH/AfADAAE/Af4FAAH/ AfIDAAEDAfwEAAEHAf8BwAMAAR8B/wQAAQEB/wHyAQABCAEAAQMB8AQAAQcB/wHAAwABDwH/AcADAAEP Af8B8wEAARgBGQE/AfAEAAEHAf8BwAMAAT8B/wH8AwABHwH/AfMBAAEQAQEB/wHgBAABBwH/AcACAAEB Av8B/AMAAT8B/wHzAQABEAEBAf8B4AQAAQcB/wHAAgABAQH/AfgEAAL/AfMCAAEDAf8B8AQAAQcB/wHA AgABAQH/AfADAAE/Av8B4AIAAQEB/wHwBAABBwH/AcEBgAEAAYEB/wHwAwABPwL/AeEBAAGAAQEB/wHw BAABBwH/AcEBgAEAAcEB/wHwAQEBwAEAAT8C/wHgAQABgAEBAv8EAAEfAf8BwAGAAQEBgQH/AfABCwGA AQABfwL/AcABAAGAAQMC/wHAAwABPwH/AcACAAEBAf8B+AEPAcABAAF/Av8BwAEAAYABBwL/AcACAAED Av8BwAIAAQED/wHgAQABfwL/AcACAAEDAv8B4AIAAQ8C/wHAAgABAwP/AfABAQP/AcACAAEBAv8B4AIA AQ8C/wHgAgABAwP/AfwBAwP/AcACAAEBAv8B+AIAAQ8C/wH4AgABBwj/AcICAAERAv8B+AIAAT8D/wIA AQcI/wHCAgABAwL/AfgCAAF/A/8CAAEPCP8BwwGAAQABAwL/AfgCAAT/AYABAAEDCP8BwwGBARABBwL/ AfgBAAEBBP8B8AEAAQEI/wHhAQEBEAEHAv8B/AEAAQME/wHgAQABAQj/AfMBAQEQAQcD/wEAAQcE/wHg AQABAwj/AfMBAQEYAT8D/wGAAR8E/wHgAQMJ/wHzAYMBiAE/A/8BwAE/BP8B4AEHCf8B8wHDAZgBPwP/ AeABPwT/AeABDwn/AeMB/wGYAT8D/wH8Bf8B8AEHCf8BxwH/AZwBfwn/AfABHwn/AccB/wGfCv8B+AEf C/8BHxf/AT9e/wH8AT8W/wH4AR8Q/wHgAQ8E/wHwAQ8Q/wHgAQAE/wHwAQcC/wHfAv8BDwH/AT8I/wIA AR8D/wHwAQMC/wHfAf8B4AEDCf8B/AIAAQED/wGAAQABHwL/AwABDwj/AfgDAAP/AgABBwH/Af4EAAE/ B/8B8AMAAX8B/wH+AgABAQH/AfwEAAEfB/8B4AMAAR8B/wH4AwABPwHwBAABAQf/AcADAAEPAf8B+AMA AT8B8AUAAv8B/gF/A/8B4AMAAQcB/wHwAwABDwHwBQAC/wH8AX8C/wF/AcADAAEDAf8B4AMAAQcB8AUA AfAB/wH8AR8B/wHHAX8BwAMAAQMB/wHgAwABBwHwBQAB8AExAfwBBwH4AQMBfwHAAwABAQH/AfADAAED AfAFAAHwAQABYAEDAYABAQF/AYAEAAH/AcADAAEBAeAFAAHwBAABAQF/AYAEAAH/AcADAAEBAeAFAAHw BAABAQE/AYAEAAH/AYAEAAHgBQAB+AUAAR8BwAQAAf8FAAHwBQAB/AUAAR8BwAQAAf8FAAHwBQAB/AFA AwABAQEfAYAEAAH/BQAB+AUAAf4BMAMAAQEBHwGABAAB/gUAAfwFAAH+AQgDAAEDAR8BgAQAAf4FAAH+ BQAB/wEIAwABBwEfAYAEAAH+BAABAQH/AcAEAAH/AYABIQGAAQEB/wEfAYAEAAH+BAABAwH/AeAEAAH/ AcABAgFAAQEB/wE/AYAEAAH+BAABBwH/AfAEAAH/AcECAAEBAf8BfwQAAQ8B/gQAAR8B/wH4BAAB/wHz AYQBIAHBAv8EAAEfAf4EAAE/Af8B+AQAAv8BgAERAfkC/wQAAT8B/wQAAX8B/wH4AwABAQL/AcgBgwF/ Av8EAAE/Af8EAAF/Af8B+AMAAQ8C/wHwAQ8D/wQAAR8B/wQAAX8B/wH4AgABAQP/AfABhwP/BAABHwH/ AYADAAL/AfgCAAEBA/8B8AGPA/8EAAE/Af8BgAMAAv8B/AIAAQED/wH8AR8D/wQAAX8B/wHAAgABAQL/ Af4CAAEBA/8B/AEfA/8EAAF/Af8BwAIAAQEC/wH+AgABAQP/AfwBPwP/AYACAAEBAv8B4AIAAQED/wIA AQMI/wHAAgABBwL/AfACAAEDA/8BgAEAAQMI/wH4AgABfwL/AfACAAEHA/8BwAEAAQcJ/wEAAQMD/wH8 AgABDwP/AeABAAEfCf8BgAEDA/8B/gIAAR8D/wH4AQABfwn/AcABBwT/AgABfwP/AfwBABD/AeABAxb/ AfwBf9D/AgAQ/wGfAfwBDwL/Af4CAAF/Cv8BhwT/AQEB8AEPAv8B/gIAAX8D/wHHAf4F/wEDBP8CAAEP A/8CAAF/A/8BAQHgAQcC/wH+AQYBAAF/Av8BAQIAAQMC/wH4AgABAwL/Af4BAAHAAQEC/wH+AQIBAAF/ Av8EAAE/Af8B8AIAAQEC/wH+AQABgAEBAv8B/AIAAX8C/wGAAwABDwH/AeADAAL/AfgCAAEBAv8B/AIA AT8C/wGAAwABBwH/AeADAAF/Af8B+AIAAQEC/wH8AgABPwH/Af4EAAEHAf8B8AMAAv8B+AIAAQEC/wH4 AgABPwL/BAABBwH/AfQCAAEBAv8B+AMAAv8B+AIAAR8C/wQAAQcB/wHgAgABAwL/AfgDAAL/AfgCAAEf Av8BgAMAAQcB/wHgAgABDwL/AfwDAAL/AfgCAAEfAv8BwAMAAT8B/wGAAgABAQL/AfwDAAE/Af8B+AIA AR8C/wHBAYACAAF/Af8BgAIAAQEC/wH4AwABPwH/AfgCAAEfAv8BwQGAAgABPwH/AYACAAEDAv8B+AMA AT8B/wE4AgABHwL/AuACAAE/Af8BgAIAAQEC/wH4AwABPwH+AQwCAAEDAv8B4AFAAQABDAE/Af8BgAIA AQEC/wHwAwABPwH+AwABAQL/AfACAAEPAX8B/wGAAgABAwL/AeADAAE/Af8BwAIAAQEC/wH4AgABHwL/ AcACAAEHAv8BwAMAAT8B/wHAAgABAQL/AfgCAAE/Av8B8AIAAQ8C/wHAAwABPwH/AcACAAEDAv8B+AIA AT8C/wH4AgABHwL/AfADAAE/Af8BgAIAAQMC/wH4ASABAAF/Av8B+AIAAT8C/wHgAwABPwH/AYADAAF/ Af8B/AIAAX8C/wH4AgABfwL/AeADAAE/Af8BgAMAAT8B/wH8AQABAQP/AfwCAAF/Av8B4AMAAT8B/wGA AgABCAE/Af8B/gEAAQMD/wH+AgABfwL/AcADAAE/Af8BwAIAAQ8BBwH/Af4BAAEDA/8B/gIAA/8BwAMA AX8B/wHAAgABDwGHAf8B/gEAAQMD/wH8AgAD/wHAAwAC/wHgAgABHwL/Af4BAAEDA/8B+AIAAT8C/wHA AwAC/wHwAgABDwL/Af4BAAEHA/8B+AIAAT8C/wHAAwAC/wHwAQABAQEPAv8B/gEAAQ8E/wIAA/8BwAIA AQEC/wHwAgAD/wH8AQABHwT/AgAD/wHAAgABAwL/AfwBAAGAA/8BCAEAAT8E/wIAA/8BwAIAAQcD/wEB AYAD/wIAAX8E/wIAA/8BwAEAAQ4BDwP/AQEBgAP/AgABfwT/AgABfwL/AcABAAEPBP8BAQGAA/8BgAEA AX8E/wIAA/8BwAEAAQ8E/wEBAYAD/wGAAQABfwT/AgAD/wHgAQABHwT/AQEBwQP/AeABAAX/AQABAQP/ AeABAAEfBP8BAQHjA/8B8AEDBf8BgAEBA/8B4AEAAR8E/wEBAfMD/wH4AQcF/wHgAQMD/wH4AQABPwT/ AQEL/wHgAQcD/wH4AQABPwT/AcML/wH8AR8D/wH4AQABfwT/AccR/wEDd/8B4AE/EP8B/gE/BP8BAAED EP8B/AEfBP8BAAEBCv8B4AEAAT8D/wH4AQ8D/wH+AgABfwn/AYABAAEPA/8B+AEHA/8B/gIAAX8D/wHg AQME/wIAAQMD/wGAAQABfwP/AgABfwL/AfgCAAEPAv8B/gMAAX8C/wIAAT8D/wIAAX8C/wHwAgABBwL/ AfwDAAE/Af8B/gIAAQ8D/wGAAQABfwL/AeACAAEBAv8B+AMAAR8B/wH4AgABAwP/AgABfwL/AcADAAF/ Af8B+AMAAQcB/wH4AgABAQP/AYABAAF/Av8BgAMAAT8B/wH4AwABBwH/AfgCAAEBA/8BwAEAAR8B/wH8 BAABHwH/AfgDAAEDAf8B4AMAAX8C/wHAAQABDwH/AYAFAAH/AfADAAEBAf8BwAMAAT8C/wGAAQABBwH/ AYAFAAH/AeAEAAH/BAABDwL/AwABfwGABQAB/wHABAAB/gQAAQEB/wHwAwABPwYAAf8BwAQAAf4FAAH/ AfADAAEHBgAB/wHABAAB/gUAAf8B8AMAAQcGAAH/AYAEAAH/BQAB/wHwCgAB/wGABAAB/wHAAwABAQH/ AfgKAAH/AYADAAEBAf8EAAE/Af8B+AoAAf8BgAMAAQMB8AQAAT8B/wH4CgAB/wGAAwABAwHwBAABHwH/ AfgKAAH/AYADAAEHAfgEAAEPAf8BwAkAAQcB/wGAAwABHwH+BAABDwH/AcAJAAEDAf8BgAMAAT8B/wHA AwABPwH8AUAJAAEDAf8BgAMAAX8B/wHAAgABBwH/AfwDAAEBAeAFAAEDAf8BgAMAAv8B4AIAAQcB/wH+ BAABeAUAAQcB/wHAAwAC/wHgAgABBwH/AfwEAAF/AYAEAAEHAf8BwAIAAQEC/wHwAgABDwH/AfwEAAE/ AYEDAAEBAR8B/wHAAgABAQL/AfACAAEPAf8B+AQAAT8BgQMAAQEBHwH/AeACAAEDAv8B+AIAAQ8B/wH4 BAABPwGDAYACAAEBAe8B/wHgAgABAwL/AfwCAAE/Af8B8AQAAT8B/wHAAgABAQL/AfgCAAEHAv8B/AIA AX8B/wHwBAABHwH/AcACAAEBAv8B+AIAAQ8C/wH+AgABfwH/AfAEAAEfAf8B4AIAAQEC/wH8AgABHwP/ AcABAwL/AfAEAAEfAf8B+AIAAQMD/wIAAX8D/wHwAQ8C/wHwBAABHwH/AfgCAAEDA/8BgAEABP8B/AEP Av8B8AEHAfABEAEAAR8B/wH4AgABBwP/AeABAwT/Af4BHwL/AfABHwH/AX4BAAEfAf8B/AIAAQ8J/wH+ AR8C/wHwAT8C/wHIAT8B/wH+AgABPwn/Af4BHwL/AfgBfwL/AfgBPwL/AgABfwr/AT8K/wH4AR8L/wE/ rP8B4AEfFv8BgAEDFf8B/gIAAX8D/wHgAQcP/wH8AgABfwP/AeABAwr/AfABAwP/AfwCAAE/Av8B8AEA AQMK/wHAAQED/wH4AgABHwL/AcABAAEBAcABPwH/AfwBHwHzBP8BgAEAA/8B+AIAAQ8C/wHAAwABPwH/ AfwBDwHABP8CAAP/AfgCAAEPAv8BwAMAAR8B/wH4AQcBgAF/A/8CAAP/AfACAAEPAv8BwAMAAQ8B/wH4 AgABfwP/AgABfQL/AfACAAEPAv8BgAMAAQMB/wH4AgABfwL/AcADAAL/AeACAAEPAv8EAAEBAf8B+AIA A/8BgAMAAv8B4AIAAQcB/wH+BQAB/wH4AQABAQP/AYADAAL/AcACAAEHAf8B/gUAAf8B/gEAAQMD/wGA AwAC/wHAAgABBwH/Af4FAAL/AQABAQH/AfkB/wGAAwAC/wHAAgABAwH/Af4FAAH4Af8BwAEAAR8B4AH/ AYACAAEBAv8BwAIAAQMB/wH8BQAB8AF/AgABDwHgAf8BgAIAAQEC/wHAAgABAwH/AfwFAAHwAT8BAAEg AQcBwQH/AYACAAEBAv8BwAIAAQcB/wH8BQAB+AIAATABAAEBAf8BgAIAAQEC/wHAAgABBwH/AfwFAAH8 AgABHgEAAQEB8AQAAQ8B/wHgAgABBwH/AX4FAAH+AgABHwGAAQcB8AQAAQcB/wHgAgABBwH/AR4FAAH/ AQABAwEHAcABBwHwBAABDwH/AeACAAEPAf8BHgUAAd8BwAEDAYMBwAEHAfgEAAEPAf8B4AIAAQ8B/wEe BQABzwHgAQABQwGAAQ8B+AQAAR8B/wHgAgABDwH/AR4EAAEGAcMB8AMAAQ8B/AQAAR8B/wHgAgABDwH/ AR4EAAEGAeMB/AEAARABAQEfAfwEAAE/Af8B8AIAAQ8B/wEeBAABDgHzAfgBPwH4Ah8B/gQAAT8B/wHw AgABDwH/Af4EAAEOAvABOQGcAQ4BPwH+BAABPwH/AfgCAAEPAf8B/gQAAT4B8AFgAXgBHgEMAT8B/gQA AT8B/wE4AgABHwL/BAABPgH8AQEB/AE/AQABfwH/AYADAAF/Af4BCAIAASABfwH/AYADAAE+Af4BAQHw AQ8BgAL/AcACAAEBAf8B/AEEAgABIAE/Af8BgAMAAT8B/gEBAfABDwGAAv8B4AEgAQIBAwH/AfwBBAIA AUABPwH/AcADAAL/AQMB/AF/AcAC/wHAASABAAEHAf8B+AEGAgABwAE/Af8B4AIAAQEB/wH+AQEB/AF/ AYAC/wHAASABAAEHAf8B+AEHAQABAQHAAT8B/wHwAgABAQL/AQAB/gF/AQEC/wHAASABDAEHAf8B/gEH AeAB/wHgAX8B/wHwAgABDwL/AYgBPwH+AR8C/wHgATABHgEHAf8B/gEPAfwBfwH4Av8B8AIAAQ8C/wH8 AQcB8AE/Av8B4AE8AR4BBwL/AR8B8AEfAfkC/wHwAgABDwP/AQMBwAF/Av8B4AF/Af4BDwP/AfABHwP/ AfgCAAEfA/8B8wGDA/8B+AL/AQ8D/wHgAQ8D/wH4AgABPwT/Ae8K/wHgAQcD/wH4AgABPw//AeABBwP/ AfgCAAF/D/8B4AEHA/8B/AIAEP8B4AEPA/8B/gEAAQEQ/wHwAR8E/wEAEf8B+AE/BP8B53H/AcABPxX/ AfgCAAF/Av8BuwL/AfEO/wHgAgABHwL/AaEC/wHBCv8B/gF/Av8BwAIAAQ8C/wGBAv8BwAj/AfACAAEf Av8BgAIAAQEC/wGAAX8B/wEAAX8H/wHwAgABHwL/BAAC/wGAAT8B4AEAAT8B/wH+Af8B/AF/Av8B8AIA AQ8C/wQAAT8B/wHAAT4CAAE/Af8B/AEDAYABfwL/AfACAAEHAf8B/gQAAR8B/wHAAwABPwH/AfgBBwHA AR8C/wH4AgABAQH/Af4EAAEfAf8BwAMAAR8B/wHwAQcBwAEPAv8B+AMAAv8EAAEPAf8BwAMAAR8B/wHg AQcBwAEPAv8BwAMAAQMB/wQAAQcB/wHAAwABDwH/AcABBwHAAQcC/wHAAwABAQH/BAABBwH/AcADAAEP Af8BwAEHAcABAwL/AcAEAAH+BAABBwH/AcQDAAEPAf8BgAEHAeABAwL/AcAEAAH+BAABBwH/AcADAAE/ Af8BgAEHAeABAQL/AcAEAAH+BAABBwH/AcADAAE/Af8BAAEHAeABAQL/AcADAAEDAfwBIAIAASABDwH/ AYADAAL/AQABDAEQAQEC/wHAAwABBwH8BAABDwH/AYACAAEBAf8B/gIAARABAAL/AcEDAAEPAfwEAAEf Af8BgAIAAQMB/wH+AQABEAIAAv8BwQHgAgABDwH8BAABPwH/AYQCAAEDAf8B/gEAASACAAH/AfABAwHg AgABBwH8BAABfwH/AYQCAAEBAf8B/gQAAf8B4AQAAQcB/AMAAQEC/wGAAgABAQH/Af4EAAH/AfABAgMA AQcB/AEwAQABQAFhAv8BgAIAAQEB/wH+BAAB/wHwAQMB4AGMAQABfwH8ATwBAAFgAcEC/wGAAgABAQH/ Af4EAAH/AfgBQQHhAQwBHwF/AfwBPwEwAWcB4QL/AYACAAEBAf8B/gQAAv8BwQHiATwBPwH/Af4BHwL/ AcEC/wGAAgABDwL/AwABAQL/AcABxwEYAT8B/wH+AR8C/wHBAv8BhAIAAS8C/wMAAQEC/wHgAccBAAE/ Af8B/gEPAv8BgQL/AYACAAEvAv8DAAEBAv8B8AFPAZABfwL/AQ8B5wGfAYMC/wGHAgABHwL/AYACAAEB Av8B8AEHAYABfwL/AQMB5wEeAQcC/wGGAgABGQL/AcACAAEDAv8B+AIAA/8BgQHnAR4BDwL/AYYCAAE5 Av8BwAIAAQEC/wH+AQABAQP/AcAB5wEcAQ8C/wGGAgABOQL/AcACAAEBAv8B/AIAA/8BwAEnAQABHwL/ AYQCAAE/Av8BwAIAAQEC/wH4AgABfwL/AeABBwEAAT8C/wGAAQABAQE/Av8BwAIAAQEC/wH4AX8B8AF/ Av8B+AEHAQABfwL/AYABNgGBAb8C/wHAAgABAQL/AeAB/wH4AT8C/wH8AQcBAQP/AYAB9gGRAb8C/wHA AgABAwL/AeAB/wH8AT8D/wIHA/8BgQH3AZED/wHAAgABAwL/AfAL/wHHAf8B8wG/Av8BwAIAAQcO/wHH Af8B+wG/Av8B4AIAAQcO/wHHBf8B4AIAAQ8U/wH4AgABDxT/AfgCAAEfFP8B/AIAAX8V/wHAAQMW/wH8 AZ98/wHgAQcP/wHgAT8B/wGBA/8BwAEDCv8B/AEfA/8BwAEfAf8BAQP/AYABAwr/AeABAAP/AYABBwH+ AQAD/wEAAQEF/wHwAX8D/wIAAQMC/wIAAf4BAAE/Av8BAAEBBf8BwAFgAX8C/wIAAQEC/wIAAf4BAAE/ Av8BAAEBBf8BgAEAAT8C/wIAAQEC/wGAAQABPAEAAR8C/wEAAQED/wH+AQcBgAEAAT8B/wH+AwABfwH+ BAABBwL/AQABAQP/AfwBAQGAAQABPwH/Af4DAAF/Af4EAAEHAf8B/gIAA/8B+AEAAYABQAE/Af8B/gMA AT8B/gQAAQcB/wHwAgABHwL/AcABAAGAAQABfwH/Af4DAAE/AfwEAAEHAf8B4AIAAQ8C/wHAAQABQAEA A/8DAAE/AfgEAAEHAf8BwAIAAQ8C/wGAAQABfgEDA/8B4AIAAT8B+AQAAQcB/wHAAgABBwH/Af4CAAE8 AQMD/wHwAgABPwHwBAABBwH/AYACAAEDAf8B/gIAARgBAwP/AfACAAEfAfAEAAEDAf8BgAIAAQMB/wH+ AwABAwP/AfwCAAEfAfAEAAEDAf8DAAEBAf8B/AMAAQED/wH8AgABDwHwBAABAwH/AwABAQH/AfwDAAEJ BP8CAAEPAfgEAAEBAf4DAAEBAf8B+AMAAQ0D/wHwAgABDwH4BAABAwH+AwABAQH/AfgDAAEEA/8DAAEP AfwEAAEBAf4DAAEBAf8B+AMAAQQD/wMAAT8B/gUAAf4DAAEBAf8B+AQAA/8CAAEBAf8B/gUAAfgEAAE/ AfgEAAF/Av8BgAEAAQMB/wH+BQAB+AQAAT8B+AQAAT8C/wHkAQABDwH/Af4FAAH4BAABPwH+BAABPwL/ Af4BAAE/Av8EAAEHAfgEAAE/Af8EAAE/Av8B/gFwAT8C/wGAAwABDwH4BAABPwH/AcADAAF/Av8B5AFw AT8C/wGAAwABDwH8AQ8BgAEBAcABfwH/AfgDAAF/Av8BgAEAAT8C/wHAAwABHwH8AQ8BgAEHAcABfwH/ AfgDAAF/Av8CAAE/Av8BwAMAAT8B/gEHAYABBwHAAX8B/wH+AwABfwL/AgABPwL/AcADAAE/Af4BBwHA AQcBwAP/AYACAAF/Af8B/AIAAX8C/wHgAwABHwH+AQcBwAEPAcAD/wHgAgABfwH/AfgBAAT/AeADAAE/ Af4BAwHgAQ8BwQP/AfACAAF/Af8B8AEABP8B8AMAAT8B/wGDAfABHwGBA/8B/AIAAv8B4AEDBP8B+AMA Av8BwQH4AT8BAwP/AfgCAAL/AeABAwT/AfgCAAEDAv8BwQH5Af4BAwP/AfgCAAL/AeABBwT/AfgCAAEP Av8B8AH/Af4BDwP/Af4BAAEBAv8B+wEPBP8B/AIAAQ8C/wH4AT8B8AEfBP8BAAEBCP8B/AIAAQ8C/wH4 AR8B8AF/BP8BwAEDCP8B/AIAAR8D/wEfAeMP/wH+AQABwAF/Ff8BAAH9Fv8BAJf/AfYX/wHAAT8H/wGB AfMBzwH/AX8J/wH+AQABPwb/Af4BAAEhAQcB/wE/Af8B5wL/AecE/wHwAQABHwL/Af4D/wH+AQABQAED AccBPwH/AcMB/wF/AeME/wHAAQABHwL/AfwBPwL/Af4BAQEAAQMBgQG/Af8BxwH8AR8B8QT/AYABAAE/ Av8B/AEfAv8B/AEDAQABAwGAAd8B/wHDAfwBHwHhBP8CAAE/Av8B/gEfAv8B/AEHAQABAQGAAV8B/wGH AfABBwHhBP8CAAE/Av8B/AEfAv8B+AEBAgABwAFfAf8BgwIAAeAD/wE+AgABPwL/AfwBDwL/AfgDAAGA AR8B/wEDAgABQAL/Af4DAAE/Av8B/AEfAv8B+AQAAR8B/wQAAv8B8AMAAT8C/wHgAQMC/wH4BAABPwH/ BAABfwH/AeADAAE/Av8B4AEAAv8B+AQAAT8B/wQAAX8B/wHgAwABPwH/AfgCAAEBAf8B+AQAAT8B/wQA Av8BwAMAAT8B/wHAAwABfwH4BAABPwH/BAAC/wHgAwABPwH/AcADAAE/AfwEAAE/Af8BgAMAAv8BwAMA AT8B/wGAAwABDwH+BAABPwH/AcADAAL/AYADAAE/Af4EAAEBAf8EAAF/Af8BwAIAAQEB/wF/BAABPwH+ BQAB/wHAAwAC/wHAAgABAQH/AX8EAAF/AfwFAAH/AfgCAAEPAv8B4AIAAQMB/wE+BAABfwH8BQAB/wH8 AgABHwL/AeACAAEDAf8BPgQAAWMB/gQAAQEB/wH8AgABPwL/AeACAAEDAf8BfgQAAUEB/AEAASACAAE/ Af8B/AIAAT8C/wHwAgABBwH/AX4EAAEhAfAEAAEfAf8B/AIAAT8C/wHwAcABAAGPAf8B/gQAASMB8AQA AQ8B/wH8AgABPwL/AfgBwAEBAY8B/wH+BAABPwHgBAABDwH/AfwCAAE/A/8B4AEDAv8B/gQAAf8B4AEA AQICAAEHAf8B/AIAAT8D/wHAAQEC/wH+BAAB/wHgAQABAQGAAQABBwH/AfwCAAE/A/8BwAEAAv8B/gQA A/8B4AEHA/8B/AIAAX8D/wHAAQABfwH/AfwDAAEBA/8B4AEPA/8B/AIAAX8D/wGAAQABfwH/AfgDAAEB A/8B8AEfA/8B/gIAAX8D/wGAAQABfwH/AfgDAAEHA/8B/AE/BP8CAAT/AYABAAF/Af8B8AMAAQ8D/wH8 AX8E/wIAAX8D/wGAAQABfwH/AfADAAEPCf8CAAF/A/8BgAEAAX8B/wHwAwABHwj/Af4CAAF/A/8BgAEA AX8B/wHgAQABAQHAAT8I/wH+AgABfwP/AcABAAF/Af8B6AGAAQcB2AHwCP8B/gIAAX8D/wHAAQABfwL/ AQABHwH/AeABfwf/Af4CAAF/A/8BwAEAAX8B/wH+AQABPwH/AYABfwf/Af4CAAF/A/8BwAEAAv8B/gEA AX8BvwFgAX8H/wH+AgABfwP/AeABAAL/Af4BCQL/AfABfwj/AgABfwP/AfgBAwL/Af4BDwz/AgAF/wG/ Av8B/gE/DP8CABb/AcABAxb/AeABBxb/AfABH7L/AfAL/wHwAQMK/wGAAT8K/wHgAQMK/wEAAR8K/wHg AQMK/wEAAR8D/wHgAQEB8AEDA/8B8AEACv8BAAEBA/8BwAEAAeABAQP/AfABAAT/Af4BBwT/AgABDwL/ AYABAAHgAQABfwL/AfABAAF/A/8B+AEBA/8B/AMAAX8B/gQAAR8B/wH8AwABHwL/AcABAAEPAv8B+AMA AT8B/gQAAQ8B/wH4AwABBwH/AcACAAEPAv8B8AMAAR8B/gQAAQcB/wH4AwABBwH/AYACAAEHAv8B4AMA AQcB/gEBAcACAAEHAf8B+AMAAQMB/wMAAQEC/wHAAwABBwH+AQcB8AEAAcABAwH/AfwDAAEDAfwEAAE/ Af8BwAEAAQEC/wH8AQcB4AEAAXABAwH/Af4DAAEBAfwEAAEPAf8BwAIAAT8B/wH4AQMB4AEAAXgBAwL/ AwABAQHwBAABAQH/AcACAAEfAf8B+AEBAeABAAF4AQMB/wHAAwABAQHwBQAB/wHgAgABDwH/AfgBAQHg AQABfAEDAf8BwAIAAQEB/wH8AX4CAAEBAeAB/wHgAgABAQH/AfgDAAHwAQMB/wHAAgABAQH/Af4BPgIA AQEB8AH/AcACAAEBAf8B+AQAAQcB/wHAAwAB/wH+AR4BEgIAAv8BwAMAAf8B+AFgAQABBgEAAQcB/wHA AwAC/wHOARMBEAEAAT8B/wQAAX8B+AF4AQABBgEAAR8B/wHAAwAC/wHCAwABHwH+BAABfwH4ATwBAAEO AQABPwH/AcADAAL/AfICAAEIAQ8B/gIAARgBAAE/AfgBPwHgAY8BwAE/Af8BwAIAAQEC/wH+ARMBkgIP Af4BAAEEAR8BAAE/AfwBHwHgAQ8B8AE/Av8B8AEPBP8BAwGSAR0BBwH+AQABBwE/AfABPwH8AQ8B4AFf AeABPwL/AfABDwT/AgABGAEPAf4BAAEfA/8B/gEHAfgBPwHAA/8B8AEPBP8BgAIAAT8B/gEAAT8D/wH+ AQABBAIAA/8B8AEPBP8B4AGAAX8B/wH+AQABPwT/AQABBAEAAQED/wHwAQ8E/wHgAQAC/wH+AQMF/wHA AQMBAAEHA/8B8AEPBP8B+AEDAv8B/gEPBf8B4AEDAYABDwP/AfABDwT/Af4BDwL/Af4BHwX/AfgBBwHA AR8D/wHwAQ8I/wH+AX8M/wHwAQ8W/wHwAQ8W/wHwAQ/4/ws= 17, 17 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC4 fQAAAk1TRnQBSQFMAgEBDAEAASgBAAEoAQABOAEAATgBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwAB4AMAAeADAAEBAQABCAYAAcQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/ AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/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/AP8AOgAC9AP/AQAD/wEAAv8CAAL/BgAC/wIAAf8CAAL/AQAE/wIA A/+3AAG8Au8B8gL/AvQC/wL0Av8C9AL/AgAC/wH0A/8B9AL/AfQC/wT0Av8C9AL/ewAy/wkAAfMC8AEH AfMB8QIHAfAB8gG8AQcC8QIHAfMB/wIAAf8B8AEHAbwB8QG8AQcB8wG8AQcBvAHxAbwDBwG8AfEBvAEH AfAB/3oAAf8B8wG8AfQB/wHxAbwB8gHxAQcB8QHwAQcD8AHxAQcB8wH0AfEB8gHzAfAC8QHwAvMBvAHx Af8B8QG8AfABBwHxAf8B8wHwA/EB9AHxAQcC8wHwAfIB/wkAAf8B8AH0AQcB8wHwAfQB8QHwAfIB8QHy AQcB8QHyAe8B9AH/AgAB/wHwAfQCBwHyAe8BvAHyAfABvAHxAvIBBwG8AQcB8QHyAQcB8QH/egAB/wHx Ae8B8gH/AfEBBwHzAfAB9wHzAQcB7wHyAvEBBwGSAfECvAHxAQcB8QH0AfMB7wEHAbwBBwG8AfABBwLy Ae8B8QHyAe8B8gH0AfEB7wIHAe0B8gK8AfQB/wkAAf8B8AH/AQcB9AHxAf8B8QHyAfQB8QHzAQcC8wHv Af8EAAHxAf8CBwH0Ae8BvAH0AvAD8gEHAfQB/wLzAe8B8nsAAfQB8AEHAbwB9AHyAQcB8QEHAZIB9AEH AfcB8QHzAfQBvAHtAgcB8wHyAe8B9AEAAf8B8AIHAu8BBwHyAf8B8wHvAvEB9wH/AQAB9AHwAQcBvAHs AgcB9AH/CgAB/wHwAf8BBwH0AfEB/wHxAfIB9AHyAfMBBwLzAe8E/wEAAfEB/wIHAfQB7wG8AfQC8ALy AfMBBwH0Af8C8wEHAfIKAAL/AvQX/wL0Av8BAAX/AQAC/wH0Av8BAAP/AQAE/zwAAf8B8gHvAfMBvAHz AfEBvAIHAZIB9AG8AgcB8gH/AfACBwHvAfIB8wHvAfQBAAH/AfEBvAEHArwBBwH/AQAB8wHvAfIB9AGS Af8BAAH0AfECBwHvAQcB7wHyAf8KAAH/AfAB/wEHAfQB8QH/AfEB8gH0AfIB8wEHAvMB7wH0AfEB7wEH Af8B8QH/AgcB9AHvAbwB9ALwAvIB8wHtAe8B8gLzAQcB8goAAf8BvAHvAQcB9wHxAbwB9wPvAfEBkgH3 Ae8BBwHzAQcB9wG8AfMB9wLvAfcB8ATvAfMB/wHxAZIB7wHzAv8BBwHvAgcB8gH0AQcB9wHyAf8CBwH0 Af88AAH/AfEB8AH/AfEBvAHwAbwB9AHxAZIB9AG8Ae8B8wHyAf8B8AGSAfMCBwHxAfcB8QL/AbwB8QHw Ae8BBwHvAfMB/wHzAe8B8gHwAe0B8wH/AfQBvAHxAbwB7AHzAe8BvAH/CgAB/wHwAf8BBwH0AfEB/wHx AfIB9AHyAfMBBwLzAe8B9AHyAfAB8gH/AfEB/wIHAfQB7wG8Af8C8ALyAfQB7wHxA/MBBwHyCgAB9AHw AfQB/wLvAfMBvAH0Af8B8AH/AQcB8QH0AQcB8QHzAQcC9AEHAfIB/wHyAfEB8AL/AfAB8QH/AQABBwHw Av8BvAEHAv8B8wEHAfMB8QHvAf8B8AG8AfQIABD/AQAF/wIABv8CAAX/AQAJ/wYAAf8B8gHvAfAB/wH0 Au8BBwHyAfAB9wHyAQcB9wHwAQcB8gEHAfcB8AEHAfEB9AHxAQcB8gHwAbwB8wHxAe8CvAEHAfMB8gHv AfAB8wHwAbwB8gLwAfQBvAHtAfABBwHyAf8KAAH/AfAB9AEHAfQB8AH/AvEB9AHxAfQB7wHyAfMB7wH/ BAAB8QH/AQcB7wH0AQcB7wH/AvAC8gHzAQcB8gPzAQcB8gH/CQAD/wHzAe8BvAH0AQcC8gHzAQABBwHx AfQBvAHyAfMBBwL0AQcB8AHzAfAB/wH0Af8B8gG8AfIB/wEAAQcB8QH/AfQBvAHyAgAB/wLwAfEB7wHy AQcB8gH/CAAB9AHzAvIC8wL0AfMC8gH0Af8B8wHyAfQB/wHzAfIB8QHzAv8BAAH/AfMC8gHzAf8BAAH/ AfQD8gH0Af8B9ALyAfMC9AHzAfIB9AH/BQAB/wHzAfIB8wH/AfQC8QHyAfMC8gHzBPIB8wHyAfEB8gHz Af8BAAH/AfMC8gL/AfMB8QHyAf8B8gHzAfIB8QH0Av8C8gHzAf8B9AHyAfEB8gHzAf8LAAH0AbwB9AEH AfMBvAH/AfEBvAHyAfEB9AHvAfQB8wEHAf8DAAH/AbwB/wHwAQcB9AHwAe8B/wPxAvMB7wIHAfEB9AEH AfAB/woAAfQBvAHvAfIB/wH0AQcBvAEHAfIBAAIHAbwBBwH0AfMBBwL0AgcB8AHvAf8B9AG8AQcB8QL/ AQABBwHxAf8B8gHvAfMCAAH/A/EB7wHwAbwB8QH/CAAB9AG8AgcB8AEHAbwB8gMHAfMB8QEHAbwB8wHx AQcBvAHwAbwB8QH/AQAB9AHwAgcB8QL/AfIBBwHwAfECBwLyAQcB7wG8AfIB8AEHAfAB9AH/QwAB/wHz AfQB8wH0AfMC9AHzA/QB8wP0Af8DAAH/AfMB9ALzAfQC8wb0A/MC9AHzAfQB/wkAAf8B8AG8AfMD9AEH AvQB8wH/AQcBvAHxAQcB9AHzAQcC9AEHAfIB/wHxAf8CBwP0Av8BBwHwAf8B8wG8AfEC/wH0AQcB8gHx Ae8B/wHwAbwB/wkAAfEB8gHwAfQB8AEHAfQC8QHwAfMBvAHwAvQB8AEHAfQB/wHzAbwB9AEAAf8B9AK8 Af8BAAHzArwB9AH/AfMB8AHvAfQB8AEHAfIB8QHwAfEB/3gAAf8B8gG8AfIBBwHxAfIBBwLwAQcB9AIH ArwB9AHxAbwB8gHzAe8BvAHxAQcB9AIHAfICBwG8AfEB7wEHA/ABBwLyAQcB8AH0AfAB7wHyAQcB8AH/ CQAC8gG8AfMCvAH0AvEBBwK8AfMB/wH0AfIBBwH/AQAB/wG8AfQCAAH0AbwB8AL/AbwB8QHwAf8BAAH/ AfEBBwHyAfACBwHwAQcB/3kAAv8B8gLwAfQB8wLyAfEB8gH/AvEB8gL/AfMC8gH0AfEB8gLxAv8B8QHw AfEB8gHwA/IB8QHyAf8B9AHxAfAB8wL/AfMC8QHzAf8KAALyAe8BvAEHAfMB/wLxAQcB8AEHAfQB/wH0 AfIBBwH/AQAB/wG8AfQCAAH0AbwB8AL/AbwC8QH/AQAB/wLxA/ADvAH/tAAC8gEHAbwBBwHyAf8C8QHw AfEBBwHwAf8B9AHyAQcB/wEAAfQBBwHzAv8B9AG8AfAC/wG8AvAB/wEAAf8B8QHwAfIB8QG8AvEBBwHy HQAC/wH0AfID8QHzA/8rAA3/UwAB/wHxAfIBvAHzAbwB8QH/AvEB8AHzAbwB8QH/AfMB8gHvAv8B9AEH AfIBvAHyAfMBvAHwAfQB8QEHAfABBwH0Af8B8QHwAQcB9AHwAQcB8gLxAfIZAAL/AfQB8gEHAewBEgEV AUMBEAERARQBbQHtAbwB8wL/JQAE/wH0AfEBvAHvAZIB7QHsAe0B9wEHAfAB8wH0Av9QAAH0AbwB8AHv AQcB8AHzAfQBvAHwAQcBvAHwAfMB9AG8AfAB7wHyAfQB8QEHAfABBwHvAbwCBwK8AfMB8QK8AfABvAHx AfQB8wG8AgcBvAHwAf8XAAL/AfQB8AHtAeoDEgETARQBFQNDAREBQwESAZIB8QL/IgAC/wH0AfEBBwHs AW0BEwFDAhEBEAIPARABQwHqAe0BvAH0Av9OAAH0BPMB9AH/AfQB8wHyAvMB9AH/AfQB8wHyAfMC9ATz AfID8wLyAv8B8wLyAfMC/wXzAf8XAAH/AfQB8AH3AuwB7QLsAesB6gESAxQCFQFDAREBEAETAe8B8gH/ HwAD/wHyAe8B7AFtAuoBEgETAhUCEQMPAQ4BDwFDAesBBwH0Af8pAAP/AQAD/18AAf8B8wEHAfcB7wEH Au8B7QLsAesB6gESARMDFAEVAkMBEQFDAesB8AL/HQAB/wH0AQcB7QPsAesCbQHqAm0B6gESARUBQwEQ AQ8DDgFDAewB8gL/HAAC/wcAAv8B8wHxAf8BAAH0AfEB8wH0Av8GAAL/UwAB/wHzAe8BBwS8AQcB7wL3 AewB6wFtAeoBEwMUARUCQwEQAREB6gG8Af8cAAH/AfMB7wHtAfcCkgPtAewBbQESAkQBEgHqAewB6wES AREBDwIOAQ8BbQHwAf8cAAHzAfIB/wQAAf8B9AEHAesBSgHrAfMBAAG8ARQBEgHsAQcB9AH/BAAB/wG8 Af9SAAH/AfQB7wEHBPAC8QEHAbwB8AG8Ae8B7QFtAhIDFAEVAkMCEQEUAbwB/xoAAf8B8wL3A+8CBwHs AUQCHgYLAREBbQHsARUBDwMOARQB8AH/GwAB8wHsAfMB/wIAAf8B8AFEAiMBIgFtAfMBAAEHAyIBEAHr AfEB/wMAAfMB7AH/UQAB/wH0AfcBvAHxAvAB8QHyAbwB8QH0A/8BAAH/AQcB6wHqARICFAIVA0MBEQEU AfIB/xgAAf8B9AL3AgcCvAGTAUUB6QEBAR8DAQIeBAsBDwHqARMBEAMOARQB8QH/GgAB/wFKAe0B8QL0 ARwBIwFLAUUCIwFtAfMB/wEHBSIBFAEHAvQB8QHrAe8B/1EAAf8CBwHwBPEB8AHzA/8EAAH/AfIB7AHq ARMDFAIVAkMBEQFtAfMB/xYAAv8B7wHsAe8BBwG8AQcBbwJFA+kDHwIBAUQCHgMLAUMBFAEQAw4B6gHz Af8XAAH/AQAB/wEcAUQBEgHrAW0FSwEjAUoB8QH0Ae8EIgJDAUQB6wFtARQB6wHzAgAB/ycABv8hAAH/ AfIB9wLwAvEB8AHxAfQC/wcAAf8B8QHrARIBEwMUARUDQwERAfcB/xYAAf8B8AHsAe0B9wIHAW8CRgIg BOkCRgFFAUQBIwIeAwsBEAFDARADDgHsAfQB/xUABP8B8wFzAiMBSgF0AZMBHAFSAksBSgHsAe0BEgIi AUQBbgHsAW4BRAIiAW0BvAH/AQAD/xsAAv8C9AL/AgAD/wHzAfIB8QHyAfMB9AP/HgAB/wHvAQcBvAHw AfEBvAHxAfQC/wkAAf8B7wFtARIBEwMUAhUCQwESAfEB/xQAAf8B8wHsAesB7ALvAW8CRgMgAekCRQFG AUUCRAFDAgsCHgMLAQ4BDwMOAUMBvAH/FQAB/wG8AfMC/wHyAW4BRAFzAbwC8QGZAUwBSwFzAhwBbQIi AW4BvAHyAfAB6wEiAUQB7wH0Av8B8wHxAf8aAAH/AfMBBwH3Ae0B7wHyAf8B9AHxAQcB7QFtAxIBbQHs Ae8B8QH0Av8bAAH/AfIB7wK8A/AB8wL/CwAB8gHsAW0BEgETAxQCFQFDARUBkgH/FAAB/wEHAW0B6wHt Ae8BbgFFAUYBQAMgAekBHgJFAUMCAAEOAQsBAQJEBAsBDgEPAw4B6wH0Af8UAAH/Ae8B7QHyAfQB8wHs AUoBBwHyAvQB8AJLAXMB9wHvAewBIgFEAe0B8gL/AfIBEgFEAe8B9AH/AfEB7AHzAf8WAAL/BPMB8gEH AW4BRAFtAe8B6wESARUBEQEQAhEBIgEQAREBFQESAe0B8AH0Af8aAAH/AQcB9wEHAbwB8AEHAfMC/wwA Af8B9wHrAW0BEgEUAhMBFAIVAUMBbQHzAf8SAAH/AfMB7AHqAesB7wFuAUUB6QIgASUBIAElAUUDRAEO AgsBAAEeAR8BRQERAR4ECwQOARUBvAH/FQAB8wJKAewB6wFEAewB8QH0Av8B8wNLAVEBcwFEASMBSgHv AfMD/wEHASIB6gHsAesBEgEcAf8XAAH0AfcB6wHqAesB7AEHAfMB8QFEAUMBFQFDAREBQwJEAeoB6wHt AZID9wHsAW0B7wHzAf8ZAAH0AfcB7wEHAbwBBwHxAv8NAAH/Ae8B7AHrAW0DEgETARQCFQETAQcB/xIA Af8B8ALqAesB7wFEAekEIAElAUYBbwFEAg4BAAELASQCCwHpAUUBEQIeAwsEDgEPAe0B/xUAAf8BBwFE AiIBRAEcAfMB/wIAAfQBHAFLAZkBBwG8ARwBRAFLAbwB9AH/AgAB8wEVAiIBRAEcAfMB/xcAAv8B9AG8 AW4CRAG8AfAFRAFuAe8BBwHxAfMC/wMAAf8B9AG8Ae8B8gH/FwAB/wHxAe0B7wEHAbwB7wH0EAABBwLs AesDbQETAhQCFQH3Af8SAAH/Ae8BFAETAesBEgEeAR8DIAFGAUUBbwFFAUMBDwIOAQsB6QEeAQsCRQEL AQEBHgQLBA4BbQHzAf8UAAL/AQcBSgEiAUQBBwL/AgAB/wGZAUsBdAEHAfABkgFEAW4B8AL/AgAB9AHs ASIBSgHvAfMC/xkAAv8BvAFuAUUB6gFEAUUBRAFFAW4B7wHwAfMB9AHzAfIC8QHyAfQC/wEAAf8B9AHz Af8XAAH/AfAB7AH3Ae8CBwP/DQAB/wHvAe0C7ALrAm0BEgMUAe0B9BIAAfQB7AEVARQBbQIeAQEB6QIg AUYBRAERAUQCRQFEAQ4BAAEfAQEBAAELAREBCwEBAh4ECwEPAg4BFQHwAf8UAAP/AfACSgHwAf8DAAH/ AbwCSwJzAksBdAHxAv8CAAH/ARwBFQHtAfMC/xsAAf8B8wHtA0UBSwFMAZMBvAHyAfQB8wG8AewBEgET ARIBbQHtAbwB8wL/GgAB/wG8Ae0D9wHxA/8MAAL/Ae8D7QHsAusB7AHqARMCFAHsAfQSAAHzARMBFQEU ARMBCwEeAQEBHwHpASABRgFFAUQBRQFGAW8BbgEQAQABAQHpAR4CAAEeAgECHgMLAQ8CDgFDAQcB/xUA Av8B9AFtAUoB8QH/BAAB8AFLAXQBvAEaARwBSwEcAfIC/wIAAf8B7wFDAQcC/x0AAfQB7QFEAUUBTAF0 AZkB8AHzAfQBvAHrARQBbQHsAe8BBwK8AQcB8AHzAf8aAAH/Ae8B7AHtAfcB7QHzAf8B9AHzAf8LAAH/ AfIC7wH3AZID7AHvAesB6gESARMB7AHzEQAB/wHyAREBQwEUARUBCwEeAQEBHwHpAiABRgHpAkYBbwFE AQ4BAAHpAUABIAIBAekCHwEBAR4DCwEOAg8BQwHvAv8WAAH/AW0BEwHwAf8EAAHxAUsBcwEHAfAB7QFL AZkB8wH/AwAB/wHvAUMBBwH/HQAB/wHwARIBRAFFAW8BGgHwAvQB7wESAW0B9wG8AfIB9AT/AvQB/xoA Af8B7wTsAfQB/wHwAe8B8wH/CAAC/wH0AQcB7wEHAe8B9wGSAe0B7AG8AesBbQLqAewB8xEAAf8B8AEQ AREBFAEQAQsBHgEBAh8EIAFGAW8BRAEPAQABCwVGAiABHwIBAR4CCwEOAg8BQwH3AfQB/xYAAf8B7AFE AQcB/wQAAfICSgFuAXMCSwG8AfQB/wMAAfQB7QFEAbwB/x0AAfMBbQFDAUQBRQGTAbwC9AHvAUQBbQHv AfMB9AT/AwAB/xsAAfQB9wHrAuwB6wH0Af8B8QHsAfcB9AgAAv8B8AHvAbwBBwHvBPcB8QHsAesCbQHs AfMRAAH/AbwBDwERARUBDwELAR4CAQEfAukBIAFGAW4BRAEOAQABCwFFAUYBbwFGAUUBRgMgAekBAQEe AgsBDgIQARUBkgH0Af8WAAH/Ae8BIgGSAfQEAAHzAesBSwHvAbwBHAFLAbwB9AH/AwAB9AFtARIB8gH/ HAAB/wFtAREBQwFEAW4BBwH0Af8BBwJEAe0B8wP/IgAB/wHvAm0B6wFtAfMBAAHzAe8B7AHtAfQB/wQA Av8B9AG8Ae8CvAIHA+8BvAHyAuwC6wHtAfMRAAH/AbwBDwEQAUMBDwILAR4CAQHpAUUCRgFuAREBDgEL AUYBEQEQAUUBRAELAekCIALpAR8BAQEeAQsBDgEQAREBFAHvAfQB/xYAAf8B8AEiAW0B8gH/AwAB9AHs AW0B8gH0AQcBSwG8Av8CAAH/AfABQwHsAfQB/xwAAfIBEAJDAUQBbgG8Af8B9AFuAkUB7QH0Af8kAAH/ Ae8BbQHrAW0B6wHxAv8B8AHvAewBbQG8AfQC/wL0AfEC7wLxAbwDBwG8AQcC8QPsAesB9wH0EQAB/wHw AQ4BDwERAQ8CCwIeAgEBRQFEAUYBbgERARABRQFvAW4BQwEQAQ8BCwFFAUYCIAHpAR8BAQEeAQsBDwIR ARMB7wH0Af8XAAH0AesBQwHvAf8DAAH/Ae0BbQHzAf8BvAFLAbwC/wIAAf8B7AFKAbwB/x4AAQcBFQFD AkQBbQHwAfQB8AF0AUsBbgG8Av8jAAH/AbwBEgJtAeoB7wH/AQAB8wIHAfcBbQHsAe0C7wL3AbwB8wHy AfEB8AEIArwC8AH0AQcD7QHsAe8B9BEAAf8B8gIPARABDwMLAh4CAQELAUQBEwEPAQ4BRQF0AW8BEwFE AkUCRgIgAekBHwEBAR4BCwEQAkMBEgEHAv8XAAH/AQcBRAESAfAB/wIAAf8BHAHqAfMBAAG8AXMB8AL/ AQAB/wEHAUQB7QHzAf8eAAH/AfcERAFtAfAB9AG8AZMBSwFuAQcB9AP/AwAD/xoAAf8B8QHqARMBEgHq AewB9AL/AfEB7wEHAbwBBwLvAQcBvAHyAfMC8gHxA/AB8QG8AfIB9AP3Au0BBwH/EgAB8wEVAw8ECwEe AQEBRQFEBA4BEAEUAW0BFAERBEYCIAHpAR8BAQEeAQsBQwEVARQBbQHwAv8YAAH0Ae0BRAHrAfED/wHv AeoB8wEAAbwBcwHxA/8BvAHqAXMBvAL/HgAB/wH0AesCQwJEAesB8AHzAfABkwFuAUoB7QEHAfIB9AL/ AfQB8wH0Af8bAAHzAesBFAETARIB6gHwAf8BAAH/AfAB7wK8AfAD8QHwAfEC8gHxAfAB8QHyAfAB8QH0 AfIB9wLvAvcB8AH/EgAB9AHrAw8ECwEeAUQBRQFEAQsCHgJEAREBDwEOAREERgIgAekBHwEBAR4BCwIU ARMB7AHyAf8ZAAH/AfIBcwFEAW0BvAH0Af8BBwFtAfMBAAG8ARwB8gH/AfQB7wFLAXQBvAH0Af8gAAH0 AewBEQFDA0QBbgEHAfIB8QEHARwBSwHqAesB7AGSAfcB7wHxAfQB/xsAAf8BkgEUAhMB6gHtAfQB/wEA Af8B8QEHArwB8ALxAfAF8QHyAfAB8QH0Af8BBwH3A+8BBwHzAf8SAAH/Ae8BDgIPAQ4ECwEjAUQCCwEf A0UBEAEAAQ8CRQFGARcBRgIgAekBHwEBAR4BEQESARMB6gHvAfQB/xkAAv8B8QFzAUQBEwHtAfAB7wHs AfMBAAG8ARwB8QG8AXMBSwGZAbwB8wL/HwAB/wHzARIBRAESBEQBbgH3AfAC8gEHAe8BkgHtAfcBBwHz Av8BAAP/GAAB/wG8AeoBEwISAW0BBwH/AgAB/wHzArwC8APxAfIC8wLwAfIC/wHyAZIFBwL/EgAB/wHw AUMBDgEPAQ4BAAcLAQEBRQFuARUBDgELAkUDRAMgAekBHwEBAQsBFALqAesBBwH/GwAC/wHzARwBSgEV AhQB6wHzAQABvAFLAeoBSgFzAZkBvAHzAv8dAAP/AfMB7QEUAesBBwH3AUQBQwJEAUUBbgHvAfEC8wP0 BP8B9AHwAfIB/xkAAfQB7AEUARMCEgHrAfEB/wIAAv8B8wK8AfAC8QHwAbwB8AHyAfQC/wH0AfcB7wG8 AQcCvAHyAf8UAAH0AesCDgEPAQ4GCwEeAkUBEgIPAUYBRAFDARABDgEBAyAB6QEfAQEBRANtAfcB8gH/ HAAC/wH0AfABHAFKASIBbQHzAQABvAFKAUsBmQG8AfIB9AL/HgAB8wH3AesBEwFuARwBBwHyAfQBEwNE AUUBSwFMAUsBbgH3AbwB8QLzAfIB8QH3AewB8AH/GwAB8AESARQBEgHqARMB6wHyAf8CAAP/AfQC8wHy AvMB9AL/AQAB9AL3A7wB8AEHAfQB/xQAAf8BBwERAw4BAAQLAx4BRQESAQ4BDwFuAQ4BFQJEBCABHwEB AUQB6gHrAuwBBwL/HgAC/wH0AfIBBwHsAfMBAAG8Ae8B8AHzAfQC/yAAAf8B8wG8AfAB8QLzAfIB7QFE Ae0B9wFuAUsCRQJLAUUCRAEUAhMBEgH3AfMB/xwAAf8B7QEUARMCEgETAW0B8AL/AgAK/wHzAZIB7QS8 AQcB8gL/FQAB9AHrAQ8DDgEABAsCHgJEAg4BAAEOAUMBRAHpBCACAQHqAuwB7QHvAfIB/yAAA/8B9AH3 AfMBAAG8AQcE/yMAA/8B8wEHAewB7QEHAfAB8wHxAQcBHANvBG4B7QEHAfEC/x4AAfQB6wITARIB6gEU ARIB7wHyA/8EAAP/AfQBvAHsAfcDvAPwAv8XAAHxARUEDgULAR4CRAERAQ8CDgELAQEDIAHpAR8BHgHq AewBkgH3Ae8BvAH0Af8jAAH/Ae8B8wEAArwB/ygAAf8B9AHzAvIB8wP/AfQC8gHxARoD8AHxAfMB9AL/ IAAB8wHrARQBEwISARMBFQFtAe8B8AHzBPQB8wHxAQcBkgHsAe8DBwG8AvAB9AH/GAAB/wEHARAEDgYL AkQBQwELAR4BCwEfASAB6QEfAQEBRAFtAe0B9wHvAgcB8wL/IwAB/wHvAfMBAALwAf8qABP/IgAB8gHs AxMDEgETAeoB6wHsA+0D7AH3Ae8DBwK8AfAB8wL/GQAB/wH3AQ8EDgEABAsFHgEBAh8CAQFEAesB9wLv AgcB8gL/JQABvAH0AQAB8AHyAf8yAAj/JQAB/wHzAfcB6gESARMF6gJtAesB7AHtAZIB9wTvArwB8AHz Av8bAAH/Ae8BEAUOBgsFHgFEAeoB7QH3Ae8BBwG8AQcB8gH0Af8mAAHwAfQBAAHwAfRhAAL/AbwB7AHq AhIC6gFtA+sB7APtAfcB7wEHAfABvAHxAfQC/x0AAf8BvAEVBQ8EDgQLAUMBEwHrAewBkgHvAQcB8AG8 AfIB9AH/JwAB8wH2AQAB8gH/ZAAB9AHvAesB6gESAuoBbQPrAewB7QGSAe8CvAHwAfMC/yAAAf8B8gHs ARQBEQMPAhACEQFDARQBEwHqAW0B7AHtAe8BBwLwAfIC/ygAAv8BAAL/ZQAC/wG8Ae8BkgTsAZIB9wHv AQcBvAHxAfMB9AL/IgAB/wH0AQcB7AESAUMDEQFDARUBEwESAeoBbQHsAZIB7wK8AfEB8wP/lAAC/wH0 AfIB8QLwAvEB8gHzAvQC/yUAAv8B9AHwAe8B7AHrA20C7AHtAZIB7wG8AvAB8gH0Av+YAAv/KAAE/wHz AfIB8QXwAfEB8gLzAfQD/50ABP8uAAf/AvQG/9MAC///AN0AAf8FAAH/AgAE/wMAAf8EAAH/AwAD/wMA Av8CAAP/BAAB/7QAAf8B9AH/AgAF/wH0AvMB9AH/AQAB/wH0Af8BAAP/AQAC/wH0AfMB9Ab/BPQB/wIA Af8B9AH/ggAD/wIAA/8CAAX/AQAD/wEAA/8BAAP/AQAF/xAAAfIB7wHzAf8BAAH0AfAB8QH/AfIBvALv AQcB8gH/AfEBBwH/AQAB/wHwAbwC/wHxAQcC7wHwAv8BvAHyAfQBvAHwAbwBBwH/AgAB8wHvAfSAAAH/ AfIBvAEHAfAC/wHzAbwB8AL/AfMBvAEHAbwB9AEAAfIBvAHxAf8B8gG8AfAB9AHwAbwC8wG8AgcB8AH0 Af8PAAHzAfEB7wL/AfIBBwHzAfIBBwHwAfMB8gG8AfcB9AIHAfQBAAH0AfMB7wH/AfIBvAHyAfMBvAH3 AfMB9AHvAQcB8AEHAfQB8AEHAfIC/wHwAe8B/38AAf8B8AP3Ae0B7wHyAQcB9wHsAv8B7wL3AZIBBwEA AfcBkgHvAfIBBwH3AewBvAH3Ae0BvAEHA/cBkgHwAf8PAAH/AbwB9wHzAf8B8QG8Af8B8AEHAfQC/wHy AQcB9AEHAe8B8wH/AfQB8wHvAf8CvAH0AQAB8QEHAfIB9ALvAQcB8gH/AfQCBwH/AfMB8AHxAf8NAAH/ AfMC8gHzAf8B8wH/AQAB/wL0AfIC8QLzAvEB8gH0AfIB8QHyAvQB/wEAAf8B8wH0Av8B9AEAAf8B8wHx AfIB8wH/EgAD/wEAAv8CAAP/AgAD/wEAA/8CAAL/AQAC/wIAAv8BAAL/FQAB8wHvAQcB9wIHAfcDBwHs Av8B7wMHAfcB/wHvAQcB7wHwAgcB6wIHAfcDBwLvAbwB9BEAAfQB8AEHAfIBBwHyAv8BBwH/AgAD/wEH Ae8B9wLvAfMB7wH/AgcB/wEAAfMBvAHyAfQB8AHzAu8C/wHxAQcB8gHxAe8B/w4AAbwBBwK8Ae8B8AH3 AQcB8QG8AQcBvAIHAbwB8AG8AQcBvALwAQcDvAHvAfQBAAHxArwB/wHyAbwBAAH/AfABBwK8Af8SAAHz AZIBvAH/Ae0BBwL/AQcB7AHxAQAB/wHyAZIB8gH/AfAB7AHzAQAB/wG8Ae0B8wHtAQcC/wEHAe0B/wH3 Ae8B/xQAAfMCBwGSAe8BBwLvAgcB7AH/AfQD7wEHAewB/wIHAe8B8AIHAesCBwH3AwcBkgHyFAABBwH3 AQcBvAH0Av8BkgH/AgAB/wH0Af8BBwG8AQcCvAHzAe8B/wIHAf8BAAHzAbwB8gH0AgcBvAHvAfEBAAH0 Ae8BkgEHAfIOAAH/AQcC8wEHAfcB9AHwAfcC7wHxAfIBBwIAAfQBBwHzAgABvAHvA7wB9wHzAfABBwHv AbwB/wHxAQcBAAH/AQcB9wHwAfEB/xIAAfEBvAHvAfEBBwHvAf8B8AHvAbwBBwEAAf8B8AH3AfEB/wHv AQcBkgHxAQcB7wHtAbwBBwHvAf8B8AEHAfcB8QEHAe8B/xQAAfMCBwGSAbwC8AHxAgcB7AH/AfIBBwL3 AQcB7AH/AgcB7wHwAgcC7AEHAe8B8AIHAZIB7AEHAfQSAAH0AfEB7wHxAf8BAAHwAe8BBwLzAQcB7wH/ AgcB9AEAAfQB8wHvAf8CBwH/AQAB8wG8AfIB9AHvAbwC8AHxAQAB/wLxAe8B9A4AAf8BBwLyAQcBvAH/ AfQC7wG8AfQB8gEHAgAB9AEHAfMCAAG8AQcDvAH3AQcBvAH0AQcBvAH/AfEBBwH/AfQB8AEHArwB/xIA AfEBvAHvAfEBBwHvAfMBBwK8AQcBAAH/AfAB9wHxAf8B8QG8Ae0C7AEHAe8B8AG8AfcB8QLvAfMB8gEH Ae8B/xQAAfMCBwGSAf8C9AHzAgcB7AH/AfABBwHvAfcBBwHsAfQCBwHvAfACBwHvAQcB7wGSAfEDBwH3 Ae8B8xIAAf8C8AH0Af8BAAH/AfEB7wH3Ae8B8AHzAf8CBwH/AQAB/wHyAfAB/wK8Af8BAAHzAQcB8wH0 AQcC7wG8Af8CAAH0AbwB8gH/DwABvAEHAbwCBwH/AQABvAHvAfIB/wHyAfECAAH0AfAB9AIAAbwBBwG8 AfAB8QEHAbwC/wK8AfABBwH3AbwB8gEHAe8BvAHwAf8SAAHxAbwB7wHxAQcB9wEHAe8BBwG8AQcBAAH/ AfAB9wHxAv8BvAHvAfcBBwHvAfIB8QG8AfcB7QHvAfAB/wHyAQcB7wH/FAAB8wEHAbwBkgG8AvcBvAEH AbwB7AH/Ae8BBwLvAQcBkgHxAgcB7wHwAbwBBwHtAe8BBwHtAwcB7wG8AfIB/xIAAf8B9AHzAf8DAAH/ AvMB8gH0Af8BAALzAf8BAAH/AfMC/wHzAfQB/wEAAf8B8gL/AfMC8gH/AwAB/wHzAv8PAAH0A/IB9AH/ AQAB/wHzAf8BAAH0Af8CAAH/AfQB/wIAAfMC8gHzAfQB8wH/AQAB/wL0BPIB9AHzAvIB8wH/EgAB8QG8 Ae8B8QEHAewB9wG8AQcBvAEHAQAB/wHwAfcB8QH/AQABvAHvAe0BBwHvAfQB8QG8AQcBvAH3AfIB/wHy AQcB7wH/FAAB8wEHAbwB7AGSAQcB7wMHAewB/wHvBAcB7wMHAe8B8AG8AQcB6wGSAQcB9wMHAZIB7wHx AfQTAAL/IwAB/0wAAfEBvAHvAfEBvAHvAQcB8wK8AQcB/wHyAQcB9wEHAfIC9AEHAe0B7wHwAf8B8QEH AfcBvAH3Ae8B9AHyAQcB7wH/FAAB9AK8AfcB7wIHAfIBvAEHAewB/wHvBQcB9wMHAfABvAEHAe8B9wIH AfIBvAEHAe8C9wHwAf+EAAHxAbwBBwHxAbwBBwHwAf8B8AG8AgcBkgHvAQcB7QGSAe8B/wEHAbwB7wHz Af8B8QEHAe8B8gG8AZIBvAHyAQcB7wH/FAAB/wH0AbwCBwG8Af8B9AG8AgcB9AIHAfEB8gIHAfECBwHx AfMBvAMHAbwB9AH/AfAEBwHzAf9cAAL/JgAB8wEHAfMB9AK8Af8BAAHxAQcB9AYHAfIB/wHyAbwB8AH/ AQAB9AG8AfEB/wHzAQcB8gH0AbwB8QH/WgAH/zIAAf8B8wHtARIBBwH0Af+bAAP/AfQB8gHwAe8B9wLt AfcB7wG8AfMB9AL/KgAC/wHyAe0BFAFDARUBQwHqAQcB8wL/lgAD/wHyAQcB7QESARUBQwEQAQsDDwER ARQB6wHvAfIC/yYAAf8B9AHxAe0BFAFDARQBEwEUARUBQwEVAW0B7wHyAv9iAAX/AQAE/ycAAv8B8gHv AewFRAIeBgsBEAESAfcB8gL/IgAB/wHzAbwB7AETARQEEwYUAeoB7wHyAv9gAAH/AQcC7wHzAf8BBwLv AfMB/yUAAf8B9AG8Ae0BbgZFBEQGCwFDAW0BBwH0Af8eAAL/AfMBBwHsAxIBEwMSAhMEFAETARQBFQHq AZIB8AH0Af8nAAL/AvQC8wH0A/8tAAHzAesB6gHrAfAB8wISAesB8QH/JAAB/wH0Ae8BbgVvAZMBHAHv AQcBvAIHAZIBbgFEASIDCwERARQB9wH0Af8dAAH0Ae8B7APrAW0B6gISAeoCEgITAxQCEwEUARUBFAES AewBvAH/JAAB/wHzAQcB7QHrAW0C6gHrAewBBwHzAf8sAAH0AewBbQHsAbwB8gETAW0B7QHyJAAB/wH0 ARwCbwIWAZQCBwHxAfMC9AT/AfQB8QHtARUECwFDAe0B9B0AAewB6wTsAesD6gFtARIB6gITAhQBFQEU ARMBFAITAhIB6gHzIgAB/wHwAe0BBwHsAREEEAERARIB7QL3AbwB/yoAAfQB9wFtAewB8AHyARQB6gGS AfMjAAH/AfQBkgFuAhYBlAEaAbwB8QHzAfQE/wYAAfMBbgMLAQwBEQGSAf8cAAESAe0B9wGSAuwB7QFt AeoBbQLrAe0BEgETARQDFQEUARMBFAETAhIB6gHzIQAB8wHsAe0B9AH/AfcFEAFDARIBBwH/AfEB6gHs AfEB/yQAAf8B8QHwAbwBBwHsAW0B7AHwAfIBFAESAewBBwO8AfMB/x0AAv8B7wJvARYBlAK8AfIB9Az/ AQAB/wHvAUQDCwFDAe8B/xsAARIB7ATtAuwB6wPsAe0B6wISARQBFQJDAxUBFAETARIB8x4AAv8B8AHt AQcB/wEAAf8B7wEPBBABFQFtAQcB/wEAAfQB7AESAQcC/yEAAf8BBwLrAuoBbQHrAe0BvAHyARQBEwEU ARUBQwIVAewB9BwAAv8B8AFuAW8BFgGTAbwB8AHzAfQC/wrzAv8BAAH/AQcBRAILAREBFQHxAf8aAAET AuwBkgH3ApgB9wKSAfcC7wEHAewDEwRDARUCEwESAfMeAAH/AbwB9wG8AfQCAAH/Ae8EEAERARUB6wG8 Af8CAAH0AZIBEgHvAfQB/yAAAfMB9wLvAfcB7QLsAZIBvAHyARQDEwEUAxMBBwH/GwAB/wHzARwBRgFv ARYBBwHwAfMC/wEAAbwB7ANuAewCbgLrAewB8AH/AgAB/wEHAUQCCwERAewB9AH/GQABFAHrAewBkgKY AQgBBwLvAQgB9wHyAfQBBwHqAuwBEwIRAUMBFAITARIB8x0AAf8BvAEcAbwB9AH/AgAB/wH3BBABEQEV AesBvAH/AgAB/wHzAewBEwEHAf8fAAH/Ae8B7QHvArwBBwH3Ae0B9wG8AfIBEgHqAm0B6gITARQB6wHz Af8aAAH/AbwCRgFvAZMBvAHzAv8CAAH3A28GbgHsAfAB/wMAAfQBkgFEAgsBFAG8Af8ZAAEVAeoB6wHt AQcBmAEIAbwB9wHvAQcB9wH0AQABBwHsAvcBEgIRARUCFAETARIB8x0AAfIB7QEHAfIB/wMAAf8B7wQQ AREBFQHrAbwB/wMAAf8B8AHqARIB8B4AAf8B8QHsAe0BBwHwAbwB8AEHAZIB9wHwAfIBEgHsAe8BvAEH AeoDEwHvAf8ZAAH/AfQB7QJGAW8BBwHzAv8DAAHzBbwFBwHzAf8DAAH/AfMB6gEeAQsBQwHsAfQZAAER ARIBbQHtAZgBCAHxAfABkgHtAfcB7wH/AQABBwH3AesBbQETAhUCFAEVARQBEgHzHAAB/wHsARwBvAH0 Af8DAAH/Ae8CEQIQAREBFAHsAbwB/wQAAfQBkgFDAW0B9B0AAfQBkgHrAe0B8QEHAfQB/wHzAvcB8AHy AW0B9wHyAv8B9wITARQBbQHyAf8YAAH/AfABRQJGAZMB8QL/BAAB7wFuBEUD6gJtAbwB/wQAAf8B7wFE AgsB6gHxAf8YAAEVARMBEgHsAQgB8gH0AfACCAH3AfMB/wEAAfQBvAHsAfcBbQHqAe0B6wETARQBEgHq AfMcAAEHAesBvAHxAf8EAAH/Ae8BFQJDAREBQwFKAewBvAH/BAAB/wG8ARMBEQEHHAAB/wHxAeoB6wHv AQcB9AIAAfQB7wH3AfAB8gHrAe8B9AIAAfQBEgMUAfcB/xgAAf8BBwJGAW8B7QH0Af8FAAH3ARYIkwHt AbwB/wUAAfMBRAILARUBBwH/GAABFQESAeoB7AFtAfcB8wHyAfcB8AHvAfEB/wEAAfQB9wIHAe0B7wEH AW0CEwESAeoB8xsAAf8BFAHrAbwB8wUAAf8B7wFKAhQCFQFKARwBvAH/BQAB8wHrARABFAH0GwAB/wHs AesB7AK8Af8CAAH/AbwB7wHxAfIB7AEHAf8DAAEHARIB6gESAW0B8gH/FgAB/wH0AZMB6QFGAW8BBwH/ BgAB9AHzB/IB8QHyAfQB/wUAAf8B6wILAUMB9wH/GAABEgHqAXIB7AGSAesBBwHwAe8B8QG8AfIB/wEA AfQBBwHxAbwB7wHxAe0B6gETARICbQHzGwABvAFDAesBBwH/BQAB/wG8AW0ESgHrARwB8AH/BQAB/wHs AhEBvAH/FQAF/wH0AvACvAH0AwAB/wHzAfEC9AHxAfIB/wMAAf8B9wHvAQcBvAH0Bv8RAAH/AfMBbgHp AUYBbwHyAf8GAAH0AfME8gXxAfMB/wYAAe8BHgELAREB7AH0GAABFAHqAewB7QKYAewB8QHwA/8CAAP/ AvEBvAHrAewCEgFtAesB8xoAAf8B7AFDAXIBBwH/BQAB/wHyARwCcwFyAesBHAEHAfIB/wUAAf8B7QER AUMB7QH/FQAB8wLvAbwB8AHyAfMB9AHzAfQB/wQAA/8BAAL/BAAB/wT0AfMB8QG8AQcB7wHxAf8RAAH/ AfMBRQHpAUUBbgH0BwAB7wFuBkUDbgEHAf8GAAHxAUQBHgERAesB8xgAARQB6gLsAfcBBwHtAfIB9AH/ BwAC/wHvAQcB9wFtAeoC6wHzGgAB/wESAREBbQEHAf8GAAH0AbwBCAGZARwBBwG8AfEC/wYAAe0BEQFD AesB/xUAAfACFAETARIBbQHrAewBkgHvAQcB8QH0AgAB/wH0Af8BAAL0Af8BAAH/AfIBvAEHAfcB7QHs AW0B6gETAhIBBwH/EQAB/wHyAUQCRQFuAfQHAAFuAkYBJQdGAe8B/wYAAfMCHgFEAW0B8gH/FwABFQES AusBbQGSAfAB9AoAAf8C8QHsAW0B6gFtAesB8xoAAfMBFAERAUoB7wH/BgAB/wH0AfIB8AG8AfAB8gH0 Af8HAAHsAhEB6wHzFQAB8AETARIB6gYSAeoB6wHvAv8B8AHtAfIB9AHtAe8B/wEAAbwBbQISBBQCEwHq AewBBwH/EQAB/wHyAkQBRQHrAf8HAAFuB0cCRgFvAe8B/wYAAfQCHgFEAW0B8gH/FwABQwESAW0D6wHy Af8BAAT/AQAG/wHtAewB6wFtAusB8xoAAfIBFAEQARUBkgH/BwAC/wP0A/8GAAH/AesBEAERAesB8hUA AfABEwESAuoBEgLqAW0B6wHsAfcBkgL/AQcB7QHwAfIB7AH3AfQBAAEHAeoBEgTqAW0B6gHrAW0B7AEH Af8SAAHzAUQBHgFEAW0B/wcAAW4JRwFvAQcB/wYAAfMCHgFEAewB8wH/FwABQwETAW0C6wH3AfIC/wEH AewBBwH/AQAB9AHsAe0B8gH/AfMB9wGSBOwB8xoAAfEBFAEQAREB6wHzCAAF/wgAAfMB6gEQAREB6wHy FQAB8AETAxID6gFtAesB7ALvAv8B8AEHAfAB8QG8AQcB9AEAAQcD7AHrBW0C6wEHAf8SAAHzAUQBHgFE ARIB8wcAAW4JRwFvAQcB/wYAAfIBRAE+AUQB7AHzGAACFALqAesBbQH0Af8B8gH3AQcB6wHxAf8B7QLs AfcB9AH/AQcBbQTsAfMaAAHxARQCEAESAfAB/wYAAf8B8QHsAeoB6wG8Af8HAAHwARQBEAFDAXMB8hUA AfAB6gLrAuwB9wEHAbwD8AHyAv8B8gHxAvMB8QHzAf8BAAHzAfABvAHwAbwB7wGSBewBBwH/EgAB8wHq AR4CRAHxBwABbgJGBkcBFwFvAQcB9AYAAQcDRAGSAfQYAAEUARMC6gHsAfcB9AH/AbwCmALsAfQB7QGY AQcBvAL/ApIE7AHyGgAB8gEUAhABEQHtAfQEAAL/AQcBcwEcAXgBcgESAe0B8wH/BAAB/wGSAhABQwHs AfQVAAHyAe8BBwG8AvAC8QHyAfMB9AL/AQAF/wH0Av8BAAL/AfQB8wHyAvEC8AG8AQcB7wHwAf8SAAH0 AewCCwFEAfcB/wYAAW4DRgVHARcBFgEHAfQFAAH/AewDRAHvAf8YAAEUARIB6gISAZIB9AH/AfQC7wEH AfAB/wEHAe8BBwHyAv8BBwHsAe0D7AHyGgAB8wEUAhABEQESAfAB/wMAAf8BvAEcApkBeAFzAesB7AEH Af8DAAH/AfEBEgIRARQB7QH/FQAB/wLzA/QB8AEHAe8BBwH0BAAB/wHzAv8C8wH/AwAB/wG8Au8BvAHz Av8C9AH/EwAB/wHvAgsBIgHqAfQGAAFuBEYERwEXARYBBwH0BQAB9ANFAW0BvAH/GAABFQHqARIBEwES AewBvAHwAfID7wHyAfEC7QHvAfAB8gG8Ae0F7AHyGgAB/wESBBAB6wHzAf8CAAH0AhwBmAGZAZgDcwHv AfQCAAH/AfQB7AMVAW0B7wH/FQAE/wEAAf8B7AMSAQcB/wIAAf8BvAHtAfIB9AHtAQcB/wMAAfIC6wHs Ae0B8wH/FwAB/wHwAUQCCwEVAbwB/wUAAW4FRgNHARcBlAEHAfQEAAH/AQcDRQHtAfMB/xgAAUMBEwES AhMDEgJtA+wC6wLtAuwB6wHsAfcB7QHsAu0B8hsAAZIBEQEQAREBEAFDAe0B9AIAAfMB7AFzAhwBmQF4 AXMBHAHvAfMB/wEAAfQBkgETAxQBcwHxGwAB/wHvBG0B8wIAAf8B9wHtAfAB8gHtAQcB8wIAAf8B7AHt AfcBBwG8AfQB/xgAAfQB6wILAUMB6wHzAf8EAAFuBUYCRwFGARcBlAEHAfQDAAH/AfMBbgJGAW8B7wL/ GAABQwUTARIBEwESA+oC6wHtAZgB9wGSAe0DmAGSA+wB8RsAAfIBEQQQAUMB7AHzAf8B8wHsAnMBHAKZ ARwBmQEHAfQB/wH0Ae0BEgJKARQBSgHtAfQbAAH/AfMB7AJtAeoB7AH/AQAB9AH3AZIB8AHyAe0BBwHy AgABvAL3AQcBvAHxAv8YAAH/Ae8BEQILAUQB9wH/BAABbgHpB0YBFwGUAQcB9AH/AgAB/wHvAkYBaQGT AfEB/xkAAUMDEwEUARMB6gETARIC6gFtAusC7QGSAfcB7QGYAQgBmAH3A+0B8RsAAf8B6wYRARIBvAHz ARwB6wFzARwDmQEIAbwB9AHwAW0FSgEcAQcB/xwAAf8BvAHqARIB6gETAe8BvAHvAewB9wHwAfIBkgHv AZIBvAEHAe0C7wEHAbwB9AH/GgAB8wFtAgsBEQESAbwB/wMAAW4C6QVGAUcBFwGUAQcB8wH/AQAB/wHw AUUBRgEXAW8B7wH0Af8ZAAERARQBEgMTARQEbQLsAZIB7ALtAZIB7QGYAggB8AKYAfcB8RwAAfMBQwYQ AREBbQHtAesCcwKZARoBvAHvAewBbQFzAesDSgFzAe8B/x4AAfQB7QESAeoBbQITARIB6wGSAfAB8gHs AfcB7ALrAfcBBwG8AfAB8gH/HAABBwFDAgsBEQESAbwC/wEAAeoCRQVGAUcB4wGUAQcB9AL/AfABbgEX AeMBFgHvAfIB/xoAARUBFAISARMBEgETARIBbQHrAuwB7wEHAewBkgL3AZgECAGYAQcB9wHyHQAB7wFD AhECEAERAUMBFQFDARICcwGZAZ8BGgGZARwBmQEcAnMCcgFzAQcB8QH/HgAB/wHwAewBbQXrAe0B8AHy AesB7AGSAfcB7wH3AQcB8gG8AfQB/xwAAf8B7QILAhEBEgEHAfQB/wHqAkUB6QVGARcBlAEHAfMB9AG8 AW4BFwHjARYBkwG8Av8aAAEUARMBEgHqAxIBbQHrAm0B7AHwAfEB7AL3AZIBmATCAggB7wHxHQAB9AHs ARUBEQEQARECQwEVARQBSgFtAXMBHAGZAsMBoAKZAhwBcwEcAZkBvAH0IAAB9AHvA+0B7AHrAW0B7QHw AfIB6wHtAQcCvAHwAfIBvAHzAf8eAAH0AewBEQELAhEBFAHtAfEBEgEjAUQBRQHpAkYBJQFGARcBlAHv AbwB7wFuARcBFgGUAQcBvAH0Af8bAAEUARMBEgHqARIC6gHrAewB6wFtAeoBbQHsAesCmAH3AZgGwgHv AfEB/xwAAf8B8wHtARQCEQFDAhUBFAFKAW0BcwEcAZkBGgKgARoEmQEIAbwB8wH/IQAB8wHwA7wB7QHr Ae0B8AHyAesB9wG8AfAD8QHyAv8fAAH0AewCIgELASIBQwESAUMCHgFEAUUB6QIlAkYBbwJuAUYB4wEW AZQBGgG8AfMC/xsAARQBEwESBOoE6wHsAm0B7AH3ApgBCALCARsCCAHxAQcB8QH/HQAB/wHyAZIBSgEU AhUBFAJKAXIBcwEcApkDoAGZAZ8BGgEbAfAB8wL/IQAC/wL0AfMB9wHrAe0B8AHyAW0BkgEHAfAB8wL0 Av8hAAH0AZIBQwYLAh4CAQHpBUYBFwHjARYBlAEaAbwB8wL/HAABFQMSAuoB6wTsAe0C7AHtAfcBmAII AsIDCAEbAQcB8QH/HQAC/wHzAQcB7ARKAXICcwIcApkCnwGZAcMB8AHxAfMC/yQAAv8B9AHtAW0B7AHw AfIBbQHtAe8B8AT/IgAC/wEHAUQCEQQLAh4BPgEBAUUDRgHjARYBlAG9AvAB8wL/HQABFAESAuoCEgHr BuwC7QKYAQgBwgIIA8IB8wHvAfIgAAH/AfQB8QEHAhwCcwMcA5kBGgEbAfIBvAHyAfQC/ycAAfMB6wFt AewB8AHyAW0B7AGSAbwB/ygAAfMB7QFEAwsERAJFAUYBbwEWAZQBvQEbAbwB8AHzAv8eAAETAm0C6gES AW0C7APtAewB7QH3AZgECAHCAfMCwgHzAe8B8iIAAf8B9AHyAbwB8AYbAfQB8AG8AfMB9AL/KQAB9AEH ArwC8wEHArwB8gH/KQAB/wHyAfcBbQESA0QB6gJuApMBBwK8AfAB8gH0Av8fAAH3AwcD7wO8AfAB8QHw AfID8wj0AbwB8yQAAf8C9AHzBPEB8gHzAvQC/ysABf8BAAH/AfQD/ysAAf8B9AHxAbwD7wIHArwB8QHy AfMB9AL/KAAC/xD0Av8lAAv/MwAD/y4ABv8E9AT/KwAS/5gACP//AP8A/wD/AIEABP8BAAb/AgAF/wMA Bv8DAA3/tQAB8wHwAfEC/wH0AfEDvAH/AgAB8wHwAQcB8AH/AwAB/wHxArwB8gH/AgAB/wHzAfIB/wHy AfAB9AH/AfEE8AHyAv9FAAH0AfMB9AL/AfQE8wH0BP8B9AHzAvQB8wH/AQAB/wH0AfMB9ALzAfQC/wP0 AvMD/wHzAf9FAAHxAbwB8AH/AfQB8AEHAfEBBwHvAf8CAAHyAQcBvAEHAfMB/wIAAfMB8QIHAfAB/wEA Af8B9AG8Ae8B9AHxAfcB8wH/AQcB7wLzAfECBwH/RAAB/wG8Ae8B8QH/AfQBBwHvAgcB7wHzAfQB7wH0 AfMBBwHvAbwBBwHvAfMB/wH0AQcB7wHwAQcB7wHwAf8B8QHvArwC7wL0AgcB/wsABf8BAAf/AQAT/wEA Bv8BAAj/CQAB8wHwAfEB8gK8AfMB/wG8Ae8B/wIAAfMB7wHyAfAB8QH/AgAB8AEHAfIBBwHxAf8BAAH0 AfABBwHvAf8B8wH3AfQBAAG8AQcB/wEAAf8B8gEHAbwB/0MAAf8B9AEHAfEC/wEHAZIB9AHxAbwB/wG8 AgcB9AG8AQcB8wHxAZIB9AH/AfQB7wHwAf8BvAHvAfMB9AHvAfAB9AHzAfAB7wH/AbwB7wHzAf8LAAH/ AfEBBwHwAv8B8wG8AfEBBwHvAfAB/wEAAf8B8AIHAfQB8wEHAbwB9AHwAgcBvAHyAfQB8QEHAfAC/wHz AbwB8AIHAfQB/wH0AbwB8QHwAgcB9AH/CQAB9AEHAfcC8AH0Af8BAAEHAfcB9AL/AfMB7wHzAfQBBwHz Af8B9AHyAQcB/wEHAfIB/wH0AfAB7wG8AQcB/wHzAfcB9AEAArwB/wIAAf8BvAGSAfQLABH/AQAE/wEA E/8PAAH/AgcB8wHwAbwB8QH/AfIBvAHzAbwB7wGSAfMCvAH0Af8CBwH0AfEB7wHyAf8BvAHvAfIBvAEH AfMBAAH0AbwB7wHyAfcB8gH/DQAB8wHvAv8B9AIHAfQB8AEHAfQD/wHyAbwB8AH0AQcBvAH0AfICvAH/ AfQB8AH0AfMB7wL/AfQCBwH0AfAB8wEAAf8B8AEHA/IB8AH/CgAB8wH0AfMBBwH/AwABBwHvAfcCBwLv AfMB/wEHA/cB7wHzAf8BBwHxAfQB8AEHAf8B8QHvAf8B8wH3AfQBAAK8Af8DAAIHAfMLAAHxBuwB8gH0 Ae0F7AHwAf8BAAHyAe0BBwH/AQAB/wEHBewBBwHyAfcBBwHxBuwB8QH/DgAB/wHzAe8B9wHvAfcC/wHz AwcB8wMHAbwB9AEAAfAB7QHvAfcBvAH0AQABvAHvAvcBvAH/AQAB9AG8AewB9wEHAfMB/w0AAfQBBwH/ AfQBBwG8AQcB9AHwAe8B9AHyAbwB8wHyAbwB8AEHAbwB8wH/AfEB7wH0AQAB/wHzAfIB9AEHAf8B9AEH AbwBBwH0AbwB9AH/AfABvAEHAfIB8wHyAfAB/woAAfMBvAIHAfMB/wIAAQcB7wHyAvMB8AHvAfMB/wHz AQcC8AEHAv8CBwG8AQcB8wEAAfEBBwH/AfMB9wH0AQABvAEHAf8DAAIHAfQLAAEHAu8CBwLvAQcBvAH3 Au8DBwHxAf8BAAHxAu8B/wEAAfQB7wUHAbwB8QHvAQcBvAYHAe8B/w8AAfQBBwK8AQcC/wHzAe8CBwH/ AfIC7wEHAfQBAAH0Ae8B8QHvAfAB/wEAAbwBBwLwAfcB8QH/AfQB8AHvAfEB7wEHAf8NAAH0AQcB9AEH AbwB8AG8AfQB8AHvAfQB8wHyAfQB8wG8Ae8BBwHyAf8BAAHxAe8B9AIAAfMB8gH0AQcB9AEHAbwB8AG8 AfQBvAHzAfEBvAHxAfAB8gHzAfIB8AH/CgAB8wG8AfEB8AEHAfMB/wEAAbwB7wH/AgAB8wEHAfEBAAH/ AbwCBwHzAQAB/wEHAe8BvAHyAf8BAAHwAe8B/wHzAfcB9AEAAbwBBwH/AQAC/wG8AQcB/wsAAQcC7wHz AfQBBwHvAQcBvAL3BAcB8wH/AQAB8QLvAf8BAAH0Ae8B9wHvAwcB8QHyAe8BBwH0AbwDBwLvAQcB/w8A Af8B8QH3Ae8B8gEAAf8B9AH3Ae8B8gL/AQcB9wEHAfQCAAEHAe8BBwHzAgABvAHvAvQB7wEHAf8B9AG8 Ae8B/wHxAfcB8w0AAfQCBwG8AfIB9AHwAfQB8AHvAfQDAAHzAbwCBwHzAf8BAAHxAe8B9AIAAfMB8QHz AgcBvAHyAfQB8AH0A7wB8QH/AfEB8gHzAfIB8AH/CgAB8gG8AfAB/wHwAQcB8wH/AbwB9wH0AgAB8QG8 AfAC/wHyAgcB/wEAAf8BBwHwAfEC/wEAAbwB7wH0AfMB9wHzAf8BvAEHAfQB/wH0AfEB8AHzAf8LAAEH AfcBBwH/AQABvAH3AQcBvAHvAZID7QGSAfAB/wEAAfEC7wH/AQAB9AHvAfcE7QEHAfEB7wEHAfIE7QH3 Ae8B8AH/DwAB/wHzAQcB7wH0AQAB/wHzAe8BBwH0AgAB8gHvAQcB9AH/AQAB8gHvAQcB/wIAAQcB7wHy AfMB7wHwAf8B8wHwAe8B9AG8AQcB9AwAAf8B8wEHAbwB8gH/AfQBBwHzAbwB7wHzAf8BAAH/AfICvAHy AbwB8gH/AfAB7wHzAv8B8gHwAfIBBwG8AfIB/wH0AQcB8wK8AfAC/wHwA/IBvAH/CgAD8AH/AfQCvAHz AfABBwH0AQAB/wHxAvAB/wEAAfQBvAHyAf8BAAH/AfAB8wH/AwABvAEHAfMB8QHvAvMB8AEHAvEC8AHz Af8MAAEHAfcB7wL0AQcB9wEHAbwB9wHvBAcB8gH/AfQBvALvAvQB8wLvBAcB8QHyAe8CBwLvAQcDvAHz Af8QAAH/AfAB8QH/AQAB/wG8AQcB8gH/AgAB/wG8AQcB8QH/AQAB/wG8AfEB/wEAAfQCBwHvAQcBvAH0 Af8BvAHwAfcCBwHyAf8MAAH/AfABvAHyAv8B8QEHAfABvAEHAfEB/wEAAf8B8AG8AQcB8wEHAbwB8QG8 AQcB8AH/AfMEvAHyAv8B8QEHA7wC/wHzAbwB8AG8AfABBwH0Af8JAAH/AfQE/wH0Af8C9AH/AQAC/wH0 Av8BAAH/AfQC/wEABP8DAAL0Af8C9AL/BfQC/w0AAQcB9wHtAvcBkgH3AQcBvAH3AZIE9wG8AQcC9wHv AZIB9wHvAbwC9wGSA/cBvAHxAe8CBwHvAfcBkgL3Ae8BvAH/EAAE/wEAAf8C9AH/AwAC/wH0Av8CAAH0 Af8CAAH/BPQD/wT0Av8NAAT/AQAI/wEAEv8BAAb/AQAI/x0AAv8kAAEHBu8B8wHyBu8B8AfvAfAG7wG8 AfIB7wHwAfMBBwPvAgcBvAH/xgAB/wX0Af8yAAb/ZgAE/wEACv9iAAL/AfQB8wTyAfMB9AL/XAAD/wMA Af8B9ALzAfQB/wH0A/MB9AH/AfQC8wH0Af8DAAP/WQAB/wHzAfAB7wHsAW0BEgFKARMBEgFtAewB7wHw AfMB/y0AB/8lAAH/AfMB8QH/AwAB8wHsAm0B9wHxAfcD6wHvAQcB6wHqAW0BBwH/AwAB8wHyAv9VAAL/ AfIB7wHsAkoBRAYjASIBFQFEAesB7wHyAf8oAAP/AfMB8gG8AQcBvAHxAfMB9AL/IQAB/wHzAQcB8AH/ AwAB8QNEAewB7wFuAUoCRAHsAe0CEAFEAe0B/wMAAfMB7AHvAfQB/yIAA/8FAAP/JgAB/wH0AQcBcwVL ASkCSgcjARUBbQHvAfQB/yUAAf8B8wEHAewB6wVKAW0B7AHvAfEB9AH/HgAB/wH0AQcB7wH0Af8DAAHx AUoBRAFKAe0B7wFuAUsBRQFEAewB7QIRAUQB7QH/AwAB/wGSARQB7wH/IQAB/wHxAe8B8wH/AwAB/wHy Ae8B8gH/JAAB/wHzARwBdARSAnQBcwEcAUsCcwJKAUQDIwFEARUB7AHzAf8iAAH/AfMBkgJKAUsCSgFE AkoFRAHsAfAC/xwAAf8BBwG8AQcB/wQAAfEDSwEcAe8CdAFLAUQB7AHtAUMBRAFFAe0B/wQAAfIBQwES AfAB/yAAAfIBEwEVAe0B8wH/AQAB/wHzAW0BQwHsAfIB/yIAAf8B8wFuAVIDegEaArwBmQFzAfABSwFt AfMCcwEcAXMBSgIjAUQBIgFtAfMB/yAAAf8BvAFKAksBUQFzA0sCSgFLAUoBRAMjAUQB9wH0Af8aAAH/ AfEBBwHwAbwB/wQAAfEDSwEcAe8CdAJLAewB7QJEAUsB7QH/BAAB/wIVAewB9AH/HgAB9AEUAREBQwEV Ae0B9AEAAfQB6gIRARAB7AHzAf8gAAH/AfMBbgFSAVkBegGgAfAB8QL/AZkBcwHwAUsB6wHzAXMBHAL0 AbwBdAFKA0QBbQHzAf8dAAH/AfQB7wFRAVIDdAGTAZkBHAJLAVECmQF0AUsBSgIjAUQB7QHyAf8ZAAH0 Ae8CBwHyAf8EAAHxA24BHAHvAnQBTAFLAewB7QJEAeoB9wH/BQAB7AEVAeoBBwH/HAAB/wHzARMBFAHq ARIBFAEVAZIB8gHqARUBEwESAUMBEAHsAfIB/x4AAf8B9AFzAVIBegGaARoB8AHzAf8BAAH/AZkBcwHw AVEB6wHzAW4BHAH0AgAB8wGZAUsBSgFEASIB6wH0HAAB/wH0AZkBdAJ5ApkBGgHwAfEB8AJLAXQBvAH0 AfIBGgEcAUsBSgJEAe0B8wH/FwAB/wHxAW4CBwHzAf8EAAHyAXMCbgHvAbwCdAFvAUsB7QHvAm0B6wG8 Af8FAAHvAUMBFQGSAfQB/xoAAf8B8gESARMB7QG8AQcB6wEUARUCFAHrAe8BBwHrARUBEQHsAfIB/x0A Af8BHAFSAXoBoAEaAfAB8wH/AgAB/wGZAXMB8AFLAesB8wFuARwB9AMAAfQBmQFLAUQBIwEVAZIB/xsA Af8BBwF0AnoCGgHxAfIC9AHyAUsBSgFzAfAB/wEAAf8B9AEbARwBSwFEAUoB9wH0FwAB/wEHAUoBHAHv AfMB/wQAAfQBvAIHAfEB8AN0AW4BkgHwAwcB8wH/BQABvAFDARUB6wHyAf8ZAAH/AfEBbQETAfcBvAHy AfMBBwFtARQBFQESAe8B8QH0AfAB6wEVAREB7AHyAf8bAAH/AbwBUgF6AZoBGgHwAfQC/wIAAf8BmQFz AfABSwHrAfMBbgEcAfQDAAH/AfQBHAFKAUQBIwEUAfAB/xkAAf8BvAF0AXoBmgHDAfAB8QHzA/8B8wFL AUoBcwHwAf8EAAH0AZkBSwJKAbwB/xYAAfQB7AFKAe0B9wHxBvMD8QHyAbwBkwF6AXQBbwHsBPEH8wEH AREBQwESAbwB/xgAAf8B8QFtARMB9wG8AfMC/wHwAW0CFAESAe0B8gL/AfEB6wJDAewB8gH/GgAB8wFz AVIBegGgAbwB9AL/AwAB/wGZARwB8AFLAewB8wFuARwB9AQAAf8B8wFzAUQCIwHrAfQZAAHzAUsBdAF6 AcMB8AHyAfQD/wEAAfMBSwFKAXMB8AH/BAAB/wH0AbwBSwFKAewB9BYAAfMBEgFEAuoF6wbsAXMBmQGa AXUBdAFLAusBbgXrA20BEwEQAREBFAHvAf8XAAH/AfIBbQEUAe0BvAHzAv8B8wHtAeoB7AFtARQBEwHt AfMC/wHyAesBEQFDAewB8gH/GQABBwFRAVIBegEHAfMD/wMAAf8BvAEcAfABcwHsAfMB6wEcAfQDAAP/ AbwBSgEjAUQBSgG8GAAB/wHtAUsBdAGaARoB8QH0Av8BAAL/AfABSwFKAUsB8AH/BQAB/wH2AZkCSgHx Af8UAAH/AfIBQwEVA0QCSgJLBHQBeQKZApoBegN0AkwDSwFKAUQBFAEVAUMDEQEUAfcB/xcAAfQC7AHv AbwB8wL/AfQB7AHrAfcBBwG8AW0CFAGSAfMC/wHyAewBbQHqAfcB9BgAAfQBcwFLAVIBegG8Av8B8gH0 AwAB/wG8ARwB8AFzAewB8wHrARwB9AMAAfQB8AL/AXMDRAHtAf8XAAHzAUsCdAGZAfEB9AH/AgAB/wHz AewDRAFuAfAB/wcAAfMBbgFEAe8B/xQAAf8B8QERBUQBSgFLAW4CdAOaAxoBmgF6BXQBTANLAUQCFAEV AkMBEQEVAe0B9BcAAfQD8wH0Af8BAAH0AuwB7wEHAfIB9AG8AeoCFQGSAfQBAAH/AfQD8gH/GAAB8gNL ARwB9AH/AfIBBwH/AwAB/wGZARwB8AFzAesB8wFzARwB9AMAAf8B9wG8Af8BvAFKAkQB6wHzFgAB/wHv AksBdAEaAfME/wHxAXMBUQNLAW4B8QH/BwAB/wGZAUoB7AH/EwAC/wHwAeoBbgLsAW4CcwEcAZMCmQQa AsMBGgWaAZMDdAFzAW4BbQHqAhICEwHqAZIB9AL/FAAH/wEAAbwC7AGSAQcB8wH/AfQB7AEUARMB7AHz Af8BAAX/FwAB/wG8AUoBSwFSAfcB/wH0ARwBvAH/AwAB/wGZARwBBwFRAW4BvAFuARwB9AMAAf8BBwHs AvQBSgFEAkoB8AH/FQAB/wFuAUsBUQGZAfAE/wHzAXQCeQJ0AXMBdAHyAf8IAAHzAW4BSgH0EgAB/wHz AfIBBwHsAe0FHAGTAe8CBwm8AgcEmQKTAhwC7QTsAfcB8QHyAfQVAAH0AwcB8QL/AfQBBwH3AewB6wEH AfQB9wEVARIB9wHxA/8B8QIHAfAB/xcAAf8B7wFEAUsBdAHwAQAB9AFzAQcB/wIAAf8B9AGZAXMBbgFS AUsCSgHtAfIB/wIAAf8BBwFtAfIB/wFzAUQCSgEHAf8VAAHzAksBUQGZAfIE/wGZAXoCmgEaAfEC8gH/ CQAB/wEcAUoB8xIAAf8B7AESB+oCbQHrAewBcwLsBO0B7AJzAuwBcwRuAusDbQXqARIB6gG8FQAB8wHs ARABEQFtAfAC/wHzAQcB7QHrAW0B7AEUAeoB9wHxAfQC/wEHAUMBEQFtAbwB/xcAAf8BHAFKAUsBcwH0 AQAB8wFRAXMB8wL/AfIBHAF0AVIBdAJSAksBSgHsAbwB/wEAAfYB6wFtAfEB/wEHA0oB7wH/FQAB8AJL AVEBmQH0Af8BAAH/AfIBmgGgAZoBGgHyAfQC8AHzAf8JAAHwAW4B8xIAAf8BQwEVBUMCFQEUAUQBSgFu A3QFmQZ0AW8BbgJLAUoBRAEUAhUBQwERAUMBEQFDARMBBxUAAf8B8wHsAkMBbQG8Av8B8wG8AfcB7AFt AesB7wHxAfQC/wHvAUMBFQHsAbwB9AH/FwAB9AEcAUoBSwFuAfQBAAH0AXMBSwHvAf8BvAF0AXkBegKa ApkBeQFRAUsCSgHvAf8BBwFKARwB8wH/AbwDSgHvAf8VAAG8AkoBSwGZAf8BAAL/AbwBoAF6AZkB8AH0 AbwBcwFLAe8B/wkAAfQBcwH0EgAB/wMVAkMDFQNEAUsBbgN0BZoBmQF5BXQBbwFMAksBSgJEARUEQwEV AeoB8BYAAf8B8wHsAhUBbQG8Av8B8gHtAesC7AHvAfMC/wHvAUMBFQHsAbwB9AH/GAAB9AEcAkoBbQH/ AQAB9AGZAXQB7wEHAXQBegEaAfABvAHxA/IBBwEcAUsBSgFEAe8BSgFuAbwB/wEAAfEDSgHvAf8VAAEH AUoBRAFLAQcB/wEAAv8BmQGgAXoBmQHwAf8BGgF5AVEBHAH0CQAB/wHvAf8TAAESAxUBFAETAhIC6gFt AW4BdAKTC5kBkwR0Am4CSgEUBBUBFAFtAfIXAAH/AfMB7AEUARMB6wHwAfMB9wHtAe8B7QLrAQcB9AHv AhQB7AG8AfQC/xgAAfQBHAIjAeoB/wEAAf8B8gEcAbwBcwF6ARoB8AH0BP8CAAH/AbwBcwFLARUB9wGZ AfIB/wEAAfADSgEHAf8VAAEHAUoBRAFLAe8B/wEAAv8BvAGgAXoBeQG8Af8BvAGaAZkBvAH/CQAC/xQA AewBQwIVARQB6gHtAu8DBwG8AxoC8QEaBJkB8QHwBBoBvAEHApkCHAHsARQCFQEUAUoB6wH0GQAB9AHs ARQBEwFtAesB7AHvAfEBvAH3AesBbQHqARUBFAHtAbwC/xoAAfQBHANKAfMCAAH/AfQB7wF0AZkBvALv AfAB8wL0AfMB8gEHAe8B7QJLAewB8gH/AgABBwFLAkoBBwH/FQABvAJEAUoBHAH0AQAC/wHwAaACegGZ AfIB/wLyAv8IAAL/FQABBwRDARIBkgH0Bf8F9AHzApkCGgEHAfIF8wT0Af8B8QIVAkQBbgGSAf8aAAH0 AewBFAESAesB7QHwAfEB8wG8AZIBbQESARMB7AG8A/8aAAH/Ae8BRAJKAbwDAAH/ARwBdAEHARwBdAFR A0sBbgJLAlEB7AEcAUsB7AH/AwABHANLAbwB/xUAAfIBSgEjAUQBbgHyA/8B8gEaAnoBeQGZAbwC8gHz Av8HAAL/FQAB9AEVA0MBFAHsAf8KAAH0Ae8BmQEaAfIBvAH0Cf8BAAHxARUCRAFKAXMBvAH/GwAB8wEU ARIB7QG8AfEC9AHzAQcB7QJtAZIB9AL/GwAB/wEHAkQBSgHsAf8CAAH0AXMB7QHzARwBmQGaBHoBoAKa AZkBBwHyAVEB7QH/AgAB/wFuAksBcwHxFgAB9AFLAiMBSgG8Af8BAAH/AfQBvAGaAXkBegGaAZkBHAGZ AfAC/x8AAesDQwEVAesB/wkAAf8B9AEHARoC8wG8AfQB/wkAAbwCRAFKAW4BHAHyGwAB/wHvARQB6wEH AfEB9AP/AfMBBwHsAW0B6gEHAfQB/xwAAfEBSgJEARMB8wIAAfQBcwH3Af8B9AIbAhoBoAGZAbwB8ALy AfQB/wFzARwB/wEAAf8B8QJLAVEBmQH0FgAB/wHsAkQBSgHtAfQD/wHyAfABGgN6AaABGwHwAv8FAAL/ GAAB8AEVA0MBEgHzCQAB/wH0AbwB8ALxAfAB9AH/CQAB9wFEAUoBbgEcAQcB9BoAAf8B9wERARIB7wHx AfQC/wEAAv8B8wEHAewBEgHqAQcB9AH/GwAB9AFzAkQBIwHvAf8BAAH/ARwB7wEAA/8B9AHzAXoBcwHz AvQC/wEAARwBBwH/AQAB/wEcAlEBdAEHAf8XAAG8AUQCIwFKAbwD/wH0AfIBvAEaAZoBeQF6ARoB8AL/ BAAE/xcAAfQB6wFDAhEBFQHwCQAC/wH0A/IB8wH/CQAB/wHrAUsBbgF0AQcB8AH/GQAB/wH3AUMBFQH3 AfEB9AL/AwAC/wHzAQcB6wHqAW0BBwH0Af8aAAH/Ae8BSgFEASMBSgHyAgAB8AEHAf8DAAH/AfQBeQHs BP8BAAH/AZkB8gL/AfEBcwFSAXQBmQHyAf8XAAH/AUoBRAEjAUQB7AHzA/8B9AHzAfEBvAF0AXkBmgHw Av8EAAX/FgAB/wG8ARQCEQEVAfcB/wkABv8KAAH0AW4CdAGZAQcB8wH/GAAB/wHvAUMBEAESAQcB9AL/ BQAC/wH0AZIC6wHtAfEB/xsAAfIBcwFKAUQBIwHsAfQBAAH/AfAB/wQAAfQBdAHrAf8EAAHzAbwC/wH0 ARwCdAGZAe8B/xkAAbwERAGSAfQBAAP/AfQB8AF0AVIBmQHxAv8DAAH/AfIB9wEHAfQC/xYAAfQB7AFD AhEB6gH0GQABvAJ0AZkBBwHwAfQB/xgAAf8B8AETAREBQwHrAfIB/wcAAf8B8QFtAesB9wHwAfQB/xsA Af8B7wFKA0QB7wP/BQAB9AF5AesB/wQAA/8B9AEHAXkBegF5ARoB8gH/GgAB7AFKA0QBkgHzBP8B8gFz AVEBeQHwAv8BAAL/AbwDSwG8Av8WAAH/AfIBEgIRAUMBvAH/FwAB/wHtAZMBmQK8AfMB/xoAAf8B8AES AREBQwHsAfIB/wUAAf8B8QLrAe8B8QHzAv8cAAH0AXMCSgFEARQB7wH0Af8FAAH0AXQB6wH/BQAB/wH0 AbwBmQKaARoBvAH/GwAB8wFzAUoDRAHsAfAB9AL/AfIBSwFRAXkBvAP/AfMB7wFRAlIBdAG8Af8YAAH/ AQcBEwIRAewB9AH/FQAB/wHxARwBmQK8AfIC/xsAAf8B8AESAUMBFQHsAfIB/wMAAf8B8QLrAe8B8AHz Av8eAAHyAUsCSgJEAfcB8wH/BAAB9AF0AesB/wMAAv8B8wEHAZkDoAG8AfQcAAH/AfEBcwFLAkoBRAFt ARwB8AHzAfECSwF5AbwB9AHyAQcBcwFSA3kBmQHzAf8ZAAH/Ae8BFAERARUBBwH/FAAB/wH0Ae8BmQEa AbwB8QH0Af8dAAH/AfAB6gFDARUB7AHyAf8BAAH/AfEBbQESAfcB8AHyAv8fAAH/AfABcwJKAkQB6wEH AfQB/wIAAfQBdAHrAf8CAAH/AfQBvAKZAqABGgG8AfMB/x0AAf8B8gEcAXMBSwRKAuwCSwFRAewBHAFz AVIBeQJ6AZoBGgHxAv8aAAH0Ae8BFAFDAW0B8QH/EgAC/wG8AQcBGgG8AfEB9AH/HwAB/wHwAW0BQwEV AZIB/wEAAfQB6gEUAe0BvAHzAv8hAAH/AfABcwNKAkQB6wHvAfEB9AHzAXQB6wLzAfEB7wEcAXkBmgKg ARoBvAHyAf8eAAL/AfMBvAF0AXMBSwRKBEsBUQFSAXQBeQGaARoB8AHxAfQC/xsAAf8BBwFKARUB7AHz Af8QAAL/AfEB7wHwAbwB8QH0Av8gAAH/AfEB6gFDAewB9AEAAfEBFQHsAbwB8gL/IwAB/wHyARwBSwZK ARIB6gFLA0oBUQFSAXoDoAEaAbwB8wL/HwAC/wH0AbwBmQF0AVEFSwFSAnQBeQGaARoBGwG8AfIB9AL/ HQAB/wHxAewBEwHtAfMB/w8AAf8B8QHvArwB8gL/IwAB/wHwAW0B7AH0Af8B8QHrAQcB8gL/JQAB/wH0 AQcBcwFLAkoESwFSAXQEUgJ6AaABGwHwAfQC/yIAAv8B8wG8ARoBmgF5A3QBmQGaARoBwwEbAbwB8gHz AfQC/x8AAf8B9AH3ARIB7AHyAf8NAAH/AfABHAG8AfAB9AH/JgAB/wHwAe8B9AH/AfIBBwHzAv8oAAH/ AfIBBwFzBksCUgJ0AnkBmQG8AfMB9AH/JQAC/wH0AfMB8QTwAfEC8AHxAfMC9AP/IgAB/wHyAfcB7wHx Af8KAAH/AfQCBwHwAfQC/ygAAf8B9AL/AfQD/ysAAf8B8wHwAZkCHAFzAnQBHAKZARoB8AHzA/8oAAT/ B/QD/ycAAf8B8wHxAfQB/wkAAf8C8gP/LAAD/zAAAv8B8wXyAfMB9AP/LAAL/zgAAv9kAAj//wD/AP8A YwABQgFNAT4HAAE+AwABKAMAAeADAAHgAwABAQEAAQEFAAGAARgWAAP//wD/AP8A/wD/AP8AJwAB/wEE AUwB/AHZAQwBfxb/AgABMAIAAT8O/wH4BQABAQH/AgABMAIAAT8O/wHwBQABAQH/AgABMAIAAT8O/wHw BQABAQH/AgABeAIAAX8O/wHwAgABCAEAAQgBAwH/AgABCAIAAX8B4AMAASABggEhB/8B4AIAAQgBBAEI AQMB/wUAAX8B4AUAAQEH/wHgBQABAwH/BQABfwHgAwABEAEAAQcB+AEAAQQCGAEgAQ8BwAUAAQMB/wIA AXgCAAE/AeABAgIAARABMAEHAfgCAAEIARABAAEHAcACAAFAAgABBwH/AgABcAIAAT8B8AECAgABEAEw AQcB+AIAAQgCAAEHCP8CAAFwAgABPwHgBQABBwH8AgABCAEgAQABHw7/AeAFAAEHAfwCAAGMAQEBAAE/ Dv8B4AUAAQ8B/AIAAYwBAQEAAT8V/wH8AgABgAEBAQABPwL/Af4BAAE/BP8B+AEAAT8J/wH4BQABPwL/ AeABAAEHBP8BwAEAAQcJ/wH4BQABPwL/AYABAAEBBP8BgAEAAQEJ/wH4BQABfwL/AwAD/wH+AwAF/wGI C/8B/gMAAT8C/wH+AwABPwL/AfwB/gEIAR8Bnwn/AfwDAAE/Av8B/AMAAT8C/wH8AXgBCAEPAR8J/wH4 AwABHwL/AfgDAAEfAv8B/AEwAQgBBwEfCf8B8AEAARABAAEPAv8B8AMAAQ8C/wH8AwABHwn/AfABAAF4 AQABBwL/AeADAAEHAv8B9AMAATcE/wHwAT8D/wHgAQEB/AEAAQcC/wHgAwABAwL/AeADAAEjA/8BgQGA AQcD/wHgAQMB/gEAAQMC/wHAAwABAwL/AeADAAEDA/8CAAEBA/8BwAEHAf8BAAEDAv8BwAMAAQEC/wHg AwABAwL/AfADAAP/AcABDwH/AQABAQL/AYADAAEBAv8B8AMAAQcC/wHwAwABfwL/AcABHwH/AQABAQL/ AYADAAEBAv8B8AEGAQABGAEHAv8B8AIAAXABPwL/AYABfwH/AYABAQL/AYAEAAL/AfABBgEAARgBBwL/ AfwCAAEEAT8C/wGAAR8B/wEAAQEC/wGABAAC/wHwAQ4BAAEYAQ8C/wH+AgABAQP/AYABHwH+AQABAQL/ AYAEAAL/AfgBDwEAARgBHwP/AgABAQP/AYABDwH+AQABAQL/BQABfwH/Af4BDwEAATgBPwL/Af4CAAEB A/8BgAEHAfgBAAEBAv8FAAF/Af8B/gEPAQABOAE/Av8B/gIAATsD/wGAAQcB+AEAAQEC/wUAAX8B/wH+ AQ8BAAE4AT8C/wH8AQABAQT/AYABgQHgAQABAQL/BQABfwH/Af4BBwEAATABPwL/AfwBAAEHBP8BgAMA AQEC/wUAAX8C/wEHAQABMAF/Av8B/gEAAQME/wGAAUACAAEBAv8FAAF/Av8BAwEIASABfwL/Af4CAAFx A/8BgAMAAQEC/wGABAABfwL/AYABCAEAAX8C/wH+AgABAQP/AcABIAIAAQEC/wGABAAD/wGAAQgBAAT/ AgABAQP/AcABEAIAAQEC/wGABAAD/wGAAQgBAAP/Af4CAAECAT8C/wHAARgCAAEBAv8BgAMAAQED/wHA AQgBAQP/AfADAAE/Av8B4AEMAgABAwL/AcADAAEBA/8B4AEIAQMD/wHwAwABfwL/AfABBgEAARABAwL/ AcADAAEBA/8B+AEIAQ8D/wHwAwAD/wHwAQEBgAEAAQMC/wHgAwABAwP/AfwBCAEfA/8B/AIAAQED/wH4 AQABPAEAAQcC/wHwAwABAwT/AYgF/wIAAQMD/wH8AwABDwL/AfADAAEDBP8BiAX/AcABAAEHA/8B/gMA AQ8C/wH4AwABBwT/AcgG/wHAAT8D/wH+AwABHwL/AfwDAAEPBP8ByQz/AwABPwL/Af4DAAEfBP8ByQz/ AeACAAT/AwABPwT/AckM/wHwAQABAQT/AYACAAE/Ef8B/AEAAQcE/wHAAgAT/wEAAR8E/wHgAQABARP/ AfAF/wH8AQABBxr/AQABHzr/Af4B+wEOAfcBHAHHAb8V/wH8AWABBAFEAQABAwEfD/8B+AHGAQgBiAGD Af8B/AEgAQABQAEAAQMBHw//AeABAAEIAQABAQH/AfwCAAFAAgABHw//AcABAAEIAQABAQH/AfwDAAFA AQABHwH/AQABgAEAARABIAF/Af8B4gFjAREBkwEnAv8BwAMAAQMB/wH+AQABYAEAAUABAAE/Af8DAAEQ ASABfwH/AeABAgEBAQABAwL/AcADAAEPAv8BAAFgAQABQAEQAX8B/gEAAQYBMAEAASABfwH/AeABAgIA AQMC/wHAAwABAwL/AQQBAAJAARABfwH+AQABBgEwAgABfwH/AeABAgIAAQMC/wHAAwABAwL/AQQBAAJA ARgBfwH/AQIBBgEwAgABfwH/AeABAgIAAQMC/wHAAwABAwL/AQ4BBAJAATgBfwH/AQIBJgEwARABAAF/ Af8B4AECAQgBAAEDAv8BwAMAAQMC/wGfA/8B/Qn/AeADAAEDAv8BwAMAAQEQ/wHgAwABAwL/AcADAAEB C/8B5wT/AeABIAEAASABAwv/AQEG/wGAE/8B4AEAAQ8E/wH8AQABHxL/AYABAAEDBP8B8AEAAQcL/wH+ AQgBfwT/AwAE/wHAAQABAQv/Af4BAAE/A/8B/gMAAX8C/wH+AwABfwT/AQABPwT/Af4BAAE/A/8B/AMA AT8C/wH+AwABPwP/AfwBAAEfBP8B/gEAAX8D/wH4AwABPwL/Af4DAAE/A/8B8AEAAQcE/wH+AQABfwP/ AfABAAEPAcABHwL/Af4DAAE/A/8B4AEAAQEE/wHgAQABAwP/AeACAAEgAQ8C/wH+AwABPwP/AQIBAAEg AX8D/wHAAQABAwP/AcACAAEQAQcC/wH+AwABPwP/AQYBAAEwAT8D/wHAAQABAQP/AcABBAEAARgBAwL/ Af4DAAE/Av8B/gEGAQABMAE/A/8BgAIAA/8BwAEMAQABHAEDAv8B/gEAAQgBAAE/Av8B/gEOAQABOAE/ A/8DAAP/AYABHAEAARwBAwL/Af4BAAEIAQABPwL/AfwBDgEAATwBHwP/AwABfwL/AYABPAEAAR4BAQL/ Af4BAAEIAQABPwL/AfwBHgEAATwBHwL/Af4BAwEAAcABfwL/AYABfAEAAR8BAQL/Af4BAAEIAQABPwL/ AfgBPgEAAT4BDwL/Af4BAwEAAeABPwL/AQAB/AEAAR8BAQL/Af4BAAEIAQABPwL/AfgBPgEAAT4BBwL/ AcABBwEAAeABAQL/AQAB/AEAAR8BgQL/Af4BAAEYAQABPwL/AfABPgEAAT4BBwL/AcABBwGJAeABAQL/ AQEB/AEAAR8BgQL/Af4BAAF/AQABPwL/AfABPwEAAT8BBwL/AcABAQGIAYABAQL/AQEB/AEAAR8BgAL/ Af4BAQH/AYABPwL/AfABPwEAAX8BBwL/AcACAAGAAQEC/wEBAfwBAAEfAYAC/wH+AQEBCAEAAT8C/wHw AT8BgAF+AQcC/wHAAgABgAEBAv8BgQH8AQABHwGAAv8B/gEAAQgBAAE/Av8B8AE/AcEB/gEHAv8BwAIA AYABAQL/AYEB/AEAAR8BgQL/Af4DAAE/Av8B8AEfAYAB/gEHAv8BwAIAAYABAQL/AYEB/AEAAR8BgQL/ Af4DAAE/Av8B8AEeAQABPAEHAv8BwAEBAQABgAEBAv8BgAH8AQABHwEBAv8B/gMAAT8C/wHwAQ4BAAE4 AQcC/wHAAQcBgAHgAQMC/wGAAfwBAAEfAQEC/wH+AwABPwL/AfABBgEAATABBwL/AcIBAwEAAeABPwL/ AYABfAEAAR4BAQL/Af4DAAE/Av8B+AEGAQABEAEPAv8B/gEDAQABwAE/Av8BwAE8AQABHAEBAv8B/gMA AT8C/wH4AwABDwL/Af4BAQEAAcABPwL/AcABPAEAAQwBAwL/Af4DAAE/Av8B+AMAAQ8D/wMAAX8C/wHg ARwBAAEIAQMC/wH+AwABPwL/AfwDAAEfA/8BgAIAA/8B8AEEAgABBwL/Af4DAAE/Av8B/gMAAR8D/wGA AgAD/wHwAwABBwL/Af4DAAE/Av8B/gMAAT8D/wHAAQABAQP/AfgDAAEPAv8B/gMAAR8C/wH+AwABPwP/ AeABAAEBA/8B/AMAAQ8C/wH+AwABHwP/AwABPwP/AeABAAEDA/8B/gMAAR8C/wH+AwABHwP/AwABfwP/ AfgBAAEHA/8B/gMAAT8C/wH+AwABPwP/AcACAAT/Af4BAAE/BP8BwAIAAX8C/wH+AwABPwP/AfABAAED BP8B/gEAAT8E/wHgAgAD/wH+AwABPwP/AfwBAAEPBP8B/gEIAT8E/wH4AQABAwT/AfwCAAE/A/8B/gEA AT8F/wH4Bf8B/AEAAQ8E/wH+AgABfxL/AYABf47/AfwBIAFgAeABcAEAAX8V/wH8AQABYAHgAWABAAEf CP8CAAEEAgABfwf/AfwBAAJgAUABAAEfB/8B/gUAAX8B8AJAAQABBAEIAQcB/AEAAmABQAEiAQ8H/wH+ BQABfwHwAQABQAMAAQcB/AEEAwABIwEPAf4CAAGEAgABfwH/BAABgAH/AfgEAAEQAQ8B/AEcAwABIwGP Af4CAAGEAgABPwH/AgABIAFAAYAB/wH4AgABBAIAAQ8B/AEMAgABEAEjAY8B/gIAAYQCAAE/Af8BgAEA ASABQAEAAf8B+AIAAUYCAAEPAfwBBAFiAQgBEAEiAQ8B/gIAAYQCAAE/Af8BggEAATABwAEAAf8B+AEA AeABRgIAAQ8B/AEAAWABCAEQAQABDwH+ARABAAGEAgABPwH/AYIBDAEQAcABAAH/AfABAAFAAwABDwH8 AQABQQEIAXABAAEfAf4FAAE/Af8BwgEMARABgAEAAf8B8AEAAUADAAEHAfwBAAFBAQgBcAEAAT8B/gUA AT8B/wHCARwBGQGAAQEB/wHwAYABQAEAAQgBEAEPA/8BnwP/Af4FAAE/GP8BAQb/AYEM/wH4AUABDwv/ AfwBAAE/Cv8B/AFwAQABBwEfCv8B8AEAAQ8F/wGABP8B+AFwAQABBwEPCv8BgAEAAQME/wH8AQABHwP/ AfABcAEAAgcD/wH+AT4BPwT/AwAE/wH4AQABBwP/AeABcAEAAgcD/wH8ARwBHwP/Af4DAAF/A/8B4AEA AQED/wHgAfABAAEHAYMD/wH8AQgBDwP/AfwDAAE/A/8BwAIAA/8BwAHwAQABBwGBA/8B+AEIAQcD/wH4 AwABHwP/AwABfwL/AcAB8AEAAQcBwQP/AeABAAEDA/8B8AECAQABYAEfAv8B/gMAAT8C/wGAAfABAAEH AcAD/wHAAQABAQP/AfABBgEAAXABDwL/Af4CAAGAAT8C/wGAAfABAAEHAcAD/wGAAgAD/wHgAQYBAAFw AQcC/wH8AgAB8AEfAv8BgAQAA/8DAAF/Av8B4AEOAQABeAEHAv8B/AEAAUAB8AEfAv8BgAQAAv8B/gMA AT8C/wHgAQ4BAAFwAQcC/wH4AQEBAAH4AQ8C/wUAAv8B/gMAAT8C/wHAAQ4BAAFwAQMC/wH4AQYBAAH+ AQ8C/wUAAv8B/gEEAQABEAE/Av8BwAEOAQABcAEDAv8B8AIAAf4BDwH/Af4FAAE/Af8B/AEEAQABCAE/ Av8BgAEOAQABcAEBAv8B8AIAAf8BDwH/AfwFAAE/Af8B/gMAAT8C/wGBAQwBAAEwAQEC/wHwAQABAQH/ AQ8B/wH8BQABPwH/Af4DAAE/Av8BgQIAARABAQL/AfABEAEAAf8BjwH/AfwFAAE/Af8B/gMAAT8C/wGB AwABAQL/AfABIAEAAf8BjwH/AfwFAAE/Av8DAAF/Av8BgQMAAYEC/wHwASABAAH/AY8B/wH+BQABPwL/ AYACAAF/Av8BgQEAAQYBAAGBAv8B8AEgAQAB/wGfAf8B/gUAAT8C/wHgAQABAQP/AYEBgAEAAQEBgQL/ AfABIAEAAf8BPwH/Af4FAAE/Av8B8AEAAQED/wGBAcABAAEDAYEC/wHwAgABfwE/Af8B/gEBAf8BgAEA AUABPwL/AfgBAAEDA/8BgAHAAQACAwL/AfABEAEAAX8D/wEBAf8BAAF/AcABfwL/AfABAAEDA/8CwAEA AQIBAwL/AfACAAF8A/8BAQH/AQABfwHAAX8C/wHgAQgBAQP/AcABRAEAASIBAwL/AfgCAAF4AX8C/wEB Af8BAAH/AYABfwL/AcABHAEAA/8BwAFjAYABQAEDAv8B+AIAAXgBPwL/AQAB/wGBAf8BgAF/Av8BgAE+ AQAD/wHgASMBwwHAAQcC/wH8AQQBAAFwAR8C/wGAA/8BgAF/Av8BgAF/AQAD/wHgAQcBwwHAAQcC/wH+ AgABQAEfAv8BgAF/Av8BAAP/AcABPgEAA/8B8AEHAcMB4AEPAv8B/gMAAT8C/wHAAT8B/wH+AQAD/wHg ARwBAQP/AfgBAwHDAYABHwL/Af4DAAE/Av8B4AE/Af8B/AEBA/8B8AEIAQMD/wH4AQABwwEAAR8D/wMA AT8C/wHwAR8B/wH4AQMD/wH4AQgBBwP/AfwDAAE/A/8DAAE/Av8B+AEPAf8B8AEDA/8B/AEIAQ8D/wH+ AwABPwP/AYACAAF/Av8B/AEHAf8B8AEPA/8B/gEAAR8E/wMAAX8D/wHgAgAD/wH+AQMB/wHgAT8E/wEA AT8E/wHAAQABAQT/AfABAAEBBP8BgQH/AYABfwT/AYABfwT/AfABAAEDBP8B/AEAAQ8E/wHgAf8BgQX/ AeMF/wH8AQABHwT/Af4BAAE/Bv8Bzwz/AQBs/ws= ================================================ FILE: src/EVEMon/BlankCharacterWindow.Designer.cs ================================================ namespace EVEMon.BlankCharacter { partial class BlankCharacterWindow { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.buttonCancel = new System.Windows.Forms.Button(); this.buttonOK = new System.Windows.Forms.Button(); this.bottomPanel = new System.Windows.Forms.Panel(); this.blankCharacterControl = new EVEMon.BlankCharacter.BlankCharacterControl(); this.bottomPanel.SuspendLayout(); this.SuspendLayout(); // // buttonCancel // this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.buttonCancel.Location = new System.Drawing.Point(412, 23); this.buttonCancel.Margin = new System.Windows.Forms.Padding(3, 20, 20, 3); this.buttonCancel.Name = "buttonCancel"; this.buttonCancel.Size = new System.Drawing.Size(75, 23); this.buttonCancel.TabIndex = 0; this.buttonCancel.Text = "Cancel"; this.buttonCancel.UseVisualStyleBackColor = true; this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); // // buttonOK // this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonOK.Location = new System.Drawing.Point(331, 23); this.buttonOK.Margin = new System.Windows.Forms.Padding(3, 20, 3, 3); this.buttonOK.Name = "buttonOK"; this.buttonOK.Size = new System.Drawing.Size(75, 23); this.buttonOK.TabIndex = 1; this.buttonOK.Text = "Import"; this.buttonOK.UseVisualStyleBackColor = true; this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); // // bottomPanel // this.bottomPanel.BackColor = System.Drawing.SystemColors.ControlLight; this.bottomPanel.Controls.Add(this.buttonCancel); this.bottomPanel.Controls.Add(this.buttonOK); this.bottomPanel.Dock = System.Windows.Forms.DockStyle.Bottom; this.bottomPanel.Location = new System.Drawing.Point(0, 425); this.bottomPanel.Name = "bottomPanel"; this.bottomPanel.Size = new System.Drawing.Size(497, 57); this.bottomPanel.TabIndex = 2; // // blankCharacterControl // this.blankCharacterControl.AutoSize = true; this.blankCharacterControl.BackColor = System.Drawing.Color.Transparent; this.blankCharacterControl.Dock = System.Windows.Forms.DockStyle.Fill; this.blankCharacterControl.ForeColor = System.Drawing.SystemColors.GrayText; this.blankCharacterControl.Location = new System.Drawing.Point(0, 0); this.blankCharacterControl.Name = "blankCharacterControl"; this.blankCharacterControl.Padding = new System.Windows.Forms.Padding(13); this.blankCharacterControl.Size = new System.Drawing.Size(497, 425); this.blankCharacterControl.TabIndex = 3; // // BlankCharacterWindow // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoSize = true; this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.BackColor = System.Drawing.SystemColors.Window; this.ClientSize = new System.Drawing.Size(497, 482); this.Controls.Add(this.blankCharacterControl); this.Controls.Add(this.bottomPanel); this.MaximizeBox = false; this.Name = "BlankCharacterWindow"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Blank Character Creator"; this.Load += new System.EventHandler(this.BlankCharacterWindow_Load); this.bottomPanel.ResumeLayout(false); this.bottomPanel.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.Button buttonCancel; private System.Windows.Forms.Button buttonOK; private System.Windows.Forms.Panel bottomPanel; private BlankCharacterControl blankCharacterControl; } } ================================================ FILE: src/EVEMon/BlankCharacterWindow.cs ================================================ using System; using System.Windows.Forms; using EVEMon.Common; using EVEMon.Common.Controls; using EVEMon.Common.Helpers; namespace EVEMon.BlankCharacter { public partial class BlankCharacterWindow : EVEMonForm { #region Constructor /// /// Initializes a new instance of the class. /// public BlankCharacterWindow() { InitializeComponent(); } #endregion #region Inherited Event Handlers /// /// Handles the Load event of the BlankCharacterWindow control. /// /// The source of the event. /// The instance containing the event data. private void BlankCharacterWindow_Load(object sender, EventArgs e) { EveMonClient.TimerTick += EveMonClient_TimerTick; Disposed += OnDisposed; buttonOK.Text = "Save"; buttonOK.Enabled = false; } /// /// Called when the instance get disposed. /// /// The sender. /// The instance containing the event data. private void OnDisposed(object sender, EventArgs e) { EveMonClient.TimerTick -= EveMonClient_TimerTick; Disposed -= OnDisposed; } #endregion #region Global Event Handlers /// /// Handles the TimerTick event of the EveMonClient control. /// /// The source of the event. /// The instance containing the event data. private void EveMonClient_TimerTick(object sender, EventArgs e) { buttonOK.Enabled = !String.IsNullOrEmpty(BlankCharacterUIHelper.CharacterName); AcceptButton = buttonOK.Enabled ? buttonOK : buttonCancel; } #endregion #region Control Handlers /// /// Handles the Click event of the buttonOK control. /// /// The source of the event. /// The instance containing the event data. private async void buttonOK_Click(object sender, EventArgs e) { // Three choices for one button switch (buttonOK.DialogResult) { // Save blank character case DialogResult.None: await BlankCharacterUIHelper.SaveAsync(OnCharacterSaved); break; // Add blank character case DialogResult.OK: await BlankCharacterUIHelper.AddBlankCharacterAsync(OnCharacterImported); break; } } /// /// Handles the Click event of the buttonCancel control. /// /// The source of the event. /// The instance containing the event data. private void buttonCancel_Click(object sender, EventArgs e) { Close(); } #endregion #region Callback Methods /// /// Called when character is saved. /// private void OnCharacterSaved() { buttonOK.Text = "Import"; buttonOK.DialogResult = DialogResult.OK; // Disabling control editing blankCharacterControl.Enabled = false; } /// /// Called when character is imported. /// private void OnCharacterImported() { Close(); } #endregion } } ================================================ FILE: src/EVEMon/BlankCharacterWindow.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ================================================ FILE: src/EVEMon/CharacterMonitoring/AssetsColumnsSelectWindow.cs ================================================ using System.Collections.Generic; using System.Linq; using EVEMon.Common.Controls; using EVEMon.Common.Extensions; using EVEMon.Common.SettingsObjects; namespace EVEMon.CharacterMonitoring { public sealed class AssetsColumnsSelectWindow : ColumnSelectWindow { /// /// Initializes a new instance of the class. /// /// The settings. public AssetsColumnsSelectWindow(IEnumerable settings) : base(settings) { } /// /// Gets the header. /// /// The key. /// protected override string GetHeader(int key) => ((AssetColumn)key).GetDescription(); /// /// Gets all keys. /// /// protected override IEnumerable AllKeys => EnumExtensions.GetValues() .Where(x => x != AssetColumn.None).Select(x => (int)x); /// /// Gets the default columns. /// /// protected override IEnumerable DefaultColumns { get { AssetSettings settings = new AssetSettings(); return settings.DefaultColumns; } } } } ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterAssetsList.Designer.cs ================================================ namespace EVEMon.CharacterMonitoring { internal sealed partial class CharacterAssetsList { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Component Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CharacterAssetsList)); this.noAssetsLabel = new System.Windows.Forms.Label(); this.lvAssets = new System.Windows.Forms.ListView(); this.chItem = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chQuantity = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chVolume = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chGroup = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chCategory = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.contextMenu = new System.Windows.Forms.ContextMenuStrip(this.components); this.exportToCSVToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.ilIcons = new System.Windows.Forms.ImageList(this.components); this.noPricesFoundLabel = new System.Windows.Forms.Label(); this.lblTotalCost = new System.Windows.Forms.Label(); this.totalCostThrobber = new EVEMon.Common.Controls.Throbber(); this.estimatedCostPanel = new System.Windows.Forms.Panel(); this.throbber = new EVEMon.Common.Controls.Throbber(); this.showInBrowserMenuSeparator = new System.Windows.Forms.ToolStripSeparator(); this.showInBrowserMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.contextMenu.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.totalCostThrobber)).BeginInit(); this.estimatedCostPanel.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.throbber)).BeginInit(); this.SuspendLayout(); // // noAssetsLabel // this.noAssetsLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.noAssetsLabel.ForeColor = System.Drawing.SystemColors.GrayText; this.noAssetsLabel.Location = new System.Drawing.Point(0, 0); this.noAssetsLabel.Name = "noAssetsLabel"; this.noAssetsLabel.Size = new System.Drawing.Size(472, 401); this.noAssetsLabel.TabIndex = 3; this.noAssetsLabel.Text = "No assets are available."; this.noAssetsLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // lvAssets // this.lvAssets.BorderStyle = System.Windows.Forms.BorderStyle.None; this.lvAssets.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.chItem, this.chQuantity, this.chVolume, this.chGroup, this.chCategory}); this.lvAssets.ContextMenuStrip = this.contextMenu; this.lvAssets.Dock = System.Windows.Forms.DockStyle.Fill; this.lvAssets.FullRowSelect = true; this.lvAssets.HideSelection = false; this.lvAssets.Location = new System.Drawing.Point(0, 0); this.lvAssets.Name = "lvAssets"; this.lvAssets.Size = new System.Drawing.Size(472, 401); this.lvAssets.SmallImageList = this.ilIcons; this.lvAssets.TabIndex = 3; this.lvAssets.UseCompatibleStateImageBehavior = false; this.lvAssets.View = System.Windows.Forms.View.Details; // // chItem // this.chItem.Text = "Item"; this.chItem.Width = 166; // // chQuantity // this.chQuantity.Text = "Quantity"; this.chQuantity.Width = 72; // // chVolume // this.chVolume.Text = "Volume"; this.chVolume.Width = 74; // // chGroup // this.chGroup.Text = "Group"; this.chGroup.Width = 80; // // chCategory // this.chCategory.Text = "Category"; // // contextMenu // this.contextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.showInBrowserMenuItem, this.showInBrowserMenuSeparator, this.exportToCSVToolStripMenuItem}); this.contextMenu.Name = "ItemAttributeContextMenu"; this.contextMenu.Size = new System.Drawing.Size(171, 76); this.contextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenu_Opening); // // exportToCSVToolStripMenuItem // this.exportToCSVToolStripMenuItem.Name = "exportToCSVToolStripMenuItem"; this.exportToCSVToolStripMenuItem.Size = new System.Drawing.Size(170, 22); this.exportToCSVToolStripMenuItem.Text = "Export to CSV..."; this.exportToCSVToolStripMenuItem.Click += new System.EventHandler(this.exportToCSVToolStripMenuItem_Click); // // ilIcons // this.ilIcons.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilIcons.ImageStream"))); this.ilIcons.TransparentColor = System.Drawing.Color.Transparent; this.ilIcons.Images.SetKeyName(0, "arrow_up.png"); this.ilIcons.Images.SetKeyName(1, "arrow_down.png"); this.ilIcons.Images.SetKeyName(2, "16x16Transparant.png"); // // noPricesFoundLabel // this.noPricesFoundLabel.Anchor = System.Windows.Forms.AnchorStyles.Right; this.noPricesFoundLabel.AutoSize = true; this.noPricesFoundLabel.ForeColor = System.Drawing.Color.DarkRed; this.noPricesFoundLabel.Location = new System.Drawing.Point(258, 9); this.noPricesFoundLabel.Name = "noPricesFoundLabel"; this.noPricesFoundLabel.RightToLeft = System.Windows.Forms.RightToLeft.No; this.noPricesFoundLabel.Size = new System.Drawing.Size(208, 13); this.noPricesFoundLabel.TabIndex = 1; this.noPricesFoundLabel.Text = "* Prices for some items could not be found."; this.noPricesFoundLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // lblTotalCost // this.lblTotalCost.AutoSize = true; this.lblTotalCost.Location = new System.Drawing.Point(3, 9); this.lblTotalCost.Name = "lblTotalCost"; this.lblTotalCost.Size = new System.Drawing.Size(207, 13); this.lblTotalCost.TabIndex = 0; this.lblTotalCost.Text = "Estimated Cost of shown items: {0:N2} ISK"; this.lblTotalCost.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // totalCostThrobber // this.totalCostThrobber.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.totalCostThrobber.Location = new System.Drawing.Point(442, 4); this.totalCostThrobber.MaximumSize = new System.Drawing.Size(24, 24); this.totalCostThrobber.MinimumSize = new System.Drawing.Size(24, 24); this.totalCostThrobber.Name = "totalCostThrobber"; this.totalCostThrobber.Size = new System.Drawing.Size(24, 24); this.totalCostThrobber.State = EVEMon.Common.Enumerations.ThrobberState.Stopped; this.totalCostThrobber.TabIndex = 3; this.totalCostThrobber.TabStop = false; this.totalCostThrobber.Visible = false; // // estimatedCostPanel // this.estimatedCostPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.estimatedCostPanel.Controls.Add(this.lblTotalCost); this.estimatedCostPanel.Controls.Add(this.noPricesFoundLabel); this.estimatedCostPanel.Controls.Add(this.totalCostThrobber); this.estimatedCostPanel.Dock = System.Windows.Forms.DockStyle.Bottom; this.estimatedCostPanel.Location = new System.Drawing.Point(0, 401); this.estimatedCostPanel.Name = "estimatedCostPanel"; this.estimatedCostPanel.Size = new System.Drawing.Size(472, 33); this.estimatedCostPanel.TabIndex = 5; // // throbber // this.throbber.Anchor = System.Windows.Forms.AnchorStyles.None; this.throbber.Location = new System.Drawing.Point(229, 205); this.throbber.MaximumSize = new System.Drawing.Size(24, 24); this.throbber.MinimumSize = new System.Drawing.Size(24, 24); this.throbber.Name = "throbber"; this.throbber.Size = new System.Drawing.Size(24, 24); this.throbber.State = EVEMon.Common.Enumerations.ThrobberState.Stopped; this.throbber.TabIndex = 6; this.throbber.TabStop = false; this.throbber.Visible = false; // // showInBrowserMenuSeparator // this.showInBrowserMenuSeparator.Name = "showInBrowserMenuSeparator"; this.showInBrowserMenuSeparator.Size = new System.Drawing.Size(167, 6); // // showInBrowserMenuItem // this.showInBrowserMenuItem.Name = "showInBrowserMenuItem"; this.showInBrowserMenuItem.Size = new System.Drawing.Size(170, 22); this.showInBrowserMenuItem.Text = "Show In Browser..."; this.showInBrowserMenuItem.Click += new System.EventHandler(this.showInBrowserMenuItem_Click); // // CharacterAssetsList // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Controls.Add(this.lvAssets); this.Controls.Add(this.throbber); this.Controls.Add(this.noAssetsLabel); this.Controls.Add(this.estimatedCostPanel); this.Name = "CharacterAssetsList"; this.Size = new System.Drawing.Size(472, 434); this.contextMenu.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.totalCostThrobber)).EndInit(); this.estimatedCostPanel.ResumeLayout(false); this.estimatedCostPanel.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.throbber)).EndInit(); this.ResumeLayout(false); } #endregion private System.Windows.Forms.Label noAssetsLabel; private System.Windows.Forms.ListView lvAssets; private System.Windows.Forms.ColumnHeader chItem; private System.Windows.Forms.ColumnHeader chQuantity; private System.Windows.Forms.ColumnHeader chVolume; private System.Windows.Forms.ColumnHeader chGroup; private System.Windows.Forms.ColumnHeader chCategory; private System.Windows.Forms.ImageList ilIcons; private System.Windows.Forms.ContextMenuStrip contextMenu; private System.Windows.Forms.ToolStripMenuItem exportToCSVToolStripMenuItem; private System.Windows.Forms.Label lblTotalCost; private System.Windows.Forms.Label noPricesFoundLabel; private Common.Controls.Throbber totalCostThrobber; private System.Windows.Forms.Panel estimatedCostPanel; private Common.Controls.Throbber throbber; private System.Windows.Forms.ToolStripMenuItem showInBrowserMenuItem; private System.Windows.Forms.ToolStripSeparator showInBrowserMenuSeparator; } } ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterAssetsList.cs ================================================ using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using EVEMon.Common; using EVEMon.Common.Collections; using EVEMon.Common.Constants; using EVEMon.Common.Controls; using EVEMon.Common.CustomEventArgs; using EVEMon.Common.Data; using EVEMon.Common.Enumerations; using EVEMon.Common.Enumerations.UISettings; using EVEMon.Common.Extensions; using EVEMon.Common.Factories; using EVEMon.Common.Helpers; using EVEMon.Common.Interfaces; using EVEMon.Common.Models; using EVEMon.Common.Models.Comparers; using EVEMon.Common.SettingsObjects; using EVEMon.SkillPlanner; using Region = EVEMon.Common.Data.Region; namespace EVEMon.CharacterMonitoring { internal sealed partial class CharacterAssetsList : UserControl, IListView { #region Fields private readonly List m_columns = new List(); private readonly List m_list = new List(); private InfiniteDisplayToolTip m_tooltip; private AssetGrouping m_grouping; private AssetColumn m_sortCriteria; private string m_textFilter = string.Empty; private string m_totalCostLabelDefaultText; private bool m_sortAscending = true; private bool m_columnsChanged; private bool m_isUpdatingColumns; private bool m_init; #endregion #region Constructor /// /// Constructor. /// public CharacterAssetsList() { InitializeComponent(); lvAssets.Visible = false; lvAssets.AllowColumnReorder = true; lvAssets.Columns.Clear(); estimatedCostPanel.Hide(); noPricesFoundLabel.Hide(); noAssetsLabel.Font = FontFactory.GetFont("Tahoma", 11.25F, FontStyle.Bold); ListViewHelper.EnableDoubleBuffer(lvAssets); lvAssets.KeyDown += listView_KeyDown; lvAssets.ColumnClick += listView_ColumnClick; lvAssets.ColumnWidthChanged += listView_ColumnWidthChanged; lvAssets.ColumnReordered += listView_ColumnReordered; lvAssets.MouseDown += listView_MouseDown; lvAssets.MouseMove += listView_MouseMove; lvAssets.MouseLeave += listView_MouseLeave; } #endregion #region Properties /// /// Gets the character associated with this monitor. /// internal CCPCharacter Character { get; set; } /// /// Gets or sets the text filter. /// [Browsable(false)] public string TextFilter { get { return m_textFilter; } set { m_textFilter = value; if (m_init) Task.WhenAll(UpdateColumnsAsync()); } } /// /// Gets or sets the enumeration of assets to display. /// private IEnumerable Assets { get { return m_list; } set { m_list.Clear(); if (value == null) return; m_list.AddRange(value); } } /// /// Gets or sets the grouping of a listview. /// /// [Browsable(false)] public Enum Grouping { get { return m_grouping; } set { m_grouping = (AssetGrouping)value; if (m_init) Task.WhenAll(UpdateColumnsAsync()); } } /// /// Gets or sets the settings used for columns. /// [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public IEnumerable Columns { get { // Add the visible columns; matching the display order List newColumns = new List(); foreach (ColumnHeader header in lvAssets.Columns.Cast().OrderBy(x => x.DisplayIndex)) { AssetColumnSettings columnSetting = m_columns.First(x => x.Column == (AssetColumn)header.Tag); if (columnSetting.Width > -1) columnSetting.Width = header.Width; newColumns.Add(columnSetting); } // Then add the other columns newColumns.AddRange(m_columns.Where(x => !x.Visible)); return newColumns; } set { m_columns.Clear(); if (value != null) m_columns.AddRange(value.Cast()); if (m_init) Task.WhenAll(UpdateColumnsAsync()); } } #endregion # region Inherited Events /// /// On load subscribe the events. /// /// An that contains the event data. protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (DesignMode || this.IsDesignModeHosted()) return; m_totalCostLabelDefaultText = lblTotalCost.Text; m_tooltip = new InfiniteDisplayToolTip(lvAssets); EveMonClient.TimerTick += EveMonClient_TimerTick; EveMonClient.CharacterAssetsUpdated += EveMonClient_CharacterAssetsUpdated; EveMonClient.CharacterInfoUpdated += EveMonClient_CharacterInfoUpdated; EveMonClient.ConquerableStationListUpdated += EveMonClient_ConquerableStationListUpdated; EveMonClient.EveFlagsUpdated += EveMonClient_EveFlagsUpdated; EveMonClient.SettingsChanged += EveMonClient_SettingsChanged; EveMonClient.ItemPricesUpdated += EveMonClient_ItemPricesUpdated; Disposed += OnDisposed; } /// /// Unsubscribe events on disposing. /// /// /// private void OnDisposed(object sender, EventArgs e) { m_tooltip.Dispose(); EveMonClient.TimerTick -= EveMonClient_TimerTick; EveMonClient.CharacterAssetsUpdated -= EveMonClient_CharacterAssetsUpdated; EveMonClient.CharacterInfoUpdated -= EveMonClient_CharacterInfoUpdated; EveMonClient.ConquerableStationListUpdated -= EveMonClient_ConquerableStationListUpdated; EveMonClient.EveFlagsUpdated -= EveMonClient_EveFlagsUpdated; EveMonClient.SettingsChanged -= EveMonClient_SettingsChanged; EveMonClient.ItemPricesUpdated -= EveMonClient_ItemPricesUpdated; Disposed -= OnDisposed; } /// /// When the control becomes visible again, we update the content. /// /// protected override async void OnVisibleChanged(EventArgs e) { if (DesignMode || this.IsDesignModeHosted() || Character == null) return; base.OnVisibleChanged(e); if (!Visible) return; // Prevents the properties to call UpdateColumnsAsync() till we set all properties m_init = false; lvAssets.Hide(); estimatedCostPanel.Hide(); noAssetsLabel.Visible = Character?.Assets.Count == 0; Assets = Character?.Assets; Columns = Settings.UI.MainWindow.Assets.Columns; Grouping = Character?.UISettings.AssetsGroupBy; TextFilter = string.Empty; await UpdateColumnsAsync(); m_init = true; UpdateListVisibility(); } # endregion #region Update Methods /// /// Autoresizes the columns. /// public void AutoResizeColumns() { m_columns.ForEach(column => { if (column.Visible) column.Width = -2; }); UpdateColumnsAsync().ConfigureAwait(false); } /// /// Updates the columns. /// internal async Task UpdateColumnsAsync() { // Returns if not visible if (!Visible) return; lvAssets.BeginUpdate(); m_isUpdatingColumns = true; lvAssets.Hide(); noAssetsLabel.Hide(); lvAssets.Columns.Clear(); lvAssets.Groups.Clear(); lvAssets.Items.Clear(); try { throbber.Show(); throbber.State = ThrobberState.Rotating; AddColumns(); // We update the content await UpdateContentAsync(); throbber.State = ThrobberState.Stopped; throbber.Hide(); } finally { lvAssets.EndUpdate(); m_isUpdatingColumns = false; } } /// /// Adds the columns. /// private void AddColumns() { foreach (AssetColumnSettings column in m_columns.Where(x => x.Visible)) { ColumnHeader header = lvAssets.Columns.Add(column.Column.GetHeader(), column.Width); header.Tag = column.Column; switch (column.Column) { case AssetColumn.UnitaryPrice: case AssetColumn.TotalPrice: case AssetColumn.Quantity: case AssetColumn.Volume: header.TextAlign = HorizontalAlignment.Right; break; } } } /// /// Updates the content of the listview. /// private async Task UpdateContentAsync() { // Returns if not visible if (!Visible) return; int scrollBarPosition = lvAssets.GetVerticalScrollBarPosition(); // Store the selected item (if any) to restore it after the update int selectedItem = lvAssets.SelectedItems.Count > 0 ? lvAssets.SelectedItems[0]. Tag.GetHashCode() : 0; lvAssets.BeginUpdate(); try { List assets; lock (m_list) { assets = m_list.Where(x => x.Item != null && x.SolarSystem != null). Where(x => IsTextMatching(x, m_textFilter)).ToList(); } UpdateSort(); await UpdateContentByGroupAsync(assets); await UpdateItemsCostAsync(assets); // Adjust the size of the columns AdjustColumns(); UpdateListVisibility(); // Restore the selected item (if any) if (selectedItem > 0) { foreach (ListViewItem lvItem in lvAssets.Items.Cast().Where( lvItem => lvItem.Tag.GetHashCode() == selectedItem)) { lvItem.Selected = true; } } } finally { lvAssets.EndUpdate(); lvAssets.SetVerticalScrollBarPosition(scrollBarPosition); } } /// /// Updates the items cost. /// /// The assets. private async Task UpdateItemsCostAsync(IList assets) { lblTotalCost.Text = string.Format(CultureConstants.DefaultCulture, m_totalCostLabelDefaultText, await TaskHelper.RunCPUBoundTaskAsync(() => assets.Sum(asset => asset.Price * asset.Quantity))); if (!totalCostThrobber.Visible && !Settings.MarketPricer.Pricer.Queried) { noPricesFoundLabel.Hide(); totalCostThrobber.Show(); totalCostThrobber.State = ThrobberState.Rotating; return; } totalCostThrobber.State = ThrobberState.Stopped; totalCostThrobber.Hide(); noPricesFoundLabel.Visible = await TaskHelper.RunCPUBoundTaskAsync(() => assets.Where(asset => asset.TypeOfBlueprint != BlueprintType.Copy.ToString()). Any(asset => Math.Abs(asset.Price) < double.Epsilon)); } /// /// Updates the list visibility. /// private void UpdateListVisibility() { // Display or hide the "no assets" label if (!m_init) return; noAssetsLabel.Visible = lvAssets.Items.Count == 0; estimatedCostPanel.Visible = !noAssetsLabel.Visible; lvAssets.Visible = !noAssetsLabel.Visible; } /// /// Updates the content by group. /// /// The assets. private async Task UpdateContentByGroupAsync(IEnumerable assets) { switch (m_grouping) { case AssetGrouping.None: await UpdateNoGroupContentAsync(assets); break; case AssetGrouping.Group: IOrderedEnumerable> groups1 = assets.GroupBy(x => x.Item.GroupName).OrderBy(x => x.Key); await UpdateContentAsync(groups1); break; case AssetGrouping.GroupDesc: IOrderedEnumerable> groups2 = assets.GroupBy(x => x.Item.GroupName).OrderByDescending(x => x.Key); await UpdateContentAsync(groups2); break; case AssetGrouping.Category: IOrderedEnumerable> groups3 = assets.GroupBy(x => x.Item.CategoryName).OrderBy(x => x.Key); await UpdateContentAsync(groups3); break; case AssetGrouping.CategoryDesc: IOrderedEnumerable> groups4 = assets.GroupBy(x => x.Item.CategoryName).OrderByDescending(x => x.Key); await UpdateContentAsync(groups4); break; case AssetGrouping.Container: IOrderedEnumerable> groups5 = assets.GroupBy(x => x.Container).OrderBy(x => x.Key); await UpdateContentAsync(groups5); break; case AssetGrouping.ContainerDesc: IOrderedEnumerable> groups6 = assets.GroupBy(x => x.Container).OrderByDescending(x => x.Key); await UpdateContentAsync(groups6); break; case AssetGrouping.Location: IOrderedEnumerable> groups7 = assets.GroupBy(x => x.Location).OrderBy(x => x.Key); await UpdateContentAsync(groups7); break; case AssetGrouping.LocationDesc: IOrderedEnumerable> groups8 = assets.GroupBy(x => x.Location).OrderByDescending(x => x.Key); await UpdateContentAsync(groups8); break; case AssetGrouping.Region: IOrderedEnumerable> groups9 = assets.GroupBy(x => x.SolarSystem.Constellation.Region).OrderBy(x => x.Key); await UpdateContentAsync(groups9); break; case AssetGrouping.RegionDesc: IOrderedEnumerable> groups10 = assets.GroupBy(x => x.SolarSystem.Constellation.Region).OrderByDescending(x => x.Key); await UpdateContentAsync(groups10); break; case AssetGrouping.Jumps: IOrderedEnumerable> groups11 = assets.GroupBy(x => x.Jumps).OrderBy(x => x.Key); await UpdateContentAsync(groups11); break; case AssetGrouping.JumpsDesc: IOrderedEnumerable> groups12 = assets.GroupBy(x => x.Jumps).OrderByDescending(x => x.Key); await UpdateContentAsync(groups12); break; } } /// /// Updates the content of the listview. /// /// The assets. private Task UpdateNoGroupContentAsync(IEnumerable assets) => TaskHelper.RunCPUBoundTaskAsync(() => { return assets.Select(asset => new { asset, item = new ListViewItem(asset.Item.Name) { UseItemStyleForSubItems = false, Tag = asset } }).Select(x => CreateSubItems(x.asset, x.item)).ToArray(); }).ContinueWith(task => { lvAssets.Groups.Clear(); lvAssets.Items.Clear(); lvAssets.Items.AddRange(task.Result); }, EveMonClient.CurrentSynchronizationContext); /// /// Updates the content of the listview. /// /// /// private Task UpdateContentAsync(IEnumerable> groups) => TaskHelper.RunCPUBoundTaskAsync(() => { var listOfGroups = new List(); var listOfItems = new List(); // Add the groups foreach (IGrouping group in groups) { string groupText; if (@group.Key is int) // Really ugly way but couldn't figured another way groupText = @group.First().JumpsText; else groupText = @group.Key?.ToString() ?? string.Empty; ListViewGroup listGroup = new ListViewGroup(groupText); listOfGroups.Add(listGroup); ListViewItem[] items = @group.Select(asset => new { asset, item = new ListViewItem(asset.Item.Name, listGroup) { UseItemStyleForSubItems = false, Tag = asset } }).Select(x => CreateSubItems(x.asset, x.item)).ToArray(); listOfItems.AddRange(items); } return new Tuple(listOfGroups.ToArray(), listOfItems.ToArray()); }).ContinueWith(task => { lvAssets.Items.Clear(); lvAssets.Groups.Clear(); lvAssets.Groups.AddRange(task.Result.Item1); lvAssets.Items.AddRange(task.Result.Item2); }, EveMonClient.CurrentSynchronizationContext); /// /// Creates the list view sub items. /// /// The asset. /// The item. private ListViewItem CreateSubItems(Asset asset, ListViewItem item) { // Add enough subitems to match the number of columns while (item.SubItems.Count < lvAssets.Columns.Count + 1) { item.SubItems.Add(string.Empty); } // Creates the subitems for (int i = 0; i < lvAssets.Columns.Count; i++) { SetColumn(asset, item.SubItems[i], (AssetColumn)lvAssets.Columns[i].Tag); } return item; } /// /// Adjusts the columns. /// private void AdjustColumns() { foreach (ColumnHeader column in lvAssets.Columns) { if (m_columns[column.Index].Width == -1) m_columns[column.Index].Width = -2; column.Width = m_columns[column.Index].Width; // Due to .NET design we need to prevent the last colummn to resize to the right end // Return if it's not the last column and not set to auto-resize if (column.Index != lvAssets.Columns.Count - 1 || m_columns[column.Index].Width != -2) continue; const int Pad = 4; // Calculate column header text width with padding int columnHeaderWidth = TextRenderer.MeasureText(column.Text, Font).Width + Pad * 2; // If there is an image assigned to the header, add its width with padding if (lvAssets.SmallImageList != null && column.ImageIndex > -1) columnHeaderWidth += lvAssets.SmallImageList.ImageSize.Width + Pad; // Calculate the width of the header and the items of the column int columnMaxWidth = column.ListView.Items.Cast().Select( item => TextRenderer.MeasureText(item.SubItems[column.Index].Text, Font).Width).Concat( new[] { columnHeaderWidth }).Max() + Pad + 1; // Assign the width found column.Width = columnMaxWidth; } } /// /// Updates the item sorter. /// private void UpdateSort() { lvAssets.ListViewItemSorter = new ListViewItemComparerByTag( new AssetComparer(m_sortCriteria, m_sortAscending)); UpdateSortVisualFeedback(); } /// /// Updates the sort feedback (the arrow on the header). /// private void UpdateSortVisualFeedback() { foreach (ColumnHeader columnHeader in lvAssets.Columns.Cast()) { AssetColumn column = (AssetColumn)columnHeader.Tag; if (m_sortCriteria == column) columnHeader.ImageIndex = m_sortAscending ? 0 : 1; else columnHeader.ImageIndex = 2; } } /// /// Updates the listview sub-item. /// /// /// /// private static void SetColumn(Asset asset, ListViewItem.ListViewSubItem item, AssetColumn column) { bool numberFormat = Settings.UI.MainWindow.Assets.NumberAbsFormat; switch (column) { case AssetColumn.ItemName: item.Text = asset.Item.Name; break; case AssetColumn.Quantity: item.Text = numberFormat ? FormatHelper.Format(asset.Quantity, AbbreviationFormat.AbbreviationSymbols) : asset.Quantity.ToNumericString(0); break; case AssetColumn.UnitaryPrice: item.Text = numberFormat ? FormatHelper.Format(asset.Price, AbbreviationFormat.AbbreviationSymbols) : asset.Price.ToNumericString(2); break; case AssetColumn.TotalPrice: item.Text = numberFormat ? FormatHelper.Format(asset.Cost, AbbreviationFormat.AbbreviationSymbols) : asset.Cost.ToNumericString(2); break; case AssetColumn.Volume: item.Text = numberFormat ? FormatHelper.Format(asset.TotalVolume, AbbreviationFormat.AbbreviationSymbols) : asset.TotalVolume.ToNumericString(2); break; case AssetColumn.BlueprintType: item.Text = asset.TypeOfBlueprint; break; case AssetColumn.Group: item.Text = asset.Item.GroupName; break; case AssetColumn.Category: item.Text = asset.Item.CategoryName; break; case AssetColumn.Container: item.Text = asset.Container; break; case AssetColumn.Flag: item.Text = asset.Flag; break; case AssetColumn.Location: item.Text = asset.Location; item.ForeColor = asset.SolarSystem.SecurityLevelColor; break; case AssetColumn.Region: item.Text = asset.SolarSystem.Constellation.Region.Name; break; case AssetColumn.SolarSystem: item.Text = asset.SolarSystem.Name; item.ForeColor = asset.SolarSystem.SecurityLevelColor; break; case AssetColumn.FullLocation: item.Text = asset.FullLocation; break; case AssetColumn.Jumps: item.Text = asset.JumpsText; break; default: throw new NotImplementedException(); } } #endregion #region Helper Methods /// /// Checks the given text matches the item. /// /// The x. /// The text. /// /// true if [is text matching] [the specified x]; otherwise, false. /// private static bool IsTextMatching(Asset x, string text) => string.IsNullOrEmpty(text) || ((x.Item?.ID ?? 0) != 0 && (x.Item.Name.Contains(text, true) || x.Item.GroupName.Contains(text, true) || x.Item.CategoryName.Contains(text, true) || x.TypeOfBlueprint.Contains(text, true))) || x.Container.Contains(text, true) || x.Flag.Contains(text, true) || x.Location.Contains(text, true) || ((x.SolarSystem?.ID ?? 0) != 0 && (x.SolarSystem.Name.Contains(text, true) || x.SolarSystem.Constellation.Name.Contains(text, true) || x.SolarSystem.Constellation.Region.Name.Contains(text, true))); /// /// Gets the tool tip text. /// /// The item. /// private string GetToolTipText(ListViewItem item) { if (!item.Selected || lvAssets.SelectedItems.Count < 2) return string.Empty; List selectedItems = lvAssets.SelectedItems.Cast().ToList(); if (selectedItems.Any(selectedItem => selectedItem.Text != item.Text)) return string.Empty; List selectedAssets = selectedItems.Select(selectedItem => selectedItem.Tag).OfType().ToList(); long sumQuantity = selectedAssets.Sum(selectedAsset => selectedAsset.Quantity); double sumVolume = selectedAssets.Sum(selectedAsset => selectedAsset.TotalVolume); int uniqueLocations = selectedAssets.Select(asset => asset.Location).Distinct().Count(); int minJumps = selectedAssets.Min(asset => asset.Jumps); int maxJumps = selectedAssets.Max(asset => asset.Jumps); Asset closestAsset = selectedAssets.First(asset => asset.Jumps == minJumps); Asset farthestAsset = selectedAssets.Last(asset => asset.Jumps == maxJumps); StringBuilder builder = new StringBuilder(); builder.Append($"{item.Text} ({selectedAssets.First().Volume:N2} m³)") .AppendLine() .Append($"Total Quantity: {sumQuantity:N0} in {uniqueLocations:N0} " + $"{(uniqueLocations > 1 ? "different " : string.Empty)}location{uniqueLocations.S()}") .AppendLine() .Append($"Total Volume: {sumVolume:N2} m³") .AppendLine() .Append($"Closest Location: {closestAsset.Location} ({closestAsset.JumpsText})") .AppendLine(); if (closestAsset.Location != farthestAsset.Location) builder.Append($"Farthest Location: {farthestAsset.Location} ({farthestAsset.JumpsText})"); return builder.ToString(); } /// /// Updates the asset location. /// private async Task UpdateAssetLocationAsync() { // Invoke it on a worker thread cause it may be time intensive // if character owns many stuff in several locations await TaskHelper.RunCPUBoundTaskAsync(() => { Character.Assets.UpdateLocation(); lock (m_list) { Assets = Character.Assets; } }); await UpdateColumnsAsync(); } #endregion #region Local Event Handlers /// /// Exports item info to CSV format. /// /// /// private void exportToCSVToolStripMenuItem_Click(object sender, EventArgs e) { ListViewExporter.CreateCSV(lvAssets); } /// /// On column reorder we update the settings. /// /// /// private void listView_ColumnReordered(object sender, ColumnReorderedEventArgs e) { m_columnsChanged = true; } /// /// When the user manually resizes a column, we make sure to update the column preferences. /// /// /// private void listView_ColumnWidthChanged(object sender, ColumnWidthChangedEventArgs e) { if (m_isUpdatingColumns || m_columns.Count <= e.ColumnIndex) return; if (m_columns[e.ColumnIndex].Width == lvAssets.Columns[e.ColumnIndex].Width) return; m_columns[e.ColumnIndex].Width = lvAssets.Columns[e.ColumnIndex].Width; m_columnsChanged = true; } /// /// When the user clicks a column header, we update the sorting. /// /// /// private void listView_ColumnClick(object sender, ColumnClickEventArgs e) { AssetColumn column = (AssetColumn)lvAssets.Columns[e.Column].Tag; if (m_sortCriteria == column) m_sortAscending = !m_sortAscending; else { m_sortCriteria = column; m_sortAscending = true; } m_isUpdatingColumns = true; // Updates the item sorter UpdateSort(); m_isUpdatingColumns = false; } /// /// When the mouse gets pressed, we change the cursor. /// /// The source of the event. /// The instance containing the event data. private void listView_MouseDown(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Right) return; lvAssets.Cursor = Cursors.Default; } /// /// When the mouse moves over the list, we show the item's tooltip if over an item. /// /// The source of the event. /// The instance containing the event data. private void listView_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) return; lvAssets.Cursor = CustomCursors.ContextMenu; ListViewItem item = lvAssets.GetItemAt(e.Location.X, e.Location.Y); if (item == null) { m_tooltip.Hide(); return; } m_tooltip.Show(GetToolTipText(item), e.Location); } /// /// When the mouse leaves the list, we hide the item's tooltip. /// /// The source of the event. /// The instance containing the event data. private void listView_MouseLeave(object sender, EventArgs e) { m_tooltip.Hide(); } /// /// Handles key press. /// /// /// private void listView_KeyDown(object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys.A: if (e.Control) lvAssets.SelectAll(); break; } } /// /// Handles the Opening event of the contextMenu control. /// /// The source of the event. /// The instance containing the event data. private void contextMenu_Opening(object sender, CancelEventArgs e) { bool visible = lvAssets.SelectedItems.Count > 0 && lvAssets.SelectedItems .Cast() .All(item => item != null && item.Text == ((Asset)lvAssets.SelectedItems[0]?.Tag)?.Item.Name); showInBrowserMenuItem.Visible = showInBrowserMenuSeparator.Visible = visible; if (!visible) return; Asset asset = lvAssets.SelectedItems[0]?.Tag as Asset; if (asset?.Item == null) return; Blueprint blueprint = StaticBlueprints.GetBlueprintByID(asset.Item.ID); Ship ship = asset.Item as Ship; Skill skill = Character.Skills[asset.Item.ID]; if (skill == Skill.UnknownSkill) skill = null; string text = ship != null ? "Ship" : blueprint != null ? "Blueprint" : skill != null ? "Skill" : "Item"; showInBrowserMenuItem.Text = $"Show In {text} Browser..."; } /// /// Handles the Click event of the showInBrowserMenuItem control. /// /// The source of the event. /// The instance containing the event data. private void showInBrowserMenuItem_Click(object sender, EventArgs e) { Asset asset = lvAssets.SelectedItems[0]?.Tag as Asset; if (asset?.Item == null) return; Ship ship = asset.Item as Ship; Blueprint blueprint = StaticBlueprints.GetBlueprintByID(asset.Item.ID); Skill skill = Character.Skills[asset.Item.ID]; if (skill == Skill.UnknownSkill) skill = null; PlanWindow planWindow = PlanWindow.ShowPlanWindow(Character); if (ship != null) planWindow.ShowShipInBrowser(ship); else if (blueprint != null) planWindow.ShowBlueprintInBrowser(blueprint); else if (skill != null) planWindow.ShowSkillInBrowser(skill); else planWindow.ShowItemInBrowser(asset.Item); } # endregion #region Global Events /// /// On timer tick, we update the column settings if any changes have been made to them. /// /// /// private void EveMonClient_TimerTick(object sender, EventArgs e) { if (!Visible || !m_columnsChanged) return; Settings.UI.MainWindow.Assets.Columns.Clear(); Settings.UI.MainWindow.Assets.Columns.AddRange(Columns.Cast()); // Recreate the columns Columns = Settings.UI.MainWindow.Assets.Columns; m_columnsChanged = false; } /// /// When the assets update, update the list. /// /// /// private async void EveMonClient_CharacterAssetsUpdated(object sender, CharacterChangedEventArgs e) { if (Character == null || e.Character != Character) return; Assets = Character.Assets; await UpdateContentAsync(); } /// /// When the conquerable station list updates, update the list. /// /// The source of the event. /// The instance containing the event data. private async void EveMonClient_ConquerableStationListUpdated(object sender, EventArgs e) { if (Character == null) return; await UpdateAssetLocationAsync(); } /// /// When the eve flags updates, update the list. /// /// The source of the event. /// The instance containing the event data. private async void EveMonClient_EveFlagsUpdated(object sender, EventArgs e) { if (Character == null) return; await UpdateContentAsync(); } /// /// When the character info updates, update the list. /// /// The source of the event. /// The instance containing the event data. /// Mainly to update the jumps from charater last known location to assets. private async void EveMonClient_CharacterInfoUpdated(object sender, CharacterChangedEventArgs e) { if (Character == null || e.Character != Character) return; await UpdateAssetLocationAsync(); } /// /// Handles the SettingsChanged event of the EveMonClient control. /// /// The source of the event. /// The instance containing the event data. private async void EveMonClient_SettingsChanged(object sender, EventArgs e) { // No need to do this if control is not visible if (!Visible) return; await UpdateContentAsync(); } /// /// Occurs when the item prices get updated. /// /// The source of the event. /// The instance containing the event data. private async void EveMonClient_ItemPricesUpdated(object sender, EventArgs e) { await UpdateContentAsync(); } #endregion } } ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterAssetsList.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 103, 17 17, 17 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADi AAAAAk1TRnQBSQFMAgEBAwEAAfQBBQH0AQUBEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA AwABEAMAAQEBAAEQBgABCP8A/wD/AP8A/wD/AP8A/wAaAAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEB AQABAQUAAYAXAAP/AQAG/wIABv8CAAb/AgAG/wIABv8CAAb/AgAB8AEPAf4BfwL/AgAB+AEfAfwBPwL/ AgAB/AE/AfgBHwL/AgAB/gF/AfABDwL/AgAG/wIABv8CAAb/AgAG/wIABv8CAAb/AgAL ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterContactList.Designer.cs ================================================ namespace EVEMon.CharacterMonitoring { internal sealed partial class CharacterContactList { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Component Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.noContactsLabel = new System.Windows.Forms.Label(); this.lbContacts = new EVEMon.Common.Controls.NoFlickerListBox(); this.SuspendLayout(); // // noContactsLabel // this.noContactsLabel.BackColor = System.Drawing.Color.WhiteSmoke; this.noContactsLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.noContactsLabel.ForeColor = System.Drawing.SystemColors.GrayText; this.noContactsLabel.Location = new System.Drawing.Point(0, 0); this.noContactsLabel.Name = "noContactsLabel"; this.noContactsLabel.Size = new System.Drawing.Size(328, 372); this.noContactsLabel.TabIndex = 3; this.noContactsLabel.Text = "Contacts information not available."; this.noContactsLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // lbContacts // this.lbContacts.BorderStyle = System.Windows.Forms.BorderStyle.None; this.lbContacts.Dock = System.Windows.Forms.DockStyle.Fill; this.lbContacts.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable; this.lbContacts.FormattingEnabled = true; this.lbContacts.IntegralHeight = false; this.lbContacts.ItemHeight = 15; this.lbContacts.Location = new System.Drawing.Point(0, 0); this.lbContacts.Margin = new System.Windows.Forms.Padding(0); this.lbContacts.Name = "lbContacts"; this.lbContacts.Size = new System.Drawing.Size(328, 372); this.lbContacts.TabIndex = 4; this.lbContacts.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.lbContacts_DrawItem); this.lbContacts.MeasureItem += new System.Windows.Forms.MeasureItemEventHandler(this.lbContacts_MeasureItem); this.lbContacts.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lbContacts_MouseDown); this.lbContacts.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.lbContacts_MouseWheel); // // CharacterContactList // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Controls.Add(this.noContactsLabel); this.Controls.Add(this.lbContacts); this.Name = "CharacterContactList"; this.Size = new System.Drawing.Size(328, 372); this.ResumeLayout(false); } #endregion private System.Windows.Forms.Label noContactsLabel; private Common.Controls.NoFlickerListBox lbContacts; } } ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterContactList.cs ================================================ using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using System.Windows.Forms; using EVEMon.Common; using EVEMon.Common.Constants; using EVEMon.Common.Controls; using EVEMon.Common.CustomEventArgs; using EVEMon.Common.Data; using EVEMon.Common.Enumerations; using EVEMon.Common.Extensions; using EVEMon.Common.Factories; using EVEMon.Common.Models; using EVEMon.Common.Properties; namespace EVEMon.CharacterMonitoring { internal sealed partial class CharacterContactList : UserControl { #region Fields private const TextFormatFlags Format = TextFormatFlags.NoPadding | TextFormatFlags.NoClipping | TextFormatFlags.NoPrefix; // Contacts drawing - Region & text padding private const int PadTop = 2; private const int PadLeft = 6; private const int PadRight = 7; // Contacts drawing - Contacts private const int ContactDetailHeight = 34; // Contacts drawing - Contacts groups private const int ContactGroupHeaderHeight = 21; private const int CollapserPadRight = 4; private readonly Font m_contactsFont; private readonly Font m_contactsBoldFont; private readonly List m_collapsedGroups = new List(); #endregion #region Constructor public CharacterContactList() { InitializeComponent(); lbContacts.Hide(); m_contactsFont = FontFactory.GetFont("Tahoma", 8.25F); m_contactsBoldFont = FontFactory.GetFont("Tahoma", 8.25F, FontStyle.Bold); noContactsLabel.Font = FontFactory.GetFont("Tahoma", 11.25F, FontStyle.Bold); } #endregion #region Properties /// /// Gets the character associated with this monitor. /// internal CCPCharacter Character { get; set; } /// /// Gets or sets the standing status to show contacts for. /// internal StandingStatus ShowContactsWithStandings { get; set; } /// /// Gets or sets a value indicating whether to show all contacts. /// internal bool ShowAllContacts { get; set; } /// /// Gets or sets a value indicating whether to show contacts in watch list. /// internal bool ShowContactsInWatchList { get; set; } #endregion #region Inherited events /// /// On load subscribe the events. /// /// An that contains the event data. protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (DesignMode || this.IsDesignModeHosted()) return; EveMonClient.CharacterContactsUpdated += EveMonClient_CharacterContactsUpdated; EveMonClient.SettingsChanged += EveMonClient_SettingsChanged; EveMonClient.EveIDToNameUpdated += EveMonClient_EveIDToNameUpdated; Disposed += OnDisposed; ShowAllContacts = true; } /// /// Unsubscribe events on disposing. /// /// /// private void OnDisposed(object sender, EventArgs e) { EveMonClient.CharacterContactsUpdated -= EveMonClient_CharacterContactsUpdated; EveMonClient.SettingsChanged -= EveMonClient_SettingsChanged; EveMonClient.EveIDToNameUpdated -= EveMonClient_EveIDToNameUpdated; Disposed -= OnDisposed; } /// /// When the control becomes visible again, we update the content. /// /// protected override void OnVisibleChanged(EventArgs e) { base.OnVisibleChanged(e); if (Visible) UpdateContent(); } #endregion #region Content Management /// /// Updates the content. /// internal void UpdateContent() { // Returns if not visible if (!Visible) return; // When no character, we just hide the list if (Character == null) { noContactsLabel.Visible = true; lbContacts.Visible = false; return; } int scrollBarPosition = lbContacts.TopIndex; // Update the standings list lbContacts.BeginUpdate(); try { IList contacts = Character.Contacts.ToList(); if (!ShowAllContacts && !ShowContactsInWatchList) contacts = contacts.Where(contact => Standing.Status(contact.Standing) == ShowContactsWithStandings).ToList(); if (ShowContactsInWatchList) contacts = contacts.Where(contact => contact.IsInWatchlist).ToList(); IEnumerable> groups = contacts.GroupBy(x => x.Group).OrderBy(x => (int)x.Key); // Scroll through groups lbContacts.Items.Clear(); foreach (IGrouping group in groups) { string groupHeaderText = $"{@group.Key.GetDescription()} ({@group.Count()})"; lbContacts.Items.Add(groupHeaderText); // Add items in the group when it's not collapsed if (m_collapsedGroups.Contains(groupHeaderText)) continue; foreach (Contact contact in group.OrderBy(contact => contact.Name)) { contact.ContactImageUpdated += contact_ContactImageUpdated; lbContacts.Items.Add(contact); } } // Display or hide the "no contacts" label. noContactsLabel.Visible = !contacts.Any(); lbContacts.Visible = contacts.Any(); // Invalidate display lbContacts.Invalidate(); } finally { lbContacts.EndUpdate(); lbContacts.TopIndex = scrollBarPosition; } } #endregion #region Drawing /// /// Handles the DrawItem event of the lbContacts control. /// /// The source of the event. /// The instance containing the event data. private void lbContacts_DrawItem(object sender, DrawItemEventArgs e) { if (e.Index < 0 || e.Index >= lbContacts.Items.Count) return; object item = lbContacts.Items[e.Index]; Contact contact = item as Contact; if (contact != null) DrawItem(contact, e); else DrawItem((string)item, e); } /// /// Handles the MeasureItem event of the lbContacts control. /// /// The source of the event. /// The instance containing the event data. private void lbContacts_MeasureItem(object sender, MeasureItemEventArgs e) { if (e.Index < 0) return; e.ItemHeight = GetItemHeight(lbContacts.Items[e.Index]); } /// /// Gets the item's height. /// /// private int GetItemHeight(object item) { if (item is Contact) return Math.Max(m_contactsFont.Height * 2 + PadTop * 2, ContactDetailHeight); return ContactGroupHeaderHeight; } /// /// Draws the list item for the given standing /// /// /// private void DrawItem(Contact contact, DrawItemEventArgs e) { Graphics g = e.Graphics; // Draw background g.FillRectangle(e.Index % 2 == 0 ? Brushes.White : Brushes.LightGray, e.Bounds); // Measure and draw contact name Size contactTextSize = TextRenderer.MeasureText(g, contact.Name, m_contactsBoldFont, Size.Empty, Format); TextRenderer.DrawText(g, contact.Name, m_contactsBoldFont, new Rectangle( e.Bounds.Left + contact.EntityImage.Width + 4, e.Bounds.Top + (contact.Group == ContactGroup.Agent ? PadTop : (e.Bounds.Height - contactTextSize.Height) / 2), contactTextSize.Width + PadLeft, contactTextSize.Height), Color.Black); // Draw text for agents if (contact.Group == ContactGroup.Agent) { Agent agent = StaticGeography.GetAgentByName(contact.Name); if (agent != null) { Station agentStation = agent.Station; string agentLocationText = agentStation != null ? agentStation.Name : agent.Station.Name; // Determine the agent level and division string agentLevelText = (agent.AgentType != AgentType.BasicAgent && agent.AgentType != AgentType.ResearchAgent) ? agent.AgentType. GetDescription() : $"Level {Skill.GetRomanFromInt(agent.Level)}"; string agentLevelDivisionText = $"( {agentLevelText} - {agent.Division} )"; // Calculate text size Size agentLocationTextSize = TextRenderer.MeasureText(g, agentLocationText, m_contactsFont, Size.Empty, Format); Size agentLevelDivisionTextSize = TextRenderer.MeasureText(g, agentLevelDivisionText, m_contactsFont, Size.Empty, Format); // Draw agent level and division text TextRenderer.DrawText(g, agentLevelDivisionText, m_contactsFont, new Rectangle(e.Bounds.Left + contact.EntityImage.Width + 4 + contactTextSize.Width + PadRight, e.Bounds.Top + PadTop, agentLevelDivisionTextSize.Width + PadLeft, agentLevelDivisionTextSize.Height), Color.Black, Format); // Draw agent location TextRenderer.DrawText(g, agentLocationText, m_contactsFont, new Rectangle( e.Bounds.Left + contact.EntityImage.Width + 4, e.Bounds.Top + PadTop + agentLevelDivisionTextSize.Height, agentLocationTextSize.Width + PadLeft, agentLocationTextSize.Height), Color.Black); } } else if (Settings.UI.SafeForWork) { string contactStandingStatusText = $"({Standing.Status(contact.Standing)})"; // Measure and draw standing text Size contactStandingStatusTextSize = TextRenderer.MeasureText(g, contactStandingStatusText, m_contactsFont, Size.Empty, Format); TextRenderer.DrawText(g, contactStandingStatusText, m_contactsFont, new Rectangle(e.Bounds.Left + contact.EntityImage.Width + 4 + contactTextSize.Width + PadRight, e.Bounds.Top + (e.Bounds.Height - contactStandingStatusTextSize.Height) / 2, contactStandingStatusTextSize. Width + PadLeft, contactStandingStatusTextSize.Height), Color.Black); // Draw watchlist text if (contact.IsInWatchlist) { const string ContactInWatchListText = " - Watching"; Size contactInWatchListTextSize = TextRenderer.MeasureText(g, ContactInWatchListText, m_contactsFont, Size.Empty, Format); TextRenderer.DrawText(g, ContactInWatchListText, m_contactsFont, new Rectangle(e.Bounds.Left + contact.EntityImage.Width + 4 + contactTextSize.Width + contactStandingStatusTextSize.Width + PadRight, e.Bounds.Top + (e.Bounds.Height - contactStandingStatusTextSize.Height) / 2, contactInWatchListTextSize.Width + PadLeft, contactInWatchListTextSize.Height), Color.Black); } } else { // Draw standing image Image standingImage = Standing.GetStandingImage((int)contact.Standing); g.DrawImage(standingImage, new Rectangle(e.Bounds.Left + contact.EntityImage. Width + 4 + contactTextSize.Width + PadRight * 2, e.Bounds.Top + (e.Bounds. Height - standingImage.Size.Height) / 2, standingImage.Width, standingImage.Height)); // Draw watchlist image if (contact.IsInWatchlist) g.DrawImage(Resources.Watch, new Rectangle(e.Bounds.Left + contact. EntityImage.Width + 4 + contactTextSize.Width + standingImage.Width + PadRight * 3, e.Bounds.Top + (e.Bounds.Height - Resources.Watch. Height) / 2, Resources.Watch.Width, Resources.Watch.Height)); } // Draw images if (!Settings.UI.SafeForWork) g.DrawImage(contact.EntityImage, new Rectangle(e.Bounds.Left + PadLeft / 2, ContactDetailHeight / 2 - contact.EntityImage.Height / 2 + e.Bounds.Top, contact.EntityImage.Width, contact.EntityImage.Height)); } /// /// Draws the list item for the given group. /// /// /// private void DrawItem(string group, DrawItemEventArgs e) { Graphics g = e.Graphics; // Draws the background using (LinearGradientBrush lgb = new LinearGradientBrush(new PointF(0F, 0F), new PointF(0F, 21F), Color.FromArgb(75, 75, 75), Color.FromArgb(25, 25, 25))) { g.FillRectangle(lgb, e.Bounds); } using (Pen p = new Pen(Color.FromArgb(100, 100, 100))) { g.DrawLine(p, e.Bounds.Left, e.Bounds.Top, e.Bounds.Right + 1, e.Bounds.Top); } // Setting character spacing NativeMethods.SetTextCharacterSpacing(g, 4); // Measure texts Size standingGroupTextSize = TextRenderer.MeasureText(g, group.ToUpper(CultureConstants.DefaultCulture), m_contactsBoldFont, Size.Empty, Format); Rectangle standingGroupTextRect = new Rectangle(e.Bounds.Left + PadLeft, e.Bounds.Top + (e.Bounds.Height / 2 - standingGroupTextSize.Height / 2), standingGroupTextSize.Width + PadRight, standingGroupTextSize.Height); // Draws the text header TextRenderer.DrawText(g, group.ToUpper(CultureConstants.DefaultCulture), m_contactsBoldFont, standingGroupTextRect, Color.White, Color.Transparent, Format); // Draws the collapsing arrows bool isCollapsed = m_collapsedGroups.Contains(group); Image img = isCollapsed ? Resources.Expand : Resources.Collapse; g.DrawImageUnscaled(img, new Rectangle(e.Bounds.Right - img.Width - CollapserPadRight, ContactGroupHeaderHeight / 2 - img.Height / 2 + e.Bounds.Top, img.Width, img.Height)); } /// /// Gets the preferred size from the preferred size of the list. /// /// /// public override Size GetPreferredSize(Size proposedSize) => lbContacts.GetPreferredSize(proposedSize); #endregion #region Local events /// /// Handles the ContactImageUpdated event of the contact control. /// /// The source of the event. /// The instance containing the event data. private void contact_ContactImageUpdated(object sender, EventArgs e) { // Force to redraw lbContacts.Invalidate(); } /// /// Handles the MouseWheel event of the lbContacts control. /// /// The source of the event. /// The instance containing the event data. private void lbContacts_MouseWheel(object sender, MouseEventArgs e) { if (e.Delta == 0) return; // Update the drawing based upon the mouse wheel scrolling int numberOfItemLinesToMove = e.Delta * SystemInformation.MouseWheelScrollLines / Math.Abs(e.Delta); int lines = numberOfItemLinesToMove; if (lines == 0) return; // Compute the number of lines to move int direction = lines / Math.Abs(lines); int[] numberOfPixelsToMove = new int[lines * direction]; for (int i = 1; i <= Math.Abs(lines); i++) { object item = null; // Going up if (direction == Math.Abs(direction)) { // Retrieve the next top item if (lbContacts.TopIndex - i >= 0) item = lbContacts.Items[lbContacts.TopIndex - i]; } // Going down else { // Compute the height of the items from current the topindex (included) int height = 0; for (int j = lbContacts.TopIndex + i - 1; j < lbContacts.Items.Count; j++) { height += GetItemHeight(lbContacts.Items[j]); } // Retrieve the next bottom item if (height > lbContacts.ClientSize.Height) item = lbContacts.Items[lbContacts.TopIndex + i - 1]; } // If found a new item as top or bottom if (item != null) numberOfPixelsToMove[i - 1] = GetItemHeight(item) * direction; else lines -= direction; } // Scroll if (lines != 0) lbContacts.Invalidate(); } /// /// Handles the MouseDown event of the lbContacts control. /// /// The source of the event. /// The instance containing the event data. private void lbContacts_MouseDown(object sender, MouseEventArgs e) { int index = lbContacts.IndexFromPoint(e.Location); if (index < 0 || index >= lbContacts.Items.Count) return; Rectangle itemRect; // Beware, this last index may actually means a click in the whitespace at the bottom // Let's deal with this special case if (index == lbContacts.Items.Count - 1) { itemRect = lbContacts.GetItemRectangle(index); if (!itemRect.Contains(e.Location)) return; } // For a standings group, we have to handle the collapse/expand mechanism object item = lbContacts.Items[index]; string contactsGroup = item as string; if (contactsGroup == null) return; // Left button : expand/collapse if (e.Button != MouseButtons.Right) { ToggleGroupExpandCollapse(contactsGroup); return; } // If right click on the button, still expand/collapse itemRect = lbContacts.GetItemRectangle(lbContacts.Items.IndexOf(item)); Rectangle buttonRect = GetButtonRectangle(contactsGroup, itemRect); if (buttonRect.Contains(e.Location)) ToggleGroupExpandCollapse(contactsGroup); } #endregion #region Helper Methods /// /// Toggles the expansion or collapsing of a single group /// /// The group to expand or collapse. private void ToggleGroupExpandCollapse(string group) { if (m_collapsedGroups.Contains(group)) { m_collapsedGroups.Remove(group); UpdateContent(); } else { m_collapsedGroups.Add(group); UpdateContent(); } } /// /// Gets the rectangle for the collapse/expand button. /// /// The group. /// The item rect. /// private Rectangle GetButtonRectangle(string group, Rectangle itemRect) { // Checks whether this group is collapsed bool isCollapsed = m_collapsedGroups.Contains(group); // Get the image for this state Image btnImage = isCollapsed ? Resources.Expand : Resources.Collapse; // Compute the top left point Point btnPoint = new Point(itemRect.Right - btnImage.Width - CollapserPadRight, ContactGroupHeaderHeight / 2 - btnImage.Height / 2 + itemRect.Top); return new Rectangle(btnPoint, btnImage.Size); } #endregion #region Global events /// /// When the character standings update, we refresh the content. /// /// /// private void EveMonClient_CharacterContactsUpdated(object sender, CharacterChangedEventArgs e) { if (e.Character != Character) return; UpdateContent(); } /// /// When the settings change we update the content. /// /// In case 'SafeForWork' gets enabled. /// The source of the event. /// The instance containing the event data. private void EveMonClient_SettingsChanged(object sender, EventArgs e) { UpdateContent(); } /// /// When ID to namae is updated we update the content. /// /// The source of the event. /// The instance containing the event data. private void EveMonClient_EveIDToNameUpdated(object sender, EventArgs e) { UpdateContent(); } #endregion } } ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterContactList.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterContractsList.Designer.cs ================================================ namespace EVEMon.CharacterMonitoring { internal sealed partial class CharacterContractsList { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Component Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CharacterContractsList)); this.noContractsLabel = new System.Windows.Forms.Label(); this.lvContracts = new System.Windows.Forms.ListView(); this.chContract = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chType = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chStatus = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chIssuer = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chAssignee = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chIssued = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chRemainingTime = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.contextMenu = new System.Windows.Forms.ContextMenuStrip(this.components); this.showDetailsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.showDetailsMenuSeparator = new System.Windows.Forms.ToolStripSeparator(); this.showInBrowserMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.showInBrowserMenuSeparator = new System.Windows.Forms.ToolStripSeparator(); this.exportToCSVToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.ilIcons = new System.Windows.Forms.ImageList(this.components); this.contextMenu.SuspendLayout(); this.SuspendLayout(); // // noContractsLabel // this.noContractsLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.noContractsLabel.ForeColor = System.Drawing.SystemColors.GrayText; this.noContractsLabel.Location = new System.Drawing.Point(0, 0); this.noContractsLabel.Name = "noContractsLabel"; this.noContractsLabel.Size = new System.Drawing.Size(454, 434); this.noContractsLabel.TabIndex = 2; this.noContractsLabel.Text = "No contracts are available."; this.noContractsLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // lvContracts // this.lvContracts.BorderStyle = System.Windows.Forms.BorderStyle.None; this.lvContracts.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.chContract, this.chType, this.chStatus, this.chIssuer, this.chAssignee, this.chIssued, this.chRemainingTime}); this.lvContracts.ContextMenuStrip = this.contextMenu; this.lvContracts.Dock = System.Windows.Forms.DockStyle.Fill; this.lvContracts.FullRowSelect = true; this.lvContracts.HideSelection = false; this.lvContracts.Location = new System.Drawing.Point(0, 0); this.lvContracts.MultiSelect = false; this.lvContracts.Name = "lvContracts"; this.lvContracts.Size = new System.Drawing.Size(454, 434); this.lvContracts.SmallImageList = this.ilIcons; this.lvContracts.TabIndex = 3; this.lvContracts.UseCompatibleStateImageBehavior = false; this.lvContracts.View = System.Windows.Forms.View.Details; this.lvContracts.DoubleClick += new System.EventHandler(this.lvContracts_DoubleClick); // // chContract // this.chContract.Text = "Contract"; // // chType // this.chType.Text = "Type"; // // chStatus // this.chStatus.Text = "Status"; // // chIssuer // this.chIssuer.Text = "From"; // // chAssignee // this.chAssignee.Text = "To"; // // chIssued // this.chIssued.Text = "Date Issued"; // // chRemainingTime // this.chRemainingTime.Text = "Time Left"; // // contextMenu // this.contextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.showDetailsToolStripMenuItem, this.showDetailsMenuSeparator, this.showInBrowserMenuItem, this.showInBrowserMenuSeparator, this.exportToCSVToolStripMenuItem}); this.contextMenu.Name = "contextMenu"; this.contextMenu.Size = new System.Drawing.Size(171, 82); this.contextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenu_Opening); // // showDetailsToolStripMenuItem // this.showDetailsToolStripMenuItem.Name = "showDetailsToolStripMenuItem"; this.showDetailsToolStripMenuItem.Size = new System.Drawing.Size(170, 22); this.showDetailsToolStripMenuItem.Text = "Show Details..."; this.showDetailsToolStripMenuItem.Click += new System.EventHandler(this.showDetailsToolStripMenuItem_Click); // // showDetailsMenuSeparator // this.showDetailsMenuSeparator.Name = "showDetailsMenuSeparator"; this.showDetailsMenuSeparator.Size = new System.Drawing.Size(167, 6); // // showInBrowserMenuItem // this.showInBrowserMenuItem.Name = "showInBrowserMenuItem"; this.showInBrowserMenuItem.Size = new System.Drawing.Size(170, 22); this.showInBrowserMenuItem.Text = "Show In Browser..."; this.showInBrowserMenuItem.Click += new System.EventHandler(this.showInBrowserMenuItem_Click); // // showInBrowserMenuSeparator // this.showInBrowserMenuSeparator.Name = "showInBrowserMenuSeparator"; this.showInBrowserMenuSeparator.Size = new System.Drawing.Size(167, 6); // // exportToCSVToolStripMenuItem // this.exportToCSVToolStripMenuItem.Name = "exportToCSVToolStripMenuItem"; this.exportToCSVToolStripMenuItem.Size = new System.Drawing.Size(170, 22); this.exportToCSVToolStripMenuItem.Text = "Export To CSV..."; this.exportToCSVToolStripMenuItem.Click += new System.EventHandler(this.exportToCSVToolStripMenuItem_Click); // // ilIcons // this.ilIcons.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilIcons.ImageStream"))); this.ilIcons.TransparentColor = System.Drawing.Color.Transparent; this.ilIcons.Images.SetKeyName(0, "arrow_up.png"); this.ilIcons.Images.SetKeyName(1, "arrow_down.png"); this.ilIcons.Images.SetKeyName(2, "16x16Transparant.png"); // // CharacterContractsList // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Controls.Add(this.lvContracts); this.Controls.Add(this.noContractsLabel); this.Name = "CharacterContractsList"; this.Size = new System.Drawing.Size(454, 434); this.contextMenu.ResumeLayout(false); this.ResumeLayout(false); } #endregion private System.Windows.Forms.Label noContractsLabel; private System.Windows.Forms.ListView lvContracts; private System.Windows.Forms.ColumnHeader chContract; private System.Windows.Forms.ColumnHeader chType; private System.Windows.Forms.ColumnHeader chIssuer; private System.Windows.Forms.ColumnHeader chAssignee; private System.Windows.Forms.ColumnHeader chIssued; private System.Windows.Forms.ColumnHeader chStatus; private System.Windows.Forms.ColumnHeader chRemainingTime; private System.Windows.Forms.ImageList ilIcons; private System.Windows.Forms.ContextMenuStrip contextMenu; private System.Windows.Forms.ToolStripMenuItem showDetailsToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator showDetailsMenuSeparator; private System.Windows.Forms.ToolStripMenuItem exportToCSVToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem showInBrowserMenuItem; private System.Windows.Forms.ToolStripSeparator showInBrowserMenuSeparator; } } ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterContractsList.cs ================================================ using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using EVEMon.Common; using EVEMon.Common.Collections; using EVEMon.Common.Constants; using EVEMon.Common.Controls; using EVEMon.Common.CustomEventArgs; using EVEMon.Common.Data; using EVEMon.Common.Enumerations; using EVEMon.Common.Enumerations.UISettings; using EVEMon.Common.Extensions; using EVEMon.Common.Factories; using EVEMon.Common.Helpers; using EVEMon.Common.Interfaces; using EVEMon.Common.Models; using EVEMon.Common.Models.Comparers; using EVEMon.Common.SettingsObjects; using EVEMon.DetailsWindow; using EVEMon.SkillPlanner; namespace EVEMon.CharacterMonitoring { internal sealed partial class CharacterContractsList : UserControl, IListView { #region Fields private readonly List m_columns = new List(); private readonly List m_list = new List(); private InfiniteDisplayToolTip m_tooltip; private ContractGrouping m_grouping; private ContractColumn m_sortCriteria; private IssuedFor m_showIssuedFor; private string m_textFilter = string.Empty; private bool m_sortAscending = true; private bool m_isUpdatingColumns; private bool m_columnsChanged; private bool m_init; #endregion #region Constructor /// /// Constructor. /// public CharacterContractsList() { InitializeComponent(); lvContracts.Hide(); lvContracts.AllowColumnReorder = true; lvContracts.Columns.Clear(); m_showIssuedFor = IssuedFor.All; showDetailsToolStripMenuItem.Font = FontFactory.GetFont("Segoe UI", 9F, FontStyle.Bold); noContractsLabel.Font = FontFactory.GetFont("Tahoma", 11.25F, FontStyle.Bold); ListViewHelper.EnableDoubleBuffer(lvContracts); lvContracts.ColumnClick += lvContracts_ColumnClick; lvContracts.ColumnWidthChanged += lvContracts_ColumnWidthChanged; lvContracts.ColumnReordered += lvContracts_ColumnReordered; lvContracts.MouseDown += listView_MouseDown; lvContracts.MouseMove += listView_MouseMove; lvContracts.MouseLeave += listView_MouseLeave; } #endregion #region Properties /// /// Gets the character associated with this monitor. /// internal CCPCharacter Character { get; set; } /// /// Gets or sets a value indicating whether this is visible. /// /// true if visible; otherwise, false. internal bool Visibility { get { return lvContracts.Visible; } set { lvContracts.Visible = value; } } /// /// Gets or sets the text filter. /// [Browsable(false)] public string TextFilter { get { return m_textFilter; } set { m_textFilter = value; if (m_init) UpdateColumns(); } } /// /// Gets or sets the enumeration of research points to display. /// internal IEnumerable Contracts { get { return m_list; } set { m_list.Clear(); if (value == null) return; m_list.AddRange(value); } } /// /// Gets or sets the grouping mode. /// [Browsable(false)] public Enum Grouping { get { return m_grouping; } set { m_grouping = (ContractGrouping)value; if (m_init) UpdateColumns(); } } /// /// Gets or sets which "Issued for" contracts to display. /// internal IssuedFor ShowIssuedFor { get { return m_showIssuedFor; } set { m_showIssuedFor = value; if (m_init) UpdateColumns(); } } /// /// Gets or sets the settings used for columns. /// [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public IEnumerable Columns { get { // Add the visible columns; matching the display order List newColumns = new List(); foreach (ColumnHeader header in lvContracts.Columns.Cast().OrderBy(x => x.DisplayIndex)) { ContractColumnSettings columnSetting = m_columns.First(x => x.Column == (ContractColumn)header.Tag); if (columnSetting.Width > -1) columnSetting.Width = header.Width; newColumns.Add(columnSetting); } // Then add the other columns newColumns.AddRange(m_columns.Where(x => !x.Visible)); return newColumns; } set { m_columns.Clear(); if (value != null) m_columns.AddRange(value.Cast()); if (m_init) UpdateColumns(); } } #endregion # region Inherited Events /// /// On load subscribe the events. /// /// An that contains the event data. protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (DesignMode || this.IsDesignModeHosted()) return; m_tooltip = new InfiniteDisplayToolTip(lvContracts); EveMonClient.TimerTick += EveMonClient_TimerTick; EveMonClient.ContractsUpdated += EveMonClient_ContractsUpdated; EveMonClient.EveIDToNameUpdated += EveMonClient_EveIDToNameUpdated; EveMonClient.ConquerableStationListUpdated += EveMonClient_ConquerableStationListUpdated; EveMonClient.CharacterContractItemsDownloaded += EveMonClient_ContractItemsDownloaded; EveMonClient.CorporationContractItemsDownloaded += EveMonClient_ContractItemsDownloaded; Disposed += OnDisposed; } /// /// Unsubscribe events on disposing. /// /// /// private void OnDisposed(object sender, EventArgs e) { m_tooltip.Dispose(); EveMonClient.TimerTick -= EveMonClient_TimerTick; EveMonClient.ContractsUpdated -= EveMonClient_ContractsUpdated; EveMonClient.EveIDToNameUpdated -= EveMonClient_EveIDToNameUpdated; EveMonClient.ConquerableStationListUpdated -= EveMonClient_ConquerableStationListUpdated; EveMonClient.CharacterContractItemsDownloaded -= EveMonClient_ContractItemsDownloaded; EveMonClient.CorporationContractItemsDownloaded -= EveMonClient_ContractItemsDownloaded; Disposed -= OnDisposed; } /// /// When the control becomes visible again, we update the content. /// /// protected override void OnVisibleChanged(EventArgs e) { base.OnVisibleChanged(e); if (DesignMode || this.IsDesignModeHosted() || Character == null || !Visible) return; // Prevents the properties to call UpdateColumns() till we set all properties m_init = false; lvContracts.Visible = false; Contracts = Character?.Contracts; Columns = Settings.UI.MainWindow.Contracts.Columns; Grouping = Character?.UISettings.ContractsGroupBy; TextFilter = string.Empty; UpdateColumns(); m_init = true; UpdateListVisibility(); } # endregion #region Update Methods /// /// Autoresizes the columns. /// public void AutoResizeColumns() { m_columns.ForEach(column => { if (column.Visible) column.Width = -2; }); UpdateColumns(); } /// /// Updates the columns. /// internal void UpdateColumns() { // Returns if not visible if (!Visible) return; lvContracts.BeginUpdate(); m_isUpdatingColumns = true; try { lvContracts.Columns.Clear(); lvContracts.Groups.Clear(); lvContracts.Items.Clear(); foreach (ContractColumnSettings column in m_columns.Where(x => x.Visible)) { ColumnHeader header = lvContracts.Columns.Add(column.Column.GetHeader(), column.Width); header.Tag = column.Column; switch (column.Column) { case ContractColumn.Price: case ContractColumn.Reward: case ContractColumn.Collateral: case ContractColumn.Buyout: case ContractColumn.Volume: case ContractColumn.Issued: case ContractColumn.Duration: case ContractColumn.DaysToComplete: header.TextAlign = HorizontalAlignment.Right; break; } } // We update the content UpdateContent(); } finally { lvContracts.EndUpdate(); m_isUpdatingColumns = false; } } /// /// Updates the content of the listview. /// private void UpdateContent() { // Returns if not visible if (!Visible) return; int scrollBarPosition = lvContracts.GetVerticalScrollBarPosition(); // Store the selected item (if any) to restore it after the update int selectedItem = lvContracts.SelectedItems.Count > 0 ? lvContracts. SelectedItems[0].Tag.GetHashCode() : 0; lvContracts.BeginUpdate(); try { bool filterInactive = Character != null && Settings.UI.MainWindow.Contracts. HideInactiveContracts, filterIssued = m_showIssuedFor != IssuedFor.All; var contracts = new LinkedList(); foreach (var con in m_list) // Filter on valid contracts matching text if (con.ContractType != ContractType.None && con.StartStation != null && con.EndStation != null && IsTextMatching(con, m_textFilter)) { con.UpdateContractItems(); // Filter on issued type and availability if ((!filterIssued || con.IssuedFor == m_showIssuedFor) && (!filterInactive || con.IsAvailable || con.NeedsAttention)) contracts.AddLast(con); } UpdateSort(); UpdateContentByGroup(contracts); // Restore the selected item (if any) if (selectedItem > 0) { foreach (ListViewItem lvItem in lvContracts.Items.Cast().Where( lvItem => lvItem.Tag.GetHashCode() == selectedItem)) { lvItem.Selected = true; } } // Adjust the size of the columns AdjustColumns(); UpdateListVisibility(); } finally { lvContracts.EndUpdate(); lvContracts.SetVerticalScrollBarPosition(scrollBarPosition); } } /// /// Updates the list visibility. /// private void UpdateListVisibility() { // Display or hide the "no contracts" label if (!m_init) return; noContractsLabel.Visible = lvContracts.Items.Count == 0; lvContracts.Visible = !noContractsLabel.Visible; } /// /// Updates the content by group. /// /// The contracts. private void UpdateContentByGroup(IEnumerable contracts) { switch (m_grouping) { case ContractGrouping.State: IOrderedEnumerable> groups0 = contracts.GroupBy(x => x.State).OrderBy(x => (int)x.Key); UpdateContent(groups0); break; case ContractGrouping.StateDesc: IOrderedEnumerable> groups1 = contracts.GroupBy(x => x.State).OrderByDescending(x => (int)x.Key); UpdateContent(groups1); break; case ContractGrouping.Issued: IOrderedEnumerable> groups4 = contracts.GroupBy(x => x.Issued.ToLocalTime().Date).OrderBy(x => x.Key); UpdateContent(groups4); break; case ContractGrouping.IssuedDesc: IOrderedEnumerable> groups5 = contracts.GroupBy(x => x.Issued.ToLocalTime().Date).OrderByDescending(x => x.Key); UpdateContent(groups5); break; case ContractGrouping.ContractType: IOrderedEnumerable> groups6 = contracts.GroupBy(x => x.ContractType).OrderBy(x => x.Key); UpdateContent(groups6); break; case ContractGrouping.ContractTypeDesc: IOrderedEnumerable> groups7 = contracts.GroupBy(x => x.ContractType).OrderByDescending(x => x.Key); UpdateContent(groups7); break; case ContractGrouping.StartLocation: IOrderedEnumerable> groups8 = contracts.GroupBy(x => x.StartStation).OrderBy(x => x.Key.Name); UpdateContent(groups8); break; case ContractGrouping.StartLocationDesc: IOrderedEnumerable> groups9 = contracts.GroupBy(x => x.StartStation).OrderByDescending(x => x.Key.Name); UpdateContent(groups9); break; } } /// /// Updates the content of the listview. /// /// /// private void UpdateContent(IEnumerable> groups) { lvContracts.Items.Clear(); lvContracts.Groups.Clear(); // Add the groups foreach (IGrouping group in groups) { string groupText; if (group.Key is ContractState) groupText = ((ContractState)(object)group.Key).GetHeader(); else if (group.Key is ContractType) groupText = ((ContractType)(object)group.Key).GetDescription(); else if (group.Key is DateTime) groupText = ((DateTime)(object)group.Key).ToShortDateString(); else groupText = group.Key.ToString(); ListViewGroup listGroup = new ListViewGroup(groupText); lvContracts.Groups.Add(listGroup); // Add the items in every group lvContracts.Items.AddRange( group.Select(contract => new { contract, item = new ListViewItem(contract.ContractText, listGroup) { UseItemStyleForSubItems = false, Tag = contract } }).Select(x => CreateSubItems(x.contract, x.item)).ToArray()); } } /// /// Creates the list view sub items. /// /// The contract. /// The item. private ListViewItem CreateSubItems(Contract contract, ListViewItem item) { // Display text as dimmed if the contract is no longer available if (!contract.IsAvailable && !contract.NeedsAttention) item.ForeColor = SystemColors.GrayText; // Add enough subitems to match the number of columns while (item.SubItems.Count < lvContracts.Columns.Count + 1) { item.SubItems.Add(string.Empty); } // Creates the subitems for (int i = 0; i < lvContracts.Columns.Count; i++) { ContractColumn column = (ContractColumn)lvContracts.Columns[i].Tag; SetColumn(contract, item.SubItems[i], column); } // Tooltip var builder = new StringBuilder(); builder.Append($"Issued For: {contract.IssuedFor}").AppendLine(); builder.Append($"Issued: {contract.Issued.ToLocalTime()}").AppendLine(); builder.Append($"Duration: {contract.Duration} "); builder.Append($"Day{(contract.Duration.S())}").AppendLine(); if (contract.ContractType == ContractType.Courier) { builder.Append($"Days To Complete: {contract.DaysToComplete} "); builder.Append($"Day{(contract.DaysToComplete.S())}"); builder.AppendLine(); } string prefix = contract.ContractType == ContractType.Courier ? "Starting " : string.Empty; string startSS = contract.StartStation.SolarSystem?.FullLocation ?? EveMonConstants.UnknownText; builder.Append($"{prefix}Solar System: {startSS}").AppendLine(); builder.Append($"{prefix}Station: {contract.StartStation.Name}").AppendLine(); if (contract.ContractType == ContractType.Courier) { string endSS = contract.EndStation.SolarSystem?.FullLocation ?? EveMonConstants.UnknownText; builder.Append($"Ending Solar System: {endSS}").AppendLine(); builder.Append($"Ending Station: {contract.EndStation.Name}").AppendLine(); } item.ToolTipText = builder.ToString(); return item; } /// /// Adjusts the columns. /// private void AdjustColumns() { foreach (ColumnHeader column in lvContracts.Columns) { if (m_columns[column.Index].Width == -1) m_columns[column.Index].Width = -2; column.Width = m_columns[column.Index].Width; // Due to .NET design we need to prevent the last colummn to resize to the right end // Return if it's not the last column and not set to auto-resize if (column.Index != lvContracts.Columns.Count - 1 || m_columns[column.Index].Width != -2) continue; const int Pad = 4; // Calculate column header text width with padding int columnHeaderWidth = TextRenderer.MeasureText(column.Text, Font).Width + Pad * 2; // If there is an image assigned to the header, add its width with padding if (lvContracts.SmallImageList != null && column.ImageIndex > -1) columnHeaderWidth += lvContracts.SmallImageList.ImageSize.Width + Pad; // Calculate the width of the header and the items of the column int columnMaxWidth = column.ListView.Items.Cast().Select( item => TextRenderer.MeasureText(item.SubItems[column.Index].Text, Font).Width).Concat( new[] { columnHeaderWidth }).Max() + Pad + 1; // Assign the width found column.Width = columnMaxWidth; } } /// /// Updates the item sorter. /// private void UpdateSort() { lvContracts.ListViewItemSorter = new ListViewItemComparerByTag( new ContractComparer(m_sortCriteria, m_sortAscending)); UpdateSortVisualFeedback(); } /// /// Updates the sort feedback (the arrow on the header). /// private void UpdateSortVisualFeedback() { foreach (ColumnHeader columnHeader in lvContracts.Columns.Cast()) { ContractColumn column = (ContractColumn)columnHeader.Tag; if (m_sortCriteria == column) columnHeader.ImageIndex = m_sortAscending ? 0 : 1; else columnHeader.ImageIndex = 2; } } /// /// Formats the price according to the settings. /// /// The price to display. /// The price as a string. private static string FormatPrice(decimal price) { return FormatHelper.FormatIf(Settings.UI.MainWindow.Contracts.NumberAbsFormat, 2, price, AbbreviationFormat.AbbreviationSymbols); } /// /// Updates the listview sub-item. /// /// /// /// private static void SetColumn(Contract contract, ListViewItem.ListViewSubItem item, ContractColumn column) { Station start = contract.StartStation, end = contract.EndStation; switch (column) { case ContractColumn.Status: item.Text = contract.Status.GetDescription(); item.ForeColor = contract.Overdue ? Color.Red : Color.Black; break; case ContractColumn.ContractText: item.Text = contract.ContractText; break; case ContractColumn.Title: item.Text = contract.Description; break; case ContractColumn.ContractType: item.Text = contract.ContractType.GetDescription(); break; case ContractColumn.Issuer: item.Text = contract.Issuer; break; case ContractColumn.Assignee: item.Text = contract.Assignee; break; case ContractColumn.Acceptor: item.Text = contract.Acceptor; break; case ContractColumn.Availability: item.Text = contract.Availability.GetDescription(); break; case ContractColumn.Price: item.Text = FormatPrice(contract.Price); break; case ContractColumn.Buyout: item.Text = FormatPrice(contract.Buyout); break; case ContractColumn.Reward: item.Text = FormatPrice(contract.Reward); break; case ContractColumn.Collateral: item.Text = FormatPrice(contract.Collateral); break; case ContractColumn.Volume: item.Text = FormatPrice(contract.Volume); break; case ContractColumn.StartLocation: item.Text = start.FullLocation; break; case ContractColumn.StartRegion: item.Text = start.SolarSystemChecked.Constellation.Region.Name; break; case ContractColumn.StartSolarSystem: item.Text = start.SolarSystemChecked.Name; item.ForeColor = start.SolarSystemChecked.SecurityLevelColor; break; case ContractColumn.StartStation: item.Text = start.Name; break; case ContractColumn.EndLocation: item.Text = end.FullLocation; break; case ContractColumn.EndRegion: item.Text = end.SolarSystemChecked.Constellation.Region.Name; break; case ContractColumn.EndSolarSystem: item.Text = end.SolarSystemChecked.Name; item.ForeColor = end.SolarSystemChecked.SecurityLevelColor; break; case ContractColumn.EndStation: item.Text = end.Name; break; case ContractColumn.Issued: item.Text = contract.Issued.ToLocalTime().ToShortDateString(); break; case ContractColumn.Accepted: item.Text = contract.Accepted == DateTime.MinValue ? string.Empty : contract. Accepted.ToLocalTime().ToShortDateString(); break; case ContractColumn.Completed: item.Text = contract.Completed == DateTime.MinValue ? string.Empty : contract. Completed.ToLocalTime().ToShortDateString(); break; case ContractColumn.Duration: item.Text = $"{contract.Duration} Day{(contract.Duration.S())}"; break; case ContractColumn.DaysToComplete: item.Text = contract.DaysToComplete == 0 ? string.Empty : $"{contract.DaysToComplete} Day{(contract.DaysToComplete.S())}"; break; case ContractColumn.Expiration: ListViewItemFormat format = FormatExpiration(contract); item.Text = format.Text; item.ForeColor = format.TextColor; break; case ContractColumn.IssuedFor: item.Text = contract.IssuedFor.ToString(); break; default: throw new NotImplementedException(); } } #endregion #region Helper Methods /// /// Checks the given text matches the item. /// /// The x. /// The text. /// /// true if [is text matching] [the specified x]; otherwise, false. /// private static bool IsTextMatching(Contract x, string text) => string.IsNullOrEmpty(text) || x.Status.GetDescription().ToUpperInvariant().Contains(text, ignoreCase: true) || x.ContractText.ToUpperInvariant().Contains(text, ignoreCase: true) || x.ContractType.GetDescription().ToUpperInvariant().Contains(text, ignoreCase: true) || x.Issuer.ToUpperInvariant().Contains(text, ignoreCase: true) || x.Assignee.ToUpperInvariant().Contains(text, ignoreCase: true) || x.Acceptor.ToUpperInvariant().Contains(text, ignoreCase: true) || x.Description.ToUpperInvariant().Contains(text, ignoreCase: true) || x.Availability.GetDescription().ToUpperInvariant().Contains(text, ignoreCase: true) || x.StartStation.Name.ToUpperInvariant().Contains(text, ignoreCase: true) || x.StartStation.SolarSystemChecked.Name.ToUpperInvariant().Contains(text, ignoreCase: true) || x.StartStation.SolarSystemChecked.Constellation.Name.ToUpperInvariant().Contains(text, ignoreCase: true) || x.StartStation.SolarSystemChecked.Constellation.Region.Name.ToUpperInvariant().Contains(text, ignoreCase: true); /// /// Gets the text and formatting for the expiration cell /// /// Contract to generate a format for /// ListViewItemFormat object describing the format of the cell private static ListViewItemFormat FormatExpiration(Contract contract) { // Initialize to sensible defaults ListViewItemFormat format = new ListViewItemFormat { TextColor = Color.Black, Text = contract.Expiration.ToRemainingTimeShortDescription(DateTimeKind.Utc) .ToUpper(CultureConstants.DefaultCulture) }; // Contract is expiring soon if (contract.IsAvailable && contract.Expiration < DateTime.UtcNow.AddDays(1)) format.TextColor = Color.DarkOrange; // We have all the information for formatting an available order if (contract.IsAvailable) return format; // Contract isn't available so lets format it as such format.Text = contract.State.ToString(); if (contract.State == ContractState.Expired) format.TextColor = Color.Red; if (contract.State == ContractState.Rejected || contract.State == ContractState.Failed) format.TextColor = Color.DarkRed; if (contract.State == ContractState.Finished) format.TextColor = Color.DarkGreen; return format; } /// /// Shows the contract details. /// private void ShowContractDetails() { var items = lvContracts.SelectedItems; if (items.Count > 0) { // Fixes a bug where double clicks as the list was updating would crash var contract = items[0].Tag as Contract; if (contract != null && contract.ContractType == ContractType.Courier || contract.ContractItems.Any()) WindowsFactory.ShowByTag(contract); } } #endregion #region Local Event Handlers /// /// Exports item info to CSV format. /// /// /// private void exportToCSVToolStripMenuItem_Click(object sender, EventArgs e) { ListViewExporter.CreateCSV(lvContracts); } /// /// On double click shows the contract details window. /// /// The source of the event. /// The instance containing the event data. private void lvContracts_DoubleClick(object sender, EventArgs e) { ShowContractDetails(); } /// /// On column reorder we update the settings. /// /// /// private void lvContracts_ColumnReordered(object sender, ColumnReorderedEventArgs e) { m_columnsChanged = true; } /// /// When the user manually resizes a column, we make sure to update the column preferences. /// /// /// private void lvContracts_ColumnWidthChanged(object sender, ColumnWidthChangedEventArgs e) { if (m_isUpdatingColumns || m_columns.Count <= e.ColumnIndex) return; if (m_columns[e.ColumnIndex].Width == lvContracts.Columns[e.ColumnIndex].Width) return; m_columns[e.ColumnIndex].Width = lvContracts.Columns[e.ColumnIndex].Width; m_columnsChanged = true; } /// /// When the user clicks a column header, we update the sorting. /// /// /// private void lvContracts_ColumnClick(object sender, ColumnClickEventArgs e) { ContractColumn column = (ContractColumn)lvContracts.Columns[e.Column].Tag; if (m_sortCriteria == column) m_sortAscending = !m_sortAscending; else { m_sortCriteria = column; m_sortAscending = true; } m_isUpdatingColumns = true; // Updates the item sorter UpdateSort(); m_isUpdatingColumns = false; } /// /// When the mouse gets pressed, we change the cursor. /// /// The source of the event. /// The instance containing the event data. private void listView_MouseDown(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Right) return; lvContracts.Cursor = Cursors.Default; } /// /// When the mouse moves over the list, we show the item's tooltip if over an item. /// /// The source of the event. /// The instance containing the event data. private void listView_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) return; lvContracts.Cursor = CustomCursors.ContextMenu; ListViewItem item = lvContracts.GetItemAt(e.Location.X, e.Location.Y); if (item == null) { m_tooltip.Hide(); return; } m_tooltip.Show(item.ToolTipText, e.Location); } /// /// When the mouse leaves the list, we hide the item's tooltip. /// /// The source of the event. /// The instance containing the event data. private void listView_MouseLeave(object sender, EventArgs e) { m_tooltip.Hide(); } /// /// Upon selected shows the contract details window. /// /// The source of the event. /// The instance containing the event data. private void showDetailsToolStripMenuItem_Click(object sender, EventArgs e) { ShowContractDetails(); } /// /// Shows the context menu only when a contract is selected. /// /// The source of the event. /// The instance containing the event data. private void contextMenu_Opening(object sender, CancelEventArgs e) { bool visible = lvContracts.SelectedItems.Count != 0; showDetailsToolStripMenuItem.Visible = showDetailsMenuSeparator.Visible = showInBrowserMenuItem.Visible = showInBrowserMenuSeparator.Visible = visible; if (!visible) return; Contract contract = lvContracts.SelectedItems[0]?.Tag as Contract; if (contract?.ContractItems == null) return; visible = contract.ContractItems.Count() == 1; showInBrowserMenuItem.Visible = showInBrowserMenuSeparator.Visible = visible; if (!visible) return; Item contractItem = contract.ContractItems.FirstOrDefault()?.Item; if (contractItem == null) return; Blueprint blueprint = StaticBlueprints.GetBlueprintByID(contractItem.ID); Ship ship = contractItem as Ship; Skill skill = Character.Skills[contractItem.ID]; if (skill == Skill.UnknownSkill) skill = null; string text = ship != null ? "Ship" : blueprint != null ? "Blueprint" : skill != null ? "Skill" : "Item"; showInBrowserMenuItem.Text = $"Show In {text} Browser..."; } /// /// Handles the Click event of the showInBrowserMenuItem control. /// /// The source of the event. /// The instance containing the event data. private void showInBrowserMenuItem_Click(object sender, EventArgs e) { Contract contract = lvContracts.SelectedItems[0]?.Tag as Contract; Item contractItem = contract?.ContractItems?.FirstOrDefault()?.Item; if (contractItem == null) return; Ship ship = contractItem as Ship; Blueprint blueprint = StaticBlueprints.GetBlueprintByID(contractItem.ID); Skill skill = Character.Skills[contractItem.ID]; if (skill == Skill.UnknownSkill) skill = null; PlanWindow planWindow = PlanWindow.ShowPlanWindow(Character); if (ship != null) planWindow.ShowShipInBrowser(ship); else if (blueprint != null) planWindow.ShowBlueprintInBrowser(blueprint); else if (skill != null) planWindow.ShowSkillInBrowser(skill); else planWindow.ShowItemInBrowser(contractItem); } # endregion #region Global Events /// /// On timer tick, we update the column settings if any changes have been made to them. /// /// /// private void EveMonClient_TimerTick(object sender, EventArgs e) { if (!Visible || !m_columnsChanged) return; Settings.UI.MainWindow.Contracts.Columns.Clear(); Settings.UI.MainWindow.Contracts.Columns.AddRange(Columns.Cast()); // Recreate the columns Columns = Settings.UI.MainWindow.Contracts.Columns; m_columnsChanged = false; } /// /// When the contracts change, update the list. /// /// The source of the event. /// The instance containing the event data. private void EveMonClient_ContractsUpdated(object sender, CharacterChangedEventArgs e) { if (Character == null || e.Character != Character) return; Contracts = Character.Contracts; UpdateColumns(); } /// /// When the character contract items are downloaded, update the list. /// /// The source of the event. /// The instance containing the event data. private void EveMonClient_ContractItemsDownloaded(object sender, CharacterChangedEventArgs e) { if (Character == null || e.Character != Character) return; UpdateContent(); } /// /// When the EveIDToName list updates, update the list. /// /// The source of the event. /// The instance containing the event data. private void EveMonClient_EveIDToNameUpdated(object sender, EventArgs e) { UpdateColumns(); } /// /// When Conquerable Station List updates, update the list. /// /// The source of the event. /// The instance containing the event data. private void EveMonClient_ConquerableStationListUpdated(object sender, EventArgs e) { if (Character == null) return; foreach (Contract contract in m_list) { contract.UpdateStation(); } UpdateColumns(); } # endregion #region Helper Classes private class ListViewItemFormat { /// /// Gets or sets the color of the text. /// /// The color of the text. public Color TextColor { get; set; } /// /// Gets or sets the text. /// /// The text. public string Text { get; set; } } #endregion } } ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterContractsList.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 103, 17 17, 17 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADi AAAAAk1TRnQBSQFMAgEBAwEAAXwBBQF8AQUBEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA AwABEAMAAQEBAAEQBgABCP8A/wD/AP8A/wD/AP8A/wAaAAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEB AQABAQUAAYAXAAP/AQAG/wIABv8CAAb/AgAG/wIABv8CAAb/AgAB8AEPAf4BfwL/AgAB+AEfAfwBPwL/ AgAB/AE/AfgBHwL/AgAB/gF/AfABDwL/AgAG/wIABv8CAAb/AgAG/wIABv8CAAb/AgAL ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterEmploymentHistoryList.Designer.cs ================================================ namespace EVEMon.CharacterMonitoring { internal sealed partial class CharacterEmploymentHistoryList { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Component Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.noEmploymentHistoryLabel = new System.Windows.Forms.Label(); this.lbEmploymentHistory = new EVEMon.Common.Controls.NoFlickerListBox(); this.SuspendLayout(); // // noEmploymentHistoryLabel // this.noEmploymentHistoryLabel.BackColor = System.Drawing.Color.WhiteSmoke; this.noEmploymentHistoryLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.noEmploymentHistoryLabel.ForeColor = System.Drawing.SystemColors.GrayText; this.noEmploymentHistoryLabel.Location = new System.Drawing.Point(0, 0); this.noEmploymentHistoryLabel.Name = "noEmploymentHistoryLabel"; this.noEmploymentHistoryLabel.Size = new System.Drawing.Size(328, 372); this.noEmploymentHistoryLabel.TabIndex = 3; this.noEmploymentHistoryLabel.Text = "Employment History information not available."; this.noEmploymentHistoryLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // lbEmploymentHistory // this.lbEmploymentHistory.BorderStyle = System.Windows.Forms.BorderStyle.None; this.lbEmploymentHistory.Dock = System.Windows.Forms.DockStyle.Fill; this.lbEmploymentHistory.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable; this.lbEmploymentHistory.FormattingEnabled = true; this.lbEmploymentHistory.IntegralHeight = false; this.lbEmploymentHistory.ItemHeight = 15; this.lbEmploymentHistory.Location = new System.Drawing.Point(0, 0); this.lbEmploymentHistory.Margin = new System.Windows.Forms.Padding(0); this.lbEmploymentHistory.Name = "lbEmploymentHistory"; this.lbEmploymentHistory.Size = new System.Drawing.Size(328, 372); this.lbEmploymentHistory.TabIndex = 3; this.lbEmploymentHistory.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.lbEmploymentHistory_DrawItem); this.lbEmploymentHistory.MeasureItem += new System.Windows.Forms.MeasureItemEventHandler(this.lbEmploymentHistory_MeasureItem); this.lbEmploymentHistory.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.lbEmploymentHistory_MouseWheel); // // CharacterEmploymentHistoryList // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Controls.Add(this.noEmploymentHistoryLabel); this.Controls.Add(this.lbEmploymentHistory); this.Name = "CharacterEmploymentHistoryList"; this.Size = new System.Drawing.Size(328, 372); this.ResumeLayout(false); } #endregion private System.Windows.Forms.Label noEmploymentHistoryLabel; private Common.Controls.NoFlickerListBox lbEmploymentHistory; } } ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterEmploymentHistoryList.cs ================================================ using System; using System.Drawing; using System.Linq; using System.Windows.Forms; using EVEMon.Common; using EVEMon.Common.Controls; using EVEMon.Common.CustomEventArgs; using EVEMon.Common.Enumerations; using EVEMon.Common.Extensions; using EVEMon.Common.Factories; using EVEMon.Common.Models; namespace EVEMon.CharacterMonitoring { internal sealed partial class CharacterEmploymentHistoryList : UserControl { #region Fields private const int PadTop = 2; private const int PadLeft = 6; private const TextFormatFlags TextFormat = TextFormatFlags.NoPadding | TextFormatFlags.NoClipping; private const string RecordDateFromText = "From"; private const string RecordDateToText = "to"; private const string RecordDateTodayText = "this day"; // Employment History drawing - Employment record private const int EmploymentRecordDetailHeight = 34; private readonly Font m_recordFont; private readonly Font m_recordBoldFont; #endregion #region Constructor /// /// Initializes a new instance of the class. /// public CharacterEmploymentHistoryList() { InitializeComponent(); lbEmploymentHistory.Visible = false; m_recordFont = FontFactory.GetFont("Tahoma", 8.25F); m_recordBoldFont = FontFactory.GetFont("Tahoma", 8.25F, FontStyle.Bold); noEmploymentHistoryLabel.Font = FontFactory.GetFont("Tahoma", 11.25F, FontStyle.Bold); } #endregion #region Properties /// /// Gets the character associated with this monitor. /// internal CCPCharacter Character { get; set; } /// /// Gets the item's height. /// private int GetItemHeight => Math.Max(m_recordFont.Height * 2 + PadTop * 2, EmploymentRecordDetailHeight); #endregion #region Inherited events /// /// On load subscribe the events. /// /// An that contains the event data. protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (DesignMode || this.IsDesignModeHosted()) return; EveMonClient.CharacterInfoUpdated += EveMonClient_CharacterInfoUpdated; EveMonClient.EveIDToNameUpdated += EveMonClient_EveIDToNameUpdated; EveMonClient.SettingsChanged += EveMonClient_SettingsChanged; Disposed += OnDisposed; } /// /// Unsubscribe events on disposing. /// /// /// private void OnDisposed(object sender, EventArgs e) { EveMonClient.CharacterInfoUpdated -= EveMonClient_CharacterInfoUpdated; EveMonClient.EveIDToNameUpdated -= EveMonClient_EveIDToNameUpdated; EveMonClient.SettingsChanged -= EveMonClient_SettingsChanged; Disposed -= OnDisposed; } /// /// When the control becomes visible again, we update the content. /// /// protected override void OnVisibleChanged(EventArgs e) { base.OnVisibleChanged(e); if (Visible) UpdateContent(); } #endregion #region Content Management /// /// Updates all the content. /// private void UpdateContent() { // Returns if not visible if (!Visible) return; // When no character, we just hide the list if (Character == null) { noEmploymentHistoryLabel.Visible = true; lbEmploymentHistory.Visible = false; return; } int scrollBarPosition = lbEmploymentHistory.TopIndex; // Update the skills list lbEmploymentHistory.BeginUpdate(); try { // Add items in the list lbEmploymentHistory.Items.Clear(); foreach (EmploymentRecord employmentRecord in Character.EmploymentHistory) { employmentRecord.EmploymentRecordImageUpdated += record_EmploymentRecordImageUpdated; lbEmploymentHistory.Items.Add(employmentRecord); } // Display or hide the "no skills" label. noEmploymentHistoryLabel.Visible = !Character.EmploymentHistory.Any(); lbEmploymentHistory.Visible = Character.EmploymentHistory.Any(); // Invalidate display lbEmploymentHistory.Invalidate(); } finally { lbEmploymentHistory.EndUpdate(); lbEmploymentHistory.TopIndex = scrollBarPosition; } } #endregion #region Drawing /// /// Handles the MeasureItem event of the lbEmploymentHistory control. /// /// The source of the event. /// The instance containing the event data. private void lbEmploymentHistory_MeasureItem(object sender, MeasureItemEventArgs e) { if (e.Index < 0) return; e.ItemHeight = GetItemHeight; } /// /// Draws the list item for the given standing /// /// The source of the event. /// The instance containing the event data. private void lbEmploymentHistory_DrawItem(object sender, DrawItemEventArgs e) { if (e.Index < 0 || e.Index >= lbEmploymentHistory.Items.Count) return; Graphics g = e.Graphics; EmploymentRecord record = (EmploymentRecord)lbEmploymentHistory.Items[e.Index]; EmploymentRecord previousRecord = e.Index == 0 ? null : (EmploymentRecord)lbEmploymentHistory.Items[e.Index - 1]; // Draw background g.FillRectangle(e.Index % 2 == 0 ? Brushes.White : Brushes.LightGray, e.Bounds); // Measure texts DateTime dt = previousRecord?.StartDate ?? DateTime.UtcNow; string recordPeriodText = $"( {dt.Subtract(record.StartDate).ToDescriptiveText(DescriptiveTextOptions.SpaceBetween, false)} )"; string recordStartDateText = record.StartDate.ToLocalTime().DateTimeToDotFormattedString(); string recordEndDateText = previousRecord == null ? RecordDateTodayText : previousRecord.StartDate.ToLocalTime().DateTimeToDotFormattedString(); Size recordCorporationNameTextSize = TextRenderer.MeasureText(g, record.CorporationName, m_recordBoldFont, Size.Empty, TextFormat); Size recordPeriodTextSize = TextRenderer.MeasureText(g, recordPeriodText, m_recordFont, Size.Empty, TextFormat); Size recordFromTextSize = TextRenderer.MeasureText(g, RecordDateFromText, m_recordFont, Size.Empty, TextFormat); Size recordStartDateTextSize = TextRenderer.MeasureText(g, recordStartDateText, m_recordBoldFont, Size.Empty, TextFormat); Size recordToTextSize = TextRenderer.MeasureText(g, RecordDateToText, m_recordFont, Size.Empty, TextFormat); Size recordEndDateTextSize = TextRenderer.MeasureText(g, recordEndDateText, previousRecord == null ? m_recordFont : m_recordBoldFont, Size.Empty, TextFormat); // Draw texts TextRenderer.DrawText(g, record.CorporationName, m_recordBoldFont, new Rectangle( e.Bounds.Left + PadLeft * 7, e.Bounds.Top + PadTop, recordCorporationNameTextSize.Width + PadLeft, recordCorporationNameTextSize.Height), Color.Black); TextRenderer.DrawText(g, RecordDateFromText, m_recordFont, new Rectangle( e.Bounds.Left + PadLeft * 7, e.Bounds.Top + PadTop + recordCorporationNameTextSize.Height, recordFromTextSize.Width + PadLeft, recordFromTextSize.Height), Color.Black); TextRenderer.DrawText(g, recordStartDateText, m_recordBoldFont, new Rectangle( e.Bounds.Left + PadLeft * 7 + recordFromTextSize.Width + PadLeft, e.Bounds.Top + PadTop + recordCorporationNameTextSize.Height, recordStartDateTextSize.Width + PadLeft, recordStartDateTextSize.Height), Color.Black); TextRenderer.DrawText(g, RecordDateToText, m_recordFont, new Rectangle( e.Bounds.Left + PadLeft * 7 + recordFromTextSize.Width + recordStartDateTextSize.Width + PadLeft * 2, e.Bounds.Top + PadTop + recordCorporationNameTextSize.Height, recordToTextSize.Width + PadLeft, recordToTextSize.Height), Color.Black); TextRenderer.DrawText(g, recordEndDateText, previousRecord == null ? m_recordFont : m_recordBoldFont, new Rectangle( e.Bounds.Left + PadLeft * 7 + recordFromTextSize.Width + recordStartDateTextSize.Width + recordToTextSize.Width + PadLeft * 3, e.Bounds.Top + PadTop + recordCorporationNameTextSize.Height, recordEndDateTextSize.Width + PadLeft, recordEndDateTextSize.Height), Color.Black); TextRenderer.DrawText(g, recordPeriodText, m_recordFont, new Rectangle( e.Bounds.Left + PadLeft * 7 + recordFromTextSize.Width + recordStartDateTextSize.Width + recordToTextSize.Width + recordEndDateTextSize.Width + PadLeft * 4, e.Bounds.Top + PadTop + recordCorporationNameTextSize.Height, recordPeriodTextSize.Width + PadLeft, recordPeriodTextSize.Height), Color.Black); // Draw the corporation image if (Settings.UI.SafeForWork) return; g.DrawImage(record.CorporationImage, new Rectangle(e.Bounds.Left + PadLeft / 2, EmploymentRecordDetailHeight / 2 - record.CorporationImage.Height / 2 + e.Bounds.Top, record.CorporationImage.Width, record.CorporationImage.Height)); } /// /// Gets the preferred size from the preferred size of the list. /// /// /// public override Size GetPreferredSize(Size proposedSize) => lbEmploymentHistory.GetPreferredSize(proposedSize); #endregion #region Local events /// /// When the image updates, we redraw the list. /// /// The source of the event. /// The instance containing the event data. private void record_EmploymentRecordImageUpdated(object sender, EventArgs e) { // Force to redraw lbEmploymentHistory.Invalidate(); } /// /// Handles the MouseWheel event of the lbEmploymentHistory control. /// /// The source of the event. /// The instance containing the event data. private void lbEmploymentHistory_MouseWheel(object sender, MouseEventArgs e) { if (e.Delta == 0) return; // Update the drawing based upon the mouse wheel scrolling int numberOfItemLinesToMove = e.Delta * SystemInformation.MouseWheelScrollLines / Math.Abs(e.Delta); int lines = numberOfItemLinesToMove; if (lines == 0) return; // Compute the number of lines to move int direction = lines / Math.Abs(lines); int[] numberOfPixelsToMove = new int[lines * direction]; for (int i = 1; i <= Math.Abs(lines); i++) { object item = null; // Going up if (direction == Math.Abs(direction)) { // Retrieve the next top item if (lbEmploymentHistory.TopIndex - i >= 0) item = lbEmploymentHistory.Items[lbEmploymentHistory.TopIndex - i]; } // Going down else { // Compute the height of the items from current the topindex (included) int height = 0; for (int j = lbEmploymentHistory.TopIndex + i - 1; j < lbEmploymentHistory.Items.Count; j++) { height += GetItemHeight; } // Retrieve the next bottom item if (height > lbEmploymentHistory.ClientSize.Height) item = lbEmploymentHistory.Items[lbEmploymentHistory.TopIndex + i - 1]; } // If found a new item as top or bottom if (item != null) numberOfPixelsToMove[i - 1] = GetItemHeight * direction; else lines -= direction; } // Scroll if (lines != 0) lbEmploymentHistory.Invalidate(); } #endregion #region Global events /// /// When the character standings update, we update the content. /// /// /// private void EveMonClient_CharacterInfoUpdated(object sender, CharacterChangedEventArgs e) { if (e.Character != Character) return; UpdateContent(); } /// /// When the settings change, we update the content. /// /// In case 'SafeForWork' gets enabled. /// The source of the event. /// The instance containing the event data. private void EveMonClient_SettingsChanged(object sender, EventArgs e) { UpdateContent(); } /// /// When the EveIDToName updates, we refresh the content. /// /// The source of the event. /// The instance containing the event data. private void EveMonClient_EveIDToNameUpdated(object sender, EventArgs e) { // Force to redraw lbEmploymentHistory.Invalidate(); } #endregion } } ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterEmploymentHistoryList.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterEveMailMessagesList.Designer.cs ================================================ using EVEMon.Controls; namespace EVEMon.CharacterMonitoring { internal sealed partial class CharacterEveMailMessagesList { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Component Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CharacterEveMailMessagesList)); this.ilIcons = new System.Windows.Forms.ImageList(this.components); this.noEVEMailMessagesLabel = new System.Windows.Forms.Label(); this.contextMenu = new System.Windows.Forms.ContextMenuStrip(this.components); this.mailReadLocal = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator = new System.Windows.Forms.ToolStripSeparator(); this.exportToCSVToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.splitContainerMailMessages = new System.Windows.Forms.SplitContainer(); this.lvMailMessages = new System.Windows.Forms.ListView(); this.chSenderName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chTitle = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chSentDate = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chToCharacterIDs = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chToCorpOrAlliance = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chToListID = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.eveMailReadingPane = new EVEMon.Controls.ReadingPane(); this.timer = new System.Windows.Forms.Timer(this.components); this.contextMenu.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.splitContainerMailMessages)).BeginInit(); this.splitContainerMailMessages.Panel1.SuspendLayout(); this.splitContainerMailMessages.Panel2.SuspendLayout(); this.splitContainerMailMessages.SuspendLayout(); this.SuspendLayout(); // // ilIcons // this.ilIcons.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilIcons.ImageStream"))); this.ilIcons.TransparentColor = System.Drawing.Color.Transparent; this.ilIcons.Images.SetKeyName(0, "arrow_up.png"); this.ilIcons.Images.SetKeyName(1, "arrow_down.png"); this.ilIcons.Images.SetKeyName(2, "16x16Transparant.png"); // // noEVEMailMessagesLabel // this.noEVEMailMessagesLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.noEVEMailMessagesLabel.ForeColor = System.Drawing.SystemColors.GrayText; this.noEVEMailMessagesLabel.Location = new System.Drawing.Point(0, 0); this.noEVEMailMessagesLabel.Name = "noEVEMailMessagesLabel"; this.noEVEMailMessagesLabel.Size = new System.Drawing.Size(454, 434); this.noEVEMailMessagesLabel.TabIndex = 1; this.noEVEMailMessagesLabel.Text = "No EVE mail messages are available."; this.noEVEMailMessagesLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // contextMenu // this.contextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.mailReadLocal, this.toolStripSeparator, this.exportToCSVToolStripMenuItem}); this.contextMenu.Name = "mailListContextMenu"; this.contextMenu.Size = new System.Drawing.Size(157, 76); this.contextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenu_Opening); // // mailReadLocal // this.mailReadLocal.Name = "mailReadLocal"; this.mailReadLocal.Size = new System.Drawing.Size(156, 22); this.mailReadLocal.Text = "Read"; this.mailReadLocal.Click += new System.EventHandler(this.mailReadLocal_Click); // // toolStripSeparator // this.toolStripSeparator.Name = "toolStripSeparator"; this.toolStripSeparator.Size = new System.Drawing.Size(153, 6); // // exportToCSVToolStripMenuItem // this.exportToCSVToolStripMenuItem.Name = "exportToCSVToolStripMenuItem"; this.exportToCSVToolStripMenuItem.Size = new System.Drawing.Size(156, 22); this.exportToCSVToolStripMenuItem.Text = "Export To CSV..."; this.exportToCSVToolStripMenuItem.Click += new System.EventHandler(this.exportToCSVToolStripMenuItem_Click); // // splitContainerMailMessages // this.splitContainerMailMessages.BackColor = System.Drawing.SystemColors.ControlDark; this.splitContainerMailMessages.Dock = System.Windows.Forms.DockStyle.Fill; this.splitContainerMailMessages.Location = new System.Drawing.Point(0, 0); this.splitContainerMailMessages.Name = "splitContainerMailMessages"; this.splitContainerMailMessages.Orientation = System.Windows.Forms.Orientation.Horizontal; // // splitContainerMailMessages.Panel1 // this.splitContainerMailMessages.Panel1.Controls.Add(this.lvMailMessages); // // splitContainerMailMessages.Panel2 // this.splitContainerMailMessages.Panel2.Controls.Add(this.eveMailReadingPane); this.splitContainerMailMessages.Size = new System.Drawing.Size(454, 434); this.splitContainerMailMessages.SplitterDistance = 288; this.splitContainerMailMessages.SplitterWidth = 6; this.splitContainerMailMessages.TabIndex = 2; // // lvMailMessages // this.lvMailMessages.BorderStyle = System.Windows.Forms.BorderStyle.None; this.lvMailMessages.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.chSenderName, this.chTitle, this.chSentDate, this.chToCharacterIDs, this.chToCorpOrAlliance, this.chToListID}); this.lvMailMessages.ContextMenuStrip = this.contextMenu; this.lvMailMessages.Dock = System.Windows.Forms.DockStyle.Fill; this.lvMailMessages.FullRowSelect = true; this.lvMailMessages.HideSelection = false; this.lvMailMessages.Location = new System.Drawing.Point(0, 0); this.lvMailMessages.MultiSelect = false; this.lvMailMessages.Name = "lvMailMessages"; this.lvMailMessages.Size = new System.Drawing.Size(454, 288); this.lvMailMessages.SmallImageList = this.ilIcons; this.lvMailMessages.TabIndex = 0; this.lvMailMessages.UseCompatibleStateImageBehavior = false; this.lvMailMessages.View = System.Windows.Forms.View.Details; this.lvMailMessages.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.lvMailMessages_ColumnClick); this.lvMailMessages.ColumnReordered += new System.Windows.Forms.ColumnReorderedEventHandler(this.lvMailMessages_ColumnReordered); this.lvMailMessages.ColumnWidthChanged += new System.Windows.Forms.ColumnWidthChangedEventHandler(this.lvMailMessages_ColumnWidthChanged); this.lvMailMessages.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(this.lvMailMessages_ItemSelectionChanged); this.lvMailMessages.DoubleClick += new System.EventHandler(this.lvMailMessages_DoubleClick); // // chSenderName // this.chSenderName.Text = "From"; // // chTitle // this.chTitle.Text = "Subject"; this.chTitle.Width = 121; // // chSentDate // this.chSentDate.Text = "Received"; this.chSentDate.Width = 90; // // chToCharacterIDs // this.chToCharacterIDs.Text = "To"; // // chToCorpOrAlliance // this.chToCorpOrAlliance.Text = "To Corp Or Alliance"; // // chToListID // this.chToListID.Text = "To Mailing List"; // // eveMailReadingPane // this.eveMailReadingPane.Dock = System.Windows.Forms.DockStyle.Fill; this.eveMailReadingPane.Location = new System.Drawing.Point(0, 0); this.eveMailReadingPane.Name = "eveMailReadingPane"; this.eveMailReadingPane.Size = new System.Drawing.Size(454, 140); this.eveMailReadingPane.TabIndex = 0; // // timer // this.timer.Tick += new System.EventHandler(this.timer_Tick); // // CharacterEveMailMessagesList // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Controls.Add(this.splitContainerMailMessages); this.Controls.Add(this.noEVEMailMessagesLabel); this.Name = "CharacterEveMailMessagesList"; this.Size = new System.Drawing.Size(454, 434); this.contextMenu.ResumeLayout(false); this.splitContainerMailMessages.Panel1.ResumeLayout(false); this.splitContainerMailMessages.Panel2.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.splitContainerMailMessages)).EndInit(); this.splitContainerMailMessages.ResumeLayout(false); this.ResumeLayout(false); } #endregion private System.Windows.Forms.Label noEVEMailMessagesLabel; private System.Windows.Forms.ImageList ilIcons; private System.Windows.Forms.ColumnHeader chSenderName; private System.Windows.Forms.ColumnHeader chTitle; private System.Windows.Forms.ColumnHeader chSentDate; private System.Windows.Forms.ColumnHeader chToCorpOrAlliance; private System.Windows.Forms.ColumnHeader chToCharacterIDs; private System.Windows.Forms.ColumnHeader chToListID; private System.Windows.Forms.SplitContainer splitContainerMailMessages; private System.Windows.Forms.ListView lvMailMessages; private System.Windows.Forms.Timer timer; private ReadingPane eveMailReadingPane; private System.Windows.Forms.ContextMenuStrip contextMenu; private System.Windows.Forms.ToolStripMenuItem mailReadLocal; private System.Windows.Forms.ToolStripSeparator toolStripSeparator; private System.Windows.Forms.ToolStripMenuItem exportToCSVToolStripMenuItem; } } ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterEveMailMessagesList.cs ================================================ using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Linq; using System.Windows.Forms; using EVEMon.Common; using EVEMon.Common.Collections; using EVEMon.Common.Constants; using EVEMon.Common.Controls; using EVEMon.Common.CustomEventArgs; using EVEMon.Common.Enumerations; using EVEMon.Common.Enumerations.UISettings; using EVEMon.Common.Extensions; using EVEMon.Common.Factories; using EVEMon.Common.Helpers; using EVEMon.Common.Interfaces; using EVEMon.Common.Models; using EVEMon.Common.Models.Comparers; using EVEMon.Common.Notifications; using EVEMon.Common.Serialization.Eve; using EVEMon.Common.SettingsObjects; using EVEMon.DetailsWindow; namespace EVEMon.CharacterMonitoring { internal sealed partial class CharacterEveMailMessagesList : UserControl, IListView { #region Fields private readonly List m_columns = new List(); private readonly List m_list = new List(); private EVEMailMessagesGrouping m_grouping; private EveMailMessageColumn m_sortCriteria; private ReadingPanePositioning m_panePosition; private string m_textFilter = string.Empty; private bool m_sortAscending; private bool m_columnsChanged; private bool m_isUpdatingColumns; private bool m_init; #endregion #region Constructor /// /// Constructor. /// public CharacterEveMailMessagesList() { InitializeComponent(); eveMailReadingPane.HidePane(); splitContainerMailMessages.Hide(); lvMailMessages.Hide(); lvMailMessages.AllowColumnReorder = true; lvMailMessages.Columns.Clear(); mailReadLocal.Font = FontFactory.GetFont("Segoe UI", 9F, FontStyle.Bold); noEVEMailMessagesLabel.Font = FontFactory.GetFont("Tahoma", 11.25F, FontStyle.Bold); ListViewHelper.EnableDoubleBuffer(lvMailMessages); lvMailMessages.MouseDown += listView_MouseDown; lvMailMessages.MouseMove += listView_MouseMove; } #endregion #region Properties /// /// Gets the character associated with this monitor. /// internal CCPCharacter Character { get; set; } /// /// Gets or sets the text filter. /// [Browsable(false)] public string TextFilter { get { return m_textFilter; } set { m_textFilter = value; if (m_init) UpdateColumns(); } } /// /// Gets or sets the grouping mode. /// [Browsable(false)] public Enum Grouping { get { return m_grouping; } set { m_grouping = (EVEMailMessagesGrouping)value; if (m_init) UpdateColumns(); } } /// /// Gets or sets the pane position. /// internal ReadingPanePositioning PanePosition { get { return m_panePosition; } set { m_panePosition = value; UpdatePanePosition(); } } /// /// Gets or sets the enumeration of EVE mail messages to display. /// private IEnumerable EVEMailMessages { get { return m_list; } set { m_list.Clear(); if (value == null) return; m_list.AddRange(value); } } /// /// Gets or sets the settings used for columns. /// [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public IEnumerable Columns { get { // Add the visible columns; matching the display order List newColumns = new List(); foreach (ColumnHeader header in lvMailMessages.Columns.Cast().OrderBy(x => x.DisplayIndex)) { EveMailMessageColumnSettings columnSetting = m_columns.First(x => x.Column == (EveMailMessageColumn)header.Tag); if (columnSetting.Width > -1) columnSetting.Width = header.Width; newColumns.Add(columnSetting); } // Then add the other columns newColumns.AddRange(m_columns.Where(x => !x.Visible)); return newColumns; } set { m_columns.Clear(); if (value != null) m_columns.AddRange(value.Cast()); if (m_init) UpdateColumns(); } } #endregion # region Inherited Events /// /// On load subscribe the events. /// /// An that contains the event data. protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (DesignMode || this.IsDesignModeHosted()) return; EveMonClient.TimerTick += EveMonClient_TimerTick; EveMonClient.CharacterEVEMailMessagesUpdated += EveMonClient_CharacterEVEMailMessagesUpdated; EveMonClient.CharacterEVEMailingListsUpdated += EveMonClient_CharacterEVEMailingListsUpdated; EveMonClient.CharacterEVEMailBodyDownloaded += EveMonClient_CharacterEVEMailBodyDownloaded; EveMonClient.EveIDToNameUpdated += EveMonClient_EveIDToNameUpdated; EveMonClient.NotificationSent += EveMonClient_NotificationSent; Disposed += OnDisposed; } /// /// Unsubscribe events on disposing. /// /// /// private void OnDisposed(object sender, EventArgs e) { EveMonClient.TimerTick -= EveMonClient_TimerTick; EveMonClient.CharacterEVEMailMessagesUpdated -= EveMonClient_CharacterEVEMailMessagesUpdated; EveMonClient.CharacterEVEMailingListsUpdated -= EveMonClient_CharacterEVEMailingListsUpdated; EveMonClient.CharacterEVEMailBodyDownloaded -= EveMonClient_CharacterEVEMailBodyDownloaded; EveMonClient.EveIDToNameUpdated -= EveMonClient_EveIDToNameUpdated; EveMonClient.NotificationSent -= EveMonClient_NotificationSent; Disposed -= OnDisposed; } /// /// When the control becomes visible again, we update the content. /// /// protected override void OnVisibleChanged(EventArgs e) { base.OnVisibleChanged(e); if (DesignMode || this.IsDesignModeHosted() || Character == null || !Visible) return; // Prevents the properties to call UpdateColumns() till we set all properties m_init = false; lvMailMessages.Visible = false; eveMailReadingPane.HidePane(); EVEMailMessages = Character?.EVEMailMessages; Columns = Settings.UI.MainWindow.EVEMailMessages.Columns; Grouping = Character?.UISettings.EVEMailMessagesGroupBy; TextFilter = string.Empty; PanePosition = Settings.UI.MainWindow.EVEMailMessages.ReadingPanePosition; UpdateColumns(); m_init = true; UpdateListVisibility(); } # endregion #region Update Methods /// /// Autoresizes the columns. /// public void AutoResizeColumns() { m_columns.ForEach(column => { if (column.Visible) column.Width = -2; }); UpdateColumns(); } /// /// Updates the columns. /// private void UpdateColumns() { // Returns if not visible if (!Visible) return; lvMailMessages.BeginUpdate(); m_isUpdatingColumns = true; try { lvMailMessages.Columns.Clear(); lvMailMessages.Groups.Clear(); lvMailMessages.Items.Clear(); foreach (EveMailMessageColumnSettings column in m_columns.Where(x => x.Visible)) { ColumnHeader header = lvMailMessages.Columns.Add(column.Column.GetHeader(), column.Width); header.Tag = column.Column; } // We update the content UpdateContent(); } finally { lvMailMessages.EndUpdate(); m_isUpdatingColumns = false; } } /// /// Updates the content of the listview. /// private void UpdateContent() { // Returns if not visible if (!Visible) return; int scrollBarPosition = lvMailMessages.GetVerticalScrollBarPosition(); // Store the selected item (if any) to restore it after the update int selectedItem = lvMailMessages.SelectedItems.Count > 0 ? lvMailMessages.SelectedItems[0].Tag.GetHashCode() : 0; lvMailMessages.BeginUpdate(); try { IEnumerable eveMailMessages = m_list .Where(x => x.SentDate != DateTime.MinValue).Where(x => IsTextMatching(x, m_textFilter)); UpdateSort(); UpdateContentByGroup(eveMailMessages); // Restore the selected item (if any) if (selectedItem > 0) { foreach (ListViewItem lvItem in lvMailMessages.Items.Cast().Where( lvItem => lvItem.Tag.GetHashCode() == selectedItem)) { lvItem.Selected = true; } } // Adjust the size of the columns AdjustColumns(); UpdateListVisibility(); } finally { lvMailMessages.EndUpdate(); lvMailMessages.SetVerticalScrollBarPosition(scrollBarPosition); } } /// /// Updates the list visibility. /// private void UpdateListVisibility() { // Display or hide the "no EVE mail messages" label if (!m_init) return; noEVEMailMessagesLabel.Visible = lvMailMessages.Items.Count == 0; lvMailMessages.Visible = splitContainerMailMessages.Visible = !noEVEMailMessagesLabel.Visible; } /// /// Updates the content by group. /// /// The eve mail messages. private void UpdateContentByGroup(IEnumerable eveMailMessages) { switch (m_grouping) { case EVEMailMessagesGrouping.State: IOrderedEnumerable> groups0 = eveMailMessages.GroupBy(x => x.State).OrderBy(x => (int)x.Key); UpdateContent(groups0); break; case EVEMailMessagesGrouping.StateDesc: IOrderedEnumerable> groups1 = eveMailMessages.GroupBy(x => x.State).OrderByDescending(x => (int)x.Key); UpdateContent(groups1); break; case EVEMailMessagesGrouping.SentDate: IOrderedEnumerable> groups2 = eveMailMessages.GroupBy(x => x.SentDate.ToLocalTime().Date).OrderBy(x => x.Key); UpdateContent(groups2); break; case EVEMailMessagesGrouping.SentDateDesc: IOrderedEnumerable> groups3 = eveMailMessages.GroupBy(x => x.SentDate.ToLocalTime().Date).OrderByDescending(x => x.Key); UpdateContent(groups3); break; case EVEMailMessagesGrouping.Sender: IOrderedEnumerable> groups4 = eveMailMessages.GroupBy(x => x.SenderName).OrderBy(x => x.Key); UpdateContent(groups4); break; case EVEMailMessagesGrouping.SenderDesc: IOrderedEnumerable> groups5 = eveMailMessages.GroupBy(x => x.SenderName).OrderByDescending(x => x.Key); UpdateContent(groups5); break; case EVEMailMessagesGrouping.Subject: IOrderedEnumerable> groups6 = eveMailMessages.GroupBy(x => x.Title).OrderBy(x => x.Key); UpdateContent(groups6); break; case EVEMailMessagesGrouping.SubjectDesc: IOrderedEnumerable> groups7 = eveMailMessages.GroupBy(x => x.Title).OrderByDescending(x => x.Key); UpdateContent(groups7); break; case EVEMailMessagesGrouping.Recipient: IOrderedEnumerable> groups8 = eveMailMessages.GroupBy(x => x.ToCharacters.First()).OrderBy(x => x.Key); UpdateContent(groups8); break; case EVEMailMessagesGrouping.RecipientDesc: IOrderedEnumerable> groups9 = eveMailMessages.GroupBy(x => x.ToCharacters.First()).OrderByDescending(x => x.Key); UpdateContent(groups9); break; case EVEMailMessagesGrouping.CorpOrAlliance: IOrderedEnumerable> groups10 = eveMailMessages.GroupBy(x => x.ToCorpOrAlliance).OrderBy(x => x.Key); UpdateContent(groups10); break; case EVEMailMessagesGrouping.CorpOrAllianceDesc: IOrderedEnumerable> groups11 = eveMailMessages.GroupBy(x => x.ToCorpOrAlliance).OrderByDescending(x => x.Key); UpdateContent(groups11); break; case EVEMailMessagesGrouping.MailingList: IOrderedEnumerable> groups12 = eveMailMessages.GroupBy(x => x.ToMailingLists.First()).OrderBy(x => x.Key); UpdateContent(groups12); break; case EVEMailMessagesGrouping.MailingListDesc: IOrderedEnumerable> groups13 = eveMailMessages.GroupBy(x => x.ToMailingLists.First()).OrderByDescending(x => x.Key); UpdateContent(groups13); break; } } /// /// Updates the content of the listview. /// /// /// private void UpdateContent(IEnumerable> groups) { lvMailMessages.Items.Clear(); lvMailMessages.Groups.Clear(); // Add the groups foreach (IGrouping group in groups) { string groupText; if (group.Key is EveMailState) groupText = ((EveMailState)(object)group.Key).GetHeader(); else if (group.Key is DateTime) groupText = ((DateTime)(object)group.Key).ToShortDateString(); else groupText = group.Key.ToString(); ListViewGroup listGroup = new ListViewGroup(groupText); lvMailMessages.Groups.Add(listGroup); // Add the items in every group lvMailMessages.Items.AddRange(group.Select(eveMailMessage => new { eveMailMessage, item = new ListViewItem(eveMailMessage.SenderName, listGroup) { UseItemStyleForSubItems = false, Tag = eveMailMessage } }).Select(x => CreateSubItems(x.eveMailMessage, x.item)).ToArray()); } } /// /// Creates the list view sub items. /// /// The mail message. /// The item. private ListViewItem CreateSubItems(EveMailMessage eveMailMessage, ListViewItem item) { // Add enough subitems to match the number of columns while (item.SubItems.Count < lvMailMessages.Columns.Count + 1) { item.SubItems.Add(string.Empty); } // Creates the subitems for (int i = 0; i < lvMailMessages.Columns.Count; i++) { SetColumn(eveMailMessage, item.SubItems[i], (EveMailMessageColumn)lvMailMessages.Columns[i].Tag); } return item; } /// /// Adjusts the columns. /// private void AdjustColumns() { foreach (ColumnHeader column in lvMailMessages.Columns) { if (m_columns[column.Index].Width == -1) m_columns[column.Index].Width = -2; column.Width = m_columns[column.Index].Width; // Due to .NET design we need to prevent the last colummn to resize to the right end // Return if it's not the last column and not set to auto-resize if (column.Index != lvMailMessages.Columns.Count - 1 || m_columns[column.Index].Width != -2) continue; const int Pad = 4; // Calculate column header text width with padding int columnHeaderWidth = TextRenderer.MeasureText(column.Text, Font).Width + Pad * 2; // If there is an image assigned to the header, add its width with padding if (lvMailMessages.SmallImageList != null && column.ImageIndex > -1) columnHeaderWidth += lvMailMessages.SmallImageList.ImageSize.Width + Pad; // Calculate the width of the header and the items of the column int columnMaxWidth = column.ListView.Items.Cast().Select( item => TextRenderer.MeasureText(item.SubItems[column.Index].Text, Font).Width).Concat( new[] { columnHeaderWidth }).Max() + Pad + 1; // Assign the width found column.Width = columnMaxWidth; } } /// /// Updates the item sorter. /// private void UpdateSort() { lvMailMessages.ListViewItemSorter = new ListViewItemComparerByTag( new EveMailMessageComparer(m_sortCriteria, m_sortAscending)); UpdateSortVisualFeedback(); } /// /// Updates the sort feedback (the arrow on the header). /// private void UpdateSortVisualFeedback() { foreach (ColumnHeader columnHeader in lvMailMessages.Columns.Cast()) { EveMailMessageColumn column = (EveMailMessageColumn)columnHeader.Tag; if (m_sortCriteria == column) columnHeader.ImageIndex = m_sortAscending ? 0 : 1; else columnHeader.ImageIndex = 2; } } /// /// Updates the listview sub-item. /// /// /// /// private static void SetColumn(EveMailMessage eveMailMessage, ListViewItem.ListViewSubItem item, EveMailMessageColumn column) { switch (column) { case EveMailMessageColumn.SenderName: item.Text = eveMailMessage.SenderName; break; case EveMailMessageColumn.Title: item.Text = eveMailMessage.Title; break; case EveMailMessageColumn.SentDate: DateTime sentDateTime = eveMailMessage.SentDate.ToLocalTime(); item.Text = $"{sentDateTime:ddd} {sentDateTime:G}"; break; case EveMailMessageColumn.ToCharacters: item.Text = string.Join(", ", eveMailMessage.ToCharacters); break; case EveMailMessageColumn.ToCorpOrAlliance: item.Text = eveMailMessage.ToCorpOrAlliance; break; case EveMailMessageColumn.ToMailingList: item.Text = string.Join(", ", eveMailMessage.ToMailingLists); break; default: throw new NotImplementedException(); } } /// /// Updates the pane position. /// private void UpdatePanePosition() { switch (PanePosition) { case ReadingPanePositioning.Off: splitContainerMailMessages.Panel2Collapsed = true; break; case ReadingPanePositioning.Bottom: splitContainerMailMessages.Orientation = Orientation.Horizontal; splitContainerMailMessages.Panel2Collapsed = false; break; case ReadingPanePositioning.Right: splitContainerMailMessages.Orientation = Orientation.Vertical; splitContainerMailMessages.Panel2Collapsed = false; break; default: throw new NotImplementedException(); } } #endregion #region Helper Methods /// /// Tries to open the selected mail in the EVEMon Mail Window. /// private void ReadMailLocal() { ListViewItem item = lvMailMessages.SelectedItems[0]; EveMailMessage message = (EveMailMessage)item.Tag; // Show or bring to front if a window with the same EVE mail message already exists WindowsFactory.ShowByTag(message); } /// /// Checks the given text matches the item. /// /// The x. /// The text. /// /// true if [is text matching] [the specified x]; otherwise, false. /// private static bool IsTextMatching(EveMailMessage x, string text) => string.IsNullOrEmpty(text) || x.SenderName.ToUpperInvariant().Contains(text, ignoreCase: true) || x.Title.ToUpperInvariant().Contains(text, ignoreCase: true) || x.ToCorpOrAlliance.ToUpperInvariant().Contains(text, ignoreCase: true) || x.ToCharacters.Any(y => y.ToUpperInvariant().Contains(text, ignoreCase: true)) || x.EVEMailBody.BodyText.ToUpperInvariant().Contains(text, ignoreCase: true); /// /// Called when selection changed. /// private void OnSelectionChanged() { if (lvMailMessages.SelectedItems.Count == 0) { eveMailReadingPane.HidePane(); return; } EveMailMessage selectedObject = lvMailMessages.SelectedItems[0].Tag as EveMailMessage; if (selectedObject == null) { eveMailReadingPane.HidePane(); return; } // If we haven't done it yet, download the mail body if (selectedObject.EVEMailBody.MessageID == 0) { selectedObject.GetMailBody(); return; } eveMailReadingPane.SelectedObject = selectedObject; } #endregion #region Local Event Handlers /// /// Exports item info to CSV format. /// /// /// private void exportToCSVToolStripMenuItem_Click(object sender, EventArgs e) { ListViewExporter.CreateCSV(lvMailMessages); } /// /// Shows the context menu only when a message is selected. /// /// /// private void contextMenu_Opening(object sender, CancelEventArgs e) { mailReadLocal.Enabled = lvMailMessages.SelectedItems.Count != 0; } /// /// When the selection update timer ticks, we process the changes caused by a selection change. /// /// The source of the event. /// The instance containing the event data. private void timer_Tick(object sender, EventArgs e) { timer.Stop(); OnSelectionChanged(); } /// /// When the user selects another item, we do not immediately process the change but rather delay it through a timer. /// /// The source of the event. /// The instance containing the event data. private void lvMailMessages_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { if (timer.Enabled) return; timer.Start(); } /// /// Opens a window form to display the EVE mail body. /// /// The source of the event. /// The instance containing the event data. private void lvMailMessages_DoubleClick(object sender, EventArgs e) { ReadMailLocal(); } /// /// On column reorder we update the settings. /// /// /// private void lvMailMessages_ColumnReordered(object sender, ColumnReorderedEventArgs e) { m_columnsChanged = true; } /// /// When the user manually resizes a column, we make sure to update the column preferences. /// /// /// private void lvMailMessages_ColumnWidthChanged(object sender, ColumnWidthChangedEventArgs e) { if (m_isUpdatingColumns || m_columns.Count <= e.ColumnIndex) return; if (m_columns[e.ColumnIndex].Width == lvMailMessages.Columns[e.ColumnIndex].Width) return; m_columns[e.ColumnIndex].Width = lvMailMessages.Columns[e.ColumnIndex].Width; m_columnsChanged = true; } /// /// When the user clicks a column header, we update the sorting. /// /// /// private void lvMailMessages_ColumnClick(object sender, ColumnClickEventArgs e) { EveMailMessageColumn column = (EveMailMessageColumn)lvMailMessages.Columns[e.Column].Tag; if (m_sortCriteria == column) m_sortAscending = !m_sortAscending; else { m_sortCriteria = column; m_sortAscending = true; } m_isUpdatingColumns = true; // Updates the item sorter UpdateSort(); m_isUpdatingColumns = false; } /// /// When the mouse gets pressed, we change the cursor. /// /// The source of the event. /// The instance containing the event data. private void listView_MouseDown(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Right) return; lvMailMessages.Cursor = Cursors.Default; } /// /// When the mouse moves over the list, we change the cursor. /// /// The source of the event. /// The instance containing the event data. private void listView_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) return; lvMailMessages.Cursor = CustomCursors.ContextMenu; } /// /// Picking "Read" in the context menu. /// /// /// private void mailReadLocal_Click(object sender, EventArgs e) { ReadMailLocal(); } # endregion #region Global Events /// /// On timer tick, we update the column settings if any changes have been made to them. /// /// /// private void EveMonClient_TimerTick(object sender, EventArgs e) { if (!Visible || !m_columnsChanged) return; Settings.UI.MainWindow.EVEMailMessages.Columns.Clear(); Settings.UI.MainWindow.EVEMailMessages.Columns.AddRange(Columns.Cast()); // Recreate the columns Columns = Settings.UI.MainWindow.EVEMailMessages.Columns; m_columnsChanged = false; } /// /// When the mail messages change update the list. /// /// /// private void EveMonClient_CharacterEVEMailMessagesUpdated(object sender, CharacterChangedEventArgs e) { if (Character == null || e.Character != Character) return; EVEMailMessages = Character.EVEMailMessages; UpdateColumns(); } /// /// When the mailing lists change update the list. /// /// /// private void EveMonClient_CharacterEVEMailingListsUpdated(object sender, CharacterChangedEventArgs e) { UpdateColumns(); } /// /// When the mail message body gets downloaded update the reading pane. /// /// The source of the event. /// The instance containing the event data. private void EveMonClient_CharacterEVEMailBodyDownloaded(object sender, CharacterChangedEventArgs e) { if (e.Character != Character) return; OnSelectionChanged(); } /// /// When the EveIDToName list updates, update the list. /// /// /// private void EveMonClient_EveIDToNameUpdated(object sender, EventArgs e) { UpdateColumns(); } /// /// Handles the NotificationSent event of the EveMonClient control. /// /// The source of the event. /// The instance containing the event data. private void EveMonClient_NotificationSent(object sender, NotificationEventArgs e) { if (Character == null) return; APIErrorNotificationEventArgs notification = e as APIErrorNotificationEventArgs; CCPAPIResult notificationResult = notification?.Result as CCPAPIResult; if (notificationResult == null) return; // In case there was an error, hide the pane if (notification.Result.HasError) eveMailReadingPane.HidePane(); } #endregion } } ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterEveMailMessagesList.resx ================================================ text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 17, 17 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADi AAAAAk1TRnQBSQFMAgEBAwEAAawBCAGsAQgBEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA AwABEAMAAQEBAAEQBgABCP8A/wD/AP8A/wD/AP8A/wAaAAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEB AQABAQUAAYAXAAP/AQAG/wIABv8CAAb/AgAG/wIABv8CAAb/AgAB8AEPAf4BfwL/AgAB+AEfAfwBPwL/ AgAB/AE/AfgBHwL/AgAB/gF/AfABDwL/AgAG/wIABv8CAAb/AgAG/wIABv8CAAb/AgAL 170, 20 103, 17 ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterEveNotificationsList.Designer.cs ================================================ using EVEMon.Controls; namespace EVEMon.CharacterMonitoring { internal sealed partial class CharacterEveNotificationsList { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Component Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CharacterEveNotificationsList)); this.splitContainerNotifications = new System.Windows.Forms.SplitContainer(); this.lvNotifications = new System.Windows.Forms.ListView(); this.chSenderName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chType = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chSentDate = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.contextMenu = new System.Windows.Forms.ContextMenuStrip(this.components); this.exportToCSVToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.ilIcons = new System.Windows.Forms.ImageList(this.components); this.eveNotificationReadingPane = new EVEMon.Controls.ReadingPane(); this.noEVENotificationsLabel = new System.Windows.Forms.Label(); this.timer = new System.Windows.Forms.Timer(this.components); ((System.ComponentModel.ISupportInitialize)(this.splitContainerNotifications)).BeginInit(); this.splitContainerNotifications.Panel1.SuspendLayout(); this.splitContainerNotifications.Panel2.SuspendLayout(); this.splitContainerNotifications.SuspendLayout(); this.contextMenu.SuspendLayout(); this.SuspendLayout(); // // splitContainerNotifications // this.splitContainerNotifications.BackColor = System.Drawing.SystemColors.ControlDark; this.splitContainerNotifications.Dock = System.Windows.Forms.DockStyle.Fill; this.splitContainerNotifications.Location = new System.Drawing.Point(0, 0); this.splitContainerNotifications.Name = "splitContainerNotifications"; this.splitContainerNotifications.Orientation = System.Windows.Forms.Orientation.Horizontal; // // splitContainerNotifications.Panel1 // this.splitContainerNotifications.Panel1.Controls.Add(this.lvNotifications); // // splitContainerNotifications.Panel2 // this.splitContainerNotifications.Panel2.Controls.Add(this.eveNotificationReadingPane); this.splitContainerNotifications.Size = new System.Drawing.Size(454, 434); this.splitContainerNotifications.SplitterDistance = 288; this.splitContainerNotifications.SplitterWidth = 6; this.splitContainerNotifications.TabIndex = 3; // // lvNotifications // this.lvNotifications.BorderStyle = System.Windows.Forms.BorderStyle.None; this.lvNotifications.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.chSenderName, this.chType, this.chSentDate}); this.lvNotifications.ContextMenuStrip = this.contextMenu; this.lvNotifications.Dock = System.Windows.Forms.DockStyle.Fill; this.lvNotifications.FullRowSelect = true; this.lvNotifications.HideSelection = false; this.lvNotifications.Location = new System.Drawing.Point(0, 0); this.lvNotifications.MultiSelect = false; this.lvNotifications.Name = "lvNotifications"; this.lvNotifications.Size = new System.Drawing.Size(454, 288); this.lvNotifications.SmallImageList = this.ilIcons; this.lvNotifications.TabIndex = 0; this.lvNotifications.UseCompatibleStateImageBehavior = false; this.lvNotifications.View = System.Windows.Forms.View.Details; this.lvNotifications.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.lvNotifications_ColumnClick); this.lvNotifications.ColumnReordered += new System.Windows.Forms.ColumnReorderedEventHandler(this.lvNotifications_ColumnReordered); this.lvNotifications.ColumnWidthChanged += new System.Windows.Forms.ColumnWidthChangedEventHandler(this.lvNotifications_ColumnWidthChanged); this.lvNotifications.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(this.lvNotifications_ItemSelectionChanged); this.lvNotifications.DoubleClick += new System.EventHandler(this.lvNotifications_DoubleClick); // // chSenderName // this.chSenderName.Text = "From"; // // chType // this.chType.Text = "Subject"; this.chType.Width = 121; // // chSentDate // this.chSentDate.Text = "Received"; this.chSentDate.Width = 90; // // contextMenu // this.contextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.exportToCSVToolStripMenuItem}); this.contextMenu.Name = "ShipPropertiesContextMenu"; this.contextMenu.Size = new System.Drawing.Size(157, 48); // // exportToCSVToolStripMenuItem // this.exportToCSVToolStripMenuItem.Name = "exportToCSVToolStripMenuItem"; this.exportToCSVToolStripMenuItem.Size = new System.Drawing.Size(156, 22); this.exportToCSVToolStripMenuItem.Text = "Export To CSV..."; this.exportToCSVToolStripMenuItem.Click += new System.EventHandler(this.exportToCSVToolStripMenuItem_Click); // // ilIcons // this.ilIcons.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilIcons.ImageStream"))); this.ilIcons.TransparentColor = System.Drawing.Color.Transparent; this.ilIcons.Images.SetKeyName(0, "arrow_up.png"); this.ilIcons.Images.SetKeyName(1, "arrow_down.png"); this.ilIcons.Images.SetKeyName(2, "16x16Transparant.png"); // // eveNotificationReadingPane // this.eveNotificationReadingPane.Dock = System.Windows.Forms.DockStyle.Fill; this.eveNotificationReadingPane.Location = new System.Drawing.Point(0, 0); this.eveNotificationReadingPane.Name = "eveNotificationReadingPane"; this.eveNotificationReadingPane.Size = new System.Drawing.Size(454, 140); this.eveNotificationReadingPane.TabIndex = 0; // // noEVENotificationsLabel // this.noEVENotificationsLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.noEVENotificationsLabel.ForeColor = System.Drawing.SystemColors.GrayText; this.noEVENotificationsLabel.Location = new System.Drawing.Point(0, 0); this.noEVENotificationsLabel.Name = "noEVENotificationsLabel"; this.noEVENotificationsLabel.Size = new System.Drawing.Size(454, 434); this.noEVENotificationsLabel.TabIndex = 4; this.noEVENotificationsLabel.Text = "No EVE notifications are available."; this.noEVENotificationsLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // timer // this.timer.Tick += new System.EventHandler(this.timer_Tick); // // CharacterEveNotificationsList // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Controls.Add(this.splitContainerNotifications); this.Controls.Add(this.noEVENotificationsLabel); this.Name = "CharacterEveNotificationsList"; this.Size = new System.Drawing.Size(454, 434); this.splitContainerNotifications.Panel1.ResumeLayout(false); this.splitContainerNotifications.Panel2.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.splitContainerNotifications)).EndInit(); this.splitContainerNotifications.ResumeLayout(false); this.contextMenu.ResumeLayout(false); this.ResumeLayout(false); } #endregion private System.Windows.Forms.SplitContainer splitContainerNotifications; private System.Windows.Forms.ListView lvNotifications; private System.Windows.Forms.ColumnHeader chSenderName; private System.Windows.Forms.ColumnHeader chType; private System.Windows.Forms.ColumnHeader chSentDate; private ReadingPane eveNotificationReadingPane; private System.Windows.Forms.Label noEVENotificationsLabel; private System.Windows.Forms.ImageList ilIcons; private System.Windows.Forms.Timer timer; private System.Windows.Forms.ContextMenuStrip contextMenu; private System.Windows.Forms.ToolStripMenuItem exportToCSVToolStripMenuItem; } } ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterEveNotificationsList.cs ================================================ using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Linq; using System.Windows.Forms; using EVEMon.Common; using EVEMon.Common.Collections; using EVEMon.Common.Controls; using EVEMon.Common.CustomEventArgs; using EVEMon.Common.Enumerations; using EVEMon.Common.Enumerations.UISettings; using EVEMon.Common.Extensions; using EVEMon.Common.Factories; using EVEMon.Common.Helpers; using EVEMon.Common.Interfaces; using EVEMon.Common.Models; using EVEMon.Common.Models.Comparers; using EVEMon.Common.Models.Extended; using EVEMon.Common.Notifications; using EVEMon.Common.Serialization.Eve; using EVEMon.Common.SettingsObjects; using EVEMon.DetailsWindow; namespace EVEMon.CharacterMonitoring { internal sealed partial class CharacterEveNotificationsList : UserControl, IListView { #region Fields private readonly List m_columns = new List(); private readonly List m_list = new List(); private EVENotificationsGrouping m_grouping; private EveNotificationColumn m_sortCriteria; private ReadingPanePositioning m_panePosition; private string m_textFilter = string.Empty; private bool m_sortAscending; private bool m_columnsChanged; private bool m_isUpdatingColumns; private bool m_init; #endregion #region Constructor /// /// Constructor. /// public CharacterEveNotificationsList() { InitializeComponent(); eveNotificationReadingPane.HidePane(); splitContainerNotifications.Hide(); lvNotifications.Hide(); lvNotifications.AllowColumnReorder = true; lvNotifications.Columns.Clear(); noEVENotificationsLabel.Font = FontFactory.GetFont("Tahoma", 11.25F, FontStyle.Bold); ListViewHelper.EnableDoubleBuffer(lvNotifications); lvNotifications.MouseDown += listView_MouseDown; lvNotifications.MouseMove += listView_MouseMove; } #endregion #region Properties /// /// Gets the character associated with this monitor. /// internal CCPCharacter Character { get; set; } /// /// Gets or sets the text filter. /// [Browsable(false)] public string TextFilter { get { return m_textFilter; } set { m_textFilter = value; if (m_init) UpdateColumns(); } } /// /// Gets or sets the grouping mode. /// [Browsable(false)] public Enum Grouping { get { return m_grouping; } set { m_grouping = (EVENotificationsGrouping)value; if (m_init) UpdateColumns(); } } /// /// Gets or sets the pane position. /// internal ReadingPanePositioning PanePosition { get { return m_panePosition; } set { m_panePosition = value; UpdatePanePosition(); } } /// /// Gets or sets the enumeration of EVE mail messages to display. /// private IEnumerable EVENotifications { get { return m_list; } set { m_list.Clear(); if (value == null) return; m_list.AddRange(value); } } /// /// Gets or sets the settings used for columns. /// [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public IEnumerable Columns { get { // Add the visible columns; matching the display order List newColumns = new List(); foreach (ColumnHeader header in lvNotifications.Columns.Cast().OrderBy(x => x.DisplayIndex)) { EveNotificationColumnSettings columnSetting = m_columns.First(x => x.Column == (EveNotificationColumn)header.Tag); if (columnSetting.Width > -1) columnSetting.Width = header.Width; newColumns.Add(columnSetting); } // Then add the other columns newColumns.AddRange(m_columns.Where(x => !x.Visible)); return newColumns; } set { m_columns.Clear(); if (value != null) m_columns.AddRange(value.Cast()); if (m_init) UpdateColumns(); } } #endregion # region Inherited Events /// /// On load subscribe the events. /// /// An that contains the event data. protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (DesignMode || this.IsDesignModeHosted()) return; EveMonClient.TimerTick += EveMonClient_TimerTick; EveMonClient.CharacterEVENotificationsUpdated += EveMonClient_CharacterEVENotificationsUpdated; EveMonClient.EveIDToNameUpdated += EveMonClient_EveIDToNameUpdated; EveMonClient.NotificationRefTypesUpdated += EveMonClient_NotificationRefTypesUpdated; EveNotificationTextParser.NotificationTextParserUpdated += EveNotificationTextParser_NotificationTextParserUpdated; Disposed += OnDisposed; } /// /// Unsubscribe events on disposing. /// /// /// private void OnDisposed(object sender, EventArgs e) { EveMonClient.TimerTick -= EveMonClient_TimerTick; EveMonClient.CharacterEVENotificationsUpdated -= EveMonClient_CharacterEVENotificationsUpdated; EveMonClient.EveIDToNameUpdated -= EveMonClient_EveIDToNameUpdated; EveMonClient.NotificationRefTypesUpdated -= EveMonClient_NotificationRefTypesUpdated; EveNotificationTextParser.NotificationTextParserUpdated -= EveNotificationTextParser_NotificationTextParserUpdated; Disposed -= OnDisposed; } /// /// When the control becomes visible again, we update the content. /// /// protected override void OnVisibleChanged(EventArgs e) { base.OnVisibleChanged(e); if (DesignMode || this.IsDesignModeHosted() || Character == null || !Visible) return; // Prevents the properties to call UpdateColumns() till we set all properties m_init = false; lvNotifications.Visible = false; eveNotificationReadingPane.HidePane(); EVENotifications = Character?.EVENotifications; Columns = Settings.UI.MainWindow.EVENotifications.Columns; Grouping = Character?.UISettings.EVENotificationsGroupBy; PanePosition = Settings.UI.MainWindow.EVENotifications.ReadingPanePosition; TextFilter = string.Empty; UpdateColumns(); m_init = true; UpdateListVisibility(); } # endregion #region Update Methods /// /// Autoresizes the columns. /// public void AutoResizeColumns() { m_columns.ForEach(column => { if (column.Visible) column.Width = -2; }); UpdateColumns(); } /// /// Updates the columns. /// private void UpdateColumns() { // Returns if not visible if (!Visible) return; lvNotifications.BeginUpdate(); m_isUpdatingColumns = true; try { lvNotifications.Columns.Clear(); lvNotifications.Groups.Clear(); lvNotifications.Items.Clear(); foreach (EveNotificationColumnSettings column in m_columns.Where(x => x.Visible)) { ColumnHeader header = lvNotifications.Columns.Add(column.Column.GetHeader(), column.Width); header.Tag = column.Column; } // We update the content UpdateContent(); } finally { lvNotifications.EndUpdate(); m_isUpdatingColumns = false; } } /// /// Updates the content of the listview. /// private void UpdateContent() { // Returns if not visible if (!Visible) return; int scrollBarPosition = lvNotifications.GetVerticalScrollBarPosition(); // Store the selected item (if any) to restore it after the update int selectedItem = lvNotifications.SelectedItems.Count > 0 ? lvNotifications. SelectedItems[0].Tag.GetHashCode() : 0; lvNotifications.BeginUpdate(); splitContainerNotifications.Visible = false; try { IEnumerable eveNotifications = m_list .Where(x => x.SentDate != DateTime.MinValue).Where(x => IsTextMatching(x, m_textFilter)); UpdateSort(); UpdateContentByGroup(eveNotifications); // Restore the selected item (if any) if (selectedItem > 0) { foreach (ListViewItem lvItem in lvNotifications.Items.Cast() .Where(lvItem => lvItem.Tag.GetHashCode() == selectedItem)) { lvItem.Selected = true; } } // Adjust the size of the columns AdjustColumns(); UpdateListVisibility(); } finally { lvNotifications.EndUpdate(); lvNotifications.SetVerticalScrollBarPosition(scrollBarPosition); } } /// /// Updates the list visibility. /// private void UpdateListVisibility() { // Display or hide the "no EVE mail messages" label if (!m_init) return; noEVENotificationsLabel.Visible = lvNotifications.Items.Count == 0; lvNotifications.Visible = splitContainerNotifications.Visible = !noEVENotificationsLabel.Visible; } /// /// Updates the content by group. /// /// The eve notifications. private void UpdateContentByGroup(IEnumerable eveNotifications) { switch (m_grouping) { case EVENotificationsGrouping.Type: IOrderedEnumerable> groups0 = eveNotifications.GroupBy(x => x.TypeName).OrderBy(x => x.Key); UpdateContent(groups0); break; case EVENotificationsGrouping.TypeDesc: IOrderedEnumerable> groups1 = eveNotifications.GroupBy(x => x.TypeName).OrderByDescending(x => x.Key); UpdateContent(groups1); break; case EVENotificationsGrouping.SentDate: IOrderedEnumerable> groups2 = eveNotifications.GroupBy(x => x.SentDate.ToLocalTime().Date).OrderBy(x => x.Key); UpdateContent(groups2); break; case EVENotificationsGrouping.SentDateDesc: IOrderedEnumerable> groups3 = eveNotifications.GroupBy(x => x.SentDate.ToLocalTime().Date).OrderByDescending(x => x.Key); UpdateContent(groups3); break; case EVENotificationsGrouping.Sender: IOrderedEnumerable> groups4 = eveNotifications.GroupBy(x => x.SenderName).OrderBy(x => x.Key); UpdateContent(groups4); break; case EVENotificationsGrouping.SenderDesc: IOrderedEnumerable> groups5 = eveNotifications.GroupBy(x => x.SenderName).OrderByDescending(x => x.Key); UpdateContent(groups5); break; } } /// /// Updates the content of the listview. /// /// /// private void UpdateContent(IEnumerable> groups) { lvNotifications.Items.Clear(); lvNotifications.Groups.Clear(); // Add the groups foreach (IGrouping group in groups) { string groupText; if (group.Key is EveMailState) groupText = ((EveMailState)(object)group.Key).GetHeader(); else if (group.Key is DateTime) groupText = ((DateTime)(object)group.Key).ToShortDateString(); else groupText = group.Key.ToString(); ListViewGroup listGroup = new ListViewGroup(groupText); lvNotifications.Groups.Add(listGroup); // Add the items in every group lvNotifications.Items.AddRange( group.Select(eveNotification => new { eveNotification, item = new ListViewItem(eveNotification.SenderName, listGroup) { UseItemStyleForSubItems = false, Tag = eveNotification } }).Select(x => CreateSubItems(x.eveNotification, x.item)).ToArray()); } } /// /// Creates the list view sub items. /// /// The notification. /// The item. private ListViewItem CreateSubItems(EveNotification eveNotification, ListViewItem item) { // Add enough subitems to match the number of columns while (item.SubItems.Count < lvNotifications.Columns.Count + 1) { item.SubItems.Add(string.Empty); } // Creates the subitems for (int i = 0; i < lvNotifications.Columns.Count; i++) { SetColumn(eveNotification, item.SubItems[i], (EveNotificationColumn)lvNotifications.Columns[i].Tag); } return item; } /// /// Adjusts the columns. /// private void AdjustColumns() { foreach (ColumnHeader column in lvNotifications.Columns) { if (m_columns[column.Index].Width == -1) m_columns[column.Index].Width = -2; column.Width = m_columns[column.Index].Width; // Due to .NET design we need to prevent the last colummn to resize to the right end // Return if it's not the last column and not set to auto-resize if (column.Index != lvNotifications.Columns.Count - 1 || m_columns[column.Index].Width != -2) continue; const int Pad = 4; // Calculate column header text width with padding int columnHeaderWidth = TextRenderer.MeasureText(column.Text, Font).Width + Pad * 2; // If there is an image assigned to the header, add its width with padding if (lvNotifications.SmallImageList != null && column.ImageIndex > -1) columnHeaderWidth += lvNotifications.SmallImageList.ImageSize.Width + Pad; // Calculate the width of the header and the items of the column int columnMaxWidth = column.ListView.Items.Cast().Select( item => TextRenderer.MeasureText(item.SubItems[column.Index].Text, Font).Width).Concat( new[] { columnHeaderWidth }).Max() + Pad + 1; // Assign the width found column.Width = columnMaxWidth; } } /// /// Updates the item sorter. /// private void UpdateSort() { lvNotifications.ListViewItemSorter = new ListViewItemComparerByTag( new EveNotificationComparer(m_sortCriteria, m_sortAscending)); UpdateSortVisualFeedback(); } /// /// Updates the sort feedback (the arrow on the header). /// private void UpdateSortVisualFeedback() { foreach (ColumnHeader columnHeader in lvNotifications.Columns.Cast()) { EveNotificationColumn column = (EveNotificationColumn)columnHeader.Tag; if (m_sortCriteria == column) columnHeader.ImageIndex = m_sortAscending ? 0 : 1; else columnHeader.ImageIndex = 2; } } /// /// Updates the listview sub-item. /// /// /// /// private static void SetColumn(EveNotification eveNotification, ListViewItem.ListViewSubItem item, EveNotificationColumn column) { switch (column) { case EveNotificationColumn.SenderName: item.Text = eveNotification.SenderName; break; case EveNotificationColumn.Type: item.Text = eveNotification.Title; break; case EveNotificationColumn.SentDate: DateTime sentDateTime = eveNotification.SentDate.ToLocalTime(); item.Text = $"{sentDateTime:ddd} {sentDateTime:G}"; break; default: throw new NotImplementedException(); } } /// /// Updates the pane position. /// private void UpdatePanePosition() { switch (PanePosition) { case ReadingPanePositioning.Off: splitContainerNotifications.Panel2Collapsed = true; break; case ReadingPanePositioning.Bottom: splitContainerNotifications.Orientation = Orientation.Horizontal; splitContainerNotifications.Panel2Collapsed = false; break; case ReadingPanePositioning.Right: splitContainerNotifications.Orientation = Orientation.Vertical; splitContainerNotifications.Panel2Collapsed = false; break; default: throw new NotImplementedException(); } } #endregion #region Helper Methods /// /// Checks the given text matches the item. /// /// The x. /// The text. /// /// true if [is text matching] [the specified x]; otherwise, false. /// private static bool IsTextMatching(EveNotification x, string text) => string.IsNullOrEmpty(text) || x.SenderName.ToUpperInvariant().Contains(text, ignoreCase: true) || x.Title.ToUpperInvariant().Contains(text, ignoreCase: true) || x.Text.ToUpperInvariant().Contains(text, ignoreCase: true); /// /// Called when selection changed. /// private void OnSelectionChanged() { if (lvNotifications.SelectedItems.Count == 0) { eveNotificationReadingPane.HidePane(); return; } EveNotification selectedObject = lvNotifications.SelectedItems[0].Tag as EveNotification; if (selectedObject == null) { eveNotificationReadingPane.HidePane(); return; } eveNotificationReadingPane.SelectedObject = selectedObject; } #endregion #region Local Event Handlers /// /// Exports item info to CSV format. /// /// /// private void exportToCSVToolStripMenuItem_Click(object sender, EventArgs e) { ListViewExporter.CreateCSV(lvNotifications); } /// /// When the selection update timer ticks, we process the changes caused by a selection change. /// /// The source of the event. /// The instance containing the event data. private void timer_Tick(object sender, EventArgs e) { timer.Stop(); OnSelectionChanged(); } /// /// When the user selects another item, we do not immediately process the change but rather delay it through a timer. /// /// The source of the event. /// The instance containing the event data. private void lvNotifications_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { if (timer.Enabled) return; timer.Start(); } /// /// Opens a window form to display the EVE notification. /// /// The source of the event. /// The instance containing the event data. private void lvNotifications_DoubleClick(object sender, EventArgs e) { var items = lvNotifications.SelectedItems; if (items.Count > 0) { var item = items[0]; var notification = (EveNotification)item.Tag; // Quit if we haven't downloaded the notification text yet if (notification.EVENotificationText != null) // Show or bring to front if a window with the same EVE notification already exists WindowsFactory.ShowByTag(notification); } } /// /// On column reorder we update the settings. /// /// /// private void lvNotifications_ColumnReordered(object sender, ColumnReorderedEventArgs e) { m_columnsChanged = true; } /// /// When the user manually resizes a column, we make sure to update the column preferences. /// /// /// private void lvNotifications_ColumnWidthChanged(object sender, ColumnWidthChangedEventArgs e) { if (m_isUpdatingColumns || m_columns.Count <= e.ColumnIndex) return; if (m_columns[e.ColumnIndex].Width == lvNotifications.Columns[e.ColumnIndex].Width) return; m_columns[e.ColumnIndex].Width = lvNotifications.Columns[e.ColumnIndex].Width; m_columnsChanged = true; } /// /// When the user clicks a column header, we update the sorting. /// /// /// private void lvNotifications_ColumnClick(object sender, ColumnClickEventArgs e) { var column = (EveNotificationColumn)lvNotifications.Columns[e.Column].Tag; if (m_sortCriteria == column) m_sortAscending = !m_sortAscending; else { m_sortCriteria = column; m_sortAscending = true; } m_isUpdatingColumns = true; // Updates the item sorter UpdateSort(); m_isUpdatingColumns = false; } /// /// When the mouse gets pressed, we change the cursor. /// /// The source of the event. /// The instance containing the event data. private void listView_MouseDown(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Right) return; lvNotifications.Cursor = Cursors.Default; } /// /// When the mouse moves over the list, we change the cursor. /// /// The source of the event. /// The instance containing the event data. private void listView_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) return; lvNotifications.Cursor = CustomCursors.ContextMenu; } # endregion #region Global Events /// /// On timer tick, we update the column settings if any changes have been made to them. /// /// /// private void EveMonClient_TimerTick(object sender, EventArgs e) { if (!Visible || !m_columnsChanged) return; Settings.UI.MainWindow.EVENotifications.Columns.Clear(); Settings.UI.MainWindow.EVENotifications.Columns.AddRange(Columns.Cast()); // Recreate the columns Columns = Settings.UI.MainWindow.EVENotifications.Columns; m_columnsChanged = false; } /// /// When the notifications change update the list. /// /// /// private void EveMonClient_CharacterEVENotificationsUpdated(object sender, CharacterChangedEventArgs e) { if (Character == null || e.Character != Character) return; EVENotifications = Character.EVENotifications; UpdateColumns(); } /// /// When the EveIDToName list updates, update the list. /// /// /// private void EveMonClient_EveIDToNameUpdated(object sender, EventArgs e) { UpdateColumns(); } /// /// When the NotificationRefTypes list updates, update the list. /// /// /// private void EveMonClient_NotificationRefTypesUpdated(object sender, EventArgs e) { UpdateColumns(); } /// /// When the notification text parser updates, update the list. /// /// /// private void EveNotificationTextParser_NotificationTextParserUpdated(object sender, EventArgs e) { UpdateColumns(); } #endregion } } ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterEveNotificationsList.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 178, 17 17, 17 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADi AAAAAk1TRnQBSQFMAgEBAwEAAXwBCAF8AQgBEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA AwABEAMAAQEBAAEQBgABCP8A/wD/AP8A/wD/AP8A/wAaAAFCAU0BPgcAAT4DAAEoAwABQAMAARADAAEB AQABAQUAAYAXAAP/AQAG/wIABv8CAAb/AgAG/wIABv8CAAb/AgAB8AEPAf4BfwL/AgAB+AEfAfwBPwL/ AgAB/AE/AfgBHwL/AgAB/gF/AfABDwL/AgAG/wIABv8CAAb/AgAG/wIABv8CAAb/AgAL 98, 17 ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterFactionalWarfareStatsList.Designer.cs ================================================ namespace EVEMon.CharacterMonitoring { internal sealed partial class CharacterFactionalWarfareStatsList { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Component Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { System.Windows.Forms.ListViewGroup listViewGroup1 = new System.Windows.Forms.ListViewGroup("Kills", System.Windows.Forms.HorizontalAlignment.Left); System.Windows.Forms.ListViewGroup listViewGroup2 = new System.Windows.Forms.ListViewGroup("Victory Points", System.Windows.Forms.HorizontalAlignment.Left); System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem("Yesterday"); System.Windows.Forms.ListViewItem listViewItem2 = new System.Windows.Forms.ListViewItem("Last Week"); System.Windows.Forms.ListViewItem listViewItem3 = new System.Windows.Forms.ListViewItem("Total"); System.Windows.Forms.ListViewItem listViewItem4 = new System.Windows.Forms.ListViewItem("Yesterday"); System.Windows.Forms.ListViewItem listViewItem5 = new System.Windows.Forms.ListViewItem("Last Week"); System.Windows.Forms.ListViewItem listViewItem6 = new System.Windows.Forms.ListViewItem("Total"); System.Windows.Forms.ListViewGroup listViewGroup3 = new System.Windows.Forms.ListViewGroup("General", System.Windows.Forms.HorizontalAlignment.Left); System.Windows.Forms.ListViewGroup listViewGroup4 = new System.Windows.Forms.ListViewGroup("Kills", System.Windows.Forms.HorizontalAlignment.Left); System.Windows.Forms.ListViewGroup listViewGroup5 = new System.Windows.Forms.ListViewGroup("Victory Points", System.Windows.Forms.HorizontalAlignment.Left); System.Windows.Forms.ListViewItem listViewItem7 = new System.Windows.Forms.ListViewItem("Pilots"); System.Windows.Forms.ListViewItem listViewItem8 = new System.Windows.Forms.ListViewItem("Systems Controlled"); System.Windows.Forms.ListViewItem listViewItem9 = new System.Windows.Forms.ListViewItem("Yesterday"); System.Windows.Forms.ListViewItem listViewItem10 = new System.Windows.Forms.ListViewItem("Last Week"); System.Windows.Forms.ListViewItem listViewItem11 = new System.Windows.Forms.ListViewItem("Total"); System.Windows.Forms.ListViewItem listViewItem12 = new System.Windows.Forms.ListViewItem("Yesterday"); System.Windows.Forms.ListViewItem listViewItem13 = new System.Windows.Forms.ListViewItem("Last Week"); System.Windows.Forms.ListViewItem listViewItem14 = new System.Windows.Forms.ListViewItem("Total"); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CharacterFactionalWarfareStatsList)); this.noFactionalWarfareLabel = new System.Windows.Forms.Label(); this.notEnlistedLabel = new System.Windows.Forms.Label(); this.ListPanel = new System.Windows.Forms.Panel(); this.ListSplitContainer = new EVEMon.Common.Controls.PersistentSplitContainer(); this.lvPersonal = new System.Windows.Forms.ListView(); this.chDescription = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chYou = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chAll = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.lvMilitia = new System.Windows.Forms.ListView(); this.chMilitia = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chAmarr = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chCaldari = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chGallente = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chMinmatar = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.HeaderTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); this.FightingPartiesPanel = new System.Windows.Forms.Panel(); this.PlusPictureBox = new System.Windows.Forms.PictureBox(); this.AgainstPictureBox = new System.Windows.Forms.PictureBox(); this.AllyAgainstFactionPictureBox = new System.Windows.Forms.PictureBox(); this.PrimeAgainstFactionPictureBox = new System.Windows.Forms.PictureBox(); this.EnlistedFactionPictureBox = new System.Windows.Forms.PictureBox(); this.FactionPictureBox = new System.Windows.Forms.PictureBox(); this.CorporationPictureBox = new System.Windows.Forms.PictureBox(); this.RankLabel = new System.Windows.Forms.Label(); this.TimeServedLabel = new System.Windows.Forms.Label(); this.FactionLabel = new System.Windows.Forms.Label(); this.CorporationLabel = new System.Windows.Forms.Label(); this.ListPanel.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.ListSplitContainer)).BeginInit(); this.ListSplitContainer.Panel1.SuspendLayout(); this.ListSplitContainer.Panel2.SuspendLayout(); this.ListSplitContainer.SuspendLayout(); this.HeaderTableLayoutPanel.SuspendLayout(); this.FightingPartiesPanel.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.PlusPictureBox)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.AgainstPictureBox)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.AllyAgainstFactionPictureBox)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.PrimeAgainstFactionPictureBox)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.EnlistedFactionPictureBox)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.FactionPictureBox)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.CorporationPictureBox)).BeginInit(); this.SuspendLayout(); // // noFactionalWarfareLabel // this.noFactionalWarfareLabel.BackColor = System.Drawing.Color.WhiteSmoke; this.noFactionalWarfareLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.noFactionalWarfareLabel.ForeColor = System.Drawing.SystemColors.GrayText; this.noFactionalWarfareLabel.Location = new System.Drawing.Point(0, 0); this.noFactionalWarfareLabel.Name = "noFactionalWarfareLabel"; this.noFactionalWarfareLabel.Size = new System.Drawing.Size(409, 607); this.noFactionalWarfareLabel.TabIndex = 3; this.noFactionalWarfareLabel.Text = "Factional Warfare information not available."; this.noFactionalWarfareLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // notEnlistedLabel // this.notEnlistedLabel.BackColor = System.Drawing.Color.WhiteSmoke; this.notEnlistedLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.notEnlistedLabel.ForeColor = System.Drawing.SystemColors.GrayText; this.notEnlistedLabel.Location = new System.Drawing.Point(0, 0); this.notEnlistedLabel.Name = "notEnlistedLabel"; this.notEnlistedLabel.Size = new System.Drawing.Size(409, 607); this.notEnlistedLabel.TabIndex = 4; this.notEnlistedLabel.Text = "Character not enlisted in Factional Warfare."; this.notEnlistedLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // ListPanel // this.ListPanel.Controls.Add(this.ListSplitContainer); this.ListPanel.Controls.Add(this.HeaderTableLayoutPanel); this.ListPanel.Dock = System.Windows.Forms.DockStyle.Fill; this.ListPanel.Location = new System.Drawing.Point(0, 0); this.ListPanel.Name = "ListPanel"; this.ListPanel.Size = new System.Drawing.Size(409, 607); this.ListPanel.TabIndex = 6; // // ListSplitContainer // this.ListSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill; this.ListSplitContainer.IsSplitterFixed = true; this.ListSplitContainer.Location = new System.Drawing.Point(0, 70); this.ListSplitContainer.Name = "ListSplitContainer"; this.ListSplitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal; // // ListSplitContainer.Panel1 // this.ListSplitContainer.Panel1.Controls.Add(this.lvPersonal); // // ListSplitContainer.Panel2 // this.ListSplitContainer.Panel2.Controls.Add(this.lvMilitia); this.ListSplitContainer.RememberDistanceKey = null; this.ListSplitContainer.Size = new System.Drawing.Size(409, 537); this.ListSplitContainer.SplitterDistance = 232; this.ListSplitContainer.SplitterWidth = 1; this.ListSplitContainer.TabIndex = 9; // // lvPersonal // this.lvPersonal.BorderStyle = System.Windows.Forms.BorderStyle.None; this.lvPersonal.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.chDescription, this.chYou, this.chAll}); this.lvPersonal.Dock = System.Windows.Forms.DockStyle.Fill; this.lvPersonal.FullRowSelect = true; listViewGroup1.Header = "Kills"; listViewGroup1.Name = "Kills"; listViewGroup2.Header = "Victory Points"; listViewGroup2.Name = "Victory Points"; this.lvPersonal.Groups.AddRange(new System.Windows.Forms.ListViewGroup[] { listViewGroup1, listViewGroup2}); this.lvPersonal.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; this.lvPersonal.HideSelection = false; listViewItem1.Group = listViewGroup1; listViewItem2.Group = listViewGroup1; listViewItem3.Group = listViewGroup1; listViewItem4.Group = listViewGroup2; listViewItem5.Group = listViewGroup2; listViewItem6.Group = listViewGroup2; this.lvPersonal.Items.AddRange(new System.Windows.Forms.ListViewItem[] { listViewItem1, listViewItem2, listViewItem3, listViewItem4, listViewItem5, listViewItem6}); this.lvPersonal.Location = new System.Drawing.Point(0, 0); this.lvPersonal.MultiSelect = false; this.lvPersonal.Name = "lvPersonal"; this.lvPersonal.Size = new System.Drawing.Size(409, 232); this.lvPersonal.TabIndex = 6; this.lvPersonal.UseCompatibleStateImageBehavior = false; this.lvPersonal.View = System.Windows.Forms.View.Details; this.lvPersonal.ColumnWidthChanging += new System.Windows.Forms.ColumnWidthChangingEventHandler(this.lvPersonal_ColumnWidthChanging); // // chDescription // this.chDescription.Text = "Personal"; this.chDescription.Width = 101; // // chYou // this.chYou.Text = "You"; this.chYou.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; // // chAll // this.chAll.Text = "All"; this.chAll.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; // // lvMilitia // this.lvMilitia.BorderStyle = System.Windows.Forms.BorderStyle.None; this.lvMilitia.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.chMilitia, this.chAmarr, this.chCaldari, this.chGallente, this.chMinmatar}); this.lvMilitia.Dock = System.Windows.Forms.DockStyle.Fill; this.lvMilitia.FullRowSelect = true; listViewGroup3.Header = "General"; listViewGroup3.Name = "General"; listViewGroup4.Header = "Kills"; listViewGroup4.Name = "Kills"; listViewGroup5.Header = "Victory Points"; listViewGroup5.Name = "Victory Points"; this.lvMilitia.Groups.AddRange(new System.Windows.Forms.ListViewGroup[] { listViewGroup3, listViewGroup4, listViewGroup5}); this.lvMilitia.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; this.lvMilitia.HideSelection = false; listViewItem7.Group = listViewGroup3; listViewItem8.Group = listViewGroup3; listViewItem9.Group = listViewGroup4; listViewItem10.Group = listViewGroup4; listViewItem11.Group = listViewGroup4; listViewItem12.Group = listViewGroup5; listViewItem13.Group = listViewGroup5; listViewItem14.Group = listViewGroup5; this.lvMilitia.Items.AddRange(new System.Windows.Forms.ListViewItem[] { listViewItem7, listViewItem8, listViewItem9, listViewItem10, listViewItem11, listViewItem12, listViewItem13, listViewItem14}); this.lvMilitia.Location = new System.Drawing.Point(0, 0); this.lvMilitia.MultiSelect = false; this.lvMilitia.Name = "lvMilitia"; this.lvMilitia.Size = new System.Drawing.Size(409, 304); this.lvMilitia.TabIndex = 7; this.lvMilitia.UseCompatibleStateImageBehavior = false; this.lvMilitia.View = System.Windows.Forms.View.Details; this.lvMilitia.ColumnWidthChanging += new System.Windows.Forms.ColumnWidthChangingEventHandler(this.lvMilitia_ColumnWidthChanging); // // chMilitia // this.chMilitia.Text = "Militia"; this.chMilitia.Width = 101; // // chAmarr // this.chAmarr.Text = "Amarr"; this.chAmarr.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; // // chCaldari // this.chCaldari.Text = "Caldari"; this.chCaldari.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; // // chGallente // this.chGallente.Text = "Gallente"; this.chGallente.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; // // chMinmatar // this.chMinmatar.Text = "Minmatar"; this.chMinmatar.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; // // HeaderTableLayoutPanel // this.HeaderTableLayoutPanel.AutoSize = true; this.HeaderTableLayoutPanel.BackColor = System.Drawing.Color.WhiteSmoke; this.HeaderTableLayoutPanel.ColumnCount = 4; this.HeaderTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 64F)); this.HeaderTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); this.HeaderTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); this.HeaderTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 65F)); this.HeaderTableLayoutPanel.Controls.Add(this.FightingPartiesPanel, 1, 0); this.HeaderTableLayoutPanel.Controls.Add(this.FactionPictureBox, 0, 0); this.HeaderTableLayoutPanel.Controls.Add(this.CorporationPictureBox, 3, 0); this.HeaderTableLayoutPanel.Controls.Add(this.RankLabel, 1, 2); this.HeaderTableLayoutPanel.Controls.Add(this.TimeServedLabel, 2, 2); this.HeaderTableLayoutPanel.Controls.Add(this.FactionLabel, 1, 1); this.HeaderTableLayoutPanel.Controls.Add(this.CorporationLabel, 2, 1); this.HeaderTableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Top; this.HeaderTableLayoutPanel.Location = new System.Drawing.Point(0, 0); this.HeaderTableLayoutPanel.Name = "HeaderTableLayoutPanel"; this.HeaderTableLayoutPanel.Padding = new System.Windows.Forms.Padding(0, 3, 0, 3); this.HeaderTableLayoutPanel.RowCount = 3; this.HeaderTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); this.HeaderTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.HeaderTableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.HeaderTableLayoutPanel.Size = new System.Drawing.Size(409, 70); this.HeaderTableLayoutPanel.TabIndex = 8; // // FightingPartiesPanel // this.HeaderTableLayoutPanel.SetColumnSpan(this.FightingPartiesPanel, 2); this.FightingPartiesPanel.Controls.Add(this.PlusPictureBox); this.FightingPartiesPanel.Controls.Add(this.AgainstPictureBox); this.FightingPartiesPanel.Controls.Add(this.AllyAgainstFactionPictureBox); this.FightingPartiesPanel.Controls.Add(this.PrimeAgainstFactionPictureBox); this.FightingPartiesPanel.Controls.Add(this.EnlistedFactionPictureBox); this.FightingPartiesPanel.Dock = System.Windows.Forms.DockStyle.Fill; this.FightingPartiesPanel.Location = new System.Drawing.Point(64, 3); this.FightingPartiesPanel.Margin = new System.Windows.Forms.Padding(0); this.FightingPartiesPanel.Name = "FightingPartiesPanel"; this.FightingPartiesPanel.Size = new System.Drawing.Size(280, 35); this.FightingPartiesPanel.TabIndex = 7; // // PlusPictureBox // this.PlusPictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom))); this.PlusPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("PlusPictureBox.Image"))); this.PlusPictureBox.Location = new System.Drawing.Point(156, 2); this.PlusPictureBox.Margin = new System.Windows.Forms.Padding(0); this.PlusPictureBox.Name = "PlusPictureBox"; this.PlusPictureBox.Size = new System.Drawing.Size(32, 32); this.PlusPictureBox.TabIndex = 6; this.PlusPictureBox.TabStop = false; // // AgainstPictureBox // this.AgainstPictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom))); this.AgainstPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("AgainstPictureBox.Image"))); this.AgainstPictureBox.Location = new System.Drawing.Point(92, 2); this.AgainstPictureBox.Margin = new System.Windows.Forms.Padding(0); this.AgainstPictureBox.Name = "AgainstPictureBox"; this.AgainstPictureBox.Size = new System.Drawing.Size(32, 32); this.AgainstPictureBox.TabIndex = 5; this.AgainstPictureBox.TabStop = false; // // SecondAgainstFactionPictureBox // this.AllyAgainstFactionPictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom))); this.AllyAgainstFactionPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("SecondAgainstFactionPictureBox.Image"))); this.AllyAgainstFactionPictureBox.InitialImage = ((System.Drawing.Image)(resources.GetObject("SecondAgainstFactionPictureBox.InitialImage"))); this.AllyAgainstFactionPictureBox.Location = new System.Drawing.Point(188, 2); this.AllyAgainstFactionPictureBox.Margin = new System.Windows.Forms.Padding(0); this.AllyAgainstFactionPictureBox.Name = "AllyAgainstFactionPictureBox"; this.AllyAgainstFactionPictureBox.Size = new System.Drawing.Size(32, 32); this.AllyAgainstFactionPictureBox.TabIndex = 4; this.AllyAgainstFactionPictureBox.TabStop = false; // // FirstAgainstFactionPictureBox // this.PrimeAgainstFactionPictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom))); this.PrimeAgainstFactionPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("FirstAgainstFactionPictureBox.Image"))); this.PrimeAgainstFactionPictureBox.InitialImage = ((System.Drawing.Image)(resources.GetObject("FirstAgainstFactionPictureBox.InitialImage"))); this.PrimeAgainstFactionPictureBox.Location = new System.Drawing.Point(124, 2); this.PrimeAgainstFactionPictureBox.Margin = new System.Windows.Forms.Padding(0); this.PrimeAgainstFactionPictureBox.Name = "PrimeAgainstFactionPictureBox"; this.PrimeAgainstFactionPictureBox.Size = new System.Drawing.Size(32, 32); this.PrimeAgainstFactionPictureBox.TabIndex = 1; this.PrimeAgainstFactionPictureBox.TabStop = false; // // EnlistedFactionPictureBox // this.EnlistedFactionPictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom))); this.EnlistedFactionPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("EnlistedFactionPictureBox.Image"))); this.EnlistedFactionPictureBox.InitialImage = ((System.Drawing.Image)(resources.GetObject("EnlistedFactionPictureBox.InitialImage"))); this.EnlistedFactionPictureBox.Location = new System.Drawing.Point(60, 2); this.EnlistedFactionPictureBox.Margin = new System.Windows.Forms.Padding(0); this.EnlistedFactionPictureBox.Name = "EnlistedFactionPictureBox"; this.EnlistedFactionPictureBox.Size = new System.Drawing.Size(32, 32); this.EnlistedFactionPictureBox.TabIndex = 0; this.EnlistedFactionPictureBox.TabStop = false; // // FactionPictureBox // this.FactionPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("FactionPictureBox.Image"))); this.FactionPictureBox.InitialImage = ((System.Drawing.Image)(resources.GetObject("FactionPictureBox.InitialImage"))); this.FactionPictureBox.Location = new System.Drawing.Point(0, 3); this.FactionPictureBox.Margin = new System.Windows.Forms.Padding(0); this.FactionPictureBox.Name = "FactionPictureBox"; this.HeaderTableLayoutPanel.SetRowSpan(this.FactionPictureBox, 3); this.FactionPictureBox.Size = new System.Drawing.Size(64, 64); this.FactionPictureBox.TabIndex = 8; this.FactionPictureBox.TabStop = false; // // CorporationPictureBox // this.CorporationPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("CorporationPictureBox.Image"))); this.CorporationPictureBox.InitialImage = ((System.Drawing.Image)(resources.GetObject("CorporationPictureBox.InitialImage"))); this.CorporationPictureBox.Location = new System.Drawing.Point(344, 3); this.CorporationPictureBox.Margin = new System.Windows.Forms.Padding(0); this.CorporationPictureBox.Name = "CorporationPictureBox"; this.HeaderTableLayoutPanel.SetRowSpan(this.CorporationPictureBox, 3); this.CorporationPictureBox.Size = new System.Drawing.Size(64, 64); this.CorporationPictureBox.TabIndex = 9; this.CorporationPictureBox.TabStop = false; // // RankLabel // this.RankLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.RankLabel.AutoSize = true; this.RankLabel.Location = new System.Drawing.Point(165, 54); this.RankLabel.Name = "RankLabel"; this.RankLabel.Size = new System.Drawing.Size(36, 13); this.RankLabel.TabIndex = 3; this.RankLabel.Text = "Rank:"; this.RankLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // TimeServedLabel // this.TimeServedLabel.AutoSize = true; this.TimeServedLabel.Location = new System.Drawing.Point(207, 54); this.TimeServedLabel.Name = "TimeServedLabel"; this.TimeServedLabel.Size = new System.Drawing.Size(68, 13); this.TimeServedLabel.TabIndex = 4; this.TimeServedLabel.Text = "Time served:"; this.TimeServedLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // FactionLabel // this.FactionLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.FactionLabel.AutoSize = true; this.FactionLabel.Location = new System.Drawing.Point(156, 41); this.FactionLabel.Margin = new System.Windows.Forms.Padding(3, 3, 3, 0); this.FactionLabel.Name = "FactionLabel"; this.FactionLabel.Size = new System.Drawing.Size(45, 13); this.FactionLabel.TabIndex = 10; this.FactionLabel.Text = "Faction:"; this.FactionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // CorporationLabel // this.CorporationLabel.AutoSize = true; this.CorporationLabel.Location = new System.Drawing.Point(207, 41); this.CorporationLabel.Margin = new System.Windows.Forms.Padding(3, 3, 3, 0); this.CorporationLabel.Name = "CorporationLabel"; this.CorporationLabel.Size = new System.Drawing.Size(64, 13); this.CorporationLabel.TabIndex = 11; this.CorporationLabel.Text = "Corporation:"; // // CharacterFactionalWarfareStatsList // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Controls.Add(this.ListPanel); this.Controls.Add(this.noFactionalWarfareLabel); this.Controls.Add(this.notEnlistedLabel); this.Name = "CharacterFactionalWarfareStatsList"; this.Size = new System.Drawing.Size(409, 607); this.ListPanel.ResumeLayout(false); this.ListPanel.PerformLayout(); this.ListSplitContainer.Panel1.ResumeLayout(false); this.ListSplitContainer.Panel2.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.ListSplitContainer)).EndInit(); this.ListSplitContainer.ResumeLayout(false); this.HeaderTableLayoutPanel.ResumeLayout(false); this.HeaderTableLayoutPanel.PerformLayout(); this.FightingPartiesPanel.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.PlusPictureBox)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.AgainstPictureBox)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.AllyAgainstFactionPictureBox)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.PrimeAgainstFactionPictureBox)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.EnlistedFactionPictureBox)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.FactionPictureBox)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.CorporationPictureBox)).EndInit(); this.ResumeLayout(false); } #endregion private System.Windows.Forms.Label noFactionalWarfareLabel; private System.Windows.Forms.Label notEnlistedLabel; private System.Windows.Forms.Panel ListPanel; private System.Windows.Forms.ListView lvPersonal; private System.Windows.Forms.ColumnHeader chDescription; private System.Windows.Forms.ColumnHeader chYou; private System.Windows.Forms.ColumnHeader chAll; private System.Windows.Forms.ListView lvMilitia; private System.Windows.Forms.ColumnHeader chMilitia; private System.Windows.Forms.ColumnHeader chAmarr; private System.Windows.Forms.ColumnHeader chCaldari; private System.Windows.Forms.ColumnHeader chGallente; private System.Windows.Forms.ColumnHeader chMinmatar; private System.Windows.Forms.TableLayoutPanel HeaderTableLayoutPanel; private System.Windows.Forms.Label RankLabel; private Common.Controls.PersistentSplitContainer ListSplitContainer; private System.Windows.Forms.Label TimeServedLabel; private System.Windows.Forms.Panel FightingPartiesPanel; private System.Windows.Forms.PictureBox AllyAgainstFactionPictureBox; private System.Windows.Forms.PictureBox PrimeAgainstFactionPictureBox; private System.Windows.Forms.PictureBox EnlistedFactionPictureBox; private System.Windows.Forms.PictureBox PlusPictureBox; private System.Windows.Forms.PictureBox AgainstPictureBox; private System.Windows.Forms.PictureBox FactionPictureBox; private System.Windows.Forms.PictureBox CorporationPictureBox; private System.Windows.Forms.Label FactionLabel; private System.Windows.Forms.Label CorporationLabel; } } ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterFactionalWarfareStatsList.cs ================================================ using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Windows.Forms; using EVEMon.Common; using EVEMon.Common.Constants; using EVEMon.Common.Controls; using EVEMon.Common.CustomEventArgs; using EVEMon.Common.Enumerations; using EVEMon.Common.Extensions; using EVEMon.Common.Factories; using EVEMon.Common.Models; using EVEMon.Common.Service; namespace EVEMon.CharacterMonitoring { internal sealed partial class CharacterFactionalWarfareStatsList : UserControl { #region Fields private FactionalWarfareStats m_charFacWarStats; #endregion #region Constructor public CharacterFactionalWarfareStatsList() { InitializeComponent(); ListPanel.Visible = false; notEnlistedLabel.Visible = false; notEnlistedLabel.Font = FontFactory.GetFont("Tahoma", 11.25F, FontStyle.Bold); noFactionalWarfareLabel.Font = FontFactory.GetFont("Tahoma", 11.25F, FontStyle.Bold); } #endregion #region Properties /// /// Gets the character associated with this monitor. /// internal CCPCharacter Character { get; set; } #endregion #region Inherited events /// /// On load subscribe the events. /// /// An that contains the event data. protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (DesignMode || this.IsDesignModeHosted()) return; EveMonClient.CharacterFactionalWarfareStatsUpdated += EveMonClient_CharacterFactionalWarfareStatsUpdated; EveMonClient.EveFactionalWarfareStatsUpdated += EveMonClient_EveFactionalWarfareStatsUpdated; EveMonClient.SettingsChanged += EveMonClient_SettingsChanged; Disposed += OnDisposed; } /// /// Unsubscribe events on disposing. /// /// /// private void OnDisposed(object sender, EventArgs e) { EveMonClient.CharacterFactionalWarfareStatsUpdated -= EveMonClient_CharacterFactionalWarfareStatsUpdated; EveMonClient.EveFactionalWarfareStatsUpdated -= EveMonClient_EveFactionalWarfareStatsUpdated; EveMonClient.SettingsChanged -= EveMonClient_SettingsChanged; Disposed -= OnDisposed; } /// /// When the control becomes visible again, we update the content. /// /// protected override void OnVisibleChanged(EventArgs e) { base.OnVisibleChanged(e); if (Visible) UpdateContent(); } #endregion #region Content Management /// /// Updates all the content. /// private void UpdateContent() { // Returns if not visible if (!Visible) return; // When no character, we just hide the list if (Character == null) { noFactionalWarfareLabel.Visible = true; notEnlistedLabel.Visible = false; ListPanel.Visible = false; return; } // When character is not enlisted in factional warfare, we just hide the list // and display the 'Not enlisted' label if (Character.IsFactionalWarfareNotEnlisted) { notEnlistedLabel.Visible = true; noFactionalWarfareLabel.Visible = false; ListPanel.Visible = false; return; } m_charFacWarStats = Character.FactionalWarfareStats; // Update the header controls UpdateHeader(); // Update the personal stats list UpdatePersonalStatsList(); // Update the militia stats list UpdateMilitiaStatsList(); noFactionalWarfareLabel.Visible = m_charFacWarStats == null; ListPanel.Visible = !noFactionalWarfareLabel.Visible; } /// /// Updates the header. /// private void UpdateHeader() { if (m_charFacWarStats == null) return; List factionsAgainstEnlisted = EveFactionalWarfareStats.GetAgainstFactionIDs(m_charFacWarStats.FactionID).ToList(); FactionPictureBox.Visible = !Settings.UI.SafeForWork; CorporationPictureBox.Visible = !Settings.UI.SafeForWork; FightingPartiesPanel.Visible = !Settings.UI.SafeForWork || !factionsAgainstEnlisted.Any(); // Update the images ImageService.GetAllianceImageAsync(FactionPictureBox, m_charFacWarStats.FactionID); ImageService.GetCorporationImageAsync(CorporationPictureBox, Character.CorporationID); ImageService.GetAllianceImageAsync(EnlistedFactionPictureBox, m_charFacWarStats.FactionID); if (factionsAgainstEnlisted.Any()) { ImageService.GetAllianceImageAsync(PrimeAgainstFactionPictureBox, factionsAgainstEnlisted[0]); ImageService.GetAllianceImageAsync(AllyAgainstFactionPictureBox, factionsAgainstEnlisted[1]); } // Update the labels string highestRankText = m_charFacWarStats.HighestRank > m_charFacWarStats.CurrentRank ? $"({GetMilitiaRank(m_charFacWarStats.HighestRank)})" : string.Empty; TimeSpan timeServed = DateTime.UtcNow.Subtract(m_charFacWarStats.EnlistedDate); string timeServedText = timeServed < TimeSpan.FromDays(1) ? "Less than one day." : $"{timeServed.Days} day{(timeServed.Days.S())}"; FactionLabel.Text = $"Faction: {m_charFacWarStats.FactionName}"; CorporationLabel.Text = $"Corporation: {Character.CorporationName}"; RankLabel.Text = $"Rank: {GetMilitiaRank(m_charFacWarStats.CurrentRank)} {highestRankText}"; TimeServedLabel.Text = $"Time served: {timeServedText}"; } /// /// Updates the personal stats list. /// private void UpdatePersonalStatsList() { if (m_charFacWarStats == null) return; lvPersonal.BeginUpdate(); try { foreach (ListViewItem item in lvPersonal.Items.Cast()) { // Add enough subitems to match the number of columns while (item.SubItems.Count < lvPersonal.Columns.Count) { item.SubItems.Add(string.Empty); } // Create the subitems CreatePersonalListViewSubItems(item); } // Adjust the size of the columns AdjustColumns(lvPersonal); } finally { lvPersonal.EndUpdate(); } } /// /// Creates the personal list view sub items. /// /// The item. private void CreatePersonalListViewSubItems(ListViewItem item) { // Clear the subitems except the item itself for (int i = 1; i < lvPersonal.Columns.Count; i++) { item.SubItems.RemoveAt(1); } switch (item.Index) { case 0: item.SubItems.Add(m_charFacWarStats.KillsYesterday.ToNumericString(0)); item.SubItems.Add(EveFactionalWarfareStats.TotalsKillsYesterday.ToNumericString(0)); break; case 1: item.SubItems.Add(m_charFacWarStats.KillsLastWeek.ToNumericString(0)); item.SubItems.Add(EveFactionalWarfareStats.TotalsKillsLastWeek.ToNumericString(0)); break; case 2: item.SubItems.Add(m_charFacWarStats.KillsTotal.ToNumericString(0)); item.SubItems.Add(EveFactionalWarfareStats.TotalsKillsTotal.ToNumericString(0)); break; case 3: item.SubItems.Add(m_charFacWarStats.VictoryPointsYesterday.ToNumericString(0)); item.SubItems.Add(EveFactionalWarfareStats.TotalsVictoryPointsYesterday.ToNumericString(0)); break; case 4: item.SubItems.Add(m_charFacWarStats.VictoryPointsLastWeek.ToNumericString(0)); item.SubItems.Add(EveFactionalWarfareStats.TotalsVictoryPointsLastWeek.ToNumericString(0)); break; case 5: item.SubItems.Add(m_charFacWarStats.VictoryPointsTotal.ToNumericString(0)); item.SubItems.Add(EveFactionalWarfareStats.TotalsVictoryPointsTotal.ToNumericString(0)); break; default: throw new NotImplementedException(); } } /// /// Updates the militia stats list. /// private void UpdateMilitiaStatsList() { if (m_charFacWarStats == null) return; lvMilitia.BeginUpdate(); try { foreach (ListViewItem item in lvMilitia.Items.Cast()) { // Add enough subitems to match the number of columns while (item.SubItems.Count < lvMilitia.Columns.Count) { item.SubItems.Add(string.Empty); } // Create the subitems CreateMilitiaListViewSubItems(item); } // Adjust the size of the columns AdjustColumns(lvMilitia); } finally { lvMilitia.EndUpdate(); } } /// /// Creates the militia list view sub items. /// /// The item. private void CreateMilitiaListViewSubItems(ListViewItem item) { // Exit if EVE factional warfare stats have not yet been updated if (!EveFactionalWarfareStats.FactionalWarfareStats.Any()) return; EveFactionWarfareStats amarrFacWarStats = EveFactionalWarfareStats.GetFactionalWarfareStatsForFaction(DBConstants.AmarrFactionID); EveFactionWarfareStats caldariFacWarStats = EveFactionalWarfareStats.GetFactionalWarfareStatsForFaction(DBConstants.CaldariFactionID); EveFactionWarfareStats gallenteFacWarStats = EveFactionalWarfareStats.GetFactionalWarfareStatsForFaction(DBConstants.GallenteFactionID); EveFactionWarfareStats minmatarFacWarStats = EveFactionalWarfareStats.GetFactionalWarfareStatsForFaction(DBConstants.MinmatarFactionID); // Clear the subitems except the item itself for (int i = 1; i < lvMilitia.Columns.Count; i++) { item.SubItems.RemoveAt(1); } switch (item.Index) { case 0: item.SubItems.Add(amarrFacWarStats.Pilots.ToNumericString(0)); item.SubItems.Add(caldariFacWarStats.Pilots.ToNumericString(0)); item.SubItems.Add(gallenteFacWarStats.Pilots.ToNumericString(0)); item.SubItems.Add(minmatarFacWarStats.Pilots.ToNumericString(0)); break; case 1: item.SubItems.Add(amarrFacWarStats.SystemsControlled.ToNumericString(0)); item.SubItems.Add(caldariFacWarStats.SystemsControlled.ToNumericString(0)); item.SubItems.Add(gallenteFacWarStats.SystemsControlled.ToNumericString(0)); item.SubItems.Add(minmatarFacWarStats.SystemsControlled.ToNumericString(0)); break; case 2: item.SubItems.Add(amarrFacWarStats.KillsYesterday.ToNumericString(0)); item.SubItems.Add(caldariFacWarStats.KillsYesterday.ToNumericString(0)); item.SubItems.Add(gallenteFacWarStats.KillsYesterday.ToNumericString(0)); item.SubItems.Add(minmatarFacWarStats.KillsYesterday.ToNumericString(0)); break; case 3: item.SubItems.Add(amarrFacWarStats.KillsLastWeek.ToNumericString(0)); item.SubItems.Add(caldariFacWarStats.KillsLastWeek.ToNumericString(0)); item.SubItems.Add(gallenteFacWarStats.KillsLastWeek.ToNumericString(0)); item.SubItems.Add(minmatarFacWarStats.KillsLastWeek.ToNumericString(0)); break; case 4: item.SubItems.Add(amarrFacWarStats.KillsTotal.ToNumericString(0)); item.SubItems.Add(caldariFacWarStats.KillsTotal.ToNumericString(0)); item.SubItems.Add(gallenteFacWarStats.KillsTotal.ToNumericString(0)); item.SubItems.Add(minmatarFacWarStats.KillsTotal.ToNumericString(0)); break; case 5: item.SubItems.Add(amarrFacWarStats.VictoryPointsYesterday.ToNumericString(0)); item.SubItems.Add(caldariFacWarStats.VictoryPointsYesterday.ToNumericString(0)); item.SubItems.Add(gallenteFacWarStats.VictoryPointsYesterday.ToNumericString(0)); item.SubItems.Add(minmatarFacWarStats.VictoryPointsYesterday.ToNumericString(0)); break; case 6: item.SubItems.Add(amarrFacWarStats.VictoryPointsLastWeek.ToNumericString(0)); item.SubItems.Add(caldariFacWarStats.VictoryPointsLastWeek.ToNumericString(0)); item.SubItems.Add(gallenteFacWarStats.VictoryPointsLastWeek.ToNumericString(0)); item.SubItems.Add(minmatarFacWarStats.VictoryPointsLastWeek.ToNumericString(0)); break; case 7: item.SubItems.Add(amarrFacWarStats.VictoryPointsTotal.ToNumericString(0)); item.SubItems.Add(caldariFacWarStats.VictoryPointsTotal.ToNumericString(0)); item.SubItems.Add(gallenteFacWarStats.VictoryPointsTotal.ToNumericString(0)); item.SubItems.Add(minmatarFacWarStats.VictoryPointsTotal.ToNumericString(0)); break; default: throw new NotImplementedException(); } } /// /// Adjusts the columns. /// private void AdjustColumns(ListView listView) { foreach (ColumnHeader column in listView.Columns) { column.Width = -2; // Due to .NET design we need to prevent the last colummn to resize to the right end // Return if it's not the last column if (column.Index != listView.Columns.Count - 1) continue; const int Pad = 4; // Calculate column header text width with padding int columnHeaderWidth = TextRenderer.MeasureText(column.Text, Font).Width + Pad * 2; // If there is an image assigned to the header, add its width with padding if (listView.SmallImageList != null && column.ImageIndex > -1) columnHeaderWidth += listView.SmallImageList.ImageSize.Width + Pad; // Calculate the width of the header and the items of the column int columnMaxWidth = column.ListView.Items.Cast().Select( item => TextRenderer.MeasureText(item.SubItems[column.Index].Text, Font).Width).Concat( new[] { columnHeaderWidth }).Max() + Pad + 1; // Assign the width found column.Width = columnMaxWidth; } } #endregion #region Helper methods /// /// Gets the militia rank. /// /// The rank. /// private string GetMilitiaRank(int rank) { switch (Character.FactionalWarfareStats.FactionID) { case DBConstants.AmarrFactionID: return GetFactionMilitiaRank(rank).GetDescription(); case DBConstants.CaldariFactionID: return GetFactionMilitiaRank(rank).GetDescription(); case DBConstants.GallenteFactionID: return GetFactionMilitiaRank(rank).GetDescription(); case DBConstants.MinmatarFactionID: return GetFactionMilitiaRank(rank).GetDescription(); default: throw new NotImplementedException(); } } /// /// Gets the faction militia rank. /// /// /// The rank. /// private static T GetFactionMilitiaRank(int rank) { if (rank < Enum.GetValues(typeof(T)).Length) return (T)Enum.ToObject(typeof(T), rank); return default(T); } #endregion #region Global events /// /// When the character factional warfare stats update, we update the content. /// /// /// private void EveMonClient_CharacterFactionalWarfareStatsUpdated(object sender, CharacterChangedEventArgs e) { if (e.Character != Character) return; UpdateContent(); } /// /// When the EVE factional warfare stats update, we update the content. /// /// /// private void EveMonClient_EveFactionalWarfareStatsUpdated(object sender, EventArgs e) { UpdateContent(); } /// /// When the settings change, we update the content. /// /// In case 'SafeForWork' gets enabled. /// The source of the event. /// The instance containing the event data. private void EveMonClient_SettingsChanged(object sender, EventArgs e) { UpdateContent(); } #endregion #region Local events /// /// Handles the ColumnWidthChanging event of the lvPersonal control. /// /// The source of the event. /// The instance containing the event data. private void lvPersonal_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e) { e.Cancel = true; e.NewWidth = lvPersonal.Columns[e.ColumnIndex].Width; } /// /// Handles the ColumnWidthChanging event of the lvMilitia control. /// /// The source of the event. /// The instance containing the event data. private void lvMilitia_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e) { e.Cancel = true; e.NewWidth = lvMilitia.Columns[e.ColumnIndex].Width; } #endregion } } ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterFactionalWarfareStatsList.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAJ8SURBVFhH7VbPi1JRFJ7njNmMFs6IY1kSlC4aRMT8Lf7W/LFoIbgIQgcrFy0V3IjwRCVoMUZQ C6FVu0CGFrZp59/QP9BfMCu3nb5zmQfNQM3jjTkQfvDx7nv33nO+c+45l7exscY6A+sMaMjAJqAHrgE8 1mBC+xZ2uA3sAnvADrBKEdIWYDabd6fT6fFisaDJZPLTarUeIiS99rDU75Q49RaLxToej6lQKFAqlSKj 0fgRJizqzVxiJWcAmd9vtVrk9/spHo8TTuQzTN69hFn1W7nwkAFbu92mUChEiURCEeBQb0XlSo6WHV4H lKq/Adjt9nudTkdEn0wm/40Adn4TuA3cAWzAPsBjp9N50O/3KZvNihqAPj6CpWZA4qgfAEfAe+Ad8Bbg Jz59mM/nwnmxWCSv1/s9k8kc4V1WGIvFZJPJ9ATCdCoTfmaZZACazebr2WxGo9GIBoMBDYdDMZZlmcrl sqgB7oRKpUK9Xo84KzzHz263Sy6X6wRWbZpE6HS6zXA4/KZarYpC42iZnHZEK86emc/nhQgmj3O5nHgy cXoE5wHNdwT6+xkKjnD8hOMnXDiCKAOKRqNCDIvgd3TGGaJVCfX6A84ToEHLMfCePfAx2ABf/MaXpVKJ 0uk0BYNBQqN8w9yrc2ue4/0peABuaRXAG1kEXzJc5Qrv1+t1ikQiioBjzD06t4b33AJ3QEmrgD/tMzQa DQoEAoqApbfhRYKFAI/Hc3UCarUa+Xy+qxMA5ydut5scDgfhmv50WicXZW5p83r8hNRQ/V/Ar5IkHcIy XzgrA1+vVtAPcp8/BLdX5v3UEYvgvyC+ZLhdl95qqw5o7e//zcBfi/MXCa/XldpQmvEAAAAASUVORK5C YII= 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 SUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwAAA DsABataJCQAAA21JREFUWEdjYBgFlIUAo7GxMStlRpCpG2TxhN4JXtmZ2X2SkpJcZBpDvrYQ3xCVvbv3 Puvt7v2rq61bDTSJmXzTcOtkBEqx4JBm9PXxXa6upr6FhYXFEpcaLS0tNrIcBgriKROmeGWkZ/TiCWIe qAM50C0BR1HPBJ+szKx+sqIoJISyIAZF0Z5dex5TEkWMgf6BK/EFcXN1sTzQpyK4gt/Px28xgSgiGDs4 gxikc8HUhvKelopmPKZw44oigjYTo2BRR8DBjQtbbwkLC/MSo56qanR1dQV3z4z6vW95xR9genGlquHE GFaRnxB6cXPZ/zMbyv5P6O2YC0wL/EB9VCkVMYrXwqz41GXT61Yt6MtaM78zavWyrqBVW6b5XX9wpOP/ szMz/5/aMfXzkV2LruzbPPfcjnUzj2xbPfNISox/C1oZgq9MgfgZVGj0dfX5p6emo+d9IS0l4TnZ8R5/ FkzI/H8S6PM7hzv+v7o0///bO5v+PzjZ///M1qr/y6Yk/89PcPmrriy+jp2dXREWkvb29iyT+id5FuYX ThAXFwclTOwgKChIFU/xCipqg7k52R8pSIv+z45z/X/tyIz/1/a1/F/UZPM/N0zjv5mmyHteDpYSoDqU uiEgIEB5/579RBXbBPM+0HCpYBets8c2tf3fvrAM7JDzu9v/lyU7fmVjY/MEyoOCGh0QYy5cD968D1K1 aUb+vZM7p/4Pc1X6LyrI/b+7JuH/3I6Uf8CgdsGTgAmaS0ziZyjJzzI4uq7jv7uN3n8VGcH3nBzM51Wk +P/PaEv+X1GUOgdHCBBlNlGKJnSXtyRHOv3n4mK/DtTgBIpvDjaWKkMduW+T24of8/LyChNlELmKsuO9 LrCysGwA6ldAMgMU77ZhvvbXVFRU3Mg1G0MfqEqNi4sDGcgEkpSXl+cQFuCLBjJxFb0iitJielCDmOLj 4x2AbHayHKSnp8e9cN7CKVs2bnkbFhJWBjQEo87HZ3BPV0/mvt37XuXl5E3j4uKSIMcRjMC6fFJ8XPwv fn7+NqABuFpGWM2ura0NLMgv+KWvp78HqICPHAcwKCsrg4LQUphfGERjAziLVx0dHQ2gBkcBAQEfIE39 9iIoffT39AeAildRUVFQHqcvADXZ9uzcQ1TxSiuXkVS80soR1CleaeW6UXOJCQEA0sMsxGlB/rQAAAAA SUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwAAA DsABataJCQAAA21JREFUWEdjYBgFlIUAo7GxMStlRpCpG2TxhN4JXtmZ2X2SkpJcZBpDvrYQ3xCVvbv3 Puvt7v2rq61bDTSJmXzTcOtkBEqx4JBm9PXxXa6upr6FhYXFEpcaLS0tNrIcBgriKROmeGWkZ/TiCWIe qAM50C0BR1HPBJ+szKx+sqIoJISyIAZF0Z5dex5TEkWMgf6BK/EFcXN1sTzQpyK4gt/Px28xgSgiGDs4 gxikc8HUhvKelopmPKZw44oigjYTo2BRR8DBjQtbbwkLC/MSo56qanR1dQV3z4z6vW95xR9genGlquHE GFaRnxB6cXPZ/zMbyv5P6O2YC0wL/EB9VCkVMYrXwqz41GXT61Yt6MtaM78zavWyrqBVW6b5XX9wpOP/ szMz/5/aMfXzkV2LruzbPPfcjnUzj2xbPfNISox/C1oZgq9MgfgZVGj0dfX5p6emo+d9IS0l4TnZ8R5/ FkzI/H8S6PM7hzv+v7o0///bO5v+PzjZ///M1qr/y6Yk/89PcPmrriy+jp2dXREWkvb29iyT+id5FuYX ThAXFwclTOwgKChIFU/xCipqg7k52R8pSIv+z45z/X/tyIz/1/a1/F/UZPM/N0zjv5mmyHteDpYSoDqU uiEgIEB5/579RBXbBPM+0HCpYBets8c2tf3fvrAM7JDzu9v/lyU7fmVjY/MEyoOCGh0QYy5cD968D1K1 aUb+vZM7p/4Pc1X6LyrI/b+7JuH/3I6Uf8CgdsGTgAmaS0ziZyjJzzI4uq7jv7uN3n8VGcH3nBzM51Wk +P/PaEv+X1GUOgdHCBBlNlGKJnSXtyRHOv3n4mK/DtTgBIpvDjaWKkMduW+T24of8/LyChNlELmKsuO9 LrCysGwA6ldAMgMU77ZhvvbXVFRU3Mg1G0MfqEqNi4sDGcgEkpSXl+cQFuCLBjJxFb0iitJielCDmOLj 4x2AbHayHKSnp8e9cN7CKVs2bnkbFhJWBjQEo87HZ3BPV0/mvt37XuXl5E3j4uKSIMcRjMC6fFJ8XPwv fn7+NqABuFpGWM2ura0NLMgv+KWvp78HqICPHAcwKCsrg4LQUphfGERjAziLVx0dHQ2gBkcBAQEfIE39 9iIoffT39AeAildRUVFQHqcvADXZ9uzcQ1TxSiuXkVS80soR1CleaeW6UXOJCQEA0sMsxGlB/rQAAAAA SUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwAAA DsABataJCQAAA21JREFUWEdjYBgFlIUAo7GxMStlRpCpG2TxhN4JXtmZ2X2SkpJcZBpDvrYQ3xCVvbv3 Puvt7v2rq61bDTSJmXzTcOtkBEqx4JBm9PXxXa6upr6FhYXFEpcaLS0tNrIcBgriKROmeGWkZ/TiCWIe qAM50C0BR1HPBJ+szKx+sqIoJISyIAZF0Z5dex5TEkWMgf6BK/EFcXN1sTzQpyK4gt/Px28xgSgiGDs4 gxikc8HUhvKelopmPKZw44oigjYTo2BRR8DBjQtbbwkLC/MSo56qanR1dQV3z4z6vW95xR9genGlquHE GFaRnxB6cXPZ/zMbyv5P6O2YC0wL/EB9VCkVMYrXwqz41GXT61Yt6MtaM78zavWyrqBVW6b5XX9wpOP/ szMz/5/aMfXzkV2LruzbPPfcjnUzj2xbPfNISox/C1oZgq9MgfgZVGj0dfX5p6emo+d9IS0l4TnZ8R5/ FkzI/H8S6PM7hzv+v7o0///bO5v+PzjZ///M1qr/y6Yk/89PcPmrriy+jp2dXREWkvb29iyT+id5FuYX ThAXFwclTOwgKChIFU/xCipqg7k52R8pSIv+z45z/X/tyIz/1/a1/F/UZPM/N0zjv5mmyHteDpYSoDqU uiEgIEB5/579RBXbBPM+0HCpYBets8c2tf3fvrAM7JDzu9v/lyU7fmVjY/MEyoOCGh0QYy5cD968D1K1 aUb+vZM7p/4Pc1X6LyrI/b+7JuH/3I6Uf8CgdsGTgAmaS0ziZyjJzzI4uq7jv7uN3n8VGcH3nBzM51Wk +P/PaEv+X1GUOgdHCBBlNlGKJnSXtyRHOv3n4mK/DtTgBIpvDjaWKkMduW+T24of8/LyChNlELmKsuO9 LrCysGwA6ldAMgMU77ZhvvbXVFRU3Mg1G0MfqEqNi4sDGcgEkpSXl+cQFuCLBjJxFb0iitJielCDmOLj 4x2AbHayHKSnp8e9cN7CKVs2bnkbFhJWBjQEo87HZ3BPV0/mvt37XuXl5E3j4uKSIMcRjMC6fFJ8XPwv fn7+NqABuFpGWM2ura0NLMgv+KWvp78HqICPHAcwKCsrg4LQUphfGERjAziLVx0dHQ2gBkcBAQEfIE39 9iIoffT39AeAildRUVFQHqcvADXZ9uzcQ1TxSiuXkVS80soR1CleaeW6UXOJCQEA0sMsxGlB/rQAAAAA SUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwAAA DsABataJCQAAA21JREFUWEdjYBgFlIUAo7GxMStlRpCpG2TxhN4JXtmZ2X2SkpJcZBpDvrYQ3xCVvbv3 Puvt7v2rq61bDTSJmXzTcOtkBEqx4JBm9PXxXa6upr6FhYXFEpcaLS0tNrIcBgriKROmeGWkZ/TiCWIe qAM50C0BR1HPBJ+szKx+sqIoJISyIAZF0Z5dex5TEkWMgf6BK/EFcXN1sTzQpyK4gt/Px28xgSgiGDs4 gxikc8HUhvKelopmPKZw44oigjYTo2BRR8DBjQtbbwkLC/MSo56qanR1dQV3z4z6vW95xR9genGlquHE GFaRnxB6cXPZ/zMbyv5P6O2YC0wL/EB9VCkVMYrXwqz41GXT61Yt6MtaM78zavWyrqBVW6b5XX9wpOP/ szMz/5/aMfXzkV2LruzbPPfcjnUzj2xbPfNISox/C1oZgq9MgfgZVGj0dfX5p6emo+d9IS0l4TnZ8R5/ FkzI/H8S6PM7hzv+v7o0///bO5v+PzjZ///M1qr/y6Yk/89PcPmrriy+jp2dXREWkvb29iyT+id5FuYX ThAXFwclTOwgKChIFU/xCipqg7k52R8pSIv+z45z/X/tyIz/1/a1/F/UZPM/N0zjv5mmyHteDpYSoDqU uiEgIEB5/579RBXbBPM+0HCpYBets8c2tf3fvrAM7JDzu9v/lyU7fmVjY/MEyoOCGh0QYy5cD968D1K1 aUb+vZM7p/4Pc1X6LyrI/b+7JuH/3I6Uf8CgdsGTgAmaS0ziZyjJzzI4uq7jv7uN3n8VGcH3nBzM51Wk +P/PaEv+X1GUOgdHCBBlNlGKJnSXtyRHOv3n4mK/DtTgBIpvDjaWKkMduW+T24of8/LyChNlELmKsuO9 LrCysGwA6ldAMgMU77ZhvvbXVFRU3Mg1G0MfqEqNi4sDGcgEkpSXl+cQFuCLBjJxFb0iitJielCDmOLj 4x2AbHayHKSnp8e9cN7CKVs2bnkbFhJWBjQEo87HZ3BPV0/mvt37XuXl5E3j4uKSIMcRjMC6fFJ8XPwv fn7+NqABuFpGWM2ura0NLMgv+KWvp78HqICPHAcwKCsrg4LQUphfGERjAziLVx0dHQ2gBkcBAQEfIE39 9iIoffT39AeAildRUVFQHqcvADXZ9uzcQ1TxSiuXkVS80soR1CleaeW6UXOJCQEA0sMsxGlB/rQAAAAA SUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOwAAA DsABataJCQAAA21JREFUWEdjYBgFlIUAo7GxMStlRpCpG2TxhN4JXtmZ2X2SkpJcZBpDvrYQ3xCVvbv3 Puvt7v2rq61bDTSJmXzTcOtkBEqx4JBm9PXxXa6upr6FhYXFEpcaLS0tNrIcBgriKROmeGWkZ/TiCWIe qAM50C0BR1HPBJ+szKx+sqIoJISyIAZF0Z5dex5TEkWMgf6BK/EFcXN1sTzQpyK4gt/Px28xgSgiGDs4 gxikc8HUhvKelopmPKZw44oigjYTo2BRR8DBjQtbbwkLC/MSo56qanR1dQV3z4z6vW95xR9genGlquHE GFaRnxB6cXPZ/zMbyv5P6O2YC0wL/EB9VCkVMYrXwqz41GXT61Yt6MtaM78zavWyrqBVW6b5XX9wpOP/ szMz/5/aMfXzkV2LruzbPPfcjnUzj2xbPfNISox/C1oZgq9MgfgZVGj0dfX5p6emo+d9IS0l4TnZ8R5/ FkzI/H8S6PM7hzv+v7o0///bO5v+PzjZ///M1qr/y6Yk/89PcPmrriy+jp2dXREWkvb29iyT+id5FuYX ThAXFwclTOwgKChIFU/xCipqg7k52R8pSIv+z45z/X/tyIz/1/a1/F/UZPM/N0zjv5mmyHteDpYSoDqU uiEgIEB5/579RBXbBPM+0HCpYBets8c2tf3fvrAM7JDzu9v/lyU7fmVjY/MEyoOCGh0QYy5cD968D1K1 aUb+vZM7p/4Pc1X6LyrI/b+7JuH/3I6Uf8CgdsGTgAmaS0ziZyjJzzI4uq7jv7uN3n8VGcH3nBzM51Wk +P/PaEv+X1GUOgdHCBBlNlGKJnSXtyRHOv3n4mK/DtTgBIpvDjaWKkMduW+T24of8/LyChNlELmKsuO9 LrCysGwA6ldAMgMU77ZhvvbXVFRU3Mg1G0MfqEqNi4sDGcgEkpSXl+cQFuCLBjJxFb0iitJielCDmOLj 4x2AbHayHKSnp8e9cN7CKVs2bnkbFhJWBjQEo87HZ3BPV0/mvt37XuXl5E3j4uKSIMcRjMC6fFJ8XPwv fn7+NqABuFpGWM2ura0NLMgv+KWvp78HqICPHAcwKCsrg4LQUphfGERjAziLVx0dHQ2gBkcBAQEfIE39 9iIoffT39AeAildRUVFQHqcvADXZ9uzcQ1TxSiuXkVS80soR1CleaeW6UXOJCQEA0sMsxGlB/rQAAAAA SUVORK5CYII= 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 AABJRU5ErkJggg== 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 AABJRU5ErkJggg== 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 VmgAAAAASUVORK5CYII= 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 VmgAAAAASUVORK5CYII= ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterIndustryJobsList.Designer.cs ================================================ using EVEMon.Common.Controls; namespace EVEMon.CharacterMonitoring { internal sealed partial class CharacterIndustryJobsList { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used. /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Component Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CharacterIndustryJobsList)); this.lvJobs = new System.Windows.Forms.ListView(); this.chState = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chTTC = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chInstalledItem = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chOutputItem = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.contextMenu = new System.Windows.Forms.ContextMenuStrip(this.components); this.showInstalledInBrowserMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.showInBrowserMenuSeparator = new System.Windows.Forms.ToolStripSeparator(); this.exportToCSVToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.ilIcons = new System.Windows.Forms.ImageList(this.components); this.noJobsLabel = new System.Windows.Forms.Label(); this.industryExpPanelControl = new EVEMon.Common.Controls.ExpandablePanelControl(); this.showProducedInBrowserMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.contextMenu.SuspendLayout(); this.SuspendLayout(); // // lvJobs // this.lvJobs.BorderStyle = System.Windows.Forms.BorderStyle.None; this.lvJobs.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.chState, this.chTTC, this.chInstalledItem, this.chOutputItem}); this.lvJobs.ContextMenuStrip = this.contextMenu; this.lvJobs.Dock = System.Windows.Forms.DockStyle.Fill; this.lvJobs.FullRowSelect = true; this.lvJobs.HideSelection = false; this.lvJobs.Location = new System.Drawing.Point(0, 0); this.lvJobs.MultiSelect = false; this.lvJobs.Name = "lvJobs"; this.lvJobs.Size = new System.Drawing.Size(454, 334); this.lvJobs.SmallImageList = this.ilIcons; this.lvJobs.TabIndex = 0; this.lvJobs.UseCompatibleStateImageBehavior = false; this.lvJobs.View = System.Windows.Forms.View.Details; // // chState // this.chState.Text = "State"; // // chTTC // this.chTTC.Text = "TTC"; // // chInstalledItem // this.chInstalledItem.Text = "Installed Item"; // // chOutputItem // this.chOutputItem.Text = "Output Item"; // // contextMenu // this.contextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.showInstalledInBrowserMenuItem, this.showProducedInBrowserMenuItem, this.showInBrowserMenuSeparator, this.exportToCSVToolStripMenuItem}); this.contextMenu.Name = "ShipPropertiesContextMenu"; this.contextMenu.Size = new System.Drawing.Size(218, 98); this.contextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenu_Opening); // // showInstalledInBrowserMenuItem // this.showInstalledInBrowserMenuItem.Name = "showInstalledInBrowserMenuItem"; this.showInstalledInBrowserMenuItem.Size = new System.Drawing.Size(217, 22); this.showInstalledInBrowserMenuItem.Text = "Show Input In Blueprint Browser..."; this.showInstalledInBrowserMenuItem.Click += new System.EventHandler(this.showInBrowserMenuItem_Click); // // showProducedInBrowserMenuItem // this.showProducedInBrowserMenuItem.Name = "showProducedInBrowserMenuItem"; this.showProducedInBrowserMenuItem.Size = new System.Drawing.Size(217, 22); this.showProducedInBrowserMenuItem.Text = "Show Output In Browser..."; this.showProducedInBrowserMenuItem.Click += new System.EventHandler(this.showInBrowserMenuItem_Click); // // showInBrowserMenuSeparator // this.showInBrowserMenuSeparator.Name = "showInBrowserMenuSeparator"; this.showInBrowserMenuSeparator.Size = new System.Drawing.Size(214, 6); // // exportToCSVToolStripMenuItem // this.exportToCSVToolStripMenuItem.Name = "exportToCSVToolStripMenuItem"; this.exportToCSVToolStripMenuItem.Size = new System.Drawing.Size(217, 22); this.exportToCSVToolStripMenuItem.Text = "Export To CSV..."; this.exportToCSVToolStripMenuItem.Click += new System.EventHandler(this.exportToCSVToolStripMenuItem_Click); // // ilIcons // this.ilIcons.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilIcons.ImageStream"))); this.ilIcons.TransparentColor = System.Drawing.Color.Transparent; this.ilIcons.Images.SetKeyName(0, "arrow_up.png"); this.ilIcons.Images.SetKeyName(1, "arrow_down.png"); this.ilIcons.Images.SetKeyName(2, "16x16Transparant.png"); // // noJobsLabel // this.noJobsLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.noJobsLabel.ForeColor = System.Drawing.SystemColors.GrayText; this.noJobsLabel.Location = new System.Drawing.Point(0, 0); this.noJobsLabel.Name = "noJobsLabel"; this.noJobsLabel.Size = new System.Drawing.Size(454, 434); this.noJobsLabel.TabIndex = 2; this.noJobsLabel.Text = "No industry jobs are available."; this.noJobsLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // industryExpPanelControl // this.industryExpPanelControl.AnimationSpeed = EVEMon.Common.Controls.AnimationSpeed.Medium; this.industryExpPanelControl.Dock = System.Windows.Forms.DockStyle.Bottom; this.industryExpPanelControl.EnableContextMenu = false; this.industryExpPanelControl.ExpandDirection = EVEMon.Common.Controls.Direction.Down; this.industryExpPanelControl.ExpandedHeight = 100; this.industryExpPanelControl.ExpandedOnStartup = false; this.industryExpPanelControl.HeaderHeight = 30; this.industryExpPanelControl.HeaderText = "Header Text"; this.industryExpPanelControl.ImageCollapse = ((System.Drawing.Bitmap)(resources.GetObject("industryExpPanelControl.ImageCollapse"))); this.industryExpPanelControl.ImageExpand = ((System.Drawing.Bitmap)(resources.GetObject("industryExpPanelControl.ImageExpand"))); this.industryExpPanelControl.Location = new System.Drawing.Point(0, 334); this.industryExpPanelControl.Name = "industryExpPanelControl"; this.industryExpPanelControl.Size = new System.Drawing.Size(454, 100); this.industryExpPanelControl.TabIndex = 1; // // CharacterIndustryJobsList // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Controls.Add(this.lvJobs); this.Controls.Add(this.industryExpPanelControl); this.Controls.Add(this.noJobsLabel); this.Name = "CharacterIndustryJobsList"; this.Size = new System.Drawing.Size(454, 434); this.contextMenu.ResumeLayout(false); this.ResumeLayout(false); } #endregion private System.Windows.Forms.ListView lvJobs; private System.Windows.Forms.Label noJobsLabel; private System.Windows.Forms.ColumnHeader chState; private System.Windows.Forms.ColumnHeader chTTC; private System.Windows.Forms.ColumnHeader chInstalledItem; private System.Windows.Forms.ColumnHeader chOutputItem; private System.Windows.Forms.ImageList ilIcons; private ExpandablePanelControl industryExpPanelControl; private System.Windows.Forms.ContextMenuStrip contextMenu; private System.Windows.Forms.ToolStripMenuItem exportToCSVToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem showInstalledInBrowserMenuItem; private System.Windows.Forms.ToolStripSeparator showInBrowserMenuSeparator; private System.Windows.Forms.ToolStripMenuItem showProducedInBrowserMenuItem; } } ================================================ FILE: src/EVEMon/CharacterMonitoring/CharacterIndustryJobsList.cs ================================================ using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using EVEMon.Common; using EVEMon.Common.Collections; using EVEMon.Common.Constants; using EVEMon.Common.Controls; using EVEMon.Common.CustomEventArgs; using EVEMon.Common.Data; using EVEMon.Common.Enumerations; using EVEMon.Common.Enumerations.UISettings; using EVEMon.Common.Extensions; using EVEMon.Common.Factories; using EVEMon.Common.Helpers; using EVEMon.Common.Interfaces; using EVEMon.Common.Models; using EVEMon.Common.Models.Comparers; using EVEMon.Common.SettingsObjects; using EVEMon.SkillPlanner; namespace EVEMon.CharacterMonitoring { internal sealed partial class CharacterIndustryJobsList : UserControl, IListView { #region Fields private const int PAD = 5; private readonly List m_columns = new List(); private readonly List m_list = new List(32); private InfiniteDisplayToolTip m_tooltip; private Timer m_refreshTimer; private IndustryJobGrouping m_grouping; private IndustryJobColumn m_sortCriteria; private IssuedFor m_showIssuedFor; private string m_textFilter = string.Empty; private bool m_sortAscending = true; private bool m_isUpdatingColumns; private bool m_columnsChanged; private bool m_init; private int m_columnTTCIndex; // Panel info variables private int m_skillBasedManufacturingJobs, m_skillBasedResearchingJobs, m_skillBasedReactionJobs; private int m_remoteManufacturingRange, m_remoteResearchingRange, m_remoteReactionsRange; private JobsIssued m_activeManufacturing, m_activeResearch, m_activeReactions; #endregion # region Constructor public CharacterIndustryJobsList() { InitializeComponent(); InitializeExpandablePanelControls(); lvJobs.Hide(); lvJobs.AllowColumnReorder = true; lvJobs.Columns.Clear(); industryExpPanelControl.Hide(); m_showIssuedFor = IssuedFor.All; noJobsLabel.Font = FontFactory.GetFont("Tahoma", 11.25F, FontStyle.Bold); industryExpPanelControl.Font = FontFactory.GetFont("Tahoma", 8.25f); ListViewHelper.EnableDoubleBuffer(lvJobs); lvJobs.ColumnClick += listView_ColumnClick; lvJobs.ColumnWidthChanged += listView_ColumnWidthChanged; lvJobs.ColumnReordered += listView_ColumnReordered; lvJobs.MouseDown += listView_MouseDown; lvJobs.MouseMove += listView_MouseMove; lvJobs.MouseLeave += listView_MouseLeave; } #endregion #region Properties /// /// Gets the character associated with this monitor. /// internal CCPCharacter Character { get; set; } /// /// Gets or sets a value indicating whether this is visible. /// /// true if visible; otherwise, false. internal bool Visibility { get { return lvJobs.Visible; } set { lvJobs.Visible = value; } } /// /// Gets or sets the text filter. /// [Browsable(false)] public string TextFilter { get { return m_textFilter; } set { m_textFilter = value; if (m_init) UpdateColumns(); } } /// /// Gets or sets the grouping mode. /// [Browsable(false)] public Enum Grouping { get { return m_grouping; } set { m_grouping = (IndustryJobGrouping)value; if (m_init) UpdateColumns(); } } /// /// Gets or sets which "Issued for" jobs to display. /// internal IssuedFor ShowIssuedFor { get { return m_showIssuedFor; } set { m_showIssuedFor = value; if (m_init) UpdateColumns(); } } /// /// Gets true when character has active jobs issued for corporation. /// private bool HasActiveCorporationIssuedJobs => m_list.Any(x => x.State == JobState.Active && x.IssuedFor == IssuedFor.Corporation); /// /// Gets or sets the enumeration of jobs to display. /// internal IEnumerable Jobs { get { return m_list; } set { m_list.Clear(); if (value == null) return; m_list.AddRange(value); } } /// /// Gets or sets the settings used for columns. /// [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public IEnumerable Columns { get { // Add the visible columns; matching the display order List newColumns = new List(); foreach (ColumnHeader header in lvJobs.Columns.Cast().OrderBy(x => x.DisplayIndex)) { IndustryJobColumnSettings columnSetting = m_columns.First(x => x.Column == (IndustryJobColumn)header.Tag); if (columnSetting.Width > -1) columnSetting.Width = header.Width; newColumns.Add(columnSetting); } // Then add the other columns newColumns.AddRange(m_columns.Where(x => !x.Visible)); return newColumns; } set { m_columns.Clear(); if (value != null) m_columns.AddRange(value.Cast()); // Whenever the columns changes, we need to // reset the dipslay index of the TTC column m_columnTTCIndex = -1; if (m_init) UpdateColumns(); } } #endregion # region Inherited Events /// /// On load subscribe the events. /// /// An that contains the event data. protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (DesignMode || this.IsDesignModeHosted()) return; m_tooltip = new InfiniteDisplayToolTip(lvJobs); m_refreshTimer = new Timer(); m_refreshTimer.Tick += refresh_TimerTick; m_refreshTimer.Interval = 1000; EveMonClient.TimerTick += EveMonClient_TimerTick; EveMonClient.IndustryJobsUpdated += EveMonClient_IndustryJobsUpdated; EveMonClient.ConquerableStationListUpdated += EveMonClient_ConquerableStationListUpdated; EveMonClient.CharacterIndustryJobsCompleted += EveMonClient_CharacterIndustryJobsCompleted; EveMonClient.EveIDToNameUpdated += EveMonClient_EveIDToNameUpdated; Disposed += OnDisposed; } /// /// Unsubscribe events on disposing. /// /// /// private void OnDisposed(object sender, EventArgs e) { m_tooltip.Dispose(); m_refreshTimer.Dispose(); EveMonClient.TimerTick -= EveMonClient_TimerTick; EveMonClient.IndustryJobsUpdated -= EveMonClient_IndustryJobsUpdated; EveMonClient.ConquerableStationListUpdated -= EveMonClient_ConquerableStationListUpdated; EveMonClient.CharacterIndustryJobsCompleted -= EveMonClient_CharacterIndustryJobsCompleted; EveMonClient.EveIDToNameUpdated -= EveMonClient_EveIDToNameUpdated; Disposed -= OnDisposed; } /// /// When the control becomes visible again, we update the content. /// /// protected override void OnVisibleChanged(EventArgs e) { base.OnVisibleChanged(e); if (DesignMode || this.IsDesignModeHosted() || Character == null || !Visible) return; // Prevents the properties to call UpdateColumns() till we set all properties m_init = false; lvJobs.Visible = false; industryExpPanelControl.Visible = false; Jobs = Character?.IndustryJobs; Columns = Settings.UI.MainWindow.IndustryJobs.Columns; Grouping = Character?.UISettings.JobsGroupBy; TextFilter = string.Empty; UpdateColumns(); m_init = true; UpdateListVisibility(); } # endregion #region Updates Main Industry Window /// /// Autoresizes the columns. /// public void AutoResizeColumns() { m_columns.ForEach(column => { if (column.Visible) column.Width = -2; }); UpdateColumns(); } /// /// Updates the columns. /// internal void UpdateColumns() { // Returns if not visible if (!Visible) return; lvJobs.BeginUpdate(); m_isUpdatingColumns = true; try { lvJobs.Columns.Clear(); lvJobs.Groups.Clear(); lvJobs.Items.Clear(); foreach (IndustryJobColumnSettings column in m_columns.Where(x => x.Visible)) { ColumnHeader header = lvJobs.Columns.Add(column.Column.GetHeader(), column.Width); header.Tag = column.Column; switch (column.Column) { case IndustryJobColumn.TTC: case IndustryJobColumn.Cost: case IndustryJobColumn.Probability: header.TextAlign = HorizontalAlignment.Right; break; case IndustryJobColumn.Runs: header.TextAlign = HorizontalAlignment.Center; break; } } // We update the content UpdateContent(); } finally { lvJobs.EndUpdate(); m_isUpdatingColumns = false; } } /// /// Updates the content of the listview. /// private void UpdateContent() { // Returns if not visible if (!Visible) return; int scrollBarPosition = lvJobs.GetVerticalScrollBarPosition(); // Store the selected item (if any) to restore it after the update int selectedItem = lvJobs.SelectedItems.Count > 0 ? lvJobs.SelectedItems[0].Tag. GetHashCode() : 0; lvJobs.BeginUpdate(); try { bool hideInactive = Character != null && Settings.UI.MainWindow.IndustryJobs. HideInactiveJobs, hideIssued = m_showIssuedFor != IssuedFor.All; var jobs = new LinkedList(); // Filter jobs foreach (var job in m_list) { job.UpdateLocation(Character); job.UpdateInstallation(Character); if (job.InstalledItem != null && job.OutputItem != null && job. SolarSystem != null && IsTextMatching(job, m_textFilter)) { if ((!hideInactive || job.IsActive) && (!hideIssued || job.IssuedFor == m_showIssuedFor)) jobs.AddLast(job); } } UpdateSort(); UpdateContentByGroup(jobs); // Restore the selected item (if any) if (selectedItem > 0) foreach (ListViewItem lvItem in lvJobs.Items.Cast().Where( lvItem => lvItem.Tag.GetHashCode() == selectedItem)) lvItem.Selected = true; // Adjust the size of the columns AdjustColumns(); // Update the expandable panel info UpdateExpPanelContent(); UpdateListVisibility(); } finally { lvJobs.EndUpdate(); lvJobs.SetVerticalScrollBarPosition(scrollBarPosition); } } /// /// Updates the list visibility. /// private void UpdateListVisibility() { // Display or hide the "no jobs" label if (!m_init) return; noJobsLabel.Visible = lvJobs.Items.Count == 0; industryExpPanelControl.Visible = true; industryExpPanelControl.Header.Visible = true; lvJobs.Visible = !noJobsLabel.Visible; m_refreshTimer.Enabled = lvJobs.Visible; } /// /// Updates the content by group. /// /// The jobs. private void UpdateContentByGroup(IEnumerable jobs) { switch (m_grouping) { case IndustryJobGrouping.State: IOrderedEnumerable> groups0 = jobs.GroupBy(x => x.State).OrderBy(x => (int)x.Key); UpdateContent(groups0); break; case IndustryJobGrouping.StateDesc: IOrderedEnumerable> groups1 = jobs.GroupBy(x => x.State).OrderByDescending(x => (int)x.Key); UpdateContent(groups1); break; case IndustryJobGrouping.EndDate: IOrderedEnumerable> groups2 = jobs.GroupBy(x => x.EndDate.ToLocalTime().Date).OrderBy(x => x.Key); UpdateContent(groups2); break; case IndustryJobGrouping.EndDateDesc: IOrderedEnumerable> groups3 = jobs.GroupBy(x => x.EndDate.ToLocalTime().Date).OrderByDescending(x => x.Key); UpdateContent(groups3); break; case IndustryJobGrouping.InstalledItemType: IOrderedEnumerable> groups4 = jobs.GroupBy(x => x.InstalledItem.MarketGroup.CategoryPath).OrderBy(x => x.Key); UpdateContent(groups4); break; case IndustryJobGrouping.InstalledItemTypeDesc: IOrderedEnumerable> groups5 = jobs.GroupBy(x => x.InstalledItem.MarketGroup.CategoryPath).OrderByDescending(x => x.Key); UpdateContent(groups5); break; case IndustryJobGrouping.OutputItemType: IOrderedEnumerable> groups6 = jobs.GroupBy(x => x.OutputItem.MarketGroup.CategoryPath).OrderBy(x => x.Key); UpdateContent(groups6); break; case IndustryJobGrouping.OutputItemTypeDesc: IOrderedEnumerable> groups7 = jobs.GroupBy(x => x.OutputItem.MarketGroup.CategoryPath).OrderByDescending(x => x.Key); UpdateContent(groups7); break; case IndustryJobGrouping.Activity: IOrderedEnumerable> groups8 = jobs.GroupBy(x => x.Activity.GetDescription()).OrderBy(x => x.Key); UpdateContent(groups8); break; case IndustryJobGrouping.ActivityDesc: IOrderedEnumerable> groups9 = jobs.GroupBy(x => x.Activity.GetDescription()).OrderByDescending(x => x.Key); UpdateContent(groups9); break; case IndustryJobGrouping.Location: IOrderedEnumerable> groups10 = jobs.GroupBy(x => x.Installation).OrderBy(x => x.Key); UpdateContent(groups10); break; case IndustryJobGrouping.LocationDesc: IOrderedEnumerable> groups11 = jobs.GroupBy(x => x.Installation).OrderByDescending(x => x.Key); UpdateContent(groups11); break; } } /// /// Updates the content of the listview. /// /// /// private void UpdateContent(IEnumerable> groups) { lvJobs.Items.Clear(); lvJobs.Groups.Clear(); // Add the groups foreach (IGrouping group in groups) { string groupText; if (group.Key is JobState) groupText = ((JobState)(object)group.Key).GetHeader(); else if (group.Key is DateTime) groupText = ((DateTime)(object)group.Key).ToShortDateString(); else groupText = group.Key.ToString(); ListViewGroup listGroup = new ListViewGroup(groupText); lvJobs.Groups.Add(listGroup); // Add the items in every group lvJobs.Items.AddRange( group.Select(job => new { job, item = new ListViewItem(job.InstalledItem.Name, listGroup) { UseItemStyleForSubItems = false, Tag = job } }).Select(x => CreateSubItems(x.job, x.item)).ToArray()); } } /// /// Creates the list view sub items. /// /// The job. /// The item. private ListViewItem CreateSubItems(IndustryJob job, ListViewItem item) { // Display text as dimmed if the job is no longer available if (!job.IsActive) item.ForeColor = SystemColors.GrayText; // Add enough subitems to match the number of columns while (item.SubItems.Count < lvJobs.Columns.Count + 1) { item.SubItems.Add(string.Empty); } // Creates the subitems for (int i = 0; i < lvJobs.Columns.Count; i++) { ColumnHeader header = lvJobs.Columns[i]; IndustryJobColumn column = (IndustryJobColumn)header.Tag; SetColumn(job, item.SubItems[i], column); } // Tooltip var builder = new StringBuilder(); builder.Append($"Issued For: ").AppendLine(job.IssuedFor.ToString()); builder.Append($"Installed: ").AppendLine(job.InstalledTime. ToAbsoluteDateTimeDescription(DateTimeKind.Local)); builder.Append($"Finishes: ").AppendLine(job.EndDate. ToAbsoluteDateTimeDescription(DateTimeKind.Local)); builder.Append($"Activity: ").AppendLine(job.Activity.GetDescription()); builder.Append($"Solar System: ").AppendLine(job.SolarSystem.FullLocation); builder.Append($"Installation: ").AppendLine(job.Installation); item.ToolTipText = builder.ToString(); return item; } /// /// Adjusts the columns. /// private void AdjustColumns() { foreach (ColumnHeader column in lvJobs.Columns) { if (m_columns[column.Index].Width == -1) m_columns[column.Index].Width = -2; column.Width = m_columns[column.Index].Width; // Due to .NET design we need to prevent the last colummn to resize to the right end // Return if it's not the last column and not set to auto-resize if (column.Index != lvJobs.Columns.Count - 1 || m_columns[column.Index].Width != -2) continue; const int Pad = 4; // Calculate column header text width with padding int columnHeaderWidth = TextRenderer.MeasureText(column.Text, Font).Width + Pad * 2; // If there is an image assigned to the header, add its width with padding if (lvJobs.SmallImageList != null && column.ImageIndex > -1) columnHeaderWidth += lvJobs.SmallImageList.ImageSize.Width + Pad; // Calculate the width of the header and the items of the column int columnMaxWidth = column.ListView.Items.Cast().Select( item => TextRenderer.MeasureText(item.SubItems[column.Index].Text, Font).Width).Concat( new[] { columnHeaderWidth }).Max() + Pad + 1; // Assign the width found column.Width = columnMaxWidth; } } /// /// Updates the item sorter. /// private void UpdateSort() { lvJobs.ListViewItemSorter = new ListViewItemComparerByTag( new IndustryJobComparer(m_sortCriteria, m_sortAscending)); UpdateSortVisualFeedback(); } /// /// Updates the sort feedback (the arrow on the header). /// private void UpdateSortVisualFeedback() { foreach (ColumnHeader columnHeader in lvJobs.Columns.Cast()) { IndustryJobColumn column = (IndustryJobColumn)columnHeader.Tag; if (m_sortCriteria == column) columnHeader.ImageIndex = m_sortAscending ? 0 : 1; else columnHeader.ImageIndex = 2; } } /// /// Updates the listview sub-item. /// /// /// /// private static void SetColumn(IndustryJob job, ListViewItem.ListViewSubItem item, IndustryJobColumn column) { switch (column) { case IndustryJobColumn.State: item.Text = job.State == JobState.Active ? job.ActiveJobState. GetDescription() : job.State.ToString(); item.ForeColor = GetStateColor(job); break; case IndustryJobColumn.TTC: item.Text = job.TTC; if (job.State == JobState.Paused) item.ForeColor = Color.Red; break; case IndustryJobColumn.InstalledItem: item.Text = job.InstalledItem.Name; break; case IndustryJobColumn.InstalledItemType: item.Text = job.InstalledItem.MarketGroup.CategoryPath; break; case IndustryJobColumn.OutputItem: long units = GetUnitCount(job); // If units goes over max int, limit to max int for pluralization item.Text = units + " Unit" + ((int)Math.Min(units, int.MaxValue)).S() + " of " + job.OutputItem.Name; break; case IndustryJobColumn.OutputItemType: item.Text = job.OutputItem.MarketGroup.CategoryPath; break; case IndustryJobColumn.Activity: item.Text = job.Activity.GetDescription(); break; case IndustryJobColumn.InstallTime: item.Text = job.InstalledTime.ToLocalTime().ToString(); break; case IndustryJobColumn.EndTime: item.Text = job.EndDate.ToLocalTime().ToString(); break; case IndustryJobColumn.OriginalOrCopy: item.Text = EveMonConstants.UnknownText; break; case IndustryJobColumn.InstalledME: item.Text = string.Empty; /*(job.Activity == BlueprintActivity.ResearchingMaterialEfficiency ? job.InstalledME.ToString(CultureConstants.DefaultCulture) : String.Empty);*/ break; case IndustryJobColumn.EndME: item.Text = string.Empty; /*(job.Activity == BlueprintActivity.ResearchingMaterialEfficiency ? (job.InstalledME + job.Runs).ToString(CultureConstants.DefaultCulture) : String.Empty);*/ break; case IndustryJobColumn.InstalledPE: item.Text = string.Empty; /*(job.Activity == BlueprintActivity.ResearchingTimeEfficiency ? job.InstalledTE.ToString(CultureConstants.DefaultCulture) : String.Empty);*/ break; case IndustryJobColumn.EndPE: item.Text = string.Empty; /*(job.Activity == BlueprintActivity.ResearchingTimeEfficiency ? (job.InstalledTE + job.Runs).ToString(CultureConstants.DefaultCulture) : String.Empty);*/ break; case IndustryJobColumn.Location: item.Text = job.FullLocation; break; case IndustryJobColumn.Region: item.Text = job.SolarSystem.Constellation.Region.Name; break; case IndustryJobColumn.SolarSystem: item.Text = job.SolarSystem.Name; item.ForeColor = job.SolarSystem.SecurityLevelColor; break; case IndustryJobColumn.Installation: item.Text = job.Installation; break; case IndustryJobColumn.IssuedFor: item.Text = job.IssuedFor.ToString(); break; case IndustryJobColumn.LastStateChange: item.Text = job.LastStateChange.ToLocalTime().ToString(); break; case IndustryJobColumn.Cost: item.Text = job.Cost.ToNumericString(2); break; case IndustryJobColumn.Probability: item.Text = Math.Abs(job.Probability) < double.Epsilon ? string.Empty : job.Probability.ToString("P1"); break; case IndustryJobColumn.Runs: item.Text = job.Runs.ToString(); break; default: throw new NotImplementedException(); } } #endregion # region Helper Methods /// /// Gets the unit count. /// /// The job. /// private static long GetUnitCount(IndustryJob job) { switch (job.Activity) { case BlueprintActivity.Manufacturing: // Returns the amount produced return (long)job.Runs * job.OutputItem.PortionSize; case BlueprintActivity.SimpleReactions: return job.Runs * job.InstalledItem.ReactionOutcome.Quantity; case BlueprintActivity.Reactions: return job.Runs * job.InstalledItem.ReactionOutcome.Quantity; default: return 1L; } } /// /// Gets the color of the state. /// /// The job. /// private static Color GetStateColor(IndustryJob job) { switch (job.State) { case JobState.Canceled: return Color.DarkGray; case JobState.Failed: return Color.DarkRed; case JobState.Paused: return Color.RoyalBlue; case JobState.Active: return GetActiveJobStateColor(job.ActiveJobState); default: return SystemColors.GrayText; } } /// /// Gets the color of the active job state. /// /// State of the active job. /// private static Color GetActiveJobStateColor(ActiveJobState activeJobState) { switch (activeJobState) { case ActiveJobState.Pending: return Color.Red; case ActiveJobState.InProgress: return Color.Orange; case ActiveJobState.Ready: return Color.Green; default: return SystemColors.GrayText; } } /// /// Checks the given text matches the item. /// /// The x. /// The text. /// /// true if [is text matching] [the specified x]; otherwise, false. /// private static bool IsTextMatching(IndustryJob x, string text) => string. IsNullOrEmpty(text) || x.InstalledItem.Name.Contains(text, ignoreCase: true) || x.OutputItem.Name.Contains(text, ignoreCase: true) || (x.Installation?.Contains(text, ignoreCase: true) ?? false) || (x.SolarSystem?.Name?.Contains(text, ignoreCase: true) ?? false) || (x.SolarSystem?.Constellation?.Name?.Contains(text, ignoreCase: true) ?? false) || (x.SolarSystem?.Constellation?.Region?.Name?.Contains(text, ignoreCase: true) ?? false); /// /// Updates the time to completion. /// private void UpdateTimeToCompletion() { const int Pad = 4; int columnTTCIndex = m_columns.IndexOf(m_columns.FirstOrDefault(x => x.Column == IndustryJobColumn.TTC)); foreach (ListViewItem listViewItem in lvJobs.Items.Cast()) { IndustryJob job = (IndustryJob)listViewItem.Tag; if (!job.IsActive || job.ActiveJobState == ActiveJobState.Ready) continue; // Update the time to completion if (columnTTCIndex != -1 && m_columns[columnTTCIndex].Visible) { if (m_columnTTCIndex == -1) m_columnTTCIndex = lvJobs.Columns[columnTTCIndex].DisplayIndex; listViewItem.SubItems[m_columnTTCIndex].Text = job.TTC; // Using AutoResizeColumn when TTC is the first column // results to a nasty visual bug due to ListViewItem.ImageIndex placeholder if (m_columnTTCIndex == 0) { // Calculate column header text width with padding int columnHeaderWidth = TextRenderer.MeasureText(lvJobs.Columns[ m_columnTTCIndex].Text, Font).Width + Pad * 2; // If there is an image assigned to the header, add its width with padding if (ilIcons.ImageSize.Width > 0) columnHeaderWidth += ilIcons.ImageSize.Width + Pad; int columnWidth = Math.Max(lvJobs.Items.Cast().Select( item => TextRenderer.MeasureText(item.SubItems[m_columnTTCIndex]. Text, Font).Width).Max(), columnHeaderWidth) + Pad + 2; lvJobs.Columns[m_columnTTCIndex].Width = columnWidth; } else lvJobs.AutoResizeColumn(m_columnTTCIndex, ColumnHeaderAutoResizeStyle. HeaderSize); } // Job was pending and its time to start if (job.ActiveJobState == ActiveJobState.Pending && job.StartDate < DateTime. UtcNow) { job.ActiveJobState = ActiveJobState.InProgress; UpdateContent(); } if (job.TTC.Length != 0) continue; // Job is ready job.ActiveJobState = ActiveJobState.Ready; UpdateContent(); } } #endregion #region Event Handlers /// /// Exports item info to CSV format. /// /// /// private void exportToCSVToolStripMenuItem_Click(object sender, EventArgs e) { ListViewExporter.CreateCSV(lvJobs); } /// /// Handles the Tick event of the m_timer control. /// /// The source of the event. /// The instance containing the event data. private void refresh_TimerTick(object sender, EventArgs e) { UpdateTimeToCompletion(); } /// /// On column reorder we update the settings. /// /// /// private void listView_ColumnReordered(object sender, ColumnReorderedEventArgs e) { m_columnsChanged = true; } /// /// When the user manually resizes a column, we make sure to update the column preferences. /// /// /// private void listView_ColumnWidthChanged(object sender, ColumnWidthChangedEventArgs e) { if (m_isUpdatingColumns || m_columns.Count <= e.ColumnIndex) return; // Don't update the columns if the TTC column width changes if (e.ColumnIndex == m_columnTTCIndex) return; if (m_columns[e.ColumnIndex].Width == lvJobs.Columns[e.ColumnIndex].Width) return; m_columns[e.ColumnIndex].Width = lvJobs.Columns[e.ColumnIndex].Width; m_columnsChanged = true; } /// /// When the user clicks a column header, we update the sorting. /// /// /// private void listView_ColumnClick(object sender, ColumnClickEventArgs e) { IndustryJobColumn column = (IndustryJobColumn)lvJobs.Columns[e.Column].Tag; if (m_sortCriteria == column) m_sortAscending = !m_sortAscending; else { m_sortCriteria = column; m_sortAscending = true; } m_isUpdatingColumns = true; // Updates the item sorter UpdateSort(); m_isUpdatingColumns = false; } /// /// When the mouse gets pressed, we change the cursor. /// /// The source of the event. /// The instance containing the event data. private void listView_MouseDown(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Right) return; lvJobs.Cursor = Cursors.Default; } /// /// When the mouse moves over the list, we show the item's tooltip if over an item. /// /// The source of the event. /// The instance containing the event data. private void listView_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) return; lvJobs.Cursor = CustomCursors.ContextMenu; ListViewItem item = lvJobs.GetItemAt(e.Location.X, e.Location.Y); if (item == null) { m_tooltip.Hide(); return; } m_tooltip.Show(item.ToolTipText, e.Location); } /// /// When the mouse leaves the list, we hide the item's tooltip. /// /// The source of the event. /// The instance containing the event data. private void listView_MouseLeave(object sender, EventArgs e) { m_tooltip.Hide(); } /// /// Handles the Opening event of the contextMenu control. /// /// The source of the event. /// The instance containing the event data. private void contextMenu_Opening(object sender, CancelEventArgs e) { bool visible = lvJobs.SelectedItems.Count != 0; showInstalledInBrowserMenuItem.Visible = showProducedInBrowserMenuItem.Visible = showInBrowserMenuSeparator.Visible = visible; if (!visible) return; IndustryJob job = lvJobs.SelectedItems[0]?.Tag as IndustryJob; if (job?.InstalledItem == null || job.OutputItem == null) return; Blueprint blueprint = StaticBlueprints.GetBlueprintByID(job.OutputItem.ID); Ship ship = job.OutputItem as Ship; string text = ship != null ? "Ship" : blueprint != null ? "Blueprint" : "Item"; showProducedInBrowserMenuItem.Text = $"Show Output In {text} Browser..."; } /// /// Handles the Click event of the showInBrowserMenuItem control. /// /// The source of the event. /// The instance containing the event data. private void showInBrowserMenuItem_Click(object sender, EventArgs e) { ToolStripItem menuItem = sender as ToolStripItem; if (menuItem == null) return; IndustryJob job = lvJobs.SelectedItems[0]?.Tag as IndustryJob; if (menuItem == showInstalledInBrowserMenuItem) { if (job?.OutputItem == null) return; // showProducedInBrowserMenuItem was clicked Ship ship = job.OutputItem as Ship; Blueprint blueprint = StaticBlueprints.GetBlueprintByID(job.OutputItem.ID); PlanWindow planWindow = PlanWindow.ShowPlanWindow(Character); if (ship != null) planWindow.ShowShipInBrowser(ship); else if (blueprint != null) planWindow.ShowBlueprintInBrowser(blueprint); else planWindow.ShowItemInBrowser(job.OutputItem); return; } if (job?.InstalledItem == null) return; // showInstalledInBrowserMenuItem was clicked PlanWindow.ShowPlanWindow(Character).ShowBlueprintInBrowser(job.InstalledItem); } # endregion #region Global Events /// /// Handles the IndustryJobsCompleted event of the EveMonClient control. /// /// The source of the event. /// The instance containing the event data. private void EveMonClient_CharacterIndustryJobsCompleted(object sender, IndustryJobsEventArgs e) { UpdateContent(); } /// /// When the ID to name conversion is updated, update the list. /// /// /// private void EveMonClient_EveIDToNameUpdated(object sender, EventArgs e) { UpdateContent(); } /// /// When the industry jobs are updated, update the list and the expandable panel info. /// /// /// private void EveMonClient_IndustryJobsUpdated(object sender, CharacterChangedEventArgs e) { if (Character == null || e.Character != Character) return; Jobs = Character.IndustryJobs; UpdateColumns(); } /// /// On timer tick, we update the internal timer and /// and the columns settings if any changes have beem made to them. /// /// /// private void EveMonClient_TimerTick(object sender, EventArgs e) { if (!Visible) { if (m_refreshTimer.Enabled) m_refreshTimer.Stop(); return; } // Find how many jobs are active and not ready int activeJobs = lvJobs.Items.Cast().Select( item => (IndustryJob)item.Tag).Count(job => job.IsActive && job.ActiveJobState != ActiveJobState.Ready); // We use time dilation according to the ammount of active jobs that are not ready, // due to excess CPU usage for computing the 'time to completion' when there are too many jobs m_refreshTimer.Interval = 900 + 100 * activeJobs; if (!m_columnsChanged) return; Settings.UI.MainWindow.IndustryJobs.Columns.Clear(); Settings.UI.MainWindow.IndustryJobs.Columns.AddRange(Columns.Cast()); // Recreate the columns Columns = Settings.UI.MainWindow.IndustryJobs.Columns; m_columnsChanged = false; } /// /// When Conquerable Station List updates, update the list. /// /// The source of the event. /// The instance containing the event data. private void EveMonClient_ConquerableStationListUpdated(object sender, EventArgs e) { if (Character == null) return; foreach (IndustryJob job in m_list) { job.UpdateInstallation(this.Character); } UpdateColumns(); } #endregion #region Updates Expandable Panel On Global Events /// /// Updates the content of the expandable panel. /// private void UpdateExpPanelContent() { if (Character == null) { industryExpPanelControl.Visible = false; return; } // Calculate the related info for the panel CalculatePanelInfo(); // Update the Header text of the panel UpdateHeaderText(); // Update the info in the panel UpdatePanelInfo(); // Force to redraw industryExpPanelControl.Refresh(); } /// /// Gets a subset of the header panel text. /// /// The type of job to display. /// The number of jobs given from skills including the base /// 1 job. /// The number of active jobs issued. /// Text describing the number of jobs left. private string GetHeaderText(string header, int totalJobs, JobsIssued issued) { long remainingJobs = Math.Max(0L, totalJobs - issued.ForCharacter - issued. ForCorporation); return string.Format("{0} Jobs Remaining: {1:D} out of {2:D} max", header, remainingJobs, totalJobs); } /// /// Updates the header text of the panel. /// private void UpdateHeaderText() { industryExpPanelControl.HeaderText = GetHeaderText("Manufacturing", m_skillBasedManufacturingJobs, m_activeManufacturing) + " " + GetHeaderText("Researching", m_skillBasedResearchingJobs, m_activeResearch) + " " + GetHeaderText("Reaction", m_skillBasedReactionJobs, m_activeReactions); } /// /// Updates the labels text in the panel. /// private void UpdatePanelInfo() { // Basic label text m_lblActiveManufacturingJobs.Text = "Active Manufacturing Jobs: " + m_activeManufacturing.Total; m_lblActiveResearchingJobs.Text = "Active Researching Jobs: " + m_activeResearch.Total; m_lblActiveReactionJobs.Text = "Active Reaction Jobs: " + m_activeReactions.Total; m_lblRemoteManufacturingRange.Text = "Remote Manufacturing Range: limited to " + StaticGeography.GetRange(m_remoteManufacturingRange); m_lblRemoteResearchingRange.Text = $"Remote Researching Range: limited to " + StaticGeography.GetRange(m_remoteResearchingRange); m_lblRemoteReactionRange.Text = $"Remote Reaction Range: limited to " + StaticGeography.GetRange(m_remoteReactionsRange); if (HasActiveCorporationIssuedJobs) { // Supplemental label text m_lblActiveCharManufacturingJobs.Text = $"Character Issued: {m_activeManufacturing.ForCharacter}"; m_lblActiveCorpManufacturingJobs.Text = $"Corporation Issued: {m_activeManufacturing.ForCorporation}"; m_lblActiveCharResearchingJobs.Text = $"Character Issued: {m_activeResearch.ForCharacter}"; m_lblActiveCorpResearchingJobs.Text = $"Corporation Issued: {m_activeResearch.ForCorporation}"; m_lblActiveCharReactionJobs.Text = $"Character Issued: {m_activeReactions.ForCharacter}"; m_lblActiveCorpReactionJobs.Text = $"Corporation Issued: {m_activeReactions.ForCorporation}"; } // Update label position UpdatePanelControlPosition(); } /// /// Updates the position of controls in the expandable panel. /// /// The current panel height. /// The label showing total jobs. /// The label showing job range. /// The label showing character jobs. /// The label showing corporation jobs. /// The new panel height. private int UpdatePanelItemPosition(int height, Label totalJobs, Label range, Label charJobs, Label corpJobs) { totalJobs.Location = new Point(PAD, height); range.Location = new Point(range.Location.X, height); if (HasActiveCorporationIssuedJobs) { charJobs.Location = new Point(PAD * 3, height); charJobs.Visible = true; corpJobs.Location = new Point(PAD * 3, height); corpJobs.Visible = true; height += charJobs.Height + corpJobs.Height + PAD; } else { charJobs.Visible = false; corpJobs.Visible = false; } height += totalJobs.Height; return height; } /// /// Updates expandable panel controls positions. /// private void UpdatePanelControlPosition() { industryExpPanelControl.SuspendLayout(); int height = industryExpPanelControl.ExpandDirection == Direction.Up ? PAD : industryExpPanelControl.HeaderHeight; height = UpdatePanelItemPosition(height, m_lblActiveManufacturingJobs, m_lblRemoteManufacturingRange, m_lblActiveCharManufacturingJobs, m_lblActiveCorpManufacturingJobs); height = UpdatePanelItemPosition(height, m_lblActiveResearchingJobs, m_lblRemoteResearchingRange, m_lblActiveCharResearchingJobs, m_lblActiveCorpResearchingJobs); height = UpdatePanelItemPosition(height, m_lblActiveReactionJobs, m_lblRemoteReactionRange, m_lblActiveCharReactionJobs, m_lblActiveCorpReactionJobs) + PAD; // Update panel's expanded height industryExpPanelControl.ExpandedHeight = height + ((industryExpPanelControl. ExpandDirection == Direction.Up) ? industryExpPanelControl.HeaderHeight : PAD); industryExpPanelControl.ResumeLayout(false); } /// /// Calculates the industry jobs related info for the panel. /// private void CalculatePanelInfo() { m_activeManufacturing = new JobsIssued(m_list, BlueprintActivity.Manufacturing); m_activeResearch = new JobsIssued(m_list, BlueprintActivity.ResearchingTechnology, BlueprintActivity.ResearchingMaterialEfficiency, BlueprintActivity.Copying, BlueprintActivity.Duplicating, BlueprintActivity.Invention, BlueprintActivity. ReverseEngineering, BlueprintActivity.ResearchingTimeEfficiency); m_activeReactions = new JobsIssued(m_list, BlueprintActivity.SimpleReactions, BlueprintActivity.Reactions); // Calculate character's max manufacturing jobs m_skillBasedManufacturingJobs = IndustryJob.MaxManufacturingJobsFor(Character); // Calculate character's max researching jobs m_skillBasedResearchingJobs = IndustryJob.MaxResearchJobsFor(Character); // Calculate character's max reaction jobs m_skillBasedReactionJobs = IndustryJob.MaxReactionJobsFor(Character); // Calculate character's remote manufacturing range m_remoteManufacturingRange = Character.LastConfirmedSkillLevel(DBConstants. SupplyChainManagementSkillID); // Calculate character's remote researching range m_remoteResearchingRange = Character.LastConfirmedSkillLevel(DBConstants. ScientificNetworkingSkillID); // Calculate character's remote reactions range m_remoteReactionsRange = Character.LastConfirmedSkillLevel(DBConstants. RemoteReactionsSkillID); } # endregion #region Initialize Expandable Panel Controls // Basic labels constructor private readonly Label m_lblActiveManufacturingJobs = new Label(); private readonly Label m_lblActiveResearchingJobs = new Label(); private readonly Label m_lblActiveReactionJobs = new Label(); private readonly Label m_lblRemoteManufacturingRange = new Label(); private readonly Label m_lblRemoteResearchingRange = new Label(); private readonly Label m_lblRemoteReactionRange = new Label(); // Supplemental labels constructor private readonly Label m_lblActiveCharManufacturingJobs = new Label(); private readonly Label m_lblActiveCorpManufacturingJobs = new Label(); private readonly Label m_lblActiveCharResearchingJobs = new Label(); private readonly Label m_lblActiveCorpResearchingJobs = new Label(); private readonly Label m_lblActiveCharReactionJobs = new Label(); private readonly Label m_lblActiveCorpReactionJobs = new Label(); private void InitializeExpandablePanelControls() { industryExpPanelControl.SuspendLayout(); // Add basic labels to panel industryExpPanelControl.Controls.AddRange(new Control[] { m_lblActiveManufacturingJobs, m_lblActiveResearchingJobs, m_lblActiveReactionJobs, m_lblRemoteManufacturingRange, m_lblRemoteResearchingRange, m_lblRemoteReactionRange }); // Add supplemental labels to panel industryExpPanelControl.Controls.AddRange(new Control[] { m_lblActiveCharManufacturingJobs, m_lblActiveCorpManufacturingJobs, m_lblActiveCharResearchingJobs, m_lblActiveCorpResearchingJobs, m_lblActiveCharReactionJobs, m_lblActiveCorpReactionJobs }); // Apply properties foreach (Label label in industryExpPanelControl.Controls.OfType