From f6e4189fbd496c01ccfefb50f40c9d1e112244bc Mon Sep 17 00:00:00 2001
From: K1ngfish3r <26593485+K1ngfish3r@users.noreply.github.com>
Date: Mon, 18 May 2026 11:00:55 +0500
Subject: [PATCH] feat: Add Cherry Mist Cafe

---
 plugins/index.ts                              | 440 +++++++++---------
 .../custom/cherrymistcafe/chapterTransform.js |  46 ++
 plugins/multisrc/fictioneer/sources.json      |  12 +
 .../fictioneer/cherrymistcafe/icon.png        | Bin 0 -> 4879 bytes
 4 files changed, 279 insertions(+), 219 deletions(-)
 create mode 100644 plugins/multisrc/fictioneer/custom/cherrymistcafe/chapterTransform.js
 create mode 100644 public/static/multisrc/fictioneer/cherrymistcafe/icon.png

diff --git a/plugins/index.ts b/plugins/index.ts
index 2307f3026..c152366d6 100644
--- a/plugins/index.ts
+++ b/plugins/index.ts
@@ -25,225 +25,226 @@ import p_22 from '@plugins/english/ArcaneTranslations[lightnovelwp]';
 import p_23 from '@plugins/english/BelleReservoir[madara]';
 import p_24 from '@plugins/english/BoxNovel[readnovelfull]';
 import p_25 from '@plugins/english/CPUnovel[lightnovelwp]';
