From 64bb8fc5295f1f649b0a5e92cf65cb4eb01b4bb5 Mon Sep 17 00:00:00 2001 From: Rob Hanlon <69870+robhanlon22@users.noreply.github.com> Date: Mon, 11 Dec 2023 09:21:28 -0800 Subject: [PATCH] chore: QOL improvements - Move default blocklist to its own file so `class Sqids` is visible upon opening - Export minAlphabetLength, minLengthLimit, and maxValue so they're available to downstream consumers --- src/sqids.ts | 583 +-------------------------------- src/sqids/default-blocklist.ts | 562 +++++++++++++++++++++++++++++++ 2 files changed, 571 insertions(+), 574 deletions(-) create mode 100644 src/sqids/default-blocklist.ts diff --git a/src/sqids.ts b/src/sqids.ts index 2b59051..8f1e54a 100644 --- a/src/sqids.ts +++ b/src/sqids.ts @@ -1,3 +1,5 @@ +import defaultBlocklist from './sqids/default-blocklist' + interface SqidsOptions { alphabet?: string minLength?: number @@ -7,570 +9,13 @@ interface SqidsOptions { export const defaultOptions = { alphabet: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', minLength: 0, - blocklist: new Set([ - '0rgasm', - '1d10t', - '1d1ot', - '1di0t', - '1diot', - '1eccacu10', - '1eccacu1o', - '1eccacul0', - '1eccaculo', - '1mbec11e', - '1mbec1le', - '1mbeci1e', - '1mbecile', - 'a11upat0', - 'a11upato', - 'a1lupat0', - 'a1lupato', - 'aand', - 'ah01e', - 'ah0le', - 'aho1e', - 'ahole', - 'al1upat0', - 'al1upato', - 'allupat0', - 'allupato', - 'ana1', - 'ana1e', - 'anal', - 'anale', - 'anus', - 'arrapat0', - 'arrapato', - 'arsch', - 'arse', - 'ass', - 'b00b', - 'b00be', - 'b01ata', - 'b0ceta', - 'b0iata', - 'b0ob', - 'b0obe', - 'b0sta', - 'b1tch', - 'b1te', - 'b1tte', - 'ba1atkar', - 'balatkar', - 'bastard0', - 'bastardo', - 'batt0na', - 'battona', - 'bitch', - 'bite', - 'bitte', - 'bo0b', - 'bo0be', - 'bo1ata', - 'boceta', - 'boiata', - 'boob', - 'boobe', - 'bosta', - 'bran1age', - 'bran1er', - 'bran1ette', - 'bran1eur', - 'bran1euse', - 'branlage', - 'branler', - 'branlette', - 'branleur', - 'branleuse', - 'c0ck', - 'c0g110ne', - 'c0g11one', - 'c0g1i0ne', - 'c0g1ione', - 'c0gl10ne', - 'c0gl1one', - 'c0gli0ne', - 'c0glione', - 'c0na', - 'c0nnard', - 'c0nnasse', - 'c0nne', - 'c0u111es', - 'c0u11les', - 'c0u1l1es', - 'c0u1lles', - 'c0ui11es', - 'c0ui1les', - 'c0uil1es', - 'c0uilles', - 'c11t', - 'c11t0', - 'c11to', - 'c1it', - 'c1it0', - 'c1ito', - 'cabr0n', - 'cabra0', - 'cabrao', - 'cabron', - 'caca', - 'cacca', - 'cacete', - 'cagante', - 'cagar', - 'cagare', - 'cagna', - 'cara1h0', - 'cara1ho', - 'caracu10', - 'caracu1o', - 'caracul0', - 'caraculo', - 'caralh0', - 'caralho', - 'cazz0', - 'cazz1mma', - 'cazzata', - 'cazzimma', - 'cazzo', - 'ch00t1a', - 'ch00t1ya', - 'ch00tia', - 'ch00tiya', - 'ch0d', - 'ch0ot1a', - 'ch0ot1ya', - 'ch0otia', - 'ch0otiya', - 'ch1asse', - 'ch1avata', - 'ch1er', - 'ch1ng0', - 'ch1ngadaz0s', - 'ch1ngadazos', - 'ch1ngader1ta', - 'ch1ngaderita', - 'ch1ngar', - 'ch1ngo', - 'ch1ngues', - 'ch1nk', - 'chatte', - 'chiasse', - 'chiavata', - 'chier', - 'ching0', - 'chingadaz0s', - 'chingadazos', - 'chingader1ta', - 'chingaderita', - 'chingar', - 'chingo', - 'chingues', - 'chink', - 'cho0t1a', - 'cho0t1ya', - 'cho0tia', - 'cho0tiya', - 'chod', - 'choot1a', - 'choot1ya', - 'chootia', - 'chootiya', - 'cl1t', - 'cl1t0', - 'cl1to', - 'clit', - 'clit0', - 'clito', - 'cock', - 'cog110ne', - 'cog11one', - 'cog1i0ne', - 'cog1ione', - 'cogl10ne', - 'cogl1one', - 'cogli0ne', - 'coglione', - 'cona', - 'connard', - 'connasse', - 'conne', - 'cou111es', - 'cou11les', - 'cou1l1es', - 'cou1lles', - 'coui11es', - 'coui1les', - 'couil1es', - 'couilles', - 'cracker', - 'crap', - 'cu10', - 'cu1att0ne', - 'cu1attone', - 'cu1er0', - 'cu1ero', - 'cu1o', - 'cul0', - 'culatt0ne', - 'culattone', - 'culer0', - 'culero', - 'culo', - 'cum', - 'cunt', - 'd11d0', - 'd11do', - 'd1ck', - 'd1ld0', - 'd1ldo', - 'damn', - 'de1ch', - 'deich', - 'depp', - 'di1d0', - 'di1do', - 'dick', - 'dild0', - 'dildo', - 'dyke', - 'encu1e', - 'encule', - 'enema', - 'enf01re', - 'enf0ire', - 'enfo1re', - 'enfoire', - 'estup1d0', - 'estup1do', - 'estupid0', - 'estupido', - 'etr0n', - 'etron', - 'f0da', - 'f0der', - 'f0ttere', - 'f0tters1', - 'f0ttersi', - 'f0tze', - 'f0utre', - 'f1ca', - 'f1cker', - 'f1ga', - 'fag', - 'fica', - 'ficker', - 'figa', - 'foda', - 'foder', - 'fottere', - 'fotters1', - 'fottersi', - 'fotze', - 'foutre', - 'fr0c10', - 'fr0c1o', - 'fr0ci0', - 'fr0cio', - 'fr0sc10', - 'fr0sc1o', - 'fr0sci0', - 'fr0scio', - 'froc10', - 'froc1o', - 'froci0', - 'frocio', - 'frosc10', - 'frosc1o', - 'frosci0', - 'froscio', - 'fuck', - 'g00', - 'g0o', - 'g0u1ne', - 'g0uine', - 'gandu', - 'go0', - 'goo', - 'gou1ne', - 'gouine', - 'gr0gnasse', - 'grognasse', - 'haram1', - 'harami', - 'haramzade', - 'hund1n', - 'hundin', - 'id10t', - 'id1ot', - 'idi0t', - 'idiot', - 'imbec11e', - 'imbec1le', - 'imbeci1e', - 'imbecile', - 'j1zz', - 'jerk', - 'jizz', - 'k1ke', - 'kam1ne', - 'kamine', - 'kike', - 'leccacu10', - 'leccacu1o', - 'leccacul0', - 'leccaculo', - 'm1erda', - 'm1gn0tta', - 'm1gnotta', - 'm1nch1a', - 'm1nchia', - 'm1st', - 'mam0n', - 'mamahuev0', - 'mamahuevo', - 'mamon', - 'masturbat10n', - 'masturbat1on', - 'masturbate', - 'masturbati0n', - 'masturbation', - 'merd0s0', - 'merd0so', - 'merda', - 'merde', - 'merdos0', - 'merdoso', - 'mierda', - 'mign0tta', - 'mignotta', - 'minch1a', - 'minchia', - 'mist', - 'musch1', - 'muschi', - 'n1gger', - 'neger', - 'negr0', - 'negre', - 'negro', - 'nerch1a', - 'nerchia', - 'nigger', - 'orgasm', - 'p00p', - 'p011a', - 'p01la', - 'p0l1a', - 'p0lla', - 'p0mp1n0', - 'p0mp1no', - 'p0mpin0', - 'p0mpino', - 'p0op', - 'p0rca', - 'p0rn', - 'p0rra', - 'p0uff1asse', - 'p0uffiasse', - 'p1p1', - 'p1pi', - 'p1r1a', - 'p1rla', - 'p1sc10', - 'p1sc1o', - 'p1sci0', - 'p1scio', - 'p1sser', - 'pa11e', - 'pa1le', - 'pal1e', - 'palle', - 'pane1e1r0', - 'pane1e1ro', - 'pane1eir0', - 'pane1eiro', - 'panele1r0', - 'panele1ro', - 'paneleir0', - 'paneleiro', - 'patakha', - 'pec0r1na', - 'pec0rina', - 'pecor1na', - 'pecorina', - 'pen1s', - 'pendej0', - 'pendejo', - 'penis', - 'pip1', - 'pipi', - 'pir1a', - 'pirla', - 'pisc10', - 'pisc1o', - 'pisci0', - 'piscio', - 'pisser', - 'po0p', - 'po11a', - 'po1la', - 'pol1a', - 'polla', - 'pomp1n0', - 'pomp1no', - 'pompin0', - 'pompino', - 'poop', - 'porca', - 'porn', - 'porra', - 'pouff1asse', - 'pouffiasse', - 'pr1ck', - 'prick', - 'pussy', - 'put1za', - 'puta', - 'puta1n', - 'putain', - 'pute', - 'putiza', - 'puttana', - 'queca', - 'r0mp1ba11e', - 'r0mp1ba1le', - 'r0mp1bal1e', - 'r0mp1balle', - 'r0mpiba11e', - 'r0mpiba1le', - 'r0mpibal1e', - 'r0mpiballe', - 'rand1', - 'randi', - 'rape', - 'recch10ne', - 'recch1one', - 'recchi0ne', - 'recchione', - 'retard', - 'romp1ba11e', - 'romp1ba1le', - 'romp1bal1e', - 'romp1balle', - 'rompiba11e', - 'rompiba1le', - 'rompibal1e', - 'rompiballe', - 'ruff1an0', - 'ruff1ano', - 'ruffian0', - 'ruffiano', - 's1ut', - 'sa10pe', - 'sa1aud', - 'sa1ope', - 'sacanagem', - 'sal0pe', - 'salaud', - 'salope', - 'saugnapf', - 'sb0rr0ne', - 'sb0rra', - 'sb0rrone', - 'sbattere', - 'sbatters1', - 'sbattersi', - 'sborr0ne', - 'sborra', - 'sborrone', - 'sc0pare', - 'sc0pata', - 'sch1ampe', - 'sche1se', - 'sche1sse', - 'scheise', - 'scheisse', - 'schlampe', - 'schwachs1nn1g', - 'schwachs1nnig', - 'schwachsinn1g', - 'schwachsinnig', - 'schwanz', - 'scopare', - 'scopata', - 'sexy', - 'sh1t', - 'shit', - 'slut', - 'sp0mp1nare', - 'sp0mpinare', - 'spomp1nare', - 'spompinare', - 'str0nz0', - 'str0nza', - 'str0nzo', - 'stronz0', - 'stronza', - 'stronzo', - 'stup1d', - 'stupid', - 'succh1am1', - 'succh1ami', - 'succhiam1', - 'succhiami', - 'sucker', - 't0pa', - 'tapette', - 'test1c1e', - 'test1cle', - 'testic1e', - 'testicle', - 'tette', - 'topa', - 'tr01a', - 'tr0ia', - 'tr0mbare', - 'tr1ng1er', - 'tr1ngler', - 'tring1er', - 'tringler', - 'tro1a', - 'troia', - 'trombare', - 'turd', - 'twat', - 'vaffancu10', - 'vaffancu1o', - 'vaffancul0', - 'vaffanculo', - 'vag1na', - 'vagina', - 'verdammt', - 'verga', - 'w1chsen', - 'wank', - 'wichsen', - 'x0ch0ta', - 'x0chota', - 'xana', - 'xoch0ta', - 'xochota', - 'z0cc01a', - 'z0cc0la', - 'z0cco1a', - 'z0ccola', - 'z1z1', - 'z1zi', - 'ziz1', - 'zizi', - 'zocc01a', - 'zocc0la', - 'zocco1a', - 'zoccola', - ]), + blocklist: defaultBlocklist, } +export const minAlphabetLength = 3 +export const minLengthLimit = 255 +export const maxValue = Number.MAX_SAFE_INTEGER + export default class Sqids { private alphabet: string private minLength: number @@ -585,7 +30,6 @@ export default class Sqids { throw new Error('Alphabet cannot contain multibyte characters') } - const minAlphabetLength = 3 if (alphabet.length < minAlphabetLength) { throw new Error(`Alphabet length must be at least ${minAlphabetLength}`) } @@ -594,7 +38,6 @@ export default class Sqids { throw new Error('Alphabet must contain unique characters') } - const minLengthLimit = 255 if ( typeof minLength !== 'number' || minLength < 0 || @@ -628,13 +71,9 @@ export default class Sqids { return '' } - const areAllNumbersInRange = numbers.every( - (n) => n >= 0 && n <= this.maxValue(), - ) + const areAllNumbersInRange = numbers.every((n) => n >= 0 && n <= maxValue) if (!areAllNumbersInRange) { - throw new Error( - `Encoding supports numbers between 0 and ${this.maxValue()}`, - ) + throw new Error(`Encoding supports numbers between 0 and ${maxValue}`) } return this.encodeNumbers(numbers) @@ -783,8 +222,4 @@ export default class Sqids { return false } - - private maxValue() { - return Number.MAX_SAFE_INTEGER - } } diff --git a/src/sqids/default-blocklist.ts b/src/sqids/default-blocklist.ts new file mode 100644 index 0000000..2cce875 --- /dev/null +++ b/src/sqids/default-blocklist.ts @@ -0,0 +1,562 @@ +export default new Set([ + '0rgasm', + '1d10t', + '1d1ot', + '1di0t', + '1diot', + '1eccacu10', + '1eccacu1o', + '1eccacul0', + '1eccaculo', + '1mbec11e', + '1mbec1le', + '1mbeci1e', + '1mbecile', + 'a11upat0', + 'a11upato', + 'a1lupat0', + 'a1lupato', + 'aand', + 'ah01e', + 'ah0le', + 'aho1e', + 'ahole', + 'al1upat0', + 'al1upato', + 'allupat0', + 'allupato', + 'ana1', + 'ana1e', + 'anal', + 'anale', + 'anus', + 'arrapat0', + 'arrapato', + 'arsch', + 'arse', + 'ass', + 'b00b', + 'b00be', + 'b01ata', + 'b0ceta', + 'b0iata', + 'b0ob', + 'b0obe', + 'b0sta', + 'b1tch', + 'b1te', + 'b1tte', + 'ba1atkar', + 'balatkar', + 'bastard0', + 'bastardo', + 'batt0na', + 'battona', + 'bitch', + 'bite', + 'bitte', + 'bo0b', + 'bo0be', + 'bo1ata', + 'boceta', + 'boiata', + 'boob', + 'boobe', + 'bosta', + 'bran1age', + 'bran1er', + 'bran1ette', + 'bran1eur', + 'bran1euse', + 'branlage', + 'branler', + 'branlette', + 'branleur', + 'branleuse', + 'c0ck', + 'c0g110ne', + 'c0g11one', + 'c0g1i0ne', + 'c0g1ione', + 'c0gl10ne', + 'c0gl1one', + 'c0gli0ne', + 'c0glione', + 'c0na', + 'c0nnard', + 'c0nnasse', + 'c0nne', + 'c0u111es', + 'c0u11les', + 'c0u1l1es', + 'c0u1lles', + 'c0ui11es', + 'c0ui1les', + 'c0uil1es', + 'c0uilles', + 'c11t', + 'c11t0', + 'c11to', + 'c1it', + 'c1it0', + 'c1ito', + 'cabr0n', + 'cabra0', + 'cabrao', + 'cabron', + 'caca', + 'cacca', + 'cacete', + 'cagante', + 'cagar', + 'cagare', + 'cagna', + 'cara1h0', + 'cara1ho', + 'caracu10', + 'caracu1o', + 'caracul0', + 'caraculo', + 'caralh0', + 'caralho', + 'cazz0', + 'cazz1mma', + 'cazzata', + 'cazzimma', + 'cazzo', + 'ch00t1a', + 'ch00t1ya', + 'ch00tia', + 'ch00tiya', + 'ch0d', + 'ch0ot1a', + 'ch0ot1ya', + 'ch0otia', + 'ch0otiya', + 'ch1asse', + 'ch1avata', + 'ch1er', + 'ch1ng0', + 'ch1ngadaz0s', + 'ch1ngadazos', + 'ch1ngader1ta', + 'ch1ngaderita', + 'ch1ngar', + 'ch1ngo', + 'ch1ngues', + 'ch1nk', + 'chatte', + 'chiasse', + 'chiavata', + 'chier', + 'ching0', + 'chingadaz0s', + 'chingadazos', + 'chingader1ta', + 'chingaderita', + 'chingar', + 'chingo', + 'chingues', + 'chink', + 'cho0t1a', + 'cho0t1ya', + 'cho0tia', + 'cho0tiya', + 'chod', + 'choot1a', + 'choot1ya', + 'chootia', + 'chootiya', + 'cl1t', + 'cl1t0', + 'cl1to', + 'clit', + 'clit0', + 'clito', + 'cock', + 'cog110ne', + 'cog11one', + 'cog1i0ne', + 'cog1ione', + 'cogl10ne', + 'cogl1one', + 'cogli0ne', + 'coglione', + 'cona', + 'connard', + 'connasse', + 'conne', + 'cou111es', + 'cou11les', + 'cou1l1es', + 'cou1lles', + 'coui11es', + 'coui1les', + 'couil1es', + 'couilles', + 'cracker', + 'crap', + 'cu10', + 'cu1att0ne', + 'cu1attone', + 'cu1er0', + 'cu1ero', + 'cu1o', + 'cul0', + 'culatt0ne', + 'culattone', + 'culer0', + 'culero', + 'culo', + 'cum', + 'cunt', + 'd11d0', + 'd11do', + 'd1ck', + 'd1ld0', + 'd1ldo', + 'damn', + 'de1ch', + 'deich', + 'depp', + 'di1d0', + 'di1do', + 'dick', + 'dild0', + 'dildo', + 'dyke', + 'encu1e', + 'encule', + 'enema', + 'enf01re', + 'enf0ire', + 'enfo1re', + 'enfoire', + 'estup1d0', + 'estup1do', + 'estupid0', + 'estupido', + 'etr0n', + 'etron', + 'f0da', + 'f0der', + 'f0ttere', + 'f0tters1', + 'f0ttersi', + 'f0tze', + 'f0utre', + 'f1ca', + 'f1cker', + 'f1ga', + 'fag', + 'fica', + 'ficker', + 'figa', + 'foda', + 'foder', + 'fottere', + 'fotters1', + 'fottersi', + 'fotze', + 'foutre', + 'fr0c10', + 'fr0c1o', + 'fr0ci0', + 'fr0cio', + 'fr0sc10', + 'fr0sc1o', + 'fr0sci0', + 'fr0scio', + 'froc10', + 'froc1o', + 'froci0', + 'frocio', + 'frosc10', + 'frosc1o', + 'frosci0', + 'froscio', + 'fuck', + 'g00', + 'g0o', + 'g0u1ne', + 'g0uine', + 'gandu', + 'go0', + 'goo', + 'gou1ne', + 'gouine', + 'gr0gnasse', + 'grognasse', + 'haram1', + 'harami', + 'haramzade', + 'hund1n', + 'hundin', + 'id10t', + 'id1ot', + 'idi0t', + 'idiot', + 'imbec11e', + 'imbec1le', + 'imbeci1e', + 'imbecile', + 'j1zz', + 'jerk', + 'jizz', + 'k1ke', + 'kam1ne', + 'kamine', + 'kike', + 'leccacu10', + 'leccacu1o', + 'leccacul0', + 'leccaculo', + 'm1erda', + 'm1gn0tta', + 'm1gnotta', + 'm1nch1a', + 'm1nchia', + 'm1st', + 'mam0n', + 'mamahuev0', + 'mamahuevo', + 'mamon', + 'masturbat10n', + 'masturbat1on', + 'masturbate', + 'masturbati0n', + 'masturbation', + 'merd0s0', + 'merd0so', + 'merda', + 'merde', + 'merdos0', + 'merdoso', + 'mierda', + 'mign0tta', + 'mignotta', + 'minch1a', + 'minchia', + 'mist', + 'musch1', + 'muschi', + 'n1gger', + 'neger', + 'negr0', + 'negre', + 'negro', + 'nerch1a', + 'nerchia', + 'nigger', + 'orgasm', + 'p00p', + 'p011a', + 'p01la', + 'p0l1a', + 'p0lla', + 'p0mp1n0', + 'p0mp1no', + 'p0mpin0', + 'p0mpino', + 'p0op', + 'p0rca', + 'p0rn', + 'p0rra', + 'p0uff1asse', + 'p0uffiasse', + 'p1p1', + 'p1pi', + 'p1r1a', + 'p1rla', + 'p1sc10', + 'p1sc1o', + 'p1sci0', + 'p1scio', + 'p1sser', + 'pa11e', + 'pa1le', + 'pal1e', + 'palle', + 'pane1e1r0', + 'pane1e1ro', + 'pane1eir0', + 'pane1eiro', + 'panele1r0', + 'panele1ro', + 'paneleir0', + 'paneleiro', + 'patakha', + 'pec0r1na', + 'pec0rina', + 'pecor1na', + 'pecorina', + 'pen1s', + 'pendej0', + 'pendejo', + 'penis', + 'pip1', + 'pipi', + 'pir1a', + 'pirla', + 'pisc10', + 'pisc1o', + 'pisci0', + 'piscio', + 'pisser', + 'po0p', + 'po11a', + 'po1la', + 'pol1a', + 'polla', + 'pomp1n0', + 'pomp1no', + 'pompin0', + 'pompino', + 'poop', + 'porca', + 'porn', + 'porra', + 'pouff1asse', + 'pouffiasse', + 'pr1ck', + 'prick', + 'pussy', + 'put1za', + 'puta', + 'puta1n', + 'putain', + 'pute', + 'putiza', + 'puttana', + 'queca', + 'r0mp1ba11e', + 'r0mp1ba1le', + 'r0mp1bal1e', + 'r0mp1balle', + 'r0mpiba11e', + 'r0mpiba1le', + 'r0mpibal1e', + 'r0mpiballe', + 'rand1', + 'randi', + 'rape', + 'recch10ne', + 'recch1one', + 'recchi0ne', + 'recchione', + 'retard', + 'romp1ba11e', + 'romp1ba1le', + 'romp1bal1e', + 'romp1balle', + 'rompiba11e', + 'rompiba1le', + 'rompibal1e', + 'rompiballe', + 'ruff1an0', + 'ruff1ano', + 'ruffian0', + 'ruffiano', + 's1ut', + 'sa10pe', + 'sa1aud', + 'sa1ope', + 'sacanagem', + 'sal0pe', + 'salaud', + 'salope', + 'saugnapf', + 'sb0rr0ne', + 'sb0rra', + 'sb0rrone', + 'sbattere', + 'sbatters1', + 'sbattersi', + 'sborr0ne', + 'sborra', + 'sborrone', + 'sc0pare', + 'sc0pata', + 'sch1ampe', + 'sche1se', + 'sche1sse', + 'scheise', + 'scheisse', + 'schlampe', + 'schwachs1nn1g', + 'schwachs1nnig', + 'schwachsinn1g', + 'schwachsinnig', + 'schwanz', + 'scopare', + 'scopata', + 'sexy', + 'sh1t', + 'shit', + 'slut', + 'sp0mp1nare', + 'sp0mpinare', + 'spomp1nare', + 'spompinare', + 'str0nz0', + 'str0nza', + 'str0nzo', + 'stronz0', + 'stronza', + 'stronzo', + 'stup1d', + 'stupid', + 'succh1am1', + 'succh1ami', + 'succhiam1', + 'succhiami', + 'sucker', + 't0pa', + 'tapette', + 'test1c1e', + 'test1cle', + 'testic1e', + 'testicle', + 'tette', + 'topa', + 'tr01a', + 'tr0ia', + 'tr0mbare', + 'tr1ng1er', + 'tr1ngler', + 'tring1er', + 'tringler', + 'tro1a', + 'troia', + 'trombare', + 'turd', + 'twat', + 'vaffancu10', + 'vaffancu1o', + 'vaffancul0', + 'vaffanculo', + 'vag1na', + 'vagina', + 'verdammt', + 'verga', + 'w1chsen', + 'wank', + 'wichsen', + 'x0ch0ta', + 'x0chota', + 'xana', + 'xoch0ta', + 'xochota', + 'z0cc01a', + 'z0cc0la', + 'z0cco1a', + 'z0ccola', + 'z1z1', + 'z1zi', + 'ziz1', + 'zizi', + 'zocc01a', + 'zocc0la', + 'zocco1a', + 'zoccola', +])