diff --git a/MyCBZ/Events/UpdatePageListViewSortingEvent.cs b/MyCBZ/Events/UpdatePageListViewSortingEvent.cs new file mode 100644 index 00000000..b8c9207e --- /dev/null +++ b/MyCBZ/Events/UpdatePageListViewSortingEvent.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Win_CBZ.Events +{ + internal class UpdatePageListViewSortingEvent + { + public int SortColumn { get; set; } = 1; // sort by index by default + + public SortOrder Order { get; set; } = SortOrder.Ascending; + + public UpdatePageListViewSortingEvent() { } + + public UpdatePageListViewSortingEvent(int column, SortOrder order) + { + SortColumn = column; + Order = order; + } + } +} diff --git a/MyCBZ/Events/UpdateThumbnailsEvent.cs b/MyCBZ/Events/UpdateThumbnailsEvent.cs new file mode 100644 index 00000000..c10fcee9 --- /dev/null +++ b/MyCBZ/Events/UpdateThumbnailsEvent.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Win_CBZ.Events +{ + class UpdateThumbnailsEvent + { + public List Pages { get; set; } + + public UpdateThumbnailsEvent() { } + + public UpdateThumbnailsEvent(List pages) + { + this.Pages = pages; + } + } +} diff --git a/MyCBZ/Extensions/ListBoxExtensions.cs b/MyCBZ/Extensions/ListBoxExtensions.cs new file mode 100644 index 00000000..711f4d12 --- /dev/null +++ b/MyCBZ/Extensions/ListBoxExtensions.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Versioning; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Documents; +using System.Windows.Forms; + +namespace Win_CBZ.Extensions +{ + [SupportedOSPlatform("windows")] + public static class ListBoxExtensions + { + public static void Sort(this ListBox lb, SortOrder order = SortOrder.Ascending) + { + var list = lb.Items.Cast().ToArray(); + list = order == SortOrder.Descending + ? list.OrderByDescending(x => x.Index).ToArray() + : list.OrderBy(x => x.Index).ToArray(); + lb.Items.Clear(); + lb.Items.AddRange(list); + } + } +} diff --git a/MyCBZ/Forms/MainForm.cs b/MyCBZ/Forms/MainForm.cs index af33a3db..7026c25b 100644 --- a/MyCBZ/Forms/MainForm.cs +++ b/MyCBZ/Forms/MainForm.cs @@ -31,6 +31,8 @@ using Win_CBZ.Properties; using System.Drawing.Drawing2D; using Microsoft.VisualBasic.Devices; +using Win_CBZ.Extensions; +using Win_CBZ.List; namespace Win_CBZ { @@ -271,7 +273,9 @@ private ProjectModel NewProjectModel() AppEventHandler.GlobalActionRequired += HandleGlobalActionRequired; AppEventHandler.GeneralTaskProgress += HandleGlobalTaskProgress; AppEventHandler.RedrawThumbnail += HandleRedrawThumbnail; + AppEventHandler.UpdateThumbnails += HandleUpdateThumbnails; AppEventHandler.ImageAdjustmentsChanged += HandleImageAdjustmentsChanged; + AppEventHandler.UpdateListViewSorting += HandleListviewSorting; newProjectModel.RenameStoryPagePattern = Win_CBZSettings.Default.StoryPageRenamePattern; newProjectModel.RenameSpecialPagePattern = Win_CBZSettings.Default.SpecialPageRenamePattern; @@ -1181,8 +1185,6 @@ private void HandleRedrawThumbnail(object sender, RedrawThumbEvent e) PageImages.Images.RemoveByKey(e.Page.Id); } PageThumbsListBox.Items[pageIndex] = e.Page; - - } PageThumbsListBox.Invalidate(); PageThumbsListBox.Refresh(); @@ -1190,6 +1192,58 @@ private void HandleRedrawThumbnail(object sender, RedrawThumbEvent e) } } + private void HandleUpdateThumbnails(object sender, UpdateThumbnailsEvent e) + { + if (!WindowClosed) + { + Invoke(new Action(() => + { + if (e.Pages != null && e.Pages.Count > 0) + { + foreach (Page p in e.Pages) + { + p.Invalidated = true; + int pageIndex = PageThumbsListBox.Items.IndexOf(Program.ProjectModel.GetPageById(p.Id)); + if (pageIndex > -1) + { + if (PageImages.Images.ContainsKey(p.Id)) + { + PageImages.Images.RemoveByKey(p.Id); + } + PageThumbsListBox.Items[pageIndex] = p; + } + } + PageThumbsListBox.Invalidate(); + PageThumbsListBox.Refresh(); + } + })); + } + } + + private void HandleListviewSorting(object sender, UpdatePageListViewSortingEvent e) + { + if (!WindowClosed) + { + Invoke(() => + { + Program.ProjectModel.Pages.Sort((x, y) => x.Index.CompareTo(y.Index)); + + PagesList.ListViewItemSorter = new ListViewSorter(e.SortColumn); + + PagesList.Sorting = e.Order; + PagesList.Sort(); + PagesList.Sorting = SortOrder.None; + + if (Win_CBZSettings.Default.PagePreviewEnabled) + { + PageThumbsListBox.Sort(e.Order); + } + + + }); + } + } + public void ReloadPreviewThumbs() { if (!WindowClosed) @@ -4693,10 +4747,9 @@ private void PagesList_ItemSelectionChanged(object sender, ListViewItemSelection LabelH.Text = ((Page)selectedPages[0].Tag).Format.H.ToString(); } - selectedImageTasks = ((Page)selectedPages[0].Tag).ImageTask; - if (RadioApplyAdjustmentsPage.Checked && ((String)RadioApplyAdjustmentsPage.Tag) != ((Page)selectedPages[0].Tag).Id) { + selectedImageTasks = ((Page)selectedPages[0].Tag).ImageTask; UpdateImageAdjustments(sender, ((Page)selectedPages[0].Tag).Id, true); } diff --git a/MyCBZ/Forms/MainForm.resx b/MyCBZ/Forms/MainForm.resx index 1fc8cde3..5acef61c 100644 --- a/MyCBZ/Forms/MainForm.resx +++ b/MyCBZ/Forms/MainForm.resx @@ -140,7 +140,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAbgoAAAJNU0Z0AUkBTAIBAQMB - AAGoAS4BqAEuARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMAAUADAAEQAwABAQEAAQgG + AAEIAS8BCAEvARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMAAUADAAEQAwABAQEAAQgG AAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEAAfABygGmAQABMwUAATMB AAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEAAYABfAH/AQACUAH/AQAB kwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFmAwABmQMAAcwCAAEzAwAC @@ -198,7 +198,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAIkMAAAJNU0Z0AUkBTAIBARIB - AAGoAS4BqAEuARgBAAEYAQAE/wEZAQAI/wFCAU0BNgcAATYDAAEoAwABYAMAAXgDAAEBAQABGAYAAYeE + AAEIAS8BCAEvARgBAAEYAQAE/wEZAQAI/wFCAU0BNgcAATYDAAEoAwABYAMAAXgDAAEBAQABGAYAAYeE AANnEiUDZ/8ACQADJRIAAyXnAB4lAwADnAP+A1wDcAkAAyWZAALUAdUDJzYlAycD1QwAAyUDfQG9Ar4B vQK+Ab0CvgG9Ar4BvQK+Ab0CvgG9A74CvwMAA90DYQYlA3gGAAMlmQADvQMlNr0DJQO+DAADJQG9Ar4B pAHmAfMBaAHdAfMBaAHdAfMBaAHdAfMBaAHdAfMBaAHdAfMBaAHdAfMBzQHtAfMD/wNkCSUDJwN+AwAD @@ -520,174 +520,174 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu - SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAICcAAAJNU0Z0AUkBTAIBAQ8C - AAEPAQABDwEQAQABEAEABP8BIQEACP8BQgFNATYHAAE2AwABKAMAAUADAAFAAwABAQEAASAGAAFA/wAb - AANMAZADJQH/A2IB4QgAAyQBNAMlAf8DJQH/AyoBP2AAAVUCVwGxAVwCZQHnASsCfgH8ASsCfgH8AVwC - ZQHnAVUCVwGxZAADMgFPAyUB/wMlAf8DGgEkBAAEAgNZAe8DJQH/A0YBgCQAAwYBCANBAXIDWwHNA1wB - +ANcAfgDWwHNA0EBcgMGAQgcAAFAAkEBcQEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AUAC - QQFxYAADEAEVAxsBJgNAAf0DJQH/A0ABbwMQARUDEAEVA1gBugMlAf8DWgHEAxABFQMPARMYAAMWAR0D - WwHTA1UBrgMpAT0DBwEJAyUB/wMlAf8DJQH/A1sB0wMWAR0cAAE/AkABbgMuAUgDLgFIAT8CQAFuAy0B - RQNNAZIDWwHkAyYB+wMmAfsDWwHkA1UBtAMxAU1EAANcAdkDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8D - JQH/AyUB/wMlAf8DJQH/AysB/AMOARIQAAMGAQgDWwHTA0EBcwwAAyUB/wMlAf8DJQH/AyUB/wNbAdMD - BgEIGAADNgFZAVoCYwHpAVoCYwHpAzYBWQMtAUYDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DQQH5RAAD - TgGXAyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DMwFREAADQQFyA1UB - rhAAAyUB/wMlAf8DJQH/AyUB/wMlAf8DQQFyGAABWgJjAekBAAHSAfoB/wEAAdIB+gH/AVoCYwHpAx0B - KQMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNgAeBEAAMUARsDKgE/A0ABcQMlAf8DJQH/AzsBZAMqAT8D - KgE/A2EB6wMlAf8DUwGqAyoBPwMWAR4QAANbAc0DKQE9EAADJQH/AyUB/wMlAf8DJQH/AyUB/wNbAc0M - AAMxAU0DVQG0AxwBJwFaAmMB6QEAAdIB+gH/AQAB0gH6Af8BWgJjAekDGwEmA1sBygNEAXoDLgFIAzAB - SwNEAXoDWwHKAzwBZkwAAwoBDQNNAfoDJQH/Az4BaggAA1QBqwMlAf8DWQHGGAADXAH4AwcBCRAAAyUB - /wMlAf8DJQH/AyUB/wMlAf8DXAH4DAADQQH5AyUB/wM9AWcDMwFQAVoCYwHpAVoCYwHpAzMBUAM1AVYD - FwEfAzYBVwNaAcQDWgHEAzkBXgMYASBUAANZAcYDJQH/A1QBqwgAAz4BagMlAf8DTQH6AwoBDRQAA1wB - +AMHAQkQAAMlAf8DJQH/AyUB/wMlAf8DJQH/A1wB+AwAA2AB4AMlAf8DYQHmAz0BZwMjATMDIwEzAzYB - WANgAeADPQFpA4AB/gMlAf8DJQH/A4AB/gM9AWlMAAMWAR4DKgE/A1MBqgMlAf8DYQHrAyoBPwMqAT8D - OwFkAyUB/wMlAf8DQAFxAyoBPwMUARsMAANbAc0DKQE9EAADJQH/AyUB/wMlAf8DJQH/AyUB/wNbAc0M - AAM8AWYDWwHKA0QBegMuAUgDMAFLA0QBegNbAcoDPAFmA2EB5gMlAf8DJQH/AyUB/wMlAf8DYQHmTAAD - MwFRAyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DTgGXDAADQQFyA1UB - rhAAAyUB/wMlAf8DJQH/AyUB/wMlAf8DQQFyEAADFwEfAzYBVwNaAcQDWgHEAzkBXgMYASAEAANaAfUD - JQH/AyUB/wMlAf8DJQH/A1oB9UwAAw4BEgMrAfwDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB - /wMlAf8DJQH/A1wB2QwAAwYBCANbAdMDQQFzDAADJQH/AyUB/wMlAf8DJQH/A1sB0wMGAQgQAAM9AWkD - gAH+AyUB/wMlAf8DgAH+Az0BaQQAA1EBngMlAf8DJQH/AyUB/wMlAf8DUQGeUAADDwETAxABFQNaAcQD - JQH/A1gBugMQARUDEAEVA0ABbwMlAf8DQAH9AxsBJgMQARUQAAMWAR0DWwHTA1UBrgMpAT0DBwEJAyUB - /wMlAf8DJQH/A1sB0wMWAR0UAANhAeYDJQH/AyUB/wMlAf8DJQH/A2EB5gQAAwgBCgNOAZgDZQHxA2UB - 8QNOAZgDCAEKWAADRgGAAyUB/wNZAe8EAgQAAxoBJAMlAf8DJQH/AzIBTxgAAwYBCANBAXIDWwHNA1wB - +ANcAfgDWwHNA0EBcgMGAQgYAANaAfUDJQH/AyUB/wMlAf8DJQH/A1oB9XQAAyoBPwMlAf8DJQH/AyQB - NAgAA2IB4QMlAf8DTAGQUAADUQGeAyUB/wMlAf8DJQH/AyUB/wNRAZ7oAAMIAQoDTgGYA2UB8QNlAfED - TgGYAwgBCv8AdQADGAEhA1ABnANaAfIDUAGcAxgBITgAAzgBXQMwAUoDBAEFJAADEwEaA0kBiANdAdQD - QQH5A0EB+QNdAdQDSQGIAxMBGiAAAxMBGgNJAYgDXQHUA0EB+QNBAfkDXQHUA0kBiAMTARocAAMYASAD - TwGZA1oB8gNRAaIDJQH/A1EBogNaAfIDTwGZAxgBIDAAAzoBYgNNAfoDXQHcAyQBNBwAAzcBWgNiAe4D - SwGNAyMBMgMGAQcDBgEHAyMBMgNLAY0DXQHqAzcBWhgAAzcBWgNgAfMDTQH6A1gBtwNJAYcDSQGHA1gB - twNNAfoDYAHzAzcBWhAAAxUBHANOAZYDWgHyA1EBngMaASMDCAEKAyUB/wMIAQoDGgEjA1EBngNaAfID - TgGWAxUBHCgAA0IBdANTAaoDMwFRA2AB6AMXAR8UAAM3AVoDWwHkA10BzgMDAQQQAAM0AVMDNgFXA2AB - 4AM3AVoQAAM3AVoDgAH+A1oBvwMYASEQAAMYASEDWgG/A4AB/gM3AVoMAANfAeUDUQGkAxsBJQgAAwgB - CgMlAf8DCAEKCAADGwElA1EBpANfAeUYAAMrAUEDUQGhA14B3QNNAfoDXwHVAx0BKAQAA0YBfgNQAZwQ - AAMTARoDXQHqAz0BZwMlAf8DWgG/AwQBBQwAA1wB1gMmAfsDKAE7A10B6gMTARoIAAMTARoDYAHzA1oB - vwMFAQYYAAMFAQYDWgG/A2AB8wMTARoIAAMlAf8DEAEVDAADCAEKAyUB/wMIAQoMAAMQARUDJQH/EAAD - DgESA1YBswNbAdgDPwFtAx0BKAMFAQYMAAMVARwDYQHrAw8BEwwAA0kBiANCAXQDVwHCAyUB/wMlAf8D - JQE3DAADXgHtAyUB/wNEAXgDSwGNA0kBiAgAA0kBiANNAfoDGAEhIAADGAEhA00B+gNJAYgIAAMlAf8D - EAEVDAADCAEKAyUB/wMIAQoMAAMQARUDJQH/DAADCAEKA10BzwNKAYsDBAEFHAADRwGCA10BzwMIAQoI - AANdAdQDOgFiAyUB/wNAAf0DSwGMAwYBBwQAAwsBDgMmATkDJQH/AyUB/wNaAccDHQEoA10B1AgAA10B - 1ANYAbcoAANYAbcDXQHUCAADJQH/AxABFQQAAxcBHwMRARYDCAEKAyUB/wMIAQoMAAMQARUDJQH/DAAD - RwGCA1IBowkAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wgAA1MB - pgNHAYIIAANBAfkDTAGRA14B8AM7AWQIAAMWAR4DZQHxAyUB/wMlAf8DJQH/AyUB/wMrBEEB+QgAA0EB - +QNJAYcRAAHSAfoB/wEAAdIB+gH/EAADSQGHA0EB+QgAAyUB/wMQARUDWAG4AUACvgH9AyEBLwNLAY8D - JQH/A0sBjwMSARgIAAMQARUDJQH/DAADXQHfAx4BKigAAx4BKgNdAd8IAANBAfkDWwHKAwsBDgwAAzMB - UgMlAf8DJQH/AyUB/wMlAf8DJQH/Az4BawNBAfkIAANBAfkDSQGHDAADBAEFAUgCYwH2AUgCYwH2AVwC - YQHZAzMBUggAA0kBhwNBAfkIAAMlAf8DEAEVAVMCaAH0AQAB0gH6Af8BQAJBAXEDRQF8Ay4BSANSAagD - XgHwA0oBiwMRARYDEAEVAyUB/wwAA0AB/QMCAQMJAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB - /wEAAdIB+gH/AQAB0gH6Af8IAAMCAQMDQAH9CAADXQHUA1kB7wMaASMMAAMWAR0DYAHzAyUB/wNRAfcD - WwHkA0gB9gOAAf4DXQHUCAADXQHUA1gBtwwAA0sBjQFaAlwBxAMlATcDRQF8A2IB7gM1AVUEAANYAbcD - XQHUCAADJQH/AzoBYAFbAl0BygEAAdIB+gH/AQAB0gH6Af8BWwJhAd4DNAFTBAIDIAEuA1QBqwNeAfAD - TgGXAyUB/wwAA10B3wMeASooAAMeASoDXQHfCAADSQGIAyUB/wNdAd8DHgEqDAADNwFaA1EBoQMwAUoD - SwGNA2IB7gMlAf8DSQGICAADSQGIA00B+gMYASEEAAMRARYDYgHuAxwBJwgAAwkBCwMQARUDGAEhA00B - +gNJAYgIAANfAeUDWwHFAxsBJgFKAksBigFeAmUB4gOAAf4DgAH+AV4CZQHdAzMBUAQBAzQBUwNNAfoD - XwHlDAADRwGCA1IBpQkAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB - /wgAA1IBpQNHAYIIAAMTARoDYAHzAyUB/wOAAf4DMQFOCAADNgFYA1oBvwNaAfIDJQH/AyUB/wNgAfMD - EwEaCAADEwEaA2AB8wNaAb8DBQEGAVsCXQHKA0sBjRAAAwUBBgNaAb8DYAHzAxMBGggAAxUBHANEAXgD - WgHyA0YBfgMXAR8DOAFbAWACZQHjA4AB/gEAAdIB+gH/AWACZAHbAToCOwFiA0MBdgMVARwMAAMIAQoD - XQHPA0sBjQMEAQUYAAMEAQUDSwGNA10BzwMIAQoMAAM3AVoDgAH+AyUB/wMrAUIDUwGpA04BmAMnAToD - IwEzA14B0gNKAYsDKwH8AzcBWhAAAzcBWgOAAf4DWgG/AUACQQFwAwwBDwwAAxgBIQNaAb8DgAH+AzcB - WhQAAxgBIANEAXoDWgHyA0UBfAMdASgBTwJQAZsBWwJhAd4DVQGsAxABFRgAAw4BEgNWAbMDXgHXAz4B - awMbASYDBAEFAwQBBQMbASYDPgFrA14B1wNWAbMDDgESFAADNwFaA2AB8wNdAdQDWQHvAyUB/wNXAbkD - GAEgA0ABcQNdAeoDNwFaGAADNwFaA2AB8wNNAfoDWAG3A0kBhwNJAYcDWAG3A00B+gNgAfMDNwFaIAAD - GAEhA0YBfQNaAfIDSwGNBAIoAAMrAUEDUQGhA14B3QNNAfoDTQH6A14B3QNRAaEDKwFBIAADEwEaA0kB - iANdAdQDQQH5A0EB+QNdAdQDSQGIAxMBGiAAAxMBGgNJAYgDXQHUA0EB+QNBAfkDXQHUA0kBiAMTARr/ - AP8AHgADMwFQA1oB6QMlAf8DJQH/AyUB/wMlAf8DJQH/A1wByBgAAzEBTQNVAbQDWwHkAyYB+wMmAfsD - WwHkA1UBtAMxAU0kAAMzAVADWgHpAyUB/wUAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB - 0gH6Af8BAAHSAfoB/wEAAdIB+gH/AVkCXAHBVAADWgHpAyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB - /xgAA0EB+QMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNBAfkkAANaAekDJQH/AyUB/wUAAdIB+gH/AQAB - 0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8wAAMXAR8D - SQGHA1wB1gNcAfgDUwGqEAADJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/xgAA2AB4AMlAf8D - JQH/AyUB/wMlAf8DJQH/AyUB/wNgAeAkAAMlAf8DJQH/AyUB/wUAAdIB+gH/AQAB0gH6Af8BAAHSAfoB - /wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8kAAMJBAwBDwNNAZMDTQH6AyUB - /wMlAf8DJQH/A2AB8xAAAyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DMwFSAQAB0gH6Af8B - XAJfAcgMAAM8AWYDWwHKA0QBegMuAUgDMAFLA0QBegNbAcoDPAFmJAADJQH/AyUB/wMlAf8FAAHSAfoB - /wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/HAAB - OwI8AWUDVQGvAzYBWANcAecDYAHgAz4BagM6BGAB6AMlAf8DVQGuEAADJQH/AyUB/wMlAf8DJQH/AyUB - /wMlAf8DJQH/AyUB/wMzAVIBAAHSAfoB/wEAAdIB+gH/EAADFwEfAzYBVwNaAcQDWgHEAzkBXgMYASAD - GwEmAUwCTQGRASECXwH7ASECXwH7AVsCYwHkAVUCVwG0AzEBTQwAAyUB/wMlAf8DJQH/BQAB0gH6Af8B - AAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/xgAASYC - JwE5AVUCVgGuA0QBegNaAfUDOQFfAz0BZwFgAmkB6AMgAS4DVwG5AyYB+wMhATAQAAMlAf8DJQH/AyUB - /wMlAf8DJQH/AyUB/wMlAf8DJQH/AzMBUgEAAdIB+gH/AQAB0gH6Af8QAAM9AWkDgAH+AyUB/wMlAf8D - gAH+Az0BaQMZASIBAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AUECagH5DAAD - JQH/AyUB/wMlAf8FAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8B - AAHSAfoB/wEAAdIB+gH/GAADMgFPA0IBdQNgAdsDNQFWAV4CZQHiAQAB0gH6Af8BAAHSAfoB/wFQAlEB - nQNMAZEDRgGAFAADJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMzAVIBAAHSAfoB/wEAAdIB - +gH/EAADYQHmAyUB/wMlAf8DJQH/AyUB/wNhAeYDHgEqAQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB - 0gH6Af8BAAHSAfoB/wFgAmYB4AwAAyUB/wMlAf8DJQH/BQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB - 0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/xQAAwcBCQNKAYoDXQHPAzoBYAFNAn0B - +gEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wErAn4B/AMpAT0EAhQAAyUB/wMlAf8DJQH/AyUB/wMlAf8D - JQH/AyUB/wNcAcgDMwFSAQAB0gH6Af8BAAHSAfoB/xAAA1oB9QMlAf8DJQH/AyUB/wMlAf8DWgH1AysB - QgNEAXoDLgFIAzABSwNEAXoBWwJdAcoDPAFmDAADJQH/AyUB/wMlAf8FAAHSAfoB/wEAAdIB+gH/AQAB - 0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/EAAEAgNLAY8DYAHgAzUB - VgOAAf4BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wErAn4B/AMEAQUYAAMlAf8DJQE3FAAD - OwFlAzMBUgEAAdIB+gH/AQAB0gH6Af8QAANRAZ4DJQH/AyUB/wMlAf8DJQH/A1EBngMXAR8DNgFXAVoC - XAHEAVoCXAHEAzkBXgMYASAQAAMlAf8DJQH/AyUB/wUAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB - +gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8QAANBAXMDJQH/AzYBWAFgAmYB4AEAAdIB - +gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BWQJcAcEcAANaAekDJQE3EAADCwEOAyUB - /wMzAVIBAAHSAfoB/wEAAdIB+gH/EAADCAEKA04BmANlAfEDZQHxA04BmAMIAQoDNAFUA4AB/gEAAdIB - +gH/AQAB0gH6Af8DgAH+AT0CPgFpEAADJQH/AyUB/wMlAf8FAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8B - AAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/DAADHAEnAyYB+wNdAc4DGwElAUEC - agH5AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BQQJqAfkBJgInATkcAAMzAVADWgHpAyUB - /wMlAf8DJQH/AyUB/wMlAf8DWwHKA0YBfgEAAdIB+gH/AVwCXwHIKAABYQJqAeYBAAHSAfoB/wEAAdIB - +gH/AQAB0gH6Af8BAAHSAfoB/wFhAmoB5hAAAyUB/wMlAf8DJQH/BAADgAH+A4AB/gOAAf4DgAH+A4AB - /gEAAdIB+gH/AQAB0gH6Af8BRgJHAYAMAANVAa4DJQH/A2AB6AM6AWADMAFLAVgCWgG9AQAB0gH6Af8B - AAHSAfoB/wNeAdIDKgE/LAADPAFmAwUBBhQAA0YBfigAAVoCbgH1AQAB0gH6Af8BAAHSAfoB/wEAAdIB - +gH/AQAB0gH6Af8BWgJuAfUQAAMlAf8DJQE3NAADYAHzAyUB/wMlAf8DJQH/A1oB8gMoATwDEQEWAxEB - FjQAAVoCYwHpAyUBNxAAAwsBDgEAAdIB+gH/KAADUQGeAQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB - 0gH6Af8DUQGeEAADWgHpAyUBNyAAAwsBDgEAAdIB+gH/DAADUwGqA1wB+ANcAdYDSQGHAxcBH0AAAzMB - UAFaAmMB6QEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BWwJdAcooAAMIAQoD - TgGYAWUCcAHxAWUCcAHxA04BmAMIAQoQAAMzAVADWgHpAyUB/wUAAdIB+gH/AQAB0gH6Af8BAAHSAfoB - /wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AVECUwGi/wD/AGIAAxcBHwMlAf8DJQH/AwgB - CiQAAx0BKQM/AW4DBgEIEAADBgEIAz8BbgMdASkYAAMTARkDRwGCA1kBwwNaAekDKwH8AysB/ANaAekD - WQHDA0YBgQMTARlgAAMXAR8DJQH/AzwBZgNOAZcDJQH/AwgBCiAAA1IBqAMlAf8DWwHQAx0BKAgAAx0B - KANbAdADJQH/A1IBqBgAA1sB5AMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/A1sB5FwAAxYB - HgMlAf8DOwFlBAAEAQNOAZcDJQH/AwgBChwAAz8BbAMlAf8DJQH/A1MB9AM7AWMDOwFjA1MB9AMlAf8D - JQH/Az8BbBgAA1EB9wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/A1EB9xAAAVwCXwHIAQAB - 0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB - /wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AVwCXwHIEAADFgEeAyUB/wM8AWYMAAQBA04B - lwMlAf8DCAEKGAADFAEbA0AB/QMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNAAf0DFAEbGAADWwHNAyUB - /wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DWwHNEQAB0gH6Af8xAAHSAfoB/wwAAxYBHgMlAf8D - PAFmFAAEAQNOAZgDJQH/HAADWQHGAyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/A1kBxhwAAzUBVgOAAf4D - JQH/A2EB5gNdAc8DXQHPA2EB5gMlAf8DgAH+AzUBVhEAAdIB+gH/BAADJQH/BAADJQH/AzwBZgMlAf8D - JQH/BAADJQH/AzwBZgMlAf8FAAHSAfoB/wgAAxYBHgMlAf8DPAFmHAADNgFZAyUB/wQBFAAEAQNUAasD - JQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DVAGrBAEcAAMwAUwDKgE/AxsBJQMNAREDDQERAx0BKQMqAT8D - MAFMFQAB0gH6Af8EAAMlAf8EAAMlAf8DPAFmAyUB/wMlAf8EAAMlAf8DPAFmAyUB/wUAAdIB+gH/CAAD - JQH/A1IBoBwAAzYBVwMlAf8DHQEpAVYCWAGzEAADEAEVA1YBtQMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB - /wMlAf8DJQH/A1YBtQMQARUcAAMWAR4DOQFfA1oBxwNaAccDOQFfAxYBHhkAAdIB+gH/BAADJQH/BAAD - JQH/AzwBZgMlAf8DJQH/BAADJQH/AzwBZgMlAf8FAAHSAfoB/wgAAyUB/wMrAfwDOQFeFAADNgFXAyUB - /wMPARMDPQFoAQAB0gH6Af8MAAMrAUIDYQHmAyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8D - JQH/AyUB/wNhAeYDKwFCFAADHQEpA14B8AMlAf8DJQH/AyUB/wMlAf8DXgHwAx0BKRUAAdIB+gH/BAAD - JQH/BAADJQH/AzwBZgMlAf8DJQH/BAADJQH/AzwBZgMlAf8FAAHSAfoB/wgAAyUB/wMlAf8DKwH8AzkB - XgwAAzUBVgMlAf8DDwEUAzwBZgEAAdIB+gH/AxYBHgwAA1oB8gMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB - /wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNaAfIUAANVAbEDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8D - VQGxFQAB0gH6Af8EAAMlAf8EAAMlAf8DPAFmAyUB/wMlAf8EAAMlAf8DPAFmAyUB/wUAAdIB+gH/CAAD - JQH/A0YBgQNWAbIDKwH8AzgBXQQAAzUBVgMlAf8DDwEUAzwBZgEAAdIB+gH/AxYBHhAAAz0BaQNQAZwD - TwGbA08BmwNTAacDJQH/AyUB/wMlAf8DJQH/A1MBpwNPAZsDTwGbA1ABnAM9AWkUAANTAfQDJQH/AyUB - /wMlAf8DJQH/AyUB/wMlAf8DUwH0FQAB0gH6Af8EAAMlAf8EAAMlAf8DPAFmAyUB/wMlAf8EAAMlAf8D - PAFmAyUB/wUAAdIB+gH/CAADgAH+AxoBIwNCAXUDJQH/AysB/ANOAZYDJQH/Aw8BFAM8AWYBAAHSAfoB - /wMWAR4oAANeAdcDJQH/AyUB/wNeAdcoAANTAfQDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DUwH0FQAB - 0gH6Af8xAAHSAfoB/wgAA04BlQNNAfoDKwH8AyUB/wMlAf8DJQH/AwsBDgE7AjwBZQEAAdIB+gH/AxYB - HiwAA0kBhQMlAf8DJQH/A0kBhigAA1UBsQMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNVAbEUAAFcAl8B - yAEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB - 0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wFcAl8ByAgAAwUBBgNHAYIDDQERAysB - QQMqAUABOwI8AWUDUgGgAQAB0gH6Af8DFwEfMAADJAE0AyUB/wMlAf8DJAE0KAADHQEpA14B8AMlAf8D - JQH/AyUB/wMlAf8DXgHwAx0BKVQABAEDTQGSA4AB/gEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB - +gH/AxcBHzQABAEDXAHIA1wByAQBLAADHQEpA1UBsQNTAfQDUwH0A1UBsQMdASn/AFUAAUIBTQE+BwAB - PgMAASgDAAFAAwABQAMAAQEBAAEBBgABAhYAA/8BAAb/AgABxgEfAv8B4AF/AgABwgEfAfABDwHgAX8C - AAGAAQcB4AEHAfADAAGAAQMBxwEDAfADAAGAAQMBzwEDAfADAAGAAQMBzwEDAYADAAHhAY8BzwEDAYAB - AQIAAfEBhwHPAQMBgAEBAgABwAEBAc8BAwGAAQECAAHAAQEBzwEDAcABgQIAAcABAQHHAQMBwAGBAgAB - 4AEBAeABBwHAAYECAAH4AUMB8AEPAcAB/wIAAfgBYwL/AcAB/wIABP8BwAH/AgAI/wH4AT8B/wEfAfAB - DwHwAQ8B4AEPAf8BDwHgAQcB4AEHAYABAwH/AQcEwwGMAWMB8AEnAYEBwQGHAeEBnAFzAcAB4wGBAcEB - jwHxAZwBcwGHAfEBgQEBAZ8B+QGQAXMBmAEZAYYBAQGeAXkBgAEzAZ8B+QGOAQEBnAEZAYABAwGYARkB - jgEBAZwBCQGAAQMBnwH5AYcBAQGIAcEBgAEDAZgBGQGDAQEBgQHhAYABAwGHAeEBwAEDAcEBwwHgAQ8B - wAEDAeABBwHgAQcB+AE/AfABDwHwAQ8B8AEPEP8B4AEfAYABfwHEAQMC/wHgAR8BgAF/AcQBAwH/AcEB - 4AEfAYABfwHEAQMB/gEBAeABAwGAAX8BxAEDAfgBAQHgAQMBwAEBAcQBAwHwAQEB4AEDAcABAQHEAQMB - 8AEDAeABAwHAAQEBxAEDAeABAwHgAQMBwAEBAcQBAwHAAQcB5wHDAcABAwHEAQMBwAEPAecBgwHAAQMB - xAEDAYABDwHgAQMB/wEDAcQBAwGAAR8B/AH7Af8BAwHPAf8BgAF/AfwB8wH/AQMBzwHzAYMB/wH8AQMB - /wEDAcQBAxL/AfwBPwHjAccB4AEHAv8B+AEfAeEBhwHgAQcC/wHxAQ8B4AEHAeABBwGAAQEB4wGHAeAB - BwHgAQcBvwH9AscB8AEPAeABBwGoAUUBjwHjAeABBwHwAQ8BqAFFAZ8BwwHAAQMB+AEfAagBRQGPAYMB - gAEBAfABDwGoAUUBhwEDAYABAQHwAQ8BqAFFAYIBBwGAAQEB8AEPAagBRQGAAQ8B/AE/AfABDwG/Af0B - gAEfAfwBPwHwAQ8BgAEBAYABPwH8AT8B8AEPAv8BgAF/AfwBPwH4AR8K/ws= + SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAIicAAAJNU0Z0AUkBTAIBAQ8B + AAFgAQ8BYAEPARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAAUADAAEBAQABIAYAAUD/ + ABsAA0wBkAMlAf8DYgHhCAADJAE0AyUB/wMlAf8DKgE/YAABVQJXAbEBXAJlAecBKwJ+AfwBKwJ+AfwB + XAJlAecBVQJXAbFkAAMyAU8DJQH/AyUB/wMaASQEAAQCA1kB7wMlAf8DRgGAJAADBgEIA0EBcgNbAc0D + XAH4A1wB+ANbAc0DQQFyAwYBCBwAAUACQQFxAQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8B + QAJBAXFgAAMQARUDGwEmA0AB/QMlAf8DQAFvAxABFQMQARUDWAG6AyUB/wNaAcQDEAEVAw8BExgAAxYB + HQNbAdMDVQGuAykBPQMHAQkDJQH/AyUB/wMlAf8DWwHTAxYBHRwAAT8CQAFuAy4BSAMuAUgBPwJAAW4D + LQFFA00BkgNbAeQDJgH7AyYB+wNbAeQDVQG0AzEBTUQAA1wB2QMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB + /wMlAf8DJQH/AyUB/wMlAf8DKwH8Aw4BEhAAAwYBCANbAdMDQQFzDAADJQH/AyUB/wMlAf8DJQH/A1sB + 0wMGAQgYAAM2AVkBWgJjAekBWgJjAekDNgFZAy0BRgMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNBAflE + AANOAZcDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMzAVEQAANBAXID + VQGuEAADJQH/AyUB/wMlAf8DJQH/AyUB/wNBAXIYAAFaAmMB6QEAAdIB+gH/AQAB0gH6Af8BWgJjAekD + HQEpAyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/A2AB4EQAAxQBGwMqAT8DQAFxAyUB/wMlAf8DOwFkAyoB + PwMqAT8DYQHrAyUB/wNTAaoDKgE/AxYBHhAAA1sBzQMpAT0QAAMlAf8DJQH/AyUB/wMlAf8DJQH/A1sB + zQwAAzEBTQNVAbQDHAEnAVoCYwHpAQAB0gH6Af8BAAHSAfoB/wFaAmMB6QMbASYDWwHKA0QBegMuAUgD + MAFLA0QBegNbAcoDPAFmTAADCgENA00B+gMlAf8DPgFqCAADVAGrAyUB/wNZAcYYAANcAfgDBwEJEAAD + JQH/AyUB/wMlAf8DJQH/AyUB/wNcAfgMAANBAfkDJQH/Az0BZwMzAVABWgJjAekBWgJjAekDMwFQAzUB + VgMXAR8DNgFXA1oBxANaAcQDOQFeAxgBIFQAA1kBxgMlAf8DVAGrCAADPgFqAyUB/wNNAfoDCgENFAAD + XAH4AwcBCRAAAyUB/wMlAf8DJQH/AyUB/wMlAf8DXAH4DAADYAHgAyUB/wNhAeYDPQFnAyMBMwMjATMD + NgFYA2AB4AM9AWkDgAH+AyUB/wMlAf8DgAH+Az0BaUwAAxYBHgMqAT8DUwGqAyUB/wNhAesDKgE/AyoB + PwM7AWQDJQH/AyUB/wNAAXEDKgE/AxQBGwwAA1sBzQMpAT0QAAMlAf8DJQH/AyUB/wMlAf8DJQH/A1sB + zQwAAzwBZgNbAcoDRAF6Ay4BSAMwAUsDRAF6A1sBygM8AWYDYQHmAyUB/wMlAf8DJQH/AyUB/wNhAeZM + AAMzAVEDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNOAZcMAANBAXID + VQGuEAADJQH/AyUB/wMlAf8DJQH/AyUB/wNBAXIQAAMXAR8DNgFXA1oBxANaAcQDOQFeAxgBIAQAA1oB + 9QMlAf8DJQH/AyUB/wMlAf8DWgH1TAADDgESAysB/AMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8D + JQH/AyUB/wMlAf8DXAHZDAADBgEIA1sB0wNBAXMMAAMlAf8DJQH/AyUB/wMlAf8DWwHTAwYBCBAAAz0B + aQOAAf4DJQH/AyUB/wOAAf4DPQFpBAADUQGeAyUB/wMlAf8DJQH/AyUB/wNRAZ5QAAMPARMDEAEVA1oB + xAMlAf8DWAG6AxABFQMQARUDQAFvAyUB/wNAAf0DGwEmAxABFRAAAxYBHQNbAdMDVQGuAykBPQMHAQkD + JQH/AyUB/wMlAf8DWwHTAxYBHRQAA2EB5gMlAf8DJQH/AyUB/wMlAf8DYQHmBAADCAEKA04BmANlAfED + ZQHxA04BmAMIAQpYAANGAYADJQH/A1kB7wQCBAADGgEkAyUB/wMlAf8DMgFPGAADBgEIA0EBcgNbAc0D + XAH4A1wB+ANbAc0DQQFyAwYBCBgAA1oB9QMlAf8DJQH/AyUB/wMlAf8DWgH1dAADKgE/AyUB/wMlAf8D + JAE0CAADYgHhAyUB/wNMAZBQAANRAZ4DJQH/AyUB/wMlAf8DJQH/A1EBnugAAwgBCgNOAZgDZQHxA2UB + 8QNOAZgDCAEK/wB1AAMYASEDUAGcA1oB8gNQAZwDGAEhOAADOAFdAzABSgMEAQUkAAMTARoDSQGIA10B + 1ANBAfkDQQH5A10B1ANJAYgDEwEaIAADEwEaA0kBiANdAdQDQQH5A0EB+QNdAdQDSQGIAxMBGhwAAxgB + IANPAZkDWgHyA1EBogMlAf8DUQGiA1oB8gNPAZkDGAEgMAADOgFiA00B+gNdAdwDJAE0HAADNwFaA2IB + 7gNLAY0DIwEyAwYBBwMGAQcDIwEyA0sBjQNdAeoDNwFaGAADNwFaA2AB8wNNAfoDWAG3A0kBhwNJAYcD + WAG3A00B+gNgAfMDNwFaEAADFQEcA04BlgNaAfIDUQGeAxoBIwMIAQoDJQH/AwgBCgMaASMDUQGeA1oB + 8gNOAZYDFQEcKAADQgF0A1MBqgMzAVEDYAHoAxcBHxQAAzcBWgNbAeQDXQHOAwMBBBAAAzQBUwM2AVcD + YAHgAzcBWhAAAzcBWgOAAf4DWgG/AxgBIRAAAxgBIQNaAb8DgAH+AzcBWgwAA18B5QNRAaQDGwElCAAD + CAEKAyUB/wMIAQoIAAMbASUDUQGkA18B5RgAAysBQQNRAaEDXgHdA00B+gNfAdUDHQEoBAADRgF+A1AB + nBAAAxMBGgNdAeoDPQFnAyUB/wNaAb8DBAEFDAADXAHWAyYB+wMoATsDXQHqAxMBGggAAxMBGgNgAfMD + WgG/AwUBBhgAAwUBBgNaAb8DYAHzAxMBGggAAyUB/wMQARUMAAMIAQoDJQH/AwgBCgwAAxABFQMlAf8Q + AAMOARIDVgGzA1sB2AM/AW0DHQEoAwUBBgwAAxUBHANhAesDDwETDAADSQGIA0IBdANXAcIDJQH/AyUB + /wMlATcMAANeAe0DJQH/A0QBeANLAY0DSQGICAADSQGIA00B+gMYASEgAAMYASEDTQH6A0kBiAgAAyUB + /wMQARUMAAMIAQoDJQH/AwgBCgwAAxABFQMlAf8MAAMIAQoDXQHPA0oBiwMEAQUcAANHAYIDXQHPAwgB + CggAA10B1AM6AWIDJQH/A0AB/QNLAYwDBgEHBAADCwEOAyYBOQMlAf8DJQH/A1oBxwMdASgDXQHUCAAD + XQHUA1gBtygAA1gBtwNdAdQIAAMlAf8DEAEVBAADFwEfAxEBFgMIAQoDJQH/AwgBCgwAAxABFQMlAf8M + AANHAYIDUgGjCQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/CAAD + UwGmA0cBgggAA0EB+QNMAZEDXgHwAzsBZAgAAxYBHgNlAfEDJQH/AyUB/wMlAf8DJQH/AysEQQH5CAAD + QQH5A0kBhxEAAdIB+gH/AQAB0gH6Af8QAANJAYcDQQH5CAADJQH/AxABFQNYAbgBQAK+Af0DIQEvA0sB + jwMlAf8DSwGPAxIBGAgAAxABFQMlAf8MAANdAd8DHgEqKAADHgEqA10B3wgAA0EB+QNbAcoDCwEODAAD + MwFSAyUB/wMlAf8DJQH/AyUB/wMlAf8DPgFrA0EB+QgAA0EB+QNJAYcMAAMEAQUBSAJjAfYBSAJjAfYB + XAJhAdkDMwFSCAADSQGHA0EB+QgAAyUB/wMQARUBUwJoAfQBAAHSAfoB/wFAAkEBcQNFAXwDLgFIA1IB + qANeAfADSgGLAxEBFgMQARUDJQH/DAADQAH9AwIBAwkAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB + +gH/AQAB0gH6Af8BAAHSAfoB/wgAAwIBAwNAAf0IAANdAdQDWQHvAxoBIwwAAxYBHQNgAfMDJQH/A1EB + 9wNbAeQDSAH2A4AB/gNdAdQIAANdAdQDWAG3DAADSwGNAVoCXAHEAyUBNwNFAXwDYgHuAzUBVQQAA1gB + twNdAdQIAAMlAf8DOgFgAVsCXQHKAQAB0gH6Af8BAAHSAfoB/wFbAmEB3gM0AVMEAgMgAS4DVAGrA14B + 8ANOAZcDJQH/DAADXQHfAx4BKigAAx4BKgNdAd8IAANJAYgDJQH/A10B3wMeASoMAAM3AVoDUQGhAzAB + SgNLAY0DYgHuAyUB/wNJAYgIAANJAYgDTQH6AxgBIQQAAxEBFgNiAe4DHAEnCAADCQELAxABFQMYASED + TQH6A0kBiAgAA18B5QNbAcUDGwEmAUoCSwGKAV4CZQHiA4AB/gOAAf4BXgJlAd0DMwFQBAEDNAFTA00B + +gNfAeUMAANHAYIDUgGlCQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB + +gH/CAADUgGlA0cBgggAAxMBGgNgAfMDJQH/A4AB/gMxAU4IAAM2AVgDWgG/A1oB8gMlAf8DJQH/A2AB + 8wMTARoIAAMTARoDYAHzA1oBvwMFAQYBWwJdAcoDSwGNEAADBQEGA1oBvwNgAfMDEwEaCAADFQEcA0QB + eANaAfIDRgF+AxcBHwM4AVsBYAJlAeMDgAH+AQAB0gH6Af8BYAJkAdsBOgI7AWIDQwF2AxUBHAwAAwgB + CgNdAc8DSwGNAwQBBRgAAwQBBQNLAY0DXQHPAwgBCgwAAzcBWgOAAf4DJQH/AysBQgNTAakDTgGYAycB + OgMjATMDXgHSA0oBiwMrAfwDNwFaEAADNwFaA4AB/gNaAb8BQAJBAXADDAEPDAADGAEhA1oBvwOAAf4D + NwFaFAADGAEgA0QBegNaAfIDRQF8Ax0BKAFPAlABmwFbAmEB3gNVAawDEAEVGAADDgESA1YBswNeAdcD + PgFrAxsBJgMEAQUDBAEFAxsBJgM+AWsDXgHXA1YBswMOARIUAAM3AVoDYAHzA10B1ANZAe8DJQH/A1cB + uQMYASADQAFxA10B6gM3AVoYAAM3AVoDYAHzA00B+gNYAbcDSQGHA0kBhwNYAbcDTQH6A2AB8wM3AVog + AAMYASEDRgF9A1oB8gNLAY0EAigAAysBQQNRAaEDXgHdA00B+gNNAfoDXgHdA1EBoQMrAUEgAAMTARoD + SQGIA10B1ANBAfkDQQH5A10B1ANJAYgDEwEaIAADEwEaA0kBiANdAdQDQQH5A0EB+QNdAdQDSQGIAxMB + Gv8A/wAeAAMzAVADWgHpAyUB/wMlAf8DJQH/AyUB/wMlAf8DXAHIGAADMQFNA1UBtANbAeQDJgH7AyYB + +wNbAeQDVQG0AzEBTSQAAzMBUANaAekDJQH/BQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8B + AAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BWQJcAcFUAANaAekDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8D + JQH/GAADQQH5AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/A0EB+SQAA1oB6QMlAf8DJQH/BQAB0gH6Af8B + AAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/zAAAxcB + HwNJAYcDXAHWA1wB+ANTAaoQAAMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/GAADYAHgAyUB + /wMlAf8DJQH/AyUB/wMlAf8DJQH/A2AB4CQAAyUB/wMlAf8DJQH/BQAB0gH6Af8BAAHSAfoB/wEAAdIB + +gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/yQAAwkEDAEPA00BkwNNAfoD + JQH/AyUB/wMlAf8DYAHzEAADJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMzAVIBAAHSAfoB + /wFcAl8ByAwAAzwBZgNbAcoDRAF6Ay4BSAMwAUsDRAF6A1sBygM8AWYkAAMlAf8DJQH/AyUB/wUAAdIB + +gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8c + AAE7AjwBZQNVAa8DNgFYA1wB5wNgAeADPgFqAzoEYAHoAyUB/wNVAa4QAAMlAf8DJQH/AyUB/wMlAf8D + JQH/AyUB/wMlAf8DJQH/AzMBUgEAAdIB+gH/AQAB0gH6Af8QAAMXAR8DNgFXA1oBxANaAcQDOQFeAxgB + IAMbASYBTAJNAZEBIQJfAfsBIQJfAfsBWwJjAeQBVQJXAbQDMQFNDAADJQH/AyUB/wMlAf8FAAHSAfoB + /wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/GAAB + JgInATkBVQJWAa4DRAF6A1oB9QM5AV8DPQFnAWACaQHoAyABLgNXAbkDJgH7AyEBMBAAAyUB/wMlAf8D + JQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DMwFSAQAB0gH6Af8BAAHSAfoB/xAAAz0BaQOAAf4DJQH/AyUB + /wOAAf4DPQFpAxkBIgEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BQQJqAfkM + AAMlAf8DJQH/AyUB/wUAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB + /wEAAdIB+gH/AQAB0gH6Af8YAAMyAU8DQgF1A2AB2wM1AVYBXgJlAeIBAAHSAfoB/wEAAdIB+gH/AVAC + UQGdA0wBkQNGAYAUAAMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AzMBUgEAAdIB+gH/AQAB + 0gH6Af8QAANhAeYDJQH/AyUB/wMlAf8DJQH/A2EB5gMeASoBAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8B + AAHSAfoB/wEAAdIB+gH/AWACZgHgDAADJQH/AyUB/wMlAf8FAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8B + AAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/FAADBwEJA0oBigNdAc8DOgFgAU0C + fQH6AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/ASsCfgH8AykBPQQCFAADJQH/AyUB/wMlAf8DJQH/AyUB + /wMlAf8DJQH/A1wByAMzAVIBAAHSAfoB/wEAAdIB+gH/EAADWgH1AyUB/wMlAf8DJQH/AyUB/wNaAfUD + KwFCA0QBegMuAUgDMAFLA0QBegFbAl0BygM8AWYMAAMlAf8DJQH/AyUB/wUAAdIB+gH/AQAB0gH6Af8B + AAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8QAAQCA0sBjwNgAeAD + NQFWA4AB/gEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/ASsCfgH8AwQBBRgAAyUB/wMlATcU + AAM7AWUDMwFSAQAB0gH6Af8BAAHSAfoB/xAAA1EBngMlAf8DJQH/AyUB/wMlAf8DUQGeAxcBHwM2AVcB + WgJcAcQBWgJcAcQDOQFeAxgBIBAAAyUB/wMlAf8DJQH/BQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB + 0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/xAAA0EBcwMlAf8DNgFYAWACZgHgAQAB + 0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wFZAlwBwRwAA1oB6QMlATcQAAMLAQ4D + JQH/AzMBUgEAAdIB+gH/AQAB0gH6Af8QAAMIAQoDTgGYA2UB8QNlAfEDTgGYAwgBCgM0AVQDgAH+AQAB + 0gH6Af8BAAHSAfoB/wOAAf4BPQI+AWkQAAMlAf8DJQH/AyUB/wUAAdIB+gH/AQAB0gH6Af8BAAHSAfoB + /wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8MAAMcAScDJgH7A10BzgMbASUB + QQJqAfkBAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wFBAmoB+QEmAicBORwAAzMBUANaAekD + JQH/AyUB/wMlAf8DJQH/AyUB/wNbAcoDRgF+AQAB0gH6Af8BXAJfAcgoAAFhAmoB5gEAAdIB+gH/AQAB + 0gH6Af8BAAHSAfoB/wEAAdIB+gH/AWECagHmEAADJQH/AyUB/wMlAf8EAAOAAf4DgAH+A4AB/gOAAf4D + gAH+AQAB0gH6Af8BAAHSAfoB/wFGAkcBgAwAA1UBrgMlAf8DYAHoAzoBYAMwAUsBWAJaAb0BAAHSAfoB + /wEAAdIB+gH/A14B0gMqAT8sAAM8AWYDBQEGFAADRgF+KAABWgJuAfUBAAHSAfoB/wEAAdIB+gH/AQAB + 0gH6Af8BAAHSAfoB/wFaAm4B9RAAAyUB/wMlATc0AANgAfMDJQH/AyUB/wMlAf8DWgHyAygBPAMRARYD + EQEWNAABWgJjAekDJQE3EAADCwEOAQAB0gH6Af8oAANRAZ4BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8B + AAHSAfoB/wNRAZ4QAANaAekDJQE3IAADCwEOAQAB0gH6Af8MAANTAaoDXAH4A1wB1gNJAYcDFwEfQAAD + MwFQAVoCYwHpAQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wFbAl0ByigAAwgB + CgNOAZgBZQJwAfEBZQJwAfEDTgGYAwgBChAAAzMBUANaAekDJQH/BQAB0gH6Af8BAAHSAfoB/wEAAdIB + +gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BUQJTAaL/AP8AYgADFwEfAyUB/wMlAf8D + CAEKJAADHQEpAz8BbgMGAQgQAAMGAQgDPwFuAx0BKRgAAxMBGQNHAYIDWQHDA1oB6QMrAfwDKwH8A1oB + 6QNZAcMDRgGBAxMBGWAAAxcBHwMlAf8DPAFmA04BlwMlAf8DCAEKIAADUgGoAyUB/wNbAdADHQEoCAAD + HQEoA1sB0AMlAf8DUgGoGAADWwHkAyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DWwHkXAAD + FgEeAyUB/wM7AWUEAAQBA04BlwMlAf8DCAEKHAADPwFsAyUB/wMlAf8DUwH0AzsBYwM7AWMDUwH0AyUB + /wMlAf8DPwFsGAADUQH3AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DUQH3EAABXAJfAcgB + AAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB + +gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BXAJfAcgQAAMWAR4DJQH/AzwBZgwABAED + TgGXAyUB/wMIAQoYAAMUARsDQAH9AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/A0AB/QMUARsYAANbAc0D + JQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNbAc0RAAHSAfoB/zEAAdIB+gH/DAADFgEeAyUB + /wM8AWYUAAQBA04BmAMlAf8cAANZAcYDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DWQHGHAADNQFWA4AB + /gMlAf8DYQHmA10BzwNdAc8DYQHmAyUB/wOAAf4DNQFWEQAB0gH6Af8EAAMlAf8EAAMlAf8DPAFmAyUB + /wMlAf8EAAMlAf8DPAFmAyUB/wUAAdIB+gH/CAADFgEeAyUB/wM8AWYcAAM2AVkDJQH/BAEUAAQBA1QB + qwMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNUAasEARwAAzABTAMqAT8DGwElAw0BEQMNAREDHQEpAyoB + PwMwAUwVAAHSAfoB/wQAAyUB/wQAAyUB/wM8AWYDJQH/AyUB/wQAAyUB/wM8AWYDJQH/BQAB0gH6Af8I + AAMlAf8DUgGgHAADNgFXAyUB/wMdASkBVgJYAbMQAAMQARUDVgG1AyUB/wMlAf8DJQH/AyUB/wMlAf8D + JQH/AyUB/wMlAf8DVgG1AxABFRwAAxYBHgM5AV8DWgHHA1oBxwM5AV8DFgEeGQAB0gH6Af8EAAMlAf8E + AAMlAf8DPAFmAyUB/wMlAf8EAAMlAf8DPAFmAyUB/wUAAdIB+gH/CAADJQH/AysB/AM5AV4UAAM2AVcD + JQH/Aw8BEwM9AWgBAAHSAfoB/wwAAysBQgNhAeYDJQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB + /wMlAf8DJQH/A2EB5gMrAUIUAAMdASkDXgHwAyUB/wMlAf8DJQH/AyUB/wNeAfADHQEpFQAB0gH6Af8E + AAMlAf8EAAMlAf8DPAFmAyUB/wMlAf8EAAMlAf8DPAFmAyUB/wUAAdIB+gH/CAADJQH/AyUB/wMrAfwD + OQFeDAADNQFWAyUB/wMPARQDPAFmAQAB0gH6Af8DFgEeDAADWgHyAyUB/wMlAf8DJQH/AyUB/wMlAf8D + JQH/AyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/A1oB8hQAA1UBsQMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB + /wNVAbEVAAHSAfoB/wQAAyUB/wQAAyUB/wM8AWYDJQH/AyUB/wQAAyUB/wM8AWYDJQH/BQAB0gH6Af8I + AAMlAf8DRgGBA1YBsgMrAfwDOAFdBAADNQFWAyUB/wMPARQDPAFmAQAB0gH6Af8DFgEeEAADPQFpA1AB + nANPAZsDTwGbA1MBpwMlAf8DJQH/AyUB/wMlAf8DUwGnA08BmwNPAZsDUAGcAz0BaRQAA1MB9AMlAf8D + JQH/AyUB/wMlAf8DJQH/AyUB/wNTAfQVAAHSAfoB/wQAAyUB/wQAAyUB/wM8AWYDJQH/AyUB/wQAAyUB + /wM8AWYDJQH/BQAB0gH6Af8IAAOAAf4DGgEjA0IBdQMlAf8DKwH8A04BlgMlAf8DDwEUAzwBZgEAAdIB + +gH/AxYBHigAA14B1wMlAf8DJQH/A14B1ygAA1MB9AMlAf8DJQH/AyUB/wMlAf8DJQH/AyUB/wNTAfQV + AAHSAfoB/zEAAdIB+gH/CAADTgGVA00B+gMrAfwDJQH/AyUB/wMlAf8DCwEOATsCPAFlAQAB0gH6Af8D + FgEeLAADSQGFAyUB/wMlAf8DSQGGKAADVQGxAyUB/wMlAf8DJQH/AyUB/wMlAf8DJQH/A1UBsRQAAVwC + XwHIAQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8B + AAHSAfoB/wEAAdIB+gH/AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AVwCXwHICAADBQEGA0cBggMNARED + KwFBAyoBQAE7AjwBZQNSAaABAAHSAfoB/wMXAR8wAAMkATQDJQH/AyUB/wMkATQoAAMdASkDXgHwAyUB + /wMlAf8DJQH/AyUB/wNeAfADHQEpVAAEAQNNAZIDgAH+AQAB0gH6Af8BAAHSAfoB/wEAAdIB+gH/AQAB + 0gH6Af8DFwEfNAAEAQNcAcgDXAHIBAEsAAMdASkDVQGxA1MB9ANTAfQDVQGxAx0BKf8AVQABQgFNAT4H + AAE+AwABKAMAAUADAAFAAwABAQEAAQEGAAECFgAD/wEABv8CAAHGAR8C/wHgAX8CAAHCAR8B8AEPAeAB + fwIAAYABBwHgAQcB8AMAAYABAwHHAQMB8AMAAYABAwHPAQMB8AMAAYABAwHPAQMBgAMAAeEBjwHPAQMB + gAEBAgAB8QGHAc8BAwGAAQECAAHAAQEBzwEDAYABAQIAAcABAQHPAQMBwAGBAgABwAEBAccBAwHAAYEC + AAHgAQEB4AEHAcABgQIAAfgBQwHwAQ8BwAH/AgAB+AFjAv8BwAH/AgAE/wHAAf8CAAj/AfgBPwH/AR8B + 8AEPAfABDwHgAQ8B/wEPAeABBwHgAQcBgAEDAf8BBwTDAYwBYwHwAScBgQHBAYcB4QGcAXMBwAHjAYEB + wQGPAfEBnAFzAYcB8QGBAQEBnwH5AZABcwGYARkBhgEBAZ4BeQGAATMBnwH5AY4BAQGcARkBgAEDAZgB + GQGOAQEBnAEJAYABAwGfAfkBhwEBAYgBwQGAAQMBmAEZAYMBAQGBAeEBgAEDAYcB4QHAAQMBwQHDAeAB + DwHAAQMB4AEHAeABBwH4AT8B8AEPAfABDwHwAQ8Q/wHgAR8BgAF/AcQBAwL/AeABHwGAAX8BxAEDAf8B + wQHgAR8BgAF/AcQBAwH+AQEB4AEDAYABfwHEAQMB+AEBAeABAwHAAQEBxAEDAfABAQHgAQMBwAEBAcQB + AwHwAQMB4AEDAcABAQHEAQMB4AEDAeABAwHAAQEBxAEDAcABBwHnAcMBwAEDAcQBAwHAAQ8B5wGDAcAB + AwHEAQMBgAEPAeABAwH/AQMBxAEDAYABHwH8AfsB/wEDAc8B/wGAAX8B/AHzAf8BAwHPAfMBgwH/AfwB + AwH/AQMBxAEDEv8B/AE/AeMBxwHgAQcC/wH4AR8B4QGHAeABBwL/AfEBDwHgAQcB4AEHAYABAQHjAYcB + 4AEHAeABBwG/Af0CxwHwAQ8B4AEHAagBRQGPAeMB4AEHAfABDwGoAUUBnwHDAcABAwH4AR8BqAFFAY8B + gwGAAQEB8AEPAagBRQGHAQMBgAEBAfABDwGoAUUBggEHAYABAQHwAQ8BqAFFAYABDwH8AT8B8AEPAb8B + /QGAAR8B/AE/AfABDwGAAQEBgAE/AfwBPwHwAQ8C/wGAAX8B/AE/AfgBHwr/Cw== @@ -712,7 +712,7 @@ Note: If writing XML-Pageindex is set to FALSE, this option will be forced and c AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAlgYAAAJNU0Z0AUkBTAIBAQIB - AAFYAQ4BWAEOARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAARADAAEBAQABIAYAARD/ + AAG4AQ4BuAEOARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAARADAAEBAQABIAYAARD/ ACcAAxgBIQNQAZwDWgHyA1ABnAMYASHkAAMYASADTwGZA1oB8gNRAaIDJQH/A1EBogNaAfIDTwGZAxgB IBQAA1kBwANZAcADWQHAA1kBwANZAcADWQHAA1kBwANZAcADWQHAA1kBwANZAcADWQHAA1kBwAMlAf8D KgFAhAADFQEcA04BlgNaAfIDUQGeAxoBIwMIAQoDJQH/AwgBCgMaASMDUQGeA1oB8gNOAZYDFQEcDAAD @@ -750,7 +750,7 @@ Note: If writing XML-Pageindex is set to FALSE, this option will be forced and c AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAACgMAAAJNU0Z0AUkBTAIBAQIB - AAEYAS4BGAEuARABAAEQAQAE/wEZAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAARADAAEBAQABGAYAAQwh + AAF4AS4BeAEuARABAAEQAQAE/wEZAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAARADAAEBAQABGAYAAQwh AAP3A9kDxAO/A9ID7QP+pQAD/gO5AywPJQN/A/0SAAPnAVIBVAFVA/oPAAO4AbYCuG8AA/sDhgYlA0kD qwOtA38GJQNEA+MMAAPmA1ADJQN9A/oGAAP9A7QDKwMlA7ppAAP+A2MJJQObBgAD3wklA0QD/QYAA+cM JQNGA/oDAAO0DCUBtgK4ZgAD1AwlA5sGAAPfDCUDfwP+AwAD6AM1DCUDfQO0AysJJQMrA7hmAAOGDCUD @@ -779,7 +779,7 @@ Note: If writing XML-Pageindex is set to FALSE, this option will be forced and c AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAuAsAAAJNU0Z0AUkBTAIBAQQB - AAFAAQwBQAEMARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/ + AAGgAQwBoAEMARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/ AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/ADYAAxgBIAM4AVsDRAF4A0YBfgM8AWYDJQE3AwQB BdwAAwQBBQNJAYUDTQH6A1wB5wNRAaQDTgGWA10BzAMlAf8DWAG9AwcBCVwAAxMBGgNJAYgBXQJhAdQB RQFoAWoB+QFFAWgBagH5AV0CYQHUA0kBiAMTARowAAM4AV0DMAFKAwQBBRwAAw4BEgNVAbQDVQGsAy0B diff --git a/MyCBZ/Handler/AppEventHandler.cs b/MyCBZ/Handler/AppEventHandler.cs index f6553a78..e2256066 100644 --- a/MyCBZ/Handler/AppEventHandler.cs +++ b/MyCBZ/Handler/AppEventHandler.cs @@ -44,6 +44,10 @@ internal static class AppEventHandler public static event EventHandler RedrawThumbnail; + public static event EventHandler UpdateThumbnails; + + public static event EventHandler UpdateListViewSorting; + public static event EventHandler ImageAdjustmentsChanged; // delegates definitions @@ -83,6 +87,16 @@ public static void OnRedrawThumb(object sender, RedrawThumbEvent e) RedrawThumbnail?.Invoke(sender, e); } + public static void OnUpdateThumbnails(object sender, UpdateThumbnailsEvent e) + { + UpdateThumbnails?.Invoke(sender, e); + } + + public static void OnUpdateListViewSorting(object sender, UpdatePageListViewSortingEvent e) + { + UpdateListViewSorting?.Invoke(sender, e); + } + public static void OnArchiveValidationFinished(object sender, ValidationFinishedEvent e) { CBZValidationEventHandler?.Invoke(sender, e); diff --git a/MyCBZ/List/ListViewSorter.cs b/MyCBZ/List/ListViewSorter.cs new file mode 100644 index 00000000..1c0661d1 --- /dev/null +++ b/MyCBZ/List/ListViewSorter.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Win_CBZ.List +{ + internal class ListViewSorter : IComparer + { + private int col; + + + public ListViewSorter() + { + col = 0; + } + public ListViewSorter(int column) + { + col = column; + } + public int Compare(object x, object y) + { + if (((ListViewItem)x).SubItems.Count > col) + { + if (int.TryParse(((ListViewItem)x).SubItems[col].Text, out int xInt) && int.TryParse(((ListViewItem)y).SubItems[col].Text, out int yInt)) + { + return xInt.CompareTo(yInt); + } + else { + return String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text); + } + } + else + { + return 0; + } + } + } +} diff --git a/MyCBZ/Models/ImageTask.cs b/MyCBZ/Models/ImageTask.cs index 5c215579..803d537c 100644 --- a/MyCBZ/Models/ImageTask.cs +++ b/MyCBZ/Models/ImageTask.cs @@ -510,6 +510,7 @@ public Page[] GetResultPage() ResultPage[1].UpdatePageAttributes(SourcePage); ResultPage[1].Id = Guid.NewGuid().ToString(); // Important! Need to create a new Id for the second page ResultPage[1].Name = SourcePage.NameWithoutExtension() + "_split" + SourcePage.FileExtension; + //ResultPage[1]. //AppEventHandler.OnPageChanged(null, new PageChangedEvent(ResultPage[1], null, PageChangedEvent.IMAGE_STATUS_NEW, true)); @@ -546,7 +547,7 @@ public ImageTask FreeResults() } } - SourcePage.Close(); + //SourcePage?.Close(); return this; } diff --git a/MyCBZ/Models/ProjectModel.cs b/MyCBZ/Models/ProjectModel.cs index b225198d..2bd87a50 100644 --- a/MyCBZ/Models/ProjectModel.cs +++ b/MyCBZ/Models/ProjectModel.cs @@ -460,13 +460,16 @@ private void HandlePipeline(object sender, PipelineEvent e) // update pages with results Page page = null; - int index = 1; + Page previousPage = null; + int index = 0; + List thumbUpdates = new List(); foreach (Page resultPage in r.Result.Pages) { try { page = GetPageById(resultPage.Id); + //page?.UpdatePage(resultPage); //page?.UpdateStreams(resultPage); @@ -475,11 +478,13 @@ private void HandlePipeline(object sender, PipelineEvent e) if (page != null) { - if (!page.LocalFile.Equals(resultPage.LocalFile)) + page.UpdatePageAttributes(resultPage); + if (page.LocalFile == null || !page.LocalFile.Equals(resultPage.LocalFile)) { - page?.UpdatePageAttributes(resultPage); + + //page.LocalFile = new LocalFile(resultPage.LocalFile.FullPath); //page?.UpdateLocalFileWith(resultPage.LocalFile); // dont overwrite original file! - page?.UpdateTemporaryFile(resultPage.TemporaryFile); + page.UpdateTemporaryFile(resultPage.TemporaryFile); } @@ -501,15 +506,21 @@ private void HandlePipeline(object sender, PipelineEvent e) resultPage.FreeImage(); + + // update image adjustments AppEventHandler.OnPageChanged(this, new PageChangedEvent(page, null, PageChangedEvent.IMAGE_STATUS_CHANGED)); - AppEventHandler.OnRedrawThumb(null, new RedrawThumbEvent(page)); + //AppEventHandler.OnRedrawThumb(null, new RedrawThumbEvent(page)); AppEventHandler.OnImageAdjustmentsChanged(null, new ImageAdjustmentsChangedEvent(page.ImageTask.ImageAdjustments, page.Id)); + + thumbUpdates.Add(page); + previousPage = page; } else { - - Page newPage = AddPage(resultPage, resultPage.Index + 1); + // todo: check insert position..... + Page newPage = AddPage(resultPage, previousPage.Index, true); + newPage.ImageTask.ImageAdjustments.SplitPage = false; newPage.ImageTask.ImageAdjustments.ResizeMode = -1; newPage.ImageTask.ImageAdjustments.ConvertType = 0; @@ -517,11 +528,13 @@ private void HandlePipeline(object sender, PipelineEvent e) AppEventHandler.OnRedrawThumb(null, new RedrawThumbEvent(newPage)); AppEventHandler.OnImageAdjustmentsChanged(null, new ImageAdjustmentsChangedEvent(resultPage.ImageTask.ImageAdjustments, resultPage.Id)); - // AppEventHandler.OnPageChanged(this, new PageChangedEvent(newPage, null, PageChangedEvent.IMAGE_STATUS_NEW)); + // AppEventHandler.OnPageChanged(this, new PageChangedEvent(newPage, null, PageChangedEvent.IMAGE_STATUS_NEW)); // + + previousPage = newPage; } - resultPage.Close(); + resultPage.FreeStreams(); resultPage.ImageTask.FreeResults(); } catch (Exception e) @@ -538,6 +551,9 @@ private void HandlePipeline(object sender, PipelineEvent e) index++; } + AppEventHandler.OnUpdateThumbnails(this, new UpdateThumbnailsEvent(thumbUpdates)); + AppEventHandler.OnUpdateListViewSorting(this, new UpdatePageListViewSortingEvent(1, SortOrder.Ascending)); + ImageAdjustments resetImageAdjustments = new ImageAdjustments(); AppEventHandler.OnImageAdjustmentsChanged(null, new ImageAdjustmentsChangedEvent(resetImageAdjustments)); @@ -563,33 +579,49 @@ private void HandlePipeline(object sender, PipelineEvent e) if (r.Result.Pages.Count > 0) { - + r.Result.Pages.Sort((x, y) => x.Index.CompareTo(y.Index)); if (nextTask.ThreadParams is UpdatePageIndicesThreadParams) { - updatePages = (nextTask.ThreadParams as UpdatePageIndicesThreadParams).Pages; + //UpdatePageIndicesThreadParams np = nextTask.ThreadParams as UpdatePageIndicesThreadParams; + + (nextTask.ThreadParams as UpdatePageIndicesThreadParams).Pages = r.Result.Pages; + //updatePages = (nextTask.ThreadParams as UpdatePageIndicesThreadParams).Pages; } if (nextTask.ThreadParams is RenamePagesThreadParams) { - updatePages = (nextTask.ThreadParams as RenamePagesThreadParams).Pages; + + (nextTask.ThreadParams as RenamePagesThreadParams).Pages = r.Result.Pages; + //updatePages = (nextTask.ThreadParams as RenamePagesThreadParams).Pages; } - r.Result.Pages.ForEach(page => + foreach (StackItem si in r.Result.Stack) { - int index = updatePages.FindIndex(x => x.Id == page.Id); - + if (si.ThreadParams is UpdatePageIndicesThreadParams) + { + (si.ThreadParams as UpdatePageIndicesThreadParams).Pages = r.Result.Pages; + } - if (index < 0) + if (si.ThreadParams is RenamePagesThreadParams) { - updatePages.Add(page); + (si.ThreadParams as RenamePagesThreadParams).Pages = r.Result.Pages; } - else + } + + + + /* + if (updatePages.Count <= r.Result.Pages.Count) + { + for (int i = 0; i < r.Result.Pages.Count; i++) { - updatePages[index] = page; + updatePages[i].UpdatePage(r.Result.Pages[i]); } - }); + } + */ + } AppEventHandler.OnPipelineNextTask(this, new PipelineEvent(this, e.Task, null, r.Result.Stack)); @@ -1958,7 +1990,7 @@ public Page AddPageFromFile(LocalFile localFile, PageIndexVersion version, int i return page; } - public Page AddPage(Page page, int insertAt = -1) + public Page AddPage(Page page, int insertAt = -1, bool insertAfterIndex = false) { int pageStatus = 0; int realNewIndex = Pages.Count; @@ -1989,12 +2021,12 @@ public Page AddPage(Page page, int insertAt = -1) page.FreeImage(); } - page.Index = realNewIndex; - page.Number = realNewIndex + 1; + page.Index = insertAfterIndex ? realNewIndex + 1 : realNewIndex; + page.Number = insertAfterIndex ? realNewIndex + 2 : realNewIndex + 1; if (insertAt > -1 && insertAt < Pages.Count) { - Pages.Insert(realNewIndex, page); + Pages.Insert(insertAfterIndex ? realNewIndex + 1 : realNewIndex, page); } else diff --git a/MyCBZ/Tasks/ProcessImagesTask.cs b/MyCBZ/Tasks/ProcessImagesTask.cs index 37e8a051..a42982af 100644 --- a/MyCBZ/Tasks/ProcessImagesTask.cs +++ b/MyCBZ/Tasks/ProcessImagesTask.cs @@ -23,6 +23,7 @@ public static Task ProcessImages(List pages, ImageTask gl return new Task(() => { int current = 1; + int advanceIndexBy = 0; int total = pages.Count; List collectedTasks = new List(); ImageTaskResult result = new ImageTaskResult() @@ -40,11 +41,13 @@ public static Task ProcessImages(List pages, ImageTask gl { if (Array.IndexOf(skipPages, page.Name) > -1) { + result.AddFinishedPage(page); continue; } if (page.Deleted) { + result.AddFinishedPage(page); continue; } @@ -177,6 +180,8 @@ public static Task ProcessImages(List pages, ImageTask gl results[0].LoadImageInfo(true); results[0].FreeStreams(); results[0].FreeImage(); + results[0].Index = results[0].Index + advanceIndexBy; + results[0].Number = results[0].Index + 1; result.AddFinishedPage(results[0]); if (results[1] != null && results[1].LocalFile.Exists()) @@ -189,6 +194,8 @@ public static Task ProcessImages(List pages, ImageTask gl results[1].FreeStreams(); result.AddFinishedPage(results[1]); + + advanceIndexBy++; } } catch (PageException pe)