glin-profanity 3.1.1 → 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5050 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __commonJS = (cb, mod) => function __require() {
8
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
19
- // If the importer is in node compatibility mode or this is not an ESM
20
- // file that has been converted to a CommonJS file using a Babel-
21
- // compatible transform (i.e. "__esModule" has not been set), then set
22
- // "default" to the CommonJS "module.exports" for node compatibility.
23
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
24
- mod
25
- ));
26
-
27
- // src/types/types.ts
28
- var SeverityLevel = /* @__PURE__ */ ((SeverityLevel2) => {
29
- SeverityLevel2[SeverityLevel2["EXACT"] = 1] = "EXACT";
30
- SeverityLevel2[SeverityLevel2["FUZZY"] = 2] = "FUZZY";
31
- return SeverityLevel2;
32
- })(SeverityLevel || {});
33
-
34
- // src/utils/leetspeak.ts
35
- var BASIC_SUBSTITUTIONS = {
36
- "0": "o",
37
- "1": "i",
38
- "3": "e",
39
- "4": "a",
40
- "5": "s",
41
- "7": "t",
42
- "8": "b",
43
- "9": "g"
44
- };
45
- var MODERATE_SUBSTITUTIONS = {
46
- ...BASIC_SUBSTITUTIONS,
47
- "@": "a",
48
- "$": "s",
49
- "!": "i",
50
- "(": "c",
51
- "<": "c",
52
- "{": "c",
53
- "[": "c",
54
- "+": "t",
55
- "\u20AC": "e",
56
- "&": "e",
57
- "#": "h",
58
- "\xA5": "y",
59
- "\xA7": "s",
60
- "\u2020": "t",
61
- "\xAE": "r",
62
- "\xA9": "c",
63
- "\xB2": "2",
64
- "\xB3": "3"
65
- };
66
- var AGGRESSIVE_MULTI_CHAR = [
67
- // Letter A patterns
68
- [/\/\\/g, "a"],
69
- [/\/-\\/g, "a"],
70
- [/\^/g, "a"],
71
- // Letter B patterns
72
- [/\|3/g, "b"],
73
- [/13/g, "b"],
74
- [/ß/g, "b"],
75
- // Letter D patterns
76
- [/\|\)/g, "d"],
77
- [/\|>/g, "d"],
78
- [/\[\)/g, "d"],
79
- // Letter F patterns
80
- [/\|=/g, "f"],
81
- [/ph/gi, "f"],
82
- // Letter H patterns
83
- [/\|-\|/g, "h"],
84
- [/\}\{/g, "h"],
85
- // Letter K patterns
86
- [/\|</g, "k"],
87
- [/\|\{/g, "k"],
88
- // Letter L patterns
89
- [/\|_/g, "l"],
90
- // Letter M patterns
91
- [/\/\\\/\\/g, "m"],
92
- [/\|V\|/g, "m"],
93
- [/\[V\]/g, "m"],
94
- // Letter N patterns
95
- [/\/\\\//g, "n"],
96
- [/\|\\\|/g, "n"],
97
- // Letter P patterns
98
- [/\|\*/g, "p"],
99
- [/\|o/g, "p"],
100
- // Letter R patterns
101
- [/\|2/g, "r"],
102
- [/\|\?/g, "r"],
103
- // Letter U patterns
104
- [/\|_\|/g, "u"],
105
- [/\\_\\/g, "u"],
106
- [/\/_\//g, "u"],
107
- // Letter V patterns
108
- [/\\\//g, "v"],
109
- // Letter W patterns
110
- [/\\\/\\\//g, "w"],
111
- [/vv/gi, "w"],
112
- // Letter X patterns
113
- [/><]/g, "x"],
114
- // Letter Y patterns
115
- [/'\//g, "y"],
116
- // Letter Z patterns
117
- [/7_/g, "z"]
118
- ];
119
- var AGGRESSIVE_SUBSTITUTIONS = {
120
- ...MODERATE_SUBSTITUTIONS,
121
- "|": "i",
122
- "6": "g",
123
- "2": "z",
124
- "%": "z"
125
- };
126
- function normalizeLeetspeak(text, options = {}) {
127
- const {
128
- level = "moderate",
129
- collapseRepeated = true,
130
- maxRepeated = 2,
131
- removeSpacedChars = true
132
- } = options;
133
- let normalized = text;
134
- if (removeSpacedChars) {
135
- normalized = collapseSpacedCharacters(normalized);
136
- }
137
- if (level === "aggressive") {
138
- for (const [pattern, replacement] of AGGRESSIVE_MULTI_CHAR) {
139
- normalized = normalized.replace(pattern, replacement);
140
- }
141
- }
142
- const substitutions = getSubstitutionMap(level);
143
- normalized = normalized.split("").map((char) => substitutions[char] || char).join("");
144
- if (collapseRepeated) {
145
- normalized = collapseRepeatedCharacters(normalized, maxRepeated);
146
- }
147
- return normalized;
148
- }
149
- function getSubstitutionMap(level) {
150
- switch (level) {
151
- case "basic":
152
- return BASIC_SUBSTITUTIONS;
153
- case "moderate":
154
- return MODERATE_SUBSTITUTIONS;
155
- case "aggressive":
156
- return AGGRESSIVE_SUBSTITUTIONS;
157
- default:
158
- return MODERATE_SUBSTITUTIONS;
159
- }
160
- }
161
- function collapseSpacedCharacters(text) {
162
- const spacedPattern = /\b([a-zA-Z0-9@$!#])\s+([a-zA-Z0-9@$!#])(\s+[a-zA-Z0-9@$!#])+\b/g;
163
- return text.replace(spacedPattern, (match) => {
164
- return match.replace(/\s+/g, "");
165
- });
166
- }
167
- function collapseRepeatedCharacters(text, maxRepeated = 2) {
168
- const pattern = new RegExp(`(.)\\1{${maxRepeated},}`, "gi");
169
- return text.replace(pattern, (match, char) => char.repeat(maxRepeated));
170
- }
171
- function containsLeetspeak(text) {
172
- const leetspeakPatterns = [
173
- /[0-9]/,
174
- // Contains numbers (potential leetspeak)
175
- /[@$!#]/,
176
- // Contains common leetspeak symbols
177
- /(.)\1{3,}/,
178
- // Excessive character repetition
179
- /\b[a-zA-Z]\s+[a-zA-Z]\s+[a-zA-Z]\b/
180
- // Spaced characters
181
- ];
182
- return leetspeakPatterns.some((pattern) => pattern.test(text));
183
- }
184
- function generateLeetspeakVariants(word, level = "moderate") {
185
- const variants = /* @__PURE__ */ new Set([word.toLowerCase()]);
186
- const substitutions = getSubstitutionMap(level);
187
- const reverseMap = {};
188
- for (const [leet, normal] of Object.entries(substitutions)) {
189
- if (!reverseMap[normal]) {
190
- reverseMap[normal] = [];
191
- }
192
- reverseMap[normal].push(leet);
193
- }
194
- function generateVariants(current, index) {
195
- if (index >= word.length) {
196
- variants.add(current);
197
- return;
198
- }
199
- const char = word[index].toLowerCase();
200
- generateVariants(current + char, index + 1);
201
- if (reverseMap[char]) {
202
- for (const leetChar of reverseMap[char]) {
203
- generateVariants(current + leetChar, index + 1);
204
- }
205
- }
206
- }
207
- if (word.length <= 6) {
208
- generateVariants("", 0);
209
- }
210
- return Array.from(variants);
211
- }
212
-
213
- // src/utils/unicode.ts
214
- var HOMOGLYPHS = {
215
- // Cyrillic homoglyphs (look like Latin)
216
- "\u0430": "a",
217
- // Cyrillic small a
218
- "\u0410": "A",
219
- // Cyrillic capital A
220
- "\u0435": "e",
221
- // Cyrillic small e
222
- "\u0415": "E",
223
- // Cyrillic capital E
224
- "\u043E": "o",
225
- // Cyrillic small o
226
- "\u041E": "O",
227
- // Cyrillic capital O
228
- "\u0440": "p",
229
- // Cyrillic small er
230
- "\u0420": "P",
231
- // Cyrillic capital Er
232
- "\u0441": "c",
233
- // Cyrillic small es
234
- "\u0421": "C",
235
- // Cyrillic capital Es
236
- "\u0443": "y",
237
- // Cyrillic small u
238
- "\u0423": "Y",
239
- // Cyrillic capital U
240
- "\u0445": "x",
241
- // Cyrillic small ha
242
- "\u0425": "X",
243
- // Cyrillic capital Ha
244
- "\u0456": "i",
245
- // Cyrillic small i (Ukrainian)
246
- "\u0406": "I",
247
- // Cyrillic capital I (Ukrainian)
248
- "\u0458": "j",
249
- // Cyrillic small je
250
- "\u0408": "J",
251
- // Cyrillic capital Je
252
- "\u0455": "s",
253
- // Cyrillic small dze
254
- "\u0405": "S",
255
- // Cyrillic capital Dze
256
- // Greek homoglyphs
257
- "\u03B1": "a",
258
- // Greek small alpha
259
- "\u0391": "A",
260
- // Greek capital Alpha
261
- "\u03B2": "b",
262
- // Greek small beta (sort of)
263
- "\u0392": "B",
264
- // Greek capital Beta
265
- "\u03B5": "e",
266
- // Greek small epsilon
267
- "\u0395": "E",
268
- // Greek capital Epsilon
269
- "\u03B7": "n",
270
- // Greek small eta
271
- "\u0397": "H",
272
- // Greek capital Eta
273
- "\u03B9": "i",
274
- // Greek small iota
275
- "\u0399": "I",
276
- // Greek capital Iota
277
- "\u03BA": "k",
278
- // Greek small kappa
279
- "\u039A": "K",
280
- // Greek capital Kappa
281
- "\u03BD": "v",
282
- // Greek small nu (looks like v)
283
- "\u039D": "N",
284
- // Greek capital Nu
285
- "\u03BF": "o",
286
- // Greek small omicron
287
- "\u039F": "O",
288
- // Greek capital Omicron
289
- "\u03C1": "p",
290
- // Greek small rho
291
- "\u03A1": "P",
292
- // Greek capital Rho
293
- "\u03C4": "t",
294
- // Greek small tau
295
- "\u03A4": "T",
296
- // Greek capital Tau
297
- "\u03C5": "u",
298
- // Greek small upsilon
299
- "\u03A5": "Y",
300
- // Greek capital Upsilon
301
- "\u03C7": "x",
302
- // Greek small chi
303
- "\u03A7": "X",
304
- // Greek capital Chi
305
- // Mathematical symbols
306
- "\u2102": "C",
307
- // Double-struck capital C
308
- "\u210D": "H",
309
- // Double-struck capital H
310
- "\u2115": "N",
311
- // Double-struck capital N
312
- "\u2119": "P",
313
- // Double-struck capital P
314
- "\u211A": "Q",
315
- // Double-struck capital Q
316
- "\u211D": "R",
317
- // Double-struck capital R
318
- "\u2124": "Z",
319
- // Double-struck capital Z
320
- // Subscript/superscript
321
- "\u1D43": "a",
322
- "\u1D47": "b",
323
- "\u1D9C": "c",
324
- "\u1D48": "d",
325
- "\u1D49": "e",
326
- "\u1DA0": "f",
327
- "\u1D4D": "g",
328
- "\u02B0": "h",
329
- "\u2071": "i",
330
- "\u02B2": "j",
331
- "\u1D4F": "k",
332
- "\u02E1": "l",
333
- "\u1D50": "m",
334
- "\u207F": "n",
335
- "\u1D52": "o",
336
- "\u1D56": "p",
337
- "\u02B3": "r",
338
- "\u02E2": "s",
339
- "\u1D57": "t",
340
- "\u1D58": "u",
341
- "\u1D5B": "v",
342
- "\u02B7": "w",
343
- "\u02E3": "x",
344
- "\u02B8": "y",
345
- "\u1DBB": "z",
346
- // Small caps
347
- "\u1D00": "A",
348
- "\u0299": "B",
349
- "\u1D04": "C",
350
- "\u1D05": "D",
351
- "\u1D07": "E",
352
- "\uA730": "F",
353
- "\u0262": "G",
354
- "\u029C": "H",
355
- "\u026A": "I",
356
- "\u1D0A": "J",
357
- "\u1D0B": "K",
358
- "\u029F": "L",
359
- "\u1D0D": "M",
360
- "\u0274": "N",
361
- "\u1D0F": "O",
362
- "\u1D18": "P",
363
- "\u01EB": "Q",
364
- "\u0280": "R",
365
- "\uA731": "S",
366
- "\u1D1B": "T",
367
- "\u1D1C": "U",
368
- "\u1D20": "V",
369
- "\u1D21": "W",
370
- "\u028F": "Y",
371
- "\u1D22": "Z",
372
- // Other lookalikes
373
- "\u24D0": "a",
374
- "\u24D1": "b",
375
- "\u24D2": "c",
376
- "\u24D3": "d",
377
- "\u24D4": "e",
378
- "\u24D5": "f",
379
- "\u24D6": "g",
380
- "\u24D7": "h",
381
- "\u24D8": "i",
382
- "\u24D9": "j",
383
- "\u24DA": "k",
384
- "\u24DB": "l",
385
- "\u24DC": "m",
386
- "\u24DD": "n",
387
- "\u24DE": "o",
388
- "\u24DF": "p",
389
- "\u24E0": "q",
390
- "\u24E1": "r",
391
- "\u24E2": "s",
392
- "\u24E3": "t",
393
- "\u24E4": "u",
394
- "\u24E5": "v",
395
- "\u24E6": "w",
396
- "\u24E7": "x",
397
- "\u24E8": "y",
398
- "\u24E9": "z",
399
- // Fancy Unicode letters
400
- "\uFF41": "a",
401
- "\uFF42": "b",
402
- "\uFF43": "c",
403
- "\uFF44": "d",
404
- "\uFF45": "e",
405
- "\uFF46": "f",
406
- "\uFF47": "g",
407
- "\uFF48": "h",
408
- "\uFF49": "i",
409
- "\uFF4A": "j",
410
- "\uFF4B": "k",
411
- "\uFF4C": "l",
412
- "\uFF4D": "m",
413
- "\uFF4E": "n",
414
- "\uFF4F": "o",
415
- "\uFF50": "p",
416
- "\uFF51": "q",
417
- "\uFF52": "r",
418
- "\uFF53": "s",
419
- "\uFF54": "t",
420
- "\uFF55": "u",
421
- "\uFF56": "v",
422
- "\uFF57": "w",
423
- "\uFF58": "x",
424
- "\uFF59": "y",
425
- "\uFF5A": "z",
426
- // Mirrored/rotated
427
- "\u0250": "a",
428
- "\u0254": "c",
429
- "\u01DD": "e",
430
- "\u025F": "j",
431
- "\u0265": "h",
432
- "\u026F": "m",
433
- "\u0279": "r",
434
- "\u0287": "t",
435
- "\u028C": "v",
436
- "\u028D": "w",
437
- // Common lookalikes
438
- "\u0142": "l",
439
- "\u0141": "L",
440
- "\xF8": "o",
441
- "\xD8": "O",
442
- "\u0111": "d",
443
- "\u0110": "D",
444
- "\u0127": "h",
445
- "\u0126": "H",
446
- "\u0131": "i",
447
- "\u0130": "I",
448
- "\u0138": "k",
449
- "\u0140": "l",
450
- "\u013F": "L",
451
- "\u014B": "n",
452
- "\u014A": "N",
453
- "\u0153": "oe",
454
- "\u0152": "OE",
455
- "\u017F": "s",
456
- "\u0167": "t",
457
- "\u0166": "T"
458
- };
459
- var ZERO_WIDTH_CHARS = [
460
- "\u200B",
461
- // Zero-width space
462
- "\u200C",
463
- // Zero-width non-joiner
464
- "\u200D",
465
- // Zero-width joiner
466
- "\u200E",
467
- // Left-to-right mark
468
- "\u200F",
469
- // Right-to-left mark
470
- "\u2060",
471
- // Word joiner
472
- "\u2061",
473
- // Function application
474
- "\u2062",
475
- // Invisible times
476
- "\u2063",
477
- // Invisible separator
478
- "\u2064",
479
- // Invisible plus
480
- "\uFEFF",
481
- // Byte order mark / zero-width no-break space
482
- "\xAD",
483
- // Soft hyphen
484
- "\u034F",
485
- // Combining grapheme joiner
486
- "\u061C",
487
- // Arabic letter mark
488
- "\u115F",
489
- // Hangul choseong filler
490
- "\u1160",
491
- // Hangul jungseong filler
492
- "\u17B4",
493
- // Khmer vowel inherent Aq
494
- "\u17B5",
495
- // Khmer vowel inherent Aa
496
- "\u180E",
497
- // Mongolian vowel separator
498
- "\u3164"
499
- // Hangul filler
500
- ];
501
- function normalizeUnicode(text, options = {}) {
502
- const {
503
- nfkd = true,
504
- homoglyphs = true,
505
- fullWidth = true,
506
- removeDiacritics = true,
507
- removeZeroWidth = true
508
- } = options;
509
- let normalized = text;
510
- if (removeZeroWidth) {
511
- normalized = removeZeroWidthCharacters(normalized);
512
- }
513
- if (fullWidth) {
514
- normalized = convertFullWidth(normalized);
515
- }
516
- if (homoglyphs) {
517
- normalized = convertHomoglyphs(normalized);
518
- }
519
- if (nfkd || removeDiacritics) {
520
- normalized = normalizeNFKD(normalized, removeDiacritics);
521
- }
522
- return normalized;
523
- }
524
- function removeZeroWidthCharacters(text) {
525
- const pattern = new RegExp(`[${ZERO_WIDTH_CHARS.join("")}]`, "g");
526
- return text.replace(pattern, "");
527
- }
528
- function convertFullWidth(text) {
529
- return text.replace(/[\uFF01-\uFF5E]/g, (char) => {
530
- return String.fromCharCode(char.charCodeAt(0) - 65248);
531
- });
532
- }
533
- function convertHomoglyphs(text) {
534
- return text.split("").map((char) => HOMOGLYPHS[char] || char).join("");
535
- }
536
- function normalizeNFKD(text, removeDiacritics = true) {
537
- let normalized = text.normalize("NFKD");
538
- if (removeDiacritics) {
539
- normalized = normalized.replace(/[\u0300-\u036f]/g, "");
540
- }
541
- return normalized;
542
- }
543
- function containsUnicodeObfuscation(text) {
544
- const zeroWidthPattern = new RegExp(`[${ZERO_WIDTH_CHARS.join("")}]`);
545
- if (zeroWidthPattern.test(text)) return true;
546
- if (/[\uFF01-\uFF5E]/.test(text)) return true;
547
- for (const char of text) {
548
- if (HOMOGLYPHS[char]) return true;
549
- }
550
- if (/[\u0300-\u036f]/.test(text)) return true;
551
- if (text !== text.normalize("NFKD")) return true;
552
- return false;
553
- }
554
- function detectCharacterSets(text) {
555
- const hasLatin = /[a-zA-Z]/.test(text);
556
- const hasCyrillic = /[\u0400-\u04FF]/.test(text);
557
- const hasGreek = /[\u0370-\u03FF]/.test(text);
558
- const hasFullWidth = /[\uFF01-\uFF5E]/.test(text);
559
- const scriptCount = [hasLatin, hasCyrillic, hasGreek, hasFullWidth].filter(Boolean).length;
560
- return {
561
- hasLatin,
562
- hasCyrillic,
563
- hasGreek,
564
- hasFullWidth,
565
- hasMixed: scriptCount > 1
566
- };
567
- }
568
-
569
- // ../../shared/dictionaries/arabic.json
570
- var arabic_default = {
571
- words: [
572
- "\u0633\u0643\u0633",
573
- "\u0637\u064A\u0632",
574
- "\u0634\u0631\u062C",
575
- "\u0644\u0639\u0642",
576
- "\u0644\u062D\u0633",
577
- "\u062A\u0645\u0635",
578
- "\u0628\u064A\u0636\u0627\u0646",
579
- "\u062B\u062F\u064A",
580
- "\u0628\u0632",
581
- "\u062D\u0644\u0645\u0629",
582
- "\u0645\u0641\u0644\u0642\u0633\u0629",
583
- "\u0628\u0638\u0631",
584
- "\u0643\u0633",
585
- "\u0645\u0628\u0627\u062F\u0644",
586
- "\u0639\u0627\u0647\u0631\u0629",
587
- "\u062C\u0645\u0627\u0639",
588
- "\u0642\u0636\u064A\u0628",
589
- "\u0632\u0628",
590
- "\u0644\u0648\u0637\u064A",
591
- "\u0644\u0648\u0627\u0637",
592
- "\u0633\u062D\u0627\u0642",
593
- "\u0627\u063A\u062A\u0635\u0627\u0628",
594
- "\u062E\u0646\u062B\u064A",
595
- "\u0627\u062D\u062A\u0644\u0627\u0645",
596
- "\u0646\u064A\u0643",
597
- "\u0645\u062A\u0646\u0627\u0643",
598
- "\u0634\u0631\u0645\u0648\u0637\u0629",
599
- "\u0639\u0631\u0635",
600
- "\u062E\u0648\u0644",
601
- "\u0642\u062D\u0628\u0629",
602
- "\u0644\u0628\u0648\u0629",
603
- "\u0648\u0633\u062E",
604
- "\u0639\u0644\u0642",
605
- "\u0646\u0627\u0643",
606
- "\u0645\u0646\u064A\u0643",
607
- "\u0634\u0631\u0645\u0637",
608
- "\u0642\u062D\u0628",
609
- "\u0634\u0631\u0645\u0648\u0637",
610
- "\u062E\u0648\u0644",
611
- "\u0647\u0646\u064A\u0643",
612
- "\u0641\u062D\u0644",
613
- "\u062F\u064A\u0648\u062B",
614
- "\u0645\u062A\u0646\u0627\u0643",
615
- "\u0647\u0627\u064A\u062C",
616
- "\u0632\u0628\u0631",
617
- "bdsm",
618
- "\u0632\u0627\u0646",
619
- "\u0633\u0627\u062F\u064A",
620
- "\u0633\u0627\u062F\u0649",
621
- "\u0643\u0633\u0647\u0627",
622
- "\u0643\u0633\u064A",
623
- "\u0643\u0633\u0643",
624
- "\u0643\u0633\u0645",
625
- "\u0628\u0646\u062A\u0627\u0643",
626
- "\u0628\u062A\u0646\u0627\u0643",
627
- "\u0646\u064A\u0643\u0646\u064A",
628
- "\u062F\u064A\u0648\u062B",
629
- "\u0646\u064A\u0627\u0643",
630
- "\u0641\u0634\u0627\u062E",
631
- "\u0641\u0634\u062E",
632
- "\u0647\u0641\u0634\u062E\u0643",
633
- "\u0634\u0630\u0648\u0630",
634
- "\u0644\u0648\u0627\u0637",
635
- "\u0644\u0648\u0637\u064A",
636
- "\u0644\u0648\u0637\u0649",
637
- "\u0639\u0627\u0647\u0631",
638
- "\u0644\u062D\u0633",
639
- "\u0645\u062A\u0639",
640
- "\u062D\u0645\u0627\u0645",
641
- "\u0647\u0631\u0628\u0637",
642
- "\u062F\u064A\u0627\u062B",
643
- "\u0633\u062D\u0627\u0642",
644
- "\u062C\u0646\u0633",
645
- "\u062C\u0646\u0633",
646
- "\u062C\u0648\u0632\u064A",
647
- "\u0645\u0631\u0627\u062A\u064A",
648
- "\u0645\u0631\u0627\u062A\u0649",
649
- "\u0645\u0631\u0627\u062A",
650
- "\u0648\u0631\u0627",
651
- "\u0634\u0639\u0631",
652
- "\u0645\u0634\u0639\u0631",
653
- "\u0627\u0631\u0643\u0628",
654
- "\u0641\u0631\u0633",
655
- "\u062C\u0627\u062F",
656
- "\u0645\u0646\u064A\u0648\u0643",
657
- "\u0632\u0648\u0628\u0631",
658
- "\u0637\u064A\u0627\u0632",
659
- "\u0634\u0631\u0627\u0645\u064A\u0637",
660
- "\u0641\u0627\u062C\u0631",
661
- "\u0645\u062D\u0631\u0648\u0645",
662
- "\u0648\u0627\u0642\u0641",
663
- "\u0628\u064A\u062D\u0643",
664
- "\u0645\u0645\u062D\u0648\u0646\u0629",
665
- "\u0644\u0628\u0646",
666
- "\u0644\u0628\u0648",
667
- "\u0648\u0627\u0642\u0641",
668
- "\u0634\u0631\u0642\u0627\u0646",
669
- "\u0627\u0641\u0636\u064A",
670
- "\u062F\u0647\u0648\u0644\u062A",
671
- "bzaz",
672
- "nek",
673
- "nik",
674
- "mtnak",
675
- "zeb",
676
- "zep",
677
- "zobr",
678
- "zopr",
679
- "kos",
680
- "a7a",
681
- "hayg",
682
- "\u0644\u0628\u0648\u0647",
683
- "\u0644\u0628\u0648\u0629",
684
- "\u0644\u0628\u0648\u062A",
685
- "sharma",
686
- "banoty",
687
- "\u0628\u0646\u0648\u062A\u064A",
688
- "\u0628\u0646\u0648\u062A\u0649",
689
- "\u0633\u0644\u0628",
690
- "\u0639\u0627\u064A\u0632",
691
- "\u062F\u0643\u0631",
692
- "\u0646\u062A\u0627\u064A\u0629",
693
- "\u0646\u062A\u0627\u064A\u0647",
694
- "\u0632\u0646\u062C",
695
- "\u0645\u0645\u062D\u0648\u0646",
696
- "\u062A\u0639\u0628\u0627\u0646",
697
- "\u0627\u0642\u0639\u062F",
698
- "\u0628\u0632\u0627\u0632",
699
- "\u0647\u064A\u062C\u0627\u0646",
700
- "\u0633\u0627\u0641\u0644",
701
- "\u0645\u0635\u064A\u0647\u0648\u0644\u064A",
702
- "\u0647\u062A\u0645\u0635",
703
- "\u0645\u0635\u064A",
704
- "\u0628\u0632",
705
- "hayg",
706
- "\u0643\u0644\u0648\u062A",
707
- "\u0627\u0646\u062F\u0631",
708
- "\u0633\u0646\u062A\u064A\u0627",
709
- "\u0628\u0648\u0643\u0633\u0631",
710
- "\u0628\u062A\u0627\u0639",
711
- "\u0645\u0634\u062A\u0647\u064A",
712
- "\u0632\u0628\u0649",
713
- "\u0646\u0643\u062A\u0647",
714
- "\u0627\u062A\u0646\u0627\u0643",
715
- "nayak",
716
- "nyak",
717
- "neeek",
718
- "\u0627\u063A\u062A\u0635\u0627",
719
- "\u0632\u0628",
720
- "\u0643\u0633",
721
- "\u0628\u0644\u0643\u064A\u0634\u0646",
722
- "\u0643\u064A\u0634\u0646",
723
- "\u0644\u064A\u0633\u0628\u064A\u0627\u0646",
724
- "\u0633\u0628\u064A\u0627\u0646"
725
- ]
726
- };
727
-
728
- // ../../shared/dictionaries/chinese.json
729
- var chinese_default = {
730
- words: [
731
- "13.",
732
- "13\u70B9",
733
- "\u4E09\u7EA7\u7247",
734
- "\u4E0B\u4E09\u70C2",
735
- "\u4E0B\u8D31",
736
- "\u4E2A\u8001\u5B50\u7684",
737
- "\u4E5D\u6E38",
738
- "\u4E73",
739
- "\u4E73\u4EA4",
740
- "\u4E73\u5934",
741
- "\u4E73\u623F",
742
- "\u4E73\u6CE2\u81C0\u6D6A",
743
- "\u4EA4\u914D",
744
- "\u4EC6\u8857",
745
- "\u4ED6\u5976\u5976",
746
- "\u4ED6\u5976\u5976\u7684",
747
- "\u4ED6\u5976\u5A18\u7684",
748
- "\u4ED6\u5988",
749
- "\u4ED6\u5988\u3109\u738B\u516B\u86CB",
750
- "\u4ED6\u5988\u5730",
751
- "\u4ED6\u5988\u7684",
752
- "\u4ED6\u5A18",
753
- "\u4ED6\u9A6C\u7684",
754
- "\u4F60\u4E2A\u50BB\u6BD4",
755
- "\u4F60\u4ED6\u9A6C\u7684",
756
- "\u4F60\u5168\u5BB6",
757
- "\u4F60\u5976\u5976\u7684",
758
- "\u4F60\u5979\u9A6C\u7684",
759
- "\u4F60\u5988",
760
- "\u4F60\u5988\u7684",
761
- "\u4F60\u5A18",
762
- "\u4F60\u5A18\u5361\u597D",
763
- "\u4F60\u5A18\u54A7",
764
- "\u4F60\u5B83\u5988\u7684",
765
- "\u4F60\u5B83\u9A6C\u7684",
766
- "\u4F60\u662F\u9E21",
767
- "\u4F60\u662F\u9E2D",
768
- "\u4F60\u9A6C\u7684",
769
- "\u505A\u7231",
770
- "\u50BB\u6BD4",
771
- "\u50BB\u903C",
772
- "\u518C\u90A3",
773
- "\u519B\u5993",
774
- "\u51E0\u516B",
775
- "\u51E0\u53ED",
776
- "\u51E0\u5DF4",
777
- "\u51E0\u82AD",
778
- "\u521A\u5EA6",
779
- "\u521A\u762A\u4E09",
780
- "\u5305\u76AE",
781
- "\u5341\u4E09\u70B9",
782
- "\u5356B",
783
- "\u5356\u6BD4",
784
- "\u5356\u6DEB",
785
- "\u5375",
786
- "\u5375\u5B50",
787
- "\u53CC\u5CF0\u5FAE\u98A4",
788
- "\u53E3\u4EA4",
789
- "\u53E3\u80AF",
790
- "\u53EB\u5E8A",
791
- "\u5403\u5C4E",
792
- "\u540E\u5EAD",
793
- "\u5439\u7BAB",
794
- "\u585E\u4F60\u516C",
795
- "\u585E\u4F60\u5A18",
796
- "\u585E\u4F60\u6BCD",
797
- "\u585E\u4F60\u7238",
798
- "\u585E\u4F60\u8001\u5E08",
799
- "\u585E\u4F60\u8001\u6BCD",
800
- "\u5904\u5973",
801
- "\u5916\u9634",
802
- "\u5927\u5375\u5B50",
803
- "\u5927\u5375\u6CE1",
804
- "\u5927\u9E21\u5DF4",
805
- "\u5976",
806
- "\u5976\u5976\u7684\u718A",
807
- "\u5976\u5B50",
808
- "\u5978",
809
- "\u5978\u4F60",
810
- "\u5979\u5988\u5730",
811
- "\u5979\u5988\u7684",
812
- "\u5979\u9A6C\u7684",
813
- "\u5988B",
814
- "\u5988\u4E2AB",
815
- "\u5988\u4E2A\u6BD4",
816
- "\u5988\u4E2A\u8001\u6BD4",
817
- "\u5988\u5988\u7684",
818
- "\u5988\u6BD4",
819
- "\u5988\u7684",
820
- "\u5988\u7684B",
821
- "\u5988\u903C",
822
- "\u5993",
823
- "\u5993\u5973",
824
- "\u5993\u9662",
825
- "\u59B3\u5979\u5988\u7684",
826
- "\u59B3\u5988\u7684",
827
- "\u59B3\u5A18\u7684",
828
- "\u59B3\u8001\u6BCD\u7684",
829
- "\u59B3\u9A6C\u7684",
830
- "\u59D8\u5934",
831
- "\u59E3\u897F",
832
- "\u59E6",
833
- "\u5A18\u4E2A\u6BD4",
834
- "\u5A18\u7684",
835
- "\u5A4A\u5B50",
836
- "\u5A4A\u5B50\u517B\u7684",
837
- "\u5AD6\u5A3C",
838
- "\u5AD6\u5BA2",
839
- "\u5B83\u5988\u5730",
840
- "\u5B83\u5988\u7684",
841
- "\u5BC6\u6D1E",
842
- "\u5C04\u4F60",
843
- "\u5C04\u7CBE",
844
- "\u5C0F\u4E73\u5934",
845
- "\u5C0F\u5375\u5B50",
846
- "\u5C0F\u5375\u6CE1",
847
- "\u5C0F\u762A\u4E09",
848
- "\u5C0F\u8089\u7C92",
849
- "\u5C0F\u9A9A\u6BD4",
850
- "\u5C0F\u9A9A\u8D27",
851
- "\u5C0F\u9E21\u5DF4",
852
- "\u5C0F\u9E21\u9E21",
853
- "\u5C41\u773C",
854
- "\u5C41\u80A1",
855
- "\u5C44",
856
- "\u5C4C",
857
- "\u5DE8\u4E73",
858
- "\u5E72x\u5A18",
859
- "\u5E72\u4E03\u516B",
860
- "\u5E72\u4F60",
861
- "\u5E72\u4F60\u5988",
862
- "\u5E72\u4F60\u5A18",
863
- "\u5E72\u4F60\u8001\u6BCD",
864
- "\u5E72\u4F60\u826F",
865
- "\u5E72\u59B3\u5988",
866
- "\u5E72\u59B3\u5A18",
867
- "\u5E72\u59B3\u8001\u6BCD",
868
- "\u5E72\u59B3\u9A6C",
869
- "\u5E72\u60A8\u5A18",
870
- "\u5E72\u673A\u63B0",
871
- "\u5E72\u6B7BCS",
872
- "\u5E72\u6B7BGM",
873
- "\u5E72\u6B7B\u4F60",
874
- "\u5E72\u6B7B\u5BA2\u670D",
875
- "\u5E79",
876
- "\u5F3A\u5978",
877
- "\u5F3A\u5978\u4F60",
878
- "\u6027",
879
- "\u6027\u4EA4",
880
- "\u6027\u5668",
881
- "\u6027\u65E0\u80FD",
882
- "\u6027\u7231",
883
- "\u60C5\u8272",
884
- "\u60F3\u4E0A\u4F60",
885
- "\u61C6\u60A8\u5988",
886
- "\u61C6\u60A8\u5A18",
887
- "\u61D28",
888
- "\u61D2\u516B",
889
- "\u61D2\u53EB",
890
- "\u61D2\u6559",
891
- "\u6210\u4EBA",
892
- "\u6211\u64CD\u4F60\u7956\u5B97\u5341\u516B\u4EE3",
893
- "\u6252\u5149",
894
- "\u6253\u70AE",
895
- "\u6253\u98DE\u673A",
896
- "\u62BD\u63D2",
897
- "\u62DB\u5993",
898
- "\u63D2\u4F60",
899
- "\u63D2\u6B7B\u4F60",
900
- "\u6492\u5C3F",
901
- "\u64CD\u4F60",
902
- "\u64CD\u4F60\u5168\u5BB6",
903
- "\u64CD\u4F60\u5976\u5976",
904
- "\u64CD\u4F60\u5988",
905
- "\u64CD\u4F60\u5A18",
906
- "\u64CD\u4F60\u7956\u5B97",
907
- "\u64CD\u4F60\u8001\u5988",
908
- "\u64CD\u4F60\u8001\u6BCD",
909
- "\u64CD\u59B3",
910
- "\u64CD\u59B3\u5168\u5BB6",
911
- "\u64CD\u59B3\u5988",
912
- "\u64CD\u59B3\u5A18",
913
- "\u64CD\u59B3\u7956\u5B97",
914
- "\u64CD\u673A\u63B0",
915
- "\u64CD\u6BD4",
916
- "\u64CD\u903C",
917
- "\u653E\u8361",
918
- "\u65E5\u4ED6\u5A18",
919
- "\u65E5\u4F60",
920
- "\u65E5\u4F60\u5988",
921
- "\u65E5\u4F60\u8001\u5A18",
922
- "\u65E5\u4F60\u8001\u6BCD",
923
- "\u65E5\u6279",
924
- "\u6708\u7ECF",
925
- "\u673A\u516B",
926
- "\u673A\u5DF4",
927
- "\u673A\u673A\u6B6A\u6B6A",
928
- "\u6742\u79CD",
929
- "\u6D6A\u53EB",
930
- "\u6DEB",
931
- "\u6DEB\u4E71",
932
- "\u6DEB\u5987",
933
- "\u6DEB\u68CD",
934
- "\u6DEB\u6C34",
935
- "\u6DEB\u79FD",
936
- "\u6DEB\u8361",
937
- "\u6DEB\u897F",
938
- "\u6E7F\u900F\u7684\u5185\u88E4",
939
- "\u6FC0\u60C5",
940
- "\u7068\u4F60\u5A18",
941
- "\u70C2\u8D27",
942
- "\u70C2\u903C",
943
- "\u721B",
944
- "\u72D7\u5C41",
945
- "\u72D7\u65E5",
946
- "\u72D7\u72FC\u517B\u7684",
947
- "\u7389\u6775",
948
- "\u738B\u516B\u86CB",
949
- "\u74DC\u5A03\u5B50",
950
- "\u74DC\u5A46\u5A18",
951
- "\u74DC\u6279",
952
- "\u762A\u4E09",
953
- "\u767D\u70C2",
954
- "\u767D\u75F4",
955
- "\u767D\u7661",
956
- "\u7956\u5B97",
957
- "\u79C1\u670D",
958
- "\u7B28\u86CB",
959
- "\u7CBE\u5B50",
960
- "\u8001\u4E8C",
961
- "\u8001\u5473",
962
- "\u8001\u6BCD",
963
- "\u8001\u762A\u4E09",
964
- "\u8001\u9A9A\u6BD4",
965
- "\u8001\u9A9A\u8D27",
966
- "\u8089\u58C1",
967
- "\u8089\u68CD\u5B50",
968
- "\u8089\u68D2",
969
- "\u8089\u7F1D",
970
- "\u808F",
971
- "\u809B\u4EA4",
972
- "\u80A5\u897F",
973
- "\u8272\u60C5",
974
- "\u82B1\u67F3",
975
- "\u8361\u5987",
976
- "\u8CE4",
977
- "\u8D1D\u8089",
978
- "\u8D31B",
979
- "\u8D31\u4EBA",
980
- "\u8D31\u8D27",
981
- "\u8D3C\u4F60\u5988",
982
- "\u8D5B\u4F60\u8001\u6BCD",
983
- "\u8D5B\u59B3\u963F\u6BCD",
984
- "\u8D63\u60A8\u5A18",
985
- "\u8F6E\u5978",
986
- "\u8FF7\u836F",
987
- "\u903C",
988
- "\u903C\u6837",
989
- "\u91CE\u9E21",
990
- "\u9633\u5177",
991
- "\u9633\u840E",
992
- "\u9634\u5507",
993
- "\u9634\u6237",
994
- "\u9634\u6838",
995
- "\u9634\u6BDB",
996
- "\u9634\u830E",
997
- "\u9634\u9053",
998
- "\u9634\u90E8",
999
- "\u96DE\u5DF4",
1000
- "\u9760\u5317",
1001
- "\u9760\u6BCD",
1002
- "\u9760\u7238",
1003
- "\u9760\u80CC",
1004
- "\u9760\u8170",
1005
- "\u9A76\u4F60\u516C",
1006
- "\u9A76\u4F60\u5A18",
1007
- "\u9A76\u4F60\u6BCD",
1008
- "\u9A76\u4F60\u7238",
1009
- "\u9A76\u4F60\u8001\u5E08",
1010
- "\u9A76\u4F60\u8001\u6BCD",
1011
- "\u9A9A\u6BD4",
1012
- "\u9A9A\u8D27",
1013
- "\u9A9A\u903C",
1014
- "\u9B3C\u516C",
1015
- "\u9E218",
1016
- "\u9E21\u516B",
1017
- "\u9E21\u53ED",
1018
- "\u9E21\u5427",
1019
- "\u9E21\u5978",
1020
- "\u9E21\u5DF4",
1021
- "\u9E21\u82AD",
1022
- "\u9E21\u9E21",
1023
- "\u9F9F\u513F\u5B50",
1024
- "\u9F9F\u5934"
1025
- ]
1026
- };
1027
-
1028
- // ../../shared/dictionaries/czech.json
1029
- var czech_default = {
1030
- words: [
1031
- "bordel",
1032
- "buzna",
1033
- "\u010Dum\u011Bt",
1034
- "\u010Dur\xE1k",
1035
- "debil",
1036
- "do pi\u010De",
1037
- "do prdele",
1038
- "dr\u0161\u0165ka",
1039
- "dr\u017Eka",
1040
- "flundra",
1041
- "hajzl",
1042
- "hovno",
1043
- "chcanky",
1044
- "chuj",
1045
- "jebat",
1046
- "kokot",
1047
- "kokotina",
1048
- "ko\u0148omrd",
1049
- "kunda",
1050
- "kurva",
1051
- "mamrd",
1052
- "mrdat",
1053
- "mrdka",
1054
- "mrdn\xEDk",
1055
- "oslo\u0161oust",
1056
- "pi\u010Da",
1057
- "p\xED\u010Dus",
1058
- "p\xEDchat",
1059
- "pizda",
1060
- "prcat",
1061
- "prdel",
1062
- "prdelka",
1063
- "sra\u010Dka",
1064
- "sr\xE1t",
1065
- "\u0161oustat",
1066
- "\u0161ulin",
1067
- "vyp\xED\u010Denec",
1068
- "zkurvit",
1069
- "zkurvysyn",
1070
- "zmrd",
1071
- "\u017Er\xE1t"
1072
- ]
1073
- };
1074
-
1075
- // ../../shared/dictionaries/danish.json
1076
- var danish_default = {
1077
- words: [
1078
- "anus",
1079
- "b\xF8sser\xF8v",
1080
- "cock",
1081
- "fisse",
1082
- "fisseh\xE5r",
1083
- "fuck",
1084
- "hestepik",
1085
- "kussekryller",
1086
- "lort",
1087
- "luder",
1088
- "pik",
1089
- "pikh\xE5r",
1090
- "pikslugeri",
1091
- "piksutteri",
1092
- "pis",
1093
- "r\xF8v",
1094
- "r\xF8vhul",
1095
- "r\xF8vsk\xE6g",
1096
- "r\xF8vspr\xE6ke",
1097
- "shit"
1098
- ]
1099
- };
1100
-
1101
- // ../../shared/dictionaries/dutch.json
1102
- var dutch_default = {
1103
- words: [
1104
- "aardappels afgieteng",
1105
- "achter het raam zitten",
1106
- "afberen",
1107
- "aflebberen",
1108
- "afrossen",
1109
- "afrukken",
1110
- "aftrekken",
1111
- "afwerkplaats",
1112
- "afzeiken",
1113
- "afzuigen",
1114
- "anderhalve man en een paardekop",
1115
- "anita",
1116
- "asbak",
1117
- "aso",
1118
- "bagger schijten",
1119
- "balen",
1120
- "bedonderen",
1121
- "befborstelg",
1122
- "beffen",
1123
- "bekken",
1124
- "belazeren",
1125
- "besodemieterd zijn",
1126
- "besodemieteren",
1127
- "beurt",
1128
- "boemelen",
1129
- "boerelul",
1130
- "boerenpummelg",
1131
- "bokkelul",
1132
- "botergeil",
1133
- "broekhoesten",
1134
- "brugpieperg",
1135
- "buffelen",
1136
- "buiten de pot piesen",
1137
- "da's kloten van de bok",
1138
- "de ballen",
1139
- "de hoer spelen",
1140
- "de hond uitlaten",
1141
- "de koffer induiken",
1142
- "delg",
1143
- "de pijp aan maarten geven",
1144
- "de pijp uitgaan",
1145
- "dombo",
1146
- "draaikontg",
1147
- "driehoog achter wonen",
1148
- "drolg",
1149
- "drooggeiler",
1150
- "droogkloot",
1151
- "een beurt geven",
1152
- "een nummertje maken",
1153
- "een wip maken",
1154
- "eikel",
1155
- "engerd",
1156
- "flamoes",
1157
- "flikken",
1158
- "flikker",
1159
- "gadverdamme",
1160
- "galbak",
1161
- "gat",
1162
- "gedoogzone",
1163
- "geilneef",
1164
- "gesodemieter",
1165
- "godverdomme",
1166
- "graftak",
1167
- "gras maaien",
1168
- "gratenkutg",
1169
- "greppeldel",
1170
- "griet",
1171
- "hoempert",
1172
- "hoer",
1173
- "hoerenbuurt",
1174
- "hoerenloper",
1175
- "hoerig",
1176
- "hol",
1177
- "hufter",
1178
- "huisdealer",
1179
- "johny",
1180
- "kanen",
1181
- "kettingzeugg",
1182
- "klaarkomen",
1183
- "klerebeer",
1184
- "klojo",
1185
- "klooien",
1186
- "klootjesvolk",
1187
- "klootoog",
1188
- "klootzak",
1189
- "kloten",
1190
- "knor",
1191
- "kontg",
1192
- "kontneuken",
1193
- "krentekakker",
1194
- "kut",
1195
- "kuttelikkertje",
1196
- "kwakkieg",
1197
- "liefdesgrot",
1198
- "lul",
1199
- "lul-de-behanger",
1200
- "lulhannes",
1201
- "lummel",
1202
- "mafketel",
1203
- "matennaaierg",
1204
- "matje",
1205
- "mof",
1206
- "mutsg",
1207
- "naaien",
1208
- "naakt",
1209
- "neuken",
1210
- "neukstier",
1211
- "nicht",
1212
- "oetlul",
1213
- "opgeilen",
1214
- "opkankeren",
1215
- "oprotten",
1216
- "opsodemieteren",
1217
- "op z'n hondjes",
1218
- "op z'n sodemieter geven",
1219
- "opzouten",
1220
- "ouwehoer",
1221
- "ouwehoeren",
1222
- "ouwe rukker",
1223
- "paal",
1224
- "paardelul",
1225
- "palen",
1226
- "penozeg",
1227
- "piesen",
1228
- "pijpbekkieg",
1229
- "pijpen",
1230
- "pik",
1231
- "pleurislaaier",
1232
- "poep",
1233
- "poepen",
1234
- "poot",
1235
- "portiekslet",
1236
- "pot",
1237
- "potverdorie",
1238
- "publiciteitsgeil",
1239
- "raaskallen",
1240
- "reet",
1241
- "reetridder",
1242
- "reet trappen, voor zijn",
1243
- "remsporeng",
1244
- "reutelen",
1245
- "rothoer",
1246
- "rotzak",
1247
- "rukhond",
1248
- "rukken",
1249
- "schatje",
1250
- "schijt",
1251
- "schijten",
1252
- "schoft",
1253
- "schuinsmarcheerder",
1254
- "shit",
1255
- "slempen",
1256
- "sletg",
1257
- "sletterig",
1258
- "slik mijn zaad",
1259
- "snolg",
1260
- "spuiten",
1261
- "standje",
1262
- "standje-69g",
1263
- "stoephoer",
1264
- "stootje",
1265
- "strontg",
1266
- "sufferdg",
1267
- "tapijtnek",
1268
- "teefg",
1269
- "temeier",
1270
- "teringlijer",
1271
- "toeter",
1272
- "tongzoeng",
1273
- "triootjeg",
1274
- "trottoir prostitu\xE9e",
1275
- "trottoirteef",
1276
- "vergallen",
1277
- "verkloten",
1278
- "verneuken",
1279
- "viespeuk",
1280
- "vingeren",
1281
- "vleesroos",
1282
- "voor jan lul",
1283
- "voor jan-met-de-korte-achternaam",
1284
- "watje",
1285
- "welzijnsmafia",
1286
- "wijf",
1287
- "wippen",
1288
- "wuftje",
1289
- "zaadje",
1290
- "zakkenwasser",
1291
- "zeiken",
1292
- "zeiker",
1293
- "zuigen",
1294
- "zuiplap"
1295
- ]
1296
- };
1297
-
1298
- // ../../shared/dictionaries/esperanto.json
1299
- var esperanto_default = {
1300
- words: [
1301
- "bugren",
1302
- "bugri",
1303
- "bugru",
1304
- "\u0109iesulino",
1305
- "\u0109iesulo",
1306
- "diofek",
1307
- "diofeka",
1308
- "fek",
1309
- "feken",
1310
- "fekfikanto",
1311
- "feklekulo",
1312
- "fekulo",
1313
- "fik",
1314
- "fikado",
1315
- "fikema",
1316
- "fikfek",
1317
- "fiki",
1318
- "fiki\u011Di",
1319
- "fiki\u011Du",
1320
- "fikilo",
1321
- "fikkla\u016Dno",
1322
- "fikota",
1323
- "fiku",
1324
- "forfiki",
1325
- "forfiki\u011Du",
1326
- "forfiku",
1327
- "forfurzu",
1328
- "forpisi",
1329
- "forpisu",
1330
- "furzulo",
1331
- "kacen",
1332
- "kaco",
1333
- "kacsu\u0109ulo",
1334
- "kojono",
1335
- "pi\u0109en",
1336
- "pi\u0109o",
1337
- "zamenfek"
1338
- ]
1339
- };
1340
-
1341
- // ../../shared/dictionaries/english.json
1342
- var english_default = {
1343
- words: [
1344
- "2 girls 1 cup",
1345
- "2g1c",
1346
- "a$$",
1347
- "acrotomophilia",
1348
- "alabama hot pocket",
1349
- "alaskan pipeline",
1350
- "anal",
1351
- "anilingus",
1352
- "anus",
1353
- "apeshit",
1354
- "arsehole",
1355
- "ass",
1356
- "asshat",
1357
- "asshole",
1358
- "assmunch",
1359
- "asswipe",
1360
- "auto erotic",
1361
- "autoerotic",
1362
- "b!tch",
1363
- "babeland",
1364
- "baby batter",
1365
- "baby juice",
1366
- "ball gag",
1367
- "ball gravy",
1368
- "ball kicking",
1369
- "ball licking",
1370
- "ball sack",
1371
- "ball sucking",
1372
- "bangbros",
1373
- "bareback",
1374
- "barely legal",
1375
- "barenaked",
1376
- "bastard",
1377
- "bastardized",
1378
- "bastardo",
1379
- "bastinado",
1380
- "bbw",
1381
- "bdsm",
1382
- "beaner",
1383
- "beaners",
1384
- "beaver cleaver",
1385
- "beaver lips",
1386
- "bestiality",
1387
- "big black",
1388
- "big breasts",
1389
- "big knockers",
1390
- "big tits",
1391
- "bimbos",
1392
- "birdlock",
1393
- "bitch",
1394
- "bitches",
1395
- "black cock",
1396
- "blonde action",
1397
- "blonde on blonde action",
1398
- "blow job",
1399
- "blow your load",
1400
- "blowjob",
1401
- "blue waffle",
1402
- "blumpkin",
1403
- "bollocks",
1404
- "bondage",
1405
- "boner",
1406
- "boob",
1407
- "boobs",
1408
- "booty call",
1409
- "brown showers",
1410
- "brunette action",
1411
- "bs",
1412
- "bukkake",
1413
- "bulldyke",
1414
- "bullet vibe",
1415
- "bullshit",
1416
- "bung hole",
1417
- "bunghole",
1418
- "busty",
1419
- "butt",
1420
- "buttcheeks",
1421
- "butthole",
1422
- "camel toe",
1423
- "camgirl",
1424
- "camslut",
1425
- "camwhore",
1426
- "carpet muncher",
1427
- "carpetmuncher",
1428
- "chocolate rosebuds",
1429
- "circlejerk",
1430
- "cleveland steamer",
1431
- "clit",
1432
- "clitoris",
1433
- "clover clamps",
1434
- "clusterfuck",
1435
- "cock",
1436
- "cocks",
1437
- "cocksucker",
1438
- "coon",
1439
- "coons",
1440
- "coprolagnia",
1441
- "coprophilia",
1442
- "cornhole",
1443
- "creampie",
1444
- "cum",
1445
- "cumming",
1446
- "cunnilingus",
1447
- "cunt",
1448
- "darkie",
1449
- "date rape",
1450
- "daterape",
1451
- "deep throat",
1452
- "deepthroat",
1453
- "dendrophilia",
1454
- "dick",
1455
- "dildo",
1456
- "dingleberries",
1457
- "dingleberry",
1458
- "dipshit",
1459
- "dirty pillows",
1460
- "dirty sanchez",
1461
- "dog style",
1462
- "doggie style",
1463
- "doggiestyle",
1464
- "doggy style",
1465
- "doggystyle",
1466
- "dolcett",
1467
- "domination",
1468
- "dominatrix",
1469
- "dommes",
1470
- "donkey punch",
1471
- "double dong",
1472
- "double penetration",
1473
- "dp action",
1474
- "dry hump",
1475
- "dumbass",
1476
- "dvda",
1477
- "eat my ass",
1478
- "ecchi",
1479
- "ejaculation",
1480
- "erotic",
1481
- "erotism",
1482
- "escort",
1483
- "eunuch",
1484
- "f*ck",
1485
- "f@ck",
1486
- "faggot",
1487
- "fecal",
1488
- "felch",
1489
- "fellatio",
1490
- "feltch",
1491
- "female squirting",
1492
- "femdom",
1493
- "figging",
1494
- "fingerbang",
1495
- "fingering",
1496
- "fisting",
1497
- "foot fetish",
1498
- "footjob",
1499
- "frotting",
1500
- "fuck",
1501
- "fuck buttons",
1502
- "fucker",
1503
- "fuckface",
1504
- "fuckin",
1505
- "fucking",
1506
- "fucktards",
1507
- "fudge packer",
1508
- "fudgepacker",
1509
- "fuq",
1510
- "futanari",
1511
- "g-spot",
1512
- "gang bang",
1513
- "gay sex",
1514
- "genitals",
1515
- "giant cock",
1516
- "girl on",
1517
- "girl on top",
1518
- "girls gone wild",
1519
- "goatcx",
1520
- "goatse",
1521
- "god damn",
1522
- "gokkun",
1523
- "golden shower",
1524
- "goo girl",
1525
- "goodpoop",
1526
- "goregasm",
1527
- "grope",
1528
- "group sex",
1529
- "guro",
1530
- "hand job",
1531
- "handjob",
1532
- "hard core",
1533
- "hardcore",
1534
- "hentai",
1535
- "hoe",
1536
- "homoerotic",
1537
- "honkey",
1538
- "hooker",
1539
- "hot carl",
1540
- "hot chick",
1541
- "how to kill",
1542
- "how to murder",
1543
- "huge fat",
1544
- "humping",
1545
- "incest",
1546
- "intercourse",
1547
- "jack off",
1548
- "jackass",
1549
- "jail bait",
1550
- "jailbait",
1551
- "jelly donut",
1552
- "jerk off",
1553
- "jigaboo",
1554
- "jiggaboo",
1555
- "jiggerboo",
1556
- "jizz",
1557
- "juggs",
1558
- "kike",
1559
- "kinbaku",
1560
- "kinkster",
1561
- "kinky",
1562
- "knobbing",
1563
- "leather restraint",
1564
- "leather straight jacket",
1565
- "lemon party",
1566
- "lmfao",
1567
- "lolita",
1568
- "lovemaking",
1569
- "make me come",
1570
- "male squirting",
1571
- "masturbate",
1572
- "menage a trois",
1573
- "mf",
1574
- "milf",
1575
- "missionary position",
1576
- "motherfucker",
1577
- "mound of venus",
1578
- "mr hands",
1579
- "muff diver",
1580
- "muffdiving",
1581
- "nambla",
1582
- "nawashi",
1583
- "negro",
1584
- "neonazi",
1585
- "nig nog",
1586
- "nigga",
1587
- "nigger",
1588
- "nimphomania",
1589
- "nipple",
1590
- "nipples",
1591
- "nsfw images",
1592
- "nude",
1593
- "nudity",
1594
- "nympho",
1595
- "nymphomania",
1596
- "octopussy",
1597
- "omfg",
1598
- "omorashi",
1599
- "one cup two girls",
1600
- "one guy one jar",
1601
- "orgasm",
1602
- "orgy",
1603
- "paedophile",
1604
- "paki",
1605
- "panties",
1606
- "panty",
1607
- "pedobear",
1608
- "pedophile",
1609
- "pegging",
1610
- "penis",
1611
- "phone sex",
1612
- "piece of shit",
1613
- "piss pig",
1614
- "pissed",
1615
- "pissing",
1616
- "pisspig",
1617
- "playboy",
1618
- "pleasure chest",
1619
- "pole smoker",
1620
- "ponyplay",
1621
- "poof",
1622
- "poon",
1623
- "poontang",
1624
- "poop chute",
1625
- "poopchute",
1626
- "porn",
1627
- "porno",
1628
- "pornography",
1629
- "prince albert piercing",
1630
- "pthc",
1631
- "pubes",
1632
- "punany",
1633
- "pussy",
1634
- "queaf",
1635
- "queef",
1636
- "quim",
1637
- "raghead",
1638
- "raging boner",
1639
- "rape",
1640
- "raping",
1641
- "rapist",
1642
- "rectum",
1643
- "retard",
1644
- "retarded",
1645
- "reverse cowgirl",
1646
- "rimjob",
1647
- "rimming",
1648
- "rosy palm",
1649
- "rosy palm and her 5 sisters",
1650
- "rusty trombone",
1651
- "s&m",
1652
- "sadism",
1653
- "santorum",
1654
- "scat",
1655
- "schlong",
1656
- "scissoring",
1657
- "semen",
1658
- "sex",
1659
- "sexo",
1660
- "sexy",
1661
- "sh!t",
1662
- "shaved beaver",
1663
- "shaved pussy",
1664
- "shemale",
1665
- "shibari",
1666
- "shit",
1667
- "shitblimp",
1668
- "shithead",
1669
- "shitshow",
1670
- "shitty",
1671
- "shota",
1672
- "shrimping",
1673
- "simp",
1674
- "skeet",
1675
- "slanteye",
1676
- "slut",
1677
- "smut",
1678
- "snatch",
1679
- "snowballing",
1680
- "sodomize",
1681
- "sodomy",
1682
- "spic",
1683
- "splooge",
1684
- "splooge moose",
1685
- "spooge",
1686
- "spread legs",
1687
- "spunk",
1688
- "stfu",
1689
- "strap on",
1690
- "strapon",
1691
- "strappado",
1692
- "strip club",
1693
- "style doggy",
1694
- "suck",
1695
- "sucks",
1696
- "suicide girls",
1697
- "sultry women",
1698
- "swastika",
1699
- "swinger",
1700
- "tainted love",
1701
- "taste my",
1702
- "tea bagging",
1703
- "testbad01",
1704
- "threesome",
1705
- "throating",
1706
- "tied up",
1707
- "tight white",
1708
- "tit",
1709
- "tits",
1710
- "titties",
1711
- "titty",
1712
- "tongue in a",
1713
- "topless",
1714
- "tosser",
1715
- "towelhead",
1716
- "tranny",
1717
- "tribadism",
1718
- "tub girl",
1719
- "tubgirl",
1720
- "tushy",
1721
- "twat",
1722
- "twink",
1723
- "twinkie",
1724
- "two girls one cup",
1725
- "undressing",
1726
- "upskirt",
1727
- "urethra play",
1728
- "urophilia",
1729
- "vagina",
1730
- "venus mound",
1731
- "vibrator",
1732
- "violet wand",
1733
- "vorarephilia",
1734
- "voyeur",
1735
- "vulva",
1736
- "wank",
1737
- "wet dream",
1738
- "wetback",
1739
- "white power",
1740
- "wrapping men",
1741
- "wrinkled starfish",
1742
- "wtf",
1743
- "xx",
1744
- "xxx",
1745
- "yaoi",
1746
- "yellow showers",
1747
- "yiffy",
1748
- "zoophilia",
1749
- "\u{1F595}"
1750
- ]
1751
- };
1752
-
1753
- // ../../shared/dictionaries/finnish.json
1754
- var finnish_default = {
1755
- words: [
1756
- "alfred nussi",
1757
- "bylsi\xE4",
1758
- "haahka",
1759
- "haista paska",
1760
- "haista vittu",
1761
- "hatullinen",
1762
- "helvetisti",
1763
- "hevonkuusi",
1764
- "hevonpaska",
1765
- "hevonperse",
1766
- "hevonvittu",
1767
- "hevonvitunperse",
1768
- "hitosti",
1769
- "hitto",
1770
- "huorata",
1771
- "h\xE4ssi\xE4",
1772
- "juosten kustu",
1773
- "jutku",
1774
- "jutsku",
1775
- "j\xE4tk\xE4",
1776
- "kananpaska",
1777
- "koiranpaska",
1778
- "kuin esterin perseest\xE4",
1779
- "kulli",
1780
- "kullinluikaus",
1781
- "kuppainen",
1782
- "kusaista",
1783
- "kuseksia",
1784
- "kusettaa",
1785
- "kusi",
1786
- "kusip\xE4\xE4",
1787
- "kusta",
1788
- "kyrpiintynyt",
1789
- "kyrpiinty\xE4",
1790
- "kyrpi\xE4",
1791
- "kyrp\xE4",
1792
- "kyrp\xE4naama",
1793
- "kyrvitys",
1794
- "lahtari",
1795
- "lutka",
1796
- "molo",
1797
- "molop\xE4\xE4",
1798
- "mulkero",
1799
- "mulkku",
1800
- "mulkvisti",
1801
- "muna",
1802
- "munap\xE4\xE4",
1803
- "munaton",
1804
- "mutakuono",
1805
- "mutiainen",
1806
- "naida",
1807
- "nainti",
1808
- "narttu",
1809
- "neekeri",
1810
- "nekru",
1811
- "nuolla persett\xE4",
1812
- "nussia",
1813
- "nussija",
1814
- "nussinta",
1815
- "paljaalla",
1816
- "palli",
1817
- "pallit",
1818
- "paneskella",
1819
- "panettaa",
1820
- "panna",
1821
- "pano",
1822
- "pantava",
1823
- "paska",
1824
- "paskainen",
1825
- "paskamainen",
1826
- "paskanmarjat",
1827
- "paskantaa",
1828
- "paskapuhe",
1829
- "paskap\xE4\xE4",
1830
- "paskattaa",
1831
- "paskiainen",
1832
- "paskoa",
1833
- "pehko",
1834
- "pentele",
1835
- "perkele",
1836
- "perkeleesti",
1837
- "persaukinen",
1838
- "perse",
1839
- "perseennuolija",
1840
- "perseet olalla",
1841
- "persereik\xE4",
1842
- "perse\xE4\xE4li\xF6",
1843
- "persl\xE4pi",
1844
- "perspano",
1845
- "persvako",
1846
- "pilkunnussija",
1847
- "pillu",
1848
- "pillut",
1849
- "pipari",
1850
- "piru",
1851
- "pist\xE4\xE4",
1852
- "pyllyvako",
1853
- "reik\xE4",
1854
- "reva",
1855
- "ripsipiirakka",
1856
- "runkata",
1857
- "runkkari",
1858
- "runkkaus",
1859
- "runkku",
1860
- "ryss\xE4",
1861
- "r\xE4ttip\xE4\xE4",
1862
- "saatanasti",
1863
- "suklaaosasto",
1864
- "tavara",
1865
- "toosa",
1866
- "tuhkaluukku",
1867
- "tumputtaa",
1868
- "turpasauna",
1869
- "tussu",
1870
- "tussukka",
1871
- "tussut",
1872
- "vakipano",
1873
- "vet\xE4\xE4 k\xE4teen",
1874
- "viiksi",
1875
- "vittu",
1876
- "vittuilla",
1877
- "vittuilu",
1878
- "vittumainen",
1879
- "vittuuntua",
1880
- "vittuuntunut",
1881
- "vitun",
1882
- "vitusti",
1883
- "vituttaa",
1884
- "vitutus",
1885
- "\xE4p\xE4r\xE4"
1886
- ]
1887
- };
1888
-
1889
- // ../../shared/dictionaries/german.json
1890
- var german_default = {
1891
- words: [
1892
- "analritter",
1893
- "arsch",
1894
- "arschficker",
1895
- "arschlecker",
1896
- "arschloch",
1897
- "bimbo",
1898
- "bratze",
1899
- "bumsen",
1900
- "bonze",
1901
- "d\xF6del",
1902
- "fick",
1903
- "ficken",
1904
- "flittchen",
1905
- "fotze",
1906
- "fratze",
1907
- "hackfresse",
1908
- "hure",
1909
- "hurensohn",
1910
- "ische",
1911
- "kackbratze",
1912
- "kacke",
1913
- "kacken",
1914
- "kackwurst",
1915
- "kampflesbe",
1916
- "kanake",
1917
- "kimme",
1918
- "l\xFCmmel",
1919
- "MILF",
1920
- "m\xF6pse",
1921
- "morgenlatte",
1922
- "m\xF6se",
1923
- "mufti",
1924
- "muschi",
1925
- "nackt",
1926
- "neger",
1927
- "nigger",
1928
- "nippel",
1929
- "nutte",
1930
- "onanieren",
1931
- "orgasmus",
1932
- "pimmel",
1933
- "pimpern",
1934
- "pinkeln",
1935
- "pissen",
1936
- "pisser",
1937
- "popel",
1938
- "poppen",
1939
- "porno",
1940
- "reudig",
1941
- "rosette",
1942
- "schabracke",
1943
- "schlampe",
1944
- "schei\xDFe",
1945
- "scheisser",
1946
- "schiesser",
1947
- "schnackeln",
1948
- "schwanzlutscher",
1949
- "schwuchtel",
1950
- "tittchen",
1951
- "titten",
1952
- "v\xF6geln",
1953
- "vollpfosten",
1954
- "wichse",
1955
- "wichsen",
1956
- "wichser"
1957
- ]
1958
- };
1959
-
1960
- // ../../shared/dictionaries/hindi.json
1961
- var hindi_default = {
1962
- words: [
1963
- "aand",
1964
- "aandu",
1965
- "balatkar",
1966
- "beti chod",
1967
- "bhadva",
1968
- "bhadve",
1969
- "bhandve",
1970
- "bhootni ke",
1971
- "bhosad",
1972
- "bhosadi ke",
1973
- "boobe",
1974
- "chakke",
1975
- "chinaal",
1976
- "chinki",
1977
- "chod",
1978
- "chodu",
1979
- "chodu bhagat",
1980
- "chooche",
1981
- "choochi",
1982
- "choot",
1983
- "choot ke baal",
1984
- "chootia",
1985
- "chootiya",
1986
- "chuche",
1987
- "chuchi",
1988
- "chudai khanaa",
1989
- "chudan chudai",
1990
- "chut",
1991
- "chut ke baal",
1992
- "chut ke dhakkan",
1993
- "chut maarli",
1994
- "chutad",
1995
- "chutadd",
1996
- "chutan",
1997
- "chutia",
1998
- "chutiya",
1999
- "gaand",
2000
- "gaandfat",
2001
- "gaandmasti",
2002
- "gaandufad",
2003
- "gandu",
2004
- "gashti",
2005
- "gasti",
2006
- "ghassa",
2007
- "ghasti",
2008
- "harami",
2009
- "haramzade",
2010
- "hawas",
2011
- "hawas ke pujari",
2012
- "hijda",
2013
- "hijra",
2014
- "jhant",
2015
- "jhant chaatu",
2016
- "jhant ke baal",
2017
- "jhantu",
2018
- "kamine",
2019
- "kaminey",
2020
- "kanjar",
2021
- "kutta",
2022
- "kutta kamina",
2023
- "kutte ki aulad",
2024
- "kutte ki jat",
2025
- "kuttiya",
2026
- "loda",
2027
- "lodu",
2028
- "lund",
2029
- "lund choos",
2030
- "lund khajoor",
2031
- "lundtopi",
2032
- "lundure",
2033
- "maa ki chut",
2034
- "maal",
2035
- "madar chod",
2036
- "mooh mein le",
2037
- "mutth",
2038
- "najayaz",
2039
- "najayaz aulaad",
2040
- "najayaz paidaish",
2041
- "paki",
2042
- "pataka",
2043
- "patakha",
2044
- "raand",
2045
- "randi",
2046
- "saala",
2047
- "saala kutta",
2048
- "saali kutti",
2049
- "saali randi",
2050
- "suar",
2051
- "suar ki aulad",
2052
- "tatte",
2053
- "tatti",
2054
- "teri maa ka bhosada",
2055
- "teri maa ka boba chusu",
2056
- "teri maa ki chut",
2057
- "tharak",
2058
- "tharki"
2059
- ]
2060
- };
2061
-
2062
- // ../../shared/dictionaries/hungarian.json
2063
- var hungarian_default = {
2064
- words: [
2065
- "balfasz",
2066
- "balfaszok",
2067
- "balfaszokat",
2068
- "balfaszt",
2069
- "barmok",
2070
- "barmokat",
2071
- "barmot",
2072
- "barom",
2073
- "baszik",
2074
- "bazmeg",
2075
- "buksza",
2076
- "buksz\xE1k",
2077
- "buksz\xE1kat",
2078
- "buksz\xE1t",
2079
- "b\xFAr",
2080
- "b\xFArok",
2081
- "cs\xF6cs",
2082
- "cs\xF6cs\xF6k",
2083
- "cs\xF6cs\xF6ket",
2084
- "cs\xF6cs\xF6t",
2085
- "fasz",
2086
- "faszfej",
2087
- "faszfejek",
2088
- "faszfejeket",
2089
- "faszfejet",
2090
- "faszok",
2091
- "faszokat",
2092
- "faszt",
2093
- "fing",
2094
- "fingok",
2095
- "fingokat",
2096
- "fingot",
2097
- "franc",
2098
- "francok",
2099
- "francokat",
2100
- "francot",
2101
- "geci",
2102
- "gecibb",
2103
- "gecik",
2104
- "geciket",
2105
- "gecit",
2106
- "kibaszott",
2107
- "kibaszottabb",
2108
- "k\xFAr",
2109
- "kurafi",
2110
- "kurafik",
2111
- "kurafikat",
2112
- "kurafit",
2113
- "kurva",
2114
- "kurv\xE1k",
2115
- "kurv\xE1kat",
2116
- "kurv\xE1t",
2117
- "leggecibb",
2118
- "legkibaszottabb",
2119
- "legszarabb",
2120
- "marha",
2121
- "marh\xE1k",
2122
- "marh\xE1kat",
2123
- "marh\xE1t",
2124
- "megd\xF6glik",
2125
- "pele",
2126
- "pel\xE9k",
2127
- "picsa",
2128
- "pics\xE1kat",
2129
- "pics\xE1t",
2130
- "pina",
2131
- "pin\xE1k",
2132
- "pin\xE1kat",
2133
- "pin\xE1t",
2134
- "pofa",
2135
- "pof\xE1kat",
2136
- "pof\xE1t",
2137
- "p\xF6cs",
2138
- "p\xF6cs\xF6k",
2139
- "p\xF6cs\xF6ket",
2140
- "p\xF6cs\xF6t",
2141
- "punci",
2142
- "puncik",
2143
- "segg",
2144
- "seggek",
2145
- "seggeket",
2146
- "segget",
2147
- "seggfej",
2148
- "seggfejek",
2149
- "seggfejeket",
2150
- "seggfejet",
2151
- "szajha",
2152
- "szajh\xE1k",
2153
- "szajh\xE1kat",
2154
- "szajh\xE1t",
2155
- "szar",
2156
- "szarabb",
2157
- "szarik",
2158
- "szarok",
2159
- "szarokat",
2160
- "szart"
2161
- ]
2162
- };
2163
-
2164
- // ../../shared/dictionaries/korean.json
2165
- var korean_default = {
2166
- words: [
2167
- "\uAC15\uAC04",
2168
- "\uAC1C\uC0C8\uB07C",
2169
- "\uAC1C\uC790\uC2DD",
2170
- "\uAC1C\uC886",
2171
- "\uAC1C\uCC28\uBC18",
2172
- "\uAC70\uC720",
2173
- "\uACC4\uC9D1\uB144",
2174
- "\uACE0\uC790",
2175
- "\uADFC\uCE5C",
2176
- "\uB178\uBAA8",
2177
- "\uB2C8\uAE30\uBBF8",
2178
- "\uB4A4\uC9C8\uB798",
2179
- "\uB538\uB538\uC774",
2180
- "\uB54C\uC539",
2181
- "\uB610\uB77C\uC774",
2182
- "\uB664\uB188",
2183
- "\uB85C\uB9AC\uD0C0",
2184
- "\uB9DD\uAC00",
2185
- "\uBAB0\uCE74",
2186
- "\uBBF8\uCE5C",
2187
- "\uBBF8\uCE5C\uC0C8\uB07C",
2188
- "\uBC14\uBC14\uB9AC\uB9E8",
2189
- "\uBCC0\uD0DC",
2190
- "\uBCD1\uC2E0",
2191
- "\uBCF4\uC9C0",
2192
- "\uBD88\uC54C",
2193
- "\uBE60\uAD6C\uB9AC",
2194
- "\uC0AC\uAE4C\uC2DC",
2195
- "\uC139\uC2A4",
2196
- "\uC2A4\uC640\uD551",
2197
- "\uC30D\uB188",
2198
- "\uC528\uBC1C",
2199
- "\uC528\uBC1C\uB188",
2200
- "\uC528\uD314",
2201
- "\uC539",
2202
- "\uC539\uBB3C",
2203
- "\uC539\uBE68",
2204
- "\uC539\uC0C8\uB07C",
2205
- "\uC539\uC54C",
2206
- "\uC539\uCC3D",
2207
- "\uC539\uD314",
2208
- "\uC554\uCE90",
2209
- "\uC560\uC790",
2210
- "\uC57C\uB3D9",
2211
- "\uC57C\uC0AC",
2212
- "\uC57C\uC560\uB2C8",
2213
- "\uC5C4\uCC3D",
2214
- "\uC5D0\uB85C",
2215
- "\uC5FC\uBCD1",
2216
- "\uC618\uBCD1",
2217
- "\uC720\uBAA8",
2218
- "\uC721\uAC11",
2219
- "\uC740\uAF34",
2220
- "\uC790\uC704",
2221
- "\uC790\uC9C0",
2222
- "\uC7A1\uB144",
2223
- "\uC885\uAC04\uB098",
2224
- "\uC886",
2225
- "\uC886\uB9CC",
2226
- "\uC8FD\uC77C\uB144",
2227
- "\uC950\uC886",
2228
- "\uC9C1\uCD2C",
2229
- "\uC9F1\uAE68",
2230
- "\uCABD\uBC14\uB9AC",
2231
- "\uCC3D\uB140",
2232
- "\uD3EC\uB974\uB178",
2233
- "\uD558\uB4DC\uCF54\uC5B4",
2234
- "\uD638\uB85C",
2235
- "\uD654\uB0E5\uB144",
2236
- "\uD6C4\uB808\uC544\uB4E4",
2237
- "\uD6C4\uC7A5",
2238
- "\uD76C\uCB48\uADF8\uB9AC"
2239
- ]
2240
- };
2241
-
2242
- // ../../shared/dictionaries/Norwegian.json
2243
- var Norwegian_default = {
2244
- words: [
2245
- "drittsekk",
2246
- "faen i helvete",
2247
- "fitte",
2248
- "j\xE6vla",
2249
- "kuk",
2250
- "kukene",
2251
- "kuker",
2252
- "nigger",
2253
- "pikk",
2254
- "sotr\xF8r",
2255
- "st\xE5pikk",
2256
- "st\xE5pikkene",
2257
- "st\xE5pikker"
2258
- ]
2259
- };
2260
-
2261
- // ../../shared/dictionaries/persian.json
2262
- var persian_default = {
2263
- words: [
2264
- "\u0622\u0628 \u06A9\u06CC\u0631",
2265
- "\u0627\u0631\u06AF\u0627\u0633\u0645",
2266
- "\u0628\u0631\u0647\u0646\u0647",
2267
- "\u067E\u0648\u0631\u0646",
2268
- "\u067E\u0648\u0631\u0646\u0648",
2269
- "\u062A\u062C\u0627\u0648\u0632",
2270
- "\u062A\u062E\u0645\u06CC",
2271
- "\u062C\u0642",
2272
- "\u062C\u0642\u06CC",
2273
- "\u062C\u0644\u0642",
2274
- "\u062C\u0646\u062F\u0647",
2275
- "\u0686\u0648\u0686\u0648\u0644",
2276
- "\u062D\u0634\u0631",
2277
- "\u062D\u0634\u0631\u06CC",
2278
- "\u062F\u0627\u0641",
2279
- "\u062F\u0648\u062F\u0648\u0644",
2280
- "\u0633\u0627\u06A9 \u0632\u062F\u0646",
2281
- "\u0633\u06A9\u0633",
2282
- "\u0633\u06A9\u0633 \u06A9\u0631\u062F\u0646",
2283
- "\u0633\u06A9\u0633\u06CC",
2284
- "\u0633\u0648\u067E\u0631",
2285
- "\u0634\u0642 \u06A9\u0631\u062F\u0646",
2286
- "\u0634\u0647\u0648\u062A",
2287
- "\u0634\u0647\u0648\u062A\u06CC",
2288
- "\u0634\u0648\u0646\u0628\u0648\u0644",
2289
- "\u0641\u06CC\u0644\u0645 \u0633\u0648\u067E\u0631",
2290
- "\u06A9\u0633",
2291
- "\u06A9\u0633 \u062F\u0627\u062F\u0646",
2292
- "\u06A9\u0633 \u06A9\u0631\u062F\u0646",
2293
- "\u06A9\u0633\u06A9\u0634",
2294
- "\u06A9\u0648\u0633",
2295
- "\u06A9\u0648\u0646",
2296
- "\u06A9\u0648\u0646 \u062F\u0627\u062F\u0646",
2297
- "\u06A9\u0648\u0646 \u06A9\u0631\u062F\u0646",
2298
- "\u06A9\u0648\u0646\u06A9\u0634",
2299
- "\u06A9\u0648\u0646\u06CC",
2300
- "\u06A9\u06CC\u0631",
2301
- "\u06A9\u06CC\u0631\u06CC",
2302
- "\u0644\u0627\u067E\u0627",
2303
- "\u0644\u0627\u067E\u0627\u06CC\u06CC",
2304
- "\u0644\u0627\u0634\u06CC",
2305
- "\u0644\u062E\u062A",
2306
- "\u0644\u0634",
2307
- "\u0645\u0646\u06CC",
2308
- "\u0647\u0631\u0632\u0647"
2309
- ]
2310
- };
2311
-
2312
- // ../../shared/dictionaries/polish.json
2313
- var polish_default = {
2314
- words: [
2315
- "burdel",
2316
- "burdelmama",
2317
- "chuj",
2318
- "chujnia",
2319
- "ciota",
2320
- "cipa",
2321
- "cyc",
2322
- "debil",
2323
- "dmucha\u0107",
2324
- "do kurwy n\u0119dzy",
2325
- "dupa",
2326
- "dupek",
2327
- "duperele",
2328
- "dziwka",
2329
- "fiut",
2330
- "g\xF3wno",
2331
- "g\xF3wno prawda",
2332
- "huj",
2333
- "jajco",
2334
- "jajeczko",
2335
- "jajko",
2336
- "jajo",
2337
- "ja pierdol\u0119",
2338
- "jeba\u0107",
2339
- "jebany",
2340
- "kurwa",
2341
- "kurwy",
2342
- "kutafon",
2343
- "kutas",
2344
- "liza\u0107 pa\u0142\u0119",
2345
- "obci\u0105ga\u0107 chuja",
2346
- "obci\u0105ga\u0107 fiuta",
2347
- "obci\u0105ga\u0107 loda",
2348
- "pieprzy\u0107",
2349
- "pierdolec",
2350
- "pierdoli\u0107",
2351
- "pierdolni\u0119ty",
2352
- "pierdo\u0142a",
2353
- "pierdzie\u0107",
2354
- "pizda",
2355
- "pojeb",
2356
- "popierdolony",
2357
- "robic loda",
2358
- "robi\u0107 loda",
2359
- "rucha\u0107",
2360
- "rzyga\u0107",
2361
- "skurwysyn",
2362
- "sraczka",
2363
- "sra\u0107",
2364
- "suka",
2365
- "syf",
2366
- "wkurwia\u0107",
2367
- "zajebisty"
2368
- ]
2369
- };
2370
-
2371
- // ../../shared/dictionaries/portuguese.json
2372
- var portuguese_default = {
2373
- words: [
2374
- "aborto",
2375
- "amador",
2376
- "\xE2nus",
2377
- "aranha",
2378
- "ariano",
2379
- "balalao",
2380
- "bastardo",
2381
- "bicha",
2382
- "biscate",
2383
- "bissexual",
2384
- "boceta",
2385
- "boob",
2386
- "bosta",
2387
- "braulio de borracha",
2388
- "bumbum",
2389
- "burro",
2390
- "cabrao",
2391
- "cacete",
2392
- "cagar",
2393
- "camisinha",
2394
- "caralho",
2395
- "cerveja",
2396
- "chochota",
2397
- "chupar",
2398
- "clitoris",
2399
- "coca\xEDna",
2400
- "colhoes",
2401
- "comer",
2402
- "cona",
2403
- "consolo",
2404
- "corno",
2405
- "cu",
2406
- "dar o rabo",
2407
- "dum raio",
2408
- "esporra",
2409
- "fecal",
2410
- "filho da puta",
2411
- "foda",
2412
- "foda-se",
2413
- "foder",
2414
- "frango assado",
2415
- "gozar",
2416
- "grelho",
2417
- "hero\xEDna",
2418
- "heterosexual",
2419
- "homem gay",
2420
- "homoer\xF3tico",
2421
- "homosexual",
2422
- "inferno",
2423
- "l\xE9sbica",
2424
- "lolita",
2425
- "mama",
2426
- "merda",
2427
- "paneleiro",
2428
- "passar um cheque",
2429
- "pau",
2430
- "peidar",
2431
- "p\xEAnis",
2432
- "pinto",
2433
- "porra",
2434
- "puta",
2435
- "puta que pariu",
2436
- "puta que te pariu",
2437
- "queca",
2438
- "sacanagem",
2439
- "saco",
2440
- "torneira",
2441
- "transar",
2442
- "vai-te foder",
2443
- "vai tomar no cu",
2444
- "veado",
2445
- "vibrador",
2446
- "xana",
2447
- "xochota"
2448
- ]
2449
- };
2450
-
2451
- // ../../shared/dictionaries/russian.json
2452
- var russian_default = {
2453
- words: [
2454
- "bychara",
2455
- "byk",
2456
- "chernozhopyi",
2457
- "dolboy'eb",
2458
- "ebalnik",
2459
- "ebalo",
2460
- "ebalom sch'elkat",
2461
- "gol",
2462
- "mudack",
2463
- "opizdenet",
2464
- "osto'eblo",
2465
- "ostokhuitel'no",
2466
- "ot'ebis",
2467
- "otmudohat",
2468
- "otpizdit",
2469
- "otsosi",
2470
- "padlo",
2471
- "pedik",
2472
- "perdet",
2473
- "petuh",
2474
- "pidar gnoinyj",
2475
- "pizda",
2476
- "pizdato",
2477
- "pizdatyi",
2478
- "piz'det",
2479
- "pizdetc",
2480
- "pizdoi nakryt'sja",
2481
- "pizd'uk",
2482
- "piz`dyulina",
2483
- "podi ku'evo",
2484
- "poeben",
2485
- "po'imat' na konchik",
2486
- "po'iti posrat",
2487
- "po khuy",
2488
- "poluchit pizdy",
2489
- "pososi moyu konfetku",
2490
- "prissat",
2491
- "proebat",
2492
- "promudobl'adsksya pizdopro'ebina",
2493
- "propezdoloch",
2494
- "prosrat",
2495
- "raspeezdeyi",
2496
- "raspizdatyi",
2497
- "raz'yebuy",
2498
- "raz'yoba",
2499
- "s'ebat'sya",
2500
- "shalava",
2501
- "styervo",
2502
- "sukin syn",
2503
- "svodit posrat",
2504
- "svoloch",
2505
- "trakhat'sya",
2506
- "trimandoblydskiy pizdoproyob",
2507
- "ubl'yudok",
2508
- "uboy",
2509
- "u'ebitsche",
2510
- "vafl'a",
2511
- "vafli lovit",
2512
- "v pizdu",
2513
- "vyperdysh",
2514
- "vzdrochennyi",
2515
- "yeb vas",
2516
- "za'ebat",
2517
- "zaebis",
2518
- "zalupa",
2519
- "zalupat",
2520
- "zasranetc",
2521
- "zassat",
2522
- "zlo'ebuchy",
2523
- "\u0431\u0430\u0440\u0434\u0430\u043A",
2524
- "\u0431\u0437\u0434\u0451\u043D\u043E\u043A",
2525
- "\u0431\u043B\u044F\u0434\u043A\u0438",
2526
- "\u0431\u043B\u044F\u0434\u043E\u0432\u0430\u0442\u044C",
2527
- "\u0431\u043B\u044F\u0434\u0441\u0442\u0432\u043E",
2528
- "\u0431\u043B\u044F\u0434\u044C",
2529
- "\u0431\u0443\u0433\u043E\u0440",
2530
- "\u0432\u043E \u043F\u0438\u0437\u0434\u0443",
2531
- "\u0432\u0441\u0442\u0430\u0442\u044C \u0440\u0430\u043A\u043E\u043C",
2532
- "\u0432\u044B\u0451\u0431\u044B\u0432\u0430\u0442\u044C\u0441\u044F",
2533
- "\u0433\u0430\u043D\u0434\u043E\u043D",
2534
- "\u0433\u043E\u0432\u043D\u043E",
2535
- "\u0433\u043E\u0432\u043D\u044E\u043A",
2536
- "\u0433\u043E\u043B\u044B\u0439",
2537
- "\u0434\u0430\u0442\u044C \u043F\u0438\u0437\u0434\u044B",
2538
- "\u0434\u0435\u0440\u044C\u043C\u043E",
2539
- "\u0434\u0440\u043E\u0447\u0438\u0442\u044C",
2540
- "\u0434\u0440\u0443\u0433\u043E\u0439 \u0434\u0440\u0430\u0437\u043D\u0438\u0442\u0441\u044F",
2541
- "\u0451\u0431\u0430\u0440\u044C",
2542
- "\u0435\u0431\u0430\u0442\u044C",
2543
- "\u0435\u0431\u0430\u0442\u044C-\u043A\u043E\u043F\u0430\u0442\u044C",
2544
- "\u0435\u0431\u043B\u043E",
2545
- "\u0435\u0431\u043D\u0443\u0442\u044C",
2546
- "\u0451\u0431 \u0442\u0432\u043E\u044E \u043C\u0430\u0442\u044C",
2547
- "\u0436\u043E\u043F\u0430",
2548
- "\u0436\u043E\u043F\u043E\u043B\u0438\u0437",
2549
- "\u0438\u0433\u0440\u0430\u0442\u044C \u043D\u0430 \u043A\u043E\u0436\u0430\u043D\u043E\u0439 \u0444\u043B\u0435\u0439\u0442\u0435",
2550
- "\u0438\u0437\u043C\u0443\u0434\u043E\u0445\u0430\u0442\u044C",
2551
- "\u043A\u0430\u0436\u0434\u044B\u0439 \u0434\u0440\u043E\u0447\u0438\u0442 \u043A\u0430\u043A \u043E\u043D \u0445\u043E\u0447\u0435\u0442",
2552
- "\u043A\u0430\u043A\u0430\u044F \u0440\u0430\u0437\u043D\u0438\u0446\u0430",
2553
- "\u043A\u0430\u043A \u0434\u0432\u0430 \u043F\u0430\u043B\u044C\u0446\u0430 \u043E\u0431\u043E\u0441\u0441\u0430\u0442\u044C",
2554
- "\u043A\u0443\u0440\u0438\u0442\u0435 \u043C\u043E\u044E \u0442\u0440\u0443\u0431\u043A\u0443",
2555
- "\u043B\u044B\u0441\u043E\u0433\u043E \u0432 \u043A\u0443\u043B\u0430\u043A\u0435 \u0433\u043E\u043D\u044F\u0442\u044C",
2556
- "\u043C\u0430\u043B\u043E\u0444\u044F",
2557
- "\u043C\u0430\u043D\u0434\u0430",
2558
- "\u043C\u0430\u043D\u0434\u0430\u0432\u043E\u0448\u043A\u0430",
2559
- "\u043C\u0435\u043D\u0442",
2560
- "\u043C\u0443\u0434\u0430",
2561
- "\u043C\u0443\u0434\u0438\u043B\u043E",
2562
- "\u043C\u0443\u0434\u043E\u0437\u043C\u043E\u043D",
2563
- "\u043D\u0430\u0435\u0431\u0430\u0442\u044C",
2564
- "\u043D\u0430\u0435\u0431\u0435\u043D\u0438\u0442\u044C\u0441\u044F",
2565
- "\u043D\u0430\u0435\u0431\u043D\u0443\u0442\u044C\u0441\u044F",
2566
- "\u043D\u0430 \u0444\u0438\u0433",
2567
- "\u043D\u0430 \u0445\u0443\u0439",
2568
- "\u043D\u0430 \u0445\u0443\u044E \u0432\u0435\u0440\u0442\u0435\u0442\u044C",
2569
- "\u043D\u0430 \u0445\u0443\u044F",
2570
- "\u043D\u0430\u0445\u0443\u044F\u0447\u0438\u0442\u044C\u0441\u044F",
2571
- "\u043D\u0435\u0432\u0435\u0431\u0435\u043D\u043D\u044B\u0439",
2572
- "\u043D\u0435 \u0435\u0431\u0435\u0442",
2573
- "\u043D\u0438 \u0437\u0430 \u0445\u0443\u0439 \u0441\u043E\u0431\u0430\u0447\u0443",
2574
- "\u043D\u0438 \u0445\u0443\u044F",
2575
- "\u043E\u0431\u043D\u0430\u0436\u0435\u043D\u043D\u044B\u0439",
2576
- "\u043E\u0431\u043E\u0441\u0441\u0430\u0442\u044C\u0441\u044F \u043C\u043E\u0436\u043D\u043E",
2577
- "\u043E\u0434\u0438\u043D \u0435\u0431\u0451\u0442\u0441\u044F",
2578
- "\u043E\u043F\u0435\u0441\u0434\u043E\u043B",
2579
- "\u043E\u0444\u0438\u0433\u0435\u0442\u044C",
2580
- "\u043E\u0445\u0443\u0435\u0442\u044C",
2581
- "\u043E\u0445\u0443\u0439\u0442\u0435\u043B\u044C\u043D\u043E",
2582
- "\u043F\u043E\u043B\u043E\u0432\u043E\u0435 \u0441\u043D\u043E\u0448\u0435\u043D\u0438\u0435",
2583
- "\u0441\u0435\u043A\u0441",
2584
- "\u0441\u0438\u0441\u043A\u0438",
2585
- "\u0441\u043F\u0438\u0437\u0434\u0438\u0442\u044C",
2586
- "\u0441\u0440\u0430\u0442\u044C",
2587
- "\u0441\u0441\u0430\u0442\u044C",
2588
- "\u0442\u0440\u0430x\u0430\u0442\u044C",
2589
- "\u0442\u044B \u043C\u043D\u0435 \u0432\u0430\u043D\u044C\u043A\u0443 \u043D\u0435 \u0432\u0430\u043B\u044F\u0439",
2590
- "\u0444\u0438\u0433\u0430",
2591
- "\u0445\u0430\u043F\u0430\u0442\u044C",
2592
- "\u0445\u0435\u0440 \u0441 \u043D\u0435\u0439",
2593
- "\u0445\u0435\u0440 \u0441 \u043D\u0438\u043C",
2594
- "\u0445\u043E\u0445\u043E\u043B",
2595
- "\u0445\u0440\u0435\u043D",
2596
- "\u0445\u0443\u0451\u0432\u043E",
2597
- "\u0445\u0443\u0451\u0432\u044B\u0439",
2598
- "\u0445\u0443\u0435\u043C \u0433\u0440\u0443\u0448\u0438 \u043E\u043A\u043E\u043B\u0430\u0447\u0438\u0432\u0430\u0442\u044C",
2599
- "\u0445\u0443\u0435\u043F\u043B\u0435\u0442",
2600
- "\u0445\u0443\u0438\u043B\u043E",
2601
- "\u0445\u0443\u0438\u043D\u0435\u0439 \u0441\u0442\u0440\u0430\u0434\u0430\u0442\u044C",
2602
- "\u0445\u0443\u0438\u043D\u044F",
2603
- "\u0445\u0443\u0439",
2604
- "\u0445\u0443\u0439\u043D\u0443\u0442\u044C",
2605
- "\u0445\u0443\u0439 \u043F\u0438\u043D\u0430\u0442\u044C"
2606
- ]
2607
- };
2608
-
2609
- // ../../shared/dictionaries/french.json
2610
- var french_default = {
2611
- words: [
2612
- "baiser",
2613
- "bander",
2614
- "bigornette",
2615
- "bite",
2616
- "bitte",
2617
- "bloblos",
2618
- "bordel",
2619
- "bosser",
2620
- "bourr\xE9",
2621
- "bourr\xE9e",
2622
- "brackmard",
2623
- "branlage",
2624
- "branler",
2625
- "branlette",
2626
- "branleur",
2627
- "branleuse",
2628
- "brouter le cresson",
2629
- "caca",
2630
- "cailler",
2631
- "chatte",
2632
- "chiasse",
2633
- "chier",
2634
- "chiottes",
2635
- "clito",
2636
- "clitoris",
2637
- "con",
2638
- "connard",
2639
- "connasse",
2640
- "conne",
2641
- "couilles",
2642
- "cramouille",
2643
- "cul",
2644
- "d\xE9conne",
2645
- "d\xE9conner",
2646
- "drague",
2647
- "emmerdant",
2648
- "emmerder",
2649
- "emmerdeur",
2650
- "emmerdeuse",
2651
- "encul\xE9",
2652
- "encul\xE9e",
2653
- "enculeur",
2654
- "enculeurs",
2655
- "enfoir\xE9",
2656
- "enfoir\xE9e",
2657
- "\xE9tron",
2658
- "fille de pute",
2659
- "fils de pute",
2660
- "folle",
2661
- "foutre",
2662
- "gerbe",
2663
- "gerber",
2664
- "gouine",
2665
- "grande folle",
2666
- "grogniasse",
2667
- "gueule",
2668
- "jouir",
2669
- "la putain de ta m\xE8re",
2670
- "MALPT",
2671
- "m\xE9nage \xE0 trois",
2672
- "merde",
2673
- "merdeuse",
2674
- "merdeux",
2675
- "meuf",
2676
- "n\xE8gre",
2677
- "nique ta m\xE8re",
2678
- "nique ta race",
2679
- "palucher",
2680
- "p\xE9dale",
2681
- "p\xE9d\xE9",
2682
- "p\xE9ter",
2683
- "pipi",
2684
- "pisser",
2685
- "pouffiasse",
2686
- "pousse-crotte",
2687
- "putain",
2688
- "pute",
2689
- "ramoner",
2690
- "sac \xE0 foutre",
2691
- "sac \xE0 merde",
2692
- "salaud",
2693
- "salope",
2694
- "suce",
2695
- "tapette",
2696
- "tanche",
2697
- "teuch",
2698
- "teuf",
2699
- "tringler",
2700
- "trique",
2701
- "troncher",
2702
- "trou du cul",
2703
- "turlute",
2704
- "veuve",
2705
- "zigounette",
2706
- "zizi"
2707
- ]
2708
- };
2709
-
2710
- // ../../shared/dictionaries/italian.json
2711
- var italian_default = {
2712
- words: [
2713
- "allupato",
2714
- "ammucchiata",
2715
- "anale",
2716
- "arrapato",
2717
- "arrusa",
2718
- "arruso",
2719
- "assatanato",
2720
- "bagascia",
2721
- "bagassa",
2722
- "bagnarsi",
2723
- "baldracca",
2724
- "balle",
2725
- "battere",
2726
- "battona",
2727
- "belino",
2728
- "biga",
2729
- "bocchinara",
2730
- "bocchino",
2731
- "bofilo",
2732
- "boiata",
2733
- "bordello",
2734
- "brinca",
2735
- "bucaiolo",
2736
- "budi\xF9lo",
2737
- "buona donna",
2738
- "busone",
2739
- "cacca",
2740
- "caccati in mano e prenditi a schiaffi",
2741
- "caciocappella",
2742
- "cadavere",
2743
- "cagare",
2744
- "cagata",
2745
- "cagna",
2746
- "cammello",
2747
- "cappella",
2748
- "carciofo",
2749
- "carit\xE0",
2750
- "casci",
2751
- "cazzata",
2752
- "cazzimma",
2753
- "cazzo",
2754
- "checca",
2755
- "chiappa",
2756
- "chiavare",
2757
- "chiavata",
2758
- "ciospo",
2759
- "ciucciami il cazzo",
2760
- "coglione",
2761
- "coglioni",
2762
- "cornuto",
2763
- "cozza",
2764
- "culattina",
2765
- "culattone",
2766
- "culo",
2767
- "di merda",
2768
- "ditalino",
2769
- "duro",
2770
- "fare una\u0160",
2771
- "fava",
2772
- "femminuccia",
2773
- "fica",
2774
- "figa",
2775
- "figlio di buona donna",
2776
- "figlio di puttana",
2777
- "figone",
2778
- "finocchio",
2779
- "fottere",
2780
- "fottersi",
2781
- "fracicone",
2782
- "fregna",
2783
- "frocio",
2784
- "froscio",
2785
- "fuori come un balcone",
2786
- "goldone",
2787
- "grilletto",
2788
- "guanto",
2789
- "guardone",
2790
- "incazzarsi",
2791
- "incoglionirsi",
2792
- "ingoio",
2793
- "l'arte bolognese",
2794
- "leccaculo",
2795
- "lecchino",
2796
- "lofare",
2797
- "loffa",
2798
- "loffare",
2799
- "lumaca",
2800
- "manico",
2801
- "mannaggia",
2802
- "merda",
2803
- "merdata",
2804
- "merdoso",
2805
- "mignotta",
2806
- "minchia",
2807
- "minchione",
2808
- "mona",
2809
- "monta",
2810
- "montare",
2811
- "mussa",
2812
- "nave scuola",
2813
- "nerchia",
2814
- "nudo",
2815
- "padulo",
2816
- "palle",
2817
- "palloso",
2818
- "patacca",
2819
- "patonza",
2820
- "pecorina",
2821
- "pesce",
2822
- "picio",
2823
- "pincare",
2824
- "pipa",
2825
- "pip\xEC",
2826
- "pippone",
2827
- "pirla",
2828
- "pisciare",
2829
- "piscio",
2830
- "pisello",
2831
- "pistola",
2832
- "pistolotto",
2833
- "pomiciare",
2834
- "pompa",
2835
- "pompino",
2836
- "porca",
2837
- "porca madonna",
2838
- "porca miseria",
2839
- "porca puttana",
2840
- "porco due",
2841
- "porco zio",
2842
- "potta",
2843
- "puppami",
2844
- "puttana",
2845
- "quaglia",
2846
- "recchione",
2847
- "regina",
2848
- "rincoglionire",
2849
- "rizzarsi",
2850
- "rompiballe",
2851
- "ruffiano",
2852
- "sbattere",
2853
- "sbattersi",
2854
- "sborra",
2855
- "sborrata",
2856
- "sborrone",
2857
- "sbrodolata",
2858
- "scopare",
2859
- "scopata",
2860
- "scorreggiare",
2861
- "sega",
2862
- "slinguare",
2863
- "slinguata",
2864
- "smandrappata",
2865
- "soccia",
2866
- "socmel",
2867
- "sorca",
2868
- "spagnola",
2869
- "spompinare",
2870
- "sticchio",
2871
- "stronza",
2872
- "stronzata",
2873
- "stronzo",
2874
- "succhiami",
2875
- "sveltina",
2876
- "sverginare",
2877
- "tarzanello",
2878
- "terrone",
2879
- "testa di cazzo",
2880
- "tette",
2881
- "tirare",
2882
- "topa",
2883
- "troia",
2884
- "trombare",
2885
- "uccello",
2886
- "vacca",
2887
- "vaffanculo",
2888
- "vangare",
2889
- "venire",
2890
- "zinne",
2891
- "zio cantante",
2892
- "zoccola"
2893
- ]
2894
- };
2895
-
2896
- // ../../shared/dictionaries/japanese.json
2897
- var japanese_default = {
2898
- words: [
2899
- "3p",
2900
- "g \u30B9\u30DD\u30C3\u30C8",
2901
- "s \uFF06 m",
2902
- "sm",
2903
- "sm\u5973\u738B",
2904
- "xx",
2905
- "\u30A2\u30B8\u30A2\u306E\u304B\u308F\u3044\u3044\u5973\u306E\u5B50",
2906
- "\u30A2\u30B9\u30DB\u30FC\u30EB",
2907
- "\u30A2\u30CA\u30EA\u30F3\u30B0\u30B9",
2908
- "\u30A2\u30CA\u30EB",
2909
- "\u3044\u305F\u305A\u3089",
2910
- "\u30A4\u30E9\u30DE\u30C1\u30AA",
2911
- "\u30A6\u30A7\u30D6\u30AB\u30E1\u30E9",
2912
- "\u30A8\u30AF\u30B9\u30BF\u30B7\u30FC",
2913
- "\u30A8\u30B9\u30B3\u30FC\u30C8",
2914
- "\u30A8\u30C3\u30C1",
2915
- "\u30A8\u30ED\u30C6\u30A3\u30BA\u30E0",
2916
- "\u30A8\u30ED\u30C6\u30A3\u30C3\u30AF",
2917
- "\u30AA\u30FC\u30AC\u30BA\u30E0",
2918
- "\u30AA\u30AB\u30DE",
2919
- "\u304A\u3057\u3063\u3053",
2920
- "\u304A\u3057\u308A",
2921
- "\u30AA\u30B7\u30EA",
2922
- "\u304A\u3057\u308A\u306E\u3042\u306A",
2923
- "\u304A\u3063\u3071\u3044",
2924
- "\u30AA\u30C3\u30D1\u30A4",
2925
- "\u30AA\u30CA\u30CB\u30FC",
2926
- "\u30AA\u30DE\u30F3\u30B3",
2927
- "\u304A\u3082\u3089\u3057",
2928
- "\u304A\u5C3B",
2929
- "\u30AB\u30FC\u30DE\u30B9\u30FC\u30C8\u30E9",
2930
- "\u30AB\u30F3\u30C8",
2931
- "\u30AF\u30EA\u30C8\u30EA\u30B9",
2932
- "\u30B0\u30EB\u30FC\u30D7\u30FB\u30BB\u30C3\u30AF\u30B9",
2933
- "\u30B0\u30ED",
2934
- "\u30AF\u30F3\u30CB\u30EA\u30F3\u30B0\u30B9",
2935
- "\u30B2\u30A4\u30FB\u30BB\u30C3\u30AF\u30B9",
2936
- "\u30B2\u30A4\u306E\u7537\u6027",
2937
- "\u30B2\u30A4\u30DC\u30FC\u30A4",
2938
- "\u30B4\u30FC\u30EB\u30C7\u30F3\u30B7\u30E3\u30EF\u30FC",
2939
- "\u30B3\u30AB\u30A4\u30F3",
2940
- "\u30B4\u30C3\u30AF\u30F3",
2941
- "\u30B5\u30C7\u30A3\u30BA\u30E0",
2942
- "\u3057\u3070\u308A",
2943
- "\u30B9\u30A6\u30A3\u30F3\u30AC\u30FC",
2944
- "\u30B9\u30AB\u30FC\u30C8\u306E\u4E2D",
2945
- "\u30B9\u30AB\u30C8\u30ED",
2946
- "\u30B9\u30C8\u30E9\u30C3\u30D7\u30AA\u30F3",
2947
- "\u30B9\u30C8\u30EA\u30C3\u30D7\u5287\u5834",
2948
- "\u30B9\u30E9\u30C3\u30C8",
2949
- "\u30B9\u30EA\u30C3\u30C8",
2950
- "\u30BB\u30AF\u30B7\u30FC\u306A",
2951
- "\u30BB\u30AF\u30B7\u30FC\u306A 10 \u4EE3",
2952
- "\u30BB\u30C3\u30AF\u30B9",
2953
- "\u30BD\u30C9\u30DF\u30FC",
2954
- "\u3061\u3093\u3053",
2955
- "\u30C7\u30A3\u30FC\u30D7\u30FB\u30B9\u30ED\u30FC\u30C8",
2956
- "\u30C7\u30A3\u30C3\u30AF",
2957
- "\u30C7\u30A3\u30EB\u30C9",
2958
- "\u30C7\u30FC\u30C8\u30EC\u30A4\u30D7",
2959
- "\u30C7\u30D6",
2960
- "\u30C6\u30EC\u30D5\u30A9\u30F3\u30BB\u30C3\u30AF\u30B9",
2961
- "\u30C9\u30C3\u30B0\u30B9\u30BF\u30A4\u30EB",
2962
- "\u30C8\u30C3\u30D7\u30EC\u30B9",
2963
- "\u306A\u3081",
2964
- "\u30CB\u30AC\u30FC",
2965
- "\u30CC\u30FC\u30C9",
2966
- "\u30CD\u30AA\u30FB\u30CA\u30C1",
2967
- "\u30CF\u30FC\u30C9\u30B3\u30A2",
2968
- "\u30D1\u30A4\u30D1\u30F3",
2969
- "\u30D0\u30A4\u30D6\u30EC\u30FC\u30BF\u30FC",
2970
- "\u30D0\u30C3\u30AF\u30FB\u30B9\u30BF\u30A4\u30EB",
2971
- "\u30D1\u30F3\u30C6\u30A3\u30FC",
2972
- "\u30D3\u30C3\u30C1",
2973
- "\u30D5\u30A1\u30C3\u30AF",
2974
- "\u30D5\u30A1\u30F3\u30BF\u30B8\u30FC",
2975
- "\u30D5\u30A3\u30B9\u30C8",
2976
- "\u30D5\u30A7\u30C6\u30A3\u30C3\u30B7\u30E5",
2977
- "\u30D5\u30A7\u30E9\u30C1\u30AA",
2978
- "\u3075\u305F\u306A\u308A",
2979
- "\u3076\u3063\u304B\u3051",
2980
- "\u30D5\u30C3\u30AF",
2981
- "\u30D7\u30EA\u30F3\u30B9 \u30A2\u30EB\u30D0\u30FC\u30C8 \u30D4\u30A2\u30B9",
2982
- "\u30D7\u30EC\u30A4\u30DC\u30FC\u30A4",
2983
- "\u30D9\u30A2\u30D0\u30C3\u30AF",
2984
- "\u30DA\u30CB\u30B9",
2985
- "\u30DA\u30CB\u30B9\u30D0\u30F3\u30C9",
2986
- "\u30DC\u30FC\u30A4\u30BA\u30E9\u30D6",
2987
- "\u30DC\u30FC\u30EB\u30AE\u30E3\u30B0",
2988
- "\u30DC\u30FC\u30EB\u3092\u8E74\u308B",
2989
- "\u307D\u3063\u3061\u3083\u308A",
2990
- "\u30DB\u30E2",
2991
- "\u30DD\u30EB\u30CE",
2992
- "\u30DD\u30EB\u30CE\u30B0\u30E9\u30D5\u30A3\u30FC",
2993
- "\u30DC\u30F3\u30C6\u30FC\u30B8",
2994
- "\u30DE\u30B6\u30FC\u30FB\u30D5\u30A1\u30C3\u30AB\u30FC",
2995
- "\u30DE\u30B9\u30BF\u30FC\u30D9\u30FC\u30B7\u30E7\u30F3",
2996
- "\u307E\u3093\u3053",
2997
- "\u3084\u304A\u3044",
2998
- "\u3084\u308A\u307E\u3093",
2999
- "\u30E6\u30C0\u30E4\u4EBA",
3000
- "\u30E9\u30C6\u30A3\u30FC\u30CA",
3001
- "\u30E9\u30D0\u30FC",
3002
- "\u30E9\u30F3\u30B8\u30A7\u30EA\u30FC",
3003
- "\u30EC\u30A4\u30D7",
3004
- "\u30EC\u30BA\u30D3\u30A2\u30F3",
3005
- "\u30ED\u30FC\u30BF\u30FC",
3006
- "\u30ED\u30EA\u30FC\u30BF",
3007
- "\u6DEB\u4E71",
3008
- "\u9670\u6BDB",
3009
- "\u9769\u6291\u5236",
3010
- "\u9A0E\u4E0A\u4F4D",
3011
- "\u5DE8\u6839",
3012
- "\u5DE8\u4E73",
3013
- "\u5F37\u59E6\u72AF",
3014
- "\u7389\u306A\u3081",
3015
- "\u7389\u8210\u3081",
3016
- "\u7DCA\u7E1B",
3017
- "\u8FD1\u89AA\u76F8\u59E6",
3018
- "\u5ACC\u3044",
3019
- "\u5F8C\u80CC\u4F4D",
3020
- "\u5408\u610F\u306E\u6027\u4EA4",
3021
- "\u62F7\u554F",
3022
- "\u6BBA\u3057\u65B9",
3023
- "\u6BBA\u4EBA\u4E8B\u4EF6",
3024
- "\u6BBA\u4EBA\u65B9\u6CD5",
3025
- "\u652F\u914D",
3026
- "\u5150\u7AE5\u6027\u8650\u5F85",
3027
- "\u81EA\u5DF1\u611B\u6027",
3028
- "\u5C04\u7CBE",
3029
- "\u624B\u30B3\u30AD",
3030
- "\u7363\u59E6",
3031
- "\u5973\u306E\u5B50",
3032
- "\u5973\u738B\u69D8",
3033
- "\u5973\u5B50\u9AD8\u751F",
3034
- "\u5973\u88C5",
3035
- "\u65B0\u3057\u3044\u30DD\u30EB\u30CE",
3036
- "\u4EBA\u59BB",
3037
- "\u4EBA\u7A2E",
3038
- "\u6027\u4EA4",
3039
- "\u6B63\u5E38\u4F4D",
3040
- "\u751F\u6B96\u5668",
3041
- "\u7CBE\u6DB2",
3042
- "\u633F\u5165",
3043
- "\u8DB3\u30D5\u30A7\u30C1",
3044
- "\u8DB3\u3092\u5E83\u3052\u308B",
3045
- "\u5927\u9670\u5507",
3046
- "\u8131\u8863",
3047
- "\u8336\u8272\u306E\u30B7\u30E3\u30EF\u30FC",
3048
- "\u4E2D\u51FA\u3057",
3049
- "\u6F6E\u5439\u304D\u5973",
3050
- "\u6F6E\u5439\u304D\u7537\u6027",
3051
- "\u76F4\u8178",
3052
- "\u5243\u6BDB",
3053
- "\u8C9E\u64CD\u5E2F",
3054
- "\u5974\u96B7",
3055
- "\u4E8C\u7A74",
3056
- "\u4E73\u9996",
3057
- "\u5C3F\u9053\u30D7\u30EC\u30A4",
3058
- "\u8997\u304D",
3059
- "\u58F2\u6625\u5A66",
3060
- "\u7E1B\u308A",
3061
- "\u5674\u51FA",
3062
- "\u7CDE",
3063
- "\u7CDE\u5C3F\u611B\u597D\u75C7",
3064
- "\u7CDE\u4FBF",
3065
- "\u5E73\u624B\u6253\u3061",
3066
- "\u5909\u614B",
3067
- "\u52C3\u8D77\u3059\u308B",
3068
- "\u5922\u7CBE",
3069
- "\u6BDB\u6DF1\u3044",
3070
- "\u8A98\u60D1",
3071
- "\u5E7C\u5150",
3072
- "\u5E7C\u5150\u6027\u611B\u8005",
3073
- "\u88F8",
3074
- "\u88F8\u306E\u5973\u6027",
3075
- "\u4E71\u4EA4",
3076
- "\u4E21\u6027",
3077
- "\u4E21\u6027\u5177\u6709",
3078
- "\u4E21\u5200",
3079
- "\u8F2A\u59E6",
3080
- "\u534D",
3081
- "\u5BA6\u5B98",
3082
- "\u809B\u9580",
3083
- "\u81A3"
3084
- ]
3085
- };
3086
-
3087
- // ../../shared/dictionaries/turkish.json
3088
- var turkish_default = {
3089
- words: [
3090
- "18+",
3091
- "30+1",
3092
- "31",
3093
- ":poop:",
3094
- "a.g.",
3095
- "a.mk",
3096
- "a.q",
3097
- "a.q.",
3098
- "a.\u0131g",
3099
- "abaza",
3100
- "abazan",
3101
- "adi",
3102
- "ag",
3103
- "ag.",
3104
- "ahmak",
3105
- "ak",
3106
- "akp",
3107
- "al a\u011Fz\u0131na",
3108
- "allah",
3109
- "allahs\u0131z",
3110
- "am",
3111
- "am biti",
3112
- "am.k",
3113
- "amar\u0131m",
3114
- "ambiti",
3115
- "amcik",
3116
- "amck",
3117
- "amckl",
3118
- "amcklama",
3119
- "amcklaryla",
3120
- "amckta",
3121
- "amcktan",
3122
- "amcuk",
3123
- "amc\u0131k",
3124
- "amc\u0131k ho\u015Faf\u0131",
3125
- "amc\u0131ka\u011F\u0131z",
3126
- "amc\u0131klama",
3127
- "amc\u0131kland\u0131",
3128
- "amc\u0131klar\u0131",
3129
- "amc\u0131\u011F\u0131 ",
3130
- "amc\u0131\u011F\u0131n",
3131
- "amc\u0131\u011F\u0131n\u0131",
3132
- "amc\u0131\u011F\u0131n\u0131z\u0131",
3133
- "amed",
3134
- "amg",
3135
- "amin oglu",
3136
- "amina",
3137
- "amina g",
3138
- "amina k",
3139
- "amina koyarim",
3140
- "amina koyayim",
3141
- "amina koyay\u0131m",
3142
- "aminako",
3143
- "aminakoyarim",
3144
- "aminakoyim",
3145
- "aminda",
3146
- "amindan",
3147
- "amindayken",
3148
- "amini",
3149
- "aminiyarraaniskiim",
3150
- "aminoglu",
3151
- "amiyum",
3152
- "amk",
3153
- "amk \xE7ocu\u011Fu",
3154
- "amk.",
3155
- "amkafa",
3156
- "amlarnzn",
3157
- "aml\u0131",
3158
- "amm",
3159
- "ammak",
3160
- "ammna",
3161
- "amm\u0131na",
3162
- "amn",
3163
- "amna",
3164
- "amnda",
3165
- "amndaki",
3166
- "amngtn",
3167
- "amnn",
3168
- "amona",
3169
- "amq",
3170
- "amsiz",
3171
- "amsz",
3172
- "ams\u0131z",
3173
- "amteri",
3174
- "amugaa",
3175
- "amuna",
3176
- "amu\u011Fa",
3177
- "am\u0131g",
3178
- "am\u0131k",
3179
- "am\u0131n",
3180
- "am\u0131n feryad\u0131",
3181
- "am\u0131n oglu",
3182
- "am\u0131n o\u011Flu",
3183
- "am\u0131na",
3184
- "Am\u0131na",
3185
- "am\u0131na g",
3186
- "am\u0131na k",
3187
- "am\u0131na koy",
3188
- "am\u0131na koyar\u0131m",
3189
- "am\u0131na koyay\u0131m",
3190
- "am\u0131na koyim",
3191
- "am\u0131na koyyim",
3192
- "am\u0131na s",
3193
- "am\u0131na sikem",
3194
- "am\u0131na sokam",
3195
- "am\u0131nad\xFCrz\xFC",
3196
- "am\u0131nako",
3197
- "am\u0131nakoyim",
3198
- "am\u0131no\u011Flu",
3199
- "am\u0131n\u0131",
3200
- "am\u0131n\u0131 s",
3201
- "am\u0131s\u0131na",
3202
- "am\u0131s\u0131n\u0131",
3203
- "ana",
3204
- "anaaann",
3205
- "anal",
3206
- "analarn",
3207
- "anam",
3208
- "anamla",
3209
- "anan",
3210
- "anana",
3211
- "anandan",
3212
- "anani",
3213
- "anani sikerim",
3214
- "anani sikeyim",
3215
- "ananin",
3216
- "ananisikerim",
3217
- "ananisikeyim",
3218
- "anann",
3219
- "ananz",
3220
- "anan\u0131",
3221
- "anan\u0131 ",
3222
- "anan\u0131 sikerim",
3223
- "anan\u0131 sikeyim",
3224
- "anan\u0131n",
3225
- "anan\u0131n am",
3226
- "anan\u0131n am\u0131",
3227
- "anan\u0131n d\xF6l\xFC",
3228
- "anan\u0131nki",
3229
- "anan\u0131sikerim",
3230
- "anan\u0131sikeyim",
3231
- "anan\u0131z\u0131",
3232
- "anan\u0131z\u0131n",
3233
- "anan\u0131z\u0131n am",
3234
- "anas",
3235
- "anasi",
3236
- "anasinin",
3237
- "anas\u0131 orospu",
3238
- "anas\u0131n\u0131",
3239
- "anas\u0131n\u0131 avrad\u0131n\u0131",
3240
- "anas\u0131n\u0131n am",
3241
- "anay",
3242
- "anayin",
3243
- "angut",
3244
- "anl\u0131k be\u011Feni",
3245
- "anneni",
3246
- "annenin",
3247
- "annesiz",
3248
- "anuna",
3249
- "aptal",
3250
- "aq",
3251
- "aq.",
3252
- "ass",
3253
- "atkafas\u0131",
3254
- "atm\u0131k",
3255
- "attrrm",
3256
- "att\u0131rd\u0131\u011F\u0131m",
3257
- "auzlu",
3258
- "avon",
3259
- "avrad\u0131n\u0131",
3260
- "avrat",
3261
- "ayklarmalrmsikerim",
3262
- "azd\u0131m",
3263
- "azd\u0131r",
3264
- "azd\u0131r\u0131c\u0131",
3265
- "a\u011Fz\u0131na",
3266
- "a\u011Fz\u0131na s\u0131\xE7ay\u0131m",
3267
- "a\u015Fa\u011Fl\u0131k",
3268
- "a\u015Fa\u011Fl\u0131ksn\u0131z",
3269
- "a\u015Fa\u011F\u0131l\u0131ks\u0131n",
3270
- "a\u015Fa\u011F\u0131l\u0131ks\u0131n\u0131z",
3271
- "b.k",
3272
- "babaannesi ka\u015Far",
3273
- "babafingo",
3274
- "babani",
3275
- "baban\u0131",
3276
- "baban\u0131n",
3277
- "babas\u0131 pezevenk",
3278
- "babas\u0131 tornac\u0131 anas\u0131 orospu",
3279
- "baca\u011F\u0131na s\u0131\xE7ay\u0131m",
3280
- "bacini",
3281
- "bacn",
3282
- "bacndan",
3283
- "bacy",
3284
- "bac\u0131n",
3285
- "bac\u0131na",
3286
- "bac\u0131n\u0131",
3287
- "bac\u0131n\u0131n",
3288
- "bastard",
3289
- "basur",
3290
- "bayanlar",
3291
- "beyinsiz",
3292
- "be\u011Fen",
3293
- "be\u011Fenirmisiniz",
3294
- "bira",
3295
- "biseksuel",
3296
- "bisekuel",
3297
- "bisexual",
3298
- "bisikiverem",
3299
- "bitch",
3300
- "biting",
3301
- "bok",
3302
- "boka",
3303
- "bokbok",
3304
- "bokhu",
3305
- "bokkkumu",
3306
- "boklar",
3307
- "boktan",
3308
- "boku",
3309
- "bokubokuna",
3310
- "bokum",
3311
- "bok\xE7a",
3312
- "bombok",
3313
- "boner",
3314
- "bosalmak",
3315
- "boycot",
3316
- "boycott",
3317
- "boykot",
3318
- "bo\u015Falmak",
3319
- "bo\u015Fluk",
3320
- "browni",
3321
- "b\u0131z\u0131r",
3322
- "ccc",
3323
- "ccc ccc",
3324
- "ccc incisiker ccc",
3325
- "cccincisikerccc",
3326
- "ccs colgate ccc",
3327
- "cenabet",
3328
- "cibiliyetsiz",
3329
- "cibilliyetini",
3330
- "cibilliyetsiz",
3331
- "cif",
3332
- "cikar",
3333
- "cim",
3334
- "cm",
3335
- "coca cola",
3336
- "cola",
3337
- "dalaks\u0131z",
3338
- "dallama",
3339
- "daltassak",
3340
- "dalyarak",
3341
- "dalyarrak",
3342
- "dangalak",
3343
- "dasak",
3344
- "dassagi",
3345
- "dassak",
3346
- "da\u015Fak",
3347
- "da\u015F\u015Fak",
3348
- "da\u015F\u015Faks\u0131z",
3349
- "dede",
3350
- "destek",
3351
- "destekk",
3352
- "deste\u011Finizi",
3353
- "devsol",
3354
- "dhkp",
3355
- "diktim",
3356
- "dildo",
3357
- "din",
3358
- "dinci",
3359
- "dingil",
3360
- "dingilini",
3361
- "dinsiz",
3362
- "dkerim",
3363
- "domal",
3364
- "domalan",
3365
- "domald\u0131",
3366
- "domald\u0131n",
3367
- "domalmak",
3368
- "domalm\u0131\u015F",
3369
- "domals\u0131n",
3370
- "domalt",
3371
- "domaltarak",
3372
- "domaltip",
3373
- "domaltmak",
3374
- "domalt\u0131p",
3375
- "domalt\u0131r",
3376
- "domalt\u0131r\u0131m",
3377
- "domal\u0131k",
3378
- "domal\u0131yor",
3379
- "domuz yag\u0131",
3380
- "domuz ya\u011F\u0131",
3381
- "domuzyag\u0131",
3382
- "durum",
3383
- "d\xF6l\xFC",
3384
- "d\xF6nek",
3385
- "d\xFCd\xFCk",
3386
- "d\xFCrz\xFC",
3387
- "eben",
3388
- "ebeni",
3389
- "ebenin",
3390
- "ebeninki",
3391
- "ebleh",
3392
- "ecdadini",
3393
- "ecdad\u0131n\u0131",
3394
- "edit",
3395
- "embesil",
3396
- "emek server",
3397
- "emi",
3398
- "ensest",
3399
- "erotik",
3400
- "escinsel",
3401
- "ev han\u0131mlar\u0131",
3402
- "ezik",
3403
- "e\u015Fcinsel",
3404
- "fahise",
3405
- "fahi\u015Fe",
3406
- "farmasi",
3407
- "fasist",
3408
- "fasizm",
3409
- "fa\u015Fist",
3410
- "fa\u015Fizm",
3411
- "feri\u015Ftah",
3412
- "ferre",
3413
- "fuck",
3414
- "fucker",
3415
- "fuckin",
3416
- "fucking",
3417
- "f\u0131rsat",
3418
- "g*t",
3419
- "g*t\xFC",
3420
- "g*t\xFCn",
3421
- "g*t\xFCne",
3422
- "g.t",
3423
- "gasp",
3424
- "gavad",
3425
- "gavat",
3426
- "gavurun d\xF6l\xFC",
3427
- "gay",
3428
- "geber",
3429
- "geberik",
3430
- "gebermek",
3431
- "gebermi\u015F",
3432
- "gebersin",
3433
- "gebertir",
3434
- "geri zekal\u0131",
3435
- "gerizekali",
3436
- "gerizekal\u0131",
3437
- "gerizekal\u0131d\u0131r",
3438
- "gerzek",
3439
- "ger\u0131 zekal\u0131d\u0131r",
3440
- "ger\u0131zekal\u0131",
3441
- "giberim",
3442
- "giberler",
3443
- "gibis",
3444
- "gibi\u015F",
3445
- "gibmek",
3446
- "gibtiler",
3447
- "giren \xE7\u0131kan",
3448
- "goddamn",
3449
- "godo\u015F",
3450
- "godumun",
3451
- "got",
3452
- "gotelek",
3453
- "gotlalesi",
3454
- "gotlu",
3455
- "gotten",
3456
- "gotundeki",
3457
- "gotunden",
3458
- "gotune",
3459
- "gotunu",
3460
- "gotuze",
3461
- "gotveren",
3462
- "goyiim",
3463
- "goyum",
3464
- "goyuyim",
3465
- "goyyim",
3466
- "gtelek",
3467
- "gtn",
3468
- "gtnde",
3469
- "gtnden",
3470
- "gtne",
3471
- "gtten",
3472
- "gtveren",
3473
- "guat",
3474
- "g\xF6t",
3475
- "g\xF6t deli\u011Fi",
3476
- "g\xF6t herif",
3477
- "g\xF6t o\u011Flan\u0131",
3478
- "g\xF6t veren",
3479
- "g\xF6t verir",
3480
- "g\xF6te",
3481
- "g\xF6telek",
3482
- "g\xF6tlalesi",
3483
- "g\xF6tlek",
3484
- "g\xF6to\u011Flan\u0131",
3485
- "g\xF6to\u015F",
3486
- "g\xF6ts\xFCn",
3487
- "g\xF6ts\xFCn\xFCz",
3488
- "g\xF6tten",
3489
- "g\xF6tveren",
3490
- "g\xF6tvern",
3491
- "g\xF6t\xFC",
3492
- "g\xF6t\xFCn",
3493
- "g\xF6t\xFCne",
3494
- "g\xF6t\xFCne koyim",
3495
- "g\xF6t\xFCnekoyim",
3496
- "g\xF6t\xFCn\xFC",
3497
- "g\xF6t\xFCn\xFCze",
3498
- "g\xF6t\xFCyle",
3499
- "g\xF6\u011F\xFCs",
3500
- "hack",
3501
- "han\u0131mlar",
3502
- "has siktir",
3503
- "hasiktir",
3504
- "hasiktr",
3505
- "hassikome",
3506
- "hassiktir",
3507
- "hassittir",
3508
- "hastir",
3509
- "haydar",
3510
- "haysiyetsiz",
3511
- "hayvan",
3512
- "hayvan herif",
3513
- "ha\u015Fgerya",
3514
- "hile",
3515
- "hizbullah",
3516
- "homo",
3517
- "ho\u015Faf\u0131",
3518
- "hristiyan",
3519
- "hsktr",
3520
- "huur",
3521
- "hz.muhammed",
3522
- "hz.\xF6mer",
3523
- "h\xF6d\xFCk",
3524
- "h\u0131rs\u0131z",
3525
- "h\u0131yar",
3526
- "h\u0131yara\u011Fas\u0131",
3527
- "i.ne",
3528
- "ibina",
3529
- "ibine",
3530
- "ibinenin",
3531
- "ibne",
3532
- "ibnedir",
3533
- "ibneler",
3534
- "ibneleri",
3535
- "ibnelik",
3536
- "ibneli\u011Fi",
3537
- "ibnelri",
3538
- "ibneni",
3539
- "ibnenin",
3540
- "ibnerator",
3541
- "ibnesi",
3542
- "idiot",
3543
- "idiyot",
3544
- "igrenc",
3545
- "ilk yorum",
3546
- "imansz",
3547
- "inci siker",
3548
- "incisike",
3549
- "incisiker",
3550
- "ipne",
3551
- "ipneler",
3552
- "irsail",
3553
- "iserim",
3554
- "israil",
3555
- "israli",
3556
- "israyil",
3557
- "isra\u0131l",
3558
- "it",
3559
- "iti",
3560
- "itler",
3561
- "ito\u011Flu it",
3562
- "izrail",
3563
- "i\u011Fren\xE7",
3564
- "i\u015F f\u0131rsat\u0131",
3565
- "i\u015Ferim",
3566
- "k.o.c",
3567
- "k.o.\xE7",
3568
- "kadek",
3569
- "kafam girsin",
3570
- "kafasiz",
3571
- "kafas\u0131z",
3572
- "kahpe",
3573
- "kahpenin",
3574
- "kahpenin feryad\u0131",
3575
- "kaka",
3576
- "kaltak",
3577
- "kancik",
3578
- "kanc\u0131k",
3579
- "kan\u0131",
3580
- "kan\u0131 bozuk",
3581
- "kappe",
3582
- "karhane",
3583
- "kariyer f\u0131rsat\u0131",
3584
- "kavat",
3585
- "kavatn",
3586
- "kaypak",
3587
- "kayyum",
3588
- "kazik",
3589
- "kazma",
3590
- "kaz\u0131k",
3591
- "ka\xE7\u0131rma",
3592
- "ka\u015Far",
3593
- "kerane",
3594
- "kerhane",
3595
- "kerhanelerde",
3596
- "keriz",
3597
- "kerizler",
3598
- "kevase",
3599
- "keva\u015Fe",
3600
- "kevvase",
3601
- "koca g\xF6t",
3602
- "kodumun",
3603
- "kodumunun",
3604
- "koduumun",
3605
- "kodu\u011Fmun",
3606
- "kodu\u011Fmunun",
3607
- "komonist",
3608
- "komunist",
3609
- "komunizm",
3610
- "kom\xFCnist",
3611
- "kom\xFCnizm",
3612
- "kongragel",
3613
- "kopegi",
3614
- "kope\u011Fi",
3615
- "koyarm",
3616
- "koyay\u0131m",
3617
- "koyiim",
3618
- "koyiiym",
3619
- "koyim",
3620
- "koyum",
3621
- "koyyim",
3622
- "krar",
3623
- "kro",
3624
- "kro musunuz",
3625
- "kromusunuz",
3626
- "kuku",
3627
- "kukudaym",
3628
- "kurdistan",
3629
- "k\xF6peginin",
3630
- "k\xF6pekle\u015Fme",
3631
- "k\xFCrdistan",
3632
- "k\u0131ro",
3633
- "k\u0131\xE7",
3634
- "k\u0131\xE7\u0131n\u0131z",
3635
- "k\u0131\xE7\u0131n\u0131za",
3636
- "l.an",
3637
- "laciye boyad\u0131m",
3638
- "lan",
3639
- "lanet",
3640
- "lann",
3641
- "lannn",
3642
- "lavuk",
3643
- "len",
3644
- "leyn",
3645
- "lezle",
3646
- "lezler",
3647
- "libo\u015F",
3648
- "madafaka",
3649
- "mal",
3650
- "malafat",
3651
- "malak",
3652
- "mallar",
3653
- "manda",
3654
- "mankafa",
3655
- "manyak",
3656
- "mcik",
3657
- "meme",
3658
- "memelerini",
3659
- "memi\u015F",
3660
- "mezveleli",
3661
- "minaamc\u0131k",
3662
- "mincikliyim",
3663
- "mk",
3664
- "mna",
3665
- "moloz",
3666
- "monakkoluyum",
3667
- "moron",
3668
- "motherfucker",
3669
- "mudik",
3670
- "musevi",
3671
- "musevi bozuk",
3672
- "m\xFCsl\xFCman",
3673
- "nah",
3674
- "o \xE7",
3675
- "o. \xE7ocu\u011Fu",
3676
- "o.\xE7",
3677
- "o.\xE7.",
3678
- "oc",
3679
- "ocuu",
3680
- "ocuun",
3681
- "odun",
3682
- "okuz",
3683
- "oriflame",
3684
- "orosbu",
3685
- "orosbucocuu",
3686
- "orospu",
3687
- "orospu cocugu",
3688
- "orospu \xE7oc",
3689
- "orospu \xE7ocuklar\u0131",
3690
- "orospu \xE7ocu\u011Fu",
3691
- "orospu \xE7ocu\u011Fudur",
3692
- "orospucocugu",
3693
- "orospudur",
3694
- "orospular",
3695
- "orospunun",
3696
- "orospunun evlad\u0131",
3697
- "orospuydu",
3698
- "orospuyuz",
3699
- "orospu\xE7ocu\u011Fu",
3700
- "orostoban",
3701
- "orostopol",
3702
- "orrospu",
3703
- "oruc",
3704
- "oruspu",
3705
- "oruspu \xE7ocu\u011Fu",
3706
- "oruspu\xE7ocu\u011Fu",
3707
- "oru\xE7",
3708
- "osbir",
3709
- "ossurduum",
3710
- "ossurmak",
3711
- "ossuruk",
3712
- "osur",
3713
- "osuram",
3714
- "osurduu",
3715
- "osuruk",
3716
- "osururum",
3717
- "otusbir",
3718
- "otuzbir",
3719
- "oyna",
3720
- "O\xC7",
3721
- "o\xE7",
3722
- "o\xE7.",
3723
- "o\u011Flan",
3724
- "o\u011Flanc\u0131",
3725
- "o\u011Flu it",
3726
- "p kk",
3727
- "patlak zar",
3728
- "penis",
3729
- "peygamber",
3730
- "pezevek",
3731
- "pezeven",
3732
- "pezeveng",
3733
- "pezevengi",
3734
- "pezevengin evlad\u0131",
3735
- "pezevenk",
3736
- "pezevenkler",
3737
- "pezo",
3738
- "pic",
3739
- "pici",
3740
- "picler",
3741
- "pipi",
3742
- "pipi\u015F",
3743
- "pis",
3744
- "pisliktir",
3745
- "pi\xE7",
3746
- "pi\xE7 kurusu",
3747
- "pi\xE7i",
3748
- "pi\xE7in o\u011Flu",
3749
- "pi\xE7inin",
3750
- "pi\xE7ler",
3751
- "pi\xE7sin",
3752
- "pi\xE7siniz",
3753
- "pkk",
3754
- "pok",
3755
- "pokunu",
3756
- "pompalama",
3757
- "pompalamak",
3758
- "porn",
3759
- "porno",
3760
- "protesto",
3761
- "pussy",
3762
- "putpererst",
3763
- "putperest",
3764
- "pu\u015Ft",
3765
- "pu\u015Fttur",
3766
- "pvp",
3767
- "rahminde",
3768
- "rak",
3769
- "rak\u0131",
3770
- "revizyonist",
3771
- "s.ikerim",
3772
- "s.iktm",
3773
- "s.ktir",
3774
- "s.tir",
3775
- "s1kerim",
3776
- "s1kerm",
3777
- "s1krm",
3778
- "sahtekar",
3779
- "sakso",
3780
- "saksofon",
3781
- "salaak",
3782
- "salak",
3783
- "sana ne",
3784
- "sanane",
3785
- "saxo",
3786
- "sayfa",
3787
- "sekis",
3788
- "seks",
3789
- "serefsiz",
3790
- "serefsz",
3791
- "serefszler",
3792
- "sevgi koyar\u0131m",
3793
- "sevi\u015F",
3794
- "sevi\u015Felim",
3795
- "sevi\u015Fmek",
3796
- "sex",
3797
- "sexs",
3798
- "shit",
3799
- "si.\xE7mak",
3800
- "sicarsin",
3801
- "sicmak",
3802
- "sicti",
3803
- "sie",
3804
- "sigara",
3805
- "sik",
3806
- "sik k\u0131r\u0131\u011F\u0131",
3807
- "sikdi",
3808
- "sikdi\u011Fim",
3809
- "sike",
3810
- "sikecem",
3811
- "sikem",
3812
- "siken",
3813
- "sikenin",
3814
- "siker",
3815
- "sikerim",
3816
- "sikerler",
3817
- "sikersin",
3818
- "sikert",
3819
- "sikertir",
3820
- "sikertirler",
3821
- "sikertmek",
3822
- "sikesen",
3823
- "sikesicenin",
3824
- "sikey",
3825
- "sikeydim",
3826
- "sikeyim",
3827
- "sikeym",
3828
- "siki",
3829
- "sikicem",
3830
- "sikici",
3831
- "sikien",
3832
- "sikienler",
3833
- "sikiiim",
3834
- "sikiiimmm",
3835
- "sikiim",
3836
- "sikiir",
3837
- "sikiirken",
3838
- "sikik",
3839
- "sikil",
3840
- "sikildiini",
3841
- "sikilesice",
3842
- "sikilmi",
3843
- "sikilmie",
3844
- "sikilmis",
3845
- "sikilmi\u015F",
3846
- "sikilsin",
3847
- "sikim",
3848
- "sikimde",
3849
- "sikimden",
3850
- "sikime",
3851
- "sikimi",
3852
- "sikimiin",
3853
- "sikimin",
3854
- "sikimle",
3855
- "sikimsonik",
3856
- "sikimtrak",
3857
- "sikin",
3858
- "sikinde",
3859
- "sikinden",
3860
- "sikine",
3861
- "sikini",
3862
- "sikip",
3863
- "sikis",
3864
- "sikisek",
3865
- "sikisen",
3866
- "sikish",
3867
- "sikismis",
3868
- "sikitiin",
3869
- "sikiyim",
3870
- "sikiym",
3871
- "sikiyorum",
3872
- "siki\u015F",
3873
- "siki\u015Fen",
3874
- "siki\u015Fken",
3875
- "siki\u015Fme",
3876
- "siki\u015Fmek",
3877
- "sikkim",
3878
- "sikko",
3879
- "sikleri",
3880
- "sikleriii",
3881
- "sikli",
3882
- "sikm",
3883
- "sikmek",
3884
- "sikmem",
3885
- "sikmeyi",
3886
- "sikmiler",
3887
- "sikmisligim",
3888
- "siksem",
3889
- "sikseydin",
3890
- "sikseyidin",
3891
- "siksin",
3892
- "siksinbaya",
3893
- "siksinler",
3894
- "siksiz",
3895
- "siksok",
3896
- "siksz",
3897
- "sikt",
3898
- "sikti",
3899
- "siktigimin",
3900
- "siktigiminin",
3901
- "siktii",
3902
- "siktiim",
3903
- "siktiimin",
3904
- "siktiiminin",
3905
- "siktiler",
3906
- "siktim",
3907
- "siktim ",
3908
- "siktimin",
3909
- "siktiminin",
3910
- "siktin",
3911
- "siktir",
3912
- "siktir et",
3913
- "siktir git",
3914
- "siktir lan",
3915
- "siktir ol git",
3916
- "siktirgit",
3917
- "siktirir",
3918
- "siktiririm",
3919
- "siktiriyor",
3920
- "siktirolgit",
3921
- "siktirsin",
3922
- "sikti\u011Fim",
3923
- "sikti\u011Fimin",
3924
- "sikti\u011Fiminin",
3925
- "siktr",
3926
- "siqem",
3927
- "sisme",
3928
- "sittimin",
3929
- "sittir",
3930
- "skcem",
3931
- "skecem",
3932
- "skem",
3933
- "sker",
3934
- "skerim",
3935
- "skerm",
3936
- "skeyim",
3937
- "skiim",
3938
- "skik",
3939
- "skim",
3940
- "skime",
3941
- "skiym",
3942
- "skm",
3943
- "skmek",
3944
- "skrm",
3945
- "sksin",
3946
- "sksn",
3947
- "sksz",
3948
- "sktiimin",
3949
- "sktim",
3950
- "sktir",
3951
- "sktirsin",
3952
- "sktr",
3953
- "sktroradan",
3954
- "sktrr",
3955
- "sktrsn",
3956
- "skyim",
3957
- "slaleni",
3958
- "snane",
3959
- "sokacak",
3960
- "sokam",
3961
- "sokarim",
3962
- "sokarm",
3963
- "sokarmkoduumun",
3964
- "sokar\u0131m",
3965
- "sokaym",
3966
- "sokay\u0131m",
3967
- "sokiim",
3968
- "soktu\u011Fumunun",
3969
- "sokuk",
3970
- "sokum",
3971
- "sokuyum",
3972
- "soku\u015F",
3973
- "soxum",
3974
- "sperm",
3975
- "sulaleni",
3976
- "s\xE7kik",
3977
- "s\xFClaleni",
3978
- "s\xFClalenizi",
3979
- "s\xFCrt\xFCk",
3980
- "s\xFCt\xFC bozuk",
3981
- "s\xFCzme",
3982
- "s\u0131ecem",
3983
- "s\u0131ker\u0131m",
3984
- "s\u0131km",
3985
- "s\u0131kt\u0131r",
3986
- "s\u0131\xE7ar\u0131m",
3987
- "s\u0131\xE7mak",
3988
- "s\u0131\xE7t\u0131\u011F\u0131m",
3989
- "taaklarn",
3990
- "taaklarna",
3991
- "takip",
3992
- "takip et",
3993
- "takma",
3994
- "tarrakimin",
3995
- "tasak",
3996
- "tassak",
3997
- "tayyip",
3998
- "ta\u015Fak",
3999
- "ta\u015F\u015Fak",
4000
- "temas\u0131yla",
4001
- "teror",
4002
- "terorist",
4003
- "ter\xF6r",
4004
- "ter\xF6rist",
4005
- "thumb?",
4006
- "tipini s.k",
4007
- "tipinizi s.keyim",
4008
- "tiyniyat",
4009
- "tokmaklama",
4010
- "tokmaklamak",
4011
- "top",
4012
- "toplarm",
4013
- "topsun",
4014
- "toto\u015F",
4015
- "transeksuel",
4016
- "transeks\xFCel",
4017
- "travesti",
4018
- "ukler",
4019
- "ulan",
4020
- "ulen",
4021
- "ulker",
4022
- "vagina",
4023
- "vajina",
4024
- "vajinan\u0131",
4025
- "va\u015Fina",
4026
- "veled",
4027
- "veled i zina",
4028
- "veledizina",
4029
- "verdiimin",
4030
- "verem",
4031
- "vodka",
4032
- "votka",
4033
- "weled",
4034
- "weledizina",
4035
- "whore",
4036
- "wslik",
4037
- "wslik server",
4038
- "xikeyim",
4039
- "yaaraaa",
4040
- "yahudi",
4041
- "yalaka",
4042
- "yalama",
4043
- "yalarun",
4044
- "yalar\u0131m",
4045
- "yaraaam",
4046
- "yarak",
4047
- "yaraks\u0131z",
4048
- "yaraktr",
4049
- "yaram",
4050
- "yaraminbasi",
4051
- "yaramn",
4052
- "yararmorospunun",
4053
- "yark",
4054
- "yarra",
4055
- "yarraaaa",
4056
- "yarraak",
4057
- "yarraam",
4058
- "yarraam\u0131",
4059
- "yarragi",
4060
- "yarragimi",
4061
- "yarragina",
4062
- "yarragindan",
4063
- "yarragm",
4064
- "yarraimin",
4065
- "yarrak",
4066
- "yarram",
4067
- "yarramin",
4068
- "yarraminba\u015F\u0131",
4069
- "yarramn",
4070
- "yarram\u0131n",
4071
- "yarran",
4072
- "yarrana",
4073
- "yarra\u011F",
4074
- "yarra\u011F\u0131m",
4075
- "yarra\u011F\u0131m\u0131",
4076
- "yarrk",
4077
- "yarro",
4078
- "yarrrak",
4079
- "yaudi",
4080
- "yavak",
4081
- "yavu\u015Fak",
4082
- "yav\u015F",
4083
- "yav\u015Fak",
4084
- "yav\u015Fakt\u0131r",
4085
- "yav\u015Famak",
4086
- "ya\u011Fudi",
4087
- "yilisik",
4088
- "yogurtlayam",
4089
- "yosma",
4090
- "yo\u011Furtlayam",
4091
- "yrak",
4092
- "yrk",
4093
- "yrrak",
4094
- "y\u0131l\u0131\u015F\u0131k",
4095
- "zibidi",
4096
- "zigsin",
4097
- "zikeyim",
4098
- "zikiiim",
4099
- "zikiim",
4100
- "zikik",
4101
- "zikim",
4102
- "ziksiiin",
4103
- "ziksiin",
4104
- "zina",
4105
- "zulliyetini",
4106
- "zviyetini",
4107
- "z\u0131kk\u0131m\u0131m",
4108
- "\xE7al\u0131\u015Fmak istermisiniz?",
4109
- "\xE7\xFCk",
4110
- "\xF6k\xFCz",
4111
- "\xF6l",
4112
- "\xF6\u015Fex",
4113
- "\xFCkler",
4114
- "\xFClker",
4115
- "\xFClk\xFCc\xFC",
4116
- "\u0131bnel\u0131k",
4117
- "\u015Ferefsiz",
4118
- "\u015Ferefsizler",
4119
- "\u015Ferefsizlerin",
4120
- "\u015Ferefsizlik",
4121
- "\u015Firret",
4122
- "\u015Fi\u015Fme",
4123
- "\u015Fi\u015Fme bebek",
4124
- "\u015Fi\u015Fme kad\u0131n",
4125
- "\u015Fi\u015Fme manken",
4126
- "\u015F\u0131ll\u0131k",
4127
- "\u015F\u0131rf\u0131nt\u0131"
4128
- ]
4129
- };
4130
-
4131
- // ../../shared/dictionaries/spanish.json
4132
- var spanish_default = {
4133
- words: [
4134
- "sesinato",
4135
- "asno",
4136
- "bastardo",
4137
- "Bollera",
4138
- "Cabron",
4139
- "Cabr\xF3n",
4140
- "Caca",
4141
- "Chupada",
4142
- "Chupapollas",
4143
- "Chupet\xF3n",
4144
- "concha",
4145
- "Concha de tu madre",
4146
- "Co\xF1o",
4147
- "Coprofag\xEDa",
4148
- "Culo",
4149
- "Drogas",
4150
- "Esperma",
4151
- "Fiesta de salchichas",
4152
- "Follador",
4153
- "Follar",
4154
- "Gilipichis",
4155
- "Gilipollas",
4156
- "Hacer una paja",
4157
- "Haciendo el amor",
4158
- "Hero\xEDna",
4159
- "Hija de puta",
4160
- "Hijaputa",
4161
- "Hijo de puta",
4162
- "Hijoputa",
4163
- "Idiota",
4164
- "Imb\xE9cil",
4165
- "infierno",
4166
- "Jilipollas",
4167
- "Kapullo",
4168
- "Lameculos",
4169
- "Maciza",
4170
- "Macizorra",
4171
- "maldito",
4172
- "Mamada",
4173
- "Marica",
4174
- "Maric\xF3n",
4175
- "Mariconazo",
4176
- "martillo",
4177
- "Mierda",
4178
- "Nazi",
4179
- "Orina",
4180
- "Pedo",
4181
- "Pervertido",
4182
- "Pez\xF3n",
4183
- "Pinche",
4184
- "Pis",
4185
- "Prostituta",
4186
- "Puta",
4187
- "Racista",
4188
- "Ramera",
4189
- "S\xE1dico",
4190
- "Semen",
4191
- "Sexo",
4192
- "Sexo oral",
4193
- "Soplagaitas",
4194
- "Soplapollas",
4195
- "Tetas grandes",
4196
- "T\xEDa buena",
4197
- "Travesti",
4198
- "Trio",
4199
- "Verga",
4200
- "vete a la mierda",
4201
- "Vulva"
4202
- ]
4203
- };
4204
-
4205
- // ../../shared/dictionaries/swedish.json
4206
- var swedish_default = {
4207
- words: [
4208
- "arsle",
4209
- "brutta",
4210
- "discofitta",
4211
- "dra \xE5t helvete",
4212
- "fan",
4213
- "fitta",
4214
- "fittig",
4215
- "f\xF6r helvete",
4216
- "helvete",
4217
- "h\xE5rd",
4218
- "j\xE4vlar",
4219
- "knulla",
4220
- "kuk",
4221
- "kuks\xE5s",
4222
- "k\xF6tthuvud",
4223
- "k\xF6ttnacke",
4224
- "moona",
4225
- "moonade",
4226
- "moonar",
4227
- "moonat",
4228
- "mutta",
4229
- "nigger",
4230
- "neger",
4231
- "olla",
4232
- "pippa",
4233
- "pitt",
4234
- "prutt",
4235
- "p\xF6k",
4236
- "runka",
4237
- "r\xF6v",
4238
- "r\xF6vh\xE5l",
4239
- "r\xF6vknulla",
4240
- "satan",
4241
- "skita",
4242
- "skit ner dig",
4243
- "sk\xE4ggbiff",
4244
- "snedfitta",
4245
- "snefitta",
4246
- "stake",
4247
- "subba",
4248
- "s\xE5s",
4249
- "s\xE4tta p\xE5",
4250
- "tusan"
4251
- ]
4252
- };
4253
-
4254
- // ../../shared/dictionaries/thai.json
4255
- var thai_default = {
4256
- words: [
4257
- "\u0E01\u0E23\u0E30\u0E14\u0E2D",
4258
- "\u0E01\u0E23\u0E30\u0E40\u0E14\u0E49\u0E32",
4259
- "\u0E01\u0E23\u0E30\u0E2B\u0E23\u0E35\u0E48",
4260
- "\u0E01\u0E30\u0E1B\u0E34",
4261
- "\u0E01\u0E39",
4262
- "\u0E02\u0E35\u0E49",
4263
- "\u0E04\u0E27\u0E22",
4264
- "\u0E08\u0E34\u0E4B\u0E21",
4265
- "\u0E08\u0E39\u0E4B",
4266
- "\u0E40\u0E08\u0E4A\u0E01",
4267
- "\u0E40\u0E08\u0E35\u0E4A\u0E22\u0E27",
4268
- "\u0E14\u0E2D\u0E01\u0E17\u0E2D\u0E07",
4269
- "\u0E15\u0E2D\u0E41\u0E2B\u0E25",
4270
- "\u0E15\u0E39\u0E14",
4271
- "\u0E19\u0E49\u0E4D\u0E32\u0E41\u0E15\u0E01",
4272
- "\u0E21\u0E36\u0E07",
4273
- "\u0E41\u0E21\u0E48\u0E07",
4274
- "\u0E40\u0E22\u0E47\u0E14",
4275
- "\u0E23\u0E39\u0E15\u0E39\u0E14",
4276
- "\u0E25\u0E49\u0E32\u0E07\u0E15\u0E39\u0E49\u0E40\u0E22\u0E47\u0E19",
4277
- "\u0E2A\u0E49\u0E19\u0E15\u0E35\u0E19",
4278
- "\u0E2A\u0E31\u0E14",
4279
- "\u0E40\u0E2A\u0E37\u0E2D\u0E01",
4280
- "\u0E2B\u0E0D\u0E34\u0E07\u0E0A\u0E32\u0E15\u0E34\u0E0A\u0E31\u0E48\u0E27",
4281
- "\u0E2B\u0E25\u0E31\u0E48\u0E07",
4282
- "\u0E2B\u0E48\u0E32",
4283
- "\u0E2B\u0E4D\u0E32",
4284
- "\u0E2B\u0E35",
4285
- "\u0E40\u0E2B\u0E35\u0E49\u0E22",
4286
- "\u0E2D\u0E21\u0E19\u0E01\u0E40\u0E02\u0E32",
4287
- "\u0E44\u0E2D\u0E49\u0E04\u0E27\u0E32\u0E22"
4288
- ]
4289
- };
4290
-
4291
- // src/data/dictionary.ts
4292
- var dictionary_default = {
4293
- arabic: arabic_default.words,
4294
- chinese: chinese_default.words,
4295
- czech: czech_default.words,
4296
- danish: danish_default.words,
4297
- dutch: dutch_default.words,
4298
- english: english_default.words,
4299
- esperanto: esperanto_default.words,
4300
- finnish: finnish_default.words,
4301
- french: french_default.words,
4302
- german: german_default.words,
4303
- hindi: hindi_default.words,
4304
- hungarian: hungarian_default.words,
4305
- italian: italian_default.words,
4306
- japanese: japanese_default.words,
4307
- korean: korean_default.words,
4308
- norwegian: Norwegian_default.words,
4309
- persian: persian_default.words,
4310
- polish: polish_default.words,
4311
- portuguese: portuguese_default.words,
4312
- russian: russian_default.words,
4313
- spanish: spanish_default.words,
4314
- turkish: turkish_default.words,
4315
- swedish: swedish_default.words,
4316
- thai: thai_default.words
4317
- };
4318
-
4319
- // src/nlp/contextAnalyzer.ts
4320
- var POSITIVE_INDICATORS = /* @__PURE__ */ new Set([
4321
- "amazing",
4322
- "awesome",
4323
- "excellent",
4324
- "fantastic",
4325
- "great",
4326
- "love",
4327
- "wonderful",
4328
- "brilliant",
4329
- "perfect",
4330
- "incredible",
4331
- "outstanding",
4332
- "superb",
4333
- "magnificent",
4334
- "marvelous",
4335
- "spectacular",
4336
- "phenomenal",
4337
- "terrific",
4338
- "fabulous",
4339
- "divine",
4340
- "best",
4341
- "good",
4342
- "nice",
4343
- "cool",
4344
- "sweet",
4345
- "rad",
4346
- "sick",
4347
- "dope",
4348
- "fire",
4349
- "lit",
4350
- "epic",
4351
- "legendary",
4352
- "godlike",
4353
- "insane",
4354
- "crazy",
4355
- "wild",
4356
- "beast",
4357
- "movie",
4358
- "film",
4359
- "show",
4360
- "song",
4361
- "music",
4362
- "game",
4363
- "book",
4364
- "restaurant",
4365
- "food",
4366
- "dish",
4367
- "meal",
4368
- "place",
4369
- "spot",
4370
- "location",
4371
- "experience"
4372
- ]);
4373
- var NEGATIVE_INDICATORS = /* @__PURE__ */ new Set([
4374
- "hate",
4375
- "terrible",
4376
- "awful",
4377
- "horrible",
4378
- "disgusting",
4379
- "pathetic",
4380
- "stupid",
4381
- "idiot",
4382
- "moron",
4383
- "loser",
4384
- "worthless",
4385
- "useless",
4386
- "garbage",
4387
- "trash",
4388
- "suck",
4389
- "sucks",
4390
- "worst",
4391
- "bad",
4392
- "ugly",
4393
- "gross",
4394
- "nasty",
4395
- "annoying",
4396
- "irritating",
4397
- "frustrating",
4398
- "disappointing",
4399
- "lame",
4400
- "weak",
4401
- "fail",
4402
- "you",
4403
- "your",
4404
- "yourself",
4405
- "u",
4406
- "ur",
4407
- "ure",
4408
- "youre"
4409
- ]);
4410
- var GAMING_POSITIVE = /* @__PURE__ */ new Set([
4411
- "player",
4412
- "gamer",
4413
- "team",
4414
- "squad",
4415
- "clan",
4416
- "guild",
4417
- "match",
4418
- "game",
4419
- "round",
4420
- "level",
4421
- "boss",
4422
- "raid",
4423
- "quest",
4424
- "achievement",
4425
- "skill",
4426
- "build",
4427
- "loadout",
4428
- "strategy",
4429
- "tactic",
4430
- "play",
4431
- "move",
4432
- "combo"
4433
- ]);
4434
- var POSITIVE_PHRASES = /* @__PURE__ */ new Map([
4435
- ["the bomb", 0.9],
4436
- // "this movie is the bomb"
4437
- ["da bomb", 0.9],
4438
- // slang for "the best"
4439
- ["bomb.com", 0.9],
4440
- // website reference
4441
- ["bomb diggity", 0.9],
4442
- // slang for excellent
4443
- ["photo bomb", 0.8],
4444
- // photography term
4445
- ["bath bomb", 0.8],
4446
- // cosmetic product
4447
- ["bomb squad", 0.7]
4448
- // could be neutral/positive in gaming
4449
- ]);
4450
- var NEGATIVE_PHRASES = /* @__PURE__ */ new Map([
4451
- ["you are", 0.1],
4452
- // "you are [profanity]"
4453
- ["ur a", 0.1],
4454
- // "ur a [profanity]"
4455
- ["such a", 0.2],
4456
- // "such a [profanity]"
4457
- ["fucking", 0.1],
4458
- // intensifier, usually negative
4459
- ["damn", 0.2]
4460
- // mild profanity, context dependent
4461
- ]);
4462
- var ContextAnalyzer = class {
4463
- constructor(config) {
4464
- this.contextWindow = config.contextWindow;
4465
- this.language = config.language;
4466
- this.domainWhitelists = new Set(config.domainWhitelists || []);
4467
- }
4468
- /**
4469
- * Analyzes the context around a profanity match to determine if it should be flagged
4470
- */
4471
- analyzeContext(text, matchWord, matchIndex) {
4472
- const words = this.tokenize(text);
4473
- const matchWordIndex = this.findWordIndex(words, matchIndex);
4474
- if (matchWordIndex === -1) {
4475
- return {
4476
- contextScore: 0.5,
4477
- reason: "Could not locate match in tokenized text",
4478
- isWhitelisted: false
4479
- };
4480
- }
4481
- const startIndex = Math.max(0, matchWordIndex - this.contextWindow);
4482
- const endIndex = Math.min(words.length, matchWordIndex + this.contextWindow + 1);
4483
- const contextWords = words.slice(startIndex, endIndex);
4484
- const contextText = contextWords.join(" ").toLowerCase();
4485
- const phraseResult = this.checkPhraseContext(contextText, matchWord);
4486
- if (phraseResult) {
4487
- return phraseResult;
4488
- }
4489
- if (this.isDomainWhitelisted(contextWords, matchWord)) {
4490
- return {
4491
- contextScore: 0.8,
4492
- reason: "Domain-specific whitelist match",
4493
- isWhitelisted: true
4494
- };
4495
- }
4496
- const sentimentScore = this.calculateSentimentScore(contextWords, matchWordIndex - startIndex);
4497
- return {
4498
- contextScore: sentimentScore,
4499
- reason: this.generateReason(sentimentScore, contextWords),
4500
- isWhitelisted: false
4501
- };
4502
- }
4503
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
4504
- checkPhraseContext(contextText, matchWord) {
4505
- for (const [phrase, score] of POSITIVE_PHRASES.entries()) {
4506
- if (contextText.includes(phrase)) {
4507
- return {
4508
- contextScore: score,
4509
- reason: `Positive phrase detected: "${phrase}"`,
4510
- isWhitelisted: true
4511
- };
4512
- }
4513
- }
4514
- for (const [phrase, score] of NEGATIVE_PHRASES.entries()) {
4515
- if (contextText.includes(phrase)) {
4516
- return {
4517
- contextScore: score,
4518
- reason: `Negative phrase detected: "${phrase}"`,
4519
- isWhitelisted: false
4520
- };
4521
- }
4522
- }
4523
- return null;
4524
- }
4525
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
4526
- isDomainWhitelisted(contextWords, matchWord) {
4527
- for (const word of contextWords) {
4528
- if (this.domainWhitelists.has(word) || GAMING_POSITIVE.has(word)) {
4529
- return true;
4530
- }
4531
- }
4532
- return false;
4533
- }
4534
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
4535
- generateReason(score, contextWords) {
4536
- if (score >= 0.7) {
4537
- return "Positive context detected - likely not profanity";
4538
- } else if (score <= 0.3) {
4539
- return "Negative context detected - likely profanity";
4540
- } else {
4541
- return "Neutral context - uncertain classification";
4542
- }
4543
- }
4544
- tokenize(text) {
4545
- return text.toLowerCase().replace(/[^\w\s]/g, " ").split(/\s+/).filter((word) => word.length > 0);
4546
- }
4547
- findWordIndex(words, charIndex) {
4548
- let currentPos = 0;
4549
- for (let i = 0; i < words.length; i++) {
4550
- if (currentPos >= charIndex) {
4551
- return Math.max(0, i - 1);
4552
- }
4553
- currentPos += words[i].length + 1;
4554
- }
4555
- return words.length - 1;
4556
- }
4557
- calculateSentimentScore(contextWords, matchPosition) {
4558
- let positiveCount = 0;
4559
- let negativeCount = 0;
4560
- const totalWords = contextWords.length;
4561
- for (let i = 0; i < contextWords.length; i++) {
4562
- const word = contextWords[i];
4563
- const distance = Math.abs(i - matchPosition);
4564
- const weight = Math.max(0.1, 1 - distance * 0.2);
4565
- if (POSITIVE_INDICATORS.has(word)) {
4566
- positiveCount += weight;
4567
- } else if (NEGATIVE_INDICATORS.has(word)) {
4568
- negativeCount += weight;
4569
- }
4570
- }
4571
- const totalSentiment = positiveCount + negativeCount;
4572
- if (totalSentiment === 0) {
4573
- return 0.5;
4574
- }
4575
- const rawScore = positiveCount / totalSentiment;
4576
- let adjustedScore = rawScore;
4577
- const confidenceMultiplier = Math.min(1, totalWords / 5);
4578
- adjustedScore = 0.5 + (adjustedScore - 0.5) * confidenceMultiplier;
4579
- const hasPersonalPronouns = contextWords.some(
4580
- (word) => ["you", "your", "u", "ur"].includes(word)
4581
- );
4582
- if (hasPersonalPronouns && rawScore < 0.7) {
4583
- adjustedScore *= 0.7;
4584
- }
4585
- const hasObjectReferences = contextWords.some(
4586
- (word) => ["movie", "song", "game", "book", "show", "this", "that", "it"].includes(word)
4587
- );
4588
- if (hasObjectReferences && rawScore > 0.3) {
4589
- adjustedScore = Math.min(1, adjustedScore * 1.3);
4590
- }
4591
- return Math.max(0, Math.min(1, adjustedScore));
4592
- }
4593
- /**
4594
- * Updates the domain whitelist for this analyzer instance
4595
- */
4596
- updateDomainWhitelist(newWhitelist) {
4597
- this.domainWhitelists = new Set(newWhitelist);
4598
- }
4599
- /**
4600
- * Adds words to the domain whitelist
4601
- */
4602
- addToDomainWhitelist(words) {
4603
- words.forEach((word) => this.domainWhitelists.add(word.toLowerCase()));
4604
- }
4605
- };
4606
-
4607
- // src/filters/Filter.ts
4608
- var Filter = class {
4609
- /**
4610
- * Creates a new Filter instance with the specified configuration.
4611
- *
4612
- * @param config - Filter configuration options
4613
- *
4614
- * @example
4615
- * ```typescript
4616
- * // Basic usage
4617
- * const filter = new Filter({ languages: ['english'] });
4618
- *
4619
- * // With leetspeak detection
4620
- * const filter = new Filter({
4621
- * languages: ['english'],
4622
- * detectLeetspeak: true,
4623
- * leetspeakLevel: 'moderate',
4624
- * });
4625
- *
4626
- * // With all advanced features
4627
- * const filter = new Filter({
4628
- * languages: ['english', 'spanish'],
4629
- * detectLeetspeak: true,
4630
- * normalizeUnicode: true,
4631
- * cacheResults: true,
4632
- * enableContextAware: true,
4633
- * });
4634
- * ```
4635
- */
4636
- constructor(config) {
4637
- const defaultLanguage = "english";
4638
- this.enableContextAware = config?.enableContextAware ?? false;
4639
- this.contextWindow = config?.contextWindow ?? 3;
4640
- this.confidenceThreshold = config?.confidenceThreshold ?? 0.7;
4641
- this.primaryLanguage = config?.languages?.[0] || defaultLanguage;
4642
- if (this.enableContextAware) {
4643
- this.contextAnalyzer = new ContextAnalyzer({
4644
- contextWindow: this.contextWindow,
4645
- language: this.primaryLanguage,
4646
- domainWhitelists: config?.domainWhitelists?.[this.primaryLanguage] || []
4647
- });
4648
- }
4649
- this.caseSensitive = config?.caseSensitive ?? false;
4650
- this.allowObfuscatedMatch = config?.allowObfuscatedMatch ?? false;
4651
- this.wordBoundaries = config?.wordBoundaries ?? !this.allowObfuscatedMatch;
4652
- this.replaceWith = config?.replaceWith;
4653
- this.severityLevels = config?.severityLevels ?? false;
4654
- this.ignoreWords = new Set(
4655
- config?.ignoreWords?.map((word) => word.toLowerCase()) || []
4656
- );
4657
- this.logProfanity = config?.logProfanity ?? false;
4658
- this.fuzzyToleranceLevel = config?.fuzzyToleranceLevel ?? 0.8;
4659
- this.detectLeetspeak = config?.detectLeetspeak ?? false;
4660
- this.leetspeakLevel = config?.leetspeakLevel ?? "moderate";
4661
- this.normalizeUnicodeEnabled = config?.normalizeUnicode ?? true;
4662
- this.cacheResults = config?.cacheResults ?? false;
4663
- this.maxCacheSize = config?.maxCacheSize ?? 1e3;
4664
- this.cache = /* @__PURE__ */ new Map();
4665
- let words = [];
4666
- if (config?.allLanguages) {
4667
- for (const lang in dictionary_default) {
4668
- if (Object.prototype.hasOwnProperty.call(dictionary_default, lang)) {
4669
- words = [...words, ...dictionary_default[lang]];
4670
- }
4671
- }
4672
- } else {
4673
- const languages = config?.languages || ["english"];
4674
- const languagesChecks = new Set(languages);
4675
- languagesChecks.forEach((lang) => {
4676
- words = [...words, ...dictionary_default[lang]];
4677
- });
4678
- }
4679
- if (config?.customWords) {
4680
- words = [...words, ...config.customWords];
4681
- }
4682
- this.words = new Map(words.map((word) => [word.toLowerCase(), 1]));
4683
- }
4684
- debugLog(...args) {
4685
- if (this.logProfanity) {
4686
- console.log("[glin-profanity]", ...args);
4687
- }
4688
- }
4689
- /**
4690
- * Normalizes text for profanity detection using all enabled normalization methods.
4691
- * Applies Unicode normalization, leetspeak detection, and obfuscation handling.
4692
- *
4693
- * @param text - The input text to normalize
4694
- * @returns The normalized text
4695
- */
4696
- normalizeText(text) {
4697
- let normalized = text;
4698
- if (this.normalizeUnicodeEnabled) {
4699
- normalized = normalizeUnicode(normalized);
4700
- }
4701
- if (this.detectLeetspeak) {
4702
- normalized = normalizeLeetspeak(normalized, {
4703
- level: this.leetspeakLevel,
4704
- collapseRepeated: true,
4705
- removeSpacedChars: true
4706
- });
4707
- }
4708
- if (this.allowObfuscatedMatch && !this.detectLeetspeak) {
4709
- normalized = this.normalizeObfuscated(normalized);
4710
- }
4711
- return normalized;
4712
- }
4713
- /**
4714
- * Legacy obfuscation normalization method (for backward compatibility).
4715
- * @deprecated Use normalizeText() with detectLeetspeak option instead.
4716
- */
4717
- normalizeObfuscated(text) {
4718
- let normalized = text.replace(/([a-zA-Z])\1{1,}/g, "$1$1");
4719
- const charMap = {
4720
- "@": "a",
4721
- $: "s",
4722
- "!": "i",
4723
- "1": "i",
4724
- "*": ""
4725
- };
4726
- normalized = normalized.replace(/[@$!1*]/g, (m) => charMap[m] || m);
4727
- return normalized;
4728
- }
4729
- /**
4730
- * Clears the result cache.
4731
- * Useful when dictionary or configuration changes.
4732
- */
4733
- clearCache() {
4734
- this.cache.clear();
4735
- }
4736
- /**
4737
- * Gets the current cache size.
4738
- * @returns Number of cached results
4739
- */
4740
- getCacheSize() {
4741
- return this.cache.size;
4742
- }
4743
- /**
4744
- * Exports the current filter configuration as a JSON-serializable object.
4745
- * Useful for saving configuration to files or sharing between environments.
4746
- *
4747
- * @returns The current filter configuration
4748
- *
4749
- * @example
4750
- * ```typescript
4751
- * const filter = new Filter({
4752
- * languages: ['english', 'spanish'],
4753
- * detectLeetspeak: true,
4754
- * leetspeakLevel: 'aggressive',
4755
- * });
4756
- *
4757
- * const config = filter.getConfig();
4758
- * // Save to file: fs.writeFileSync('filter.config.json', JSON.stringify(config));
4759
- *
4760
- * // Later, restore:
4761
- * // const saved = JSON.parse(fs.readFileSync('filter.config.json'));
4762
- * // const restored = new Filter(saved);
4763
- * ```
4764
- */
4765
- getConfig() {
4766
- return {
4767
- languages: [this.primaryLanguage],
4768
- caseSensitive: this.caseSensitive,
4769
- wordBoundaries: this.wordBoundaries,
4770
- replaceWith: this.replaceWith,
4771
- severityLevels: this.severityLevels,
4772
- ignoreWords: Array.from(this.ignoreWords),
4773
- logProfanity: this.logProfanity,
4774
- allowObfuscatedMatch: this.allowObfuscatedMatch,
4775
- fuzzyToleranceLevel: this.fuzzyToleranceLevel,
4776
- enableContextAware: this.enableContextAware,
4777
- contextWindow: this.contextWindow,
4778
- confidenceThreshold: this.confidenceThreshold,
4779
- detectLeetspeak: this.detectLeetspeak,
4780
- leetspeakLevel: this.leetspeakLevel,
4781
- normalizeUnicode: this.normalizeUnicodeEnabled,
4782
- cacheResults: this.cacheResults,
4783
- maxCacheSize: this.maxCacheSize
4784
- };
4785
- }
4786
- /**
4787
- * Returns the current word dictionary size.
4788
- * Useful for monitoring and debugging.
4789
- *
4790
- * @returns Number of words in the dictionary
4791
- */
4792
- getWordCount() {
4793
- return this.words.size;
4794
- }
4795
- /**
4796
- * Adds a result to the cache, evicting oldest entries if necessary.
4797
- */
4798
- addToCache(key, result) {
4799
- if (!this.cacheResults) return;
4800
- if (this.cache.size >= this.maxCacheSize) {
4801
- const firstKey = this.cache.keys().next().value;
4802
- if (firstKey) {
4803
- this.cache.delete(firstKey);
4804
- }
4805
- }
4806
- this.cache.set(key, result);
4807
- }
4808
- /**
4809
- * Gets a cached result if available.
4810
- */
4811
- getFromCache(key) {
4812
- if (!this.cacheResults) return void 0;
4813
- return this.cache.get(key);
4814
- }
4815
- getRegex(word) {
4816
- const flags = this.caseSensitive ? "g" : "gi";
4817
- const escapedWord = word.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
4818
- const boundary = this.wordBoundaries ? "\\b" : "";
4819
- return new RegExp(`${boundary}${escapedWord}${boundary}`, flags);
4820
- }
4821
- isFuzzyToleranceMatch(word, text) {
4822
- const simplifiedText = text.toLowerCase().replace(/[^a-z]/g, "");
4823
- const simplifiedWord = word.toLowerCase();
4824
- let matchCount = 0;
4825
- let index = 0;
4826
- for (let i = 0; i < simplifiedText.length; i++) {
4827
- if (simplifiedText[i] === simplifiedWord[index]) {
4828
- matchCount++;
4829
- index++;
4830
- if (index === simplifiedWord.length) break;
4831
- }
4832
- }
4833
- const score = matchCount / simplifiedWord.length;
4834
- return score >= this.fuzzyToleranceLevel;
4835
- }
4836
- evaluateSeverity(word, text) {
4837
- if (this.wordBoundaries && this.getRegex(word).test(text)) {
4838
- return 1 /* EXACT */;
4839
- }
4840
- if (this.getRegex(word).test(text)) return 1 /* EXACT */;
4841
- if (this.isFuzzyToleranceMatch(word, text)) return 2 /* FUZZY */;
4842
- return void 0;
4843
- }
4844
- /**
4845
- * Checks if the given text contains profanity.
4846
- *
4847
- * @param value - The text to check
4848
- * @returns True if the text contains profanity
4849
- *
4850
- * @example
4851
- * ```typescript
4852
- * const filter = new Filter({ detectLeetspeak: true });
4853
- *
4854
- * filter.isProfane('hello'); // false
4855
- * filter.isProfane('fuck'); // true
4856
- * filter.isProfane('f4ck'); // true (leetspeak)
4857
- * filter.isProfane('fυck'); // true (Unicode homoglyph)
4858
- * ```
4859
- */
4860
- isProfane(value) {
4861
- const input = this.normalizeText(value);
4862
- for (const word of this.words.keys()) {
4863
- if (!this.ignoreWords.has(word.toLowerCase()) && this.evaluateSeverity(word, input) !== void 0) {
4864
- return true;
4865
- }
4866
- }
4867
- return false;
4868
- }
4869
- matches(word) {
4870
- return this.isProfane(word);
4871
- }
4872
- /**
4873
- * Performs a comprehensive profanity check on the given text.
4874
- *
4875
- * @param text - The text to check for profanity
4876
- * @returns Result object containing detected profanity information
4877
- *
4878
- * @example
4879
- * ```typescript
4880
- * const filter = new Filter({
4881
- * languages: ['english'],
4882
- * detectLeetspeak: true,
4883
- * normalizeUnicode: true,
4884
- * });
4885
- *
4886
- * const result = filter.checkProfanity('This is f4ck!ng bad');
4887
- * console.log(result.containsProfanity); // true
4888
- * console.log(result.profaneWords); // ['fuck']
4889
- *
4890
- * // With caching for repeated checks
4891
- * const filter2 = new Filter({ cacheResults: true });
4892
- * filter2.checkProfanity('same text'); // Computed
4893
- * filter2.checkProfanity('same text'); // Retrieved from cache
4894
- * ```
4895
- */
4896
- checkProfanity(text) {
4897
- const cacheKey = text;
4898
- const cachedResult = this.getFromCache(cacheKey);
4899
- if (cachedResult) {
4900
- this.debugLog("Cache hit for:", text.substring(0, 50));
4901
- return cachedResult;
4902
- }
4903
- if (!this.enableContextAware) {
4904
- let input2 = this.normalizeText(text);
4905
- input2 = input2.toLowerCase();
4906
- const profaneWords2 = [];
4907
- const severityMap2 = {};
4908
- for (const dictWord of this.words.keys()) {
4909
- if (this.ignoreWords.has(dictWord.toLowerCase())) continue;
4910
- const severity = this.evaluateSeverity(dictWord, input2);
4911
- if (severity !== void 0) {
4912
- const regex = this.getRegex(dictWord);
4913
- let match;
4914
- while ((match = regex.exec(input2)) !== null) {
4915
- profaneWords2.push(match[0]);
4916
- if (severityMap2[match[0]] === void 0) {
4917
- severityMap2[match[0]] = severity;
4918
- }
4919
- }
4920
- }
4921
- }
4922
- let processedText2 = text;
4923
- if (this.replaceWith && profaneWords2.length > 0) {
4924
- const uniqueWords = Array.from(new Set(profaneWords2));
4925
- for (const word of uniqueWords) {
4926
- const escaped = word.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
4927
- const replacementRegex = this.wordBoundaries ? new RegExp(`\\b${escaped}\\b`, "gi") : new RegExp(escaped, "gi");
4928
- processedText2 = processedText2.replace(
4929
- replacementRegex,
4930
- this.replaceWith
4931
- );
4932
- }
4933
- }
4934
- const result2 = {
4935
- containsProfanity: profaneWords2.length > 0,
4936
- profaneWords: Array.from(new Set(profaneWords2)),
4937
- processedText: this.replaceWith ? processedText2 : void 0,
4938
- severityMap: this.severityLevels && Object.keys(severityMap2).length > 0 ? severityMap2 : void 0
4939
- };
4940
- this.addToCache(cacheKey, result2);
4941
- return result2;
4942
- }
4943
- let input = this.normalizeText(text);
4944
- input = input.toLowerCase();
4945
- const originalText = text;
4946
- const profaneWords = [];
4947
- const severityMap = {};
4948
- const matches = [];
4949
- for (const dictWord of this.words.keys()) {
4950
- if (this.ignoreWords.has(dictWord.toLowerCase())) continue;
4951
- const severity = this.evaluateSeverity(dictWord, input);
4952
- if (severity !== void 0) {
4953
- const regex = this.getRegex(dictWord);
4954
- let match;
4955
- while ((match = regex.exec(input)) !== null) {
4956
- const matchedWord = match[0];
4957
- const matchIndex = match.index;
4958
- const matchObj = {
4959
- word: matchedWord,
4960
- index: matchIndex,
4961
- severity
4962
- };
4963
- if (this.enableContextAware && this.contextAnalyzer) {
4964
- const contextResult = this.contextAnalyzer.analyzeContext(
4965
- originalText,
4966
- matchedWord,
4967
- matchIndex
4968
- );
4969
- matchObj.contextScore = contextResult.contextScore;
4970
- matchObj.reason = contextResult.reason;
4971
- matchObj.isWhitelisted = contextResult.isWhitelisted;
4972
- if (contextResult.isWhitelisted || contextResult.contextScore > this.confidenceThreshold) {
4973
- continue;
4974
- }
4975
- }
4976
- profaneWords.push(matchedWord);
4977
- if (severityMap[matchedWord] === void 0) {
4978
- severityMap[matchedWord] = severity;
4979
- }
4980
- matches.push(matchObj);
4981
- }
4982
- }
4983
- }
4984
- if (profaneWords.length > 0) {
4985
- this.debugLog("Detected:", profaneWords);
4986
- }
4987
- let processedText = text;
4988
- if (this.replaceWith && profaneWords.length > 0) {
4989
- const uniqueWords = Array.from(new Set(profaneWords));
4990
- for (const word of uniqueWords) {
4991
- const escaped = word.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
4992
- const replacementRegex = this.wordBoundaries ? new RegExp(`\\b${escaped}\\b`, "gi") : new RegExp(escaped, "gi");
4993
- processedText = processedText.replace(
4994
- replacementRegex,
4995
- this.replaceWith
4996
- );
4997
- }
4998
- }
4999
- let contextScore;
5000
- if (this.enableContextAware && matches.length > 0) {
5001
- const totalScore = matches.reduce((sum, match) => sum + (match.contextScore || 0.5), 0);
5002
- contextScore = totalScore / matches.length;
5003
- }
5004
- const result = {
5005
- containsProfanity: profaneWords.length > 0,
5006
- profaneWords: Array.from(new Set(profaneWords)),
5007
- processedText: this.replaceWith ? processedText : void 0,
5008
- severityMap: this.severityLevels && Object.keys(severityMap).length > 0 ? severityMap : void 0,
5009
- matches: matches.length > 0 ? matches : void 0,
5010
- contextScore,
5011
- reason: matches.length > 0 ? `Found ${matches.length} potential profanity matches` : "No profanity detected"
5012
- };
5013
- this.addToCache(cacheKey, result);
5014
- return result;
5015
- }
5016
- /**
5017
- * Checks profanity with minimum severity filtering.
5018
- *
5019
- * @param text - The text to check
5020
- * @param minSeverity - Minimum severity level to include in results
5021
- * @returns Object with filtered words and full result
5022
- */
5023
- checkProfanityWithMinSeverity(text, minSeverity = 1 /* EXACT */) {
5024
- const result = this.checkProfanity(text);
5025
- const filteredWords = result.severityMap && result.profaneWords.length > 0 ? result.profaneWords.filter((word) => {
5026
- const severity = result.severityMap?.[word];
5027
- return typeof severity === "number" && severity >= minSeverity;
5028
- }) : [];
5029
- return { filteredWords, result };
5030
- }
5031
- };
5032
-
5033
- export {
5034
- __commonJS,
5035
- __toESM,
5036
- SeverityLevel,
5037
- normalizeLeetspeak,
5038
- collapseSpacedCharacters,
5039
- collapseRepeatedCharacters,
5040
- containsLeetspeak,
5041
- generateLeetspeakVariants,
5042
- normalizeUnicode,
5043
- removeZeroWidthCharacters,
5044
- convertFullWidth,
5045
- convertHomoglyphs,
5046
- normalizeNFKD,
5047
- containsUnicodeObfuscation,
5048
- detectCharacterSets,
5049
- Filter
5050
- };