-import p_26 from '@plugins/english/CitrusAurora[madara]';
-import p_27 from '@plugins/english/CoralBoutique[madara]';
-import p_28 from '@plugins/english/DaoNovel[madara]';
-import p_29 from '@plugins/english/DaoTranslate[lightnovelwp]';
-import p_30 from '@plugins/english/DaoistQuest[fictioneer]';
-import p_31 from '@plugins/english/DearestRosalie[fictioneer]';
-import p_32 from '@plugins/english/DragonTea[madara]';
-import p_33 from '@plugins/english/Dragonholic[madara]';
-import p_34 from '@plugins/english/DuskBlossoms[madara]';
-import p_35 from '@plugins/english/ElloTL[lightnovelwp]';
-import p_36 from '@plugins/english/Eternalune[madara]';
-import p_37 from '@plugins/english/EtudeTranslations[madara]';
-import p_38 from '@plugins/english/FanNovel[readwn]';
-import p_39 from '@plugins/english/FansMTL[readwn]';
-import p_40 from '@plugins/english/FansTranslations[madara]';
-import p_41 from '@plugins/english/FirstKissNovel[madara]';
-import p_42 from '@plugins/english/Foxaholic[madara]';
-import p_43 from '@plugins/english/FreeWebNovel[readnovelfull]';
-import p_44 from '@plugins/english/GalaxyTranslations[madara]';
-import p_45 from '@plugins/english/Guavaread[madara]';
-import p_46 from '@plugins/english/HiraethTranslation[madara]';
-import p_47 from '@plugins/english/HotNovelPub[hotnovelpub]';
-import p_48 from '@plugins/english/Ippotranslations[lightnovelwp]';
-import p_49 from '@plugins/english/KDTNovels[lightnovelwp]';
-import p_50 from '@plugins/english/KeopiTranslations[lightnovelwp]';
-import p_51 from '@plugins/english/KnoxT[lightnovelwp]';
-import p_52 from '@plugins/english/LazyGirlTranslations[lightnovelwp]';
-import p_53 from '@plugins/english/LibRead[readnovelfull]';
-import p_54 from '@plugins/english/LightNovelCave[lightnovelworld]';
-import p_55 from '@plugins/english/LightNovelHeaven[madara]';
-import p_56 from '@plugins/english/LightNovelPlus[readnovelfull]';
-import p_57 from '@plugins/english/LightNovelPubVip[lightnovelworld]';
-import p_58 from '@plugins/english/LightNovelUpdates[madara]';
-import p_59 from '@plugins/english/LilyontheValley[fictioneer]';
-import p_60 from '@plugins/english/Ltnovel[readwn]';
-import p_61 from '@plugins/english/LulloBox[madara]';
-import p_62 from '@plugins/english/LunarLetters[madara]';
-import p_63 from '@plugins/english/MTLNovel[madara]';
-import p_64 from '@plugins/english/MTLNovel[mtlnovel]';
-import p_65 from '@plugins/english/Meownovel[madara]';
-import p_66 from '@plugins/english/MoonlightNovels[lightnovelwp]';
-import p_67 from '@plugins/english/MostNovel[madara]';
-import p_68 from '@plugins/english/MysticalSeries[madara]';
-import p_69 from '@plugins/english/NeoSekaiTranslations[madara]';
-import p_70 from '@plugins/english/NitroManga[madara]';
-import p_71 from '@plugins/english/NobleMTL[lightnovelwp]';
-import p_72 from '@plugins/english/NoiceTranslations[madara]';
-import p_73 from '@plugins/english/NovelBin[readnovelfull]';
-import p_74 from '@plugins/english/NovelCool[novelcool]';
-import p_75 from '@plugins/english/NovelFull[readnovelfull]';
-import p_76 from '@plugins/english/NovelLib[fictioneer]';
-import p_77 from '@plugins/english/NovelMultiverse[madara]';
-import p_78 from '@plugins/english/NovelNinja[madara]';
-import p_79 from '@plugins/english/NovelOnline';
-import p_80 from '@plugins/english/NovelTranslate[madara]';
-import p_81 from '@plugins/english/NovelsKnight[lightnovelwp]';
-import p_82 from '@plugins/english/PandaMachineTranslations[lightnovelwp]';
-import p_83 from '@plugins/english/PastelTales[madara]';
-import p_84 from '@plugins/english/PenguinSquad[fictioneer]';
-import p_85 from '@plugins/english/Prizma[fictioneer]';
-import p_86 from '@plugins/english/Ranobes[ranobes]';
-import p_87 from '@plugins/english/Ranovel[madara]';
-import p_88 from '@plugins/english/ReadFanfic[madara]';
-import p_89 from '@plugins/english/ReadNovelFull[readnovelfull]';
-import p_90 from '@plugins/english/RequiemTranslations[lightnovelwp]';
-import p_91 from '@plugins/english/SalmonLatte[madara]';
-import p_92 from '@plugins/english/SleepyTranslations[madara]';
-import p_93 from '@plugins/english/SonicMTL[madara]';
-import p_94 from '@plugins/english/SrankManga[madara]';
-import p_95 from '@plugins/english/StorySeedling';
-import p_96 from '@plugins/english/SweetEscape[madara]';
-import p_97 from '@plugins/english/SystemTranslation[lightnovelwp]';
-import p_98 from '@plugins/english/TranslatinOtaku[madara]';
-import p_99 from '@plugins/english/TranslationWeaver[lightnovelwp]';
-import p_100 from '@plugins/english/UniversalNovel[lightnovelwp]';
-import p_101 from '@plugins/english/VandyTranslate[lightnovelwp]';
-import p_102 from '@plugins/english/VioletLily[madara]';
-import p_103 from '@plugins/english/WebNovelLover[madara]';
-import p_104 from '@plugins/english/WebNovelPub[lightnovelworld]';
-import p_105 from '@plugins/english/WebNovelTranslation[madara]';
-import p_106 from '@plugins/english/WhiteMoonlightNovels[lightnovelwp]';
-import p_107 from '@plugins/english/WooksTeahouse[madara]';
-import p_108 from '@plugins/english/WordExcerpt[madara]';
-import p_109 from '@plugins/english/WuxiaSpace[readwn]';
-import p_110 from '@plugins/english/WuxiaV[readwn]';
-import p_111 from '@plugins/english/WuxiaWorldSite[madara]';
-import p_112 from '@plugins/english/Wuxiabox[readwn]';
-import p_113 from '@plugins/english/Wuxiafox[readwn]';
-import p_114 from '@plugins/english/ZetroTranslation[madara]';
-import p_115 from '@plugins/english/ao3';
-import p_116 from '@plugins/english/chrysanthemumgarden';
-import p_117 from '@plugins/english/crimsonscrolls';
-import p_118 from '@plugins/english/divinedaolibrary';
-import p_119 from '@plugins/english/dreambigtl';
-import p_120 from '@plugins/english/faqwikius';
-import p_121 from '@plugins/english/fenrirrealm';
-import p_122 from '@plugins/english/fictionzone';
-import p_123 from '@plugins/english/foxteller';
-import p_124 from '@plugins/english/genesis';
-import p_125 from '@plugins/english/indraTranslations';
-import p_126 from '@plugins/english/inkitt';
-import p_127 from '@plugins/english/inoveltranslation';
-import p_128 from '@plugins/english/leafstudio';
-import p_129 from '@plugins/english/lightnoveltranslation';
-import p_130 from '@plugins/english/lnmtl';
-import p_131 from '@plugins/english/mvlempyr';
-import p_132 from '@plugins/english/novelbuddy';
-import p_133 from '@plugins/english/novelfire';
-import p_134 from '@plugins/english/novelhall';
-import p_135 from '@plugins/english/novelhi';
-import p_136 from '@plugins/english/novelight';
-import p_137 from '@plugins/english/novelrest';
-import p_138 from '@plugins/english/novelupdates';
-import p_139 from '@plugins/english/pawread';
-import p_140 from '@plugins/english/rainofsnow';
-import p_141 from '@plugins/english/readfrom';
-import p_142 from '@plugins/english/relibrary';
-import p_143 from '@plugins/english/royalroad';
-import p_144 from '@plugins/english/scribblehub';
-import p_145 from '@plugins/english/vynovel';
-import p_146 from '@plugins/english/wct';
-import p_147 from '@plugins/english/webnovel';
-import p_148 from '@plugins/english/wtrlab';
-import p_149 from '@plugins/english/wuxiaworld';
-import p_150 from '@plugins/french/LighNovelFR[lightnovelwp]';
-import p_151 from '@plugins/french/MTLNovel(FR)[mtlnovel]';
-import p_152 from '@plugins/french/MassNovel[madara]';
-import p_153 from '@plugins/french/WorldNovel[madara]';
-import p_154 from '@plugins/french/chireads';
-import p_155 from '@plugins/french/harkeneliwood';
-import p_156 from '@plugins/french/kisswood';
-import p_157 from '@plugins/french/noveldeglace';
-import p_158 from '@plugins/french/novhell';
-import p_159 from '@plugins/french/warriorlegendtrad';
-import p_160 from '@plugins/french/wuxialnscantrad';
-import p_161 from '@plugins/french/xiaowaz';
-import p_162 from '@plugins/indonesian/BacaLightNovel[lightnovelwp]';
-import p_163 from '@plugins/indonesian/MTLNovel(ID)[mtlnovel]';
-import p_164 from '@plugins/indonesian/MeioNovel[madara]';
-import p_165 from '@plugins/indonesian/NovelBookID[madara]';
-import p_166 from '@plugins/indonesian/SekteNovel[lightnovelwp]';
-import p_167 from '@plugins/indonesian/Vanovel[madara]';
-import p_168 from '@plugins/indonesian/WBNovel[madara]';
-import p_169 from '@plugins/indonesian/indowebnovel';
-import p_170 from '@plugins/indonesian/sakuranovel';
-import p_171 from '@plugins/japanese/Syosetu';
-import p_172 from '@plugins/japanese/kakuyomu';
-import p_173 from '@plugins/korean/Agitoon';
-import p_174 from '@plugins/korean/FortuneEternal[madara]';
-import p_175 from '@plugins/multi/komga';
-import p_176 from '@plugins/polish/novelki';
-import p_177 from '@plugins/portuguese/BetterNovels[lightnovelwp]';
-import p_178 from '@plugins/portuguese/CentralNovel[lightnovelwp]';
-import p_179 from '@plugins/portuguese/Kiniga[madara]';
-import p_180 from '@plugins/portuguese/LaNovels[hotnovelpub]';
-import p_181 from '@plugins/portuguese/LightNovelBrasil[lightnovelwp]';
-import p_182 from '@plugins/portuguese/MTLNovel(PT)[mtlnovel]';
-import p_183 from '@plugins/portuguese/blogdoamonnovels';
-import p_184 from '@plugins/portuguese/illusia';
-import p_185 from '@plugins/portuguese/novelmania';
-import p_186 from '@plugins/portuguese/tsundoku';
-import p_187 from '@plugins/russian/Bllate[rulate]';
-import p_188 from '@plugins/russian/Bookhamster[ifreedom]';
-import p_189 from '@plugins/russian/Erolate[rulate]';
-import p_190 from '@plugins/russian/EzNovels[hotnovelpub]';
-import p_191 from '@plugins/russian/MTLNovel(RU)[mtlnovel]';
-import p_192 from '@plugins/russian/NovelCool(RU)[novelcool]';
-import p_193 from '@plugins/russian/Ranobes(RU)[ranobes]';
-import p_194 from '@plugins/russian/Rulate[rulate]';
-import p_195 from '@plugins/russian/authortoday';
-import p_196 from '@plugins/russian/bookriver';
-import p_197 from '@plugins/russian/ficbook';
-import p_198 from '@plugins/russian/jaomix';
-import p_199 from '@plugins/russian/neobook';
-import p_200 from '@plugins/russian/novelTL';
-import p_201 from '@plugins/russian/ranobehub';
-import p_202 from '@plugins/russian/ranobelib';
-import p_203 from '@plugins/russian/ranoberf';
-import p_204 from '@plugins/russian/renovels';
-import p_205 from '@plugins/russian/topliba';
-import p_206 from '@plugins/russian/zelluloza';
-import p_207 from '@plugins/russian/СвободныйМирРанобэ[ifreedom]';
-import p_208 from '@plugins/spanish/AllNovelRead[lightnovelwp]';
-import p_209 from '@plugins/spanish/AnimesHoy12[madara]';
-import p_210 from '@plugins/spanish/LightNovelDaily[hotnovelpub]';
-import p_211 from '@plugins/spanish/MTLNovel(ES)[mtlnovel]';
-import p_212 from '@plugins/spanish/NOVA';
-import p_213 from '@plugins/spanish/PanchoTranslations[madara]';
-import p_214 from '@plugins/spanish/TC&Sega[lightnovelwp]';
-import p_215 from '@plugins/spanish/TraduccionesAmistosas[madara]';
-import p_216 from '@plugins/spanish/hasutl';
-import p_217 from '@plugins/spanish/novelasligera';
-import p_218 from '@plugins/spanish/novelawuxia';
-import p_219 from '@plugins/spanish/novelyra';
-import p_220 from '@plugins/spanish/oasistranslations';
-import p_221 from '@plugins/spanish/skynovels';
-import p_222 from '@plugins/spanish/tunovelaligera';
-import p_223 from '@plugins/spanish/yukitls';
-import p_224 from '@plugins/thai/NovelLucky[madara]';
-import p_225 from '@plugins/thai/NovelPDF[madara]';
-import p_226 from '@plugins/turkish/ArazNovel[madara]';
-import p_227 from '@plugins/turkish/EKTAPLAR[madara]';
-import p_228 from '@plugins/turkish/KodeksLibrary[lightnovelwp]';
-import p_229 from '@plugins/turkish/MangaTR';
-import p_230 from '@plugins/turkish/NABSCANS[madara]';
-import p_231 from '@plugins/turkish/Namevt[lightnovelwp]';
-import p_232 from '@plugins/turkish/NovelTR[lightnovelwp]';
-import p_233 from '@plugins/turkish/Noveloku[madara]';
-import p_234 from '@plugins/turkish/RagnarScans[madara]';
-import p_235 from '@plugins/turkish/ThNovels[hotnovelpub]';
-import p_236 from '@plugins/turkish/TurkceLightNovels[madara]';
-import p_237 from '@plugins/turkish/WebNovelOku[madara]';
-import p_238 from '@plugins/turkish/epiknovel';
-import p_239 from '@plugins/turkish/kakikata[madara]';
-import p_240 from '@plugins/ukrainian/bakainua';
-import p_241 from '@plugins/ukrainian/smakolykytl';
-import p_242 from '@plugins/vietnamese/LNHako';
-import p_243 from '@plugins/vietnamese/lightnovelvn';
-import p_244 from '@plugins/vietnamese/nettruyen';
+import p_26 from '@plugins/english/CherryMistCafe[fictioneer]';
+import p_27 from '@plugins/english/CitrusAurora[madara]';
+import p_28 from '@plugins/english/CoralBoutique[madara]';
+import p_29 from '@plugins/english/DaoNovel[madara]';
+import p_30 from '@plugins/english/DaoTranslate[lightnovelwp]';
+import p_31 from '@plugins/english/DaoistQuest[fictioneer]';
+import p_32 from '@plugins/english/DearestRosalie[fictioneer]';
+import p_33 from '@plugins/english/DragonTea[madara]';
+import p_34 from '@plugins/english/Dragonholic[madara]';
+import p_35 from '@plugins/english/DuskBlossoms[madara]';
+import p_36 from '@plugins/english/ElloTL[lightnovelwp]';
+import p_37 from '@plugins/english/Eternalune[madara]';
+import p_38 from '@plugins/english/EtudeTranslations[madara]';
+import p_39 from '@plugins/english/FanNovel[readwn]';
+import p_40 from '@plugins/english/FansMTL[readwn]';
+import p_41 from '@plugins/english/FansTranslations[madara]';
+import p_42 from '@plugins/english/FirstKissNovel[madara]';
+import p_43 from '@plugins/english/Foxaholic[madara]';
+import p_44 from '@plugins/english/FreeWebNovel[readnovelfull]';
+import p_45 from '@plugins/english/GalaxyTranslations[madara]';
+import p_46 from '@plugins/english/Guavaread[madara]';
+import p_47 from '@plugins/english/HiraethTranslation[madara]';
+import p_48 from '@plugins/english/HotNovelPub[hotnovelpub]';
+import p_49 from '@plugins/english/Ippotranslations[lightnovelwp]';
+import p_50 from '@plugins/english/KDTNovels[lightnovelwp]';
+import p_51 from '@plugins/english/KeopiTranslations[lightnovelwp]';
+import p_52 from '@plugins/english/KnoxT[lightnovelwp]';
+import p_53 from '@plugins/english/LazyGirlTranslations[lightnovelwp]';
+import p_54 from '@plugins/english/LibRead[readnovelfull]';
+import p_55 from '@plugins/english/LightNovelCave[lightnovelworld]';
+import p_56 from '@plugins/english/LightNovelHeaven[madara]';
+import p_57 from '@plugins/english/LightNovelPlus[readnovelfull]';
+import p_58 from '@plugins/english/LightNovelPubVip[lightnovelworld]';
+import p_59 from '@plugins/english/LightNovelUpdates[madara]';
+import p_60 from '@plugins/english/LilyontheValley[fictioneer]';
+import p_61 from '@plugins/english/Ltnovel[readwn]';
+import p_62 from '@plugins/english/LulloBox[madara]';
+import p_63 from '@plugins/english/LunarLetters[madara]';
+import p_64 from '@plugins/english/MTLNovel[madara]';
+import p_65 from '@plugins/english/MTLNovel[mtlnovel]';
+import p_66 from '@plugins/english/Meownovel[madara]';
+import p_67 from '@plugins/english/MoonlightNovels[lightnovelwp]';
+import p_68 from '@plugins/english/MostNovel[madara]';
+import p_69 from '@plugins/english/MysticalSeries[madara]';
+import p_70 from '@plugins/english/NeoSekaiTranslations[madara]';
+import p_71 from '@plugins/english/NitroManga[madara]';
+import p_72 from '@plugins/english/NobleMTL[lightnovelwp]';
+import p_73 from '@plugins/english/NoiceTranslations[madara]';
+import p_74 from '@plugins/english/NovelBin[readnovelfull]';
+import p_75 from '@plugins/english/NovelCool[novelcool]';
+import p_76 from '@plugins/english/NovelFull[readnovelfull]';
+import p_77 from '@plugins/english/NovelLib[fictioneer]';
+import p_78 from '@plugins/english/NovelMultiverse[madara]';
+import p_79 from '@plugins/english/NovelNinja[madara]';
+import p_80 from '@plugins/english/NovelOnline';
+import p_81 from '@plugins/english/NovelTranslate[madara]';
+import p_82 from '@plugins/english/NovelsKnight[lightnovelwp]';
+import p_83 from '@plugins/english/PandaMachineTranslations[lightnovelwp]';
+import p_84 from '@plugins/english/PastelTales[madara]';
+import p_85 from '@plugins/english/PenguinSquad[fictioneer]';
+import p_86 from '@plugins/english/Prizma[fictioneer]';
+import p_87 from '@plugins/english/Ranobes[ranobes]';
+import p_88 from '@plugins/english/Ranovel[madara]';
+import p_89 from '@plugins/english/ReadFanfic[madara]';
+import p_90 from '@plugins/english/ReadNovelFull[readnovelfull]';
+import p_91 from '@plugins/english/RequiemTranslations[lightnovelwp]';
+import p_92 from '@plugins/english/SalmonLatte[madara]';
+import p_93 from '@plugins/english/SleepyTranslations[madara]';
+import p_94 from '@plugins/english/SonicMTL[madara]';
+import p_95 from '@plugins/english/SrankManga[madara]';
+import p_96 from '@plugins/english/StorySeedling';
+import p_97 from '@plugins/english/SweetEscape[madara]';
+import p_98 from '@plugins/english/SystemTranslation[lightnovelwp]';
+import p_99 from '@plugins/english/TranslatinOtaku[madara]';
+import p_100 from '@plugins/english/TranslationWeaver[lightnovelwp]';
+import p_101 from '@plugins/english/UniversalNovel[lightnovelwp]';
+import p_102 from '@plugins/english/VandyTranslate[lightnovelwp]';
+import p_103 from '@plugins/english/VioletLily[madara]';
+import p_104 from '@plugins/english/WebNovelLover[madara]';
+import p_105 from '@plugins/english/WebNovelPub[lightnovelworld]';
+import p_106 from '@plugins/english/WebNovelTranslation[madara]';
+import p_107 from '@plugins/english/WhiteMoonlightNovels[lightnovelwp]';
+import p_108 from '@plugins/english/WooksTeahouse[madara]';
+import p_109 from '@plugins/english/WordExcerpt[madara]';
+import p_110 from '@plugins/english/WuxiaSpace[readwn]';
+import p_111 from '@plugins/english/WuxiaV[readwn]';
+import p_112 from '@plugins/english/WuxiaWorldSite[madara]';
+import p_113 from '@plugins/english/Wuxiabox[readwn]';
+import p_114 from '@plugins/english/Wuxiafox[readwn]';
+import p_115 from '@plugins/english/ZetroTranslation[madara]';
+import p_116 from '@plugins/english/ao3';
+import p_117 from '@plugins/english/chrysanthemumgarden';
+import p_118 from '@plugins/english/crimsonscrolls';
+import p_119 from '@plugins/english/divinedaolibrary';
+import p_120 from '@plugins/english/dreambigtl';
+import p_121 from '@plugins/english/faqwikius';
+import p_122 from '@plugins/english/fenrirrealm';
+import p_123 from '@plugins/english/fictionzone';
+import p_124 from '@plugins/english/foxteller';
+import p_125 from '@plugins/english/genesis';
+import p_126 from '@plugins/english/indraTranslations';
+import p_127 from '@plugins/english/inkitt';
+import p_128 from '@plugins/english/inoveltranslation';
+import p_129 from '@plugins/english/leafstudio';
+import p_130 from '@plugins/english/lightnoveltranslation';
+import p_131 from '@plugins/english/lnmtl';
+import p_132 from '@plugins/english/mvlempyr';
+import p_133 from '@plugins/english/novelbuddy';
+import p_134 from '@plugins/english/novelfire';
+import p_135 from '@plugins/english/novelhall';
+import p_136 from '@plugins/english/novelhi';
+import p_137 from '@plugins/english/novelight';
+import p_138 from '@plugins/english/novelrest';
+import p_139 from '@plugins/english/novelupdates';
+import p_140 from '@plugins/english/pawread';
+import p_141 from '@plugins/english/rainofsnow';
+import p_142 from '@plugins/english/readfrom';
+import p_143 from '@plugins/english/relibrary';
+import p_144 from '@plugins/english/royalroad';
+import p_145 from '@plugins/english/scribblehub';
+import p_146 from '@plugins/english/vynovel';
+import p_147 from '@plugins/english/wct';
+import p_148 from '@plugins/english/webnovel';
+import p_149 from '@plugins/english/wtrlab';
+import p_150 from '@plugins/english/wuxiaworld';
+import p_151 from '@plugins/french/LighNovelFR[lightnovelwp]';
+import p_152 from '@plugins/french/MTLNovel(FR)[mtlnovel]';
+import p_153 from '@plugins/french/MassNovel[madara]';
+import p_154 from '@plugins/french/WorldNovel[madara]';
+import p_155 from '@plugins/french/chireads';
+import p_156 from '@plugins/french/harkeneliwood';
+import p_157 from '@plugins/french/kisswood';
+import p_158 from '@plugins/french/noveldeglace';
+import p_159 from '@plugins/french/novhell';
+import p_160 from '@plugins/french/warriorlegendtrad';
+import p_161 from '@plugins/french/wuxialnscantrad';
+import p_162 from '@plugins/french/xiaowaz';
+import p_163 from '@plugins/indonesian/BacaLightNovel[lightnovelwp]';
+import p_164 from '@plugins/indonesian/MTLNovel(ID)[mtlnovel]';
+import p_165 from '@plugins/indonesian/MeioNovel[madara]';
+import p_166 from '@plugins/indonesian/NovelBookID[madara]';
+import p_167 from '@plugins/indonesian/SekteNovel[lightnovelwp]';
+import p_168 from '@plugins/indonesian/Vanovel[madara]';
+import p_169 from '@plugins/indonesian/WBNovel[madara]';
+import p_170 from '@plugins/indonesian/indowebnovel';
+import p_171 from '@plugins/indonesian/sakuranovel';
+import p_172 from '@plugins/japanese/Syosetu';
+import p_173 from '@plugins/japanese/kakuyomu';
+import p_174 from '@plugins/korean/Agitoon';
+import p_175 from '@plugins/korean/FortuneEternal[madara]';
+import p_176 from '@plugins/multi/komga';
+import p_177 from '@plugins/polish/novelki';
+import p_178 from '@plugins/portuguese/BetterNovels[lightnovelwp]';
+import p_179 from '@plugins/portuguese/CentralNovel[lightnovelwp]';
+import p_180 from '@plugins/portuguese/Kiniga[madara]';
+import p_181 from '@plugins/portuguese/LaNovels[hotnovelpub]';
+import p_182 from '@plugins/portuguese/LightNovelBrasil[lightnovelwp]';
+import p_183 from '@plugins/portuguese/MTLNovel(PT)[mtlnovel]';
+import p_184 from '@plugins/portuguese/blogdoamonnovels';
+import p_185 from '@plugins/portuguese/illusia';
+import p_186 from '@plugins/portuguese/novelmania';
+import p_187 from '@plugins/portuguese/tsundoku';
+import p_188 from '@plugins/russian/Bllate[rulate]';
+import p_189 from '@plugins/russian/Bookhamster[ifreedom]';
+import p_190 from '@plugins/russian/Erolate[rulate]';
+import p_191 from '@plugins/russian/EzNovels[hotnovelpub]';
+import p_192 from '@plugins/russian/MTLNovel(RU)[mtlnovel]';
+import p_193 from '@plugins/russian/NovelCool(RU)[novelcool]';
+import p_194 from '@plugins/russian/Ranobes(RU)[ranobes]';
+import p_195 from '@plugins/russian/Rulate[rulate]';
+import p_196 from '@plugins/russian/authortoday';
+import p_197 from '@plugins/russian/bookriver';
+import p_198 from '@plugins/russian/ficbook';
+import p_199 from '@plugins/russian/jaomix';
+import p_200 from '@plugins/russian/neobook';
+import p_201 from '@plugins/russian/novelTL';
+import p_202 from '@plugins/russian/ranobehub';
+import p_203 from '@plugins/russian/ranobelib';
+import p_204 from '@plugins/russian/ranoberf';
+import p_205 from '@plugins/russian/renovels';
+import p_206 from '@plugins/russian/topliba';
+import p_207 from '@plugins/russian/zelluloza';
+import p_208 from '@plugins/russian/СвободныйМирРанобэ[ifreedom]';
+import p_209 from '@plugins/spanish/AllNovelRead[lightnovelwp]';
+import p_210 from '@plugins/spanish/AnimesHoy12[madara]';
+import p_211 from '@plugins/spanish/LightNovelDaily[hotnovelpub]';
+import p_212 from '@plugins/spanish/MTLNovel(ES)[mtlnovel]';
+import p_213 from '@plugins/spanish/NOVA';
+import p_214 from '@plugins/spanish/PanchoTranslations[madara]';
+import p_215 from '@plugins/spanish/TC&Sega[lightnovelwp]';
+import p_216 from '@plugins/spanish/TraduccionesAmistosas[madara]';
+import p_217 from '@plugins/spanish/hasutl';
+import p_218 from '@plugins/spanish/novelasligera';
+import p_219 from '@plugins/spanish/novelawuxia';
+import p_220 from '@plugins/spanish/novelyra';
+import p_221 from '@plugins/spanish/oasistranslations';
+import p_222 from '@plugins/spanish/skynovels';
+import p_223 from '@plugins/spanish/tunovelaligera';
+import p_224 from '@plugins/spanish/yukitls';
+import p_225 from '@plugins/thai/NovelLucky[madara]';
+import p_226 from '@plugins/thai/NovelPDF[madara]';
+import p_227 from '@plugins/turkish/ArazNovel[madara]';
+import p_228 from '@plugins/turkish/EKTAPLAR[madara]';
+import p_229 from '@plugins/turkish/KodeksLibrary[lightnovelwp]';
+import p_230 from '@plugins/turkish/MangaTR';
+import p_231 from '@plugins/turkish/NABSCANS[madara]';
+import p_232 from '@plugins/turkish/Namevt[lightnovelwp]';
+import p_233 from '@plugins/turkish/NovelTR[lightnovelwp]';
+import p_234 from '@plugins/turkish/Noveloku[madara]';
+import p_235 from '@plugins/turkish/RagnarScans[madara]';
+import p_236 from '@plugins/turkish/ThNovels[hotnovelpub]';
+import p_237 from '@plugins/turkish/TurkceLightNovels[madara]';
+import p_238 from '@plugins/turkish/WebNovelOku[madara]';
+import p_239 from '@plugins/turkish/epiknovel';
+import p_240 from '@plugins/turkish/kakikata[madara]';
+import p_241 from '@plugins/ukrainian/bakainua';
+import p_242 from '@plugins/ukrainian/smakolykytl';
+import p_243 from '@plugins/vietnamese/LNHako';
+import p_244 from '@plugins/vietnamese/lightnovelvn';
+import p_245 from '@plugins/vietnamese/nettruyen';
 
 const PLUGINS: Plugin.PluginBase[] = [
   p_0,
@@ -491,5 +492,6 @@ const PLUGINS: Plugin.PluginBase[] = [
   p_242,
   p_243,
   p_244,
+  p_245,
 ];
 export default PLUGINS;
diff --git a/plugins/multisrc/fictioneer/custom/cherrymistcafe/chapterTransform.js b/plugins/multisrc/fictioneer/custom/cherrymistcafe/chapterTransform.js
new file mode 100644
index 000000000..0f309828d
--- /dev/null
+++ b/plugins/multisrc/fictioneer/custom/cherrymistcafe/chapterTransform.js
@@ -0,0 +1,46 @@
+    const ghostScript = loadedCheerio('script[id*=ghost]');
+    const contentHost = loadedCheerio('#cherry-content-host');
+
+    if (ghostScript.length && contentHost.length) {
+      const poly = ghostScript.attr('data-poly');
+      // data-poly attr provide id
+      // encoded text is stored in attr data-{id}-{number}
+      // create full string of all the data-poly-nums
+      const encoded = Array.from(
+        { length: +ghostScript.attr('data-total') || 0 },
+        (_, i) => ghostScript.attr(`data-${poly}-${i}`) || '',
+      ).join('');
+
+      // technically copypasta from source
+      // var c = s.charCodeAt(i);
+      // if(c>=65 && c<=90)
+      //    o+=String.fromCharCode((c-65+13)%26+65);
+      // else if(c>=97&&c<=122)
+      //    o+=String.fromCharCode((c-97+13)%26+97);
+      // else
+      //    o+=s.charAt(i);
+      if (encoded) {
+        const rot13 = (str) => {
+          return str.replace(/[a-zA-Z]/g, (char) => {
+            const base = char <= 'Z' ? 65 : 97;
+            const shift = ((char.charCodeAt(0) - base + 13) % 26) + base;
+            return String.fromCharCode(shift);
+          });
+        };
+        contentHost.replaceWith(decodeURIComponent(atob(rot13(encoded))));
+      }
+    }
+
+    loadedCheerio('script, ruby').remove();
+
+    loadedCheerio('section#chapter-content p [data-fcnc-rev="1"]').each((_, el) => {
+      const text = loadedCheerio(el).text().trim();
+      if (text) loadedCheerio(el).replaceWith([...text].reverse().join(''));
+    });
+
+    return (
+      loadedCheerio('section#chapter-content > div')
+        .html()
+        ?.replace(/\u00A0/g, ' ')
+        ?.replace(/[\u2060\u00AD\u202F\u2007\u200B]/g, '') || ''
+    );
diff --git a/plugins/multisrc/fictioneer/sources.json b/plugins/multisrc/fictioneer/sources.json
index 7e0cb86b5..06cc73009 100644
--- a/plugins/multisrc/fictioneer/sources.json
+++ b/plugins/multisrc/fictioneer/sources.json
@@ -53,5 +53,17 @@
       "down": true,
       "downSince": 1768289212907
     }
