@kingdomchain/wallet-client 0.2.0 → 0.4.3
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.
- package/README.md +130 -130
- package/dist/index.d.ts +207 -16
- package/dist/index.js +751 -84
- package/dist/index.js.map +1 -1
- package/package.json +77 -73
package/dist/index.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { toHex, fromHex, toBase64, fromBase64 } from '@cosmjs/encoding';
|
|
2
2
|
import { sha256 } from '@noble/hashes/sha256';
|
|
3
3
|
import * as ed from '@noble/ed25519';
|
|
4
|
-
import { Registry, DirectSecp256k1Wallet } from '@cosmjs/proto-signing';
|
|
4
|
+
import { Registry, DirectSecp256k1Wallet, DirectSecp256k1HdWallet } from '@cosmjs/proto-signing';
|
|
5
5
|
import { defaultRegistryTypes, SigningStargateClient } from '@cosmjs/stargate';
|
|
6
6
|
import { BinaryWriter, BinaryReader } from '@bufbuild/protobuf/wire';
|
|
7
7
|
import SignClient from '@walletconnect/sign-client';
|
|
8
|
-
import {
|
|
8
|
+
import { Bip39, EnglishMnemonic, Slip10, Slip10Curve, stringToPath } from '@cosmjs/crypto';
|
|
9
|
+
import { validateMnemonic, entropyToMnemonic, mnemonicToEntropy } from '@scure/bip39';
|
|
10
|
+
import { wordlist } from '@scure/bip39/wordlists/english';
|
|
11
|
+
import { ZxcvbnFactory } from '@zxcvbn-ts/core';
|
|
12
|
+
import * as zxcvbnCommon from '@zxcvbn-ts/language-common';
|
|
13
|
+
import * as zxcvbnEn from '@zxcvbn-ts/language-en';
|
|
9
14
|
|
|
10
15
|
// src/attestation.ts
|
|
11
16
|
var ATTESTATION_TYPE_CITIZENSHIP_APPLICATION = "citizenship_application";
|
|
@@ -1871,6 +1876,19 @@ async function restoreWalletConnectSession(client, chainId) {
|
|
|
1871
1876
|
var EMBEDDED_WALLET_VAULT_VERSION = 1;
|
|
1872
1877
|
var EMBEDDED_WALLET_KDF_PRF = "webauthn-prf";
|
|
1873
1878
|
var EMBEDDED_WALLET_KDF_PBKDF2 = "pbkdf2-passkey";
|
|
1879
|
+
var EMBEDDED_WALLET_KDF_PIN = "pbkdf2-pin";
|
|
1880
|
+
var EMBEDDED_WALLET_KEY_HD_DERIVED = "hd-derived";
|
|
1881
|
+
var EMBEDDED_WALLET_KEY_DIRECT_ENTROPY = "direct-entropy";
|
|
1882
|
+
var EMBEDDED_WALLET_RECOVERY_PHRASE_GENERAL_WARNING = {
|
|
1883
|
+
id: "general",
|
|
1884
|
+
title: "Protect your recovery phrase",
|
|
1885
|
+
body: "Anyone with these words can access your funds. Never share them, never enter them on any other website, and Kingdom OS will never ask you for them."
|
|
1886
|
+
};
|
|
1887
|
+
var EMBEDDED_WALLET_RECOVERY_PHRASE_DIRECT_ENTROPY_WARNING = {
|
|
1888
|
+
id: "direct-entropy-portability",
|
|
1889
|
+
title: "Kingdom OS recovery phrase only",
|
|
1890
|
+
body: "This phrase restores this wallet in Kingdom OS only. It will not import into Keplr, Exodus, or other standard Cosmos wallets."
|
|
1891
|
+
};
|
|
1874
1892
|
var EmbeddedWalletBackupRequiredError = class extends Error {
|
|
1875
1893
|
constructor() {
|
|
1876
1894
|
super(
|
|
@@ -1885,20 +1903,234 @@ var EmbeddedWalletVaultError = class extends Error {
|
|
|
1885
1903
|
this.name = "EmbeddedWalletVaultError";
|
|
1886
1904
|
}
|
|
1887
1905
|
};
|
|
1888
|
-
var
|
|
1906
|
+
var EmbeddedWalletDecryptError = class extends EmbeddedWalletVaultError {
|
|
1907
|
+
code = "decrypt_failed";
|
|
1908
|
+
constructor(cause) {
|
|
1909
|
+
super("Failed to decrypt wallet vault (wrong key or corrupted data)", cause);
|
|
1910
|
+
this.name = "EmbeddedWalletDecryptError";
|
|
1911
|
+
}
|
|
1912
|
+
};
|
|
1913
|
+
var EmbeddedWalletLockoutError = class extends Error {
|
|
1914
|
+
retryAfterMs;
|
|
1915
|
+
constructor(retryAfterMs) {
|
|
1916
|
+
super(`Passcode unlock temporarily locked; retry in ${Math.ceil(retryAfterMs / 1e3)} seconds`);
|
|
1917
|
+
this.name = "EmbeddedWalletLockoutError";
|
|
1918
|
+
this.retryAfterMs = retryAfterMs;
|
|
1919
|
+
}
|
|
1920
|
+
};
|
|
1921
|
+
var EmbeddedWalletWeakPasscodeError = class extends Error {
|
|
1922
|
+
reason;
|
|
1923
|
+
constructor(reason) {
|
|
1924
|
+
const messages = {
|
|
1925
|
+
denylist: "Passcode is too common; choose something less predictable",
|
|
1926
|
+
too_weak: "Passcode is too weak; use a longer or more varied passcode",
|
|
1927
|
+
numeric_short: "Numeric-only passcodes must be at least 12 digits"
|
|
1928
|
+
};
|
|
1929
|
+
super(messages[reason]);
|
|
1930
|
+
this.name = "EmbeddedWalletWeakPasscodeError";
|
|
1931
|
+
this.reason = reason;
|
|
1932
|
+
}
|
|
1933
|
+
};
|
|
1934
|
+
var DEFAULT_HD_PATH = "m/44'/118'/0'/0/0";
|
|
1935
|
+
async function embeddedPlaintextToSigner(plaintext, prefix = BECH32_PREFIX) {
|
|
1936
|
+
if (plaintext.privateKey.length !== 32) {
|
|
1937
|
+
throw new EmbeddedWalletVaultError(
|
|
1938
|
+
`Invalid secp256k1 private key length: ${plaintext.privateKey.length}`
|
|
1939
|
+
);
|
|
1940
|
+
}
|
|
1941
|
+
return DirectSecp256k1Wallet.fromKey(plaintext.privateKey, prefix);
|
|
1942
|
+
}
|
|
1943
|
+
function defaultEmbeddedHdPath() {
|
|
1944
|
+
return DEFAULT_HD_PATH;
|
|
1945
|
+
}
|
|
1946
|
+
|
|
1947
|
+
// src/embeddedWallet/mnemonic.ts
|
|
1948
|
+
var MNEMONIC_WORD_COUNT = 24;
|
|
1949
|
+
function normalizeRecoveryMnemonic(mnemonic) {
|
|
1950
|
+
return mnemonic.trim().toLowerCase().replace(/\s+/g, " ");
|
|
1951
|
+
}
|
|
1952
|
+
function assertValidRecoveryMnemonic(mnemonic) {
|
|
1953
|
+
const normalized = normalizeRecoveryMnemonic(mnemonic);
|
|
1954
|
+
if (!validateMnemonic(normalized, wordlist)) {
|
|
1955
|
+
throw new EmbeddedWalletVaultError("Recovery phrase is not a valid BIP-39 mnemonic");
|
|
1956
|
+
}
|
|
1957
|
+
const words = normalized.split(" ");
|
|
1958
|
+
if (words.length !== MNEMONIC_WORD_COUNT) {
|
|
1959
|
+
throw new EmbeddedWalletVaultError(
|
|
1960
|
+
`Recovery phrase must be ${MNEMONIC_WORD_COUNT} words, got ${words.length}`
|
|
1961
|
+
);
|
|
1962
|
+
}
|
|
1963
|
+
}
|
|
1964
|
+
function resolvePlaintextKeyType(plaintext) {
|
|
1965
|
+
return plaintext.keyType ?? EMBEDDED_WALLET_KEY_DIRECT_ENTROPY;
|
|
1966
|
+
}
|
|
1967
|
+
function encodeDirectEntropyMnemonic(privateKey) {
|
|
1968
|
+
if (privateKey.length !== 32) {
|
|
1969
|
+
throw new EmbeddedWalletVaultError(
|
|
1970
|
+
`Direct-entropy mnemonic requires a 32-byte key, got ${privateKey.length}`
|
|
1971
|
+
);
|
|
1972
|
+
}
|
|
1973
|
+
return entropyToMnemonic(privateKey, wordlist);
|
|
1974
|
+
}
|
|
1975
|
+
function decodeDirectEntropyMnemonic(mnemonic) {
|
|
1976
|
+
assertValidRecoveryMnemonic(mnemonic);
|
|
1977
|
+
const entropy = mnemonicToEntropy(normalizeRecoveryMnemonic(mnemonic), wordlist);
|
|
1978
|
+
if (entropy.length !== 32) {
|
|
1979
|
+
throw new EmbeddedWalletVaultError(
|
|
1980
|
+
`Direct-entropy mnemonic must decode to 32 bytes, got ${entropy.length}`
|
|
1981
|
+
);
|
|
1982
|
+
}
|
|
1983
|
+
return entropy;
|
|
1984
|
+
}
|
|
1985
|
+
async function derivePrivateKeyFromHdMnemonic(mnemonic, hdPath = defaultEmbeddedHdPath()) {
|
|
1986
|
+
assertValidRecoveryMnemonic(mnemonic);
|
|
1987
|
+
const seed = await Bip39.mnemonicToSeed(new EnglishMnemonic(normalizeRecoveryMnemonic(mnemonic)));
|
|
1988
|
+
const { privkey } = Slip10.derivePath(Slip10Curve.Secp256k1, seed, stringToPath(hdPath));
|
|
1989
|
+
return privkey;
|
|
1990
|
+
}
|
|
1991
|
+
async function addressFromPrivateKey(privateKey, prefix = BECH32_PREFIX) {
|
|
1992
|
+
const wallet = await DirectSecp256k1Wallet.fromKey(privateKey, prefix);
|
|
1993
|
+
const [account] = await wallet.getAccounts();
|
|
1994
|
+
return account.address;
|
|
1995
|
+
}
|
|
1996
|
+
async function addressFromHdMnemonic(mnemonic, hdPath = defaultEmbeddedHdPath(), prefix = BECH32_PREFIX) {
|
|
1997
|
+
const wallet = await DirectSecp256k1HdWallet.fromMnemonic(normalizeRecoveryMnemonic(mnemonic), {
|
|
1998
|
+
prefix,
|
|
1999
|
+
hdPaths: [stringToPath(hdPath)]
|
|
2000
|
+
});
|
|
2001
|
+
const [account] = await wallet.getAccounts();
|
|
2002
|
+
return account.address;
|
|
2003
|
+
}
|
|
2004
|
+
async function createHdDerivedPlaintext(createdAt, hdPath = defaultEmbeddedHdPath()) {
|
|
2005
|
+
const hdWallet = await DirectSecp256k1HdWallet.generate(MNEMONIC_WORD_COUNT, {
|
|
2006
|
+
prefix: BECH32_PREFIX,
|
|
2007
|
+
hdPaths: [stringToPath(hdPath)]
|
|
2008
|
+
});
|
|
2009
|
+
const mnemonic = hdWallet.mnemonic;
|
|
2010
|
+
const privateKey = await derivePrivateKeyFromHdMnemonic(mnemonic, hdPath);
|
|
2011
|
+
return {
|
|
2012
|
+
privateKey,
|
|
2013
|
+
hdPath,
|
|
2014
|
+
createdAt,
|
|
2015
|
+
keyType: EMBEDDED_WALLET_KEY_HD_DERIVED,
|
|
2016
|
+
mnemonic
|
|
2017
|
+
};
|
|
2018
|
+
}
|
|
2019
|
+
async function plaintextFromRecoveryMnemonic(mnemonic, keyType, createdAt, hdPath = defaultEmbeddedHdPath()) {
|
|
2020
|
+
assertValidRecoveryMnemonic(mnemonic);
|
|
2021
|
+
const normalized = normalizeRecoveryMnemonic(mnemonic);
|
|
2022
|
+
if (keyType === EMBEDDED_WALLET_KEY_HD_DERIVED) {
|
|
2023
|
+
const privateKey2 = await derivePrivateKeyFromHdMnemonic(normalized, hdPath);
|
|
2024
|
+
return {
|
|
2025
|
+
privateKey: privateKey2,
|
|
2026
|
+
hdPath,
|
|
2027
|
+
createdAt,
|
|
2028
|
+
keyType: EMBEDDED_WALLET_KEY_HD_DERIVED,
|
|
2029
|
+
mnemonic: normalized
|
|
2030
|
+
};
|
|
2031
|
+
}
|
|
2032
|
+
const privateKey = decodeDirectEntropyMnemonic(normalized);
|
|
2033
|
+
return {
|
|
2034
|
+
privateKey,
|
|
2035
|
+
hdPath,
|
|
2036
|
+
createdAt,
|
|
2037
|
+
keyType: EMBEDDED_WALLET_KEY_DIRECT_ENTROPY
|
|
2038
|
+
};
|
|
2039
|
+
}
|
|
2040
|
+
async function detectRecoveryMnemonicKeyType(mnemonic, expectedAddress, hdPath = defaultEmbeddedHdPath(), prefix = BECH32_PREFIX) {
|
|
2041
|
+
assertValidRecoveryMnemonic(mnemonic);
|
|
2042
|
+
const normalized = normalizeRecoveryMnemonic(mnemonic);
|
|
2043
|
+
const hdAddress = await addressFromHdMnemonic(normalized, hdPath, prefix);
|
|
2044
|
+
if (hdAddress === expectedAddress) {
|
|
2045
|
+
return EMBEDDED_WALLET_KEY_HD_DERIVED;
|
|
2046
|
+
}
|
|
2047
|
+
const directKey = decodeDirectEntropyMnemonic(normalized);
|
|
2048
|
+
const directAddress = await addressFromPrivateKey(directKey, prefix);
|
|
2049
|
+
if (directAddress === expectedAddress) {
|
|
2050
|
+
return EMBEDDED_WALLET_KEY_DIRECT_ENTROPY;
|
|
2051
|
+
}
|
|
2052
|
+
throw new EmbeddedWalletVaultError(
|
|
2053
|
+
"Recovery phrase does not match the expected wallet address for either HD or direct-entropy decoding"
|
|
2054
|
+
);
|
|
2055
|
+
}
|
|
2056
|
+
async function recoveryMnemonicAddress(mnemonic, keyType, hdPath = defaultEmbeddedHdPath(), prefix = BECH32_PREFIX) {
|
|
2057
|
+
if (keyType === EMBEDDED_WALLET_KEY_HD_DERIVED) {
|
|
2058
|
+
return addressFromHdMnemonic(mnemonic, hdPath, prefix);
|
|
2059
|
+
}
|
|
2060
|
+
const privateKey = decodeDirectEntropyMnemonic(mnemonic);
|
|
2061
|
+
return addressFromPrivateKey(privateKey, prefix);
|
|
2062
|
+
}
|
|
2063
|
+
function recoveryMnemonicFromPlaintext(plaintext) {
|
|
2064
|
+
const keyType = resolvePlaintextKeyType(plaintext);
|
|
2065
|
+
if (keyType === EMBEDDED_WALLET_KEY_HD_DERIVED) {
|
|
2066
|
+
if (!plaintext.mnemonic) {
|
|
2067
|
+
throw new EmbeddedWalletVaultError(
|
|
2068
|
+
"HD-derived wallet is missing stored mnemonic; cannot reveal recovery phrase"
|
|
2069
|
+
);
|
|
2070
|
+
}
|
|
2071
|
+
return normalizeRecoveryMnemonic(plaintext.mnemonic);
|
|
2072
|
+
}
|
|
2073
|
+
return encodeDirectEntropyMnemonic(plaintext.privateKey);
|
|
2074
|
+
}
|
|
2075
|
+
|
|
2076
|
+
// src/embeddedWallet/pin.ts
|
|
2077
|
+
var EMBEDDED_WALLET_PASSCODE_MIN_LENGTH = 8;
|
|
2078
|
+
var EMBEDDED_WALLET_PASSCODE_MAX_LENGTH = 128;
|
|
2079
|
+
var EMBEDDED_WALLET_PIN_PBKDF2_ITERATIONS = 6e5;
|
|
2080
|
+
var EMBEDDED_WALLET_PASSKEY_PBKDF2_ITERATIONS = 6e5;
|
|
2081
|
+
function normalizePasscode(passcode) {
|
|
2082
|
+
return passcode.normalize("NFKC");
|
|
2083
|
+
}
|
|
2084
|
+
function assertValidPasscode(passcode) {
|
|
2085
|
+
const normalized = normalizePasscode(passcode);
|
|
2086
|
+
if (normalized.length < EMBEDDED_WALLET_PASSCODE_MIN_LENGTH) {
|
|
2087
|
+
throw new EmbeddedWalletVaultError(
|
|
2088
|
+
`Passcode must be at least ${EMBEDDED_WALLET_PASSCODE_MIN_LENGTH} characters`
|
|
2089
|
+
);
|
|
2090
|
+
}
|
|
2091
|
+
if (normalized.length > EMBEDDED_WALLET_PASSCODE_MAX_LENGTH) {
|
|
2092
|
+
throw new EmbeddedWalletVaultError(
|
|
2093
|
+
`Passcode must be at most ${EMBEDDED_WALLET_PASSCODE_MAX_LENGTH} characters`
|
|
2094
|
+
);
|
|
2095
|
+
}
|
|
2096
|
+
}
|
|
2097
|
+
async function deriveKekFromPasscode(passcode, salt, iterations = EMBEDDED_WALLET_PIN_PBKDF2_ITERATIONS) {
|
|
2098
|
+
assertValidPasscode(passcode);
|
|
2099
|
+
const material = new TextEncoder().encode(normalizePasscode(passcode));
|
|
2100
|
+
return deriveKekFromPbkdf2(material, salt, iterations);
|
|
2101
|
+
}
|
|
2102
|
+
|
|
2103
|
+
// src/embeddedWallet/crypto.ts
|
|
1889
2104
|
var AES_GCM_IV_BYTES = 12;
|
|
2105
|
+
function pbkdf2IterationsForKdf(kdf, override) {
|
|
2106
|
+
if (kdf === EMBEDDED_WALLET_KDF_PRF) {
|
|
2107
|
+
return 0;
|
|
2108
|
+
}
|
|
2109
|
+
if (override != null) {
|
|
2110
|
+
return override;
|
|
2111
|
+
}
|
|
2112
|
+
if (kdf === EMBEDDED_WALLET_KDF_PIN) {
|
|
2113
|
+
throw new EmbeddedWalletVaultError("PIN vault encryption requires explicit kdfIterations");
|
|
2114
|
+
}
|
|
2115
|
+
return EMBEDDED_WALLET_PASSKEY_PBKDF2_ITERATIONS;
|
|
2116
|
+
}
|
|
1890
2117
|
function assertKekLength(kek) {
|
|
1891
2118
|
if (kek.length !== 32) {
|
|
1892
2119
|
throw new EmbeddedWalletVaultError(`KEK must be 32 bytes, got ${kek.length}`);
|
|
1893
2120
|
}
|
|
1894
2121
|
}
|
|
1895
2122
|
function serializePlaintext(payload) {
|
|
1896
|
-
const
|
|
2123
|
+
const keyType = resolvePlaintextKeyType(payload);
|
|
2124
|
+
const json = {
|
|
1897
2125
|
privateKey: toBase64(payload.privateKey),
|
|
1898
2126
|
hdPath: payload.hdPath,
|
|
1899
|
-
createdAt: payload.createdAt
|
|
1900
|
-
|
|
1901
|
-
|
|
2127
|
+
createdAt: payload.createdAt,
|
|
2128
|
+
keyType
|
|
2129
|
+
};
|
|
2130
|
+
if (payload.mnemonic) {
|
|
2131
|
+
json.mnemonic = payload.mnemonic;
|
|
2132
|
+
}
|
|
2133
|
+
return new TextEncoder().encode(JSON.stringify(json));
|
|
1902
2134
|
}
|
|
1903
2135
|
function deserializePlaintext(bytes) {
|
|
1904
2136
|
let parsed;
|
|
@@ -1910,11 +2142,21 @@ function deserializePlaintext(bytes) {
|
|
|
1910
2142
|
if (typeof parsed !== "object" || parsed == null || typeof parsed.hdPath !== "string" || typeof parsed.createdAt !== "string" || typeof parsed.privateKey !== "string") {
|
|
1911
2143
|
throw new EmbeddedWalletVaultError("Decrypted wallet payload has invalid shape");
|
|
1912
2144
|
}
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
2145
|
+
const record = parsed;
|
|
2146
|
+
const plaintext = {
|
|
2147
|
+
privateKey: fromBase64(record.privateKey),
|
|
2148
|
+
hdPath: record.hdPath,
|
|
2149
|
+
createdAt: record.createdAt
|
|
1917
2150
|
};
|
|
2151
|
+
if (record.keyType) {
|
|
2152
|
+
plaintext.keyType = record.keyType;
|
|
2153
|
+
} else {
|
|
2154
|
+
plaintext.keyType = EMBEDDED_WALLET_KEY_DIRECT_ENTROPY;
|
|
2155
|
+
}
|
|
2156
|
+
if (typeof record.mnemonic === "string" && record.mnemonic.length > 0) {
|
|
2157
|
+
plaintext.mnemonic = record.mnemonic;
|
|
2158
|
+
}
|
|
2159
|
+
return plaintext;
|
|
1918
2160
|
}
|
|
1919
2161
|
async function deriveKekFromPrf(prfOutput) {
|
|
1920
2162
|
if (prfOutput.length < 32) {
|
|
@@ -1922,7 +2164,7 @@ async function deriveKekFromPrf(prfOutput) {
|
|
|
1922
2164
|
}
|
|
1923
2165
|
return prfOutput.slice(0, 32);
|
|
1924
2166
|
}
|
|
1925
|
-
async function deriveKekFromPbkdf2(passkeyMaterial, salt, iterations =
|
|
2167
|
+
async function deriveKekFromPbkdf2(passkeyMaterial, salt, iterations = EMBEDDED_WALLET_PASSKEY_PBKDF2_ITERATIONS) {
|
|
1926
2168
|
if (salt.length < 16) {
|
|
1927
2169
|
throw new EmbeddedWalletVaultError("PBKDF2 salt must be at least 16 bytes");
|
|
1928
2170
|
}
|
|
@@ -1965,9 +2207,10 @@ async function encryptWalletPayload(payload, options) {
|
|
|
1965
2207
|
aesKey,
|
|
1966
2208
|
new Uint8Array(plaintext)
|
|
1967
2209
|
);
|
|
1968
|
-
if (options.kdf === EMBEDDED_WALLET_KDF_PBKDF2 && !options.kdfSalt) {
|
|
2210
|
+
if ((options.kdf === EMBEDDED_WALLET_KDF_PBKDF2 || options.kdf === EMBEDDED_WALLET_KDF_PIN) && !options.kdfSalt) {
|
|
1969
2211
|
throw new EmbeddedWalletVaultError("PBKDF2 encryption requires kdfSalt");
|
|
1970
2212
|
}
|
|
2213
|
+
const iterations = pbkdf2IterationsForKdf(options.kdf, options.kdfIterations);
|
|
1971
2214
|
return {
|
|
1972
2215
|
version: EMBEDDED_WALLET_VAULT_VERSION,
|
|
1973
2216
|
kdf: options.kdf,
|
|
@@ -1976,7 +2219,7 @@ async function encryptWalletPayload(payload, options) {
|
|
|
1976
2219
|
iv: toBase64(iv),
|
|
1977
2220
|
ciphertext: toBase64(new Uint8Array(ciphertext)),
|
|
1978
2221
|
kdfSalt: options.kdfSalt ? toBase64(options.kdfSalt) : "",
|
|
1979
|
-
kdfIterations:
|
|
2222
|
+
kdfIterations: iterations,
|
|
1980
2223
|
prfSalt: options.prfSalt ? toBase64(options.prfSalt) : "",
|
|
1981
2224
|
backupAcknowledged: options.backupAcknowledged ?? false,
|
|
1982
2225
|
backupAcknowledgedAt: options.backupAcknowledged ? (/* @__PURE__ */ new Date()).toISOString() : void 0,
|
|
@@ -1998,7 +2241,7 @@ async function decryptWalletPayload(vault, kek) {
|
|
|
1998
2241
|
new Uint8Array(ciphertext)
|
|
1999
2242
|
);
|
|
2000
2243
|
} catch (err) {
|
|
2001
|
-
throw new
|
|
2244
|
+
throw new EmbeddedWalletDecryptError(err);
|
|
2002
2245
|
}
|
|
2003
2246
|
return deserializePlaintext(new Uint8Array(plaintextBytes));
|
|
2004
2247
|
}
|
|
@@ -2210,69 +2453,309 @@ function encodeCredentialId(id) {
|
|
|
2210
2453
|
function decodeCredentialId(encoded) {
|
|
2211
2454
|
return fromBase64(encoded);
|
|
2212
2455
|
}
|
|
2213
|
-
var DEFAULT_HD_PATH = "m/44'/118'/0'/0/0";
|
|
2214
|
-
async function embeddedPlaintextToSigner(plaintext, prefix = BECH32_PREFIX) {
|
|
2215
|
-
if (plaintext.privateKey.length !== 32) {
|
|
2216
|
-
throw new EmbeddedWalletVaultError(
|
|
2217
|
-
`Invalid secp256k1 private key length: ${plaintext.privateKey.length}`
|
|
2218
|
-
);
|
|
2219
|
-
}
|
|
2220
|
-
return DirectSecp256k1Wallet.fromKey(plaintext.privateKey, prefix);
|
|
2221
|
-
}
|
|
2222
|
-
function defaultEmbeddedHdPath() {
|
|
2223
|
-
return DEFAULT_HD_PATH;
|
|
2224
|
-
}
|
|
2225
2456
|
|
|
2226
2457
|
// src/embeddedWallet/storage.ts
|
|
2227
2458
|
var DB_NAME = "kingdom-os-wallet";
|
|
2228
|
-
var DB_VERSION =
|
|
2229
|
-
var
|
|
2230
|
-
var
|
|
2459
|
+
var DB_VERSION = 2;
|
|
2460
|
+
var VAULT_STORE_NAME = "vault";
|
|
2461
|
+
var LOCKOUT_STORE_NAME = "passcode-lockout";
|
|
2462
|
+
var VAULT_LEGACY_KEY = "primary";
|
|
2463
|
+
function resolveVaultStorageKey(scopeId) {
|
|
2464
|
+
const trimmed = scopeId?.trim();
|
|
2465
|
+
return trimmed ? trimmed : VAULT_LEGACY_KEY;
|
|
2466
|
+
}
|
|
2231
2467
|
function openDb() {
|
|
2232
2468
|
return new Promise((resolve, reject) => {
|
|
2233
2469
|
const request = indexedDB.open(DB_NAME, DB_VERSION);
|
|
2234
2470
|
request.onerror = () => reject(request.error ?? new Error("IndexedDB open failed"));
|
|
2235
2471
|
request.onupgradeneeded = () => {
|
|
2236
2472
|
const db = request.result;
|
|
2237
|
-
if (!db.objectStoreNames.contains(
|
|
2238
|
-
db.createObjectStore(
|
|
2473
|
+
if (!db.objectStoreNames.contains(VAULT_STORE_NAME)) {
|
|
2474
|
+
db.createObjectStore(VAULT_STORE_NAME);
|
|
2475
|
+
}
|
|
2476
|
+
if (!db.objectStoreNames.contains(LOCKOUT_STORE_NAME)) {
|
|
2477
|
+
db.createObjectStore(LOCKOUT_STORE_NAME);
|
|
2239
2478
|
}
|
|
2240
2479
|
};
|
|
2241
2480
|
request.onsuccess = () => resolve(request.result);
|
|
2242
2481
|
});
|
|
2243
2482
|
}
|
|
2244
|
-
async function saveVaultToIndexedDb(vault) {
|
|
2483
|
+
async function saveVaultToIndexedDb(vault, options = {}) {
|
|
2484
|
+
const key = resolveVaultStorageKey(options.scopeId);
|
|
2245
2485
|
const db = await openDb();
|
|
2246
2486
|
await new Promise((resolve, reject) => {
|
|
2247
|
-
const tx = db.transaction(
|
|
2248
|
-
tx.objectStore(
|
|
2487
|
+
const tx = db.transaction(VAULT_STORE_NAME, "readwrite");
|
|
2488
|
+
tx.objectStore(VAULT_STORE_NAME).put(vault, key);
|
|
2249
2489
|
tx.oncomplete = () => resolve();
|
|
2250
2490
|
tx.onerror = () => reject(tx.error ?? new Error("IndexedDB write failed"));
|
|
2251
2491
|
});
|
|
2252
2492
|
db.close();
|
|
2253
2493
|
}
|
|
2254
|
-
async function loadVaultFromIndexedDb() {
|
|
2494
|
+
async function loadVaultFromIndexedDb(options = {}) {
|
|
2495
|
+
const key = resolveVaultStorageKey(options.scopeId);
|
|
2255
2496
|
const db = await openDb();
|
|
2256
2497
|
const vault = await new Promise((resolve, reject) => {
|
|
2257
|
-
const tx = db.transaction(
|
|
2258
|
-
const request = tx.objectStore(
|
|
2498
|
+
const tx = db.transaction(VAULT_STORE_NAME, "readonly");
|
|
2499
|
+
const request = tx.objectStore(VAULT_STORE_NAME).get(key);
|
|
2259
2500
|
request.onsuccess = () => resolve(request.result ?? null);
|
|
2260
2501
|
request.onerror = () => reject(request.error ?? new Error("IndexedDB read failed"));
|
|
2261
2502
|
});
|
|
2262
2503
|
db.close();
|
|
2263
2504
|
return vault;
|
|
2264
2505
|
}
|
|
2265
|
-
async function clearVaultFromIndexedDb() {
|
|
2506
|
+
async function clearVaultFromIndexedDb(options = {}) {
|
|
2507
|
+
const key = resolveVaultStorageKey(options.scopeId);
|
|
2508
|
+
const vault = await loadVaultFromIndexedDb(options);
|
|
2266
2509
|
const db = await openDb();
|
|
2267
2510
|
await new Promise((resolve, reject) => {
|
|
2268
|
-
const
|
|
2269
|
-
tx.
|
|
2511
|
+
const storeNames = vault ? [VAULT_STORE_NAME, LOCKOUT_STORE_NAME] : [VAULT_STORE_NAME];
|
|
2512
|
+
const tx = db.transaction(storeNames, "readwrite");
|
|
2513
|
+
tx.objectStore(VAULT_STORE_NAME).delete(key);
|
|
2514
|
+
if (vault) {
|
|
2515
|
+
tx.objectStore(LOCKOUT_STORE_NAME).delete(vault.publicAddress);
|
|
2516
|
+
}
|
|
2270
2517
|
tx.oncomplete = () => resolve();
|
|
2271
2518
|
tx.onerror = () => reject(tx.error ?? new Error("IndexedDB delete failed"));
|
|
2272
2519
|
});
|
|
2273
2520
|
db.close();
|
|
2274
2521
|
}
|
|
2522
|
+
async function loadPasscodeLockoutRecord(publicAddress) {
|
|
2523
|
+
const db = await openDb();
|
|
2524
|
+
const record = await new Promise((resolve, reject) => {
|
|
2525
|
+
const tx = db.transaction(LOCKOUT_STORE_NAME, "readonly");
|
|
2526
|
+
const request = tx.objectStore(LOCKOUT_STORE_NAME).get(publicAddress);
|
|
2527
|
+
request.onsuccess = () => resolve(request.result ?? null);
|
|
2528
|
+
request.onerror = () => reject(request.error ?? new Error("IndexedDB read failed"));
|
|
2529
|
+
});
|
|
2530
|
+
db.close();
|
|
2531
|
+
return record;
|
|
2532
|
+
}
|
|
2533
|
+
async function savePasscodeLockoutRecord(publicAddress, record) {
|
|
2534
|
+
const db = await openDb();
|
|
2535
|
+
await new Promise((resolve, reject) => {
|
|
2536
|
+
const tx = db.transaction(LOCKOUT_STORE_NAME, "readwrite");
|
|
2537
|
+
tx.objectStore(LOCKOUT_STORE_NAME).put(record, publicAddress);
|
|
2538
|
+
tx.oncomplete = () => resolve();
|
|
2539
|
+
tx.onerror = () => reject(tx.error ?? new Error("IndexedDB write failed"));
|
|
2540
|
+
});
|
|
2541
|
+
db.close();
|
|
2542
|
+
}
|
|
2543
|
+
async function clearPasscodeLockoutRecord(publicAddress) {
|
|
2544
|
+
const db = await openDb();
|
|
2545
|
+
await new Promise((resolve, reject) => {
|
|
2546
|
+
const tx = db.transaction(LOCKOUT_STORE_NAME, "readwrite");
|
|
2547
|
+
tx.objectStore(LOCKOUT_STORE_NAME).delete(publicAddress);
|
|
2548
|
+
tx.oncomplete = () => resolve();
|
|
2549
|
+
tx.onerror = () => reject(tx.error ?? new Error("IndexedDB delete failed"));
|
|
2550
|
+
});
|
|
2551
|
+
db.close();
|
|
2552
|
+
}
|
|
2553
|
+
|
|
2554
|
+
// src/embeddedWallet/lockout.ts
|
|
2555
|
+
var PASSCODE_LOCKOUT_FAILURE_THRESHOLD = 5;
|
|
2556
|
+
var PASSCODE_LOCKOUT_INITIAL_MS = 3e4;
|
|
2557
|
+
var PASSCODE_LOCKOUT_MAX_MS = 9e5;
|
|
2558
|
+
function computePasscodeLockoutDurationMs(tier) {
|
|
2559
|
+
const duration = PASSCODE_LOCKOUT_INITIAL_MS * 2 ** tier;
|
|
2560
|
+
return Math.min(duration, PASSCODE_LOCKOUT_MAX_MS);
|
|
2561
|
+
}
|
|
2562
|
+
function emptyRecord() {
|
|
2563
|
+
return {
|
|
2564
|
+
failedAttempts: 0,
|
|
2565
|
+
lockoutTier: 0,
|
|
2566
|
+
lockedUntil: null
|
|
2567
|
+
};
|
|
2568
|
+
}
|
|
2569
|
+
function computeRetryAfterMs(lockedUntil) {
|
|
2570
|
+
if (!lockedUntil) {
|
|
2571
|
+
return 0;
|
|
2572
|
+
}
|
|
2573
|
+
const until = Date.parse(lockedUntil);
|
|
2574
|
+
if (Number.isNaN(until)) {
|
|
2575
|
+
return 0;
|
|
2576
|
+
}
|
|
2577
|
+
return Math.max(0, until - Date.now());
|
|
2578
|
+
}
|
|
2579
|
+
async function assertPasscodeUnlockAllowed(publicAddress) {
|
|
2580
|
+
const record = await loadPasscodeLockoutRecord(publicAddress) ?? emptyRecord();
|
|
2581
|
+
const retryAfterMs = computeRetryAfterMs(record.lockedUntil);
|
|
2582
|
+
if (retryAfterMs > 0) {
|
|
2583
|
+
throw new EmbeddedWalletLockoutError(retryAfterMs);
|
|
2584
|
+
}
|
|
2585
|
+
}
|
|
2586
|
+
async function recordPasscodeUnlockFailure(publicAddress) {
|
|
2587
|
+
const existing = await loadPasscodeLockoutRecord(publicAddress) ?? emptyRecord();
|
|
2588
|
+
const retryAfterMs = computeRetryAfterMs(existing.lockedUntil);
|
|
2589
|
+
if (retryAfterMs > 0) {
|
|
2590
|
+
return;
|
|
2591
|
+
}
|
|
2592
|
+
const failedAttempts = existing.failedAttempts + 1;
|
|
2593
|
+
if (failedAttempts < PASSCODE_LOCKOUT_FAILURE_THRESHOLD) {
|
|
2594
|
+
await savePasscodeLockoutRecord(publicAddress, {
|
|
2595
|
+
...existing,
|
|
2596
|
+
failedAttempts
|
|
2597
|
+
});
|
|
2598
|
+
return;
|
|
2599
|
+
}
|
|
2600
|
+
const durationMs = computePasscodeLockoutDurationMs(existing.lockoutTier);
|
|
2601
|
+
const lockedUntil = new Date(Date.now() + durationMs).toISOString();
|
|
2602
|
+
await savePasscodeLockoutRecord(publicAddress, {
|
|
2603
|
+
failedAttempts: 0,
|
|
2604
|
+
lockoutTier: existing.lockoutTier + 1,
|
|
2605
|
+
lockedUntil
|
|
2606
|
+
});
|
|
2607
|
+
}
|
|
2608
|
+
async function recordPasscodeUnlockSuccess(publicAddress) {
|
|
2609
|
+
await clearPasscodeLockoutRecord(publicAddress);
|
|
2610
|
+
}
|
|
2611
|
+
async function getPasscodeLockoutState(publicAddress) {
|
|
2612
|
+
const record = await loadPasscodeLockoutRecord(publicAddress) ?? emptyRecord();
|
|
2613
|
+
return {
|
|
2614
|
+
...record,
|
|
2615
|
+
retryAfterMs: computeRetryAfterMs(record.lockedUntil)
|
|
2616
|
+
};
|
|
2617
|
+
}
|
|
2618
|
+
|
|
2619
|
+
// src/embeddedWallet/passcode-denylist.json
|
|
2620
|
+
var passcode_denylist_default = ["password", "123456", "12345678", "1234", "qwerty", "12345", "dragon", "pussy", "baseball", "football", "letmein", "monkey", "696969", "abc123", "mustang", "michael", "shadow", "master", "jennifer", "111111", "2000", "jordan", "superman", "harley", "1234567", "fuckme", "hunter", "fuckyou", "trustno1", "ranger", "buster", "thomas", "tigger", "robert", "soccer", "fuck", "batman", "test", "pass", "killer", "hockey", "george", "charlie", "andrew", "michelle", "love", "sunshine", "jessica", "asshole", "6969", "pepper", "daniel", "access", "123456789", "654321", "joshua", "maggie", "starwars", "silver", "william", "dallas", "yankees", "123123", "ashley", "666666", "hello", "amanda", "orange", "biteme", "freedom", "computer", "sexy", "thunder", "nicole", "ginger", "heather", "hammer", "summer", "corvette", "taylor", "fucker", "austin", "1111", "merlin", "matthew", "121212", "golfer", "cheese", "princess", "martin", "chelsea", "patrick", "richard", "diamond", "yellow", "bigdog", "secret", "asdfgh", "sparky", "cowboy", "camaro", "anthony", "matrix", "falcon", "iloveyou", "bailey", "guitar", "jackson", "purple", "scooter", "phoenix", "aaaaaa", "morgan", "tigers", "porsche", "mickey", "maverick", "cookie", "nascar", "peanut", "justin", "131313", "money", "horny", "samantha", "panties", "steelers", "joseph", "snoopy", "boomer", "whatever", "iceman", "smokey", "gateway", "dakota", "cowboys", "eagles", "chicken", "dick", "black", "zxcvbn", "please", "andrea", "ferrari", "knight", "hardcore", "melissa", "compaq", "coffee", "booboo", "bitch", "johnny", "bulldog", "xxxxxx", "welcome", "james", "player", "ncc1701", "wizard", "scooby", "charles", "junior", "internet", "bigdick", "mike", "brandy", "tennis", "blowjob", "banana", "monster", "spider", "lakers", "miller", "rabbit", "enter", "mercedes", "brandon", "steven", "fender", "john", "yamaha", "diablo", "chris", "boston", "tiger", "marine", "chicago", "rangers", "gandalf", "winter", "bigtits", "barney", "edward", "raiders", "porn", "badboy", "blowme", "spanky", "bigdaddy", "johnson", "chester", "london", "midnight", "blue", "fishing", "000000", "hannah", "slayer", "11111111", "rachel", "sexsex", "redsox", "thx1138", "asdf", "marlboro", "panther", "zxcvbnm", "arsenal", "oliver", "qazwsx", "mother", "victoria", "7777777", "jasper", "angel", "david", "winner", "crystal", "golden", "butthead", "viking", "jack", "iwantu", "shannon", "murphy", "angels", "prince", "cameron", "girls", "madison", "wilson", "carlos", "hooters", "willie", "startrek", "captain", "maddog", "jasmine", "butter", "booger", "angela", "golf", "lauren", "rocket", "tiffany", "theman", "dennis", "liverpoo", "flower", "forever", "green", "jackie", "muffin", "turtle", "sophie", "danielle", "redskins", "toyota", "jason", "sierra", "winston", "debbie", "giants", "packers", "newyork", "jeremy", "casper", "bubba", "112233", "sandra", "lovers", "mountain", "united", "cooper", "driver", "tucker", "helpme", "fucking", "pookie", "lucky", "maxwell", "8675309", "bear", "suckit", "gators", "5150", "222222", "shithead", "fuckoff", "jaguar", "monica", "fred", "happy", "hotdog", "tits", "gemini", "lover", "xxxxxxxx", "777777", "canada", "nathan", "victor", "florida", "88888888", "nicholas", "rosebud", "metallic", "doctor", "trouble", "success", "stupid", "tomcat", "warrior", "peaches", "apples", "fish", "qwertyui", "magic", "buddy", "dolphins", "rainbow", "gunner", "987654", "freddy", "alexis", "braves", "cock", "2112", "1212", "cocacola", "xavier", "dolphin", "testing", "bond007", "member", "calvin", "voodoo", "7777", "samson", "alex", "apollo", "fire", "tester", "walter", "beavis", "voyager", "peter", "porno", "bonnie", "rush2112", "beer", "apple", "scorpio", "jonathan", "skippy", "sydney", "scott", "red123", "power", "gordon", "travis", "beaver", "star", "jackass", "flyers", "boobs", "232323", "zzzzzz", "steve", "rebecca", "scorpion", "doggie", "legend", "ou812", "yankee", "blazer", "bill", "runner", "birdie", "bitches", "555555", "parker", "topgun", "asdfasdf", "heaven", "viper", "animal", "2222", "bigboy", "4444", "arthur", "baby", "private", "godzilla", "donald", "williams", "lifehack", "phantom", "dave", "rock", "august", "sammy", "cool", "brian", "platinum", "jake", "bronco", "paul", "mark", "frank", "heka6w2", "copper", "billy", "cumshot", "garfield", "willow", "cunt", "little", "carter", "slut", "albert", "69696969", "kitten", "super", "jordan23", "eagle1", "shelby", "america", "11111", "jessie", "house", "free", "123321", "chevy", "bullshit", "white", "broncos", "horney", "surfer", "nissan", "999999", "saturn", "airborne", "elephant", "marvin", "shit", "action", "adidas", "qwert", "kevin", "1313", "explorer", "walker", "police", "christin", "december", "benjamin", "wolf", "sweet", "therock", "king", "online", "dickhead", "brooklyn", "teresa", "cricket", "sharon", "dexter", "racing", "penis", "gregory", "0000", "teens", "redwings", "dreams", "michigan", "hentai", "magnum", "87654321", "nothing", "donkey", "trinity", "digital", "333333", "stella", "cartman", "guinness", "123abc", "speedy", "buffalo", "kitty", "pimpin", "eagle", "einstein", "kelly", "nelson", "nirvana", "vampire", "xxxx", "playboy", "louise", "pumpkin", "snowball", "test123", "girl", "sucker", "mexico", "beatles", "fantasy", "ford", "gibson", "celtic", "marcus", "cherry", "cassie", "888888", "natasha", "sniper", "chance", "genesis", "hotrod", "reddog", "alexande", "college", "jester", "passw0rd", "bigcock", "smith", "lasvegas", "carmen", "slipknot", "3333", "death", "kimberly", "1q2w3e", "eclipse", "1q2w3e4r", "stanley", "samuel", "drummer", "homer", "montana", "music", "aaaa", "spencer", "jimmy", "carolina", "colorado", "creative", "hello1", "rocky", "goober", "friday", "bollocks", "scotty", "abcdef", "bubbles", "hawaii", "fluffy", "mine", "stephen", "horses", "thumper", "5555", "pussies", "darkness", "asdfghjk", "pamela", "boobies", "buddha", "vanessa", "sandman", "naughty", "douglas", "honda", "matt", "azerty", "6666", "shorty", "money1", "beach", "loveme", "4321", "simple", "poohbear", "444444", "badass", "destiny", "sarah", "denise", "vikings", "lizard", "melanie", "assman", "sabrina", "nintendo", "water", "good", "howard", "time", "123qwe", "november", "xxxxx", "october", "leather", "bastard", "young", "101010", "extreme", "hard", "password1", "vincent", "pussy1", "lacrosse", "hotmail", "spooky", "amateur", "alaska", "badger", "paradise", "maryjane", "poop", "crazy", "mozart", "video", "russell", "vagina", "spitfire", "anderson", "norman", "eric", "cherokee", "cougar", "barbara", "long", "420420", "family", "horse", "enigma", "allison", "raider", "brazil", "blonde", "jones", "55555", "dude", "drowssap", "jeff", "school", "marshall", "lovely", "1qaz2wsx", "jeffrey", "caroline", "franklin", "booty", "molly", "snickers", "leslie", "nipples", "courtney", "diesel", "rocks", "eminem", "westside", "suzuki", "daddy", "passion", "hummer", "ladies", "zachary", "frankie", "elvis", "reggie", "alpha", "suckme", "simpson", "patricia", "147147", "pirate", "tommy", "semperfi", "jupiter", "redrum", "freeuser", "wanker", "stinky", "ducati", "paris", "natalie", "babygirl", "bishop", "windows", "spirit", "pantera", "monday", "patches", "brutus", "houston", "smooth", "penguin", "marley", "forest", "cream", "212121", "flash", "maximus", "nipple", "bobby", "bradley", "vision", "pokemon", "champion", "fireman", "indian", "softball", "picard", "system", "clinton", "cobra", "enjoy", "lucky1", "claire", "claudia", "boogie", "timothy", "marines", "security", "dirty", "admin", "wildcats", "pimp", "dancer", "hardon", "veronica", "fucked", "abcd1234", "abcdefg", "ironman", "wolverin", "remember", "great", "freepass", "bigred", "squirt", "justice", "francis", "hobbes", "kermit", "pearljam", "mercury", "domino", "9999", "denver", "brooke", "rascal", "hitman", "mistress", "simon", "tony", "bbbbbb", "friend", "peekaboo", "naked", "budlight", "electric", "sluts", "stargate", "saints", "bondage", "brittany", "bigman", "zombie", "swimming", "duke", "qwerty1", "babes", "scotland", "disney", "rooster", "brenda", "mookie", "swordfis", "candy", "duncan", "olivia", "hunting", "blink182", "alicia", "8888", "samsung", "bubba1", "whore", "virginia", "general", "passport", "aaaaaaaa", "erotic", "liberty", "arizona", "jesus", "abcd", "newport", "skipper", "rolltide", "balls", "happy1", "galore", "christ", "weasel", "242424", "wombat", "digger", "classic", "bulldogs", "poopoo", "accord", "popcorn", "turkey", "jenny", "amber", "bunny", "mouse", "007007", "titanic", "liverpool", "dreamer", "everton", "friends", "chevelle", "carrie", "gabriel", "psycho", "nemesis", "burton", "pontiac", "connor", "eatme", "lickme", "roland", "cumming", "mitchell", "ireland", "lincoln", "arnold", "spiderma", "patriots", "goblue", "devils", "eugene", "empire", "asdfg", "cardinal", "brown", "shaggy", "froggy", "qwer", "kawasaki", "kodiak", "people", "phpbb", "light", "54321", "kramer", "chopper", "hooker", "honey", "whynot", "lesbian", "lisa", "baxter", "adam", "snake", "teen", "ncc1701d", "qqqqqq", "airplane", "britney", "avalon", "sandy", "sugar", "sublime", "stewart", "wildcat", "raven", "scarface", "elizabet", "123654", "trucks", "wolfpack", "pervert", "lawrence", "raymond", "redhead", "american", "alyssa", "bambam", "movie", "woody", "shaved", "snowman", "tiger1", "chicks", "raptor", "1969", "stingray", "shooter", "france", "stars", "madmax", "kristen", "sports", "jerry", "789456", "garcia", "simpsons", "lights", "ryan", "looking", "chronic", "alison", "hahaha", "packard", "hendrix", "perfect", "service", "spring", "srinivas", "spike", "katie", "252525", "oscar", "brother", "bigmac", "suck", "single", "cannon", "georgia", "popeye", "tattoo", "texas", "party", "bullet", "taurus", "sailor", "wolves", "panthers", "japan", "strike", "flowers", "pussycat", "chris1", "loverboy", "berlin", "sticky", "marina", "tarheels", "fisher", "russia", "connie", "wolfgang", "testtest", "mature", "bass", "catch22", "juice", "michael1", "nigger", "159753", "women", "alpha1", "trooper", "hawkeye", "head", "freaky", "dodgers", "pakistan", "machine", "pyramid", "vegeta", "katana", "moose", "tinker", "coyote", "infinity", "inside", "pepsi", "letmein1", "bang", "control", "hercules", "morris", "james1", "tickle", "outlaw", "browns", "billybob", "pickle", "test1", "michele", "antonio", "sucks", "pavilion", "changeme", "caesar", "prelude", "tanner", "adrian", "darkside", "bowling", "wutang", "sunset", "robbie", "alabama", "danger", "zeppelin", "juan", "rusty", "pppppp", "nick", "2001", "ping", "darkstar", "madonna", "qwe123", "bigone", "casino", "cheryl", "charlie1", "mmmmmm", "integra", "wrangler", "apache", "tweety", "qwerty12", "bobafett", "simone", "none", "business", "sterling", "trevor", "transam", "dustin", "harvey", "england", "2323", "seattle", "ssssss", "rose", "harry", "openup", "pandora", "pussys", "trucker", "wallace", "indigo", "storm", "malibu", "weed", "review", "babydoll", "doggy", "dilbert", "pegasus", "joker", "catfish", "flipper", "valerie", "herman", "fuckit", "detroit", "kenneth", "cheyenne", "bruins", "stacey", "smoke", "joey", "seven", "marino", "fetish", "xfiles", "wonder", "stinger", "pizza", "babe", "pretty", "stealth", "manutd", "gracie", "gundam", "cessna", "longhorn", "presario", "mnbvcxz", "wicked", "mustang1", "victory", "21122112", "shelly", "awesome", "athena", "q1w2e3r4", "help", "holiday", "knicks", "street", "redneck", "12341234", "casey", "gizmo", "scully", "dragon1", "devildog", "triumph", "eddie", "bluebird", "shotgun", "peewee", "ronnie", "angel1", "daisy", "special", "metallica", "madman", "country", "impala", "lennon", "roscoe", "omega", "access14", "enterpri", "miranda", "search", "smitty", "blizzard", "unicorn", "tight", "rick", "ronald", "asdf1234", "harrison", "trigger", "truck", "danny", "home", "winnie", "beauty", "thailand", "1234567890", "cadillac", "castle", "tyler", "bobcat", "buddy1", "sunny", "stones", "asian", "freddie", "chuck", "butt", "loveyou", "norton", "hellfire", "hotsex", "indiana", "short", "panzer", "lonewolf", "trumpet", "colors", "blaster", "12121212", "fireball", "logan", "precious", "aaron", "elaine", "jungle", "atlanta", "gold", "corona", "curtis", "nikki", "polaris", "timber", "theone", "baller", "chipper", "orlando", "island", "skyline", "dragons", "dogs", "benson", "licker", "goldie", "engineer", "kong", "pencil", "basketba", "open", "hornet", "world", "linda", "barbie", "chan", "farmer", "valentin", "wetpussy", "indians", "larry", "redman", "foobar", "travel", "morpheus", "bernie", "target", "141414", "hotstuff", "photos", "laura", "savage", "holly", "rocky1", "fuck_inside", "dollar", "turbo", "design", "newton", "hottie", "moon", "202020", "blondes", "4128", "lestat", "avatar", "future", "goforit", "random", "abgrtyu", "jjjjjj", "cancer", "q1w2e3", "smiley", "goldberg", "express", "virgin", "zipper", "wrinkle1", "stone", "andy", "babylon", "dong", "powers", "consumer", "dudley", "monkey1", "serenity", "samurai", "99999999", "bigboobs", "skeeter", "lindsay", "joejoe", "master1", "aaaaa", "chocolat", "christia", "birthday", "stephani", "tang", "1234qwer", "alfred", "ball", "98765432", "maria", "sexual", "maxima", "77777777", "sampson", "buckeye", "highland", "kristin", "seminole", "reaper", "bassman", "nugget", "lucifer", "airforce", "nasty", "watson", "warlock", "2121", "philip", "always", "dodge", "chrissy", "burger", "bird", "snatch", "missy", "pink", "gang", "maddie", "holmes", "huskers", "piglet", "photo", "joanne", "hamilton", "dodger", "paladin", "christy", "chubby", "buckeyes", "hamlet", "abcdefgh", "bigfoot", "sunday", "manson", "goldfish", "garden", "deftones", "icecream", "blondie", "spartan", "julie", "harold", "charger", "brandi", "stormy", "sherry", "pleasure", "juventus", "rodney", "galaxy", "holland", "escort", "zxcvb", "planet", "jerome", "wesley", "blues", "song", "peace", "david1", "ncc1701e", "1966", "51505150", "cavalier", "gambit", "karen", "sidney", "ripper", "oicu812", "jamie", "sister", "marie", "martha", "nylons", "aardvark", "nadine", "minnie", "whiskey", "bing", "plastic", "anal", "babylon5", "chang", "savannah", "loser", "racecar", "insane", "yankees1", "mememe", "hansolo", "chiefs", "fredfred", "freak", "frog", "salmon", "concrete", "yvonne", "zxcv", "shamrock", "atlantis", "warren", "wordpass", "julian", "mariah", "rommel", "1010", "harris", "predator", "sylvia", "massive", "cats", "sammy1", "mister", "stud", "marathon", "rubber", "ding", "trunks", "desire", "montreal", "justme", "faster", "kathleen", "irish", "1999", "bertha", "jessica1", "alpine", "sammie", "diamonds", "tristan", "00000", "swinger", "shan", "stallion", "pitbull", "letmein2", "roberto", "ready", "april", "palmer", "ming", "shadow1", "audrey", "chong", "clitoris", "wang", "shirley", "fuckers", "jackoff", "bluesky", "sundance", "renegade", "hollywoo", "151515", "bernard", "wolfman", "soldier", "picture", "pierre", "ling", "goddess", "manager", "nikita", "sweety", "titans", "hang", "fang", "ficken", "niners", "bottom", "bubble", "hello123", "ibanez", "webster", "sweetpea", "stocking", "323232", "tornado", "lindsey", "content", "bruce", "buck", "aragorn", "griffin", "chen", "campbell", "trojan", "christop", "newman", "wayne", "tina", "rockstar", "father", "geronimo", "pascal", "crimson", "brooks", "hector", "penny", "anna", "google", "camera", "chandler", "fatcat", "lovelove", "cody", "cunts", "waters", "stimpy", "finger", "cindy", "wheels", "viper1", "latin", "robin", "greenday", "987654321", "creampie", "brendan", "hiphop", "willy", "snapper", "funtime", "duck", "trombone", "adult", "cotton", "cookies", "kaiser", "mulder", "westham", "latino", "jeep", "ravens", "aurora", "drizzt", "madness", "energy", "kinky", "314159", "sophia", "stefan", "slick", "rocker", "55555555", "freeman", "french", "mongoose", "speed", "dddddd", "hong", "henry", "hungry", "yang", "catdog", "cheng", "ghost", "gogogo", "randy", "tottenha", "curious", "butterfl", "mission", "january", "singer", "sherman", "shark", "techno", "lancer", "lalala", "autumn", "chichi", "orion", "trixie", "clifford", "delta", "bobbob", "bomber", "holden", "kang", "kiss", "1968", "spunky", "liquid", "mary", "beagle", "granny", "network", "bond", "kkkkkk", "millie", "1973", "biggie", "beetle", "teacher", "susan", "toronto", "anakin", "genius", "dream", "cocks", "dang", "bush", "karate", "snakes", "bangkok", "callie", "fuckyou2", "pacific", "daytona", "kelsey", "infantry", "skywalke", "foster", "felix", "sailing", "raistlin", "vanhalen", "huang", "herbert", "jacob", "blackie", "tarzan", "strider", "sherlock", "lang", "gong", "sang", "dietcoke", "ultimate", "tree", "shai", "sprite", "ting", "artist", "chai", "chao", "devil", "python", "ninja", "misty", "ytrewq", "sweetie", "superfly", "456789", "tian", "jing", "jesus1", "freedom1", "dian", "drpepper", "potter", "chou", "darren", "hobbit", "violet", "yong", "shen", "phillip", "maurice", "gloria", "nolimit", "mylove", "biscuit", "yahoo", "shasta", "sex4me", "smoker", "smile", "pebbles", "pics", "philly", "tong", "tintin", "lesbians", "marlin", "cactus", "frank1", "tttttt", "chun", "danni", "emerald", "showme", "pirates", "lian", "dogg", "colleen", "xiao", "xian", "tazman", "tanker", "patton", "toshiba", "richie", "alberto", "gotcha", "graham", "dillon", "rang", "emily", "keng", "jazz", "bigguy", "yuan", "woman", "tomtom", "marion", "greg", "chaos", "fossil", "flight", "racerx", "tuan", "creamy", "boss", "bobo", "musicman", "warcraft", "window", "blade", "shuang", "sheila", "shun", "lick", "jian", "microsoft", "rong", "allen", "feng", "getsome", "sally", "quality", "kennedy", "morrison", "1977", "beng", "wwwwww", "yoyoyo", "zhang", "seng", "teddy", "joanna", "andreas", "harder", "luke", "qazxsw", "qian", "cong", "chuan", "deng", "nang", "boeing", "keeper", "western", "isabelle", "1963", "subaru", "sheng", "thuglife", "teng", "jiong", "miao", "martina", "mang", "maniac", "pussie", "tracey", "a1b2c3", "clayton", "zhou", "zhuang", "xing", "stonecol", "snow", "spyder", "liang", "jiang", "memphis", "regina", "ceng", "magic1", "logitech", "chuang", "dark", "million", "blow", "sesame", "shao", "poison", "titty", "terry", "kuan", "kuai", "kyle", "mian", "guan", "hamster", "guai", "ferret", "florence", "geng", "duan", "pang", "maiden", "quan", "velvet", "nong", "neng", "nookie", "buttons", "bian", "bingo", "biao", "zhong", "zeng", "xiong", "zhun", "ying", "zong", "xuan", "zang", "0.0.000", "suan", "shei", "shui", "sharks", "shang", "shua", "small", "peng", "pian", "piao", "liao", "meng", "miami", "reng", "guang", "cang", "change", "ruan", "diao", "luan", "lucas", "qing", "chui", "chuo", "cuan", "nuan", "ning", "heng", "huan", "kansas", "muscle", "monroe", "weng", "whitney", "1passwor", "bluemoon", "zhui", "zhua", "xiang", "zheng", "zhen", "zhei", "zhao", "zhan", "yomama", "zhai", "zhuo", "zuan", "tarheel", "shou", "shuo", "tiao", "lady", "leonard", "leng", "kuang", "jiao", "13579", "basket", "qiao", "qiong", "qiang", "chuai", "nian", "niao", "niang", "huai", "22222222", "bianca", "zhuan", "zhuai", "shuan", "shuai", "stardust", "jumper", "margaret", "archie", "66666666", "charlott", "forget", "qwertz", "bones", "history", "milton", "waterloo", "2002", "stuff", "11223344", "office", "oldman", "preston", "trains", "murray", "vertigo", "246810", "black1", "swallow", "smiles", "standard", "alexandr", "parrot", "luther", "user", "nicolas", "1976", "surfing", "pioneer", "pete", "masters", "apple1", "asdasd", "auburn", "hannibal", "frontier", "panama", "lucy", "buffy", "brianna", "welcome1", "vette", "blue22", "shemale", "111222", "baggins", "groovy", "global", "turner", "181818", "1979", "blades", "spanking", "life", "byteme", "lobster", "collins", "dawg", "hilton", "japanese", "1970", "1964", "2424", "polo", "markus", "coco", "deedee", "mikey", "1972", "171717", "1701", "strip", "jersey", "green1", "capital", "sasha", "sadie", "putter", "vader", "seven7", "lester", "marcel", "banshee", "grendel", "gilbert", "dicks", "dead", "hidden", "iloveu", "1980", "sound", "ledzep", "michel", "147258", "female", "bugger", "buffett", "bryan", "hell", "kristina", "molson", "2020", "wookie", "sprint", "thanks", "jericho", "102030", "grace", "fuckin", "mandy", "ranger1", "trebor", "deepthroat", "bonehead", "molly1", "mirage", "models", "1984", "2468", "stuart", "showtime", "squirrel", "pentium", "mario", "anime", "gator", "powder", "twister", "connect", "neptune", "bruno", "butts", "engine", "eatshit", "mustangs", "woody1", "shogun", "septembe", "pooh", "jimbo", "roger", "annie", "bacon", "center", "russian", "sabine", "damien", "mollie", "voyeur", "2525", "363636", "leonardo", "camel", "chair", "germany", "giant", "qqqq", "nudist", "bone", "sleepy", "tequila", "megan", "fighter", "garrett", "dominic", "obiwan", "makaveli", "vacation", "walnut", "1974", "ladybug", "cantona", "ccbill", "satan", "rusty1", "passwor1", "columbia", "napoleon", "dusty", "kissme", "motorola", "william1", "1967", "zzzz", "skater", "smut", "play", "matthew1", "robinson", "valley", "coolio", "dagger", "boner", "bull", "horndog", "jason1", "blake", "penguins", "rescue", "griffey", "8j4ye3uz", "californ", "champs", "qwertyuiop", "portland", "queen", "colt45", "boat", "xxxxxxx", "xanadu", "tacoma", "mason", "carpet", "gggggg", "safety", "palace", "italia", "stevie", "picturs", "picasso", "thongs", "tempest", "ricardo", "roberts", "asd123", "hairy", "foxtrot", "gary", "nimrod", "hotboy", "343434", "1111111", "asdfghjkl", "goose", "overlord", "blood", "wood", "stranger", "454545", "shaolin", "sooners", "socrates", "spiderman", "peanuts", "maxine", "rogers", "13131313", "andrew1", "filthy", "donnie", "ohyeah", "africa", "national", "kenny", "keith", "monique", "intrepid", "jasmin", "pickles", "assass", "fright", "potato", "darwin", "hhhhhh", "kingdom", "weezer", "424242", "pepsi1", "throat", "romeo", "gerard", "looker", "puppy", "butch", "monika", "suzanne", "sweets", "temple", "laurie", "josh", "megadeth", "analsex", "nymets", "ddddddd", "bigballs", "support", "stick", "today", "down", "oakland", "oooooo", "qweasd", "chucky", "bridge", "carrot", "chargers", "discover", "dookie", "condor", "night", "butler", "hoover", "horny1", "isabella", "sunrise", "sinner", "jojo", "megapass", "martini", "assfuck", "grateful", "ffffff", "abigail", "esther", "mushroom", "janice", "jamaica", "wright", "sims", "space", "there", "timmy", "7654321", "77777", "cccccc", "gizmodo", "roxanne", "ralph", "tractor", "cristina", "dance", "mypass", "hongkong", "helena", "1975", "blue123", "pissing", "thomas1", "redred", "rich", "basketball", "attack", "cash", "satan666", "drunk", "dixie", "dublin", "bollox", "kingkong", "katrina", "miles", "1971", "22222", "272727", "sexx", "penelope", "thompson", "anything", "bbbb", "battle", "grizzly", "passat", "porter", "tracy", "defiant", "bowler", "knickers", "monitor", "wisdom", "wild", "slappy", "thor", "letsgo", "robert1", "feet", "rush", "brownie", "hudson", "098765", "playing", "playtime", "lightnin", "melvin", "atomic", "bart", "hawk", "goku", "glory", "llllll", "qwaszx", "cosmos", "bosco", "knights", "bentley", "beast", "slapshot", "lewis", "assword", "frosty", "gillian", "sara", "dumbass", "mallard", "dddd", "deanna", "elwood", "wally", "159357", "titleist", "angelo", "aussie", "guest", "golfing", "doobie", "loveit", "chloe", "elliott", "werewolf", "vipers", "janine", "1965", "blabla", "surf", "sucking", "tardis", "serena", "shelley", "thegame", "legion", "rebels", "fernando", "fast", "gerald", "sarah1", "double", "onelove", "loulou", "toto", "crash", "blackcat", "0007", "tacobell", "soccer1", "jedi", "manuel", "method", "river", "chase", "ludwig", "poopie", "derrick", "boob", "breast", "kittycat", "isabel", "belly", "pikachu", "thunder1", "thankyou", "jose", "celeste", "celtics", "frances", "frogger", "scoobydo", "sabbath", "coltrane", "budman", "willis", "jackal", "bigger", "zzzzz", "silvia", "sooner", "licking", "gopher", "geheim", "lonestar", "primus", "pooper", "newpass", "brasil", "heather1", "husker", "element", "moomoo", "beefcake", "zzzzzzzz", "tammy", "shitty", "smokin", "personal", "jjjj", "anthony1", "anubis", "backup", "gorilla", "fuckface", "painter", "lowrider", "punkrock", "traffic", "claude", "daniela", "dale", "delta1", "nancy", "boys", "easy", "kissing", "kelley", "wendy", "theresa", "amazon", "alan", "fatass", "dodgeram", "dingdong", "malcolm", "qqqqqqqq", "breasts", "boots", "honda1", "spidey", "poker", "temp", "johnjohn", "miguel", "147852", "archer", "asshole1", "dogdog", "tricky", "crusader", "weather", "syracuse", "spankme", "speaker", "meridian", "amadeus", "back", "harley1", "falcons", "dorothy", "turkey50", "kenwood", "keyboard", "ilovesex", "1978", "blackman", "shazam", "shalom", "lickit", "jimbob", "richmond", "roller", "carson", "check", "fatman", "funny", "garbage", "sandiego", "loving", "magnus", "cooldude", "clover", "mobile", "bell", "payton", "plumber", "texas1", "tool", "topper", "jenna", "mariners", "rebel", "harmony", "caliente", "celica", "fletcher", "german", "diana", "oxford", "osiris", "orgasm", "punkin", "porsche9", "tuesday", "close", "breeze", "bossman", "kangaroo", "billie", "latinas", "judith", "astros", "scruffy", "donna", "qwertyu", "davis", "hearts", "kathy", "jammer", "java", "springer", "rhonda", "ricky", "1122", "goodtime", "chelsea1", "freckles", "flyboy", "doodle", "city", "nebraska", "bootie", "kicker", "webmaster", "vulcan", "iverson", "191919", "blueeyes", "stoner", "321321", "farside", "rugby", "director", "pussy69", "power1", "bobbie", "hershey", "hermes", "monopoly", "west", "birdman", "blessed", "blackjac", "southern", "peterpan", "thumbs", "lawyer", "melinda", "fingers", "fuckyou1", "rrrrrr", "a1b2c3d4", "coke", "nicola", "bohica", "heart", "elvis1", "kids", "blacky", "stories", "sentinel", "snake1", "phoebe", "jesse", "richard1", "1234abcd", "guardian", "candyman", "fisting", "scarlet", "dildo", "pancho", "mandingo", "lucky7", "condom", "munchkin", "billyboy", "summer1", "student", "sword", "skiing", "sergio", "site", "sony", "thong", "rootbeer", "assassin", "cassidy", "frederic", "fffff", "fitness", "giovanni", "scarlett", "durango", "postal", "achilles", "dawn", "dylan", "kisses", "warriors", "imagine", "plymouth", "topdog", "asterix", "hallo", "cameltoe", "fuckfuck", "bridget", "eeeeee", "mouth", "weird", "will", "sithlord", "sommer", "toby", "theking", "juliet", "avenger", "backdoor", "goodbye", "chevrole", "faith", "lorraine", "trance", "cosworth", "brad", "houses", "homers", "eternity", "kingpin", "verbatim", "incubus", "1961", "blond", "zaphod", "shiloh", "spurs", "station", "jennie", "maynard", "mighty", "aliens", "hank", "charly", "running", "dogman", "omega1", "printer", "aggies", "chocolate", "deadhead", "hope", "javier", "bitch1", "stone55", "pineappl", "thekid", "lizzie", "rockets", "ashton", "camels", "formula", "forrest", "rosemary", "oracle", "rain", "pussey", "porkchop", "abcde", "clancy", "nellie", "mystic", "inferno", "blackdog", "steve1", "pauline", "alexander", "alice", "alfa", "grumpy", "flames", "scream", "lonely", "puffy", "proxy", "valhalla", "unreal", "cynthia", "herbie", "engage", "yyyyyy", "010101", "solomon", "pistol", "melody", "celeb", "flying", "gggg", "santiago", "scottie", "oakley", "portugal", "a12345", "newbie", "mmmm", "venus", "1qazxsw2", "beverly", "zorro", "work", "writer", "stripper", "sebastia", "spread", "phil", "tobias", "links", "members", "metal", "1221", "andre", "565656", "funfun", "trojans", "again", "cyber", "hurrican", "moneys", "1x2zkg8w", "zeus", "thing", "tomato", "lion", "atlantic", "celine", "usa123", "trans", "account", "aaaaaaa", "homerun", "hyperion", "kevin1", "blacks", "44444444", "skittles", "sean", "hastings", "fart", "gangbang", "fubar", "sailboat", "older", "oilers", "craig", "conrad", "church", "damian", "dean", "broken", "buster1", "hithere", "immortal", "sticks", "pilot", "peters", "lexmark", "jerkoff", "maryland", "anders", "cheers", "possum", "columbus", "cutter", "muppet", "beautiful", "stolen", "swordfish", "sport", "sonic", "peter1", "jethro", "rockon", "asdfghj", "pass123", "paper", "pornos", "ncc1701a", "bootys", "buttman", "bonjour", "escape", "1960", "becky", "bears", "362436", "spartans", "tinman", "threesom", "lemons", "maxmax", "1414", "bbbbb", "camelot", "chad", "chewie", "gogo", "fusion", "saint", "dilligaf", "nopass", "myself", "hustler", "hunter1", "whitey", "beast1", "yesyes", "spank", "smudge", "pinkfloy", "patriot", "lespaul", "annette", "hammers", "catalina", "finish", "formula1", "sausage", "scooter1", "orioles", "oscar1", "over", "colombia", "cramps", "natural", "eating", "exotic", "iguana", "bella", "suckers", "strong", "sheena", "start", "slave", "pearl", "topcat", "lancelot", "angelica", "magelan", "racer", "ramona", "crunch", "british", "button", "eileen", "steph", "456123", "skinny", "seeking", "rockhard", "chief", "filter", "first", "freaks", "sakura", "pacman", "poontang", "dalton", "newlife", "homer1", "klingon", "watcher", "walleye", "tasha", "tasty", "sinatra", "starship", "steel", "starbuck", "poncho", "amber1", "gonzo", "grover", "catherin", "carol", "candle", "firefly", "goblin", "scotch", "diver", "usmc", "huskies", "eleven", "kentucky", "kitkat", "israel", "beckham", "bicycle", "yourmom", "studio", "tara", "33333333", "shane", "splash", "jimmy1", "reality", "12344321", "caitlin", "focus", "sapphire", "mailman", "raiders1", "clark", "ddddd", "hopper", "excalibu", "more", "wilbur", "illini", "imperial", "phillips", "lansing", "maxx", "gothic", "golfball", "carlton", "camille", "facial", "front242", "macdaddy", "qwer1234", "vectra", "cowboys1", "crazy1", "dannyboy", "jane", "betty", "benny", "bennett", "leader", "martinez", "aquarius", "barkley", "hayden", "caught", "franky", "ffff", "floyd", "sassy", "pppp", "pppppppp", "prodigy", "clarence", "noodle", "eatpussy", "vortex", "wanking", "beatrice", "billy1", "siemens", "pedro", "phillies", "research", "groups", "carolyn", "chevy1", "cccc", "fritz", "gggggggg", "doughboy", "dracula", "nurses", "loco", "madrid", "lollipop", "trout", "utopia", "chrono", "cooler", "conner", "nevada", "wibble", "werner", "summit", "marco", "marilyn", "1225", "babies", "capone", "fugazi", "panda", "mama", "qazwsxed", "puppies", "triton", "9876", "command", "nnnnnn", "ernest", "momoney", "iforgot", "wolfie", "studly", "shawn", "renee", "alien", "hamburg", "81fukkc", "741852", "catman", "china", "forgot", "gagging", "scott1", "drew", "oregon", "qweqwe", "train", "crazybab", "daniel1", "cutlass", "brothers", "holes", "heidi", "mothers", "music1", "what", "walrus", "1957", "bigtime", "bike", "xtreme", "simba", "ssss", "rookie", "angie", "bathing", "fresh", "sanchez", "rotten", "maestro", "luis", "look", "turbo1", "99999", "butthole", "hhhh", "elijah", "monty", "bender", "yoda", "shania", "shock", "phish", "thecat", "rightnow", "reagan", "baddog", "asia", "greatone", "gateway1", "randall", "abstr", "napster", "brian1", "bogart", "high", "hitler", "emma", "kill", "weaver", "wildfire", "jackson1", "isaiah", "1981", "belinda", "beaner", "yoyo", "0.0.0.000", "super1", "select", "snuggles", "slutty", "some", "phoenix1", "technics", "toon", "raven1", "rayray", "123789", "1066", "albion", "greens", "fashion", "gesperrt", "santana", "paint", "powell", "credit", "darling", "mystery", "bowser", "bottle", "brucelee", "hehehe", "kelly1", "mojo", "1998", "bikini", "woofwoof", "yyyy", "strap", "sites", "spears", "theodore", "julius", "richards", "amelia", "central", "f**k", "nyjets", "punisher", "username", "vanilla", "twisted", "bryant", "brent", "bunghole", "here", "elizabeth", "erica", "kimber", "viagra", "veritas", "pony", "pool", "titts", "labtec", "lifetime", "jenny1", "masterbate", "mayhem", "redbull", "govols", "gremlin", "505050", "gmoney", "rupert", "rovers", "diamond1", "lorenzo", "trident", "abnormal", "davidson", "deskjet", "cuddles", "nice", "bristol", "karina", "milano", "vh5150", "jarhead", "1982", "bigbird", "bizkit", "sixers", "slider", "star69", "starfish", "penetration", "tommy1", "john316", "meghan", "michaela", "market", "grant", "caligula", "carl", "flicks", "films", "madden", "railroad", "cosmo", "cthulhu", "bradford", "br0d3r", "military", "bearbear", "swedish", "spawn", "patrick1", "polly", "these", "todd", "reds", "anarchy", "groove", "franco", "fuckher", "oooo", "tyrone", "vegas", "airbus", "cobra1", "christine", "clips", "delete", "duster", "kitty1", "mouse1", "monkeys", "jazzman", "1919", "262626", "swinging", "stroke", "stocks", "sting", "pippen", "labrador", "jordan1", "justdoit", "meatball", "females", "saturday", "park", "vector", "cooter", "defender", "desert", "demon", "nike", "bubbas", "bonkers", "english", "kahuna", "wildman", "4121", "sirius", "static", "piercing", "terror", "teenage", "leelee", "marissa", "microsof", "mechanic", "robotech", "rated", "hailey", "chaser", "sanders", "salsero", "nuts", "macross", "quantum", "rachael", "tsunami", "universe", "daddy1", "cruise", "nguyen", "newpass6", "nudes", "hellyeah", "vernon", "1959", "zaq12wsx", "striker", "sixty", "steele", "spice", "spectrum", "smegma", "thumb", "jjjjjjjj", "mellow", "astrid", "cancun", "cartoon", "sabres", "samiam", "pants", "oranges", "oklahoma", "lust", "coleman", "denali", "nude", "noodles", "buzz", "brest", "hooter", "mmmmmmmm", "warthog", "bloody", "blueblue", "zappa", "wolverine", "sniffing", "lance", "jean", "jjjjj", "harper", "calico", "freee", "rover", "door", "pooter", "closeup", "bonsai", "evelyn", "emily1", "kathryn", "keystone", "iiii", "1955", "yzerman", "theboss", "tolkien", "jill", "megaman", "rasta", "bbbbbbbb", "bean", "handsome", "hal9000", "goofy", "gringo", "gofish", "gizmo1", "samsam", "scuba", "onlyme", "tttttttt", "corrado", "clown", "clapton", "deborah", "boris", "bulls", "vivian", "jayhawk", "bethany", "wwww", "sharky", "seeker", "ssssssss", "somethin", "pillow", "thesims", "lighter", "lkjhgf", "melissa1", "marcius2", "barry", "guiness", "gymnast", "casey1", "goalie", "godsmack", "doug", "lolo", "rangers1", "poppy", "abby", "clemson", "clipper", "deeznuts", "nobody", "holly1", "elliot", "eeee", "kingston", "miriam", "belle", "yosemite", "sucked", "sex123", "sexy69", "pic\\'s", "tommyboy", "lamont", "meat", "masterbating", "marianne", "marc", "gretzky", "happyday", "frisco", "scratch", "orchid", "orange1", "manchest", "quincy", "unbelievable", "aberdeen", "dawson", "nathalie", "ne1469", "boxing", "hill", "korn", "intercourse", "161616", "1985", "ziggy", "supersta", "stoney", "senior", "amature", "barber", "babyboy", "bcfields", "goliath", "hack", "hardrock", "children", "frodo", "scout", "scrappy", "rosie", "qazqaz", "tracker", "active", "craving", "commando", "cohiba", "deep", "cyclone", "dana", "bubba69", "katie1", "mpegs", "vsegda", "jade", "irish1", "better", "sexy1", "sinclair", "smelly", "squerting", "lions", "jokers", "jeanette", "julia", "jojojo", "meathead", "ashley1", "groucho", "cheetah", "champ", "firefox", "gandalf1", "packer", "magnolia", "love69", "tyler1", "typhoon", "tundra", "bobby1", "kenworth", "village", "volley", "beth", "wolf359", "0420", "000007", "swimmer", "skydive", "smokes", "patty", "peugeot", "pompey", "legolas", "kristy", "redhot", "rodman", "redalert", "having", "grapes", "4runner", "carrera", "floppy", "dollars", "ou8122", "quattro", "adams", "cloud9", "davids", "nofear", "busty", "homemade", "mmmmm", "whisper", "vermont", "webmaste", "wives", "insertion", "jayjay", "philips", "phone", "topher", "tongue", "temptress", "midget", "ripken", "havefun", "gretchen", "canon", "celebrity", "five", "getting", "ghetto", "direct", "otto", "ragnarok", "trinidad", "usnavy", "conover", "cruiser", "dalshe", "nicole1", "buzzard", "hottest", "kingfish", "misfit", "moore", "milfnew", "warlord", "wassup", "bigsexy", "blackhaw", "zippy", "shearer", "tights", "thursday", "kungfu", "labia", "journey", "meatloaf", "marlene", "rider", "area51", "batman1", "bananas", "636363", "cancel", "ggggg", "paradox", "mack", "lynn", "queens", "adults", "aikido", "cigars", "nova", "hoosier", "eeyore", "moose1", "warez", "interacial", "streaming", "313131", "pertinant", "pool6123", "mayday", "rivers", "revenge", "animated", "banker", "baddest", "gordon24", "ccccc", "fortune", "fantasies", "touching", "aisan", "deadman", "homepage", "ejaculation", "whocares", "iscool", "jamesbon", "1956", "1pussy", "womam", "sweden", "skidoo", "spock", "sssss", "petra", "pepper1", "pinhead", "micron", "allsop", "amsterda", "army", "aside", "gunnar", "666999", "chip", "foot", "fowler", "february", "face", "fletch", "george1", "sapper", "science", "sasha1", "luckydog", "lover1", "magick", "popopo", "public", "ultima", "derek", "cypress", "booker", "businessbabe", "brandon1", "edwards", "experience", "vulva", "vvvv", "jabroni", "bigbear", "yummy", "010203", "searay", "secret1", "showing", "sinbad", "sexxxx", "soleil", "software", "piccolo", "thirteen", "leopard", "legacy", "jensen", "justine", "memorex", "marisa", "mathew", "redwing", "rasputin", "134679", "anfield", "greenbay", "gore", "catcat", "feather", "scanner", "pa55word", "contortionist", "danzig", "daisy1", "hores", "erik", "exodus", "vinnie", "iiiiii", "zero", "1001", "subway", "tank", "second", "snapple", "sneakers", "sonyfuck", "picks", "poodle", "test1234", "their", "llll", "junebug", "june", "marker", "mellon", "ronaldo", "roadkill", "amanda1", "asdfjkl", "beaches", "greene", "great1", "cheerleaers", "force", "doitnow", "ozzy", "madeline", "radio", "tyson", "christian", "daphne", "boxster", "brighton", "housewifes", "emmanuel", "emerson", "kkkk", "mnbvcx", "moocow", "vides", "wagner", "janet", "1717", "bigmoney", "blonds", "1000", "storys", "stereo", "4545", "420247", "seductive", "sexygirl", "lesbean", "live", "justin1", "124578", "animals", "balance", "hansen", "cabbage", "canadian", "gangbanged", "dodge1", "dimas", "lori", "loud", "malaka", "puss", "probes", "adriana", "coolman", "crawford", "dante", "nacked", "hotpussy", "erotica", "kool", "mirror", "wearing", "implants", "intruder", "bigass", "zenith", "woohoo", "womans", "tanya", "tango", "stacy", "pisces", "laguna", "krystal", "maxell", "andyod22", "barcelon", "chainsaw", "chickens", "flash1", "downtown", "orgasms", "magicman", "profit", "pusyy", "pothead", "coconut", "chuckie", "contact", "clevelan", "designer", "builder", "budweise", "hotshot", "horizon", "hole", "experienced", "mondeo", "wifes", "1962", "strange", "stumpy", "smiths", "sparks", "slacker", "piper", "pitchers", "passwords", "laptop", "jeremiah", "allmine", "alliance", "bbbbbbb", "asscock", "halflife", "grandma", "hayley", "88888", "cecilia", "chacha", "saratoga", "sandy1", "santos", "doogie", "number", "positive", "qwert40", "transexual", "crow", "close-up", "darrell", "bonita", "ib6ub9", "volvo", "jacob1", "iiiii", "beastie", "sunnyday", "stoned", "sonics", "starfire", "snapon", "pictuers", "pepe", "testing1", "tiberius", "lisalisa", "lesbain", "litle", "retard", "ripple", "austin1", "badgirl", "golfgolf", "flounder", "garage", "royals", "dragoon", "dickie", "passwor", "ocean", "majestic", "poppop", "trailers", "dammit", "nokia", "bobobo", "br549", "emmitt", "knock", "minime", "mikemike", "whitesox", "1954", "3232", "353535", "seamus", "solo", "sparkle", "sluttey", "pictere", "titten", "lback", "1024", "angelina", "goodluck", "charlton", "fingerig", "gallaries", "goat", "ruby", "passme", "oasis", "lockerroom", "logan1", "rainman", "twins", "treasure", "absolutely", "club", "custom", "cyclops", "nipper", "bucket", "homepage-", "hhhhh", "momsuck", "indain", "2345", "beerbeer", "bimmer", "susanne", "stunner", "stevens", "456456", "shell", "sheba", "tootsie", "tiny", "testerer", "reefer", "really", "1012", "harcore", "gollum", "545454", "chico", "caveman", "carole", "fordf150", "fishes", "gaymen", "saleen", "doodoo", "pa55w0rd", "looney", "presto", "qqqqq", "cigar", "bogey", "brewer", "helloo", "dutch", "kamikaze", "monte", "wasser", "vietnam", "visa", "japanees", "0123", "swords", "slapper", "peach", "jump", "marvel", "masterbaiting", "march", "redwood", "rolling", "1005", "ametuer", "chiks", "cathy", "callaway", "fucing", "sadie1", "panasoni", "mamas", "race", "rambo", "unknown", "absolut", "deacon", "dallas1", "housewife", "kristi", "keywest", "kirsten", "kipper", "morning", "wings", "idiot", "18436572", "1515", "beating", "zxczxc", "sullivan", "303030", "shaman", "sparrow", "terrapin", "jeffery", "masturbation", "mick", "redfish", "1492", "angus", "barrett", "goirish", "hardcock", "felicia", "forfun", "galary", "freeporn", "duchess", "olivier", "lotus", "pornographic", "ramses", "purdue", "traveler", "crave", "brando", "enter1", "killme", "moneyman", "welder", "windsor", "wifey", "indon", "yyyyy", "stretch", "taylor1", "4417", "shopping", "picher", "pickup", "thumbnils", "johnboy", "jets", "jess", "maureen", "anne", "ameteur", "amateurs", "apollo13", "hambone", "goldwing", "5050", "charley", "sally1", "doghouse", "padres", "pounding", "quest", "truelove", "underdog", "trader", "crack", "climber", "bolitas", "bravo", "hohoho", "model", "italian", "beanie", "beretta", "wrestlin", "stroker", "tabitha", "sherwood", "sexyman", "jewels", "johannes", "mets", "marcos", "rhino", "bdsm", "balloons", "goodman", "grils", "happy123", "flamingo", "games", "route66", "devo", "dino", "outkast", "paintbal", "magpie", "llllllll", "twilight", "critter", "christie", "cupcake", "nickel", "bullseye", "krista", "knickerless", "mimi", "murder", "videoes", "binladen", "xerxes", "slim", "slinky", "pinky", "peterson", "thanatos", "meister", "menace", "ripley", "retired", "albatros", "balloon", "bank", "goten", "5551212", "getsdown", "donuts", "divorce", "nwo4life", "lord", "lost", "underwear", "tttt", "comet", "deer", "damnit", "dddddddd", "deeznutz", "nasty1", "nonono", "nina", "enterprise", "eeeee", "misfit99", "milkman", "vvvvvv", "isaac", "1818", "blueboy", "beans", "bigbutt", "wyatt", "tech", "solution", "poetry", "toolman", "laurel", "juggalo", "jetski", "meredith", "barefoot", "50spanks", "gobears", "scandinavian", "original", "truman", "cubbies", "nitram", "briana", "ebony", "kings", "warner", "bilbo", "yumyum", "zzzzzzz", "stylus", "321654", "shannon1", "server", "secure", "silly", "squash", "starman", "steeler", "staples", "phrases", "techniques", "laser", "135790", "allan", "barker", "athens", "cbr600", "chemical", "fester", "gangsta", "fucku2", "freeze", "game", "salvador", "droopy", "objects", "passwd", "lllll", "loaded", "louis", "manchester", "losers", "vedder", "clit", "chunky", "darkman", "damage", "buckshot", "buddah", "boobed", "henti", "hillary", "webber", "winter1", "ingrid", "bigmike", "beta", "zidane", "talon", "slave1", "pissoff", "person", "thegreat", "living", "lexus", "matador", "readers", "riley", "roberta", "armani", "ashlee", "goldstar", "5656", "cards", "fmale", "ferris", "fuking", "gaston", "fucku", "ggggggg", "sauron", "diggler", "pacers", "looser", "pounded", "premier", "pulled", "town", "trisha", "triangle", "cornell", "collin", "cosmic", "deeper", "depeche", "norway", "bright", "helmet", "kristine", "kendall", "mustard", "misty1", "watch", "jagger", "bertie", "berger", "word", "3x7pxr", "silver1", "smoking", "snowboar", "sonny", "paula", "penetrating", "photoes", "lesbens", "lambert", "lindros", "lillian", "roadking", "rockford", "1357", "143143", "asasas", "goodboy", "898989", "chicago1", "card", "ferrari1", "galeries", "godfathe", "gawker", "gargoyle", "gangster", "rubble", "rrrr", "onetime", "pussyman", "pooppoop", "trapper", "twenty", "abraham", "cinder", "company", "newcastl", "boricua", "bunny1", "boxer", "hotred", "hockey1", "hooper", "edward1", "evan", "kris", "misery", "moscow", "milk", "mortgage", "bigtit", "show", "snoopdog", "three", "lionel", "leanne", "joshua1", "july", "1230", "assholes", "cedric", "fallen", "farley", "gene", "frisky", "sanity", "script", "divine", "dharma", "lucky13", "property", "tricia", "akira", "desiree", "broadway", "butterfly", "hunt", "hotbox", "hootie", "heat", "howdy", "earthlink", "karma", "kiteboy", "motley", "westwood", "1988", "bert", "blackbir", "biggles", "wrench", "working", "wrestle", "slippery", "pheonix", "penny1", "pianoman", "tomorrow", "thedude", "jenn", "jonjon", "jones1", "mattie", "memory", "micheal", "roadrunn", "arrow", "attitude", "azzer", "seahawks", "diehard", "dotcom", "lola", "tunafish", "chivas", "cinnamon", "clouds", "deluxe", "northern", "nuclear", "north", "boom", "boobie", "hurley", "krishna", "momomo", "modles", "volume", "23232323", "bluedog", "wwwwwww", "zerocool", "yousuck", "pluto", "limewire", "link", "joung", "marcia", "awnyce", "gonavy", "haha", "films+pic+galeries", "fabian", "francois", "girsl", "fuckthis", "girfriend", "rufus", "drive", "uncencored", "a123456", "airport", "clay", "chrisbln", "combat", "cygnus", "cupoi", "never", "netscape", "brett", "hhhhhhhh", "eagles1", "elite", "knockers", "kendra", "mommy", "1958", "tazmania", "shonuf", "piano", "pharmacy", "thedog", "lips", "jillian", "jenkins", "midway", "arsenal1", "anaconda", "australi", "gromit", "gotohell", "787878", "66666", "carmex2", "camber", "gator1", "ginger1", "fuzzy", "seadoo", "dorian", "lovesex", "rancid", "uuuuuu", "911911", "nature", "bulldog1", "helen", "health", "heater", "higgins", "kirk", "monalisa", "mmmmmmm", "whiteout", "virtual", "ventura", "jamie1", "japanes", "james007", "2727", "2469", "blam", "bitchass", "believe", "zephyr", "stiffy", "sweet1", "silent", "southpar", "spectre", "tigger1", "tekken", "lenny", "lakota", "lionking", "jjjjjjj", "medical", "megatron", "1369", "hawaiian", "gymnastic", "golfer1", "gunners", "7779311", "515151", "famous", "glass", "screen", "rudy", "royal", "sanfran", "drake", "optimus", "panther1", "love1", "mail", "maggie1", "pudding", "venice", "aaron1", "delphi", "niceass", "bounce", "busted", "house1", "killer1", "miracle", "momo", "musashi", "jammin", "2003", "234567", "wp2003wp", "submit", "silence", "sssssss", "state", "spikes", "sleeper", "passwort", "toledo", "kume", "media", "meme", "medusa", "mantis", "remote", "reading", "reebok", "1017", "artemis", "hampton", "harry1", "cafc91", "fettish", "friendly", "oceans", "oooooooo", "mango", "ppppp", "trainer", "troy", "uuuu", "909090", "cross", "death1", "news", "bullfrog", "hokies", "holyshit", "eeeeeee", "mitch", "jasmine1", "&", "&", "sergeant", "spinner", "leon", "jockey", "records", "right", "babyblue", "hans", "gooner", "474747", "cheeks", "cars", "candice", "fight", "glow", "pass1234", "parola", "okokok", "pablo", "magical", "major", "ramsey", "poseidon", "989898", "confused", "circle", "crusher", "cubswin", "nnnn", "hollywood", "erin", "kotaku", "milo", "mittens", "whatsup", "vvvvv", "iomega", "insertions", "bengals", "bermuda", "biit", "yellow1", "012345", "spike1", "south", "sowhat", "pitures", "peacock", "pecker", "theend", "juliette", "jimmie", "romance", "augusta", "hayabusa", "hawkeyes", "castro", "florian", "geoffrey", "dolly", "lulu", "qaz123", "usarmy", "twinkle", "cloud", "chuckles", "cold", "hounddog", "hover", "hothot", "europa", "ernie", "kenshin", "kojak", "mikey1", "water1", "196969", "because", "wraith", "zebra", "wwwww", "33333", "simon1", "spider1", "snuffy", "philippe", "thunderb", "teddy1", "lesley", "marino13", "maria1", "redline", "renault", "aloha", "antoine", "handyman", "cerberus", "gamecock", "gobucks", "freesex", "duffman", "ooooo", "papa", "nuggets", "magician", "longbow", "preacher", "porno1", "county", "chrysler", "contains", "dalejr", "darius", "darlene", "dell", "navy", "buffy1", "hedgehog", "hoosiers", "honey1", "hott", "heyhey", "europe", "dutchess", "everest", "wareagle", "ihateyou", "sunflowe", "3434", "senators", "shag", "spoon", "sonoma", "stalker", "poochie", "terminal", "terefon", "laurence", "maradona", "maryann", "marty", "roman", "1007", "142536", "alibaba", "america1", "bartman", "astro", "goth", "century", "chicken1", "cheater", "four", "ghost1", "passpass", "oral", "r2d2c3po", "civic", "cicero", "myxworld", "kkkkk", "missouri", "wishbone", "infiniti", "jameson", "1a2b3c", "1qwerty", "wonderboy", "skip", "shojou", "stanford", "sparky1", "smeghead", "poiuy", "titanium", "torres", "lantern", "jelly", "jeanne", "meier", "1213", "bayern", "basset", "gsxr750", "cattle", "charlene", "fishing1", "fullmoon", "gilles", "dima", "obelix", "popo", "prissy", "ramrod", "unique", "absolute", "bummer", "hotone", "dynasty", "entry", "konyor", "missy1", "moses", "282828", "yeah", "xyz123", "stop", "426hemi", "404040", "seinfeld", "simmons", "pingpong", "lazarus", "matthews", "marine1", "manning", "recovery", "12345a", "beamer", "babyface", "greece", "gustav", "7007", "charity", "camilla", "ccccccc", "faggot", "foxy", "frozen", "gladiato", "duckie", "dogfood", "paranoid", "packers1", "longjohn", "radical", "tuna", "clarinet", "claudio", "circus", "danny1", "novell", "nights", "bonbon", "kashmir", "kiki", "mortimer", "modelsne", "moondog", "monaco", "vladimir", "insert", "1953", "zxc123", "supreme", "3131", "sexxx", "selena", "softail", "poipoi", "pong", "together", "mars", "martin1", "rogue", "alone", "avalanch", "audia4", "55bgates", "cccccccc", "chick", "came11", "figaro", "geneva", "dogboy", "dnsadm", "dipshit", "paradigm", "othello", "operator", "officer", "malone", "post", "rafael", "valencia", "tripod", "choice", "chopin", "coucou", "coach", "cocksuck", "common", "creature", "borussia", "book", "browning", "heritage", "hiziad", "homerj", "eight", "earth", "millions", "mullet", "whisky", "jacques", "store", "4242", "speedo", "starcraf", "skylar", "spaceman", "piggy", "pierce", "tiger2", "legos", "lala", "jezebel", "judy", "joker1", "mazda", "barton", "baker", "727272", "chester1", "fishman", "food", "rrrrrrrr", "sandwich", "dundee", "lumber", "magazine", "radar", "ppppppp", "tranny", "aaliyah", "admiral", "comics", "cleo", "delight", "buttfuck", "homeboy", "eternal", "kilroy", "kellie", "khan", "violin", "wingman", "walmart", "bigblue", "blaze", "beemer", "beowulf", "bigfish", "yyyyyyy", "woodie", "yeahbaby", "0123456", "tbone", "style", "syzygy", "starter", "lemon", "linda1", "merlot", "mexican", "11235813", "anita", "banner", "bangbang", "badman", "barfly", "grease", "carla", "charles1", "ffffffff", "screw", "doberman", "diane", "dogshit", "overkill", "counter", "coolguy", "claymore", "demons", "demo", "nomore", "normal", "brewster", "hhhhhhh", "hondas", "iamgod", "enterme", "everett", "electron", "eastside", "kayla", "minimoni", "mybaby", "wildbill", "wildcard", "ipswich", "200000", "bearcat", "zigzag", "yyyyyyyy", "xander", "sweetnes", "369369", "skyler", "skywalker", "pigeon", "peyton", "tipper", "lilly", "asdf123", "alphabet", "asdzxc", "babybaby", "banane", "barnes", "guyver", "graphics", "grand", "chinook", "florida1", "flexible", "fuckinside", "otis", "ursitesux", "tototo", "trust", "tower", "adam12", "christma", "corey", "chrome", "buddie", "bombers", "bunker", "hippie", "keegan", "misfits", "vickie", "292929", "woofer", "wwwwwwww", "stubby", "sheep", "secrets", "sparta", "stang", "spud", "sporty", "pinball", "jorge", "just4fun", "johanna", "maxxxx", "rebecca1", "gunther", "fatima", "fffffff", "freeway", "garion", "score", "rrrrr", "sancho", "outback", "maggot", "puddin", "trial", "adrienne", "987456", "colton", "clyde", "brain", "brains", "hoops", "eleanor", "dwayne", "kirby", "mydick", "villa", "19691969", "bigcat", "becker", "shiner", "silverad", "spanish", "templar", "lamer", "juicy", "marsha", "mike1", "maximum", "rhiannon", "real", "1223", "10101010", "arrows", "andres", "alucard", "baldwin", "baron", "avenue", "ashleigh", "haggis", "channel", "cheech", "safari", "ross", "dog123", "orion1", "paloma", "qwerasdf", "presiden", "vegitto", "trees", "969696", "adonis", "colonel", "cookie1", "newyork1", "brigitte", "buddyboy", "hellos", "heineken", "dwight", "eraser", "kerstin", "motion", "moritz", "millwall", "visual", "jaybird", "1983", "beautifu", "bitter", "yvette", "zodiac", "steven1", "sinister", "slammer", "smashing", "slick1", "sponge", "teddybea", "theater", "this", "ticklish", "lipstick", "jonny", "massage", "mann", "reynolds", "ring", "1211", "amazing", "aptiva", "applepie", "bailey1", "guitar1", "chanel", "canyon", "gagged", "fuckme1", "rough", "digital1", "dinosaur", "punk", "98765", "90210", "clowns", "cubs", "daniels", "deejay", "nigga", "naruto", "boxcar", "icehouse", "hotties", "electra", "kent", "widget", "india", "insanity", "1986", "2004", "best", "bluefish", "bingo1", "*****", "stratus", "strength", "sultan", "storm1", "44444", "4200", "sentnece", "season", "sexyboy", "sigma", "smokie", "spam", "point", "pippo", "ticket", "temppass", "joel", "manman", "medicine", "1022", "anton", "almond", "bacchus", "aztnm", "axio", "awful", "bamboo", "hakr", "gregor", "hahahaha", "5678", "casanova", "caprice", "camero1", "fellow", "fountain", "dupont", "dolphin1", "dianne", "paddle", "magnet", "qwert1", "pyon", "porsche1", "tripper", "vampires", "coming", "noway", "burrito", "bozo", "highheel", "hughes", "hookem", "eddie1", "ellie", "entropy", "kkkkkkkk", "kkkkkkk", "illinois", "jacobs", "1945", "1951", "24680", "21212121", "100000", "stonecold", "taco", "subzero", "sharp", "sexxxy", "skolko", "shanna", "skyhawk", "spurs1", "sputnik", "piazza", "testpass", "letter", "lane", "kurt", "jiggaman", "matilda", "1224", "harvard", "hannah1", "525252", "4ever", "carbon", "chef", "federico", "ghosts", "gina", "scorpio1", "rt6ytere", "madison1", "loki", "raquel", "promise", "coolness", "christina", "coldbeer", "citadel", "brittney", "highway", "evil", "monarch", "morgan1", "washingt", "1997", "bella1", "berry", "yaya", "yolanda", "superb", "taxman", "studman", "stephanie", "3636", "sherri", "sheriff", "shepherd", "poland", "pizzas", "tiffany1", "toilet", "latina", "lassie", "larry1", "joseph1", "mephisto", "meagan", "marian", "reptile", "rico", "razor", "1013", "barron", "hammer1", "gypsy", "grande", "carroll", "camper", "chippy", "cat123", "call", "chimera", "fiesta", "glock", "glenn", "domain", "dieter", "dragonba", "onetwo", "nygiants", "odessa", "password2", "louie", "quartz", "prowler", "prophet", "towers", "ultra", "cocker", "corleone", "dakota1", "cumm", "nnnnnnn", "natalia", "boxers", "hugo", "heynow", "hollow", "iceberg", "elvira", "kittykat", "kate", "kitchen", "wasabi", "vikings1", "impact", "beerman", "string", "sleep", "splinter", "snoopy1", "pipeline", "pocket", "legs", "maple", "mickey1", "manuela", "mermaid", "micro", "meowmeow", "redbird", "alisha", "baura", "battery", "grass", "chevys", "chestnut", "caravan", "carina", "charmed", "fraser", "frogman", "diving", "dogger", "draven", "drifter", "oatmeal", "paris1", "longdong", "quant4307s", "rachel1", "vegitta", "cole", "cobras", "corsair", "dadada", "noelle", "mylife", "nine", "bowwow", "body", "hotrats", "eastwood", "moonligh", "modena", "wave", "illusion", "iiiiiii", "jayhawks", "birgit", "zone", "sutton", "susana", "swingers", "shocker", "shrimp", "sexgod", "squall", "stefanie", "squeeze", "soul", "patrice", "poiu", "players", "tigers1", "toejam", "tickler", "line", "julie1", "jimbo1", "jefferso", "juanita", "michael2", "rodeo", "robot", "1023", "annie1", "bball", "guess", "happy2", "charter", "farm", "flasher", "falcon1", "fiction", "fastball", "gadget", "scrabble", "diaper", "dirtbike", "dinner", "oliver1", "partner", "paco", "lucille", "macman", "poopy", "popper", "postman", "ttttttt", "ursula", "acura", "cowboy1", "conan", "daewoo", "cyrus", "customer", "nation", "nemrac58", "nnnnn", "nextel", "bolton", "bobdylan", "hopeless", "eureka", "extra", "kimmie", "kcj9wx5n", "killbill", "musica", "volkswag", "wage", "windmill", "wert", "vintage", "iloveyou1", "itsme", "bessie", "zippo", "311311", "starligh", "smokey1", "spot", "snappy", "soulmate", "plasma", "thelma", "tonight", "krusty", "just4me", "mcdonald", "marius", "rochelle", "rebel1", "1123", "alfredo", "aubrey", "audi", "chantal", "fick", "goaway", "roses", "sales", "rusty2", "dirt", "dogbone", "doofus", "ooooooo", "oblivion", "mankind", "luck", "mahler", "lllllll", "pumper", "puck", "pulsar", "valkyrie", "tupac", "compass", "concorde", "costello", "cougars", "delaware", "niceguy", "nocturne", "bob123", "boating", "bronze", "hopkins", "herewego", "hewlett", "houhou", "hubert", "earnhard", "eeeeeeee", "keller", "mingus", "mobydick", "venture", "verizon", "imation", "1950", "1948", "1949", "223344", "bigbig", "blossom", "zack", "wowwow", "sissy", "skinner", "spiker", "square", "snooker", "sluggo", "player1", "junk", "jeannie", "jsbach", "jumbo", "jewel", "medic", "robins", "reddevil", "reckless", "123456a", "1125", "1031", "beacon", "astra", "gumby", "hammond", "hassan", "757575", "585858", "chillin", "fuck1", "sander", "lowell", "radiohea", "upyours", "trek", "courage", "coolcool", "classics", "choochoo", "darryl", "nikki1", "nitro", "bugs", "boytoy", "ellen", "excite", "kirsty", "kane", "wingnut", "wireless", "icu812", "1master", "beatle", "bigblock", "blanca", "wolfen", "summer99", "sugar1", "tartar", "sexysexy", "senna", "sexman", "sick", "someone", "soprano", "pippin", "platypus", "pixies", "telephon", "land", "laura1", "laurent", "rimmer", "road", "report", "1020", "12qwaszx", "arturo", "around", "hamish", "halifax", "fishhead", "forum", "dododo", "doit", "outside", "paramedi", "lonesome", "mandy1", "twist", "uuuuu", "uranus", "ttttt", "butcher", "bruce1", "helper", "hopeful", "eduard", "dusty1", "kathy1", "katherin", "moonbeam", "muscles", "monster1", "monkeybo", "morton", "windsurf", "vvvvvvv", "vivid", "install", "1947", "187187", "1941", "1952", "tatiana", "susan1", "31415926", "sinned", "sexxy", "senator", "sebastian", "shadows", "smoothie", "snowflak", "playstat", "playa", "playboy1", "toaster", "jerry1", "marie1", "mason1", "merlin1", "roger1", "roadster", "112358", "1121", "andrea1", "bacardi", "auto", "hardware", "hardy", "789789", "5555555", "captain1", "flores", "fergus", "sascha", "rrrrrrr", "dome", "onion", "nutter", "lololo", "qqqqqqq", "quick", "undertak", "uuuuuuuu", "uuuuuuu", "criminal", "cobain", "cindy1", "coors", "dani", "descent", "nimbus", "nomad", "nanook", "norwich", "bomb", "bombay", "broker", "hookup", "kiwi", "winners", "jackpot", "1a2b3c4d", "1776", "beardog", "bighead", "blast", "bird33", "0987", "stress", "shot", "spooge", "pelican", "peepee", "perry", "pointer", "titan", "thedoors", "jeremy1", "annabell", "altima", "baba", "hallie", "hate", "hardone", "5454", "candace", "catwoman", "flip", "faithful", "finance", "farmboy", "farscape", "genesis1", "salomon", "destroy", "papers", "option", "page", "loser1", "lopez", "r2d2", "pumpkins", "training", "chriss", "cumcum", "ninjas", "ninja1", "hung", "erika", "eduardo", "killers", "miller1", "islander", "jamesbond", "intel", "jarvis", "19841984", "2626", "bizzare", "blue12", "biker", "yoyoma", "sushi", "styles", "shitface", "series", "shanti", "spanker", "steffi", "smart", "sphinx", "please1", "paulie", "pistons", "tiburon", "limited", "maxwell1", "mdogg", "rockies", "armstron", "alexia", "arlene", "alejandr", "arctic", "banger", "audio", "asimov", "augustus", "grandpa", "753951", "4you", "chilly", "care1839", "chapman", "flyfish", "fantasia", "freefall", "santa", "sandrine", "oreo", "ohshit", "macbeth", "madcat", "loveya", "mallory", "rage", "quentin", "qwerqwer", "project", "ramirez", "colnago", "citizen", "chocha", "cobalt", "crystal1", "dabears", "nevets", "nineinch", "broncos1", "helene", "huge", "edgar", "epsilon", "easter", "kestrel", "moron", "virgil", "winston1", "warrior1", "iiiiiiii", "iloveyou2", "1616", "beat", "bettina", "woowoo", "zander", "straight", "shower", "sloppy", "specialk", "tinkerbe", "jellybea", "reader", "romero", "redsox1", "ride", "1215", "1112", "annika", "arcadia", "answer", "baggio", "base", "guido", "555666", "carmel", "cayman", "cbr900rr", "chips", "gabriell", "gertrude", "glennwei", "roxy", "sausages", "disco", "pass1", "luna", "lovebug", "macmac", "queenie", "puffin", "vanguard", "trip", "trinitro", "airwolf", "abbott", "aaa111", "cocaine", "cisco", "cottage", "dayton", "deadly", "datsun", "bricks", "bumper", "eldorado", "kidrock", "wizard1", "whiskers", "wind", "wildwood", "istheman", "interest", "italy", "25802580", "benoit", "bigones", "woodland", "wolfpac", "strawber", "suicide", "3030", "sheba1", "sixpack", "peace1", "physics", "pearson", "tigger2", "toad", "megan1", "meow", "ringo", "roll", "amsterdam", "717171", "686868", "5424", "catherine", "canuck", "football1", "footjob", "fulham", "seagull", "orgy", "lobo", "mancity", "truth", "trace", "vancouve", "vauxhall", "acidburn", "derf", "myspace1", "boozer", "buttercu", "howell", "hola", "easton", "minemine", "munch", "jared", "1dragon", "biology", "bestbuy", "bigpoppa", "blackout", "blowfish", "bmw325", "bigbob", "stream", "talisman", "tazz", "sundevil", "3333333", "skate", "shutup", "shanghai", "shop", "spencer1", "slowhand", "polish", "pinky1", "tootie", "thecrow", "leroy", "jonathon", "jubilee", "jingle", "martine", "matrix1", "manowar", "michaels", "messiah", "mclaren", "resident", "reilly", "redbaron", "rollins", "romans", "return", "rivera", "andromed", "athlon", "beach1", "badgers", "guitars", "harald", "harddick", "gotribe", "6996", "7grout", "5wr2i7h8", "635241", "chase1", "carver", "charlotte", "fallout", "fiddle", "fredrick", "fenris", "francesc", "fortuna", "ferguson", "fairlane", "felipe", "felix1", "forward", "gasman", "frost", "fucks", "sahara", "sassy1", "dogpound", "dogbert", "divx1", "manila", "loretta", "priest", "pornporn", "quasar", "venom", "987987", "access1", "clippers", "daylight", "decker", "daman", "data", "dentist", "crusty", "nathan1", "nnnnnnnn", "bruno1", "bucks", "brodie", "budapest", "kittens", "kerouac", "mother1", "waldo1", "wedding", "whistler", "whatwhat", "wanderer", "idontkno", "1942", "1946", "bigdawg", "bigpimp", "zaqwsx", "414141", "3000gt", "434343", "shoes", "serpent", "starr", "smurf", "pasword", "tommie", "thisisit", "lake", "john1", "robotics", "redeye", "rebelz", "1011", "alatam", "asses", "asians", "bama", "banzai", "harvest", "gonzalez", "hair", "hanson", "575757", "5329", "cascade", "chinese", "fatty", "fender1", "flower2", "funky", "sambo", "drummer1", "dogcat", "dottie", "oedipus", "osama", "macleod", "prozac", "private1", "rampage", "punch", "presley", "concord", "cook", "cinema", "cornwall", "cleaner", "christopher", "ciccio", "corinne", "clutch", "corvet07", "daemon", "bruiser", "boiler", "hjkl", "eyes", "egghead", "expert", "ethan", "kasper", "mordor", "wasted", "jamess", "iverson3", "bluesman", "zouzou", "090909", "1002", "switch", "stone1", "4040", "sisters", "sexo", "shawna", "smith1", "sperma", "sneaky", "polska", "thewho", "terminat", "krypton", "lawson", "library", "lekker", "jules", "johnson1", "johann", "justus", "rockie", "romano", "aspire", "bastards", "goodie", "cheese1", "fenway", "fishon", "fishin", "fuckoff1", "girls1", "sawyer", "dolores", "desmond", "duane", "doomsday", "pornking", "ramones", "rabbits", "transit", "aaaaa1", "clock", "delilah", "noel", "boyz", "bookworm", "bongo", "bunnies", "brady", "buceta", "highbury", "henry1", "heels", "eastern", "krissy", "mischief", "mopar", "ministry", "vienna", "weston", "wildone", "vodka", "jayson", "bigbooty", "beavis1", "betsy", "xxxxxx1", "yogibear", "000001", "0815", "zulu", "420000", "september", "sigmar", "sprout", "stalin", "peggy", "patch", "lkjhgfds", "lagnaf", "rolex", "redfox", "referee", "123123123", "1231", "angus1", "ariana", "ballin", "attila", "hall", "greedy", "grunt", "747474", "carpedie", "cecile", "caramel", "foxylady", "field", "gatorade", "gidget", "futbol", "frosch", "saiyan", "schmidt", "drums", "donner", "doggy1", "drum", "doudou", "pack", "pain", "nutmeg", "quebec", "valdepen", "trash", "triple", "tosser", "tuscl", "track", "comfort", "choke", "comein", "cola", "deputy", "deadpool", "bremen", "borders", "bronson", "break", "hotass", "hotmail1", "eskimo", "eggman", "koko", "kieran", "katrin", "kordell1", "komodo", "mone", "munich", "vvvvvvvv", "winger", "jaeger", "ivan", "jackson5", "2222222", "bergkamp", "bennie", "bigben", "zanzibar", "worm", "xxx123", "sunny1", "373737", "services", "sheridan", "slater", "slayer1", "snoop", "stacie", "peachy", "thecure", "times", "little1", "jennaj", "marquis", "middle", "rasta69", "1114", "aries", "havana", "gratis", "calgary", "checkers", "flanker", "salope", "dirty1", "draco", "dogface", "luv2epus", "rainbow6", "qwerty123", "umpire", "turnip", "vbnm", "tucson", "troll", "aileen", "codered", "commande", "damon", "nana", "neon", "nico", "nightwin", "neil", "boomer1", "bushido", "hotmail0", "horace", "enternow", "kaitlyn", "keepout", "karen1", "mindy", "mnbv", "viewsoni", "volcom", "wizards", "wine", "1995", "berkeley", "bite", "zach", "woodstoc", "tarpon", "shinobi", "starstar", "phat", "patience", "patrol", "toolbox", "julien", "johnny1", "joebob", "marble", "riders", "reflex", "120676", "1235", "angelus", "anthrax", "atlas", "hawks", "grandam", "harlem", "hawaii50", "gorgeous", "655321", "cabron", "challeng", "callisto", "firewall", "firefire", "fischer", "flyer", "flower1", "factory", "federal", "gambler", "frodo1", "funk", "sand", "sam123", "scania", "dingo", "papito", "passmast", "olive", "palermo", "ou8123", "lock", "ranch", "pride", "randy1", "twiggy", "travis1", "transfer", "treetop", "addict", "admin1", "963852", "aceace", "clarissa", "cliff", "cirrus", "clifton", "colin", "bobdole", "bonner", "bogus", "bonjovi", "bootsy", "boater", "elway7", "edison", "kelvin", "kenny1", "moonshin", "montag", "moreno", "wayne1", "white1", "jazzy", "jakejake", "1994", "1991", "2828", "blunt", "bluejays", "beau", "belmont", "worthy", "systems", "sensei", "southpark", "stan", "peeper", "pharao", "pigpen", "tomahawk", "teensex", "leedsutd", "larkin", "jermaine", "jeepster", "jimjim", "josephin", "melons", "marlon", "matthias", "marriage", "robocop", "1003", "1027", "antelope", "azsxdc", "gordo", "hazard", "granada", "8989", "7894", "ceasar", "cabernet", "cheshire", "california", "chelle", "candy1", "fergie", "fanny", "fidelio", "giorgio", "fuckhead", "ruth", "sanford", "diego", "dominion", "devon", "panic", "longer", "mackie", "qawsed", "trucking", "twelve", "chloe1", "coral", "daddyo", "nostromo", "boyboy", "booster", "bucky", "honolulu", "esquire", "dynamite", "motor", "mollydog", "wilder", "windows1", "waffle", "wallet", "warning", "virus", "washburn", "wealth", "vincent1", "jabber", "jaguars", "javelin", "irishman", "idefix", "bigdog1", "blue42", "blanked", "blue32", "biteme1", "bearcats", "blaine", "yessir", "sylveste", "team", "stephan", "sunfire", "tbird", "stryker", "3ip76k2", "sevens", "sheldon", "pilgrim", "tenchi", "titman", "leeds", "lithium", "lander", "linkin", "landon", "marijuan", "mariner", "markie", "midnite", "reddwarf", "1129", "123asd", "12312312", "allstar", "albany", "asdf12", "antonia", "aspen", "hardball", "goldfing", "7734", "49ers", "carlo", "chambers", "cable", "carnage", "callum", "carlos1", "fitter", "fandango", "festival", "flame", "gofast", "gamma", "fucmy69", "scrapper", "dogwood", "django", "magneto", "loose", "premium", "addison", "9999999", "abc1234", "cromwell", "newyear", "nichole", "bookie", "burns", "bounty", "brown1", "bologna", "earl", "entrance", "elway", "killjoy", "kerry", "keenan", "kick", "klondike", "mini", "mouser", "mohammed", "wayer", "impreza", "irene", "insomnia", "24682468", "2580", "24242424", "billbill", "bellaco", "blessing", "blues1", "bedford", "blanco", "blunts", "stinks", "teaser", "streets", "sf49ers", "shovel", "solitude", "spikey", "sonia", "pimpdadd", "timeout", "toffee", "lefty", "johndoe", "johndeer", "mega", "manolo", "mentor", "margie", "ratman", "ridge", "record", "rhodes", "robin1", "1124", "1210", "1028", "1226", "another", "babylove", "barbados", "harbor", "gramma", "646464", "carpente", "chaos1", "fishbone", "fireblad", "glasgow", "frogs", "scissors", "screamer", "salem", "scuba1", "ducks", "driven", "doggies", "dicky", "donovan", "obsidian", "rams", "progress", "tottenham", "aikman", "comanche", "corolla", "clarke", "conway", "cumslut", "cyborg", "dancing", "boston1", "bong", "houdini", "helmut", "elvisp", "edge", "keksa12", "misha", "monty1", "monsters", "wetter", "watford", "wiseguy", "veronika", "visitor", "janelle", "1989", "1987", "20202020", "biatch", "beezer", "bigguns", "blueball", "bitchy", "wyoming", "yankees2", "wrestler", "stupid1", "sealteam", "sidekick", "simple1", "smackdow", "sporting", "spiral", "smeller", "sperm", "plato", "tophat", "test2", "theatre", "thick", "toomuch", "leigh", "jello", "jewish", "junkie", "maxim", "maxime", "meadow", "remingto", "roofer", "124038", "1018", "1269", "1227", "123457", "arkansas", "alberta", "aramis", "andersen", "beaker", "barcelona", "baltimor", "googoo", "goochi", "852456", "4711", "catcher", "carman", "champ1", "chess", "fortress", "fishfish", "firefigh", "geezer", "rsalinas", "samuel1", "saigon", "scooby1", "doors", "dick1", "devin", "doom", "dirk", "doris", "dontknow", "load", "magpies", "manfred", "raleigh", "vader1", "universa", "tulips", "defense", "mygirl", "burn", "bowtie", "bowman", "holycow", "heinrich", "honeys", "enforcer", "katherine", "minerva", "wheeler", "witch", "waterboy", "jaime", "irving", "1992", "23skidoo", "bimbo", "blue11", "birddog", "woodman", "womble", "zildjian", "030303", "stinker", "stoppedby", "sexybabe", "speakers", "slugger", "spotty", "smoke1", "polopolo", "perfect1", "things", "torpedo", "tender", "thrasher", "lakeside", "lilith", "jimmys", "jerk", "junior1", "marsh", "masamune", "rice", "root", "1214", "april1", "allgood", "bambi", "grinch", "767676", "5252", "cherries", "chipmunk", "cezer121", "carnival", "capecod", "finder", "flint", "fearless", "goats", "funstuff", "gideon", "savior", "seabee", "sandro", "schalke", "salasana", "disney1", "duckman", "options", "pancake", "pantera1", "malice", "lookin", "love123", "lloyd", "qwert123", "puppet", "prayers", "union", "tracer", "crap", "creation", "cwoui", "nascar24", "hookers", "hollie", "hewitt", "estrella", "erection", "ernesto", "ericsson", "edthom", "kaylee", "kokoko", "kokomo", "kimball", "morales", "mooses", "monk", "walton", "weekend", "inter", "internal", "1michael", "1993", "19781978", "25252525", "worker", "summers", "surgery", "shibby", "shamus", "skibum", "sheepdog", "sex69", "spliff", "slipper", "spoons", "spanner", "snowbird", "slow", "toriamos", "temp123", "tennesse", "lakers1", "jomama", "julio", "mazdarx7", "rosario", "recon", "riddle", "room", "revolver", "1025", "1101", "barney1", "babycake", "baylor", "gotham", "gravity", "hallowee", "hancock", "616161", "515000", "caca", "cannabis", "castor", "chilli", "fdsa", "getout", "fuck69", "gators1", "sail", "sable", "rumble", "dolemite", "dork", "dickens", "duffer", "dodgers1", "painting", "onions", "logger", "lorena", "lookout", "magic32", "port", "poon", "prime", "twat", "coventry", "citroen", "christmas", "civicsi", "cocksucker", "coochie", "compaq1", "nancy1", "buzzer", "boulder", "butkus", "bungle", "hogtied", "honor", "hero", "hotgirls", "hilary", "heidi1", "eggplant", "mustang6", "mortal", "monkey12", "wapapapa", "wendy1", "volleyba", "vibrate", "vicky", "bledsoe", "blink", "birthday4", "woof", "xxxxx1", "talk", "stephen1", "suburban", "stock", "tabatha", "sheeba", "start1", "soccer10", "something", "starcraft", "soccer12", "peanut1", "plastics", "penthous", "peterbil", "tools", "tetsuo", "torino", "tennis1", "termite", "ladder", "last", "lemmein", "lakewood", "jughead", "melrose", "megane", "reginald", "redone", "request", "angela1", "alive", "alissa", "goodgirl", "gonzo1", "golden1", "gotyoass", "656565", "626262", "capricor", "chains", "calvin1", "foolish", "fallon", "getmoney", "godfather", "gabber", "gilligan", "runaway", "salami", "dummy", "dungeon", "dudedude", "dumb", "dope", "opus", "paragon", "oxygen", "panhead", "pasadena", "opendoor", "odyssey", "magellan", "lottie", "printing", "pressure", "prince1", "trustme", "christa", "court", "davies", "neville", "nono", "bread", "buffet", "hound", "kajak", "killkill", "mona", "moto", "mildred", "winner1", "vixen", "whiteboy", "versace", "winona", "voyager1", "instant", "indy", "jackjack", "bigal", "beech", "biggun", "blake1", "blue99", "big1", "woods", "synergy", "success1", "336699", "sixty9", "shark1", "skin", "simba1", "sharpe", "sebring", "spongebo", "spunk", "springs", "sliver", "phialpha", "password9", "pizza1", "plane", "perkins", "pookey", "tickling", "lexingky", "lawman", "joe123", "jolly", "mike123", "romeo1", "redheads", "reserve", "apple123", "alanis", "ariane", "antony", "backbone", "aviation", "band", "hand", "green123", "haley", "carlitos", "byebye", "cartman1", "camden", "chewy", "camaross", "favorite6", "forumwp", "franks", "ginscoot", "fruity", "sabrina1", "devil666", "doughnut", "pantie", "oldone", "paintball", "lumina", "rainbow1", "prosper", "total", "true", "umbrella", "ajax", "951753", "achtung", "abc12345", "compact", "color", "corn", "complete", "christi", "closer", "corndog", "deerhunt", "darklord", "dank", "nimitz", "brandy1", "bowl", "breanna", "holidays", "hetfield", "holein1", "hillbill", "hugetits", "east", "evolutio", "kenobi", "whiplash", "waldo", "wg8e3wjf", "wing", "istanbul", "invis", "1996", "benton", "bigjohn", "bluebell", "beef", "beater", "benji", "bluejay", "xyzzy", "wrestling", "storage", "superior", "suckdick", "taichi", "stellar", "stephane", "shaker", "skirt", "seymour", "semper", "splurge", "squeak", "pearls", "playball", "pitch", "phyllis", "pooky", "piss", "tomas", "titfuck", "joemama", "johnny5", "marcello", "marjorie", "married", "maxi", "rhubarb", "rockwell", "ratboy", "reload", "rooney", "redd", "1029", "1030", "1220", "anchor", "bbking", "baritone", "gryphon", "gone", "57chevy", "494949", "celeron", "fishy", "gladiator", "fucker1", "roswell", "dougie", "downer", "dicker", "diva", "domingo", "donjuan", "nympho", "omar", "praise", "racers", "trick", "trauma", "truck1", "trample", "acer", "corwin", "cricket1", "clemente", "climax", "denmark", "cuervo", "notnow", "nittany", "neutron", "native", "bosco1", "buffa", "breaker", "hello2", "hydro", "estelle", "exchange", "explore", "kisskiss", "kittys", "kristian", "montecar", "modem", "mississi", "mooney", "weiner", "washington", "20012001", "bigdick1", "bibi", "benfica", "yahoo1", "striper", "tabasco", "supra", "383838", "456654", "seneca", "serious", "shuttle", "socks", "stanton", "penguin1", "pathfind", "testibil", "thethe", "listen", "lightning", "lighting", "jeter2", "marma", "mark1", "metoo", "republic", "rollin", "redleg", "redbone", "redskin", "rocco", "1245", "armand", "anthony7", "altoids", "andrews", "barley", "away", "asswipe", "bauhaus", "bbbbbb1", "gohome", "harrier", "golfpro", "goldeney", "818181", "6666666", "5000", "5rxypn", "cameron1", "calling", "checker", "calibra", "fields", "freefree", "faith1", "fist", "fdm7ed", "finally", "giraffe", "glasses", "giggles", "fringe", "gate", "georgie", "scamper", "rrpass1", "screwyou", "duffy", "deville", "dimples", "pacino", "ontario", "passthie", "oberon", "quest1", "postov1000", "puppydog", "puffer", "raining", "protect", "qwerty7", "trey", "tribe", "ulysses", "tribal", "adam25", "a1234567", "compton", "collie", "cleopatr", "contract", "davide", "norris", "namaste", "myrtle", "buffalo1", "bonovox", "buckley", "bukkake", "burning", "burner", "bordeaux", "burly", "hun999", "emilie", "elmo", "enters", "enrique", "keisha", "mohawk", "willard", "vgirl", "whale", "vince", "jayden", "jarrett", "1812", "1943", "222333", "bigjim", "bigd", "zoom", "wordup", "ziggy1", "yahooo", "workout", "young1", "written", "xmas", "zzzzzz1", "surfer1", "strife", "sunlight", "tasha1", "skunk", "shauna", "seth", "soft", "sprinter", "peaches1", "planes", "pinetree", "plum", "pimping", "theforce", "thedon", "toocool", "leeann", "laddie", "list", "lkjh", "lara", "joke", "jupiter1", "mckenzie", "matty", "rene", "redrose", "1200", "102938", "annmarie", "alexa", "antares", "austin31", "ground", "goose1", "737373", "78945612", "789987", "6464", "calimero", "caster", "casper1", "cement", "chevrolet", "chessie", "caddy", "chill", "child", "canucks", "feeling", "favorite", "fellatio", "f00tball", "francine", "gateway2", "gigi", "gamecube", "giovanna", "rugby1", "scheisse", "dshade", "dudes", "dixie1", "owen", "offshore", "olympia", "lucas1", "macaroni", "manga", "pringles", "puff", "tribble", "trouble1", "ussy", "core", "clint", "coolhand", "colonial", "colt", "debra", "darthvad", "dealer", "cygnusx1", "natalie1", "newark", "husband", "hiking", "errors", "eighteen", "elcamino", "emmett", "emilia", "koolaid", "knight1", "murphy1", "volcano", "idunno", "2005", "2233", "block", "benito", "blueberr", "biguns", "yamahar1", "zapper", "zorro1", "0911", "3006", "sixsix", "shopper", "siobhan", "sextoy", "stafford", "snowboard", "speedway", "sounds", "pokey", "peabody", "playboy2", "titi", "think", "toast", "toonarmy", "lister", "lambda", "joecool", "jonas", "joyce", "juniper", "mercer", "max123", "manny", "massimo", "mariposa", "met2002", "reggae", "ricky1", "1236", "1228", "1016", "all4one", "arianna", "baberuth", "asgard", "gonzales", "484848", "5683", "6669", "catnip", "chiquita", "charisma", "capslock", "cashmone", "chat", "figure", "galant", "frenchy", "gizmodo1", "girlies", "gabby", "garner", "screwy", "doubled", "divers", "dte4uw", "done", "dragonfl", "maker", "locks", "rachelle", "treble", "twinkie", "trailer", "tropical", "acid", "crescent", "cooking", "cococo", "cory", "dabomb", "daffy", "dandfa", "cyrano", "nathanie", "briggs", "boners", "helium", "horton", "hoffman", "hellas", "espresso", "emperor", "killa", "kikimora", "wanda", "w4g8at", "verona", "ilikeit", "iforget", "1944", "20002000", "birthday1", "beatles1", "blue1", "bigdicks", "beethove", "blacklab", "blazers", "benny1", "woodwork", "0069", "0101", "taffy", "susie", "survivor", "swim", "stokes", "4567", "shodan", "spoiled", "steffen", "pissed", "pavlov", "pinnacle", "place", "petunia", "terrell", "thirty", "toni", "tito", "teenie", "lemonade", "lily", "lillie", "lalakers", "lebowski", "lalalala", "ladyboy", "jeeper", "joyjoy", "mercury1", "mantle", "mannn", "rocknrol", "riversid", "reeves", "123aaa", "11112222", "121314", "1021", "1004", "1120", "allen1", "ambers", "amstel", "ambrose", "alice1", "alleycat", "allegro", "ambrosia", "alley", "australia", "hatred", "gspot", "graves", "goodsex", "hattrick", "harpoon", "878787", "8inches", "4wwvte", "cassandr", "charlie123", "case", "chavez", "fighting", "gabriela", "gatsby", "fudge", "gerry", "generic", "gareth", "fuckme2", "samm", "sage", "seadog", "satchmo", "scxakv", "santafe", "dipper", "dingle", "dizzy", "outoutout", "madmad", "london1", "qbg26i", "pussy123", "randolph", "vaughn", "tzpvaw", "vamp", "comedy", "comp", "cowgirl", "coldplay", "dawgs", "delaney", "nt5d27", "novifarm", "needles", "notredam", "newness", "mykids", "bryan1", "bouncer", "hihihi", "honeybee", "iceman1", "herring", "horn", "hook", "hotlips", "dynamo", "klaus", "kittie", "kappa", "kahlua", "muffy", "mizzou", "mohamed", "musical", "wannabe", "wednesda", "whatup", "weller", "waterfal", "willy1", "invest", "blanche", "bear1", "billabon", "youknow", "zelda", "yyyyyy1", "zachary1", "01234567", "070462", "zurich", "superstar", "storms", "tail", "stiletto", "strat", "427900", "sigmachi", "shelter", "shells", "sexy123", "smile1", "sophie1", "stefano", "stayout", "somerset", "smithers", "playmate", "pinkfloyd", "phish1", "payday", "thebear", "telefon", "laetitia", "kswbdu", "larson", "jetta", "jerky", "melina", "metro", "revoluti", "retire", "respect", "1216", "1201", "1204", "1222", "1115", "archange", "barry1", "handball", "676767", "chandra", "chewbacc", "flesh", "furball", "gocubs", "fruit", "fullback", "gman", "gentle", "dunbar", "dewalt", "dominiqu", "diver1", "dhip6a", "olemiss", "ollie", "mandrake", "mangos", "pretzel", "pusssy", "tripleh", "valdez", "vagabond", "clean", "comment", "crew", "clovis", "deaths", "dandan", "csfbr5yy", "deadspin", "darrel", "ninguna", "noah", "ncc74656", "bootsie", "bp2002", "bourbon", "brennan", "bumble", "books", "hose", "heyyou", "houston1", "hemlock", "hippo", "hornets", "hurricane", "horseman", "hogan", "excess", "extensa", "muffin1", "virginie", "werdna", "idontknow", "info", "iron", "jack1", "1bitch", "151nxjmt", "bendover", "bmwbmw", "bills", "zaq123", "wxcvbn", "surprise", "supernov", "tahoe", "talbot", "simona", "shakur", "sexyone", "seviyi", "sonja", "smart1", "speed1", "pepito", "phantom1", "playoffs", "terry1", "terrier", "laser1", "lite", "lancia", "johngalt", "jenjen", "jolene", "midori", "message", "maserati", "matteo", "mental", "miami1", "riffraff", "ronald1", "reason", "rhythm", "1218", "1026", "123987", "1015", "1103", "armada", "architec", "austria", "gotmilk", "hawkins", "gray", "camila", "camp", "cambridg", "charge", "camero", "flex", "foreplay", "getoff", "glacier", "glotest", "froggie", "gerbil", "rugger", "sanity72", "salesman", "donna1", "dreaming", "deutsch", "orchard", "oyster", "palmtree", "ophelia", "pajero", "m5wkqf", "magenta", "luckyone", "treefrog", "vantage", "usmarine", "tyvugq", "uptown", "abacab", "aaaaaa1", "advance", "chuck1", "delmar", "darkange", "cyclones", "nate", "navajo", "nope", "border", "bubba123", "building", "iawgk2", "hrfzlz", "dylan1", "enrico", "encore", "emilio", "eclipse1", "killian", "kayleigh", "mutant", "mizuno", "mustang2", "video1", "viewer", "weed420", "whales", "jaguar1", "insight", "1990", "159159", "1love", "bliss", "bears1", "bigtruck", "binder", "bigboss", "blitz", "xqgann", "yeahyeah", "zeke", "zardoz", "stickman", "table", "3825", "signal", "sentra", "side", "shiva", "skipper1", "singapor", "southpaw", "sonora", "squid", "slamdunk", "slimjim", "placid", "photon", "placebo", "pearl1", "test12", "therock1", "tiger123", "leinad", "legman", "jeepers", "joeblow", "mccarthy", "mike23", "redcar", "rhinos", "rjw7x4", "1102", "13576479", "112211", "alcohol", "gwju3g", "greywolf", "7bgiqk", "7878", "535353", "4snz9g", "candyass", "cccccc1", "carola", "catfight", "cali", "fister", "fosters", "finland", "frankie1", "gizzmo", "fuller", "royalty", "rugrat", "sandie", "rudolf", "dooley", "dive", "doreen", "dodo", "drop", "oemdlg", "out3xf", "paddy", "opennow", "puppy1", "qazwsxedc", "pregnant", "quinn", "ramjet", "under", "uncle", "abraxas", "corner", "creed", "cocoa", "crown", "cows", "cn42qj", "dancer1", "death666", "damned", "nudity", "negative", "nimda2k", "buick", "bobb", "braves1", "brook", "henrik", "higher", "hooligan", "dust", "everlast", "karachi", "mortis", "mulligan", "monies", "motocros", "wally1", "weapon", "waterman", "view", "willie1", "vicki", "inspiron", "1test", "2929", "bigblack", "xytfu7", "yackwin", "zaq1xsw2", "yy5rbfsc", "100100", "0660", "tahiti", "takehana", "talks", "332211", "3535", "sedona", "seawolf", "skydiver", "shine", "spleen", "slash", "spjfet", "special1", "spooner", "slimshad", "sopranos", "spock1", "penis1", "patches1", "terri", "thierry", "thething", "toohot", "large", "limpone", "johnnie", "mash4077", "matchbox", "masterp", "maxdog", "ribbit", "reed", "rita", "rockin", "redhat", "rising", "1113", "14789632", "1331", "allday", "aladin", "andrey", "amethyst", "ariel", "anytime", "baseball1", "athome", "basil", "goofy1", "greenman", "gustavo", "goofball", "ha8fyp", "goodday", "778899", "charon", "chappy", "castillo", "caracas", "cardiff", "capitals", "canada1", "cajun", "catter", "freddy1", "favorite2", "frazier", "forme", "follow", "forsaken", "feelgood", "gavin", "gfxqx686", "garlic", "sarge", "saskia", "sanjose", "russ", "salsa", "dilbert1", "dukeduke", "downhill", "longhair", "loop", "locutus", "lockdown", "malachi", "mamacita", "lolipop", "rainyday", "pumpkin1", "punker", "prospect", "rambo1", "rainbows", "quake", "twin", "trinity1", "trooper1", "aimee", "citation", "coolcat", "crappy", "default", "dental", "deniro", "d9ungl", "daddys", "napoli", "nautica", "nermal", "bukowski", "brick", "bubbles1", "bogota", "board", "branch", "breath", "buds", "hulk", "humphrey", "hitachi", "evans", "ender", "export", "kikiki", "kcchiefs", "kram", "morticia", "montrose", "mongo", "waqw3p", "wizzard", "visited", "whdbtp", "whkzyc", "image", "154ugeiu", "1fuck", "binky", "blind", "bigred1", "blubber", "benz", "becky1", "year2005", "wonderfu", "wooden", "xrated", "0001", "tampabay", "survey", "tammy1", "stuffer", "3mpz4r", "3000", "3some", "selina", "sierra1", "shampoo", "silk", "shyshy", "slapnuts", "standby", "spartan1", "sprocket", "sometime", "stanley1", "poker1", "plus", "thought", "theshit", "torture", "thinking", "lavalamp", "light1", "laserjet", "jediknig", "jjjjj1", "jocelyn", "mazda626", "menthol", "maximo", "margaux", "medic1", "release", "richter", "rhino1", "roach", "renate", "repair", "reveal", "1209", "1234321", "amigos", "apricot", "alexandra", "asdfgh1", "hairball", "hatter", "graduate", "grimace", "7xm5rq", "6789", "cartoons", "capcom", "cheesy", "cashflow", "carrots", "camping", "fanatic", "fool", "format", "fleming", "girlie", "glover", "gilmore", "gardner", "safeway", "ruthie", "dogfart", "dondon", "diapers", "outsider", "odin", "opiate", "lollol", "love12", "loomis", "mallrats", "prague", "primetime21", "pugsley", "program", "r29hqq", "touch", "valleywa", "airman", "abcdefg1", "darkone", "cummer", "dempsey", "damn", "nadia", "natedogg", "nineball", "ndeyl5", "natchez", "newone", "normandy", "nicetits", "buddy123", "buddys", "homely", "husky", "iceland", "hr3ytm", "highlife", "holla", "earthlin", "exeter", "eatmenow", "kimkim", "karine", "k2trix", "kernel", "kirkland", "money123", "moonman", "miles1", "mufasa", "mousey", "wilma", "wilhelm", "whites", "warhamme", "instinct", "jackass1", "2277", "20spanks", "blobby", "blair", "blinky", "bikers", "blackjack", "becca", "blue23", "xman", "wyvern", "085tzzqi", "zxzxzx", "zsmj2v", "suede", "t26gn4", "sugars", "sylvie", "tantra", "swoosh", "swiss", "4226", "4271", "321123", "383pdjvl", "shoe", "shane1", "shelby1", "spades", "spain", "smother", "soup", "sparhawk", "pisser", "photo1", "pebble", "phones", "peavey", "picnic", "pavement", "terra", "thistle", "tokyo", "therapy", "lives", "linden", "kronos", "lilbit", "linux", "johnston", "material", "melanie1", "marbles", "redlight", "reno", "recall", "1208", "1138", "1008", "alchemy", "aolsucks", "alexalex", "atticus", "auditt", "ballet", "b929ezzh", "goodyear", "hanna", "griffith", "gubber", "863abgsg", "7474", "797979", "464646", "543210", "4zqauf", "4949", "ch5nmk", "carlito", "chewey", "carebear", "caleb", "checkmat", "cheddar", "chachi", "fever", "forgetit", "fine", "forlife", "giants1", "gates", "getit", "gamble", "gerhard", "galileo", "g3ujwg", "ganja", "rufus1", "rushmore", "scouts", "discus", "dudeman", "olympus", "oscars", "osprey", "madcow", "locust", "loyola", "mammoth", "proton", "rabbit1", "question", "ptfe3xxp", "pwxd5x", "purple1", "punkass", "prophecy", "uyxnyd", "tyson1", "aircraft", "access99", "abcabc", "cocktail", "colts", "civilwar", "cleveland", "claudia1", "contour", "clement", "dddddd1", "cypher", "denied", "dapzu455", "dagmar", "daisydog", "name", "noles", "butters", "buford", "hoochie", "hotel", "hoser", "eddy", "ellis", "eldiablo", "kingrich", "mudvayne", "motown", "mp8o6d", "wife", "vipergts", "italiano", "innocent", "2055", "2211", "beavers", "bloke", "blade1", "yamato", "zooropa", "yqlgr667", "050505", "zxcvbnm1", "zw6syj", "suckcock", "tango1", "swing", "stern", "stephens", "swampy", "susanna", "tammie", "445566", "333666", "380zliki", "sexpot", "sexylady", "sixtynin", "sickboy", "spiffy", "sleeping", "skylark", "sparkles", "slam", "pintail", "phreak", "places", "teller", "timtim", "tires", "thighs", "left", "latex", "llamas", "letsdoit", "lkjhg", "landmark", "letters", "lizzard", "marlins", "marauder", "metal1", "manu", "register", "righton", "1127", "alain", "alcat", "amigo", "basebal1", "azertyui", "attract", "azrael", "hamper", "gotenks", "golfgti", "gutter", "hawkwind", "h2slca", "harman", "grace1", "6chid8", "789654", "canine", "casio", "cazzo", "chamber", "cbr900", "cabrio", "calypso", "capetown", "feline", "flathead", "fisherma", "flipmode", "fungus", "goal", "g9zns4", "full", "giggle", "gabriel1", "fuck123", "saffron", "dogmeat", "dreamcas", "dirtydog", "dunlop", "douche", "dresden", "dickdick", "destiny1", "pappy", "oaktree", "lydia", "luft4", "puta", "prayer", "ramada", "trumpet1", "vcradq", "tulip", "tracy71", "tycoon", "aaaaaaa1", "conquest", "click", "chitown", "corps", "creepers", "constant", "couples", "code", "cornhole", "danman", "dada", "density", "d9ebk7", "cummins", "darth", "cute", "nash", "nirvana1", "nixon", "norbert", "nestle", "brenda1", "bonanza", "bundy", "buddies", "hotspur", "heavy", "horror", "hufmqw", "electro", "erasure", "enough", "elisabet", "etvww4", "ewyuza", "eric1", "kinder", "kenken", "kismet", "klaatu", "musician", "milamber", "willi", "waiting", "isacs155", "igor", "1million", "1letmein", "x35v8l", "yogi", "ywvxpz", "xngwoj", "zippy1", "020202", "****", "stonewal", "sweeney", "story", "sentry", "sexsexsex", "spence", "sonysony", "smirnoff", "star12", "solace", "sledge", "states", "snyder", "star1", "paxton", "pentagon", "pkxe62", "pilot1", "pommes", "paulpaul", "plants", "tical", "tictac", "toes", "lighthou", "lemans", "kubrick", "letmein22", "letmesee", "jys6wz", "jonesy", "jjjjjj1", "jigga", "joelle", "mate", "merchant", "redstorm", "riley1", "rosa", "relief", "14141414", "1126", "allison1", "badboy1", "asthma", "auggie", "basement", "hartley", "hartford", "hardwood", "gumbo", "616913", "57np39", "56qhxs", "4mnveh", "cake", "forbes", "fatluvr69", "fqkw5m", "fidelity", "feathers", "fresno", "godiva", "gecko", "gladys", "gibson1", "gogators", "fridge", "general1", "saxman", "rowing", "sammys", "scotts", "scout1", "sasasa", "samoht", "dragon69", "ducky", "dragonball", "driller", "p3wqaw", "nurse", "papillon", "oneone", "openit", "optimist", "longshot", "portia", "rapier", "pussy2", "ralphie", "tuxedo", "ulrike", "undertow", "trenton", "copenhag", "come", "delldell", "culinary", "deltas", "mytime", "nicky", "nickie", "noname", "noles1", "bucker", "bopper", "bullock", "burnout", "bryce", "hedges", "ibilltes", "hihje863", "hitter", "ekim", "espana", "eatme69", "elpaso", "envelope", "express1", "eeeeee1", "eatme1", "karaoke", "kara", "mustang5", "misses", "wellingt", "willem", "waterski", "webcam", "jasons", "infinite", "iloveyou!", "jakarta", "belair", "bigdad", "beerme", "yoshi", "yinyang", "zimmer", "x24ik3", "063dyjuy", "0000007", "ztmfcq", "stopit", "stooges", "survival", "stockton", "symow8", "strato", "2hot4u", "ship", "simons", "skins", "shakes", "sex1", "shield", "snacks", "softtail", "slimed123", "pizzaman", "pipe", "pitt", "pathetic", "pinto", "tigercat", "tonton", "lager", "lizzy", "juju", "john123", "jennings", "josiah", "jesse1", "jordon", "jingles", "martian", "mario1", "rootedit", "rochard", "redwine", "requiem", "riverrat", "rats", "1117", "1014", "1205", "althea", "allie", "amor", "amiga", "alpina", "alert", "atreides", "banana1", "bahamut", "hart", "golfman", "happines", "7uftyx", "5432", "5353", "5151", "4747", "byron", "chatham", "chadwick", "cherie", "foxfire", "ffvdj474", "freaked", "foreskin", "gayboy", "gggggg1", "glenda", "gameover", "glitter", "funny1", "scoobydoo", "scroll", "rudolph", "saddle", "saxophon", "dingbat", "digimon", "omicron", "parsons", "ohio", "panda1", "loloxx", "macintos", "lululu", "lollypop", "racer1", "queen1", "qwertzui", "prick", "upnfmc", "tyrant", "trout1", "9skw5g", "aceman", "adelaide", "acls2h", "aaabbb", "acapulco", "aggie", "comcast", "craft", "crissy", "cloudy", "cq2kph", "custer", "d6o8pm", "cybersex", "davecole", "darian", "crumbs", "daisey", "davedave", "dasani", "needle", "mzepab", "myporn", "narnia", "nineteen", "booger1", "bravo1", "budgie", "btnjey", "highlander", "hotel6", "humbug", "edwin", "ewtosi", "kristin1", "kobe", "knuckles", "keith1", "katarina", "muff", "muschi", "montana1", "wingchun", "wiggle", "whatthe", "walking", "watching", "vette1", "vols", "virago", "intj3a", "ishmael", "intern", "jachin", "illmatic", "199999", "2010", "beck", "blender", "bigpenis", "bengal", "blue1234", "your", "zaqxsw", "xray", "xxxxxxx1", "zebras", "yanks", "worlds", "tadpole", "stripes", "svetlana", "3737", "4343", "3728", "4444444", "368ejhih", "solar", "sonne", "smalls", "sniffer", "sonata", "squirts", "pitcher", "playstation", "pktmxr", "pescator", "points", "texaco", "lesbos", "lilian", "l8v53x", "jo9k2jw2", "jimbeam", "josie", "jimi", "jupiter2", "jurassic", "marines1", "maya", "rocket1", "ringer", "14725836", "12345679", "1219", "123098", "1233", "alessand", "althor", "angelika", "arch", "armando", "alpha123", "basher", "barefeet", "balboa", "bbbbb1", "banks", "badabing", "harriet", "gopack", "golfnut", "gsxr1000", "gregory1", "766rglqy", "8520", "753159", "8dihc6", "69camaro", "666777", "cheeba", "chino", "calendar", "cheeky", "camel1", "fishcake", "falling", "flubber", "giuseppe", "gianni", "gloves", "gnasher23", "frisbee", "fuzzy1", "fuzzball", "sauce", "save13tx", "schatz", "russell1", "sandra1", "scrotum", "scumbag", "sabre", "samdog", "dripping", "dragon12", "dragster", "paige", "orwell", "mainland", "lunatic", "lonnie", "lotion", "maine", "maddux", "qn632o", "poophead", "rapper", "porn4life", "producer", "rapunzel", "tracks", "velocity", "vanessa1", "ulrich", "trueblue", "vampire1", "abacus", "902100", "crispy", "corky", "crane", "chooch", "d6wnro", "cutie", "deal", "dabulls", "dehpye", "navyseal", "njqcw4", "nownow", "nigger1", "nightowl", "nonenone", "nightmar", "bustle", "buddy2", "boingo", "bugman", "bulletin", "bosshog", "bowie", "hybrid", "hillside", "hilltop", "hotlegs", "honesty", "hzze929b", "hhhhh1", "hellohel", "eloise", "evilone", "edgewise", "e5pftu", "eded", "embalmer", "excalibur", "elefant", "kenzie", "karl", "karin", "killah", "kleenex", "mouses", "mounta1n", "motors", "mutley", "muffdive", "vivitron", "winfield", "wednesday", "w00t88", "iloveit", "jarjar", "incest", "indycar", "17171717", "1664", "17011701", "222777", "2663", "beelch", "benben", "yitbos", "yyyyy1", "yasmin", "zapata", "zzzzz1", "stooge", "tangerin", "taztaz", "stewart1", "summer69", "sweetness", "system1", "surveyor", "stirling", "3qvqod", "3way", "456321", "sizzle", "simhrq", "shrink", "shawnee", "someday", "sparty", "ssptx452", "sphere", "spark", "slammed", "sober", "persian", "peppers", "ploppy", "pn5jvw", "poobear", "pianos", "plaster", "testme", "tiff", "thriller", "larissa", "lennox", "jewell", "master12", "messier", "rockey", "1229", "1217", "1478", "1009", "anastasi", "almighty", "amonra", "aragon", "argentin", "albino", "azazel", "grinder", "6uldv8", "83y6pv", "8888888", "4tlved", "515051", "carsten", "changes", "flanders", "flyers88", "ffffff1", "firehawk", "foreman", "firedog", "flashman", "ggggg1", "gerber", "godspeed", "galway", "giveitup", "funtimes", "gohan", "giveme", "geryfe", "frenchie", "sayang", "rudeboy", "savanna", "sandals", "devine", "dougal", "drag0n", "dga9la", "disaster", "desktop", "only", "onlyone", "otter", "pandas", "mafia", "lombard", "luckys", "lovejoy", "lovelife", "manders", "product", "qqh92r", "qcmfd454", "pork", "radar1", "punani", "ptbdhw", "turtles", "undertaker", "trs8f7", "tramp", "ugejvp", "abba", "911turbo", "acdc", "abcd123", "clever", "corina", "cristian", "create", "crash1", "colony", "crosby", "delboy", "daniele", "davinci", "daughter", "notebook", "niki", "nitrox", "borabora", "bonzai", "budd", "brisbane", "hotter", "heeled", "heroes", "hooyah", "hotgirl", "i62gbq", "horse1", "hills", "hpk2qc", "epvjb6", "echo", "korean", "kristie", "mnbvc", "mohammad", "mind", "mommy1", "munster", "wade", "wiccan", "wanted", "jacket", "2369", "bettyboo", "blondy", "bismark", "beanbag", "bjhgfi", "blackice", "yvtte545", "ynot", "yess", "zlzfrh", "wolvie", "007bond", "******", "tailgate", "tanya1", "sxhq65", "stinky1", "3234412", "3ki42x", "seville", "shimmer", "sheryl", "sienna", "shitshit", "skillet", "seaman", "sooners1", "solaris", "smartass", "pastor", "pasta", "pedros", "pennywis", "pfloyd", "tobydog", "thetruth", "lethal", "letme1n", "leland", "jenifer", "mario66", "micky", "rocky2", "rewq", "ripped", "reindeer", "1128", "1207", "1104", "1432", "aprilia", "allstate", "alyson", "bagels", "basic", "baggies", "barb", "barrage", "greatest", "gomez", "guru", "guard", "72d5tn", "606060", "4wcqjn", "caldwell", "chance1", "catalog", "faust", "film", "flange", "fran", "fartman", "geil", "gbhcf2", "fussball", "glen", "fuaqz4", "gameboy", "garnet", "geneviev", "rotary", "seahawk", "russel", "saab", "seal", "samadams", "devlt4", "ditto", "drevil", "drinker", "deuce", "dipstick", "donut", "octopus", "ottawa", "losangel", "loverman", "porky", "q9umoz", "rapture", "pump", "pussy4me", "university", "triplex", "ue8fpw", "trent", "trophy", "turbos", "troubles", "agent", "aaa340", "churchil", "crazyman", "consult", "creepy", "craven", "class", "cutiepie", "ddddd1", "dejavu", "cuxldv", "nettie", "nbvibt", "nikon", "niko", "norwood", "nascar1", "nolan", "bubba2", "boobear", "boogers", "buff", "bullwink", "bully", "bulldawg", "horsemen", "escalade", "editor", "eagle2", "dynamic", "ella", "efyreg", "edition", "kidney", "minnesot", "mogwai", "morrow", "msnxbi", "moonlight", "mwq6qlzo", "wars", "werder", "verygood", "voodoo1", "wheel", "iiiiii1", "159951", "1624", "1911a1", "2244", "bellagio", "bedlam", "belkin", "bill1", "woodrow", "xirt2k", "worship", "??????", "tanaka", "swift", "susieq", "sundown", "sukebe", "tales", "swifty", "2fast4u", "senate", "sexe", "sickness", "shroom", "shaun", "seaweed", "skeeter1", "status", "snicker", "sorrow", "spanky1", "spook", "patti", "phaedrus", "pilots", "pinch", "peddler", "theo", "thumper1", "tessie", "tiger7", "tmjxn151", "thematri", "l2g7k3", "letmeinn", "lazy", "jeffjeff", "joan", "johnmish", "mantra", "mariana", "mike69", "marshal", "mart", "mazda6", "riptide", "robots", "rental", "1107", "1130", "142857", "11001001", "1134", "armored", "alvin", "alec", "allnight", "alright", "amatuers", "bartok", "attorney", "astral", "baboon", "bahamas", "balls1", "bassoon", "hcleeb", "happyman", "granite", "graywolf", "golf1", "gomets", "8vjzus", "7890", "789123", "8uiazp", "5757", "474jdvff", "551scasi", "50cent", "camaro1", "cherry1", "chemist", "final", "firenze", "fishtank", "farrell", "freewill", "glendale", "frogfrog", "gerhardt", "ganesh", "same", "scirocco", "devilman", "doodles", "dinger", "okinawa", "olympic", "nursing", "orpheus", "ohmygod", "paisley", "pallmall", "null", "lounge", "lunchbox", "manhatta", "mahalo", "mandarin", "qwqwqw", "qguvyt", "pxx3eftp", "president", "rambler", "puzzle", "poppy1", "turk182", "trotter", "vdlxuc", "trish", "tugboat", "valiant", "tracie", "uwrl7c", "chris123", "coaster", "cmfnpu", "decimal", "debbie1", "dandy", "daedalus", "dede", "natasha1", "nissan1", "nancy123", "nevermin", "napalm", "newcastle", "boats", "branden", "britt", "bonghit", "hester", "ibxnsm", "hhhhhh1", "holger", "durham", "edmonton", "erwin", "equinox", "dvader", "kimmy", "knulla", "mustafa", "monsoon", "mistral", "morgana", "monica1", "mojave", "month", "monterey", "mrbill", "vkaxcs", "victor1", "wacker", "wendell", "violator", "vfdhif", "wilson1", "wavpzt", "verena", "wildstar", "winter99", "iqzzt580", "jarrod", "imback", "1914", "19741974", "1monkey", "1q2w3e4r5t", "2500", "2255", "blank", "bigshow", "bigbucks", "blackcoc", "zoomer", "wtcacq", "wobble", "xmen", "xjznq5", "yesterda", "yhwnqc", "zzzxxx", "streak", "393939", "2fchbg", "skinhead", "skilled", "shakira", "shaft", "shadow12", "seaside", "sigrid", "sinful", "silicon", "smk7366", "snapshot", "sniper1", "soccer11", "staff", "slap", "smutty", "peepers", "pleasant", "plokij", "pdiddy", "pimpdaddy", "thrust", "terran", "topaz", "today1", "lionhear", "littlema", "lauren1", "lincoln1", "lgnu9d", "laughing", "juneau", "methos", "medina", "merlyn", "rogue1", "romulus", "redshift", "1202", "1469", "12locked", "arizona1", "alfarome", "al9agd", "aol123", "altec", "apollo1", "arse", "baker1", "bbb747", "bach", "axeman", "astro1", "hawthorn", "goodfell", "hawks1", "gstring", "hannes", "8543852", "868686", "4ng62t", "554uzpad", "5401", "567890", "5232", "catfood", "frame", "flow", "fire1", "flipflop", "fffff1", "fozzie", "fluff", "garrison", "fzappa", "furious", "round", "rustydog", "sandberg", "scarab", "satin", "ruger", "samsung1", "destin", "diablo2", "dreamer1", "detectiv", "dominick", "doqvq3", "drywall", "paladin1", "papabear", "offroad", "panasonic", "nyyankee", "luetdi", "qcfmtz", "pyf8ah", "puddles", "privacy", "rainer", "pussyeat", "ralph1", "princeto", "trivia", "trewq", "tri5a3", "advent", "9898", "agyvorc", "clarkie", "coach1", "courier", "contest", "christo", "corinna", "chowder", "concept", "climbing", "cyzkhw", "davidb", "dad2ownu", "days", "daredevi", "de7mdf", "nose", "necklace", "nazgul", "booboo1", "broad", "bonzo", "brenna", "boot", "butch1", "huskers1", "hgfdsa", "hornyman", "elmer", "elektra", "england1", "elodie", "kermit1", "knife", "kaboom", "minute", "modern", "motherfucker", "morten", "mocha", "monday1", "morgoth", "ward", "weewee", "weenie", "walters", "vorlon", "website", "wahoo", "ilovegod", "insider", "jayman", "1911", "1dallas", "1900", "1ranger", "201jedlz", "2501", "1qaz", "bertram", "bignuts", "bigbad", "beebee", "billows", "belize", "bebe", "wvj5np", "wu4etd", "yamaha1", "wrinkle5", "zebra1", "yankee1", "zoomzoom", "09876543", "0311", "?????", "stjabn", "tainted", "3tmnej", "shoot", "skooter", "skelter", "sixteen", "starlite", "smack", "spice1", "stacey1", "smithy", "perrin", "pollux", "peternorth", "pixie", "paulina", "piston", "pick", "poets", "pine", "toons", "tooth", "topspin", "kugm7b", "legends", "jeepjeep", "juliana", "joystick", "junkmail", "jojojojo", "jonboy", "judge", "midland", "meteor", "mccabe", "matter", "mayfair", "meeting", "merrill", "raul", "riches", "reznor", "rockrock", "reboot", "reject", "robyn", "renee1", "roadway", "rasta220", "1411", "1478963", "1019", "archery", "allman", "andyandy", "barks", "bagpuss", "auckland", "gooseman", "hazmat", "gucci", "guns", "grammy", "happydog", "greek", "7kbe9d", "7676", "6bjvpe", "5lyedn", "5858", "5291", "charlie2", "chas", "c7lrwu", "candys", "chateau", "ccccc1", "cardinals", "fear", "fihdfv", "fortune12", "gocats", "gaelic", "fwsadn", "godboy", "gldmeo", "fx3tuo", "fubar1", "garland", "generals", "gforce", "rxmtkp", "rulz", "sairam", "dunhill", "division", "dogggg", "detect", "details", "doll", "drinks", "ozlq6qwm", "ov3ajy", "lockout", "makayla", "macgyver", "mallorca", "loves", "prima", "pvjegu", "qhxbij", "raphael", "prelude1", "totoro", "tusymo", "trousers", "tunnel", "valeria", "tulane", "turtle1", "tracy1", "aerosmit", "abbey1", "address", "clticic", "clueless", "cooper1", "comets", "collect", "corbin", "delpiero", "derick", "cyprus", "dante1", "dave1", "nounours", "neal", "nexus6", "nero", "nogard", "norfolk", "brent1", "booyah", "bootleg", "buckaroo", "bulls23", "bulls1", "booper", "heretic", "icecube", "hellno", "hounds", "honeydew", "hooters1", "hoes", "howie", "hevnm4", "hugohugo", "eighty", "epson", "evangeli", "eeeee1", "eyphed"];
|
|
2621
|
+
|
|
2622
|
+
// src/embeddedWallet/passcode-denylist.ts
|
|
2623
|
+
var DENYLIST = new Set(passcode_denylist_default);
|
|
2624
|
+
function isPasscodeDenylisted(passcode) {
|
|
2625
|
+
const normalized = passcode.normalize("NFKC").toLowerCase();
|
|
2626
|
+
return DENYLIST.has(normalized);
|
|
2627
|
+
}
|
|
2628
|
+
|
|
2629
|
+
// src/embeddedWallet/passcode-strength.ts
|
|
2630
|
+
var zxcvbnChecker = null;
|
|
2631
|
+
function getZxcvbnChecker() {
|
|
2632
|
+
if (!zxcvbnChecker) {
|
|
2633
|
+
zxcvbnChecker = new ZxcvbnFactory({
|
|
2634
|
+
translations: zxcvbnEn.translations,
|
|
2635
|
+
graphs: zxcvbnCommon.adjacencyGraphs,
|
|
2636
|
+
dictionary: {
|
|
2637
|
+
...zxcvbnCommon.dictionary,
|
|
2638
|
+
...zxcvbnEn.dictionary
|
|
2639
|
+
}
|
|
2640
|
+
});
|
|
2641
|
+
}
|
|
2642
|
+
return zxcvbnChecker;
|
|
2643
|
+
}
|
|
2644
|
+
function scoreToLabel(score) {
|
|
2645
|
+
if (score <= 0) {
|
|
2646
|
+
return "weak";
|
|
2647
|
+
}
|
|
2648
|
+
if (score === 1) {
|
|
2649
|
+
return "fair";
|
|
2650
|
+
}
|
|
2651
|
+
if (score === 2) {
|
|
2652
|
+
return "good";
|
|
2653
|
+
}
|
|
2654
|
+
return "strong";
|
|
2655
|
+
}
|
|
2656
|
+
function hasMixedCharacterClasses(passcode) {
|
|
2657
|
+
let classes = 0;
|
|
2658
|
+
if (/[a-z]/.test(passcode)) {
|
|
2659
|
+
classes++;
|
|
2660
|
+
}
|
|
2661
|
+
if (/[A-Z]/.test(passcode)) {
|
|
2662
|
+
classes++;
|
|
2663
|
+
}
|
|
2664
|
+
if (/[0-9]/.test(passcode)) {
|
|
2665
|
+
classes++;
|
|
2666
|
+
}
|
|
2667
|
+
if (/[^a-zA-Z0-9]/.test(passcode)) {
|
|
2668
|
+
classes++;
|
|
2669
|
+
}
|
|
2670
|
+
return classes >= 2;
|
|
2671
|
+
}
|
|
2672
|
+
function isAllDigits(passcode) {
|
|
2673
|
+
return /^[0-9]+$/.test(passcode);
|
|
2674
|
+
}
|
|
2675
|
+
function evaluatePasscodeStrength(passcode) {
|
|
2676
|
+
assertValidPasscode(passcode);
|
|
2677
|
+
const normalized = normalizePasscode(passcode);
|
|
2678
|
+
if (isPasscodeDenylisted(normalized)) {
|
|
2679
|
+
return {
|
|
2680
|
+
score: 0,
|
|
2681
|
+
label: "weak",
|
|
2682
|
+
blocked: true,
|
|
2683
|
+
blockReason: "denylist"
|
|
2684
|
+
};
|
|
2685
|
+
}
|
|
2686
|
+
if (isAllDigits(normalized) && normalized.length < 12) {
|
|
2687
|
+
return {
|
|
2688
|
+
score: 0,
|
|
2689
|
+
label: "weak",
|
|
2690
|
+
blocked: true,
|
|
2691
|
+
blockReason: "numeric_short"
|
|
2692
|
+
};
|
|
2693
|
+
}
|
|
2694
|
+
const result = getZxcvbnChecker().check(normalized);
|
|
2695
|
+
const score = result.score;
|
|
2696
|
+
const label = scoreToLabel(score);
|
|
2697
|
+
if (score === 0 && !(normalized.length >= 14 && hasMixedCharacterClasses(normalized))) {
|
|
2698
|
+
return {
|
|
2699
|
+
score,
|
|
2700
|
+
label,
|
|
2701
|
+
blocked: true,
|
|
2702
|
+
blockReason: "too_weak"
|
|
2703
|
+
};
|
|
2704
|
+
}
|
|
2705
|
+
return {
|
|
2706
|
+
score,
|
|
2707
|
+
label,
|
|
2708
|
+
blocked: false
|
|
2709
|
+
};
|
|
2710
|
+
}
|
|
2711
|
+
function assertPasscodeAllowedForCreation(passcode) {
|
|
2712
|
+
const strength = evaluatePasscodeStrength(passcode);
|
|
2713
|
+
if (strength.blocked) {
|
|
2714
|
+
throw new EmbeddedWalletWeakPasscodeError(strength.blockReason ?? "too_weak");
|
|
2715
|
+
}
|
|
2716
|
+
}
|
|
2717
|
+
|
|
2718
|
+
// src/embeddedWallet/wallet.ts
|
|
2275
2719
|
var activeSession = null;
|
|
2720
|
+
var activeScopeId;
|
|
2721
|
+
function resolveScopeId(scopeId) {
|
|
2722
|
+
const trimmed = scopeId?.trim();
|
|
2723
|
+
return trimmed || void 0;
|
|
2724
|
+
}
|
|
2725
|
+
function scopeFromOptions(options) {
|
|
2726
|
+
return resolveScopeId(options?.scopeId);
|
|
2727
|
+
}
|
|
2728
|
+
async function loadVaultForScope(scopeId) {
|
|
2729
|
+
return loadVaultFromIndexedDb({ scopeId });
|
|
2730
|
+
}
|
|
2731
|
+
function vaultUsesPasskeyUnlock(vault) {
|
|
2732
|
+
return vault.kdf === EMBEDDED_WALLET_KDF_PRF || vault.kdf === EMBEDDED_WALLET_KDF_PBKDF2;
|
|
2733
|
+
}
|
|
2734
|
+
function vaultUsesPasscodeUnlock(vault) {
|
|
2735
|
+
return vault.kdf === EMBEDDED_WALLET_KDF_PIN;
|
|
2736
|
+
}
|
|
2737
|
+
function isPasscodeDecryptFailure(err) {
|
|
2738
|
+
return err instanceof EmbeddedWalletDecryptError;
|
|
2739
|
+
}
|
|
2740
|
+
async function decryptVaultWithPasscodeProtected(vault, passcode) {
|
|
2741
|
+
if (!vaultUsesPasscodeUnlock(vault)) {
|
|
2742
|
+
throw new EmbeddedWalletVaultError("Vault does not use passcode unlock");
|
|
2743
|
+
}
|
|
2744
|
+
if (!passcode) {
|
|
2745
|
+
throw new EmbeddedWalletVaultError("Passcode is required to unlock this wallet");
|
|
2746
|
+
}
|
|
2747
|
+
await assertPasscodeUnlockAllowed(vault.publicAddress);
|
|
2748
|
+
try {
|
|
2749
|
+
const plaintext = await decryptVaultWithUnlockMaterial(vault, passcode);
|
|
2750
|
+
await recordPasscodeUnlockSuccess(vault.publicAddress);
|
|
2751
|
+
return plaintext;
|
|
2752
|
+
} catch (err) {
|
|
2753
|
+
if (isPasscodeDecryptFailure(err)) {
|
|
2754
|
+
await recordPasscodeUnlockFailure(vault.publicAddress);
|
|
2755
|
+
}
|
|
2756
|
+
throw err;
|
|
2757
|
+
}
|
|
2758
|
+
}
|
|
2276
2759
|
async function deriveKekFromPasskeyMaterial(vault, prfOutput, authenticatorData, clientDataJSON) {
|
|
2277
2760
|
const caps = detectWebAuthnPrfCapabilities();
|
|
2278
2761
|
const kdf = selectEmbeddedWalletKdf(caps, prfOutput);
|
|
@@ -2286,41 +2769,49 @@ async function deriveKekFromPasskeyMaterial(vault, prfOutput, authenticatorData,
|
|
|
2286
2769
|
const material = createPasskeyMaterialFromAssertion(authenticatorData, clientDataJSON);
|
|
2287
2770
|
return deriveKekFromPbkdf2(material, salt, vault.kdfIterations || void 0);
|
|
2288
2771
|
}
|
|
2289
|
-
async function
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
|
|
2293
|
-
|
|
2772
|
+
async function deriveKekForVault(vault, passcode, passkeyMaterial) {
|
|
2773
|
+
if (vaultUsesPasscodeUnlock(vault)) {
|
|
2774
|
+
if (!passcode) {
|
|
2775
|
+
throw new EmbeddedWalletVaultError("Passcode is required to unlock this wallet");
|
|
2776
|
+
}
|
|
2777
|
+
if (!vault.kdfSalt) {
|
|
2778
|
+
throw new EmbeddedWalletVaultError("PIN vault is missing kdfSalt");
|
|
2779
|
+
}
|
|
2780
|
+
const salt = decodeCredentialId(vault.kdfSalt);
|
|
2781
|
+
return deriveKekFromPasscode(passcode, salt, vault.kdfIterations || void 0);
|
|
2782
|
+
}
|
|
2783
|
+
if (!passkeyMaterial) {
|
|
2784
|
+
throw new EmbeddedWalletVaultError("Passkey authentication is required to unlock this wallet");
|
|
2785
|
+
}
|
|
2786
|
+
return deriveKekFromPasskeyMaterial(
|
|
2294
2787
|
vault,
|
|
2295
|
-
|
|
2296
|
-
|
|
2297
|
-
|
|
2788
|
+
passkeyMaterial.prfOutput,
|
|
2789
|
+
passkeyMaterial.authenticatorData,
|
|
2790
|
+
passkeyMaterial.clientDataJSON
|
|
2298
2791
|
);
|
|
2299
|
-
const plaintext = await decryptWalletPayload(vault, kek);
|
|
2300
|
-
const signer = await embeddedPlaintextToSigner(plaintext);
|
|
2301
|
-
const [account] = await signer.getAccounts();
|
|
2302
|
-
const session = { address: account.address, vault, signer };
|
|
2303
|
-
activeSession = session;
|
|
2304
|
-
return session;
|
|
2305
2792
|
}
|
|
2306
|
-
async function
|
|
2307
|
-
const
|
|
2308
|
-
return vault
|
|
2793
|
+
async function decryptVaultWithUnlockMaterial(vault, passcode, passkeyMaterial) {
|
|
2794
|
+
const kek = await deriveKekForVault(vault, passcode, passkeyMaterial);
|
|
2795
|
+
return decryptWalletPayload(vault, kek);
|
|
2309
2796
|
}
|
|
2310
|
-
async function
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2797
|
+
async function encryptPlaintextWithPasscode(plaintext, passcode, backupAcknowledged = false) {
|
|
2798
|
+
assertPasscodeAllowedForCreation(passcode);
|
|
2799
|
+
const previewSigner = await embeddedPlaintextToSigner(plaintext);
|
|
2800
|
+
const [account] = await previewSigner.getAccounts();
|
|
2801
|
+
const salt = createPbkdf2Salt();
|
|
2802
|
+
const kek = await deriveKekFromPasscode(passcode, salt);
|
|
2803
|
+
const vault = await encryptWalletPayload(plaintext, {
|
|
2804
|
+
kdf: EMBEDDED_WALLET_KDF_PIN,
|
|
2805
|
+
credentialId: new Uint8Array(0),
|
|
2806
|
+
publicAddress: account.address,
|
|
2807
|
+
kek,
|
|
2808
|
+
kdfSalt: salt,
|
|
2809
|
+
kdfIterations: EMBEDDED_WALLET_PIN_PBKDF2_ITERATIONS,
|
|
2810
|
+
backupAcknowledged
|
|
2316
2811
|
});
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
privateKey,
|
|
2321
|
-
hdPath: defaultEmbeddedHdPath(),
|
|
2322
|
-
createdAt
|
|
2323
|
-
};
|
|
2812
|
+
return { address: account.address, vault };
|
|
2813
|
+
}
|
|
2814
|
+
async function encryptPlaintextWithPasskeyRegistration(plaintext, registration, backupAcknowledged = false) {
|
|
2324
2815
|
const previewSigner = await embeddedPlaintextToSigner(plaintext);
|
|
2325
2816
|
const [account] = await previewSigner.getAccounts();
|
|
2326
2817
|
const caps = detectWebAuthnPrfCapabilities();
|
|
@@ -2346,21 +2837,187 @@ async function createEmbeddedWallet(options) {
|
|
|
2346
2837
|
kek,
|
|
2347
2838
|
kdfSalt,
|
|
2348
2839
|
prfSalt,
|
|
2349
|
-
backupAcknowledged
|
|
2840
|
+
backupAcknowledged
|
|
2350
2841
|
});
|
|
2351
|
-
await saveVaultToIndexedDb(vault);
|
|
2352
|
-
lockEmbeddedWallet();
|
|
2353
2842
|
return { address: account.address, vault };
|
|
2354
2843
|
}
|
|
2355
|
-
async function
|
|
2844
|
+
async function unlockVaultToSession(vault, options = {}) {
|
|
2845
|
+
if (vaultUsesPasscodeUnlock(vault)) {
|
|
2846
|
+
const plaintext2 = await decryptVaultWithPasscodeProtected(vault, options.passcode);
|
|
2847
|
+
const signer2 = await embeddedPlaintextToSigner(plaintext2);
|
|
2848
|
+
const [account2] = await signer2.getAccounts();
|
|
2849
|
+
const session2 = { address: account2.address, vault, signer: signer2 };
|
|
2850
|
+
activeSession = session2;
|
|
2851
|
+
activeScopeId = scopeFromOptions(options);
|
|
2852
|
+
return session2;
|
|
2853
|
+
}
|
|
2854
|
+
const credentialId = decodeCredentialId(vault.credentialId);
|
|
2855
|
+
const prfSalt = vault.prfSalt ? decodeCredentialId(vault.prfSalt) : void 0;
|
|
2856
|
+
const assertion = await assertPasskey({ credentialId, rpId: void 0, prfSalt });
|
|
2857
|
+
const plaintext = await decryptVaultWithUnlockMaterial(vault, void 0, assertion);
|
|
2858
|
+
const signer = await embeddedPlaintextToSigner(plaintext);
|
|
2859
|
+
const [account] = await signer.getAccounts();
|
|
2860
|
+
const session = { address: account.address, vault, signer };
|
|
2861
|
+
activeSession = session;
|
|
2862
|
+
activeScopeId = scopeFromOptions(options);
|
|
2863
|
+
return session;
|
|
2864
|
+
}
|
|
2865
|
+
async function hasEmbeddedWallet(options = {}) {
|
|
2866
|
+
const vault = await loadVaultForScope(scopeFromOptions(options));
|
|
2867
|
+
return vault != null;
|
|
2868
|
+
}
|
|
2869
|
+
async function hasLegacyEmbeddedWallet() {
|
|
2356
2870
|
const vault = await loadVaultFromIndexedDb();
|
|
2871
|
+
return vault != null;
|
|
2872
|
+
}
|
|
2873
|
+
async function migrateLegacyEmbeddedWallet(options) {
|
|
2874
|
+
const scopeId = resolveScopeId(options.scopeId);
|
|
2875
|
+
if (!scopeId) {
|
|
2876
|
+
throw new EmbeddedWalletVaultError("scopeId is required to migrate a legacy wallet");
|
|
2877
|
+
}
|
|
2878
|
+
const scopedVault = await loadVaultForScope(scopeId);
|
|
2879
|
+
if (scopedVault) {
|
|
2880
|
+
throw new EmbeddedWalletVaultError("A scoped wallet already exists for this account");
|
|
2881
|
+
}
|
|
2882
|
+
const legacyVault = await loadVaultFromIndexedDb();
|
|
2883
|
+
if (!legacyVault) {
|
|
2884
|
+
throw new EmbeddedWalletVaultError("No legacy embedded wallet found on this device");
|
|
2885
|
+
}
|
|
2886
|
+
const session = await unlockVaultToSession(legacyVault, { passcode: options.passcode });
|
|
2887
|
+
await saveVaultToIndexedDb(legacyVault, { scopeId });
|
|
2888
|
+
await clearVaultFromIndexedDb();
|
|
2889
|
+
activeScopeId = scopeId;
|
|
2890
|
+
return session;
|
|
2891
|
+
}
|
|
2892
|
+
async function createEmbeddedWallet(options) {
|
|
2893
|
+
const createdAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
2894
|
+
const plaintext = await createHdDerivedPlaintext(createdAt);
|
|
2895
|
+
const { address, vault } = await encryptPlaintextWithPasscode(plaintext, options.passcode);
|
|
2896
|
+
const scopeId = scopeFromOptions(options);
|
|
2897
|
+
await saveVaultToIndexedDb(vault, { scopeId });
|
|
2898
|
+
lockEmbeddedWallet();
|
|
2899
|
+
activeScopeId = scopeId;
|
|
2900
|
+
return { address, vault };
|
|
2901
|
+
}
|
|
2902
|
+
async function revealEmbeddedRecoveryPhrase(options = {}) {
|
|
2903
|
+
const scopeId = scopeFromOptions(options) ?? activeScopeId;
|
|
2904
|
+
const vault = await loadVaultForScope(scopeId);
|
|
2357
2905
|
if (!vault) {
|
|
2358
2906
|
throw new EmbeddedWalletVaultError("No embedded wallet found on this device");
|
|
2359
2907
|
}
|
|
2360
|
-
|
|
2908
|
+
let plaintext;
|
|
2909
|
+
if (vaultUsesPasscodeUnlock(vault)) {
|
|
2910
|
+
plaintext = await decryptVaultWithPasscodeProtected(vault, options.passcode);
|
|
2911
|
+
} else {
|
|
2912
|
+
const credentialId = decodeCredentialId(vault.credentialId);
|
|
2913
|
+
const prfSalt = vault.prfSalt ? decodeCredentialId(vault.prfSalt) : void 0;
|
|
2914
|
+
const assertion = await assertPasskey({ credentialId, rpId: void 0, prfSalt });
|
|
2915
|
+
plaintext = await decryptVaultWithUnlockMaterial(vault, void 0, assertion);
|
|
2916
|
+
}
|
|
2917
|
+
const keyType = resolvePlaintextKeyType(plaintext);
|
|
2918
|
+
const mnemonic = recoveryMnemonicFromPlaintext(plaintext);
|
|
2919
|
+
const signer = await embeddedPlaintextToSigner(plaintext);
|
|
2920
|
+
const [account] = await signer.getAccounts();
|
|
2921
|
+
const warnings = [EMBEDDED_WALLET_RECOVERY_PHRASE_GENERAL_WARNING];
|
|
2922
|
+
if (keyType === EMBEDDED_WALLET_KEY_DIRECT_ENTROPY) {
|
|
2923
|
+
warnings.push(EMBEDDED_WALLET_RECOVERY_PHRASE_DIRECT_ENTROPY_WARNING);
|
|
2924
|
+
}
|
|
2925
|
+
return {
|
|
2926
|
+
mnemonic,
|
|
2927
|
+
keyType,
|
|
2928
|
+
address: account.address,
|
|
2929
|
+
warnings
|
|
2930
|
+
};
|
|
2931
|
+
}
|
|
2932
|
+
async function recoverEmbeddedWalletFromMnemonic(options) {
|
|
2933
|
+
const scopeId = scopeFromOptions(options);
|
|
2934
|
+
const existing = await loadVaultForScope(scopeId);
|
|
2935
|
+
if (existing && !options.replaceExisting) {
|
|
2936
|
+
throw new EmbeddedWalletVaultError(
|
|
2937
|
+
"An embedded wallet already exists on this device; pass replaceExisting to recover over it"
|
|
2938
|
+
);
|
|
2939
|
+
}
|
|
2940
|
+
const hdPath = options.hdPath ?? defaultEmbeddedHdPath();
|
|
2941
|
+
let keyType = options.keyType;
|
|
2942
|
+
if (!keyType && options.expectedAddress) {
|
|
2943
|
+
keyType = await detectRecoveryMnemonicKeyType(
|
|
2944
|
+
options.mnemonic,
|
|
2945
|
+
options.expectedAddress,
|
|
2946
|
+
hdPath
|
|
2947
|
+
);
|
|
2948
|
+
}
|
|
2949
|
+
if (!keyType) {
|
|
2950
|
+
keyType = EMBEDDED_WALLET_KEY_HD_DERIVED;
|
|
2951
|
+
}
|
|
2952
|
+
const createdAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
2953
|
+
const plaintext = await plaintextFromRecoveryMnemonic(
|
|
2954
|
+
options.mnemonic,
|
|
2955
|
+
keyType,
|
|
2956
|
+
createdAt,
|
|
2957
|
+
hdPath
|
|
2958
|
+
);
|
|
2959
|
+
const address = await recoveryMnemonicAddress(options.mnemonic, keyType, hdPath);
|
|
2960
|
+
if (options.expectedAddress && address !== options.expectedAddress) {
|
|
2961
|
+
throw new EmbeddedWalletVaultError(
|
|
2962
|
+
"Recovered wallet address does not match expectedAddress"
|
|
2963
|
+
);
|
|
2964
|
+
}
|
|
2965
|
+
const result = await encryptPlaintextWithPasscode(plaintext, options.passcode);
|
|
2966
|
+
if (result.address !== address) {
|
|
2967
|
+
throw new EmbeddedWalletVaultError("Internal error: recovered address mismatch");
|
|
2968
|
+
}
|
|
2969
|
+
await saveVaultToIndexedDb(result.vault, { scopeId });
|
|
2970
|
+
lockEmbeddedWallet();
|
|
2971
|
+
activeScopeId = scopeId;
|
|
2972
|
+
return { address: result.address, vault: result.vault, keyType };
|
|
2973
|
+
}
|
|
2974
|
+
async function enableEmbeddedPasskeyUnlock(options) {
|
|
2975
|
+
const scopeId = scopeFromOptions(options) ?? activeScopeId;
|
|
2976
|
+
const vault = await loadVaultForScope(scopeId);
|
|
2977
|
+
if (!vault) {
|
|
2978
|
+
throw new EmbeddedWalletVaultError("No embedded wallet found on this device");
|
|
2979
|
+
}
|
|
2980
|
+
if (vaultUsesPasskeyUnlock(vault)) {
|
|
2981
|
+
throw new EmbeddedWalletVaultError("Passkey unlock is already enabled for this wallet");
|
|
2982
|
+
}
|
|
2983
|
+
if (!vaultUsesPasscodeUnlock(vault)) {
|
|
2984
|
+
throw new EmbeddedWalletVaultError("Unsupported vault unlock method for passkey upgrade");
|
|
2985
|
+
}
|
|
2986
|
+
const addressBefore = vault.publicAddress;
|
|
2987
|
+
const backupAcknowledged = vault.backupAcknowledged;
|
|
2988
|
+
const plaintext = await decryptVaultWithPasscodeProtected(vault, options.passcode);
|
|
2989
|
+
const registration = await registerPasskey({
|
|
2990
|
+
userId: options.userId,
|
|
2991
|
+
userName: options.userName,
|
|
2992
|
+
displayName: options.displayName,
|
|
2993
|
+
rpId: options.rpId
|
|
2994
|
+
});
|
|
2995
|
+
const result = await encryptPlaintextWithPasskeyRegistration(
|
|
2996
|
+
plaintext,
|
|
2997
|
+
registration,
|
|
2998
|
+
backupAcknowledged
|
|
2999
|
+
);
|
|
3000
|
+
if (result.address !== addressBefore) {
|
|
3001
|
+
throw new EmbeddedWalletVaultError("Passkey upgrade must not change wallet address");
|
|
3002
|
+
}
|
|
3003
|
+
await saveVaultToIndexedDb(result.vault, { scopeId });
|
|
3004
|
+
if (activeSession) {
|
|
3005
|
+
activeSession = { ...activeSession, vault: result.vault };
|
|
3006
|
+
}
|
|
3007
|
+
lockEmbeddedWallet();
|
|
3008
|
+
return result;
|
|
3009
|
+
}
|
|
3010
|
+
async function unlockEmbeddedWallet(options = {}) {
|
|
3011
|
+
const scopeId = scopeFromOptions(options) ?? activeScopeId;
|
|
3012
|
+
const vault = await loadVaultForScope(scopeId);
|
|
3013
|
+
if (!vault) {
|
|
3014
|
+
throw new EmbeddedWalletVaultError("No embedded wallet found on this device");
|
|
3015
|
+
}
|
|
3016
|
+
return unlockVaultToSession(vault, options);
|
|
2361
3017
|
}
|
|
2362
3018
|
function lockEmbeddedWallet() {
|
|
2363
3019
|
activeSession = null;
|
|
3020
|
+
activeScopeId = void 0;
|
|
2364
3021
|
}
|
|
2365
3022
|
function getEmbeddedWalletSession() {
|
|
2366
3023
|
return activeSession;
|
|
@@ -2376,13 +3033,14 @@ function getEmbeddedOfflineSigner() {
|
|
|
2376
3033
|
signDirect: (signerAddress, signDoc) => inner.signDirect(signerAddress, signDoc)
|
|
2377
3034
|
};
|
|
2378
3035
|
}
|
|
2379
|
-
async function acknowledgeEmbeddedBackup() {
|
|
2380
|
-
const
|
|
3036
|
+
async function acknowledgeEmbeddedBackup(options = {}) {
|
|
3037
|
+
const scopeId = scopeFromOptions(options) ?? activeScopeId;
|
|
3038
|
+
const vault = await loadVaultForScope(scopeId);
|
|
2381
3039
|
if (!vault) {
|
|
2382
3040
|
throw new EmbeddedWalletVaultError("No embedded wallet found on this device");
|
|
2383
3041
|
}
|
|
2384
3042
|
const updated = markVaultBackupAcknowledged(vault);
|
|
2385
|
-
await saveVaultToIndexedDb(updated);
|
|
3043
|
+
await saveVaultToIndexedDb(updated, { scopeId });
|
|
2386
3044
|
if (activeSession) {
|
|
2387
3045
|
activeSession = { ...activeSession, vault: updated };
|
|
2388
3046
|
}
|
|
@@ -2397,15 +3055,24 @@ function downloadEmbeddedBackupFile(backup, filename) {
|
|
|
2397
3055
|
anchor.click();
|
|
2398
3056
|
URL.revokeObjectURL(url);
|
|
2399
3057
|
}
|
|
2400
|
-
async function importEmbeddedBackup(json) {
|
|
3058
|
+
async function importEmbeddedBackup(json, options = {}) {
|
|
3059
|
+
const scopeId = scopeFromOptions(options);
|
|
3060
|
+
const existing = await loadVaultForScope(scopeId);
|
|
3061
|
+
if (existing && !options.replaceExisting) {
|
|
3062
|
+
throw new EmbeddedWalletVaultError(
|
|
3063
|
+
"An embedded wallet already exists on this device; pass replaceExisting to import over it"
|
|
3064
|
+
);
|
|
3065
|
+
}
|
|
2401
3066
|
const backup = parseEncryptedBackup(json);
|
|
2402
|
-
await saveVaultToIndexedDb(backup.vault);
|
|
3067
|
+
await saveVaultToIndexedDb(backup.vault, { scopeId });
|
|
2403
3068
|
lockEmbeddedWallet();
|
|
3069
|
+
activeScopeId = scopeId;
|
|
2404
3070
|
return backup.vault;
|
|
2405
3071
|
}
|
|
2406
|
-
async function clearEmbeddedWallet() {
|
|
3072
|
+
async function clearEmbeddedWallet(options = {}) {
|
|
3073
|
+
const scopeId = scopeFromOptions(options) ?? activeScopeId;
|
|
2407
3074
|
lockEmbeddedWallet();
|
|
2408
|
-
await clearVaultFromIndexedDb();
|
|
3075
|
+
await clearVaultFromIndexedDb({ scopeId });
|
|
2409
3076
|
}
|
|
2410
3077
|
|
|
2411
3078
|
// src/submitApplication.ts
|
|
@@ -2448,6 +3115,6 @@ async function signCitizenshipAttestation(params) {
|
|
|
2448
3115
|
return { signature, input };
|
|
2449
3116
|
}
|
|
2450
3117
|
|
|
2451
|
-
export { ATTESTATION_TYPE_CITIZENSHIP_APPLICATION, ATTESTATION_TYPE_RECOVERY, ApplicationStatus, BECH32_PREFIX, CHAIN_COIN_TYPE, DEFAULT_CHAIN_ID, DEFAULT_REST_URL, DEFAULT_RPC_URL, EMBEDDED_WALLET_KDF_PBKDF2, EMBEDDED_WALLET_KDF_PRF, EMBEDDED_WALLET_VAULT_VERSION, EmbeddedWalletBackupRequiredError, EmbeddedWalletVaultError, InvalidChainConfigError, MsgSubmitApplication, MsgSubmitRecoveryAttestation, RecoveryAttestationStatus, RpcConnectionError, UKDR_DECIMALS, UKDR_DISPLAY_DENOM, UKDR_MINIMAL_DENOM, WALLETCONNECT_COSMOS_METHODS, WALLETCONNECT_COSMOS_NAMESPACE, WEBAUTHN_RP_NAME, WalletAccountError, WalletConnectNotInitializedError, WalletConnectSessionError, WalletConnectSigningError, WalletConnectionError, WalletConnectionRejectedError, WalletNotInstalledError, WebAuthnUnavailableError, WebAuthnUserCancelledError, acknowledgeEmbeddedBackup, assertPasskey, assertVaultPermitsTransaction, attestationSignPayload, buildKingdomChainInfo, buildRequiredCosmosNamespaces, buildSubmitApplicationMsg, clearEmbeddedWallet, clearVaultFromIndexedDb, connectCosmostation, connectKeplr, connectLeap, connectWalletConnect, createBrowserSigningClient, createEmbeddedWallet, createKingdomChainRegistry, createPasskeyMaterialFromAssertion, createPbkdf2Salt, createWalletConnectOfflineSigner, decodeCredentialId, decryptWalletPayload, defaultEmbeddedHdPath, deriveKekFromPbkdf2, deriveKekFromPrf, detectWebAuthnPrfCapabilities, disconnectWalletConnect, downloadEmbeddedBackupFile, embeddedPlaintextToSigner, encodeCredentialId, encryptWalletPayload, exportEncryptedBackup, getCosmostationKeplrApi, getEmbeddedOfflineSigner, getEmbeddedWalletSession, hasEmbeddedWallet, importEmbeddedBackup, initWalletConnectClient, isCosmostationAvailable, isKeplrAvailable, isLeapAvailable, loadVaultFromIndexedDb, lockEmbeddedWallet, markVaultBackupAcknowledged, parseEncryptedBackup, parseWalletConnectAccount, providerSeedFromHex, publicKeyFromPrivateSeed, readPrfOutput, registerPasskey, restoreWalletConnectSession, saveVaultToIndexedDb, selectEmbeddedWalletKdf, serializeBackupFile, signAttestationPayload, signCitizenshipAttestation, suggestAndConnect, toWalletConnectCosmosChainId, unlockEmbeddedWallet, validateChainConfig };
|
|
3118
|
+
export { ATTESTATION_TYPE_CITIZENSHIP_APPLICATION, ATTESTATION_TYPE_RECOVERY, ApplicationStatus, BECH32_PREFIX, CHAIN_COIN_TYPE, DEFAULT_CHAIN_ID, DEFAULT_REST_URL, DEFAULT_RPC_URL, EMBEDDED_WALLET_KDF_PBKDF2, EMBEDDED_WALLET_KDF_PIN, EMBEDDED_WALLET_KDF_PRF, EMBEDDED_WALLET_KEY_DIRECT_ENTROPY, EMBEDDED_WALLET_KEY_HD_DERIVED, EMBEDDED_WALLET_PASSCODE_MAX_LENGTH, EMBEDDED_WALLET_PASSCODE_MIN_LENGTH, EMBEDDED_WALLET_PASSKEY_PBKDF2_ITERATIONS, EMBEDDED_WALLET_PIN_PBKDF2_ITERATIONS, EMBEDDED_WALLET_RECOVERY_PHRASE_DIRECT_ENTROPY_WARNING, EMBEDDED_WALLET_RECOVERY_PHRASE_GENERAL_WARNING, EMBEDDED_WALLET_VAULT_VERSION, EmbeddedWalletBackupRequiredError, EmbeddedWalletDecryptError, EmbeddedWalletLockoutError, EmbeddedWalletVaultError, EmbeddedWalletWeakPasscodeError, InvalidChainConfigError, MsgSubmitApplication, MsgSubmitRecoveryAttestation, PASSCODE_LOCKOUT_FAILURE_THRESHOLD, PASSCODE_LOCKOUT_INITIAL_MS, PASSCODE_LOCKOUT_MAX_MS, RecoveryAttestationStatus, RpcConnectionError, UKDR_DECIMALS, UKDR_DISPLAY_DENOM, UKDR_MINIMAL_DENOM, VAULT_LEGACY_KEY, WALLETCONNECT_COSMOS_METHODS, WALLETCONNECT_COSMOS_NAMESPACE, WEBAUTHN_RP_NAME, WalletAccountError, WalletConnectNotInitializedError, WalletConnectSessionError, WalletConnectSigningError, WalletConnectionError, WalletConnectionRejectedError, WalletNotInstalledError, WebAuthnUnavailableError, WebAuthnUserCancelledError, acknowledgeEmbeddedBackup, addressFromHdMnemonic, addressFromPrivateKey, assertPasscodeAllowedForCreation, assertPasscodeUnlockAllowed, assertPasskey, assertValidPasscode, assertValidRecoveryMnemonic, assertVaultPermitsTransaction, attestationSignPayload, buildKingdomChainInfo, buildRequiredCosmosNamespaces, buildSubmitApplicationMsg, clearEmbeddedWallet, clearPasscodeLockoutRecord, clearVaultFromIndexedDb, computePasscodeLockoutDurationMs, connectCosmostation, connectKeplr, connectLeap, connectWalletConnect, createBrowserSigningClient, createEmbeddedWallet, createHdDerivedPlaintext, createKingdomChainRegistry, createPasskeyMaterialFromAssertion, createPbkdf2Salt, createWalletConnectOfflineSigner, decodeCredentialId, decodeDirectEntropyMnemonic, decryptWalletPayload, defaultEmbeddedHdPath, deriveKekFromPasscode, deriveKekFromPbkdf2, deriveKekFromPrf, derivePrivateKeyFromHdMnemonic, detectRecoveryMnemonicKeyType, detectWebAuthnPrfCapabilities, disconnectWalletConnect, downloadEmbeddedBackupFile, embeddedPlaintextToSigner, enableEmbeddedPasskeyUnlock, encodeCredentialId, encodeDirectEntropyMnemonic, encryptWalletPayload, evaluatePasscodeStrength, exportEncryptedBackup, getCosmostationKeplrApi, getEmbeddedOfflineSigner, getEmbeddedWalletSession, getPasscodeLockoutState, hasEmbeddedWallet, hasLegacyEmbeddedWallet, hasMixedCharacterClasses, importEmbeddedBackup, initWalletConnectClient, isCosmostationAvailable, isKeplrAvailable, isLeapAvailable, loadPasscodeLockoutRecord, loadVaultFromIndexedDb, lockEmbeddedWallet, markVaultBackupAcknowledged, migrateLegacyEmbeddedWallet, normalizePasscode, normalizeRecoveryMnemonic, parseEncryptedBackup, parseWalletConnectAccount, plaintextFromRecoveryMnemonic, providerSeedFromHex, publicKeyFromPrivateSeed, readPrfOutput, recordPasscodeUnlockFailure, recordPasscodeUnlockSuccess, recoverEmbeddedWalletFromMnemonic, recoveryMnemonicAddress, recoveryMnemonicFromPlaintext, registerPasskey, resolvePlaintextKeyType, resolveVaultStorageKey, restoreWalletConnectSession, revealEmbeddedRecoveryPhrase, savePasscodeLockoutRecord, saveVaultToIndexedDb, selectEmbeddedWalletKdf, serializeBackupFile, signAttestationPayload, signCitizenshipAttestation, suggestAndConnect, toWalletConnectCosmosChainId, unlockEmbeddedWallet, validateChainConfig, vaultUsesPasscodeUnlock, vaultUsesPasskeyUnlock };
|
|
2452
3119
|
//# sourceMappingURL=index.js.map
|
|
2453
3120
|
//# sourceMappingURL=index.js.map
|