Greasy Fork

Greasy Fork is available in English.

骟除ShanCu Text Filter (TF-IDF + SVM)

TF-IDF + SVM 过滤 约80% 吊子发言

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         骟除ShanCu Text Filter (TF-IDF + SVM)
// @namespace https://gitlab.com/6b4tmovet/shancu
// @version      1.0.0
// @description  TF-IDF + SVM 过滤 约80% 吊子发言 
// @match        *://*/*
// @grant        GM_getValue
// @grant        GM_setValue
// @license MIT
// ==/UserScript==


(function () {
    "use strict";
    
    const Storage = {
        get(key, defVal) {
            try {
                if (typeof GM_getValue === "function") {
                    return GM_getValue(key, defVal);
                }
            } catch (_) {}
            const v = localStorage.getItem("mltf_" + key);
            return v !== null ? JSON.parse(v) : defVal;
        },
        set(key, val) {
            try {
                if (typeof GM_setValue === "function") {
                    GM_setValue(key, val);
                    return;
                }
            } catch (_) {}
            localStorage.setItem("mltf_" + key, JSON.stringify(val));
        }
    };


    const TFIDF_MODEL = {"vocabulary": {" ": 0, " 2": 1, " 5": 2, " p": 3, " 一": 4, " 上": 5, " 下": 6, " 不": 7, " 之": 8, " 也": 9, " 买": 10, " 今": 11, " 他": 12, " 以": 13, " 会": 14, " 但": 15, " 你": 16, " 像": 17, " 其": 18, " 包": 19, " 原": 20, " 去": 21, " 又": 22, " 反": 23, " 发": 24, " 只": 25, " 可": 26, " 哈": 27, " 哪": 28, " 因": 29, " 图": 30, " 在": 31, " 大": 32, " 太": 33, " 奥": 34, " 女": 35, " 她": 36, " 好": 37, " 如": 38, " 姐": 39, " 学": 40, " 宝": 41, " 小": 42, " 就": 43, " 已": 44, " 并": 45, " 应": 46, " 当": 47, " 很": 48, " 怎": 49, " 想": 50, " 感": 51, " 我": 52, " 或": 53, " 所": 54, " 找": 55, " 是": 56, " 最": 57, " 有": 58, " 根": 59, " 每": 60, " 求": 61, " 没": 62, " 然": 63, " 现": 64, " 用": 65, " 的": 66, " 看": 67, " 真": 68, " 笑": 69, " 第": 70, " 结": 71, " 而": 72, " 能": 73, " 自": 74, " 要": 75, " 让": 76, " 说": 77, " 谢": 78, " 超": 79, " 还": 80, " 这": 81, " 那": 82, " 都": 83, " 长": 84, " 香": 85, "*": 86, ".": 87, "0": 88, "0 ": 89, "15": 90, "2 ": 91, "3 ": 92, "4": 93, "4 ": 94, "50": 95, "6": 96, "66": 97, "8": 98, "?": 99, "at": 100, "ds": 101, "e": 102, "g": 103, "go": 104, "i": 105, "in": 106, "is": 107, "mv": 108, "nb": 109, "oa": 110, "p": 111, "p1": 112, "p2": 113, "p3": 114, "ti": 115, "vp": 116, "yd": 117, "yy": 118, "“": 119, "”": 120, "…": 121, "……": 122, "、": 123, "。": 124, "。。": 125, "。我": 126, "一": 127, "一下": 128, "一人": 129, "一分": 130, "一套": 131, "一家": 132, "一张": 133, "一星": 134, "一样": 135, "一点": 136, "一直": 137, "一真": 138, "上": 139, "上将": 140, "上班": 141, "上衣": 142, "下": 143, "下 ": 144, "下次": 145, "不会": 146, "不听": 147, "不如": 148, "专": 149, "专业": 150, "且": 151, "业": 152, "东北": 153, "两": 154, "个": 155, "个 ": 156, "个小": 157, "个月": 158, "中": 159, "中分": 160, "中国": 161, "中神": 162, "么": 163, "么 ": 164, "么买": 165, "么呀": 166, "么样": 167, "之前": 168, "之后": 169, "乐": 170, "九月": 171, "也": 172, "也太": 173, "也好": 174, "也很": 175, "也想": 176, "也是": 177, "习": 178, "书": 179, "买": 180, "买 ": 181, "买了": 182, "买到": 183, "买的": 184, "乳": 185, "了": 186, "了 ": 187, "了。": 188, "了一": 189, "了哈": 190, "了这": 191, "了,": 192, "了?": 193, "事 ": 194, "五": 195, "五分": 196, "五星": 197, "些 ": 198, "享": 199, "享 ": 200, "亮": 201, "亮 ": 202, "人": 203, "人。": 204, "人,": 205, "什": 206, "什么": 207, "他": 208, "他家": 209, "以": 210, "以 ": 211, "以为": 212, "以用": 213, "以看": 214, "以问": 215, "们 ": 216, "件": 217, "价格": 218, "会": 219, "会不": 220, "伟": 221, "但": 222, "但是": 223, "住": 224, "佑": 225, "佑我": 226, "作": 227, "作者": 228, "你老": 229, "佬": 230, "便": 231, "便宜": 232, "保佑": 233, "俩": 234, "修": 235, "個": 236, "候": 237, "假": 238, "假的": 239, "做": 240, "做饭": 241, "像": 242, "兄": 243, "兄弟": 244, "公": 245, "六星": 246, "其实": 247, "养": 248, "写": 249, "军": 250, "冠": 251, "冠军": 252, "减": 253, "减肥": 254, "几": 255, "几天": 256, "出": 257, "分": 258, "分 ": 259, "分享": 260, "刚": 261, "利给": 262, "到": 263, "到 ": 264, "到了": 265, "到这": 266, "刷": 267, "刷到": 268, "券": 269, "前": 270, "剑": 271, "办": 272, "办 ": 273, "加油": 274, "包": 275, "包包": 276, "化妆": 277, "北": 278, "北人": 279, "医": 280, "午": 281, "卖": 282, "南": 283, "博主": 284, "卧": 285, "卧槽": 286, "原神": 287, "去": 288, "去 ": 289, "去吃": 290, "去年": 291, "去看": 292, "参": 293, "友": 294, "反同": 295, "发": 296, "发现": 297, "发给": 298, "叫什": 299, "可": 300, "可以": 301, "可爱": 302, "可能": 303, "史": 304, "右": 305, "吃": 306, "吃 ": 307, "吃了": 308, "吃的": 309, "合": 310, "同性": 311, "同款": 312, "名": 313, "名 ": 314, "名字": 315, "后": 316, "后 ": 317, "后续": 318, "吗": 319, "吗 ": 320, "吗?": 321, "君": 322, "吧 ": 323, "吧,": 324, "听自": 325, "呀": 326, "呀 ": 327, "呢 ": 328, "呢?": 329, "呵": 330, "咪": 331, "品": 332, "品 ": 333, "哇": 334, "哇 ": 335, "哈": 336, "哈 ": 337, "哈哈": 338, "哈好": 339, "哈我": 340, "哥": 341, "哦": 342, "哦 ": 343, "哪": 344, "哪买": 345, "哪家": 346, "哪里": 347, "售": 348, "唯": 349, "唯一": 350, "啊": 351, "啊 ": 352, "啊啊": 353, "啊宝": 354, "啊,": 355, "啦": 356, "啦 ": 357, "嘛": 358, "嘛 ": 359, "嘞": 360, "嘟": 361, "因": 362, "因为": 363, "国女": 364, "国庆": 365, "国男": 366, "图": 367, "图 ": 368, "图1": 369, "图一": 370, "圣": 371, "圣人": 372, "在": 373, "在哪": 374, "地址": 375, "地域": 376, "圳": 377, "圾": 378, "坤": 379, "垃": 380, "垃圾": 381, "型": 382, "域黑": 383, "基佬": 384, "填": 385, "复": 386, "复 ": 387, "外卖": 388, "外套": 389, "多": 390, "多 ": 391, "多少": 392, "多言": 393, "大家": 394, "天": 395, "天 ": 396, "天呐": 397, "天气": 398, "天都": 399, "太": 400, "太可": 401, "头发": 402, "套": 403, "奥": 404, "奥利": 405, "女": 406, "女主": 407, "女人": 408, "女性": 409, "女拳": 410, "女权": 411, "女的": 412, "奶": 413, "奶茶": 414, "她": 415, "她 ": 416, "她的": 417, "好": 418, "好 ": 419, "好会": 420, "好像": 421, "好可": 422, "好吃": 423, "好喜": 424, "好多": 425, "好奇": 426, "好想": 427, "好有": 428, "好棒": 429, "好漂": 430, "好看": 431, "好美": 432, "好评": 433, "好难": 434, "好,": 435, "妆": 436, "妈妈": 437, "妹": 438, "妹 ": 439, "妹们": 440, "妹你": 441, "姐": 442, "姐 ": 443, "姐妹": 444, "姐姐": 445, "婆": 446, "嬛": 447, "子": 448, "子 ": 449, "子链": 450, "子,": 451, "字": 452, "字体": 453, "学": 454, "学习": 455, "完": 456, "完结": 457, "定": 458, "宜": 459, "宝": 460, "宝 ": 461, "宝子": 462, "宝宝": 463, "实力": 464, "家": 465, "家 ": 466, "家店": 467, "家的": 468, "家里": 469, "对 ": 470, "对方": 471, "将": 472, "小": 473, "小丑": 474, "小时": 475, "小红": 476, "少 ": 477, "少钱": 478, "就": 479, "巅": 480, "工": 481, "工作": 482, "左右": 483, "差评": 484, "己": 485, "已": 486, "已经": 487, "帅": 488, "帮忙": 489, "常 ": 490, "平时": 491, "床": 492, "店": 493, "店 ": 494, "店铺": 495, "式": 496, "式 ": 497, "弟": 498, "张": 499, "强": 500, "很": 501, "很多": 502, "得": 503, "得 ": 504, "得我": 505, "心动": 506, "必": 507, "必须": 508, "忙": 509, "怎": 510, "怎么": 511, "怕 ": 512, "性": 513, "性恋": 514, "怪鸽": 515, "恋": 516, "息": 517, "息 ": 518, "恶": 519, "恶心": 520, "想": 521, "想去": 522, "想吃": 523, "想知": 524, "想要": 525, "想问": 526, "感": 527, "感 ": 528, "感觉": 529, "我": 530, "我 ": 531, "我之": 532, "我也": 533, "我买": 534, "我以": 535, "我会": 536, "我去": 537, "我妈": 538, "我感": 539, "我爸": 540, "我真": 541, "我觉": 542, "我还": 543, "我这": 544, "我都": 545, "我靠": 546, "或": 547, "或者": 548, "战": 549, "战鹰": 550, "户": 551, "户名": 552, "房": 553, "所以": 554, "扑": 555, "找": 556, "护肤": 557, "拍": 558, "拍照": 559, "拍的": 560, "拳": 561, "按": 562, "换": 563, "掉": 564, "接": 565, "接 ": 566, "接吗": 567, "推": 568, "推荐": 569, "提": 570, "提前": 571, "搜": 572, "搭": 573, "支持": 574, "收": 575, "收藏": 576, "敌": 577, "救命": 578, "教程": 579, "文": 580, "文案": 581, "文科": 582, "斤": 583, "斤 ": 584, "新": 585, "族": 586, "无": 587, "无敌": 588, "无需": 589, "日有": 590, "日本": 591, "时": 592, "时候": 593, "时间": 594, "昏": 595, "昏 ": 596, "星": 597, "星 ": 598, "春": 599, "昨": 600, "昨天": 601, "是": 602, "是 ": 603, "是什": 604, "是哪": 605, "是啥": 606, "是的": 607, "晒": 608, "晕": 609, "晚": 610, "晚上": 611, "更": 612, "最": 613, "最喜": 614, "最强": 615, "最爱": 616, "最近": 617, "月": 618, "有": 619, "有推": 620, "有没": 621, "有点": 622, "有链": 623, "朋": 624, "朋友": 625, "服": 626, "服 ": 627, "期": 628, "本": 629, "本科": 630, "权": 631, "条": 632, "来": 633, "来 ": 634, "杰": 635, "果": 636, "柜": 637, "样": 638, "样 ": 639, "样,": 640, "案": 641, "梗不": 642, "槽": 643, "模": 644, "次": 645, "次 ": 646, "款": 647, "款 ": 648, "正的": 649, "正能": 650, "歧": 651, "歧视": 652, "母校": 653, "每": 654, "每天": 655, "比较": 656, "气": 657, "永": 658, "永远": 659, "求": 660, "没有": 661, "河": 662, "河南": 663, "油 ": 664, "法学": 665, "注": 666, "消": 667, "消息": 668, "深圳": 669, "港": 670, "滋": 671, "滋病": 672, "滚": 673, "满": 674, "满分": 675, "满昏": 676, "漂": 677, "漂亮": 678, "澳": 679, "点": 680, "点 ": 681, "点点": 682, "然": 683, "然后": 684, "然无": 685, "照": 686, "照片": 687, "燕": 688, "爱你": 689, "爱啊": 690, "爸": 691, "片": 692, "版 ": 693, "牌子": 694, "牛": 695, "牛逼": 696, "特别": 697, "猩": 698, "王": 699, "现": 700, "珠": 701, "球": 702, "理 ": 703, "甄": 704, "甄嬛": 705, "用": 706, "用 ": 707, "用吗": 708, "用户": 709, "甲": 710, "电话": 711, "男": 712, "男人": 713, "男性": 714, "男神": 715, "画": 716, "画的": 717, "瘦": 718, "瘦了": 719, "白色": 720, "的": 721, "的 ": 722, "的。": 723, "的吗": 724, "的呀": 725, "的哈": 726, "的哦": 727, "的好": 728, "的姐": 729, "的宝": 730, "的小": 731, "的店": 732, "的很": 733, "的感": 734, "的时": 735, "的猫": 736, "的神": 737, "的衣": 738, "的话": 739, "的,": 740, "的?": 741, "盒": 742, "直": 743, "看": 744, "看 ": 745, "看了": 746, "看到": 747, "看我": 748, "看着": 749, "看起": 750, "真正": 751, "真男": 752, "真的": 753, "真神": 754, "眼": 755, "着": 756, "着 ": 757, "睡": 758, "知道": 759, "码": 760, "研": 761, "硕": 762, "神": 763, "神 ": 764, "神中": 765, "秋": 766, "种": 767, "种 ": 768, "程": 769, "穿": 770, "穿搭": 771, "突": 772, "突然": 773, "童": 774, "童年": 775, "笑人": 776, "笑梗": 777, "笑死": 778, "笔": 779, "笔记": 780, "简": 781, "篇": 782, "篮": 783, "精致": 784, "红": 785, "红书": 786, "纸": 787, "细": 788, "细节": 789, "终于": 790, "终日": 791, "绒": 792, "结果": 793, "续": 794, "置": 795, "美": 796, "美 ": 797, "美了": 798, "美女": 799, "美甲": 800, "老妈": 801, "老婆": 802, "老师": 803, "考": 804, "而且": 805, "耳": 806, "联系": 807, "能": 808, "自己": 809, "舍": 810, "舔": 811, "舔狗": 812, "色": 813, "艾": 814, "艾滋": 815, "花": 816, "英雄": 817, "苹": 818, "苹果": 819, "荐": 820, "荐的": 821, "虎": 822, "虎扑": 823, "虑": 824, "衣": 825, "衣服": 826, "补": 827, "衫": 828, "袋": 829, "被黑": 830, "裙": 831, "裙子": 832, "裤": 833, "裤子": 834, "要": 835, "要 ": 836, "视": 837, "觉": 838, "觉 ": 839, "觉得": 840, "詹": 841, "计": 842, "订": 843, "记": 844, "论区": 845, "论文": 846, "评": 847, "评价": 848, "评分": 849, "试": 850, "试 ": 851, "试试": 852, "话 ": 853, "话终": 854, "话,": 855, "询": 856, "说 ": 857, "说我": 858, "说,": 859, "诶": 860, "请": 861, "请问": 862, "读": 863, "课": 864, "谢": 865, "谢谢": 866, "购": 867, "购买": 868, "费": 869, "费 ": 870, "赛": 871, "起": 872, "起来": 873, "超": 874, "超好": 875, "超级": 876, "蹲": 877, "蹲蹲": 878, "较": 879, "边": 880, "过": 881, "过 ": 882, "近": 883, "还": 884, "还有": 885, "还行": 886, "这": 887, "这个": 888, "这么": 889, "这家": 890, "这张": 891, "这条": 892, "这样": 893, "这款": 894, "这种": 895, "这篇": 896, "远": 897, "远的": 898, "送": 899, "适": 900, "适合": 901, "逆天": 902, "逼": 903, "避雷": 904, "那": 905, "那个": 906, "那种": 907, "都": 908, "酒店": 909, "里": 910, "里买": 911, "里啊": 912, "钱": 913, "钱 ": 914, "铺": 915, "链": 916, "链接": 917, "问": 918, "问 ": 919, "问一": 920, "问下": 921, "问我": 922, "问问": 923, "闲话": 924, "间": 925, "队": 926, "附近": 927, "雄": 928, "需多": 929, "需要": 930, "青春": 931, "非洲": 932, "靠 ": 933, "面": 934, "面膜": 935, "鞋": 936, "鞋子": 937, "项链": 938, "须": 939, "须满": 940, "预": 941, "颗": 942, "颗星": 943, "题": 944, "题 ": 945, "颜色": 946, "餐": 947, "饭": 948, "饰": 949, "香": 950, "香港": 951, "验": 952, "魔": 953, "鸽": 954, "鸽真": 955, "鹰": 956, "黑": 957, "黑人": 958, "黑的": 959, "️": 960, "!": 961, "!!": 962, "(": 963, ")": 964, ",": 965, ",一": 966, ",不": 967, ",也": 968, ",他": 969, ",但": 970, ",你": 971, ",别": 972, ",只": 973, ",可": 974, ",大": 975, ",女": 976, ",就": 977, ",我": 978, ",是": 979, ",有": 980, ",没": 981, ",现": 982, ",男": 983, ",真": 984, ",而": 985, ",还": 986, ",这": 987, ",那": 988, ",都": 989, ":": 990, "?": 991, "??": 992, "🐶": 993, "😄": 994, "😅": 995, "😆": 996, "😓": 997, "🤔": 998, "🤣": 999}, "idf": [1.767, 6.22, 6.22, 7.118, 5.109, 6.617, 6.793, 4.532, 7.147, 5.606, 7.408, 6.778, 5.523, 6.501, 7.051, 4.578, 4.867, 7.581, 6.184, 7.922, 7.191, 7.025, 6.824, 7.0, 7.269, 5.775, 5.58, 7.077, 7.39, 5.803, 7.907, 5.788, 5.766, 6.601, 7.987, 7.277, 6.115, 5.78, 6.095, 7.699, 6.725, 8.004, 6.329, 5.135, 7.527, 7.285, 7.559, 6.273, 6.218, 6.834, 6.454, 6.252, 3.88, 7.427, 5.941, 7.639, 5.773, 5.943, 5.393, 7.907, 6.377, 7.687, 5.629, 5.948, 5.779, 5.231, 6.601, 5.895, 5.623, 7.847, 6.683, 6.634, 5.66, 6.753, 6.439, 6.374, 6.509, 6.322, 7.418, 7.496, 5.174, 4.726, 5.581, 6.173, 7.319, 8.231, 8.038, 7.214, 4.449, 6.112, 6.861, 5.963, 6.72, 5.367, 6.981, 6.532, 5.136, 7.214, 5.428, 6.981, 6.31, 7.169, 4.872, 5.105, 6.432, 4.856, 6.391, 7.372, 7.712, 7.237, 6.768, 4.854, 8.004, 8.526, 8.344, 7.336, 7.674, 7.176, 7.098, 6.439, 6.439, 7.051, 7.399, 6.778, 4.273, 6.969, 6.969, 2.609, 5.237, 7.31, 7.038, 7.833, 7.229, 7.14, 6.994, 5.25, 5.647, 5.621, 8.344, 3.535, 8.392, 7.214, 8.862, 3.934, 6.176, 7.456, 5.166, 7.183, 6.226, 5.577, 6.371, 5.362, 5.153, 6.206, 4.868, 2.956, 6.332, 6.548, 6.364, 3.958, 8.021, 5.191, 7.038, 3.309, 6.181, 8.946, 8.714, 6.656, 5.706, 6.212, 5.635, 8.68, 3.456, 7.381, 7.456, 6.601, 7.639, 5.079, 5.92, 5.606, 4.923, 7.456, 6.739, 8.297, 6.572, 7.907, 2.441, 3.658, 6.102, 5.374, 7.496, 6.63, 5.196, 7.125, 6.294, 5.173, 7.639, 6.411, 7.506, 6.367, 8.32, 6.165, 7.777, 2.783, 7.169, 5.729, 3.961, 3.968, 3.794, 8.074, 3.662, 7.031, 5.941, 8.13, 7.65, 8.785, 6.808, 5.779, 7.077, 3.767, 6.957, 6.987, 4.126, 4.707, 5.668, 7.071, 7.833, 4.769, 6.911, 7.363, 6.994, 5.797, 6.85, 7.104, 6.643, 6.665, 8.68, 4.678, 5.891, 7.57, 4.709, 8.275, 4.816, 6.483, 6.63, 5.19, 8.231, 5.543, 5.956, 5.769, 6.092, 6.67, 7.363, 7.006, 8.13, 4.731, 7.057, 4.019, 4.023, 5.873, 6.818, 5.741, 7.328, 3.603, 6.711, 5.771, 6.446, 6.144, 7.31, 8.344, 4.36, 7.466, 5.959, 8.149, 6.31, 5.592, 8.275, 7.892, 5.243, 6.899, 6.486, 7.031, 6.041, 5.189, 6.975, 7.581, 8.32, 7.833, 3.93, 6.282, 8.111, 7.363, 7.006, 6.656, 4.907, 7.615, 4.36, 5.918, 8.498, 8.344, 3.618, 4.399, 6.157, 5.277, 6.195, 6.899, 4.585, 6.454, 7.221, 6.626, 5.155, 6.304, 8.344, 4.538, 5.28, 6.861, 3.966, 6.596, 7.777, 4.084, 4.989, 6.118, 7.345, 5.207, 6.613, 7.476, 5.357, 6.195, 5.997, 7.161, 7.639, 7.938, 5.481, 6.957, 6.768, 7.712, 4.808, 6.203, 5.025, 9.037, 8.392, 5.127, 6.255, 7.206, 4.971, 9.373, 8.275, 6.276, 7.97, 6.243, 6.439, 3.994, 4.929, 6.643, 9.248, 6.588, 5.909, 6.701, 5.905, 6.934, 8.32, 8.418, 4.559, 4.775, 6.894, 8.615, 7.006, 5.379, 7.496, 8.862, 8.253, 6.818, 8.555, 3.269, 6.678, 8.297, 7.012, 7.954, 6.928, 7.922, 6.934, 6.94, 6.325, 7.466, 7.662, 7.907, 5.688, 8.056, 7.833, 8.555, 3.663, 5.999, 6.165, 7.581, 5.546, 3.956, 6.601, 8.555, 8.418, 7.214, 4.237, 7.777, 7.538, 6.454, 6.475, 7.285, 4.058, 7.154, 5.985, 6.133, 7.118, 7.044, 6.276, 6.439, 8.392, 4.612, 7.237, 6.613, 3.061, 5.299, 9.137, 6.024, 7.31, 6.168, 7.954, 6.572, 7.604, 7.987, 7.805, 8.903, 8.32, 5.47, 7.862, 7.456, 8.555, 7.051, 7.132, 6.609, 5.558, 7.302, 7.922, 8.368, 5.135, 7.253, 6.022, 6.674, 6.095, 8.056, 3.676, 5.485, 9.309, 7.025, 5.674, 9.309, 4.055, 6.536, 5.001, 8.714, 4.792, 6.661, 5.337, 7.198, 7.818, 6.146, 6.975, 3.926, 6.697, 8.498, 6.432, 6.647, 7.019, 7.269, 6.12, 3.93, 8.149, 6.243, 7.012, 7.229, 7.862, 3.034, 7.615, 5.179, 6.022, 7.363, 7.408, 4.325, 4.976, 5.392, 5.994, 8.092, 7.833, 7.381, 7.051, 5.931, 7.674, 8.368, 6.092, 7.687, 6.02, 5.618, 5.261, 3.726, 5.283, 3.768, 7.328, 6.945, 8.68, 5.223, 5.889, 7.277, 4.579, 4.62, 7.862, 4.625, 6.3, 7.237, 5.642, 6.235, 7.381, 5.679, 6.391, 4.02, 7.496, 7.818, 7.922, 6.652, 7.437, 4.288, 6.94, 4.962, 2.571, 6.022, 7.408, 5.323, 7.476, 7.261, 7.071, 6.85, 6.945, 7.012, 7.354, 6.568, 5.822, 6.22, 6.483, 6.215, 8.253, 5.753, 6.112, 5.727, 8.092, 5.17, 5.38, 6.154, 5.258, 7.191, 5.109, 8.444, 5.909, 7.538, 7.496, 6.371, 6.634, 5.897, 6.123, 4.783, 8.253, 8.444, 5.979, 6.803, 5.578, 7.737, 6.916, 6.609, 6.374, 5.814, 8.444, 6.387, 8.344, 8.526, 4.959, 8.056, 7.922, 7.237, 8.344, 5.128, 6.001, 4.439, 6.788, 7.559, 7.466, 6.58, 3.984, 4.71, 5.857, 6.358, 7.549, 5.021, 6.63, 6.454, 7.302, 7.476, 2.287, 5.711, 5.946, 7.064, 7.294, 6.739, 7.876, 7.954, 5.903, 6.701, 4.97, 4.077, 6.639, 7.604, 7.006, 6.652, 5.378, 2.85, 8.862, 6.282, 5.668, 8.418, 5.475, 5.487, 5.376, 7.302, 5.399, 4.313, 7.328, 5.961, 5.78, 3.447, 5.893, 7.328, 4.593, 7.699, 4.189, 5.974, 7.191, 6.626, 8.038, 7.372, 6.401, 4.805, 7.118, 6.232, 7.764, 6.753, 8.004, 6.144, 6.176, 7.549, 5.172, 6.524, 6.146, 5.244, 5.773, 6.05, 5.466, 4.248, 5.837, 6.264, 7.019, 8.47, 6.006, 6.125, 7.466, 7.954, 6.945, 6.788, 7.549, 7.183, 4.844, 5.698, 6.572, 6.63, 6.715, 7.805, 4.111, 6.215, 7.687, 4.234, 5.527, 7.408, 5.835, 6.969, 8.111, 6.564, 9.137, 6.49, 5.72, 7.805, 7.907, 5.433, 6.457, 6.055, 8.111, 5.512, 4.142, 7.466, 5.748, 7.198, 8.111, 8.231, 4.032, 6.483, 8.444, 5.332, 7.446, 7.214, 4.322, 5.433, 6.692, 8.275, 6.179, 8.169, 7.253, 8.498, 8.169, 1.985, 3.952, 6.338, 6.613, 7.65, 8.418, 8.946, 5.901, 7.712, 7.517, 6.077, 8.231, 5.741, 6.505, 5.142, 8.714, 6.85, 8.038, 5.883, 5.238, 7.687, 7.712, 4.57, 3.456, 5.869, 6.264, 5.397, 7.363, 6.803, 7.372, 6.411, 6.45, 4.295, 7.627, 5.417, 4.556, 7.14, 6.361, 4.671, 6.486, 6.261, 7.791, 4.547, 6.338, 7.019, 6.945, 4.38, 7.446, 5.961, 5.965, 7.907, 6.418, 6.763, 6.798, 7.302, 8.021, 8.038, 6.429, 6.596, 7.805, 6.082, 6.753, 7.294, 8.149, 5.668, 7.098, 7.125, 6.418, 8.092, 7.277, 7.517, 8.823, 6.203, 6.118, 6.601, 4.636, 7.206, 8.253, 7.237, 9.037, 7.183, 6.436, 5.686, 5.298, 5.673, 7.125, 7.496, 3.614, 4.343, 6.411, 7.229, 7.75, 5.388, 6.52, 7.084, 5.362, 7.191, 7.486, 7.496, 6.803, 8.585, 6.688, 7.399, 6.715, 6.015, 6.725, 6.639, 8.47, 7.372, 7.161, 7.381, 8.004, 6.905, 7.724, 3.615, 7.191, 5.109, 4.161, 7.104, 4.831, 7.527, 5.835, 8.13, 5.495, 6.711, 8.169, 4.938, 6.634, 7.0, 6.02, 7.862, 7.354, 6.075, 7.517, 7.345, 8.21, 5.777, 6.564, 7.14, 7.724, 5.648, 6.665, 6.022, 6.316, 5.799, 6.288, 7.183, 8.418, 5.775, 7.712, 6.092, 4.516, 5.701, 5.485, 8.275, 6.888, 7.277, 8.498, 6.015, 5.367, 3.905, 6.235, 5.922, 3.434, 5.194, 7.154, 2.867, 4.225, 5.053, 7.724, 7.847, 7.57, 5.09, 8.344, 5.141, 8.149, 5.512, 7.084, 6.041, 5.967, 6.605, 7.791, 5.992, 8.714, 3.759, 5.384, 6.255, 3.282, 8.004, 4.137, 8.47, 9.373, 4.971, 6.692, 7.593, 6.692, 7.077, 4.667, 7.538, 7.581, 8.418, 7.31, 7.427, 7.446, 5.135, 6.022, 8.021, 6.803, 7.687, 5.889, 7.437, 6.592, 8.498, 4.439, 9.191, 7.0, 8.418, 8.714, 5.824, 6.945, 6.969, 6.899, 7.687, 5.151, 6.475, 7.699, 6.824, 5.805, 7.737, 5.972, 7.466, 6.513, 6.429, 7.0, 7.847, 7.14, 4.367, 5.584, 7.025, 7.954, 5.849, 7.892, 6.969, 6.981, 3.416, 6.58, 5.808, 6.861, 6.783, 6.06, 5.956, 7.476, 6.894, 7.253, 7.169, 7.091, 6.322, 5.498, 7.012, 6.778, 7.057, 7.098, 7.354, 7.183, 6.656, 6.494, 5.954, 6.49, 7.237, 6.855, 4.712, 7.674, 7.712, 7.764, 6.408, 6.688, 7.662, 7.549, 7.191], "ngram_range": [1, 2], "analyzer": "char"};

    const SVM_MODEL ={"coef": [0.374, -1.908, 0.493, 0.294, -0.995, 0.162, -0.808, 0.803, 0.432, -0.246, -1.018, 0.268, 0.536, -0.037, -0.265, 4.355, 0.727, -0.191, 0.569, -0.088, 0.348, 0.21, -0.322, 0.08, 0.244, -1.857, 0.196, 0.82, 0.134, 0.021, 0.517, 0.728, 0.958, 0.17, 1.472, 1.028, 1.981, 0.73, 0.163, -2.293, 0.126, -1.587, -0.816, 0.791, 1.071, -0.298, 1.045, -0.093, -0.081, 0.447, 1.111, 0.013, -0.53, 0.719, -0.463, -0.076, -0.463, 0.232, 0.021, 0.3, 0.582, -0.242, 1.387, -0.334, -0.305, -0.199, -0.124, 0.478, 0.065, 1.095, 0.582, 0.089, 0.56, -0.137, 0.608, 0.308, 0.343, 1.006, 0.127, 0.184, 0.035, 0.391, 1.896, -0.532, -0.414, -0.18, 0.415, -0.346, 1.156, 0.613, -0.473, 0.287, 0.726, 0.788, 0.509, 0.184, -0.759, 0.023, -0.826, -0.22, -0.455, 0.804, -0.234, -0.156, -0.277, 0.044, 0.296, -0.126, 2.077, 0.89, 0.361, -0.052, 0.296, 0.011, 0.086, 1.613, -1.093, -0.727, 0.79, 0.23, -0.4, 0.907, 0.222, 1.739, 1.185, -1.0, 1.406, -0.171, 1.321, 0.654, 0.074, 1.287, 0.24, 0.443, 1.052, -0.325, 0.238, 0.239, -0.17, 3.141, 1.636, 0.706, -0.264, 0.278, 0.415, 1.246, 0.256, 1.105, 0.588, 1.216, -0.024, -0.637, 0.555, 0.556, 0.182, 0.423, 1.551, 1.301, 0.061, 2.464, -0.565, -0.145, 0.56, -0.03, 0.327, -0.277, 0.021, -0.143, 0.289, -0.266, 1.623, 0.434, -0.138, 0.517, 2.379, 1.393, 1.294, -0.49, 0.788, 1.672, 0.08, -0.265, 0.239, 1.334, 1.344, 1.508, 0.517, 1.489, 1.251, 0.355, 0.898, 0.789, 0.122, 0.601, -0.013, -0.039, 0.196, -0.795, 1.265, 0.444, 2.989, 1.578, -0.008, 1.162, 3.892, 0.646, -0.184, 2.026, 1.385, 0.267, -0.009, -0.83, -0.135, 0.12, 0.04, 0.859, 1.355, 1.659, 1.525, 0.248, 1.245, 1.506, 0.052, 1.378, -0.006, -0.406, 0.656, -0.159, 0.535, -0.693, 1.414, 0.908, 0.107, 0.035, 1.058, 1.386, 0.851, -0.315, 1.542, -0.019, -0.41, 1.159, 0.012, 0.199, 0.253, 1.768, 0.654, 0.751, 2.235, 0.414, 0.04, 0.126, 0.677, 2.047, 0.436, 0.24, 0.501, 0.153, 1.753, 0.685, 0.96, -0.018, -1.256, 0.322, 1.555, -0.414, 0.249, -0.018, 0.421, 0.931, 0.512, -0.74, 0.137, 1.401, 0.407, -0.228, 1.557, 1.901, 2.531, -0.702, -0.269, -0.864, 0.302, 1.319, -0.782, 1.107, 1.118, 0.08, 0.92, 0.069, 1.531, 1.237, 0.98, 2.831, 0.372, -0.179, -0.239, 0.051, 0.559, 0.642, 0.267, -1.08, 0.401, 0.603, 0.457, 0.599, 0.347, 1.182, -0.317, 1.753, -0.781, -0.017, 1.999, 0.316, 1.211, -4.01, 0.276, 0.271, 0.422, -0.277, -0.297, 0.274, -0.077, 0.133, 0.255, 0.808, 0.697, 0.207, -0.362, -1.781, 2.13, -1.682, 0.482, -0.129, 0.289, -0.626, -0.272, 0.593, -1.47, 0.157, 0.704, 0.048, -2.265, 0.572, 1.757, -0.533, -0.927, 2.931, -2.669, -0.321, 1.185, -0.527, 0.955, 0.115, 0.624, -5.652, 0.545, -0.336, 1.837, 0.251, 1.254, 1.012, 0.345, 0.448, 0.11, 0.464, 0.184, -1.994, -0.989, 0.299, -0.227, 1.442, 0.861, 1.377, -0.974, -1.416, -2.137, -0.615, -0.847, -0.522, 0.077, 0.922, -0.624, 0.384, 1.002, 1.113, 1.652, -0.746, 2.625, -1.817, 1.046, 1.553, 0.915, 0.612, 1.389, -6.713, 0.812, -3.541, -1.102, 1.298, -2.498, 1.611, -0.851, 0.89, 0.982, 1.251, 0.71, 2.042, 2.203, 1.992, 1.936, 1.081, 2.906, 1.917, 0.171, -0.543, 2.212, 0.813, -0.018, 0.446, 0.242, 1.424, -2.056, 0.915, 1.197, -2.364, -1.091, 0.005, -2.928, 2.36, 1.814, -2.882, 0.453, 0.186, -0.32, -2.503, -4.453, 0.265, -1.243, -0.087, -0.717, 0.522, -0.548, -0.85, 0.454, 0.966, 0.575, 0.021, 1.124, 0.928, -1.779, 0.338, 1.828, 0.362, 0.526, 0.808, 0.669, 0.964, -1.938, 0.336, -2.931, -1.386, 0.127, -0.195, -0.359, 2.5, 2.008, -0.896, 1.636, -0.1, -0.007, 2.192, 0.803, -1.119, -0.279, 1.729, 1.023, 0.646, 0.144, -0.225, 0.206, 0.683, 0.033, 0.306, 0.297, -0.843, 0.188, -0.927, -0.104, 0.676, 0.202, 0.438, -0.304, 0.066, -0.436, -0.604, -0.348, 1.41, 0.595, -1.624, -0.238, 0.697, -0.053, -1.211, 0.879, 0.207, 1.331, 0.708, 2.11, -0.829, -0.318, 0.201, -1.03, 0.812, 1.305, 0.12, 1.17, -0.019, 0.555, 1.26, 0.306, 0.281, 0.638, 0.868, 0.876, -0.213, -1.51, 1.692, 0.935, 1.729, -2.314, 1.515, -0.473, -2.214, -0.34, 0.341, 1.298, 0.131, 0.043, 1.236, -0.253, 1.684, 0.306, -1.016, -0.11, -2.179, 0.714, 0.635, 1.436, -0.248, 0.967, 1.617, -0.85, 1.665, 0.273, 1.333, 1.299, 0.978, 0.803, 0.728, 0.971, 0.624, -0.156, 0.458, -0.535, -0.21, 1.213, 0.152, -1.384, 0.966, 3.287, 0.941, 0.224, -0.324, 0.24, -0.167, 0.533, 1.062, 1.48, 0.879, 1.207, 0.169, -0.067, 0.159, -0.593, 1.072, -0.212, 0.966, -9.024, 1.354, 0.883, 0.142, 0.844, 0.63, 1.64, 1.714, 0.552, 0.812, 0.356, 0.922, 0.96, 1.851, 1.702, 1.116, 0.067, 1.923, 0.35, -0.35, 0.044, 0.215, 0.418, 0.949, 2.483, 1.582, 1.204, -0.169, -0.412, -3.074, 0.26, 0.902, 0.112, 0.281, -0.16, -0.223, 2.055, 0.319, -0.868, -3.297, -0.183, 0.771, 0.897, 0.542, 0.179, 0.609, -0.388, 0.876, 0.312, 0.132, -0.182, 0.323, 1.673, -0.568, -3.453, 4.156, -0.078, -1.169, 0.198, 0.514, 0.038, 1.131, 0.844, -0.554, 2.939, 1.099, 0.635, -0.113, -0.571, 1.516, 0.185, 2.66, 0.538, -0.23, 0.014, 0.101, 0.07, 2.414, -0.398, -0.356, 0.903, 0.814, 0.067, 0.771, 0.681, -0.574, 0.353, 1.282, 1.053, 1.297, 0.434, 1.386, -0.32, 0.539, 1.789, -0.42, -0.429, -0.251, 0.191, 1.853, -0.962, 2.344, 0.639, 0.168, 1.455, 1.197, -0.571, 0.806, 1.862, 0.407, 0.543, 0.527, 0.894, 0.201, 0.784, -0.78, -1.889, 0.313, -0.001, 0.992, 0.025, 0.362, 0.166, 1.09, 1.364, -0.312, 0.27, 0.66, -0.506, 1.468, -1.04, -0.145, -2.585, 0.163, -0.148, 1.337, 2.146, 2.108, 1.358, -0.522, -0.076, -0.3, -0.393, 2.421, -0.946, 0.649, 0.725, 0.574, -0.469, -0.182, 0.5, -0.525, -0.119, 0.633, 1.529, -0.388, -0.458, -0.089, 0.311, 1.218, -0.58, 0.87, 1.28, 1.072, -1.789, -0.076, 0.774, 0.168, 0.112, 0.585, 1.16, -0.437, 0.826, 1.401, 0.572, -0.679, 2.482, 1.65, 0.567, 0.217, -0.144, 0.36, 0.731, 0.768, 0.664, 1.316, -1.435, 0.403, 0.915, 0.255, -2.34, -0.471, -1.637, 1.741, -1.657, 0.152, 0.687, -0.276, 1.633, 0.601, 1.677, -0.086, 0.256, 0.121, 1.197, 1.094, -0.641, 0.486, 1.397, -0.168, -1.7, 1.466, 0.307, -0.271, 1.612, 0.112, 0.1, 0.74, 0.139, -0.127, 0.162, 0.07, 0.857, 1.653, -0.181, 1.529, 0.807, -0.602, 0.834, 0.035, 0.509, 0.483, 0.612, 3.17, 0.888, -0.615, 2.932, -1.348, 1.234, 0.152, 1.374, 0.534, 0.4, -0.06, -0.154, -1.052, 3.749, -0.792, 0.201, 0.739, 0.114, -0.123, 1.818, -1.009, 2.18, 1.342, 0.409, 0.617, 1.122, 1.754, 2.419, -0.11, -3.745, -0.378, -0.692, -0.58, -1.022, 2.512, 1.744, -1.139, -1.783, -1.788, 0.214, 1.855, -0.449, 1.583, 0.713, 0.065, -1.961, 0.564, 0.174, -1.327, -0.408, 1.305, -0.048, 0.673, 0.524, -0.046, 0.739, -0.297, 0.063, 2.654, 0.488, -0.351, -0.056, 1.406, 0.705, 0.502, 0.922, 1.832, 1.738, 0.18, -0.069, -0.882, 0.86, 0.733, 0.827, 1.529, -1.312, 0.166, -0.248, 0.971, 0.345, 0.828, -1.529, 0.615, -0.097, 0.677, -0.015, -0.379, 0.239, 0.084, 1.023, 0.578, -0.088, 0.679, 0.445, 0.53, 3.36, 0.369, 0.227, 0.285, -0.171, -1.965, 0.526, 1.631, 1.264, 1.211, 1.361, 0.7, 0.238, -0.548, -0.667, 0.923, 0.855, 0.736, 1.538, 0.558, 0.709, -2.211, 0.141, -0.057, -0.007, 0.228, 1.841, 1.523, 0.594, 0.691, 0.658, 1.466, -1.086, -0.348, 1.107, -4.388, 0.085, 0.982, 2.142, -0.088, -0.137, 2.185, 1.4, 2.729, 0.43, -0.772, -0.28, 0.101, 0.272, 1.116, -1.332, 0.331, 1.35, -0.042, -0.112, 0.088, 0.615, 1.248, 0.052, 1.305, 1.392, 3.308, -1.242, 0.946, 0.248, 1.578, 0.62, -0.847, -0.676, 0.09, 0.675, 0.67, 0.549, 0.518, 1.766, 0.786, 1.587, 0.981, -0.647, 0.97, 0.138, 1.357, 0.12, 2.477, 0.246, 1.693, -2.014, -0.287, 1.959, 0.957, -0.135, 0.903, 0.588, -1.016, 0.415, -1.204, -1.213, 0.038, 1.88, -0.997, 1.498, 1.194, 1.23, -0.431, 1.146, 0.817, -0.237, -0.083, -3.781, -5.494, -1.462, -2.165, -4.219, -0.614, 1.732, -0.748, -0.123, 0.655, 2.437, -1.172, 1.306, -0.656, -0.109, -0.153, -0.109, 1.159, 0.624, -0.694, 0.59, -1.055, 0.643, 0.51, 0.479, 0.189, 0.002, 1.372, 1.228, 0.152, 0.524, -2.78, 1.036, 0.463, 1.115, 1.24, 1.101, 1.287, 1.147, 1.082, 0.947, 0.772, 0.188, 0.774, 1.514, 1.059, 0.433, 0.45, 1.119, 1.335, -0.091, 0.528, 1.874, 1.503, -3.465, 2.106, 0.769, 2.058, 0.405, 0.811, -1.016, -0.196, -0.496, 1.291, -0.306, 0.482, 0.358, 1.796, 0.693, 1.411, 1.82, 1.027, 1.98, 1.683, 0.907, 0.344, 0.763, -1.145, 2.144, 0.355, -1.085, 0.196, 1.224, -0.586, 0.149, 0.011, 0.679, 0.908, 1.657, 0.219, 0.287, 1.656, 0.309, 0.699, 0.646, 0.753, 0.548, 1.78, -0.837, 1.062, 0.427, 1.213, -0.089, 0.319, -0.204, 2.459, 1.073, -0.307, 2.109, 2.39, -0.202, -0.613, 1.827, 0.402, -0.222, 0.6, -0.185, 0.403, 2.89, 1.469, -2.208, 0.254, 1.237, 0.066, 2.349, 1.78, 2.011, 0.524, 1.352, 1.219, -0.744, -1.735, 0.941, -0.185, -0.273, 0.566, 0.913, -0.726, 2.1, 2.296, 1.26, -0.513, -0.096, -0.007, -0.279, 0.761, -2.731, 1.027, 0.091, 1.152, -1.232, -2.186, -1.281, 0.165, 0.852, -2.27, 1.165, 0.001, -2.798, 0.463, 0.09, 0.46, 1.807, 1.195, 1.566, 1.582, 0.601, 0.329, 1.764, 0.016, 0.345, 2.835, 0.326, -0.755, 1.151, 0.223, -0.215, 0.386, 0.917, 0.274, -0.999, 0.1, -0.53, -3.898, -0.553, 0.408, 2.188, -0.576, 1.411, 0.01, -0.606, 1.352, 1.14, 2.29, 2.04, 1.661, 2.326, 1.31, 0.658, 0.512, 0.19, 1.663, 1.106, 1.331, 0.165, -1.375, 0.429, 2.101, 0.19, 2.342, 1.489, 0.744, 1.747, 1.102, 0.999, 0.0, 1.842, -0.801, 1.368, -1.256, 2.749, 2.144, -4.178, -4.0, -2.097, 0.738, 0.138, 0.526, -0.737, -0.433, 0.556, -0.049, -0.075, -0.178, 0.226, -0.215, 1.887, 1.287, 1.745, 1.68, 0.079, 1.324, 2.071, 1.294, 1.012, 1.425, 0.778, 1.274, 2.343, 1.706, 2.151, 2.612, 0.389, 0.121, 0.326, 1.282, 1.937, 2.1, -0.592, 2.07, 2.377, 2.177, 1.371, -0.207, 0.012, 1.572, 0.727, -0.758, 0.97, 0.852, 0.746, 0.798, 0.494, -0.358, 0.714, 0.386, 0.325, 0.78, 0.997, 1.049, 0.874, 0.912, 1.073, 0.997, 0.051, 0.692, -0.425, 0.23, 0.41, 0.286, 0.853, -0.362, 0.87, 0.261, 1.524, 3.304, 0.571, 0.466, -0.297, -0.038, 1.864, 0.625, 3.331, -0.514, 0.429, 3.001, 0.767, 1.599, 0.648, 0.025, 0.301, 0.807, 0.333, 0.545, 1.095, -1.255, -6.186, -1.363, -0.313, 1.417, 1.413, 1.326, 0.443, 0.32, 0.443, 1.225, 0.3, 0.206, 1.277, 0.594, 0.192, 3.202, 1.357, -0.331, 1.225, 1.547, 2.089, 1.099, 1.823, 0.617, 0.045, 0.569, 1.037, 0.535, 0.547, 1.406, 0.607, 1.995, -0.106, 0.343, 3.404, -0.016, 0.513, 0.042, -0.276, 0.851, 0.142, 1.595, -0.98, -1.247, -0.645, 1.546, 0.457, 2.085, 1.535, 0.605, 0.015, 0.815, -0.113, 0.229, 0.743, 0.768, 0.762, 0.899, -0.439, 0.17, 0.186, -0.155, 1.395, -0.434, 0.373, 1.408, -0.085, 1.569, -0.677, 2.438, -0.125, 1.678, 0.382, -1.028, -0.662, 1.023, -4.671, -6.751, -1.989, -2.095, 0.477, 2.525, 2.234, 0.053, -2.089, -0.323, 0.189, 0.927, 2.105, -2.05, 0.909, 0.677, 0.38, -0.992, -0.342, 1.344, 0.059, 0.965, 0.945, 0.554, -0.126, 1.198, 1.498, 1.185, 0.227, 1.793, 0.257, -0.847, 0.313, 1.764, 0.949, -0.895, -0.495, 0.901, 0.371, 0.927, 2.246, 0.687, 0.734, -0.153, -0.383, 0.895, 0.117, 1.496, 0.793, 0.136, -1.491, -0.068, -1.512, 1.135, 0.673, 1.183, -2.036, 1.433, 0.977, -1.164, 0.855, 1.026, -0.305, 0.813, 2.118, -0.358, 0.226, 1.842, -1.157, 0.271, -0.096, 0.5, 0.892, -0.129, 0.626, -2.87, -0.208, 1.077, 1.029, 0.035, 0.211, 1.559, -0.157, 0.487, -0.976, 1.902, 1.447, 0.815, 0.175, 0.507, 0.135, 1.188, 0.941, 1.143, 0.531, -0.233, 0.481, 0.049, 0.03, 3.015, 1.804, 0.587, 1.127, 1.457, 0.96, 0.47, 0.678, 0.079, 0.24, -0.482, 1.12, -0.689, 0.314, 0.43, 1.354, -1.558, 2.65, 1.381, 0.501, 0.2, 0.848, 1.334, -0.38, 2.382, -0.159, 0.516, 1.157, -0.443, 0.558, 0.401, 0.843, -5.431, 0.388, 0.086, -0.797, 1.343, -1.219, 0.406, 0.242, 1.066, 0.787, 0.347, 0.724, 0.06, 0.88, 1.248, 0.148, 0.738, 0.319, 0.221, -0.021, 1.239, -0.582, 1.181, 2.43, 2.332, -1.76, -1.251, -0.275, 1.66, -0.671, 2.322, 0.848, -1.648, -1.558, -1.673, 1.468, -0.549, 0.848, 0.295, 0.149, 1.008, -1.315, 0.517, -0.758, 0.282, 0.231, 0.836, 0.751, -0.76, -0.992, 1.135, -0.548, 0.594, -3.807, 0.534, 0.01, -0.936, -2.172, -0.234, 1.055, 1.955, -0.242, 1.08, 0.444, 0.303, -1.506, -0.08, -0.294, -2.131, 0.897, -0.19, -0.519, 0.607, 1.448, -0.811, 0.885, 0.118, -0.766, -0.022, 1.191, 0.167, 1.311, 0.859, 0.894, 1.027, -0.114, -0.099, 0.956, 1.096, -0.223, 0.595, 0.949, 0.431, 0.486, -0.39, 0.167, 0.762, -0.972, 0.318, 0.728, 0.507, 1.72, 0.722, 0.353, 1.29, 0.979, 1.117, -0.264, 0.47, 1.03, 0.978, -0.098, -0.067, 0.587, -0.244, 1.567, -0.152, 2.194, 1.421, 2.316, 0.823, 1.224, -0.831, 0.227, 2.337, 0.299, 0.876, 0.095, 1.727, 1.802, -0.45, 1.207, 0.739, 1.279, 1.127, -0.303, -0.06, 0.463, 0.605, 0.488, 0.004, 1.075, -0.162, 1.674, 0.643, 1.138, 0.105, 0.584, -0.893, -0.111, -0.884, -1.831, 0.645, -0.126, 6.898, -2.182, 0.797, -0.293, 1.778, 0.845, -0.745, 1.743, 1.098, 0.175, 1.804, -0.027, 0.692, -0.52, -0.91, 0.047, -0.343, -0.498, -0.955, -2.651, -0.51, -0.03, 0.915, -1.285, 1.832, -0.863, -0.281, 0.657, -1.536, -0.336, 1.078, 1.839, 1.487, -0.595, 0.566, 0.965, 0.839, 1.966, -1.305, -0.508, 1.44, 1.18, 0.965, -1.538, 0.229, 0.86, 0.131, 1.622, 0.97, 2.02, 0.769, 1.908, 0.057, 2.38, 2.035, 1.142, 0.832, 0.169, 0.824, -0.097, 0.445, -0.455, 0.115, -0.03, -2.098, 1.474, 0.225, 1.16, 0.259, 1.014, 2.258, -0.921, 0.63, 0.411, 0.476, 0.515, 0.784, 1.238, -0.405, 0.112, 0.34, -2.398, -0.81, 0.707, 0.833, 1.285, 0.764, 1.109, -0.25, 0.5, 1.527, 0.212, 1.141, 0.41, 1.462, -2.6, 0.922, 0.31, 0.152, 1.917, -0.326, 0.374, -0.917, 1.031, 0.917, 2.072, 0.92, 0.736, 0.321, -0.243, 0.344, 2.122, 0.03, 0.355, -0.027, -0.374, 1.137, 0.067, 2.299, -0.276, 1.923, 1.914, 0.474, -0.63, 0.047, -0.561, -0.127, 2.184, 1.597, 0.213, 0.509, 1.386, 1.141, 0.7, 0.116, 0.787, -0.145, 1.834, 1.619, 0.684, 2.014, 1.992, -0.209, 2.197, 1.688, 1.112, -0.11, -0.462, -0.393, -0.866, -0.48, 0.662, 2.617, 0.384, 0.286, 1.056, 0.061, 0.562, 2.329, -0.351, -0.146, -0.054, 2.32, -0.18, 0.243, 0.553, 0.554, 1.357, -1.557, -0.072, -0.582, -0.145, -0.814, -0.687, -0.264, -1.54, -2.391, -0.008, 1.06, 0.989, 0.668, 0.386, 0.487, 1.253, 0.307, -0.882, -0.797, 0.611, 0.739, 0.909, 0.851, -0.487, -0.411, 0.922, 0.613, 0.592, -0.076, -0.123, 0.568, -0.172, -0.766, 3.253, 1.803, 0.8, -0.579, 0.104, 1.384, 1.99, 0.951, -1.142, -2.779, 0.876, 0.411, 0.394, 1.457, 0.098, -0.003, 0.661, -0.311, -0.237, -0.995, -1.227, -1.302, -0.754, 1.052, 2.474, 0.881, 0.079, 1.707, 1.823, 0.488, 0.73, 0.495, 1.346, 1.094, 1.028, -0.523, 0.864, 1.263, 0.237, 0.883, 1.058, 0.171, 1.34, 0.27, 0.503, -1.209, 2.212, 0.329, -0.413, 2.505, 0.447, 0.562, 0.031, -0.53, -0.063, -0.068, 0.092, 2.208, -0.511, 0.002, 0.149, 0.564, -1.069, -0.341, 2.673, 0.974, -0.102, -0.256, 1.836, 0.357, 0.4, -1.042, 0.068, 1.361, 1.84, -0.032, 0.611, 1.102, 9.273, 1.58, 0.069, -0.195, 0.425, 0.038, -1.138, 0.042, -0.269, 0.98, -0.097, 0.802, 1.6, 0.076, -0.044, 0.662, 0.435, 0.327, 1.599, 0.744, 1.918, -1.668, -0.097, -3.074, -4.558, 0.161, 0.431, -0.276, 2.459, 1.684, 1.23, 0.294, 1.852, 1.38, 1.0, 0.191, 1.173, 0.641, 1.026, 2.182, 0.167, 1.523, -0.674, 0.712, 0.009, -1.549, -0.384, 0.926, 0.725, 0.574, -0.185, 1.307, 1.514, 0.498, 0.818, -2.108, 1.41, -0.125, 0.432, -0.169, 0.215, -0.631, 0.76, -1.18, 1.248, -0.031, 6.64, 3.137, 4.342, -1.501, 2.351, 2.582, -0.794, -0.171, 1.371, 0.086, 1.153, 1.327, 0.695, 1.562, 2.124, 1.357, -0.248, 0.788, 0.739, 0.146, 0.77, -1.539, -0.368, 0.727, -0.021, -1.435, 0.93, 2.719, 0.234, -0.014, -0.748, 1.84, -0.029, 1.162, 0.664, 0.322, -0.186, -0.226, 0.911, 0.27, -1.808, 0.935, 0.73, 0.427, 0.792, 1.42, 1.013, 0.06, 0.601, 1.027, 1.937, 1.291, 1.776, -1.668, -2.1, 0.591, 0.446, -1.925, -1.091, -0.39, -2.129, -2.271, 1.352, 1.641, -0.529, 1.595, 1.017, -0.161, -0.302, 0.57, 2.355, 1.927, 0.04, -0.481, -2.361, 1.509, -1.237, 0.137, -0.606, 0.745, -2.91, 1.275, 1.527, 2.418, 0.153, 1.056, 0.361, 1.173, 1.452, 0.199, -0.892, 1.934, -1.484, -0.002, 0.368, 0.287, 0.083, -1.251, 1.297, -1.225, 0.471, -0.599, -0.449, 0.974, 0.83, 0.163, -1.359, 1.723, 0.892, 0.011, -0.116, -0.42, -0.464, 0.588, 0.8, 1.625, 1.568, -0.244, 0.069, -2.248, -0.167, -0.719, 1.211, 0.105, -1.885, 2.231, -0.009, 1.668, -0.886, -0.652, -1.189, 0.39, 0.204, -2.207, -0.562, 1.897, -0.428, 0.531, 0.894, -0.572, -1.398, -0.423, -1.024, -2.045, -0.432, -0.52, 0.605, -0.948, 0.065, 0.158, -0.486, 0.753, 0.075, -1.254, -2.01, 1.366, -0.542, -1.519, -2.088, -0.038, -0.155, 1.161, 1.433, 0.827, 0.249, 0.958, 1.156, -1.698, 1.02, -1.375, 1.989, 0.226, 0.996, 1.528, 0.662, 0.304, 0.139, 0.964, 1.367, 2.587, 0.804, 2.124, 0.703, 0.335, 1.746, 1.251, 1.083, 0.53, 2.135, 1.999, -1.485, 0.87, 1.16, -1.713, -0.172, 1.643, -0.045, 0.963, 0.817, 0.265, -0.373, 0.738, -0.107, 3.894, 1.118, -0.732, 0.14, 0.947, 1.741, 1.403, 2.674, 1.005, -0.341, 0.428, 1.01, 0.904, 0.364, 0.108, 1.738, 1.404, 1.697, -1.042, 1.041, 1.796, -0.011, 0.66, 0.191, -0.516, 0.259, 0.558, 1.21, 1.531, 1.166, 0.49, 0.532, 0.894, 0.353, 1.688, 1.982, 0.061, 0.786, 0.87, 0.26, 1.03, 0.142, 0.034, 0.204, -0.11, 0.653, 0.356, 0.053, 1.55, 2.032, -0.43, 0.894, 1.492, 0.343, 0.032, 0.192, 1.051, -0.105, -0.445, 0.579, 0.958, 0.511, 2.754, 0.61, 1.746, -1.235, -0.005, 0.9, 2.446, 0.491, 0.523, 0.094, 1.186, 0.575, 0.506, 0.122, 0.661, 0.338, 0.688, -0.208, 1.449, -1.351, 1.056, -1.255, 0.511, -0.263, 1.768, -0.521, -0.249, 0.902, -0.068, 2.107, -0.104, 0.405, 0.814, 2.569, 1.633, -0.233, 0.645, 2.539, -0.096, 0.577, 0.812, 0.96, -2.604, -0.952, 2.453, -0.727, -0.686, -3.244, -0.847, 0.068, 2.145, 0.6, 2.405, 0.314, -0.722, 1.026, 1.522, 0.144, 0.254, 1.001, 2.786, 0.64, 0.849, 0.739, 0.001, -0.027, 2.033, 0.064, 0.834, -0.015, 0.903, 0.651, 0.042, 1.037, 0.641, 0.912, 0.701, 1.325, -0.81, -0.588, 0.765, 0.734, -0.534, -1.696, 1.612, -0.257, 0.983, 0.759, 1.695, 1.782, 0.081, -0.025, -0.692, 0.127, 0.466, 2.844, 1.287, -0.139, 0.599, 0.36, -0.215, -2.21, 0.955, 1.11, 1.167, -0.976, 0.156, 0.195, -0.006, 0.499, 0.99, -0.224, 0.944, 2.023, 0.417, 0.041, 0.772, 2.76, 2.411, 0.582, -1.058, 0.907, -1.511, 0.258, 2.11, 0.269, 1.668, 0.209, -0.105, 1.263, 1.048, -0.375, -1.039, 1.27, 0.789, 2.33, -2.148, 1.119, -0.153, 0.192, -0.461, -0.018, 1.647, -0.405, -0.852, -0.333, -0.684, 0.436, -1.325, 0.115, 0.127, 0.85, 0.968, -0.227, 0.316, 1.093, 0.36, -0.915, 0.186, 0.577, 2.066, 1.225, -0.063, 0.297, 0.639, 1.201, 1.347, 1.05, -0.104, 1.5, 0.991, 1.145, 2.073, -0.172, 2.518, 0.571, 0.375, -0.193, -2.32, 0.501, -3.167, 2.457, -0.667, -0.372, -1.845, 0.788, -0.885, -0.765, 0.867, 1.014, 1.58, 2.554, -0.423, 1.132, -0.287, 1.544, 1.567, 0.243, 2.67, 0.623, 1.047, 0.952, 0.826, 0.731, 1.174, 0.997, 0.78, 1.036, 1.524, -1.368, -0.44, 0.299, 0.912, 0.348, 0.753, 0.75, 2.66, -0.076, 0.021, 1.184, 1.016, 0.027, -0.037, 0.089, 0.725, 0.731, -0.054, -1.171, 0.109, 1.442, 1.985, 0.825, 0.48, -0.989, -0.974, 0.031, -1.226, 0.904, -1.493, -2.719, 1.76, 1.056, 1.55, 1.656, 0.427, -0.351, -2.561, -1.846, -0.002, 0.358, 0.448, 0.92, 2.541, 1.547, -1.646, 0.678, 0.89, -0.042, 0.977, -0.104, 0.735, 1.326, 1.547, -0.223, 2.289, 0.849, -1.38, 0.409, -0.688, -2.405, 0.75, -0.745, -0.542, 0.999, 0.894, 0.666, 0.58, 1.286, 0.394, 0.687, 0.776, 0.543, -0.17, 0.902, -1.673, 0.086, 2.071, 0.137, 0.73, 1.164, -0.178, 0.309, 0.573, 0.879, 0.864, -1.033, 0.558, 0.498, -0.031, -0.42, 2.415, 0.323, -2.619, 0.427, 0.335, 0.804, -0.001, 0.262, -0.252, 1.271, -0.344, -1.026, -0.327, 2.031, 0.448, 0.923, 1.479, -0.423, 1.216, 0.581, 1.061, 0.243, 1.367, -0.011, -0.044, 3.203, 0.729, 0.226, -0.006, 1.598, -0.776, 0.333, 1.674, 0.983, 0.417, 0.924, 0.285, 0.366, -0.374, -0.467, -1.176, -2.628, 1.383, 0.177, 0.802, 0.44, 0.428, 1.226, 0.564, 0.879, 1.543, 0.956, -0.524, -0.82, -0.227, 0.966, -0.433, -0.858, -2.655, 0.334, 1.803, 0.783, 1.469, 0.413, 2.196, 0.67, 1.679, 2.398, 0.623, -0.271, 1.351, 2.239, 1.182, 1.732, 1.229, -0.276, -0.948, 0.609, 1.787, 2.131, 0.331, 0.005, -1.882, 1.078, 0.443, 1.369, -1.602, 1.122, -6.229, 0.403, 0.897, -0.405, 0.047, 0.103, -0.863, -1.938, -2.299, -0.297, 0.324, 0.271, 1.342, 1.545, 0.893, 2.083, 0.019, 0.061, -0.204, 0.406, -0.55, 0.718, 1.755, 0.011, 0.48, 0.612, 0.12, 0.681, 2.57, 0.666, 1.655, 0.88, 1.686, 0.559, 1.296, 0.347, -0.408, 0.542, 0.247, 0.986, -1.777, 0.26, 0.011, 0.038, 0.649, 0.584, 0.522, 0.833, 0.54, -0.11, 1.183, -0.213, 0.395, 0.818, -0.741, -0.769, 0.136, -1.435, 2.224, 0.175, 0.411, 1.195, 0.187, 1.079, -0.529, 1.16, 1.537, 2.185, 0.674, 0.737, -0.845, -0.154, 2.575, 0.108, 0.536, -1.002, -0.03, -0.447, 0.135, 1.764, 0.874, 1.032, 0.646, 0.851, 0.999, -0.276, -1.384, 0.602, 0.227, 0.785, 0.053, 0.241, 1.005, 0.283, 0.027, -0.013, 0.022, 1.281, 0.479, 0.768, -0.223, -0.747, 0.293, 0.401, -0.381, -1.103, 0.555, 0.447, -0.598, 0.244, 2.488, 1.17, 0.292, 1.026, 1.17, -0.559, 0.049, 0.713, 0.422, 1.244, 1.175, 0.978, -2.041, 0.654, -0.318, -1.047, 0.28, 0.375, -0.159, 0.021, 0.301, 0.008, 1.122, 0.857, -0.335, 0.195, 1.67, 0.435, 1.506, 1.451, 0.523, 0.814, -0.399, 0.898, 1.167, 1.255, 0.173, -0.552, -1.712, 0.288, 0.488, -0.356, -1.213, -0.949, 2.789, 0.319, -0.037, 1.703, 0.729, 2.033, 1.557, 0.578, 2.241, 0.447, 0.414, 0.429, 1.489, 0.88, 0.836, 1.08, 0.679, 0.355, 0.991, -1.704, -0.398, -0.124, -0.377, -1.815, -0.268, 0.537, -0.731, 2.416, 1.654, -1.841, 0.548, -0.193, 0.124, -0.146, 0.926, 1.214, 0.361, 0.193, -2.686, -0.202, 1.256, 3.324, -3.701, 0.899, 0.836, 0.256, -0.694, 0.434, 0.929, 1.171, 0.125, 0.873, -0.554, -1.103, 0.912, 0.671, -2.905, 0.369, 0.64, 1.179, -1.86, 2.699, 1.9, 2.023, 0.671, 0.751, 0.661, 0.689, 0.779, 1.396, 0.866, 0.289, 0.065, 0.561, -0.674, -0.85, 0.495, 0.46, 0.415, 2.461, 0.385, 1.845, 0.259, -0.535, -2.643, 0.83, -0.734, 0.818, -0.101, 1.443, 1.76, 1.336, -0.387, 0.206, 1.959, 1.325, 0.241, -0.492, 3.209, 1.663, -0.054, 0.173, 0.728, 0.568, 0.163, 0.937, 0.391, 1.747, 1.837, 1.239, 3.662, 2.443, -0.394, 1.793, -0.133, -0.598, -0.244, -0.473, -0.645, -1.002, -1.487, 1.22, -0.595, -0.044, -1.518, -1.318, -0.152, 2.236, -3.425, 1.933, -1.381, -1.423, -3.688, -1.483, -1.759, 0.886, -0.99, -0.332, -1.058, -1.59, -11.18, 1.147, 0.157, -0.158, -0.32, -1.614, -2.207], "intercept": -0.626};


    function findTextContainers() {
        const walker = document.createTreeWalker(
            document.body,
            NodeFilter.SHOW_TEXT,
            null
        );
        const set = new Set();
        let node;
        while ((node = walker.nextNode())) {
            if (node.nodeValue && node.nodeValue.trim().length > 0) {
                set.add(node.parentNode);
            }
        }
        return Array.from(set);
    }

    /* model */

    function charNgrams(text, minN, maxN) {
        const clean = text.replace(/\s+/g, "");
        const grams = [];
        for (let n = minN; n <= maxN; n++) {
            for (let i = 0; i <= clean.length - n; i++) {
                grams.push(clean.slice(i, i + n));
            }
        }
        return grams;
    }

    function tfidfVector(text, model) {
        const grams = charNgrams(
            text,
            model.ngram_range[0],
            model.ngram_range[1]
        );

        const tf = {};
        for (const g of grams) tf[g] = (tf[g] || 0) + 1;

        const vec = new Float32Array(model.idf.length);
        for (const t in tf) {
            const i = model.vocabulary[t];
            if (i !== undefined) {
                vec[i] = (1 + Math.log(tf[t])) * model.idf[i];
            }
        }
        return vec;
    }

    function svmScore(vec, svm) {
        let score = svm.intercept;
        for (let i = 0; i < vec.length; i++) {
            score += vec[i] * svm.coef[i];
        }
        return score;
    }

    let panelVisible = Storage.get("panelVisible", true);

    function registerMenu() {
        if (typeof GM_registerMenuCommand === "function") {
            GM_registerMenuCommand(
                panelVisible ? "隐藏文本过滤面板" : "显示文本过滤面板",
                () => {
                    panelVisible = !panelVisible;
                    Storage.set("panelVisible", panelVisible);
                    updatePanelVisibility();
                    location.reload(); 
                }
            );
        }
    }
    let panel;

    function createPanel() {
        panel = document.createElement("div");
        panel.id = "mltf-panel";
        panel.dataset.mlExclude = "1";
        
        Object.assign(panel.style, {
            position: "fixed",
            top: "80px",
            right: "20px",
            width: "220px",
            padding: "10px",
            background: "#fff",
            zIndex: 999999,
            boxShadow: "0 0 10px rgba(0,0,0,.3)",
            fontSize: "13px",
            display: panelVisible ? "block" : "none",
            border: "1px solid #ccc",
        });
    
        // 标题
        const title = document.createElement("div");
        title.textContent = "文本过滤(调整后刷新网页生效)";
        title.style.fontWeight = "bold";
        panel.appendChild(title);
    
        // 阈值
        const thRow = document.createElement("div");
        thRow.textContent = "阈值:";
        const thVal = document.createElement("span");
        thVal.id = "ml-val";
        thRow.appendChild(thVal);
        panel.appendChild(thRow);
    
        const slider = document.createElement("input");
        slider.type = "range";
        slider.min = "-1";
        slider.max = "1";
        slider.step = "0.01";
        slider.id = "ml-th";
        panel.appendChild(slider);
    
        // 屏蔽词
        panel.appendChild(makeLabel("屏蔽词"));
        const blockTA = makeTextarea("ml-block", 3);
        panel.appendChild(blockTA);
    
        // 保留词
        panel.appendChild(makeLabel("保留词"));
        const keepTA = makeTextarea("ml-keep", 3);
        panel.appendChild(keepTA);
    
        document.body.appendChild(panel);
    
        bindPanelEvents(slider, thVal, blockTA, keepTA);
    }
        
    function makeLabel(text) {
        const d = document.createElement("div");
        d.textContent = text;
        return d;
    }
    
    function makeTextarea(id, rows) {
        const ta = document.createElement("textarea");
        ta.id = id;
        ta.rows = rows;
        ta.style.width = "100%";
        return ta;
    }
    

    function bindPanelEvents(slider, thVal, blockTA, keepTA) {
        // 初始化
        slider.value = Storage.get("scoreThreshold", 0);
        thVal.textContent = slider.value;
    
        blockTA.value = Storage.get("blockWords", "");
        keepTA.value = Storage.get("keepWords", "");
    
        slider.addEventListener("input", () => {
            thVal.textContent = slider.value;
            Storage.set("scoreThreshold", Number(slider.value));
        });
    
        blockTA.addEventListener("change", () => {
            Storage.set("blockWords", blockTA.value);
        });
    
        keepTA.addEventListener("change", () => {
            Storage.set("keepWords", keepTA.value);
        });
    }
    function updatePanelVisibility() {
        if (panel) {
            panel.style.display = panelVisible ? "block" : "none";
        }
    }
    function isExcludedNode(node) {
        let el = node;
        while (el && el !== document.body) {
            if (el.dataset && el.dataset.mlExclude === "1") {
                return true;
            }
            el = el.parentNode;
        }
        return false;
    }    

    function applyFilter() {
        const threshold = Storage.get("scoreThreshold", 0);
        const blockList = Storage.get("blockWords", "")
            .split("\n").map(w => w.trim()).filter(Boolean);
        const keepList = Storage.get("keepWords", "")
            .split("\n").map(w => w.trim()).filter(Boolean);
        const TAG_BLACKLIST = new Set([
                "INPUT",
                "TEXTAREA",
                "SELECT",
                "BUTTON"
            ]);
            
        for (const node of findTextContainers()) {
            if (isExcludedNode(node)) continue;
            if (!node.innerText || node.dataset.mlDone) continue;
            if (TAG_BLACKLIST.has(node.tagName)) continue;
            const text = node.innerText.trim();
            if (text.length < 3) continue;

            if (blockList.some(w => text.includes(w))) {
                node.textContent = "〇〇〇屏蔽词屏蔽";
                node.dataset.mlDone = "1";
                continue;
            }

            if (keepList.some(w => text.includes(w))) {
                node.dataset.mlDone = "1";
                continue;
            }

            const vec = tfidfVector(text.replace(/[^\u4e00-\u9fa5a-zA-Z0-9]/g, ' '), TFIDF_MODEL);
            let score = svmScore(vec, SVM_MODEL);
            let finalScore = text.length > 0 ? (score / text.length) : 0;
            if (finalScore < -1) finalScore = -1;

            if (finalScore < threshold) {
                const displayScore = finalScore.toFixed(2);
                node.textContent = `〇〇〇score=${displayScore}`;
            }

            node.dataset.mlDone = "1";
        }
    }

    new MutationObserver(applyFilter)
        .observe(document.body, { childList: true, subtree: true });


    registerMenu();
    createPanel();
    applyFilter();

})();