+  },
+  {
+    "id": "cherrymistcafe",
+    "sourceSite": "https://cherrymist.cafe/",
+    "sourceName": "Cherry Mist Cafe",
+    "options": {
+      "customJs": {
+        "chapterTransform": "custom/cherrymistcafe/chapterTransform.js"
+      },
+      "versionIncrements": 1,
+      "browsePage": "stories"
+    }
   }
 ]
diff --git a/public/static/multisrc/fictioneer/cherrymistcafe/icon.png b/public/static/multisrc/fictioneer/cherrymistcafe/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..bf7eecd3d80ebe850de0a171ba2070b1b0feda7c
GIT binary patch
literal 4879
zcmV+q6Y%VbP)<h;3K|Lk000e1NJLTq003YB003YJ0{{R3)kcR300093P)t-sM{rDG
zM>ASKDqce_U_vlqM>1JJDpL;+U_>!oM=)SUGVkES&AFb@z@=YAFQ&1QT|+PN=FHK^
zv0p?lWlcDAT}W+JKxIrferZ#2TSTtVt7l6$h<|2RJt%QmMVy;~_wn1Ll6qc4E`DcF
zx~r1Nv5u{zkfp1To0EKsgKLwDag}>wlznH_#;muYh{(5`qK$KcW>DVFu*JEgduC5}
zWKF=ss&QLJsG*00cVMrWe4dAI_vXc=jCNy5HJF2I!LOBtZB)y^q_v`nor!Xzm4AeD
zT;kQcyRw{$b6u02f4r=dxUH0?nSXU;O{%e$b!}9Njd6~IY<OQw%f6+Aaaw9jIGliH
zy|kXKx|@-EXJ$$?m8OT!+rX>4oy^6uubY8)UPi3KqlJ-jn3{k6+^YTEtNz@o{@two
z-L3uJuKwMt{ob$r-?9GNs{8WS{@=0o$EnTd<@Lp>`_`)b=fnNrvy{V{`|;HL?97+L
zn*HIm{O-{E^W6LI(*4@1{O!*D<-PL0sq?|9_sXg8xTpHms`$;R{obzn(W?CE#_+nR
z{Oij4@Y(s!s`0z1`}N)Y+^qfLxcm3v{N1gUz?ki@r~2>K@3yDzv!|Albc?Bkk-C!m
z^V<F7y7}3t{M)LZ$Di)cpr4d?jIW8K%A}CBj`rxxs+Dx})TR0C)rXmO-@%l_qkpK(
zr;&hVbYDh-hG@pux#`%xgp+dj+`!JRhKHno!qc?C*tm+0Z`it#w7;R^$FYHqZM)U9
zlAwIKvY6E3#;}@ww8*IJtERTovFhQ;_SnX=(5=R)g7)mt^6JyjwT<`NvVnSDkcw-p
z!l3%<&%VsAw3&6pvzPba%jn9U+~UZ)qkrPkw$|Cj_ROxPh--(Se97Iwpud}%h-mZ6
zy2jz#<;0r6tBBmer?IGu;n%>LyOq=F<l5@v`PQ_$)yeqLu(!#>ouh{Q-K^=<vF7R7
z;Ns8q(!Qpqn%U94*1enb(XxtjS>d;r;_l<_$D(y`R@<bQUUX&!0001GbW%=J051qc
z1RWs(6%Qx={rfrpUjF_~ZBb@)iI4uCygh&G{-=$Y{{HXy%hbTo;p+G4*53O4wK@G<
z{GaRR{`Y@)+i%m!iMxvS=Hd16wf%MXspF-|>c+PG_xnut=kMe9g3{9O-E$It-v9s)
zSxH1eRA}C{S_fDYS-Yl(Di&<m6?<Lm-L>ty?&|h(|9<a3Gdpu<HpWzvkU|1H2@yyD
z>Afl_RTM<PvbME=1;yUW>bkPKZvFrN-tWvL0bMi^pFR4R5HjC;zV@E?oTG~i8a$rM
zA2#|0%^x~x(xmqX4RrVN_#*)R8eCXdxIOqt-Cvf!{eF<UkAtuCW{+C6(wlql;qB?f
zl#Vp*s$%~f4Boyy_`fHNnf-!?c%JWvCd*XIJmJ01%H?mo@wTr+fQj=52hHt2AZYmN
zNh9W5tP2kQY?Qm(^S<o5tXM3On2INPxb$Cs$|zRJrp|T*V4E+G$8&Riebu<X)CC6)
zb$yQg50w@S!xbifuh~;IT8xkwmCM~;E+wA5XY{>#aQ*7;a^by9qreCPr^Od~FH>c~
zTY?fVTKbYn=XtnK>btLL;;`TS#%)xw7E`O$X4>TUk3J?G0e}zFeO|h-Jo-(zc=gW%
zpYffy)K83wqN8KgwCSsSnFYtbPy>Rcc)&{o@OVDM*Y0b5*ZZjt`-O@rkw7TaN71I@
zy-La~G8jYzL2E|!s6B>Fyx26UYYlp>FiJ2%M1)QlONSi`Fyf+Uy*^g0#!SoHdW7Kp
z?wqPF2)w0>ELfB-GBQpV#e^NYm(^hq>U2Vb8WV?l_N>KuL7!gzr@dZ%r$c~*F)1mL
zIuWh;=@4U%)x|~V^lD67{a-z%sd4*8SbgBVzDR)?B2rRQBXwq4*|(T9N9!VEA_O8L
zD|uy)dCGlU-2^W#V9Uj3wJ<Vub84i31;BIk5fCqdny`eg>M;Os*tmle*;?xFryvXw
zshc;a#>L{KX67PHjQ}EqYJ$o9)cY04eEgAFKqkDmjh_>SNU)!x6JfY<rWgQF#sT1S
zeqYy~19;4BI53#!;u~rq2z?3wL>hpMw0>EbNDz^d5~qVsQ2o^F6_yL$@Y8|)Tvm!n
zf`AmHrU=v+hA~=-P_qC+0MHzA9>Bxf%h$`(r|XK~Gj!K`o-4osLLV2I5+}mgK>z^y
z5kf?m`nWsUS_9sFZ^Zb|){h@CaZHf6eU<hd(KIU*@fyroXaLi!eS(ONh>MBP1AuX)
zGmXG=oj-n8U2EW5Z@o4CKvmu8^{WQhYNPjOfwu`3LBzfg9Ds=JWO$<;IoGj$pTXmg
z+<))gxwAceynXwvp0K{D>GX)fo*eX=Bl&rqhV4V7*GHjO%gFu??R!l;o%=uQeCz_o
z!*%tWRdrP(M*FyU3|||X)_R$>{|tg!&Auoc1Ncs?yAQ<nlsNJpG_R`a^n3ls+~aG{
z+%GM&yFe-w%u_g$t*<+Z&qoKZz5jd8bsgGJ*EBx=n1#rzOuC-KRS%|6WoGilU0orI
zS33Y$cOZADPq$q*;^2|imU9Ggrs&FXY<I00S|Bsw(7l8NV^<f%0WYpoufG=lvwJr2
zd3)Z0?YZ@3SYCZnd3HrbHjWubCgfKfO5ig@_Bpi`z#?1wLb6!BeSP=h#%<Kd;@gjN
z<;}I~l8h_0zx`&$adF>~AtA^5@+HK!Kh>%Y(P-7AOvOWAu&Vj|Ie31z+Sg<LA(<kl
zy;&}=sr{`n>3WPV+Kemi&Aj*1%wu8yOWeAAOK0t6Mict{Lh@O<Z%*&-GQb<~MkbP3
z+W?_-TX|CB|D^~;IBtwjNQhTbP*FJ%z<!$}VM!n?ss+!b>^Fb-=IX^2-5~Uu9xrAq
z=XkR`sq%7B#^n@U6p7PXrAdoECV^eQ{Bm<@1aup2svi72fPZbgd2{3Uzt=Y26T&s1
zt&piQKsZ^STbZgeP!vUyIDCeaq#*T67^!iHE-b2PUe5v8h{l6eyl0lOAs?jmrMce4
zu-bHa#>uAiZNeyuW@w7Uagw5NLn`M1Vkpv7J?KRMU;k~O&r^%Q%pV`z{PA+OnFS!!
z+tTHaPv?FTOCkW8MD|HMCyrf0^<SV;)hcJWy#Qe2gNqZoWU1H82S0whapRBMP&5ea
z3oPeMQDA;>+7^;xHXs0;Lch_+!IGorx`8y^dCs!)fJ6BDhoH{Smi+WB*xz`wJduqz
z1SvbewWTS&7ChL%dB8%8L?V!OU_K|W?0EaEb-lXVyL|us5C7Wu^~LYUby0BxS%8~2
zVag<z1$;~X$*QCh+y+3CR%(Tp>|5>mX@P;Q4Rb#2uAv4EA2{yfxFy58>QLW#Un2*;
zso!nJG3&Th(XhS63@*?l@*t7Rf6lqF`{xB72+qA<P;lV<hl9Fv0W?GJXLedXf0}~;
zzCC$AZMWG9fFDf@ZZ0EHo#K!K1gy?GT5@++Ra0R``p%4lKlEMcv`AeSQ1bYjjo-er
z`|g$Ik}Xz%?DD3fc9QJ_c3^oWA?NoMN~J{wMM=3=L&p03-Dz#{50#~?q~z!pGO;YJ
zsAV^|6p+_<$x9$aC@si-S;_f*+ojTsf+DH($lkHpnDcv`US~B7m`Fsy*iuqjQ<BXh
zoH-y*Gn3F~=!cG@^UfcXOEXFfq*CdDySE@ATEG5IYOT?JViW@uZL%ZhXywl9dB|pM
zU~Xd`n`0c$IllKiOn>LjBxHYoHU=9i#x%;g6A6zQVHS>UkSQ}(R$p+k3{ld&!kxP*
z8b|^+x9>e)D9zXj(UD49Z(GwOp6XPVdA)8MX%-+60brOp?_@z`Er#Xg7iNs5X_~>!
zN9XLzl@_tnmtJenwicRY(Lkp>82p_Wr4gdd+K0D!*V7x1Vma5hC$$3=F=TrK*e^(z
z%cauv(%XsFUcnjT3}<4*n=H;^9YC>QAH?zOlAWcs=JLX%d<1aoE>vfFkyI|<ndX0j
zw%Nxi@mXhty!Qg5!kPlxlO&mQIlXz?nOu1bBauk<LwR1wkjv%iXT@0(yL}wDeCN!b
zdDvJk1r$eg1nUgG<$6K=uh-<2j6`v6??IS9*e^J%wMZze6F^~_<pjXM?~LpNRH6+4
z0{|?qC8+`cPDr-gtz+#=(~nyej5Ulb0>+qTII(9Qvq;QM8}I4?RB263gS_U%iM>~I
z3ksz2q|%=yjI9p1(Lsu*yE>6$WfsBafU{4qNdRV3pQ&ufZQL@p3b;)wEl4}ZFjii&
zBVgLl-VOoW7RoG~#~n5RtOLhH|E}Fu5m?xGyrD_D^Gai7#c?yTO_H7V@eW+!H`wuk
z(KMNY<u)9%13)KyvOnbP-SYI(cdq7^mjC?AzjvRxye*q`j&;HMHHq;fhn?UWB4gP3
zU^Yzwy}WyW^^QlE9_>hLY&ckyw&RjOZxCgl%Xt={gE38Um}U2~D!MbM?1SgpcQa9X
zfk1HSPQ~fM%IZr(oiJL&*(6C$CvkIPjEfy^%KQ6s0G+AJIhu{BV}&sEzf_!-|EHRL
zE3(#?y&u^+HBNJQ4Cx-AA<=g`lZW!4Ht69jN(cbym3{)9K%kF;4HSk}2g(kBVU#Jr
zVV(91(6H7?(prFAo};26MEZvntygL;=)nO<f*R<Jfi>FN%c$sRQ-H%wc|U&*yAn`H
zBeLp;1rS9=!*Sh-Ut80YLLTb%(a}+GW<enUn(B-u85ZDhQ||7sq>-*d8j)dWZZihz
z5l-l$M2hmq8Pc>9hFF6Ll@NRf$qaim3CtAG&taMRYtXDn8i;_A&^C32&NJ26iSqiS
zr1Cpv5jwE|`>2;G%3emq=O)J<curF?=plHTVSp>`+gD^VulZzB^Pc@DI1*<N7m-~G
zmB5Yu!yHn@0;K{0PzZn_Z2(+|j|ZO2cqi=VpIKpK721d|Y#x}!{tnC3V-f%$?EvN}
zI{-JB{jK#ip(;~5XjU`>cB_EnxSfz_@og{1bbU&T^dW^(Yy;pp6VFQ9UfE()YIbY^
ziMoL$>yD=Y7~=xR;%lIvnB6F$y$lUWMsz{4{mK|0U;EE~rAlK`(2@-sSOH@j9Du?&
z+3}Tydw>ab0Erp_)ggM8M%9jsP4)LHF7Q=hCapvv*}zx>)MZJ?S~SLq1O9iE66686
zK%qFZf&|`^3YD_{+OH};UlS%)005hT4whA{Ah_|n*PW0pAE~k+HdG>F0dN652t7wL
zMp<$5wR{bquTmNTfODV&w=Vc-)uWALozX4B{luW(5=q2ltoni{VQ4k{J~h|UOe&d5
zX_7D~cwHzFWg4?+COdPH)hk59pk7AG%gU8dw-S>o^Q%UAi&CjlDZ{`ahTAW9YA2jD
z`7LoqI=W3(WkHA#5nH!1Kx?qUS7r98k>{(FGMOe!LeVw~;<^OMD2r;Dms8?2=z@{9
zmk7r0m?*}i;%D+}<Y~z&6<?`=X17UFD*${=Q@q+a{qD6uX`$@v0pc5q$^yHYeH!KE
zd=*MUmc29yn=Zh!WYc|JoEwAv#E8JmobQOwXroHT&-|)J-U3A=lc}_w6irxromL$h
z<m{EG@3b(+wgqPe7%qW%XJ+;(l|P0PJHX)1VZP`Dz;H2th4ZKIL#oAg-N@F8Rt6D5
z0QvFp03kDCPdk8_#j+2FIc?v?YoSTPK5PvHX@Y5ohx?Uggdl)S8-VRt5F?HJsdHUk
zVg&ia4FR0ITIVT28HkU+cO~suLOi%4GvQAmNW%D2gI?xNn&&ag&mvNbqR?qajvC8?
z41~vre|7d)LPDmD&zFT!T@fs*<Trc2<ej(Ynne$z44@<o2t*42@$um>_wabABEHN-
zb&8tLwW>oi++ALF3|rXt&=4)qM;ky+m^N(+2M-_-{7jVw8o|hND60e*qu<&=J-Njh
zwx;b;v>p(mqaU5xlo_5G9-f>GwWK<=HTjfSgho^p_$T%s)We&)B^MqE1$q#1`bS&A
z1N1jJdDEs-0I+oj;Ks(nWn=Wi;@5h1)d;mZ?M9qVs22(@?Lg+YqJK7RN(O+fTiY(_
zb==rdJ-Wv?P?Mj;#KG;TV2A&xsmE9Va3C4XC->R&i!K5NT(TVY@7+@Xm!LZ_DUmU8
zH`=CndM;hDw(p^1TM<BU_2R*kp9sNxWJ*dz+v1+zqIoX7k&==Ub9fI50?*rh-I!TZ
z7EbwK$dX>X0eddR!OdxE>W#M7Ug3XZj1IUFlXBzmn$9BhaC2iD%JY*aX#S~I^qvl%
z5B3~BT)nuvAb))4Mnoid*S6UG6#!hkhD=#AWLS43;Pu*`!%v>Hwe9)X&E=Jb$8#u#
z=k@XaJ8gdcuerMXL4)Vkd&rO>qrF`I$l(lu{y!$-XXB_YTx0+M002ovPDHLkV1l0x
B2<rd<

literal 0
HcmV?d00001

