diff --git a/RootHide/ar.lproj/Localizable.strings b/RootHide/ar.lproj/Localizable.strings index de3d2e7..9b8703c 100644 --- a/RootHide/ar.lproj/Localizable.strings +++ b/RootHide/ar.lproj/Localizable.strings @@ -1,43 +1,27 @@ +"Advanced" = "متقدم"; "Blacklist" = "القائمة السوداء"; -"name or identifier" = "الاسم أو المعرف"; - -"varClean" = "مسح مسار var"; "Clean" = "مسح"; +"Edit varClean Rules" = "تعديل قواعد مسح مسار var"; +"General" = "عام"; +"Got It" = "لقد فهمت"; +"Hide xinaA15 Files" = "إخفاء ملفات XinaA15"; +"Misc" = "متنوع"; +"Process xinaA15 Files" = "معالجة ملفات XinaA15"; +"SSH Detected" = "تم اكتشاف SSH"; +"SSH Service has been installed, you can uninstall it via Sileo/Zebra." = "تم تثبيت خدمة SSH، يمكنك إلغاء تثبيتها عبر Sileo أو Zebra."; "SeleteAll" = "تحديد الكل"; - "Setting" = "الإعدادات"; - -"General" = "عام"; "Whitelist Mode" = "نمط القائمة البيضاء"; "auto blacklist newly installed apps" = "وضع التطبيقات المثبتة حديثًا في القائمة السوداء تلقائيًا."; - -"Advanced" = "متقدم"; -"Edit varClean Rules" = "تعديل قواعد مسح مسار var"; -"view the rules file in Filza" = "عرض ملف القواعد في Filza."; - -"Misc" = "متنوع"; -"Hide xinaA15 Files" = "إخفاء ملفات XinaA15"; +"hide failed: %@" = "فشل الإخفاء: %@"; "hide xinaA15 files without uninstall it" = "إخفاء ملفات XinaA15 دون إزالته."; - - - -"Got It" = "لقد فهمت"; - -"SSH Detected" = "تم اكتشاف SSH"; -"SSH Service has been installed, you can uninstall it via Sileo/Zebra." = "تم تثبيت خدمة SSH، يمكنك إلغاء تثبيتها عبر Sileo أو Zebra."; - +"name or identifier" = "الاسم أو المعرف"; +"restore failed: %@" = "فشلت الاستعادة: %@"; +"restore failed: xinaA15 file not found!" = "فشلت الاستعادة: تعذر العثور على ملف XinaA15!"; +"there are multiple xinaA15 jailbreak files, you can restore it manually:\n\n%s/" = "توجد عدة ملفات لجيلبريك XinaA15، يمكنك استعادة هذه الملفات يدويًا:\n\n%s/"; +"varClean" = "مسح مسار var"; +"view the rules file in Filza" = "عرض ملف القواعد في Filza."; "xinaA15 detected" = "تم اكتشاف XinaA15"; - -"xinaA15 jailbreak file has been installed, you can uninstall it via xinaA15 app or hide it in the settings of the RootHide app." = "ملفات جيلبريك XinaA15 مثبتة، يمكنك إلغاء تثبيتها عبر تطبيق XinaA15 أو إخفائها من إعدادات تطبيق RootHide."; - -"Process xinaA15 Files" = "معالجة ملفات XinaA15"; - "xinaA15 files has been hidden, please reboot your device.\n\nyou can restore it later if you want to use xinaA15 again." = "تم إخفاء ملفات XinaA15، يرجى إعادة تشغيل جهازك.\n\nيمكنك استعادتها لاحقا إذا كنت ترغب في استخدام XinaA15 مرةً أخرى."; - "xinaA15 files has been restored, you can reboot your device to switch to xinaA15." = "تمت استعادة ملفات XinaA15، يمكنك إعادة تشغيل جهازك لإكمال الانتقال إلى XinaA15."; - -"there are multiple xinaA15 jailbreak files, you can restore it manually:\n\n%s/" = "توجد عدة ملفات لجيلبريك XinaA15، يمكنك استعادة هذه الملفات يدويًا:\n\n%s/"; - -"restore failed: xinaA15 file not found!" = "فشلت الاستعادة: تعذر العثور على ملف XinaA15!"; -"restore failed: %@" = "فشلت الاستعادة: %@"; -"hide failed: %@" = "فشل الإخفاء: %@"; +"xinaA15 jailbreak file has been installed, you can uninstall it via xinaA15 app or hide it in the settings of the RootHide app." = "ملفات جيلبريك XinaA15 مثبتة، يمكنك إلغاء تثبيتها عبر تطبيق XinaA15 أو إخفائها من إعدادات تطبيق RootHide."; diff --git a/RootHide/de.lproj/Localizable.strings b/RootHide/de.lproj/Localizable.strings index 508e533..dcb3639 100644 --- a/RootHide/de.lproj/Localizable.strings +++ b/RootHide/de.lproj/Localizable.strings @@ -1,45 +1,27 @@ - +"Advanced" = "Advanced"; "Blacklist" = "Blacklist"; -"name or identifier" = "name or identifier"; - -"varClean" = "varClean"; "Clean" = "Clean"; +"Edit varClean Rules" = "Edit varClean Rules"; +"General" = "General"; +"Got It" = "Got It"; +"Hide xinaA15 Files" = "Hide xinaA15 Files"; +"Misc" = "Misc"; +"Process xinaA15 Files" = "Process xinaA15 Files"; +"SSH Detected" = "SSH Detected"; +"SSH Service has been installed, you can uninstall it via Sileo/Zebra." = "SSH Service has been installed, you can uninstall it via Sileo/Zebra."; "SelectAll" = "SelectAll"; - "Setting" = "Setting"; - -"General" = "General"; "Whitelist Mode" = "Whitelist Mode"; "auto blacklist newly installed apps" = "auto blacklist newly installed apps"; - -"Advanced" = "Advanced"; -"Edit varClean Rules" = "Edit varClean Rules"; -"view the rules file in Filza" = "view the rules file in Filza"; - -"Misc" = "Misc"; -"Hide xinaA15 Files" = "Hide xinaA15 Files"; +"hide failed: %@" = "hide failed: %@"; "hide xinaA15 files without uninstall it" = "hide xinaA15 files without uninstall it"; - - - -"Got It" = "Got It"; - -"SSH Detected" = "SSH Detected"; -"SSH Service has been installed, you can uninstall it via Sileo/Zebra." = "SSH Service has been installed, you can uninstall it via Sileo/Zebra."; - +"name or identifier" = "name or identifier"; +"restore failed: %@" = "restore failed: %@"; +"restore failed: xinaA15 file not found!" = "restore failed: xinaA15 file not found!"; +"there are multiple xinaA15 jailbreak files, you can restore it manually:\n\n%s/" = "there are multiple xinaA15 jailbreak files, you can restore it manually:\n\n%s/"; +"varClean" = "varClean"; +"view the rules file in Filza" = "view the rules file in Filza"; "xinaA15 detected" = "xinaA15 detected"; - -"xinaA15 jailbreak file has been installed, you can uninstall it via xinaA15 app or hide it in the settings of the RootHide app." = "xinaA15 jailbreak file has been installed, you can uninstall it via xinaA15 app or hide it in the settings of the RootHide app."; - -"Process xinaA15 Files" = "Process xinaA15 Files"; - "xinaA15 files has been hidden, please reboot your device.\n\nyou can restore it later if you want to use xinaA15 again." = "xinaA15 files has been hidden, please reboot your device.\n\nyou can restore it later if you want to use xinaA15 again."; - "xinaA15 files has been restored, you can reboot your device to switch to xinaA15." = "xinaA15 files has been restored, you can reboot your device to switch to xinaA15."; - -"there are multiple xinaA15 jailbreak files, you can restore it manually:\n\n%s/" = "there are multiple xinaA15 jailbreak files, you can restore it manually:\n\n%s/"; - -"restore failed: xinaA15 file not found!" = "restore failed: xinaA15 file not found!"; -"restore failed: %@" = "restore failed: %@"; -"hide failed: %@" = "hide failed: %@"; - +"xinaA15 jailbreak file has been installed, you can uninstall it via xinaA15 app or hide it in the settings of the RootHide app." = "xinaA15 jailbreak file has been installed, you can uninstall it via xinaA15 app or hide it in the settings of the RootHide app."; diff --git a/RootHide/en.lproj/Localizable.strings b/RootHide/en.lproj/Localizable.strings index 508e533..dcb3639 100644 --- a/RootHide/en.lproj/Localizable.strings +++ b/RootHide/en.lproj/Localizable.strings @@ -1,45 +1,27 @@ - +"Advanced" = "Advanced"; "Blacklist" = "Blacklist"; -"name or identifier" = "name or identifier"; - -"varClean" = "varClean"; "Clean" = "Clean"; +"Edit varClean Rules" = "Edit varClean Rules"; +"General" = "General"; +"Got It" = "Got It"; +"Hide xinaA15 Files" = "Hide xinaA15 Files"; +"Misc" = "Misc"; +"Process xinaA15 Files" = "Process xinaA15 Files"; +"SSH Detected" = "SSH Detected"; +"SSH Service has been installed, you can uninstall it via Sileo/Zebra." = "SSH Service has been installed, you can uninstall it via Sileo/Zebra."; "SelectAll" = "SelectAll"; - "Setting" = "Setting"; - -"General" = "General"; "Whitelist Mode" = "Whitelist Mode"; "auto blacklist newly installed apps" = "auto blacklist newly installed apps"; - -"Advanced" = "Advanced"; -"Edit varClean Rules" = "Edit varClean Rules"; -"view the rules file in Filza" = "view the rules file in Filza"; - -"Misc" = "Misc"; -"Hide xinaA15 Files" = "Hide xinaA15 Files"; +"hide failed: %@" = "hide failed: %@"; "hide xinaA15 files without uninstall it" = "hide xinaA15 files without uninstall it"; - - - -"Got It" = "Got It"; - -"SSH Detected" = "SSH Detected"; -"SSH Service has been installed, you can uninstall it via Sileo/Zebra." = "SSH Service has been installed, you can uninstall it via Sileo/Zebra."; - +"name or identifier" = "name or identifier"; +"restore failed: %@" = "restore failed: %@"; +"restore failed: xinaA15 file not found!" = "restore failed: xinaA15 file not found!"; +"there are multiple xinaA15 jailbreak files, you can restore it manually:\n\n%s/" = "there are multiple xinaA15 jailbreak files, you can restore it manually:\n\n%s/"; +"varClean" = "varClean"; +"view the rules file in Filza" = "view the rules file in Filza"; "xinaA15 detected" = "xinaA15 detected"; - -"xinaA15 jailbreak file has been installed, you can uninstall it via xinaA15 app or hide it in the settings of the RootHide app." = "xinaA15 jailbreak file has been installed, you can uninstall it via xinaA15 app or hide it in the settings of the RootHide app."; - -"Process xinaA15 Files" = "Process xinaA15 Files"; - "xinaA15 files has been hidden, please reboot your device.\n\nyou can restore it later if you want to use xinaA15 again." = "xinaA15 files has been hidden, please reboot your device.\n\nyou can restore it later if you want to use xinaA15 again."; - "xinaA15 files has been restored, you can reboot your device to switch to xinaA15." = "xinaA15 files has been restored, you can reboot your device to switch to xinaA15."; - -"there are multiple xinaA15 jailbreak files, you can restore it manually:\n\n%s/" = "there are multiple xinaA15 jailbreak files, you can restore it manually:\n\n%s/"; - -"restore failed: xinaA15 file not found!" = "restore failed: xinaA15 file not found!"; -"restore failed: %@" = "restore failed: %@"; -"hide failed: %@" = "hide failed: %@"; - +"xinaA15 jailbreak file has been installed, you can uninstall it via xinaA15 app or hide it in the settings of the RootHide app." = "xinaA15 jailbreak file has been installed, you can uninstall it via xinaA15 app or hide it in the settings of the RootHide app."; diff --git a/RootHide/fr.lproj/Localizable.strings b/RootHide/fr.lproj/Localizable.strings index 922f7e6..882fb91 100644 --- a/RootHide/fr.lproj/Localizable.strings +++ b/RootHide/fr.lproj/Localizable.strings @@ -1,45 +1,27 @@ - +"Advanced" = "Avancée"; "Blacklist" = "Liste noire"; -"name or identifier" = "nom ou identifiant"; - -"varClean" = "varClean"; "Clean" = "Faire le ménage"; +"Edit varClean Rules" = "Modifier les règles varClean"; +"General" = "Général"; +"Got It" = "J'ai compris"; +"Hide xinaA15 Files" = "Masquer les fichiers xinaA15"; +"Misc" = "Divers"; +"Process xinaA15 Files" = "Traiter les fichiers xinaA15"; +"SSH Detected" = "SSH détecté"; +"SSH Service has been installed, you can uninstall it via Sileo/Zebra." = "Le service SSH a été installé, vous pouvez le désinstaller via Sileo/Zebra."; "SelectAll" = "Tout sélectionner"; - "Setting" = "Paramètre"; - -"General" = "Général"; "Whitelist Mode" = "Mode liste blanche"; "auto blacklist newly installed apps" = "liste noire automatique des applications nouvellement installées"; - -"Advanced" = "Avancée"; -"Edit varClean Rules" = "Modifier les règles varClean"; -"view the rules file in Filza" = "afficher le fichier de règles dans Filza"; - -"Misc" = "Divers"; -"Hide xinaA15 Files" = "Masquer les fichiers xinaA15"; +"hide failed: %@" = "échec du masquage : %@"; "hide xinaA15 files without uninstall it" = "masquer les fichiers xinaA15 sans les désinstaller"; - - - -"Got It" = "J'ai compris"; - -"SSH Detected" = "SSH détecté"; -"SSH Service has been installed, you can uninstall it via Sileo/Zebra." = "Le service SSH a été installé, vous pouvez le désinstaller via Sileo/Zebra."; - +"name or identifier" = "nom ou identifiant"; +"restore failed: %@" = "échec de la restauration : %@"; +"restore failed: xinaA15 file not found!" = "échec de la restauration : fichier xinaA15 introuvable !"; +"there are multiple xinaA15 jailbreak files, you can restore it manually:\n\n%s/" = "il existe plusieurs fichiers de jailbreak xinaA15, vous pouvez le restaurer manuellement :\n\n%s/"; +"varClean" = "varClean"; +"view the rules file in Filza" = "afficher le fichier de règles dans Filza"; "xinaA15 detected" = "xinaA15 détecté"; - -"xinaA15 jailbreak file has been installed, you can uninstall it via xinaA15 app or hide it in the settings of the RootHide app." = "Le fichier jailbreak xinaA15 a été installé, vous pouvez le désinstaller via l'application xinaA15 ou le masquer dans les paramètres de l'application RootHide."; - -"Process xinaA15 Files" = "Traiter les fichiers xinaA15"; - "xinaA15 files has been hidden, please reboot your device.\n\nyou can restore it later if you want to use xinaA15 again." = "Les fichiers xinaA15 ont été masqués, veuillez redémarrer votre appareil.\n\vous pourrez le restaurer plus tard si vous souhaitez utiliser à nouveau xinaA15."; - "xinaA15 files has been restored, you can reboot your device to switch to xinaA15." = "Les fichiers xinaA15 ont été restaurés, vous pouvez redémarrer votre appareil pour passer à xinaA15."; - -"there are multiple xinaA15 jailbreak files, you can restore it manually:\n\n%s/" = "il existe plusieurs fichiers de jailbreak xinaA15, vous pouvez le restaurer manuellement :\n\n%s/"; - -"restore failed: xinaA15 file not found!" = "échec de la restauration : fichier xinaA15 introuvable !"; -"restore failed: %@" = "échec de la restauration : %@"; -"hide failed: %@" = "échec du masquage : %@"; - +"xinaA15 jailbreak file has been installed, you can uninstall it via xinaA15 app or hide it in the settings of the RootHide app." = "Le fichier jailbreak xinaA15 a été installé, vous pouvez le désinstaller via l'application xinaA15 ou le masquer dans les paramètres de l'application RootHide."; diff --git a/RootHide/ja.lproj/Localizable.strings b/RootHide/ja.lproj/Localizable.strings index 5ac4de0..48a8dee 100644 --- a/RootHide/ja.lproj/Localizable.strings +++ b/RootHide/ja.lproj/Localizable.strings @@ -1,45 +1,27 @@ - +"Advanced" = "詳細"; "Blacklist" = "ブラックリスト"; -"name or identifier" = "名前 または 識別子"; - -"varClean" = "varClean"; "Clean" = "クリーン"; +"Edit varClean Rules" = "varCleanの設定"; +"General" = "一般"; +"Got It" = "了解"; +"Hide xinaA15 Files" = "xinaA15のファイルを非表示にする"; +"Misc" = "その他"; +"Process xinaA15 Files" = "xinaA15のファイルを処理しています"; +"SSH Detected" = "SSHの検出"; +"SSH Service has been installed, you can uninstall it via Sileo/Zebra." = "SSHがインストールされています SileoまたはZebraを使用してアンインストールできます"; "SelectAll" = "すべて選択"; - "Setting" = "設定"; - -"General" = "一般"; "Whitelist Mode" = "ホワイトリストモード"; "auto blacklist newly installed apps" = "アプリがインストールされると自動で登録します"; - -"Advanced" = "詳細"; -"Edit varClean Rules" = "varCleanの設定"; -"view the rules file in Filza" = "Filzaを起動しルールを編集します"; - -"Misc" = "その他"; -"Hide xinaA15 Files" = "xinaA15のファイルを非表示にする"; +"hide failed: %@" = "非表示に失敗: %@"; "hide xinaA15 files without uninstall it" = "アンインストールせずにxinaA15のファイルを非表示にします"; - - - -"Got It" = "了解"; - -"SSH Detected" = "SSHの検出"; -"SSH Service has been installed, you can uninstall it via Sileo/Zebra." = "SSHがインストールされています SileoまたはZebraを使用してアンインストールできます"; - +"name or identifier" = "名前 または 識別子"; +"restore failed: %@" = "復元に失敗: %@"; +"restore failed: xinaA15 file not found!" = "復元に失敗: xinaA15のファイルが見つかりません"; +"there are multiple xinaA15 jailbreak files, you can restore it manually:\n\n%s/" = "複数のxinaA15のファイルを検出しました 手動で復元可能です:\n\n%s/"; +"varClean" = "varClean"; +"view the rules file in Filza" = "Filzaを起動しルールを編集します"; "xinaA15 detected" = "xinaA15を検出"; - -"xinaA15 jailbreak file has been installed, you can uninstall it via xinaA15 app or hide it in the settings of the RootHide app." = "xinaA15をアンインストールするかRootHideを使用して非表示にできます"; - -"Process xinaA15 Files" = "xinaA15のファイルを処理しています"; - "xinaA15 files has been hidden, please reboot your device.\n\nyou can restore it later if you want to use xinaA15 again." = "xinaA15を非表示にしました 端末を再起動してください\n再度使用したい場合あとで復元できます"; - "xinaA15 files has been restored, you can reboot your device to switch to xinaA15." = "xinaA15のファイルを復元しました 端末を再起動してxinaA15に切り替えてください"; - -"there are multiple xinaA15 jailbreak files, you can restore it manually:\n\n%s/" = "複数のxinaA15のファイルを検出しました 手動で復元可能です:\n\n%s/"; - -"restore failed: xinaA15 file not found!" = "復元に失敗: xinaA15のファイルが見つかりません"; -"restore failed: %@" = "復元に失敗: %@"; -"hide failed: %@" = "非表示に失敗: %@"; - +"xinaA15 jailbreak file has been installed, you can uninstall it via xinaA15 app or hide it in the settings of the RootHide app." = "xinaA15をアンインストールするかRootHideを使用して非表示にできます"; diff --git a/RootHide/zh_CN.lproj/Localizable.strings b/RootHide/zh_CN.lproj/Localizable.strings index dbcd5b0..fda3c11 100644 --- a/RootHide/zh_CN.lproj/Localizable.strings +++ b/RootHide/zh_CN.lproj/Localizable.strings @@ -1,45 +1,27 @@ - +"Advanced" = "高级"; "Blacklist" = "黑名单"; -"name or identifier" = "名字或者标识符"; - -"varClean" = "var清理"; "Clean" = "清理"; +"Edit varClean Rules" = "编辑清理 var 垃圾文件时的规则"; +"General" = "通用"; +"Got It" = "明白了"; +"Hide xinaA15 Files" = "隐藏 xinaA15 文件"; +"Misc" = "杂项"; +"Process xinaA15 Files" = "处理 xinaA15 文件"; +"SSH Detected" = "检测到 SSH"; +"SSH Service has been installed, you can uninstall it via Sileo/Zebra." = "SSH 服务已经安装,您可以通过 Sileo/Zebra 卸载它。"; "SeleteAll" = "选择全部"; - "Setting" = "设置"; - -"General" = "通用"; "Whitelist Mode" = "白名单模式"; "auto blacklist newly installed apps" = "自动将新安装的应用列入黑名单"; - -"Advanced" = "高级"; -"Edit varClean Rules" = "编辑清理var垃圾文件时的规则"; -"view the rules file in Filza" = "查看Filza中的规则文件"; - -"Misc" = "其他"; -"Hide xinaA15 Files" = "隐藏xinaA15文件"; -"hide xinaA15 files without uninstall it" = "隐藏xinaA15文件而不卸载"; - - - -"Got It" = "明白了"; - -"SSH Detected" = "检测到SSH"; -"SSH Service has been installed, you can uninstall it via Sileo/Zebra." = "SSH服务已经安装,您可以通过Sileo/Zebra卸载它."; - -"xinaA15 detected" = "检测到xinaA15"; - -"xinaA15 jailbreak file has been installed, you can uninstall it via xinaA15 app or hide it in the settings of the RootHide app." = "xinaA15越狱文件已安装,您可以通过xinaA1五应用程序卸载它,也可以将其隐藏在RootHide应用程序的设置中."; - -"Process xinaA15 Files" = "处理xinaA15文件"; - -"xinaA15 files has been hidden, please reboot your device.\n\nyou can restore it later if you want to use xinaA15 again." = "xinaA15文件已被隐藏,请重新启动您的设备.\n\n如果您想再次使用xina15,可以稍后恢复."; - -"xinaA15 files has been restored, you can reboot your device to switch to xinaA15." = "xinaA15文件已还原,您可以重新启动设备以切换到xinaA15."; - -"there are multiple xinaA15 jailbreak files, you can restore it manually:\n\n%s/" = "有多个xinaA15越狱文件,您可以手动恢复:\n\n%s/"; - -"restore failed: xinaA15 file not found!" = "还原失败:找不到xinaA15文件!"; -"restore failed: %@" = "还原失败: %@"; "hide failed: %@" = "隐藏失败: %@"; - +"hide xinaA15 files without uninstall it" = "隐藏 xinaA15 文件而不卸载"; +"name or identifier" = "名字或者标识符"; +"restore failed: %@" = "还原失败: %@"; +"restore failed: xinaA15 file not found!" = "还原失败:找不到 xinaA15 文件!"; +"there are multiple xinaA15 jailbreak files, you can restore it manually:\n\n%s/" = "有多个 xinaA15 越狱文件,您可以手动恢复:\n\n%s/"; +"varClean" = "清理 var"; +"view the rules file in Filza" = "在 Filza 中查看规则文件"; +"xinaA15 detected" = "检测到 xinaA15"; +"xinaA15 files has been hidden, please reboot your device.\n\nyou can restore it later if you want to use xinaA15 again." = "xinaA15 文件已被隐藏,请重新启动。\n\n如果您想再次使用 xinaA15,可在稍后恢复。"; +"xinaA15 files has been restored, you can reboot your device to switch to xinaA15." = "xinaA15 文件已还原,您可以重新启动设备以切换到 xinaA15。"; +"xinaA15 jailbreak file has been installed, you can uninstall it via xinaA15 app or hide it in the settings of the RootHide app." = "xinaA15 越狱文件已安装,您可以通过 xinaA15 应用程序卸载它,也可以在 RootHide 应用程序的设置中隐藏它们。"; diff --git a/sort_lproj.py b/sort_lproj.py new file mode 100755 index 0000000..da25f69 --- /dev/null +++ b/sort_lproj.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 + +import os + +LOCATION = "./RootHide/" +subdirs = [f for f in os.listdir(LOCATION) if os.path.isdir(os.path.join(LOCATION, f)) and f.endswith('.lproj')] +files = list() + +for subdir in subdirs: + path = os.path.join(LOCATION, subdir) + files.extend( + [ + os.path.join(path, f) for f in os.listdir(path) \ + if os.path.isfile(os.path.join(path, f)) and f.endswith('.strings') + ] + ) + +for file in files: + with open(file, 'r') as fin: + lines = fin.readlines() + lines = sorted([line for line in lines if not line.isspace()]) + with open(file, 'w') as fout: + fout.write(''.join(lines))