diff --git a/source/ChanSort.Loader.Philips/ChanLstBin.cs b/source/ChanSort.Loader.Philips/ChanLstBin.cs index c28f270..cd6e7c4 100644 --- a/source/ChanSort.Loader.Philips/ChanLstBin.cs +++ b/source/ChanSort.Loader.Philips/ChanLstBin.cs @@ -123,7 +123,29 @@ namespace ChanSort.Loader.Philips } if (errors != "") + { this.log?.Invoke(errors); + + if (View.Default != null) // can't show dialog while unit-testing + { + + var dlg = View.Default.CreateActionBox(Resources.WarningChecksumErrorMsg); + dlg.AddAction(Resources.WarningChechsumErrorIgnore, 1); + dlg.AddAction(Resources.Cancel, 0); + dlg.ShowDialog(); + switch (dlg.SelectedAction) + { + case 0: + throw new FileLoadException("Aborted due to checksum errors"); + } + } + } + + var info = Resources.InfoRestartAfterImport; + if (this.VersionMajor >= 25 && this.VersionMajor <= 45) + info += "\n" + Resources.InfoIgnoreImportError; + + View.Default?.MessageBox(info, "Philips"); } public void Save(string chanLstBinPath) diff --git a/source/ChanSort.Loader.Philips/ChanSort.Loader.Philips.csproj b/source/ChanSort.Loader.Philips/ChanSort.Loader.Philips.csproj index b306e2e..d7c7333 100644 --- a/source/ChanSort.Loader.Philips/ChanSort.Loader.Philips.csproj +++ b/source/ChanSort.Loader.Philips/ChanSort.Loader.Philips.csproj @@ -72,6 +72,11 @@ + + True + True + Resources.resx + @@ -85,5 +90,18 @@ Always + + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + \ No newline at end of file diff --git a/source/ChanSort.Loader.Philips/Resources.Designer.cs b/source/ChanSort.Loader.Philips/Resources.Designer.cs new file mode 100644 index 0000000..e097325 --- /dev/null +++ b/source/ChanSort.Loader.Philips/Resources.Designer.cs @@ -0,0 +1,118 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ChanSort.Loader.Philips { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ChanSort.Loader.Philips.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Cancel. + /// + internal static string Cancel { + get { + return ResourceManager.GetString("Cancel", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The TV may incorrectly show that the import failed, but that can be ignored.. + /// + internal static string InfoIgnoreImportError { + get { + return ResourceManager.GetString("InfoIgnoreImportError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to INFO: After importing the list back in your TV, unplug it and plug it back in after a few seconds.. + /// + internal static string InfoRestartAfterImport { + get { + return ResourceManager.GetString("InfoRestartAfterImport", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ignore the error and edit the list anyway. + /// + internal static string WarningChechsumErrorIgnore { + get { + return ResourceManager.GetString("WarningChechsumErrorIgnore", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to WARNING: There were checksum errors in the loaded list! + /// + ///There are 2 situations how this can happen: + /// + ///- TV's internal channel list is corrupted (e.g. after a firmware update) + /// This can be solved by running a new channel scan or resetting the TV. + /// After that export the list again and open it with ChanSort. + /// Trying to edit and import the currently broken file can lead to unexpected behavior of the TV. + /// + ///- Bad USB-Stick (bad memory cells or incompatible file format) + /// Try using a Stick <= 16GB [rest of string was truncated]";. + /// + internal static string WarningChecksumErrorMsg { + get { + return ResourceManager.GetString("WarningChecksumErrorMsg", resourceCulture); + } + } + } +} diff --git a/source/ChanSort.Loader.Philips/Resources.cs.resx b/source/ChanSort.Loader.Philips/Resources.cs.resx new file mode 100644 index 0000000..cbd1aae --- /dev/null +++ b/source/ChanSort.Loader.Philips/Resources.cs.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Storno + + \ No newline at end of file diff --git a/source/ChanSort.Loader.Philips/Resources.de.resx b/source/ChanSort.Loader.Philips/Resources.de.resx new file mode 100644 index 0000000..de6b540 --- /dev/null +++ b/source/ChanSort.Loader.Philips/Resources.de.resx @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + INFO: Bitte schalten Sie Ihren Fernseher nach dem Import aus, ziehen den Netzstecker und stecken ihn nach einigen Sekunden wieder an. + + + Ihr Fernseher zeigt eventuell eine Falschmeldung, dass der Import fehlschlug. Dies kann ignoriert werden. + + + WARNUNG: Beim Laden der Liste wurden Prüfsummenfehler festgestellt! + +Es gibt 2 typische Ursachen für dieses Problem: + +- Die interne Senderliste des Fernsehers ist beschädigt (z.B. nach einem Firmware-Update) + Dies kann durch einen neuen Suchlauf oder einen Reset behoben werden. + Exportieren Sie danach die Liste erneut und öffnen Sie sie in ChanSort. + Wenn Sie die Liste trotz Fehler bearbeiten und importieren, wird sie vermutlich nicht funktionieren. + +- Defekter USB-Stick (Speicherfehler oder inkomptibles Dateisystem) + Verwenden Sie nach Möglichkeit einen Stick <= 16GB formatiert mit FAT32 (nicht NTFS oder exFAT) + + + Fehler ignorieren und Datei trotzdem bearbeiten + + + Abbrechen + + \ No newline at end of file diff --git a/source/ChanSort.Loader.Philips/Resources.es.resx b/source/ChanSort.Loader.Philips/Resources.es.resx new file mode 100644 index 0000000..81ae9bd --- /dev/null +++ b/source/ChanSort.Loader.Philips/Resources.es.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Cancelar + + \ No newline at end of file diff --git a/source/ChanSort.Loader.Philips/Resources.hu.resx b/source/ChanSort.Loader.Philips/Resources.hu.resx new file mode 100644 index 0000000..3e618b8 --- /dev/null +++ b/source/ChanSort.Loader.Philips/Resources.hu.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Mégse + + \ No newline at end of file diff --git a/source/ChanSort.Loader.Philips/Resources.pl.resx b/source/ChanSort.Loader.Philips/Resources.pl.resx new file mode 100644 index 0000000..41ee716 --- /dev/null +++ b/source/ChanSort.Loader.Philips/Resources.pl.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Anuluj + + \ No newline at end of file diff --git a/source/ChanSort.Loader.Philips/Resources.resx b/source/ChanSort.Loader.Philips/Resources.resx new file mode 100644 index 0000000..e211d74 --- /dev/null +++ b/source/ChanSort.Loader.Philips/Resources.resx @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + The TV may incorrectly show that the import failed, but that can be ignored. + + + INFO: After importing the list back in your TV, unplug it and plug it back in after a few seconds. + + + WARNING: There were checksum errors in the loaded list! + +There are 2 situations how this can happen: + +- TV's internal channel list is corrupted (e.g. after a firmware update) + This can be solved by running a new channel scan or resetting the TV. + After that export the list again and open it with ChanSort. + Trying to edit and import the currently broken file can lead to unexpected behavior of the TV. + +- Bad USB-Stick (bad memory cells or incompatible file format) + Try using a Stick <= 16GB formatted with FAT32 (not NTFS nor exFAT) + + + Ignore the error and edit the list anyway + + + Cancel + + \ No newline at end of file diff --git a/source/ChanSort.Loader.Philips/Resources.ro.resx b/source/ChanSort.Loader.Philips/Resources.ro.resx new file mode 100644 index 0000000..6608474 --- /dev/null +++ b/source/ChanSort.Loader.Philips/Resources.ro.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Anulare + + \ No newline at end of file diff --git a/source/ChanSort.Loader.Philips/Resources.tr.resx b/source/ChanSort.Loader.Philips/Resources.tr.resx new file mode 100644 index 0000000..f2f4486 --- /dev/null +++ b/source/ChanSort.Loader.Philips/Resources.tr.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Vazgeç + + \ No newline at end of file diff --git a/source/ChanSort.Loader.Sony/Serializer.cs b/source/ChanSort.Loader.Sony/Serializer.cs index dd00ce5..f46d1e6 100644 --- a/source/ChanSort.Loader.Sony/Serializer.cs +++ b/source/ChanSort.Loader.Sony/Serializer.cs @@ -526,23 +526,20 @@ namespace ChanSort.Loader.Sony int start; int end; - if (this.isEFormat) + // files with CRLF as line separator will calculate the checksum as if the line separator was just LF + // files in the e-format include a trailing LF after in the checksum + + if (this.newline == "\n") { - // files with the typo-element "1.1.0" differ from the other formats: - // - "\n" after the closing Tag is included in the checksum, - // - the file's bytes are used as-is for the calculation, without CRLF conversion start = FindMarker(data, ""); - end = FindMarker(data, "") + 10; // including the \n at the end + end = FindMarker(data, "") + 9 + (isEFormat ? 1 : 0); // e-Format includes the \n at the end } else { start = dataAsText.IndexOf("", StringComparison.Ordinal); - end = dataAsText.IndexOf("", StringComparison.Ordinal) + 9; - // the TV calculates the checksum with just LF as newline character, so we need to replace CRLF first + end = dataAsText.IndexOf("", StringComparison.Ordinal) + 9 + (isEFormat ? 2 : 0); // e-Format with CRLF separator includes the newline in the checksum var text = dataAsText.Substring(start, end - start); - if (this.newline == "\r\n") - text = text.Replace("\r\n", "\n"); - + text = text.Replace("\r\n", "\n"); data = Encoding.UTF8.GetBytes(text); start = 0; end = data.Length; diff --git a/source/ChanSort/ActionBox.Designer.cs b/source/ChanSort/ActionBox.Designer.cs index 0b78b08..6a0e0a0 100644 --- a/source/ChanSort/ActionBox.Designer.cs +++ b/source/ChanSort/ActionBox.Designer.cs @@ -43,6 +43,7 @@ namespace ChanSort.Ui // resources.ApplyResources(this.lblMessage, "lblMessage"); this.lblMessage.Appearance.Font = ((System.Drawing.Font)(resources.GetObject("lblMessage.Appearance.Font"))); + this.lblMessage.Appearance.Options.UseFont = true; this.lblMessage.Name = "lblMessage"; // // imageCollection1 diff --git a/source/ChanSort/ActionBox.resx b/source/ChanSort/ActionBox.resx index 52cbf26..b20e3fb 100644 --- a/source/ChanSort/ActionBox.resx +++ b/source/ChanSort/ActionBox.resx @@ -112,16 +112,16 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + Top, Left, Right - + Tahoma, 9pt @@ -133,9 +133,9 @@ 15, 11 - 527, 14 + 668, 14 - + 1 @@ -154,7 +154,7 @@ 0 - + 17, 17 @@ -163,13 +163,13 @@ - AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLlV0aWxzLnYxMi4yLCBWZXJzaW9uPTEyLjIu + AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLlV0aWxzLnYyMC4xLCBWZXJzaW9uPTIwLjEu OC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEMAwAAAFFT eXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRv a2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAAChEZXZFeHByZXNzLlV0aWxzLkltYWdlQ29sbGVjdGlvblN0 cmVhbWVyAgAAAAlJbWFnZVNpemUERGF0YQQHE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAAgIAAAAF/P// /xNTeXN0ZW0uRHJhd2luZy5TaXplAgAAAAV3aWR0aAZoZWlnaHQAAAgIAwAAACAAAAAgAAAACQUAAAAP - BQAAANo+AAACtgQAAIlQTkcNChoKAAAADUlIRFIAAAAgAAAAIAgGAAAAc3p69AAAAARnQU1BAADX+28z + BQAAAAs+AAACtgQAAIlQTkcNChoKAAAADUlIRFIAAAAgAAAAIAgGAAAAc3p69AAAAARnQU1BAADX+28z GAEAAAAgY0hSTQAAbJsAAHJvAAD2rgAAhYMAAG73AADoQQAAMXQAABdsobYtmwAAAAlwSFlzAAALEAAA CxABrSO9dQAABCxJREFUWEfFlclLW1EUxl0UQSp0IRQKpd0Vuikthf4J3Rah4uymXblxJSIixgFnJSoO iCgOqAtBpURUnFBRiVIHVERRcWhVNInGxFQUT893yw1vSF4cIr3wZbj3cc/vfuec+0KI6L9KN1FbW2vt @@ -284,170 +284,166 @@ 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 - QuHh/jKt5QAAAABJRU5ErkJgggs= + gHxfDrGKEHzhv9Wvm5APvz6I/QuZzBFpeiSaDwAAAABJRU5ErkJggnAKAACJUE5HDQoaCgAAAA1JSERS + AAAAIAAAACAIBgAAAHN6evQAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAEnRAABJ0QEF/KuVAAAAGXRF + WHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS43p4SdzAAACe1JREFUWEedlwlU1PUWx6+AbKKoGISaqaRP + n7lkCPh6ZWiGHEQQFBANBJQ1HBWURY11BBUUFbEwe7mVPLOXYrZpmSmktgiKsswMM8OmPgEJlJkB+Xb/ + fwbJo5V1z7ln5n/OnN/ne7ff/w79jpmbEr1mTRQzlCidfePfdOnTRAkWRJ585pDuo//YjG2IJIuI1NuI + uj4iwsm/4J8J3ofwuQHhC0PCl0aEE30Je9mjjKhpjAFlM2NwN+pRs5xGVLiHwV9bW+PywoUoj41FZWIi + KuPjUREXh4o1a1AeE4PyVatwXSLBtehoXIuMRFloKK6GBOPq0kBcfWMxrvgtQKmXO0rmuqDExRk/OkxG + 0VMWKDQnePSlK8ZEY/TMB2Y0lehoAUfww5w5qP/wQzQcPoz6gwdR9/77qHn3Xajffhuq3Fwoc3JQnZUF + RWYm5OnpkCUnQbZhHWSJcZCtjUFVjARVK6NQFR2GqogQVIYGoDLEHxUBC3B56lh8N4DgZUxlzLTqRrMN + IgrMJbp/8dVXcfPYMdw4ehQNBQWoP3QIdfv2oXbvXtS88w5Uu3Y9JEAhTYciNRmKpPVQrI+HIiEGirUS + KFZHQS4Jg/zNEMgjAiFf7g9ZsA9kAV4onTISpwcTnjeinXo8Gc4lKj3Vvz/q9u8X4TeOHHkoA7X6DMj0 + GVBmZ0G5ORPKjelQpiVBmbwOyg1xUCbGQB4nQWVsFJSrwqBcEQJlVACqw/xRvcwH1UFekC9yRclQI6wb + QC3M5j4lmpBEpP3Jw0OEis4leBD9e+9BnZ+P7/n5+xOFqMrZBlX2Fqg2Z0CVkQZVehJUKeugTopD9boY + fJa9CSd35kC2OhTqlcFQRwdAHeEPdagPVCFeUC2dhwr74ThpQ7AyoCXUn0ckn2svS00VM1B34ED3pxC5 + AN+zBxc+OITmpibodDoUFx5HFUPUm6WoyUhBjXQDalIToEpaiy9ytoi/u9vWhk+3Z0G+Kgi1K95AbdQi + 1IYvRO3y+agNdke1yyRcG0EY3ZcyhZkIOGBighoGCbXuceFZzXW/wJELh/aYIOL8/z6GbFMaajOSUCtd + D3VqPL7akf3Q79pYROFWLpNkCRqi/dAQuQANYZ5oWDYXtd7TIR9NmGJKeYKAwAJbW6h37xbrLDp/V+Xl + oZiz0dzUqD+y13RaLc5+VAD5Ro4+PQGncrehubkX3mNtra04tiWdy+CLm1HeuBnugZvL3XBj8StQjSVM + NaXdooD/jhgB5fbtUO3YIbqS/TyXoKnxUXiPaVnEmcOHRPidx8B7rJVFfJKZzGWYj9uR7rgd5or/B85A + 3T8JL5rpBRQMGyaOVnV2tuhy9rMs4JeWFv0xjzdBRMudO/qnx1t7ezuObeeeifJAU5QbmsNd0BT0Mm5O + Jtj30ws4ZG4ORUbGQy7LzMCZd/f8KeCPTIAf37kFtZL5aFnpjpYVrmh5czZalv0LjY6EaRZ6Aft5Cir4 + uhUmQXA5uyIthW+6ZHz9dh7u3GnWH/nkJsALc7NQH+OF1jXz0BrrhrbVLmhbOQttYQ5omcECBvxGQGlA + AKo2bBBd/tYG8XYTLpjqlESucw7X+clFaBh+YlcWGuK80Zbggbvxc3Evbg7a176G9lhntEdOxV0XgsPA + 3wj40c1NfOFUxvOdzve6ImENZNGhqAr2Q7mPK/YF+qJGpdIjft+Ezs+XBKHebxzalk3GvSgHaGJnQJs4 + m30WdAnO0EqmQuNpDMfBfXoFnJswARemO6Fo/Bict7XCuf4GKOYXx8VBhAtDCKmOk6B+QgFbg72gfIXE + KNvd+kDj0ReaBRbQBA6DNnICtG9OgmaxNRyH9O0V8Dn7V/we/9qYcNaMcN6CwQMJxVZPDu8xQUTOMi/U + uTJ4IYMXWUETYAtN0Aholo2GNnQMtGFj4Whj1ivgC14kTvECccaEs9GPwRx9EUef4vDX4D0migj3QZ0v + gwVo+DgxciH92lXToF3tAEdbi14BXwrR8+bSE/05jv7vwntMFBG1GPXLJ0Ib4wht3MvcBzOhXc/98JYL + HIcP7BVwileobzj673hrOcvRJ9tP/FO4AKirrdE/Pd6EmzBnxVIeR2foUt2hk86HLnMhdJt84TjCqlvA + AU7/aU7/t6bd0RdZEtImjEJ5WZn+mEdNbLYgb2S/PukPp6Ox8TZyIhehMYXBWUugywmCbudy6HLD4DTK + plvAwd80X1F/7nxO/yXu/I0THy9CgGcv9Yacb7NGZ8J2t8eLaOR3iVCCRqkPdDtCoNsdhY49q9Dx3hp0 + vB8HJ7thooCAg5z+M+ZGYvqF5rvEK9PPTxEu2xIyJ7OIa70iRHigN6rsSbzN7r5O+GWuIXZ42j8k4gF8 + 4yLodoV3g/cloOODZHR8tAkdRzLhOGZEnriQ7GUBxXbDUTTYBN9z+n/g0btsTbg6lFD2DGHLC6NQwSIE + eFaANyqmEJpfIrTOJNxzJWi8zPCLvw12+v5bFNEN92e4H8Mj0LE3Fh2HkkRo52fvoLP4E2hP5GHcM09n + iitZqiFpzw+zQqmzE34Y3h8/soASXpnKhvE74llCJS8P2fajkOnnjmsTCLcdCHdeJrTN5ovG3QAa34E8 + 48+iNeJ57HxjNnIi/NCUtoDrHMrwGIZz1Ee3oPPbD3G/8hI6L32K8g+2wXqQ5RJBgKGHIZWeNe+D0plO + uO4xC2WOY3HlGWNcG85wFiC3I1TzAnF9HOEmR9/opE8/33TClapZ/BS0y5+DdqU9WuOd0ZQ0j5ttKTry + Jeg4sAEdn+bhfslpdFWXoEt5RRSQGx/1YCmlQX0ocK8pr+XDB6LccxZkvnNQ7e8KhcsUKOxtoBhrAPU/ + CPUc/a2phKbpXHduPjH93mbiLaeNGA9t7HTokubwiHHq81ei8/gO3GdYV8XFbnhtOe5fL8Ktc4WYNnH8 + g7VcMKNphnT0JI/gT6MHo2r+TCgD5qImxAP14V64GemFW0GzcNvXHk0LxqPFeyTafIdDs4TBfKWK4HTP + 7mY7nI7OU/9B58VC3L98WgR2yX9Cl+oqfy9Ge8kZhC3yfviPid4spxtR4RFL6rpsa4jrE4ZA9tJoqF0n + o36hE24tnYmm8DloWT0PbYleaE/hGmfyeG0N6O3y/evQUSBFxyfb0Pl5Pjq/OYjOoo9x/+IJdF44jhtn + PsZyX88rpibGj/w16zFjWwOSLOtH6oNDqOsCN2H5KO6B5wgqrn/d89wDL3IP8AS0zOIecDPAPR9L3OMG + bI+egvb4GdCkeUCzNRBaLoGGm6+5YDN+3pOOLElw0wvjx2Qxgyf/z83crA+9NtSIYp7tS+ns0pHGJB0l + uAlJR5uym5PUrh+7hYHUboCR1M7SRGo3yExqZ9VPajdkgNTOeqDUzmawdKSNVcIgC/Pf+XtO9Cvz3fMw + NH9xWgAAAABJRU5ErkJggh0HAACJUE5HDQoaCgAAAA1JSERSAAAAIAAAACAIBgAAAHN6evQAAAAEZ0FN + QQAAsY8L/GEFAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAaoSURB + VFhH7Zd7UJRVGMa3abpYzdQ409SITU2ZNSXWNDVdLFPECwmKKGgEKCgsktwXUK5xsZCrRYjhBQFFAmWh + dGHZZbkEglCGsbtfCxKpiAECgiy3BZ/e87EGxVpOWzP90Tvz2/1295znfb5395z3rOA/FQsd4h986p34 + xQ+Z7t5w7wtR/xj3L4iyu2fBbrtHX421mW8Wt1AgwF36lNPC1vbuBRZpcUs352v94iomQj6t+scRRsjH + X7fL7Hjhvc9X6bNOxYMLdj32hm2WUlzZhX8rtKNA5BcqzDPfl6hPOxX3PRn01HKX3Avt3WPov8EYxcTE + TYyP34TOCMZJo39wDN19I6QHSKqv4mmz1HR92mkxL3CuuUsup2wdRGv7AK50aaHT3cTI2MTfZJxnTDeB + jq4htFzqR1fvME7ILuEZ89T9+qxTMYsMLHPO5WrO9+Ec14OWi/0YJaGhkXGjYBotlwbQoOqG5ud+HPnq + p9sbMNuSy5Wc6YSivgONmh4Mj45jcEhnFEzjfHMv5HVXUK+8hn15zZi/4nYGHI9z+fJ2iBUXcaaxE9rh + cVyn34MxMI3a810okLdBRiaSsjk8v2q/AQPPBcxZ4pSjOlTYhozCZn7wDa0Ovf2jRsE0yuo6cFjcjPzS + nxFzoAnPWxgwMPulYJMlTsfUyTkaJB9VorD84m+/XmNgGkWklZStxMGCZgSnfI8XDRmY+0awybsfHFNH + HVAhIu0cciStfAk7e4aNgmkcL25FxL5ziM9Uwie+Aaar0w0beNv+qDog+Xv4xNXh4EkNegdGcbV7yCjY + 13BIrOE1w1LPQRhdB1MrgwZiTBaRAeHuejiHV+GzHBWuXR9Be6fWKJhGCmk5h38Dz9g6OIZU42WrgzMN + PGsWY/LWpqNqG1EV1nrLsOfwefQNjNGGNGQUfVTFPRk/wMZXDvtdlbD0UuAV69sYeJMMrNhehne2nELQ + 3gbaEW9AeaHPKJgG01rschort0uxTFiK12wO/bkBM1cJVrqX8JVYMx2vO2TaHKbBtMy2SWDuVgLzOzFg + 7lbMT3iXXC/ZOsnSrRLeGGOZazEPG8e49Zp9tpTmLdXPWULzmcZk8mIsF96BgZUeCqwgx6s8pLD0ZHch + xzrfMtj4lWGDvwK2IgXsAsp5NgZOwq7Z++zz9TSOrxxVwnJHKSxIh1WAJWcsc7udAVoFbBmu86vihexE + ZbD0KIbF9tNY/aEEVjskWOtVDGtinXfJDKy9GMVwDC7H5tBKOOyqwPtBZDCAGSuDtY8cVl5yWHwox+uG + DLBlSM1I7RRWi22RNVjjUYTNonyEJMoQnixHaJIcwQmlhMwgIYRv9CmsEebBN74enp/UYntMDdyiquES + UUXLr5JfBRtEFXjT1oABthWvcs1Te3zSAN+EBqx2L0BZTQt/krnJP/51DGpHsMY9j0/GquBEz44hFVSV + CriTGfeYM3AKrcbbGzMMG7AS5qsDP21EeFoj7Hy+hrRKQ8tIC7+4auRJGnkjw9Tjp3Or79O5A+2/9PMG + HOhOWXInZoJwoY1NlFgPUVI9majDYvvMmQZmPRtssn6HWB2VrkRCpgpOQRKcLuegbhvAtohyZJyo549Y + A9Rc/ghrOEMjE2i73If1O07Ae89Zfuu9hX/CWXxE/SWc+oF/wrcwc8zcp087FczAJr9CdWK2Bmn5GriG + laBIpkZTSy+EkWTg5Hd8kh7a23/H9VHabkfJhA6ath5s8jnJNzOWjDUgdh25nxrRkR9oR2xCSEojljtl + p+nTTgsy8IGoSJ2W34qs063wjJZBLFXhW3UXnEMV1FDUdLc6dNK5jmdax/uFYGaULd1wFImpnauQlNWE + ZGrBPNTeU7/kkHKcQ3R6E1Y4H535FQjm+po47/pak3nqIgoUl+AfW4YTJSpcpoaSmquCtPYKBoepAgO6 + KfrHeK4RA9oJcD/1wHlnEZ37LuAwHWrYwSajsAVHiiY5JG5BQhaHlc5ZBk7FD3s/YueVfza7uAMltdcQ + e+A7uptCRKXWIGxvFXbGKxCaXDnF3mnXBBvjFSOFx0elNL8LRZVXiQ6ewooO5MnacbzkCnYfVGLRxgNh + +qy/j0U2++0dfE9WeUZLf/SKknIO/gWcvXcetyWggHNhBIq5rcFiThgyiXtoIQ+73hYk5lwI/4+lXEii + nAvYI+dEsTLO5+NSjml5REo511BJk6VbTt5C65T5+pSGwvIBwRy/JwQmgXNnm0b8xixDzNOjf83Gsf8X + gtmeM2Gaj3o8Tgnunszzf7AQCH4FI/c83sWaGdsAAAAASUVORK5CYIL0BgAAiVBORw0KGgoAAAANSUhE + UgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwQAADsEBuJFr7QAAAAd0 + SU1FB9gCDwcbCcW/Em8AAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAABl1JREFU + WEftlnlMVFcUxl3S1q6JdoliE6tpGtu01TR1BVvbamVxAYbZZFELyDLMxr4O28CALDMMyCKIDPsiIlBE + ccAuakSLS9sYpSo1ad27YFHTGt7X8968Yq0DDrF/+iW/vDdn3j3n3HvPefdNeKzHehTNe3/hzHkLFroT + Qlt4e8Gid/mhjyaxVPjROvd1O0SenkN6owFB8mAEyAKtEhgSBOPWfOwwVSAmPp751MmxQygWmERSkQPv + bnwSSTzeidfE/JmWqYUmOQml27dBrpKNSnhUKJqaG7G/uwvmni6Um8pQ21CF5NTE3yWSdU/xbm2Xp7e0 + bXtFCUOzaFhov2zfp87Oww7Ll8N+DFY6OcNx9Wos+3jFmTWua7KTUhKYqJiwP4VCtxd4t7ZJJBXa6zK1 + TERU2KBQ4v4Sbx6XvLylHTtMpYxIItTzJtvls9Hry8rqHYxI7KHhTeMSbd+KzOx0JixC9RtN4EXebJvE + 64XOhvxcGqy+IpAInuPNNsvJyWnSJt8NfeUVpbR9HpG82TYJhcJJvv6bTtQ11tDSeSh587hE47wKi/OZ + EGXwjxKJ6xTebJuo7aQVldsZdahygJIZd+XSmCmBwZsHuNlLBD682bro4clU4RuIcqKS52pEZBho77/9 + l80a1SKpRyNdu4gSgut1kVgQUddQw2wO9DvBbgUXyJoo+BOeXtI9+QV5TEtrMzh2205VjQnGAgOKtxWh + oNAIlVo+TDOOoa75tax8GyOWeqzkQ1kXLXVSQ1M909TUiMoqk00072pCa3sLauurERUTDpk8kEOuDIY+ + LwcBQf7Y27WHoQ7q5MNYl4fY7eVcQ86t7u5u3L59G8PDw2PCMAwuXryI3t4jONt/BlXVJoQogkYSYAmS + BUCXocXWwnxqXcHY54BkvVB59NhRnDp1CkNDQ7h5cxB//HGTu7916xYlxXIbd+7c4bh79y4OHz7M/X/j + lxvI1WdxQdkkWNgV2OTrg68Ofgmpp3iY6mEWH8q6vDd4tvX19eHSpZ9x7lw/Llz4gWY4QL9/wtWrl3Ht + 2hVcv34VN25cxy8UcHBwEAcO9KC//yyOn+hDaloSFPTuZ1GqQyCjJIqKC5GVnYnE5AS2gDfzoR7Ua846 + 36XrM+64q0rhHVsFgaoEHuoSyFIqcfz4UZw+/R3Onj1NiZ3B+fP9GBg4Rwyg/fM27OnswKHDBxETFwlV + qBzqMAU0ifHQG3JRV18Lv4DP6D4btAKjv3opgRpTzwUU7OkfoWz/OYgTmmGqqUdHRys6O9vR1dUBs3kf + vvjCTMt/iALUoKauCt/0HQVVOugVy6FNS+VOPYNBj/BINfKMuWwClXy4B0UJlOa2fA9Zce8I6rJjSKo4 + AsegYrgp78edVkigLsWGiAI6jsu4LYiOjUBkdBhtQQgSkzTY3bYLxcVF3Mrk5T8kgdkuGYkp1cfgbzwI + P+PX8MuzEF7WC13DSWQ0nYKOpZHlJEcGocgzY1OEHmY661NSNVwS6nAl5Ao5qO8RFx+LuIRo5Bqyxt6C + 2S46V1nOPmZjzgH4ZPVweHN0W9hyDy8OM7wyzUio6MVK32xU11ZyPc8GY1GFKaFQyhEbH00FGI90nRZ0 + FoxRhKsypjkqq+766w9AnLaP2GtBa0E0QqeF1E4Iic36HnwSXA7tli3YVlqEhMRYaJLiuKAs9OGBzKx0 + hIYrH96Gc92yWgJyzXBLbLegaYcrR9s9EtqwboRWzuaVSvbANBQWFdBnlmaEFG0i15oGKsC16/2HqM7U + fCjrmr1a996KENOwu6YVztHN9xPVDCeOnfeI3AlHQkDPL/UtgTohE2m6VC6oNj2Z7lMoeA5thworA7di + zuqM7XyoUTVxjku6YYWimnGJ3oVV5HxVZPN/YO08US08u+Ea346FPlvhH2FJgq0HfV42vRcUcPbTYr7U + eNluefjYW0B6evKU56e/+nFM4XzPor8W+1cw9kHVsA+qgQNdHbirBdZmoRYOwXVYJquHA/Gm0Ii31iZj + qbsaDu5yLJGmM6+7pPZOneu8nPy/wsbgIlnRROJZYgbxxpPTZi2Zscg/buaHoUV2y9T5dvYhW2YsDU4b + hXQ7e5nuH2aw1w9URjsHRc7zsxY7kb/5rE/e9zPEqGI/FNgMpxFstuyAR2U6wfqaSrCfYexEbRb78P/B + GJow4W/6Fe13GcY+rQAAAABJRU5ErkJggmcKAACJUE5HDQoaCgAAAA1JSERSAAAAIAAAACAIBgAAAHN6 + evQAAAAEZ0FNQQAAsY8L/GEFAAAKHklEQVRYR6VWCVSU5Rr+EbNMvd4Wy25aaqfSNDVzySU1xdulBDTT + khRc0CDjgKXI0RRxR0HAC7hgCGKouCJIgCKIDiLDMgzLMAOzDwyzwLDMBojPff9xKDLxds99znn4hv// + z/s87/t97/d9TG8Y7eLHDB45pe84J/cXZy7xeWf+NxtnOq/a4rrQ6ydPt2+DvlvkE+y/yGfXRjfv4I2u + 3+70+3zddp9/rd660mllwOdzvvafNn2xz6j3nZYPfmHkxD5vTHG2R30KXnh3FnPkyn1msovX3z/1DJj7 + ld++QK/t0Wf9DiYWBkZdle2My2rc90ue6VByQUf45eIHR1J4Xf++xntoY0pJV+Rl7oOw8/kd+xNzjEEn + 0vWbIi6IvXfHcb4JiExw9d7lN3/FpmlTXdYMIKPMc6++Y1e1Y86yDczwCXMdPlu71XX9zuN522MzjQev + 8BGZpUD0bT2Oc1pw8n4b4otM+KXUjGS+BVcqrEgTtCNL1I4ccQfuSDtRIO8EV0lUdOC+1ILb1c1IKVTh + WGopAqNSDO4BkWn/9AyY4Rt2kZm9xNuuTljgsZmZvXTDOP+QRPnRzBqE5RgQmtuKw8TIvFZEc1pxoqAN + p7hGnCkxIrnMRAbMZMCCLKEVObXtuCslUXkHilWdKKt/gAr1A1RpumysaOjCPYkZkVd5WLk1pniGm9dr + 89397eoE57XbmOlua+f+GHrGGJcjwZE8A8KeYCCeDPxSYrIZuEoGrpOBGyIrcsXt4Mg6KPNOlNZ1otwu + LtR2oZpYru7EnRojTmQIsGHfKe3Uz1aOn7e8h4F55Gbcxy4Tl/nuUW8OTUTY2VzEZlUj/q4aCfcNSOC2 + 4XSxibI34RzPjIs0BSmVFqRXW383IG2nCrSDSyySW1EoNSO/phXZ5TpcuSfD6cwynLicB+/tkbUjJs59 + a6rzN3Z1wvjZLszLoyYO8/kpnB8enwL/vbHYsOsYNh2MR/DRiwhLzMTxKxwKwsP52wJczhcj5b4caUVK + pJfUIYNXjxtlDbhVrsHtKi041TrkCzS4W6FCTqkEmQVVuH6nDJmcMmzYEX6XGfjqS2++N8WuTnh52Fvs + MGjjriMZdZomCKX1SM0pQkxSBnbHnMeWQ/H4MSQOgWEJCI4+h9BTKTiefANJ6flIzeMht0SEomoVqhV6 + yHVtqGsyQ0mjRG1ArUoPqboJumYTZHU6rNtyIIm0nu0/cDCr+QiOz/Rjh74r/YJjxQo1Ojq7YGizQq03 + QqZuhkCmRalQhYIKGThlYtzliZHPl6KwSonSGjUqpDoIVSSmboVUY4RCb0KzqQNGSydM1gcwt3ehvfMh + +EIZviAHpOXAODiwmr8DAPO5h/82Ll+E9o4uNLVaUE8G6igYSxVRyVJngoIo11JGRKnGBAmJilk2PKJC + b0ar+ZF4N61kIKeA/3Dul+u9C0nrTwi5LmWmu3i6/3qb22G1GbCSsBEqnZFEKajWSKJUERJis7SJklit + nTVqliaqgpnMWtFm+V2cpaXjIS78mmecMG+p8+pdiXbVHljsG8KMnuny8enLWQaTtRNNNAWsgW5xGbE3 + YXGDBTKdGbV6LbiaMlQ2VcFgbYWRhFkjRpb0O+ZMSv0bEz6ZwHbdnzDDdQ3z6pjp74bGJktbjFabAbbs + vYmzwiJWnJ5lqzMQKdmC08oQBIlWIETsg+LmXDRZm2Bsb0crrYVGmtLgyHj+86+Nfv39WQvtqj0wavwM + hhkwdEhgyPGChsY2MtBuM8CWvTfxGrUF+Q0FWMv/CK5Fb2AdfyZS1QmIkW3FDf158Fvz0WKxosX8AEpN + M3yDIjJIapC96/6IAYNfYof+tEiTa5Xa3wx0Z99TXEisrqf/ta0IrfWHG4kvKhqB/TU+EBnkuNYQh0xd + EiQmAQyWNpuBCnEd3H2DjpFGX8e+z7Baf4TDo7bos2R94KGiSslvBrqz75m5kMRraLFJaH3kaNMRJPSw + VeFOQx6ETVKUG3hQmMQooWngNKWTCTPyioVwXuG3he22XlFHL+ct8/4+i8N72Gg30F36nuKSxiZkqC8j + QhxIc78ZPD0f9xqKUEkbT1WdCQ0tdC4YcnGuPgKX1DFQmVS4epPbMX2h5/LtSSV2tSdg/cGLzKQFX7kk + pd0261rbqe8pS3v23eJs6cXU++eVx7C4eCSV/k1ES4JQTe/LlEZUqIyoN3SgsqUMCaoDuKCOgsqoQWxy + lmEMddkiX3Yf6gULPAKYkR86TTqSkNKgNlhsG0/P7FlxQR0ZaWjBPpGPbd5XlU3BacVhVOhkKFdaUEkV + ULXqoDUZkK27hEJDNtTNZuw9ek78yjtT3/5ooadd7QmYMMeNGTR87PAd4fEVcm2bbUfrNtC98KrIgECj + Q6BgqW3xHZUGoaZRA662DBw1FyKdAVnaC7ilu2pbjHxDsW2L/mHvUQ7Tf8hLI8ZNs6s9AUNHjqG//f62 + YUfEzWq53magZ/kFdgPV9WZcU12wtV28cj82Vy2GJ+9D7BatBbcxH6Hi77G31guxip2QNutQUqPBqk37 + kyn4c/ZuezL69nuWHZ5x9935M7dK8QcD3eWvJLLzXEkn3MW6WOwQulMl3rRxl2i1LfNgkQcipT+Co8uF + vLEdt0pq4ea15SDF7mPvtt7BtonzSv9tN+gMl+stvRhoo/mmqdE1I0ERhmUl7+Lr0jE4LN4EQSPdExoS + UaVX0D5BCWituHSrhD2EfGqe1oLdCLkuY2a4rFpxPuNep7xHBQR1rGgrePIWlEibUSRpBlfSgiJFHVJl + qciQ36QLqQwV9J2kSU8L1YyqehOEGgtOXMoxfeC07LM1e87YVZ6CJRvDmLGzF809ejajRULtVi5vxj2R + HrmVGtzkq+nmo0YW3YAy7cziqZFdpsVNInsryqMbUYGokQwawFe22UwcOHml4a3JCz5wWrHJrvIUzFq8 + jnl97MzRu6PPyu6Q6JUCOS5wpH+JFzkyuqopkMpVII2rtBm9J9Qh4FBc+eDhY4eNn+1qV3kK3v5wDvP8 + KyNf+S4o6n5ithAns4iZ1Y9IF9Wn8Wf6NiFbhNO3amw8k1OLS3dFWB1wMJ1CDxrypEPocTzbf4BtmOXi + sXvL4STLsTQejv8qQFRaJSKvVSA8pRzhV1nyH2M5Iugd+90x+j7uBhm/XkoX21Mtk52+9KWYjg4OfdjY + fwkOjv2ee3vU+OkHFnr4VfjtOdG25+frXRHJHERdLUbUNR6iUvmITi23k37Ts2h6x36z52Ral29wTPOn + X/sUDx89aRvTx3GYPe7/BEfiUAfHvvMHDxn2w6j3p8VOnrcow+lLryK3VT8Il/lsk9Hxqlz+fZByqfdW + qaunv2DeF2sKJ811uT7ivckxA18c6uvQx/FjisHuPH899SeANTKQ+A/ie8TpxAVUI1e6Tn9ho0MfF3rm + RGT32dHEocTnif+XcG9gtzI2cN/HyD77L9vc42CY/wBcQuHh/jKt5QAAAABJRU5ErkJgggs= - + True 6, 13 - 558, 126 + 699, 126 CenterParent diff --git a/source/Translation.xlsx b/source/Translation.xlsx index 3731c35..92e2b66 100644 Binary files a/source/Translation.xlsx and b/source/Translation.xlsx differ diff --git a/source/changelog.md b/source/changelog.md index 8d33ec1..2a75dcc 100644 --- a/source/changelog.md +++ b/source/changelog.md @@ -1,6 +1,12 @@ ChanSort Change Log =================== +2021-02-09 +- Sony: fixed incorrect checksum error for Android based TVs which use CR+LF as line separators (normally only LF is used) +- Philips: show info that it may be necessary to unplug and reboot the TV after the import +- Philips ChannelMap_45: show info when there are checksum errors, which indicate that TV's internal list is broken + and a rescan is required in order to properly export/import the list. + 2021-02-08 - Philips: lists with a chanLst.bin file show information about file format version and TV model under File / Information - Philips ChannelMap_45: fixed handling of favorite lists (allow up to 8 lists, empty ones get removed automatically)