You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ni...@apache.org on 2009/08/02 01:32:55 UTC

svn commit: r799961 - in /commons/proper/codec/trunk: RELEASE-NOTES.txt src/test/org/apache/commons/codec/language/DoubleMetaphone2Test.java src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.java xdocs/changes.xml

Author: niallp
Date: Sat Aug  1 23:32:54 2009
New Revision: 799961

URL: http://svn.apache.org/viewvc?rev=799961&view=rev
Log:
CODEC-83  Improve Double Metaphone test coverage

Added:
    commons/proper/codec/trunk/src/test/org/apache/commons/codec/language/DoubleMetaphone2Test.java   (with props)
Modified:
    commons/proper/codec/trunk/RELEASE-NOTES.txt
    commons/proper/codec/trunk/src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.java
    commons/proper/codec/trunk/xdocs/changes.xml

Modified: commons/proper/codec/trunk/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/RELEASE-NOTES.txt?rev=799961&r1=799960&r2=799961&view=diff
==============================================================================
--- commons/proper/codec/trunk/RELEASE-NOTES.txt (original)
+++ commons/proper/codec/trunk/RELEASE-NOTES.txt Sat Aug  1 23:32:54 2009
@@ -42,6 +42,7 @@
 o [CODEC-22] Base64.isArrayByteBase64() throws an ArrayIndexOutOfBoundsException for negative octets
 o [CODEC-78] Base64: Improve Code Coverage
 o [CODEC-81] Base64's new constructor parameters ignored
+o [CODEC-83] Improve Double Metaphone test coverage
 
   Changes:
 

Added: commons/proper/codec/trunk/src/test/org/apache/commons/codec/language/DoubleMetaphone2Test.java
URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/test/org/apache/commons/codec/language/DoubleMetaphone2Test.java?rev=799961&view=auto
==============================================================================
--- commons/proper/codec/trunk/src/test/org/apache/commons/codec/language/DoubleMetaphone2Test.java (added)
+++ commons/proper/codec/trunk/src/test/org/apache/commons/codec/language/DoubleMetaphone2Test.java Sat Aug  1 23:32:54 2009
@@ -0,0 +1,1308 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.codec.language;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Tests {@link DoubleMetaphone}.
+ * <p>
+ * The test data was extracted from Stephen Woodbridge's
+ * <a href="http://swoodbridge.com/DoubleMetaPhone/surnames.txt">php test program</a>.
+ * 
+ * @see http://swoodbridge.com/DoubleMetaPhone/surnames.txt
+ * @version $Id$
+ */
+public class DoubleMetaphone2Test extends TestCase {
+
+
+    public static Test suite() {
+        return new TestSuite(DoubleMetaphone2Test.class);
+    }
+
+    private DoubleMetaphone doubleMetaphone = null;
+
+    /**
+     * Construct a new test case.
+     *
+     * @param name The name of the test
+     */
+    public DoubleMetaphone2Test(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+        this.doubleMetaphone = new DoubleMetaphone();
+    }
+
+    /**
+     * Tear Down.
+     */
+    public void tearDown() throws Exception {
+        super.tearDown();
+        this.doubleMetaphone = null;
+    }
+
+    /**
+     * Test primary encoding.
+     */
+    public void testDoubleMetaphonePrimary() {
+        String value = null;
+        for (int i = 0; i < TEST_DATA.length; i++) {
+            value = TEST_DATA[i][0];
+            assertEquals("Test [" + i + "]=" + value, TEST_DATA[i][1], doubleMetaphone.doubleMetaphone(value, false));
+        }
+    }
+
+    /**
+     * Test alternative encoding.
+     */
+    public void testDoubleMetaphoneAlternate() {
+        String value = null;
+        for (int i = 0; i < TEST_DATA.length; i++) {
+            value = TEST_DATA[i][0];
+            assertEquals("Test [" + i + "]=" + value, TEST_DATA[i][2], doubleMetaphone.doubleMetaphone(value, true));
+        }
+    }
+
+    /** Test values and their expected primary & alternate Double Metaphone encodings */
+    private static final String[][] TEST_DATA = new String[][] {
+        new String[] {"ALLERTON",    "ALRT", "ALRT"},
+        new String[] {"Acton",       "AKTN", "AKTN"},
+        new String[] {"Adams",       "ATMS", "ATMS"},
+        new String[] {"Aggar",       "AKR",  "AKR"},
+        new String[] {"Ahl",         "AL",   "AL"},
+        new String[] {"Aiken",       "AKN",  "AKN"},
+        new String[] {"Alan",        "ALN",  "ALN"},
+        new String[] {"Alcock",      "ALKK", "ALKK"},
+        new String[] {"Alden",       "ALTN", "ALTN"},
+        new String[] {"Aldham",      "ALTM", "ALTM"},
+        new String[] {"Allen",       "ALN",  "ALN"},
+        new String[] {"Allerton",    "ALRT", "ALRT"},
+        new String[] {"Alsop",       "ALSP", "ALSP"},
+        new String[] {"Alwein",      "ALN",  "ALN"},
+        new String[] {"Ambler",      "AMPL", "AMPL"},
+        new String[] {"Andevill",    "ANTF", "ANTF"},
+        new String[] {"Andrews",     "ANTR", "ANTR"},
+        new String[] {"Andreyco",    "ANTR", "ANTR"},
+        new String[] {"Andriesse",   "ANTR", "ANTR"},
+//        new String[] {"Angier",      "ANJ",  "ANJR"}, /* Failing Secondary, result=ANKR */
+        new String[] {"Annabel",     "ANPL", "ANPL"},
+        new String[] {"Anne",        "AN",   "AN"},
+        new String[] {"Anstye",      "ANST", "ANST"},
+        new String[] {"Appling",     "APLN", "APLN"},
+        new String[] {"Apuke",       "APK",  "APK"},
+        new String[] {"Arnold",      "ARNL", "ARNL"},
+        new String[] {"Ashby",       "AXP",  "AXP"},
+        new String[] {"Astwood",     "ASTT", "ASTT"},
+        new String[] {"Atkinson",    "ATKN", "ATKN"},
+        new String[] {"Audley",      "ATL",  "ATL"},
+        new String[] {"Austin",      "ASTN", "ASTN"},
+        new String[] {"Avenal",      "AFNL", "AFNL"},
+        new String[] {"Ayer",        "AR",   "AR"},
+        new String[] {"Ayot",        "AT",   "AT"},
+        new String[] {"Babbitt",     "PPT",  "PPT"},
+        new String[] {"Bachelor",    "PXLR", "PKLR"},
+        new String[] {"Bachelour",   "PXLR", "PKLR"},
+        new String[] {"Bailey",      "PL",   "PL"},
+        new String[] {"Baivel",      "PFL",  "PFL"},
+        new String[] {"Baker",       "PKR",  "PKR"},
+        new String[] {"Baldwin",     "PLTN", "PLTN"},
+        new String[] {"Balsley",     "PLSL", "PLSL"},
+        new String[] {"Barber",      "PRPR", "PRPR"},
+        new String[] {"Barker",      "PRKR", "PRKR"},
+        new String[] {"Barlow",      "PRL",  "PRLF"},
+        new String[] {"Barnard",     "PRNR", "PRNR"},
+        new String[] {"Barnes",      "PRNS", "PRNS"},
+        new String[] {"Barnsley",    "PRNS", "PRNS"},
+        new String[] {"Barouxis",    "PRKS", "PRKS"},
+        new String[] {"Bartlet",     "PRTL", "PRTL"},
+        new String[] {"Basley",      "PSL",  "PSL"},
+        new String[] {"Basset",      "PST",  "PST"},
+        new String[] {"Bassett",     "PST",  "PST"},
+        new String[] {"Batchlor",    "PXLR", "PXLR"},
+        new String[] {"Bates",       "PTS",  "PTS"},
+        new String[] {"Batson",      "PTSN", "PTSN"},
+        new String[] {"Bayes",       "PS",   "PS"},
+        new String[] {"Bayley",      "PL",   "PL"},
+        new String[] {"Beale",       "PL",   "PL"},
+        new String[] {"Beauchamp",   "PXMP", "PKMP"},
+        new String[] {"Beauclerc",   "PKLR", "PKLR"},
+        new String[] {"Beech",       "PK",   "PK"},
+        new String[] {"Beers",       "PRS",  "PRS"},
+        new String[] {"Beke",        "PK",   "PK"},
+        new String[] {"Belcher",     "PLXR", "PLKR"},
+        new String[] {"Benjamin",    "PNJM", "PNJM"},
+        new String[] {"Benningham",  "PNNK", "PNNK"},
+        new String[] {"Bereford",    "PRFR", "PRFR"},
+        new String[] {"Bergen",      "PRJN", "PRKN"},
+        new String[] {"Berkeley",    "PRKL", "PRKL"},
+        new String[] {"Berry",       "PR",   "PR"},
+        new String[] {"Besse",       "PS",   "PS"},
+        new String[] {"Bessey",      "PS",   "PS"},
+        new String[] {"Bessiles",    "PSLS", "PSLS"},
+        new String[] {"Bigelow",     "PJL",  "PKLF"},
+        new String[] {"Bigg",        "PK",   "PK"},
+        new String[] {"Bigod",       "PKT",  "PKT"},
+        new String[] {"Billings",    "PLNK", "PLNK"},
+        new String[] {"Bimper",      "PMPR", "PMPR"},
+        new String[] {"Binker",      "PNKR", "PNKR"},
+        new String[] {"Birdsill",    "PRTS", "PRTS"},
+        new String[] {"Bishop",      "PXP",  "PXP"},
+        new String[] {"Black",       "PLK",  "PLK"},
+        new String[] {"Blagge",      "PLK",  "PLK"},
+        new String[] {"Blake",       "PLK",  "PLK"},
+        new String[] {"Blanck",      "PLNK", "PLNK"},
+        new String[] {"Bledsoe",     "PLTS", "PLTS"},
+        new String[] {"Blennerhasset","PLNR", "PLNR"},
+        new String[] {"Blessing",    "PLSN", "PLSN"},
+        new String[] {"Blewett",     "PLT",  "PLT"},
+        new String[] {"Bloctgoed",   "PLKT", "PLKT"},
+        new String[] {"Bloetgoet",   "PLTK", "PLTK"},
+        new String[] {"Bloodgood",   "PLTK", "PLTK"},
+        new String[] {"Blossom",     "PLSM", "PLSM"},
+        new String[] {"Blount",      "PLNT", "PLNT"},
+        new String[] {"Bodine",      "PTN",  "PTN"},
+        new String[] {"Bodman",      "PTMN", "PTMN"},
+        new String[] {"BonCoeur",    "PNKR", "PNKR"},
+        new String[] {"Bond",        "PNT",  "PNT"},
+        new String[] {"Boscawen",    "PSKN", "PSKN"},
+        new String[] {"Bosworth",    "PSR0", "PSRT"},
+        new String[] {"Bouchier",    "PX",   "PKR"},
+        new String[] {"Bowne",       "PN",   "PN"},
+        new String[] {"Bradbury",    "PRTP", "PRTP"},
+        new String[] {"Bradder",     "PRTR", "PRTR"},
+        new String[] {"Bradford",    "PRTF", "PRTF"},
+        new String[] {"Bradstreet",  "PRTS", "PRTS"},
+        new String[] {"Braham",      "PRHM", "PRHM"},
+        new String[] {"Brailsford",  "PRLS", "PRLS"},
+        new String[] {"Brainard",    "PRNR", "PRNR"},
+        new String[] {"Brandish",    "PRNT", "PRNT"},
+        new String[] {"Braun",       "PRN",  "PRN"},
+        new String[] {"Brecc",       "PRK",  "PRK"},
+        new String[] {"Brent",       "PRNT", "PRNT"},
+        new String[] {"Brenton",     "PRNT", "PRNT"},
+        new String[] {"Briggs",      "PRKS", "PRKS"},
+        new String[] {"Brigham",     "PRM",  "PRM"},
+        new String[] {"Brobst",      "PRPS", "PRPS"},
+        new String[] {"Brome",       "PRM",  "PRM"},
+        new String[] {"Bronson",     "PRNS", "PRNS"},
+        new String[] {"Brooks",      "PRKS", "PRKS"},
+        new String[] {"Brouillard",  "PRLR", "PRLR"},
+        new String[] {"Brown",       "PRN",  "PRN"},
+        new String[] {"Browne",      "PRN",  "PRN"},
+        new String[] {"Brownell",    "PRNL", "PRNL"},
+        new String[] {"Bruley",      "PRL",  "PRL"},
+        new String[] {"Bryant",      "PRNT", "PRNT"},
+        new String[] {"Brzozowski",  "PRSS", "PRTS"},
+        new String[] {"Buide",       "PT",   "PT"},
+        new String[] {"Bulmer",      "PLMR", "PLMR"},
+        new String[] {"Bunker",      "PNKR", "PNKR"},
+        new String[] {"Burden",      "PRTN", "PRTN"},
+        new String[] {"Burge",       "PRJ",  "PRK"},
+        new String[] {"Burgoyne",    "PRKN", "PRKN"},
+        new String[] {"Burke",       "PRK",  "PRK"},
+        new String[] {"Burnett",     "PRNT", "PRNT"},
+        new String[] {"Burpee",      "PRP",  "PRP"},
+        new String[] {"Bursley",     "PRSL", "PRSL"},
+        new String[] {"Burton",      "PRTN", "PRTN"},
+        new String[] {"Bushnell",    "PXNL", "PXNL"},
+        new String[] {"Buss",        "PS",   "PS"},
+        new String[] {"Buswell",     "PSL",  "PSL"},
+        new String[] {"Butler",      "PTLR", "PTLR"},
+        new String[] {"Calkin",      "KLKN", "KLKN"},
+        new String[] {"Canada",      "KNT",  "KNT"},
+        new String[] {"Canmore",     "KNMR", "KNMR"},
+        new String[] {"Canney",      "KN",   "KN"},
+        new String[] {"Capet",       "KPT",  "KPT"},
+        new String[] {"Card",        "KRT",  "KRT"},
+        new String[] {"Carman",      "KRMN", "KRMN"},
+        new String[] {"Carpenter",   "KRPN", "KRPN"},
+        new String[] {"Cartwright",  "KRTR", "KRTR"},
+        new String[] {"Casey",       "KS",   "KS"},
+        new String[] {"Catterfield", "KTRF", "KTRF"},
+        new String[] {"Ceeley",      "SL",   "SL"},
+        new String[] {"Chambers",    "XMPR", "XMPR"},
+        new String[] {"Champion",    "XMPN", "XMPN"},
+        new String[] {"Chapman",     "XPMN", "XPMN"},
+        new String[] {"Chase",       "XS",   "XS"},
+        new String[] {"Cheney",      "XN",   "XN"},
+        new String[] {"Chetwynd",    "XTNT", "XTNT"},
+        new String[] {"Chevalier",   "XFL",  "XFLR"},
+        new String[] {"Chillingsworth","XLNK", "XLNK"},
+        new String[] {"Christie",    "KRST", "KRST"},
+        new String[] {"Chubbuck",    "XPK",  "XPK"},
+        new String[] {"Church",      "XRX",  "XRK"},
+        new String[] {"Clark",       "KLRK", "KLRK"},
+        new String[] {"Clarke",      "KLRK", "KLRK"},
+        new String[] {"Cleare",      "KLR",  "KLR"},
+        new String[] {"Clement",     "KLMN", "KLMN"},
+        new String[] {"Clerke",      "KLRK", "KLRK"},
+        new String[] {"Clibben",     "KLPN", "KLPN"},
+        new String[] {"Clifford",    "KLFR", "KLFR"},
+        new String[] {"Clivedon",    "KLFT", "KLFT"},
+        new String[] {"Close",       "KLS",  "KLS"},
+        new String[] {"Clothilde",   "KL0L", "KLTL"},
+        new String[] {"Cobb",        "KP",   "KP"},
+        new String[] {"Coburn",      "KPRN", "KPRN"},
+        new String[] {"Coburne",     "KPRN", "KPRN"},
+        new String[] {"Cocke",       "KK",   "KK"},
+        new String[] {"Coffin",      "KFN",  "KFN"},
+        new String[] {"Coffyn",      "KFN",  "KFN"},
+        new String[] {"Colborne",    "KLPR", "KLPR"},
+        new String[] {"Colby",       "KLP",  "KLP"},
+        new String[] {"Cole",        "KL",   "KL"},
+        new String[] {"Coleman",     "KLMN", "KLMN"},
+        new String[] {"Collier",     "KL",   "KLR"},
+        new String[] {"Compton",     "KMPT", "KMPT"},
+        new String[] {"Cone",        "KN",   "KN"},
+        new String[] {"Cook",        "KK",   "KK"},
+        new String[] {"Cooke",       "KK",   "KK"},
+        new String[] {"Cooper",      "KPR",  "KPR"},
+        new String[] {"Copperthwaite","KPR0", "KPRT"},
+        new String[] {"Corbet",      "KRPT", "KRPT"},
+        new String[] {"Corell",      "KRL",  "KRL"},
+        new String[] {"Corey",       "KR",   "KR"},
+        new String[] {"Corlies",     "KRLS", "KRLS"},
+        new String[] {"Corneliszen", "KRNL", "KRNL"},
+        new String[] {"Cornelius",   "KRNL", "KRNL"},
+        new String[] {"Cornwallis",  "KRNL", "KRNL"},
+        new String[] {"Cosgrove",    "KSKR", "KSKR"},
+        new String[] {"Count of Brionne","KNTF", "KNTF"},
+        new String[] {"Covill",      "KFL",  "KFL"},
+        new String[] {"Cowperthwaite","KPR0", "KPRT"},
+        new String[] {"Cowperwaite", "KPRT", "KPRT"},
+        new String[] {"Crane",       "KRN",  "KRN"},
+        new String[] {"Creagmile",   "KRKM", "KRKM"},
+        new String[] {"Crew",        "KR",   "KRF"},
+        new String[] {"Crispin",     "KRSP", "KRSP"},
+        new String[] {"Crocker",     "KRKR", "KRKR"},
+        new String[] {"Crockett",    "KRKT", "KRKT"},
+        new String[] {"Crosby",      "KRSP", "KRSP"},
+        new String[] {"Crump",       "KRMP", "KRMP"},
+        new String[] {"Cunningham",  "KNNK", "KNNK"},
+        new String[] {"Curtis",      "KRTS", "KRTS"},
+        new String[] {"Cutha",       "K0",   "KT"},
+        new String[] {"Cutter",      "KTR",  "KTR"},
+        new String[] {"D'Aubigny",   "TPN",  "TPKN"},
+        new String[] {"DAVIS",       "TFS",  "TFS"},
+        new String[] {"Dabinott",    "TPNT", "TPNT"},
+        new String[] {"Dacre",       "TKR",  "TKR"},
+        new String[] {"Daggett",     "TKT",  "TKT"},
+        new String[] {"Danvers",     "TNFR", "TNFR"},
+        new String[] {"Darcy",       "TRS",  "TRS"},
+        new String[] {"Davis",       "TFS",  "TFS"},
+        new String[] {"Dawn",        "TN",   "TN"},
+        new String[] {"Dawson",      "TSN",  "TSN"},
+        new String[] {"Day",         "T",    "T"},
+        new String[] {"Daye",        "T",    "T"},
+        new String[] {"DeGrenier",   "TKRN", "TKRN"},
+        new String[] {"Dean",        "TN",   "TN"},
+        new String[] {"Deekindaugh", "TKNT", "TKNT"},
+        new String[] {"Dennis",      "TNS",  "TNS"},
+        new String[] {"Denny",       "TN",   "TN"},
+        new String[] {"Denton",      "TNTN", "TNTN"},
+        new String[] {"Desborough",  "TSPR", "TSPR"},
+        new String[] {"Despenser",   "TSPN", "TSPN"},
+        new String[] {"Deverill",    "TFRL", "TFRL"},
+        new String[] {"Devine",      "TFN",  "TFN"},
+        new String[] {"Dexter",      "TKST", "TKST"},
+        new String[] {"Dillaway",    "TL",   "TL"},
+        new String[] {"Dimmick",     "TMK",  "TMK"},
+        new String[] {"Dinan",       "TNN",  "TNN"},
+        new String[] {"Dix",         "TKS",  "TKS"},
+        new String[] {"Doggett",     "TKT",  "TKT"},
+        new String[] {"Donahue",     "TNH",  "TNH"},
+        new String[] {"Dorfman",     "TRFM", "TRFM"},
+        new String[] {"Dorris",      "TRS",  "TRS"},
+        new String[] {"Dow",         "T",    "TF"},
+        new String[] {"Downey",      "TN",   "TN"},
+        new String[] {"Downing",     "TNNK", "TNNK"},
+        new String[] {"Dowsett",     "TST",  "TST"},
+        new String[] {"Duck?",       "TK",   "TK"},
+        new String[] {"Dudley",      "TTL",  "TTL"},
+        new String[] {"Duffy",       "TF",   "TF"},
+        new String[] {"Dunn",        "TN",   "TN"},
+        new String[] {"Dunsterville","TNST", "TNST"},
+        new String[] {"Durrant",     "TRNT", "TRNT"},
+        new String[] {"Durrin",      "TRN",  "TRN"},
+        new String[] {"Dustin",      "TSTN", "TSTN"},
+        new String[] {"Duston",      "TSTN", "TSTN"},
+        new String[] {"Eames",       "AMS",  "AMS"},
+        new String[] {"Early",       "ARL",  "ARL"},
+        new String[] {"Easty",       "AST",  "AST"},
+        new String[] {"Ebbett",      "APT",  "APT"},
+        new String[] {"Eberbach",    "APRP", "APRP"},
+        new String[] {"Eberhard",    "APRR", "APRR"},
+        new String[] {"Eddy",        "AT",   "AT"},
+        new String[] {"Edenden",     "ATNT", "ATNT"},
+        new String[] {"Edwards",     "ATRT", "ATRT"},
+        new String[] {"Eglinton",    "AKLN", "ALNT"},
+        new String[] {"Eliot",       "ALT",  "ALT"},
+        new String[] {"Elizabeth",   "ALSP", "ALSP"},
+        new String[] {"Ellis",       "ALS",  "ALS"},
+        new String[] {"Ellison",     "ALSN", "ALSN"},
+        new String[] {"Ellot",       "ALT",  "ALT"},
+        new String[] {"Elny",        "ALN",  "ALN"},
+        new String[] {"Elsner",      "ALSN", "ALSN"},
+        new String[] {"Emerson",     "AMRS", "AMRS"},
+        new String[] {"Empson",      "AMPS", "AMPS"},
+        new String[] {"Est",         "AST",  "AST"},
+        new String[] {"Estabrook",   "ASTP", "ASTP"},
+        new String[] {"Estes",       "ASTS", "ASTS"},
+        new String[] {"Estey",       "AST",  "AST"},
+        new String[] {"Evans",       "AFNS", "AFNS"},
+        new String[] {"Fallowell",   "FLL",  "FLL"},
+        new String[] {"Farnsworth",  "FRNS", "FRNS"},
+        new String[] {"Feake",       "FK",   "FK"},
+        new String[] {"Feke",        "FK",   "FK"},
+        new String[] {"Fellows",     "FLS",  "FLS"},
+        new String[] {"Fettiplace",  "FTPL", "FTPL"},
+        new String[] {"Finney",      "FN",   "FN"},
+        new String[] {"Fischer",     "FXR",  "FSKR"},
+        new String[] {"Fisher",      "FXR",  "FXR"},
+        new String[] {"Fisk",        "FSK",  "FSK"},
+        new String[] {"Fiske",       "FSK",  "FSK"},
+        new String[] {"Fletcher",    "FLXR", "FLXR"},
+        new String[] {"Folger",      "FLKR", "FLJR"},
+        new String[] {"Foliot",      "FLT",  "FLT"},
+        new String[] {"Folyot",      "FLT",  "FLT"},
+        new String[] {"Fones",       "FNS",  "FNS"},
+        new String[] {"Fordham",     "FRTM", "FRTM"},
+        new String[] {"Forstner",    "FRST", "FRST"},
+        new String[] {"Fosten",      "FSTN", "FSTN"},
+        new String[] {"Foster",      "FSTR", "FSTR"},
+        new String[] {"Foulke",      "FLK",  "FLK"},
+        new String[] {"Fowler",      "FLR",  "FLR"},
+        new String[] {"Foxwell",     "FKSL", "FKSL"},
+        new String[] {"Fraley",      "FRL",  "FRL"},
+        new String[] {"Franceys",    "FRNS", "FRNS"},
+        new String[] {"Franke",      "FRNK", "FRNK"},
+        new String[] {"Frascella",   "FRSL", "FRSL"},
+        new String[] {"Frazer",      "FRSR", "FRSR"},
+        new String[] {"Fredd",       "FRT",  "FRT"},
+        new String[] {"Freeman",     "FRMN", "FRMN"},
+        new String[] {"French",      "FRNX", "FRNK"},
+        new String[] {"Freville",    "FRFL", "FRFL"},
+        new String[] {"Frey",        "FR",   "FR"},
+        new String[] {"Frick",       "FRK",  "FRK"},
+        new String[] {"Frier",       "FR",   "FRR"},
+        new String[] {"Froe",        "FR",   "FR"},
+        new String[] {"Frorer",      "FRRR", "FRRR"},
+        new String[] {"Frost",       "FRST", "FRST"},
+        new String[] {"Frothingham", "FR0N", "FRTN"},
+        new String[] {"Fry",         "FR",   "FR"},
+        new String[] {"Gaffney",     "KFN",  "KFN"},
+        new String[] {"Gage",        "KJ",   "KK"},
+        new String[] {"Gallion",     "KLN",  "KLN"},
+        new String[] {"Gallishan",   "KLXN", "KLXN"},
+        new String[] {"Gamble",      "KMPL", "KMPL"},
+        new String[] {"Garbrand",    "KRPR", "KRPR"},
+        new String[] {"Gardner",     "KRTN", "KRTN"},
+        new String[] {"Garrett",     "KRT",  "KRT"},
+        new String[] {"Gassner",     "KSNR", "KSNR"},
+        new String[] {"Gater",       "KTR",  "KTR"},
+        new String[] {"Gaunt",       "KNT",  "KNT"},
+        new String[] {"Gayer",       "KR",   "KR"},
+        new String[] {"Gerken",      "KRKN", "JRKN"},
+        new String[] {"Gerritsen",   "KRTS", "JRTS"},
+        new String[] {"Gibbs",       "KPS",  "JPS"},
+        new String[] {"Giffard",     "JFRT", "KFRT"},
+        new String[] {"Gilbert",     "KLPR", "JLPR"},
+        new String[] {"Gill",        "KL",   "JL"},
+        new String[] {"Gilman",      "KLMN", "JLMN"},
+        new String[] {"Glass",       "KLS",  "KLS"},
+        new String[] {"Goddard\\Gifford","KTRT", "KTRT"},
+        new String[] {"Godfrey",     "KTFR", "KTFR"},
+        new String[] {"Godwin",      "KTN",  "KTN"},
+        new String[] {"Goodale",     "KTL",  "KTL"},
+        new String[] {"Goodnow",     "KTN",  "KTNF"},
+        new String[] {"Gorham",      "KRM",  "KRM"},
+        new String[] {"Goseline",    "KSLN", "KSLN"},
+        new String[] {"Gott",        "KT",   "KT"},
+        new String[] {"Gould",       "KLT",  "KLT"},
+        new String[] {"Grafton",     "KRFT", "KRFT"},
+        new String[] {"Grant",       "KRNT", "KRNT"},
+        new String[] {"Gray",        "KR",   "KR"},
+        new String[] {"Green",       "KRN",  "KRN"},
+        new String[] {"Griffin",     "KRFN", "KRFN"},
+        new String[] {"Grill",       "KRL",  "KRL"},
+        new String[] {"Grim",        "KRM",  "KRM"},
+        new String[] {"Grisgonelle", "KRSK", "KRSK"},
+        new String[] {"Gross",       "KRS",  "KRS"},
+        new String[] {"Guba",        "KP",   "KP"},
+        new String[] {"Gybbes",      "KPS",  "JPS"},
+        new String[] {"Haburne",     "HPRN", "HPRN"},
+        new String[] {"Hackburne",   "HKPR", "HKPR"},
+        new String[] {"Haddon?",     "HTN",  "HTN"},
+        new String[] {"Haines",      "HNS",  "HNS"},
+        new String[] {"Hale",        "HL",   "HL"},
+        new String[] {"Hall",        "HL",   "HL"},
+        new String[] {"Hallet",      "HLT",  "HLT"},
+        new String[] {"Hallock",     "HLK",  "HLK"},
+        new String[] {"Halstead",    "HLST", "HLST"},
+        new String[] {"Hammond",     "HMNT", "HMNT"},
+        new String[] {"Hance",       "HNS",  "HNS"},
+        new String[] {"Handy",       "HNT",  "HNT"},
+        new String[] {"Hanson",      "HNSN", "HNSN"},
+        new String[] {"Harasek",     "HRSK", "HRSK"},
+        new String[] {"Harcourt",    "HRKR", "HRKR"},
+        new String[] {"Hardy",       "HRT",  "HRT"},
+        new String[] {"Harlock",     "HRLK", "HRLK"},
+        new String[] {"Harris",      "HRS",  "HRS"},
+        new String[] {"Hartley",     "HRTL", "HRTL"},
+        new String[] {"Harvey",      "HRF",  "HRF"},
+        new String[] {"Harvie",      "HRF",  "HRF"},
+        new String[] {"Harwood",     "HRT",  "HRT"},
+        new String[] {"Hathaway",    "H0",   "HT"},
+        new String[] {"Haukeness",   "HKNS", "HKNS"},
+        new String[] {"Hawkes",      "HKS",  "HKS"},
+        new String[] {"Hawkhurst",   "HKRS", "HKRS"},
+        new String[] {"Hawkins",     "HKNS", "HKNS"},
+        new String[] {"Hawley",      "HL",   "HL"},
+        new String[] {"Heald",       "HLT",  "HLT"},
+        new String[] {"Helsdon",     "HLST", "HLST"},
+        new String[] {"Hemenway",    "HMN",  "HMN"},
+        new String[] {"Hemmenway",   "HMN",  "HMN"},
+        new String[] {"Henck",       "HNK",  "HNK"},
+        new String[] {"Henderson",   "HNTR", "HNTR"},
+        new String[] {"Hendricks",   "HNTR", "HNTR"},
+        new String[] {"Hersey",      "HRS",  "HRS"},
+        new String[] {"Hewes",       "HS",   "HS"},
+        new String[] {"Heyman",      "HMN",  "HMN"},
+        new String[] {"Hicks",       "HKS",  "HKS"},
+        new String[] {"Hidden",      "HTN",  "HTN"},
+        new String[] {"Higgs",       "HKS",  "HKS"},
+        new String[] {"Hill",        "HL",   "HL"},
+        new String[] {"Hills",       "HLS",  "HLS"},
+        new String[] {"Hinckley",    "HNKL", "HNKL"},
+        new String[] {"Hipwell",     "HPL",  "HPL"},
+        new String[] {"Hobart",      "HPRT", "HPRT"},
+        new String[] {"Hoben",       "HPN",  "HPN"},
+        new String[] {"Hoffmann",    "HFMN", "HFMN"},
+        new String[] {"Hogan",       "HKN",  "HKN"},
+        new String[] {"Holmes",      "HLMS", "HLMS"},
+        new String[] {"Hoo",         "H",    "H"},
+        new String[] {"Hooker",      "HKR",  "HKR"},
+        new String[] {"Hopcott",     "HPKT", "HPKT"},
+        new String[] {"Hopkins",     "HPKN", "HPKN"},
+        new String[] {"Hopkinson",   "HPKN", "HPKN"},
+        new String[] {"Hornsey",     "HRNS", "HRNS"},
+        new String[] {"Houckgeest",  "HKJS", "HKKS"},
+        new String[] {"Hough",       "H",    "H"},
+        new String[] {"Houstin",     "HSTN", "HSTN"},
+        new String[] {"How",         "H",    "HF"},
+        new String[] {"Howe",        "H",    "H"},
+        new String[] {"Howland",     "HLNT", "HLNT"},
+        new String[] {"Hubner",      "HPNR", "HPNR"},
+        new String[] {"Hudnut",      "HTNT", "HTNT"},
+        new String[] {"Hughes",      "HS",   "HS"},
+        new String[] {"Hull",        "HL",   "HL"},
+        new String[] {"Hulme",       "HLM",  "HLM"},
+        new String[] {"Hume",        "HM",   "HM"},
+        new String[] {"Hundertumark","HNTR", "HNTR"},
+        new String[] {"Hundley",     "HNTL", "HNTL"},
+        new String[] {"Hungerford",  "HNKR", "HNJR"},
+        new String[] {"Hunt",        "HNT",  "HNT"},
+        new String[] {"Hurst",       "HRST", "HRST"},
+        new String[] {"Husbands",    "HSPN", "HSPN"},
+        new String[] {"Hussey",      "HS",   "HS"},
+        new String[] {"Husted",      "HSTT", "HSTT"},
+        new String[] {"Hutchins",    "HXNS", "HXNS"},
+        new String[] {"Hutchinson",  "HXNS", "HXNS"},
+        new String[] {"Huttinger",   "HTNK", "HTNJ"},
+        new String[] {"Huybertsen",  "HPRT", "HPRT"},
+        new String[] {"Iddenden",    "ATNT", "ATNT"},
+        new String[] {"Ingraham",    "ANKR", "ANKR"},
+        new String[] {"Ives",        "AFS",  "AFS"},
+        new String[] {"Jackson",     "JKSN", "AKSN"},
+        new String[] {"Jacob",       "JKP",  "AKP"},
+        new String[] {"Jans",        "JNS",  "ANS"},
+        new String[] {"Jenkins",     "JNKN", "ANKN"},
+        new String[] {"Jewett",      "JT",   "AT"},
+        new String[] {"Jewitt",      "JT",   "AT"},
+        new String[] {"Johnson",     "JNSN", "ANSN"},
+        new String[] {"Jones",       "JNS",  "ANS"},
+        new String[] {"Josephine",   "JSFN", "HSFN"},
+        new String[] {"Judd",        "JT",   "AT"},
+        new String[] {"June",        "JN",   "AN"},
+        new String[] {"Kamarowska",  "KMRS", "KMRS"},
+        new String[] {"Kay",         "K",    "K"},
+        new String[] {"Kelley",      "KL",   "KL"},
+        new String[] {"Kelly",       "KL",   "KL"},
+        new String[] {"Keymber",     "KMPR", "KMPR"},
+        new String[] {"Keynes",      "KNS",  "KNS"},
+        new String[] {"Kilham",      "KLM",  "KLM"},
+        new String[] {"Kim",         "KM",   "KM"},
+        new String[] {"Kimball",     "KMPL", "KMPL"},
+        new String[] {"King",        "KNK",  "KNK"},
+        new String[] {"Kinsey",      "KNS",  "KNS"},
+        new String[] {"Kirk",        "KRK",  "KRK"},
+        new String[] {"Kirton",      "KRTN", "KRTN"},
+        new String[] {"Kistler",     "KSTL", "KSTL"},
+        new String[] {"Kitchen",     "KXN",  "KXN"},
+        new String[] {"Kitson",      "KTSN", "KTSN"},
+        new String[] {"Klett",       "KLT",  "KLT"},
+        new String[] {"Kline",       "KLN",  "KLN"},
+        new String[] {"Knapp",       "NP",   "NP"},
+        new String[] {"Knight",      "NT",   "NT"},
+        new String[] {"Knote",       "NT",   "NT"},
+        new String[] {"Knott",       "NT",   "NT"},
+        new String[] {"Knox",        "NKS",  "NKS"},
+        new String[] {"Koeller",     "KLR",  "KLR"},
+        new String[] {"La Pointe",   "LPNT", "LPNT"},
+        new String[] {"LaPlante",    "LPLN", "LPLN"},
+        new String[] {"Laimbeer",    "LMPR", "LMPR"},
+        new String[] {"Lamb",        "LMP",  "LMP"},
+        new String[] {"Lambertson",  "LMPR", "LMPR"},
+        new String[] {"Lancto",      "LNKT", "LNKT"},
+        new String[] {"Landry",      "LNTR", "LNTR"},
+        new String[] {"Lane",        "LN",   "LN"},
+        new String[] {"Langendyck",  "LNJN", "LNKN"},
+        new String[] {"Langer",      "LNKR", "LNJR"},
+        new String[] {"Langford",    "LNKF", "LNKF"},
+        new String[] {"Lantersee",   "LNTR", "LNTR"},
+        new String[] {"Laquer",      "LKR",  "LKR"},
+        new String[] {"Larkin",      "LRKN", "LRKN"},
+        new String[] {"Latham",      "LTM",  "LTM"},
+        new String[] {"Lathrop",     "L0RP", "LTRP"},
+        new String[] {"Lauter",      "LTR",  "LTR"},
+        new String[] {"Lawrence",    "LRNS", "LRNS"},
+        new String[] {"Leach",       "LK",   "LK"},
+        new String[] {"Leager",      "LKR",  "LJR"},
+        new String[] {"Learned",     "LRNT", "LRNT"},
+        new String[] {"Leavitt",     "LFT",  "LFT"},
+        new String[] {"Lee",         "L",    "L"},
+        new String[] {"Leete",       "LT",   "LT"},
+        new String[] {"Leggett",     "LKT",  "LKT"},
+        new String[] {"Leland",      "LLNT", "LLNT"},
+        new String[] {"Leonard",     "LNRT", "LNRT"},
+        new String[] {"Lester",      "LSTR", "LSTR"},
+        new String[] {"Lestrange",   "LSTR", "LSTR"},
+        new String[] {"Lethem",      "L0M",  "LTM"},
+        new String[] {"Levine",      "LFN",  "LFN"},
+        new String[] {"Lewes",       "LS",   "LS"},
+        new String[] {"Lewis",       "LS",   "LS"},
+        new String[] {"Lincoln",     "LNKL", "LNKL"},
+        new String[] {"Lindsey",     "LNTS", "LNTS"},
+        new String[] {"Linher",      "LNR",  "LNR"},
+        new String[] {"Lippet",      "LPT",  "LPT"},
+        new String[] {"Lippincott",  "LPNK", "LPNK"},
+        new String[] {"Lockwood",    "LKT",  "LKT"},
+        new String[] {"Loines",      "LNS",  "LNS"},
+        new String[] {"Lombard",     "LMPR", "LMPR"},
+        new String[] {"Long",        "LNK",  "LNK"},
+        new String[] {"Longespee",   "LNJS", "LNKS"},
+        new String[] {"Look",        "LK",   "LK"},
+        new String[] {"Lounsberry",  "LNSP", "LNSP"},
+        new String[] {"Lounsbury",   "LNSP", "LNSP"},
+        new String[] {"Louthe",      "L0",   "LT"},
+        new String[] {"Loveyne",     "LFN",  "LFN"},
+        new String[] {"Lowe",        "L",    "L"},
+        new String[] {"Ludlam",      "LTLM", "LTLM"},
+        new String[] {"Lumbard",     "LMPR", "LMPR"},
+        new String[] {"Lund",        "LNT",  "LNT"},
+        new String[] {"Luno",        "LN",   "LN"},
+        new String[] {"Lutz",        "LTS",  "LTS"},
+        new String[] {"Lydia",       "LT",   "LT"},
+        new String[] {"Lynne",       "LN",   "LN"},
+        new String[] {"Lyon",        "LN",   "LN"},
+        new String[] {"MacAlpin",    "MKLP", "MKLP"},
+        new String[] {"MacBricc",    "MKPR", "MKPR"},
+        new String[] {"MacCrinan",   "MKRN", "MKRN"},
+        new String[] {"MacKenneth",  "MKN0", "MKNT"},
+        new String[] {"MacMael nam Bo","MKML", "MKML"},
+        new String[] {"MacMurchada", "MKMR", "MKMR"},
+        new String[] {"Macomber",    "MKMP", "MKMP"},
+        new String[] {"Macy",        "MS",   "MS"},
+        new String[] {"Magnus",      "MNS",  "MKNS"},
+        new String[] {"Mahien",      "MHN",  "MHN"},
+        new String[] {"Malmains",    "MLMN", "MLMN"},
+        new String[] {"Malory",      "MLR",  "MLR"},
+        new String[] {"Mancinelli",  "MNSN", "MNSN"},
+        new String[] {"Mancini",     "MNSN", "MNSN"},
+        new String[] {"Mann",        "MN",   "MN"},
+        new String[] {"Manning",     "MNNK", "MNNK"},
+        new String[] {"Manter",      "MNTR", "MNTR"},
+        new String[] {"Marion",      "MRN",  "MRN"},
+        new String[] {"Marley",      "MRL",  "MRL"},
+        new String[] {"Marmion",     "MRMN", "MRMN"},
+        new String[] {"Marquart",    "MRKR", "MRKR"},
+        new String[] {"Marsh",       "MRX",  "MRX"},
+        new String[] {"Marshal",     "MRXL", "MRXL"},
+        new String[] {"Marshall",    "MRXL", "MRXL"},
+        new String[] {"Martel",      "MRTL", "MRTL"},
+        new String[] {"Martha",      "MR0",  "MRT"},
+        new String[] {"Martin",      "MRTN", "MRTN"},
+        new String[] {"Marturano",   "MRTR", "MRTR"},
+        new String[] {"Marvin",      "MRFN", "MRFN"},
+        new String[] {"Mary",        "MR",   "MR"},
+        new String[] {"Mason",       "MSN",  "MSN"},
+        new String[] {"Maxwell",     "MKSL", "MKSL"},
+        new String[] {"Mayhew",      "MH",   "MHF"},
+        new String[] {"McAllaster",  "MKLS", "MKLS"},
+        new String[] {"McAllister",  "MKLS", "MKLS"},
+        new String[] {"McConnell",   "MKNL", "MKNL"},
+        new String[] {"McFarland",   "MKFR", "MKFR"},
+        new String[] {"McIlroy",     "MSLR", "MSLR"},
+        new String[] {"McNair",      "MKNR", "MKNR"},
+        new String[] {"McNair-Landry","MKNR", "MKNR"},
+        new String[] {"McRaven",     "MKRF", "MKRF"},
+        new String[] {"Mead",        "MT",   "MT"},
+        new String[] {"Meade",       "MT",   "MT"},
+        new String[] {"Meck",        "MK",   "MK"},
+        new String[] {"Melton",      "MLTN", "MLTN"},
+        new String[] {"Mendenhall",  "MNTN", "MNTN"},
+        new String[] {"Mering",      "MRNK", "MRNK"},
+        new String[] {"Merrick",     "MRK",  "MRK"},
+        new String[] {"Merry",       "MR",   "MR"},
+        new String[] {"Mighill",     "ML",   "ML"},
+        new String[] {"Miller",      "MLR",  "MLR"},
+        new String[] {"Milton",      "MLTN", "MLTN"},
+        new String[] {"Mohun",       "MHN",  "MHN"},
+        new String[] {"Montague",    "MNTK", "MNTK"},
+        new String[] {"Montboucher", "MNTP", "MNTP"},
+        new String[] {"Moore",       "MR",   "MR"},
+        new String[] {"Morrel",      "MRL",  "MRL"},
+        new String[] {"Morrill",     "MRL",  "MRL"},
+        new String[] {"Morris",      "MRS",  "MRS"},
+        new String[] {"Morton",      "MRTN", "MRTN"},
+        new String[] {"Moton",       "MTN",  "MTN"},
+        new String[] {"Muir",        "MR",   "MR"},
+        new String[] {"Mulferd",     "MLFR", "MLFR"},
+        new String[] {"Mullins",     "MLNS", "MLNS"},
+        new String[] {"Mulso",       "MLS",  "MLS"},
+        new String[] {"Munger",      "MNKR", "MNJR"},
+        new String[] {"Munt",        "MNT",  "MNT"},
+        new String[] {"Murchad",     "MRXT", "MRKT"},
+        new String[] {"Murdock",     "MRTK", "MRTK"},
+        new String[] {"Murray",      "MR",   "MR"},
+        new String[] {"Muskett",     "MSKT", "MSKT"},
+        new String[] {"Myers",       "MRS",  "MRS"},
+        new String[] {"Myrick",      "MRK",  "MRK"},
+        new String[] {"NORRIS",      "NRS",  "NRS"},
+        new String[] {"Nayle",       "NL",   "NL"},
+        new String[] {"Newcomb",     "NKMP", "NKMP"},
+        new String[] {"Newcomb(e)",  "NKMP", "NKMP"},
+        new String[] {"Newkirk",     "NKRK", "NKRK"},
+        new String[] {"Newton",      "NTN",  "NTN"},
+        new String[] {"Niles",       "NLS",  "NLS"},
+        new String[] {"Noble",       "NPL",  "NPL"},
+        new String[] {"Noel",        "NL",   "NL"},
+        new String[] {"Northend",    "NR0N", "NRTN"},
+        new String[] {"Norton",      "NRTN", "NRTN"},
+        new String[] {"Nutter",      "NTR",  "NTR"},
+        new String[] {"Odding",      "ATNK", "ATNK"},
+        new String[] {"Odenbaugh",   "ATNP", "ATNP"},
+        new String[] {"Ogborn",      "AKPR", "AKPR"},
+        new String[] {"Oppenheimer", "APNM", "APNM"},
+        new String[] {"Otis",        "ATS",  "ATS"},
+        new String[] {"Oviatt",      "AFT",  "AFT"},
+        new String[] {"PRUST?",      "PRST", "PRST"},
+        new String[] {"Paddock",     "PTK",  "PTK"},
+        new String[] {"Page",        "PJ",   "PK"},
+        new String[] {"Paine",       "PN",   "PN"},
+        new String[] {"Paist",       "PST",  "PST"},
+        new String[] {"Palmer",      "PLMR", "PLMR"},
+        new String[] {"Park",        "PRK",  "PRK"},
+        new String[] {"Parker",      "PRKR", "PRKR"},
+        new String[] {"Parkhurst",   "PRKR", "PRKR"},
+        new String[] {"Parrat",      "PRT",  "PRT"},
+        new String[] {"Parsons",     "PRSN", "PRSN"},
+        new String[] {"Partridge",   "PRTR", "PRTR"},
+        new String[] {"Pashley",     "PXL",  "PXL"},
+        new String[] {"Pasley",      "PSL",  "PSL"},
+        new String[] {"Patrick",     "PTRK", "PTRK"},
+        new String[] {"Pattee",      "PT",   "PT"},
+        new String[] {"Patten",      "PTN",  "PTN"},
+        new String[] {"Pawley",      "PL",   "PL"},
+        new String[] {"Payne",       "PN",   "PN"},
+        new String[] {"Peabody",     "PPT",  "PPT"},
+        new String[] {"Peake",       "PK",   "PK"},
+        new String[] {"Pearson",     "PRSN", "PRSN"},
+        new String[] {"Peat",        "PT",   "PT"},
+        new String[] {"Pedersen",    "PTRS", "PTRS"},
+        new String[] {"Percy",       "PRS",  "PRS"},
+        new String[] {"Perkins",     "PRKN", "PRKN"},
+        new String[] {"Perrine",     "PRN",  "PRN"},
+        new String[] {"Perry",       "PR",   "PR"},
+        new String[] {"Peson",       "PSN",  "PSN"},
+        new String[] {"Peterson",    "PTRS", "PTRS"},
+        new String[] {"Peyton",      "PTN",  "PTN"},
+        new String[] {"Phinney",     "FN",   "FN"},
+        new String[] {"Pickard",     "PKRT", "PKRT"},
+        new String[] {"Pierce",      "PRS",  "PRS"},
+        new String[] {"Pierrepont",  "PRPN", "PRPN"},
+        new String[] {"Pike",        "PK",   "PK"},
+        new String[] {"Pinkham",     "PNKM", "PNKM"},
+        new String[] {"Pitman",      "PTMN", "PTMN"},
+        new String[] {"Pitt",        "PT",   "PT"},
+        new String[] {"Pitts",       "PTS",  "PTS"},
+        new String[] {"Plantagenet", "PLNT", "PLNT"},
+        new String[] {"Platt",       "PLT",  "PLT"},
+        new String[] {"Platts",      "PLTS", "PLTS"},
+        new String[] {"Pleis",       "PLS",  "PLS"},
+        new String[] {"Pleiss",      "PLS",  "PLS"},
+        new String[] {"Plisko",      "PLSK", "PLSK"},
+        new String[] {"Pliskovitch", "PLSK", "PLSK"},
+        new String[] {"Plum",        "PLM",  "PLM"},
+        new String[] {"Plume",       "PLM",  "PLM"},
+        new String[] {"Poitou",      "PT",   "PT"},
+        new String[] {"Pomeroy",     "PMR",  "PMR"},
+        new String[] {"Poretiers",   "PRTR", "PRTR"},
+        new String[] {"Pote",        "PT",   "PT"},
+        new String[] {"Potter",      "PTR",  "PTR"},
+        new String[] {"Potts",       "PTS",  "PTS"},
+        new String[] {"Powell",      "PL",   "PL"},
+        new String[] {"Pratt",       "PRT",  "PRT"},
+        new String[] {"Presbury",    "PRSP", "PRSP"},
+        new String[] {"Priest",      "PRST", "PRST"},
+        new String[] {"Prindle",     "PRNT", "PRNT"},
+        new String[] {"Prior",       "PRR",  "PRR"},
+        new String[] {"Profumo",     "PRFM", "PRFM"},
+        new String[] {"Purdy",       "PRT",  "PRT"},
+        new String[] {"Purefoy",     "PRF",  "PRF"},
+        new String[] {"Pury",        "PR",   "PR"},
+        new String[] {"Quinter",     "KNTR", "KNTR"},
+        new String[] {"Rachel",      "RXL",  "RKL"},
+        new String[] {"Rand",        "RNT",  "RNT"},
+        new String[] {"Rankin",      "RNKN", "RNKN"},
+        new String[] {"Ravenscroft", "RFNS", "RFNS"},
+        new String[] {"Raynsford",   "RNSF", "RNSF"},
+        new String[] {"Reakirt",     "RKRT", "RKRT"},
+        new String[] {"Reaves",      "RFS",  "RFS"},
+        new String[] {"Reeves",      "RFS",  "RFS"},
+        new String[] {"Reichert",    "RXRT", "RKRT"},
+        new String[] {"Remmele",     "RML",  "RML"},
+        new String[] {"Reynolds",    "RNLT", "RNLT"},
+        new String[] {"Rhodes",      "RTS",  "RTS"},
+        new String[] {"Richards",    "RXRT", "RKRT"},
+        new String[] {"Richardson",  "RXRT", "RKRT"},
+        new String[] {"Ring",        "RNK",  "RNK"},
+        new String[] {"Roberts",     "RPRT", "RPRT"},
+        new String[] {"Robertson",   "RPRT", "RPRT"},
+        new String[] {"Robson",      "RPSN", "RPSN"},
+        new String[] {"Rodie",       "RT",   "RT"},
+        new String[] {"Rody",        "RT",   "RT"},
+        new String[] {"Rogers",      "RKRS", "RJRS"},
+        new String[] {"Ross",        "RS",   "RS"},
+        new String[] {"Rosslevin",   "RSLF", "RSLF"},
+        new String[] {"Rowland",     "RLNT", "RLNT"},
+        new String[] {"Ruehl",       "RL",   "RL"},
+        new String[] {"Russell",     "RSL",  "RSL"},
+        new String[] {"Ruth",        "R0",   "RT"},
+        new String[] {"Ryan",        "RN",   "RN"},
+        new String[] {"Rysse",       "RS",   "RS"},
+        new String[] {"Sadler",      "STLR", "STLR"},
+        new String[] {"Salmon",      "SLMN", "SLMN"},
+        new String[] {"Salter",      "SLTR", "SLTR"},
+        new String[] {"Salvatore",   "SLFT", "SLFT"},
+        new String[] {"Sanders",     "SNTR", "SNTR"},
+        new String[] {"Sands",       "SNTS", "SNTS"},
+        new String[] {"Sanford",     "SNFR", "SNFR"},
+        new String[] {"Sanger",      "SNKR", "SNJR"},
+        new String[] {"Sargent",     "SRJN", "SRKN"},
+        new String[] {"Saunders",    "SNTR", "SNTR"},
+        new String[] {"Schilling",   "XLNK", "XLNK"},
+        new String[] {"Schlegel",    "XLKL", "SLKL"},
+        new String[] {"Scott",       "SKT",  "SKT"},
+        new String[] {"Sears",       "SRS",  "SRS"},
+        new String[] {"Segersall",   "SJRS", "SKRS"},
+        new String[] {"Senecal",     "SNKL", "SNKL"},
+        new String[] {"Sergeaux",    "SRJ",  "SRK"},
+        new String[] {"Severance",   "SFRN", "SFRN"},
+        new String[] {"Sharp",       "XRP",  "XRP"},
+        new String[] {"Sharpe",      "XRP",  "XRP"},
+        new String[] {"Sharply",     "XRPL", "XRPL"},
+        new String[] {"Shatswell",   "XTSL", "XTSL"},
+        new String[] {"Shattack",    "XTK",  "XTK"},
+        new String[] {"Shattock",    "XTK",  "XTK"},
+        new String[] {"Shattuck",    "XTK",  "XTK"},
+        new String[] {"Shaw",        "X",    "XF"},
+        new String[] {"Sheldon",     "XLTN", "XLTN"},
+        new String[] {"Sherman",     "XRMN", "XRMN"},
+        new String[] {"Shinn",       "XN",   "XN"},
+        new String[] {"Shirford",    "XRFR", "XRFR"},
+        new String[] {"Shirley",     "XRL",  "XRL"},
+        new String[] {"Shively",     "XFL",  "XFL"},
+        new String[] {"Shoemaker",   "XMKR", "XMKR"},
+        new String[] {"Short",       "XRT",  "XRT"},
+        new String[] {"Shotwell",    "XTL",  "XTL"},
+        new String[] {"Shute",       "XT",   "XT"},
+        new String[] {"Sibley",      "SPL",  "SPL"},
+        new String[] {"Silver",      "SLFR", "SLFR"},
+        new String[] {"Simes",       "SMS",  "SMS"},
+        new String[] {"Sinken",      "SNKN", "SNKN"},
+        new String[] {"Sinn",        "SN",   "SN"},
+        new String[] {"Skelton",     "SKLT", "SKLT"},
+        new String[] {"Skiffe",      "SKF",  "SKF"},
+        new String[] {"Skotkonung",  "SKTK", "SKTK"},
+        new String[] {"Slade",       "SLT",  "XLT"},
+        new String[] {"Slye",        "SL",   "XL"},
+        new String[] {"Smedley",     "SMTL", "XMTL"},
+        new String[] {"Smith",       "SM0",  "XMT"},
+        new String[] {"Snow",        "SN",   "XNF"},
+        new String[] {"Soole",       "SL",   "SL"},
+        new String[] {"Soule",       "SL",   "SL"},
+        new String[] {"Southworth",  "S0R0", "STRT"},
+        new String[] {"Sowles",      "SLS",  "SLS"},
+        new String[] {"Spalding",    "SPLT", "SPLT"},
+        new String[] {"Spark",       "SPRK", "SPRK"},
+        new String[] {"Spencer",     "SPNS", "SPNS"},
+        new String[] {"Sperry",      "SPR",  "SPR"},
+        new String[] {"Spofford",    "SPFR", "SPFR"},
+        new String[] {"Spooner",     "SPNR", "SPNR"},
+        new String[] {"Sprague",     "SPRK", "SPRK"},
+        new String[] {"Springer",    "SPRN", "SPRN"},
+        new String[] {"St. Clair",   "STKL", "STKL"},
+        new String[] {"St. Claire",  "STKL", "STKL"},
+        new String[] {"St. Leger",   "STLJ", "STLK"},
+        new String[] {"St. Omer",    "STMR", "STMR"},
+        new String[] {"Stafferton",  "STFR", "STFR"},
+        new String[] {"Stafford",    "STFR", "STFR"},
+        new String[] {"Stalham",     "STLM", "STLM"},
+        new String[] {"Stanford",    "STNF", "STNF"},
+        new String[] {"Stanton",     "STNT", "STNT"},
+        new String[] {"Star",        "STR",  "STR"},
+        new String[] {"Starbuck",    "STRP", "STRP"},
+        new String[] {"Starkey",     "STRK", "STRK"},
+        new String[] {"Starkweather","STRK", "STRK"},
+        new String[] {"Stearns",     "STRN", "STRN"},
+        new String[] {"Stebbins",    "STPN", "STPN"},
+        new String[] {"Steele",      "STL",  "STL"},
+        new String[] {"Stephenson",  "STFN", "STFN"},
+        new String[] {"Stevens",     "STFN", "STFN"},
+        new String[] {"Stoddard",    "STTR", "STTR"},
+        new String[] {"Stodder",     "STTR", "STTR"},
+        new String[] {"Stone",       "STN",  "STN"},
+        new String[] {"Storey",      "STR",  "STR"},
+        new String[] {"Storrada",    "STRT", "STRT"},
+        new String[] {"Story",       "STR",  "STR"},
+        new String[] {"Stoughton",   "STFT", "STFT"},
+        new String[] {"Stout",       "STT",  "STT"},
+        new String[] {"Stow",        "ST",   "STF"},
+        new String[] {"Strong",      "STRN", "STRN"},
+        new String[] {"Strutt",      "STRT", "STRT"},
+        new String[] {"Stryker",     "STRK", "STRK"},
+        new String[] {"Stuckeley",   "STKL", "STKL"},
+        new String[] {"Sturges",     "STRJ", "STRK"},
+        new String[] {"Sturgess",    "STRJ", "STRK"},
+        new String[] {"Sturgis",     "STRJ", "STRK"},
+        new String[] {"Suevain",     "SFN",  "SFN"},
+        new String[] {"Sulyard",     "SLRT", "SLRT"},
+        new String[] {"Sutton",      "STN",  "STN"},
+        new String[] {"Swain",       "SN",   "XN"},
+        new String[] {"Swayne",      "SN",   "XN"},
+        new String[] {"Swayze",      "SS",   "XTS"},
+        new String[] {"Swift",       "SFT",  "XFT"},
+        new String[] {"Taber",       "TPR",  "TPR"},
+        new String[] {"Talcott",     "TLKT", "TLKT"},
+        new String[] {"Tarne",       "TRN",  "TRN"},
+        new String[] {"Tatum",       "TTM",  "TTM"},
+        new String[] {"Taverner",    "TFRN", "TFRN"},
+        new String[] {"Taylor",      "TLR",  "TLR"},
+        new String[] {"Tenney",      "TN",   "TN"},
+        new String[] {"Thayer",      "0R",   "TR"},
+        new String[] {"Thember",     "0MPR", "TMPR"},
+        new String[] {"Thomas",      "TMS",  "TMS"},
+        new String[] {"Thompson",    "TMPS", "TMPS"},
+        new String[] {"Thorne",      "0RN",  "TRN"},
+        new String[] {"Thornycraft", "0RNK", "TRNK"},
+        new String[] {"Threlkeld",   "0RLK", "TRLK"},
+        new String[] {"Throckmorton","0RKM", "TRKM"},
+        new String[] {"Thwaits",     "0TS",  "TTS"},
+        new String[] {"Tibbetts",    "TPTS", "TPTS"},
+        new String[] {"Tidd",        "TT",   "TT"},
+        new String[] {"Tierney",     "TRN",  "TRN"},
+        new String[] {"Tilley",      "TL",   "TL"},
+        new String[] {"Tillieres",   "TLRS", "TLRS"},
+        new String[] {"Tilly",       "TL",   "TL"},
+        new String[] {"Tisdale",     "TSTL", "TSTL"},
+        new String[] {"Titus",       "TTS",  "TTS"},
+        new String[] {"Tobey",       "TP",   "TP"},
+        new String[] {"Tooker",      "TKR",  "TKR"},
+        new String[] {"Towle",       "TL",   "TL"},
+        new String[] {"Towne",       "TN",   "TN"},
+        new String[] {"Townsend",    "TNSN", "TNSN"},
+        new String[] {"Treadway",    "TRT",  "TRT"},
+        new String[] {"Trelawney",   "TRLN", "TRLN"},
+        new String[] {"Trinder",     "TRNT", "TRNT"},
+        new String[] {"Tripp",       "TRP",  "TRP"},
+        new String[] {"Trippe",      "TRP",  "TRP"},
+        new String[] {"Trott",       "TRT",  "TRT"},
+        new String[] {"True",        "TR",   "TR"},
+        new String[] {"Trussebut",   "TRSP", "TRSP"},
+        new String[] {"Tucker",      "TKR",  "TKR"},
+        new String[] {"Turgeon",     "TRJN", "TRKN"},
+        new String[] {"Turner",      "TRNR", "TRNR"},
+        new String[] {"Tuttle",      "TTL",  "TTL"},
+        new String[] {"Tyler",       "TLR",  "TLR"},
+        new String[] {"Tylle",       "TL",   "TL"},
+        new String[] {"Tyrrel",      "TRL",  "TRL"},
+        new String[] {"Ua Tuathail", "AT0L", "ATTL"},
+        new String[] {"Ulrich",      "ALRX", "ALRK"},
+        new String[] {"Underhill",   "ANTR", "ANTR"},
+        new String[] {"Underwood",   "ANTR", "ANTR"},
+        new String[] {"Unknown",     "ANKN", "ANKN"},
+        new String[] {"Valentine",   "FLNT", "FLNT"},
+        new String[] {"Van Egmond",  "FNKM", "FNKM"},
+        new String[] {"Van der Beek","FNTR", "FNTR"},
+        new String[] {"Vaughan",     "FKN",  "FKN"},
+        new String[] {"Vermenlen",   "FRMN", "FRMN"},
+        new String[] {"Vincent",     "FNSN", "FNSN"},
+        new String[] {"Volentine",   "FLNT", "FLNT"},
+        new String[] {"Wagner",      "AKNR", "FKNR"},
+        new String[] {"Waite",       "AT",   "FT"},
+        new String[] {"Walker",      "ALKR", "FLKR"},
+        new String[] {"Walter",      "ALTR", "FLTR"},
+        new String[] {"Wandell",     "ANTL", "FNTL"},
+        new String[] {"Wandesford",  "ANTS", "FNTS"},
+        new String[] {"Warbleton",   "ARPL", "FRPL"},
+        new String[] {"Ward",        "ART",  "FRT"},
+        new String[] {"Warde",       "ART",  "FRT"},
+        new String[] {"Ware",        "AR",   "FR"},
+        new String[] {"Wareham",     "ARHM", "FRHM"},
+        new String[] {"Warner",      "ARNR", "FRNR"},
+        new String[] {"Warren",      "ARN",  "FRN"},
+        new String[] {"Washburne",   "AXPR", "FXPR"},
+        new String[] {"Waterbury",   "ATRP", "FTRP"},
+        new String[] {"Watson",      "ATSN", "FTSN"},
+        new String[] {"WatsonEllithorpe","ATSN", "FTSN"},
+        new String[] {"Watts",       "ATS",  "FTS"},
+        new String[] {"Wayne",       "AN",   "FN"},
+        new String[] {"Webb",        "AP",   "FP"},
+        new String[] {"Weber",       "APR",  "FPR"},
+        new String[] {"Webster",     "APST", "FPST"},
+        new String[] {"Weed",        "AT",   "FT"},
+        new String[] {"Weeks",       "AKS",  "FKS"},
+        new String[] {"Wells",       "ALS",  "FLS"},
+        new String[] {"Wenzell",     "ANSL", "FNTS"},
+        new String[] {"West",        "AST",  "FST"},
+        new String[] {"Westbury",    "ASTP", "FSTP"},
+        new String[] {"Whatlocke",   "ATLK", "ATLK"},
+        new String[] {"Wheeler",     "ALR",  "ALR"},
+        new String[] {"Whiston",     "ASTN", "ASTN"},
+        new String[] {"White",       "AT",   "AT"},
+        new String[] {"Whitman",     "ATMN", "ATMN"},
+        new String[] {"Whiton",      "ATN",  "ATN"},
+        new String[] {"Whitson",     "ATSN", "ATSN"},
+        new String[] {"Wickes",      "AKS",  "FKS"},
+        new String[] {"Wilbur",      "ALPR", "FLPR"},
+        new String[] {"Wilcotes",    "ALKT", "FLKT"},
+        new String[] {"Wilkinson",   "ALKN", "FLKN"},
+        new String[] {"Willets",     "ALTS", "FLTS"},
+        new String[] {"Willett",     "ALT",  "FLT"},
+        new String[] {"Willey",      "AL",   "FL"},
+        new String[] {"Williams",    "ALMS", "FLMS"},
+        new String[] {"Williston",   "ALST", "FLST"},
+        new String[] {"Wilson",      "ALSN", "FLSN"},
+        new String[] {"Wimes",       "AMS",  "FMS"},
+        new String[] {"Winch",       "ANX",  "FNK"},
+        new String[] {"Winegar",     "ANKR", "FNKR"},
+        new String[] {"Wing",        "ANK",  "FNK"},
+        new String[] {"Winsley",     "ANSL", "FNSL"},
+        new String[] {"Winslow",     "ANSL", "FNSL"},
+        new String[] {"Winthrop",    "AN0R", "FNTR"},
+        new String[] {"Wise",        "AS",   "FS"},
+        new String[] {"Wood",        "AT",   "FT"},
+        new String[] {"Woodbridge",  "ATPR", "FTPR"},
+        new String[] {"Woodward",    "ATRT", "FTRT"},
+        new String[] {"Wooley",      "AL",   "FL"},
+        new String[] {"Woolley",     "AL",   "FL"},
+        new String[] {"Worth",       "AR0",  "FRT"},
+        new String[] {"Worthen",     "AR0N", "FRTN"},
+        new String[] {"Worthley",    "AR0L", "FRTL"},
+        new String[] {"Wright",      "RT",   "RT"},
+        new String[] {"Wyer",        "AR",   "FR"},
+        new String[] {"Wyere",       "AR",   "FR"},
+        new String[] {"Wynkoop",     "ANKP", "FNKP"},
+        new String[] {"Yarnall",     "ARNL", "ARNL"},
+        new String[] {"Yeoman",      "AMN",  "AMN"},
+        new String[] {"Yorke",       "ARK",  "ARK"},
+        new String[] {"Young",       "ANK",  "ANK"},
+        new String[] {"ab Wennonwen","APNN", "APNN"},
+        new String[] {"ap Llewellyn","APLL", "APLL"},
+        new String[] {"ap Lorwerth", "APLR", "APLR"},
+        new String[] {"d'Angouleme", "TNKL", "TNKL"},
+        new String[] {"de Audeham",  "TTHM", "TTHM"},
+        new String[] {"de Bavant",   "TPFN", "TPFN"},
+        new String[] {"de Beauchamp","TPXM", "TPKM"},
+        new String[] {"de Beaumont", "TPMN", "TPMN"},
+        new String[] {"de Bolbec",   "TPLP", "TPLP"},
+        new String[] {"de Braiose",  "TPRS", "TPRS"},
+        new String[] {"de Braose",   "TPRS", "TPRS"},
+        new String[] {"de Briwere",  "TPRR", "TPRR"},
+        new String[] {"de Cantelou", "TKNT", "TKNT"},
+        new String[] {"de Cherelton","TXRL", "TKRL"},
+        new String[] {"de Cherleton","TXRL", "TKRL"},
+        new String[] {"de Clare",    "TKLR", "TKLR"},
+        new String[] {"de Claremont","TKLR", "TKLR"},
+        new String[] {"de Clifford", "TKLF", "TKLF"},
+        new String[] {"de Colville", "TKLF", "TKLF"},
+        new String[] {"de Courtenay","TKRT", "TKRT"},
+        new String[] {"de Fauconberg","TFKN", "TFKN"},
+        new String[] {"de Forest",   "TFRS", "TFRS"},
+        new String[] {"de Gai",      "TK",   "TK"},
+        new String[] {"de Grey",     "TKR",  "TKR"},
+        new String[] {"de Guernons", "TKRN", "TKRN"},
+        new String[] {"de Haia",     "T",    "T"},
+        new String[] {"de Harcourt", "TRKR", "TRKR"},
+        new String[] {"de Hastings", "TSTN", "TSTN"},
+        new String[] {"de Hoke",     "TK",   "TK"},
+        new String[] {"de Hooch",    "TK",   "TK"},
+        new String[] {"de Hugelville","TJLF", "TKLF"},
+        new String[] {"de Huntingdon","TNTN", "TNTN"},
+        new String[] {"de Insula",   "TNSL", "TNSL"},
+        new String[] {"de Keynes",   "TKNS", "TKNS"},
+        new String[] {"de Lacy",     "TLS",  "TLS"},
+        new String[] {"de Lexington","TLKS", "TLKS"},
+        new String[] {"de Lusignan", "TLSN", "TLSK"},
+        new String[] {"de Manvers",  "TMNF", "TMNF"},
+        new String[] {"de Montagu",  "TMNT", "TMNT"},
+        new String[] {"de Montault", "TMNT", "TMNT"},
+        new String[] {"de Montfort", "TMNT", "TMNT"},
+        new String[] {"de Mortimer", "TMRT", "TMRT"},
+        new String[] {"de Morville", "TMRF", "TMRF"},
+        new String[] {"de Morvois",  "TMRF", "TMRF"},
+        new String[] {"de Neufmarche","TNFM", "TNFM"},
+        new String[] {"de Odingsells","TTNK", "TTNK"},
+        new String[] {"de Odyngsells","TTNK", "TTNK"},
+        new String[] {"de Percy",    "TPRS", "TPRS"},
+        new String[] {"de Pierrepont","TPRP", "TPRP"},
+        new String[] {"de Plessetis","TPLS", "TPLS"},
+        new String[] {"de Porhoet",  "TPRT", "TPRT"},
+        new String[] {"de Prouz",    "TPRS", "TPRS"},
+        new String[] {"de Quincy",   "TKNS", "TKNS"},
+        new String[] {"de Ripellis", "TRPL", "TRPL"},
+        new String[] {"de Ros",      "TRS",  "TRS"},
+        new String[] {"de Salisbury","TSLS", "TSLS"},
+        new String[] {"de Sanford",  "TSNF", "TSNF"},
+        new String[] {"de Somery",   "TSMR", "TSMR"},
+        new String[] {"de St. Hilary","TSTL", "TSTL"},
+        new String[] {"de St. Liz",  "TSTL", "TSTL"},
+        new String[] {"de Sutton",   "TSTN", "TSTN"},
+        new String[] {"de Toeni",    "TTN",  "TTN"},
+        new String[] {"de Tony",     "TTN",  "TTN"},
+        new String[] {"de Umfreville","TMFR", "TMFR"},
+        new String[] {"de Valognes", "TFLN", "TFLK"},
+        new String[] {"de Vaux",     "TF",   "TF"},
+        new String[] {"de Vere",     "TFR",  "TFR"},
+        new String[] {"de Vermandois","TFRM", "TFRM"},
+        new String[] {"de Vernon",   "TFRN", "TFRN"},
+        new String[] {"de Vexin",    "TFKS", "TFKS"},
+        new String[] {"de Vitre",    "TFTR", "TFTR"},
+        new String[] {"de Wandesford","TNTS", "TNTS"},
+        new String[] {"de Warenne",  "TRN",  "TRN"},
+        new String[] {"de Westbury", "TSTP", "TSTP"},
+        new String[] {"di Saluzzo",  "TSLS", "TSLT"},
+        new String[] {"fitz Alan",   "FTSL", "FTSL"},
+        new String[] {"fitz Geoffrey","FTSJ", "FTSK"},
+        new String[] {"fitz Herbert","FTSR", "FTSR"},
+        new String[] {"fitz John",   "FTSJ", "FTSJ"},
+        new String[] {"fitz Patrick","FTSP", "FTSP"},
+        new String[] {"fitz Payn",   "FTSP", "FTSP"},
+        new String[] {"fitz Piers",  "FTSP", "FTSP"},
+        new String[] {"fitz Randolph","FTSR", "FTSR"},
+        new String[] {"fitz Richard","FTSR", "FTSR"},
+        new String[] {"fitz Robert", "FTSR", "FTSR"},
+        new String[] {"fitz Roy",    "FTSR", "FTSR"},
+        new String[] {"fitz Scrob",  "FTSS", "FTSS"},
+        new String[] {"fitz Walter", "FTSL", "FTSL"},
+        new String[] {"fitz Warin",  "FTSR", "FTSR"},
+        new String[] {"fitz Williams","FTSL", "FTSL"},
+        new String[] {"la Zouche",   "LSX",  "LSK"},
+        new String[] {"le Botiller", "LPTL", "LPTL"},
+        new String[] {"le Despenser","LTSP", "LTSP"},
+        new String[] {"le deSpencer","LTSP", "LTSP"},
+        new String[] {"of Allendale","AFLN", "AFLN"},
+        new String[] {"of Angouleme","AFNK", "AFNK"},
+        new String[] {"of Anjou",    "AFNJ", "AFNJ"},
+        new String[] {"of Aquitaine","AFKT", "AFKT"},
+        new String[] {"of Aumale",   "AFML", "AFML"},
+        new String[] {"of Bavaria",  "AFPF", "AFPF"},
+        new String[] {"of Boulogne", "AFPL", "AFPL"},
+        new String[] {"of Brittany", "AFPR", "AFPR"},
+        new String[] {"of Brittary", "AFPR", "AFPR"},
+        new String[] {"of Castile",  "AFKS", "AFKS"},
+        new String[] {"of Chester",  "AFXS", "AFKS"},
+        new String[] {"of Clermont", "AFKL", "AFKL"},
+        new String[] {"of Cologne",  "AFKL", "AFKL"},
+        new String[] {"of Dinan",    "AFTN", "AFTN"},
+        new String[] {"of Dunbar",   "AFTN", "AFTN"},
+        new String[] {"of England",  "AFNK", "AFNK"},
+        new String[] {"of Essex",    "AFSK", "AFSK"},
+        new String[] {"of Falaise",  "AFFL", "AFFL"},
+        new String[] {"of Flanders", "AFFL", "AFFL"},
+        new String[] {"of Galloway", "AFKL", "AFKL"},
+        new String[] {"of Germany",  "AFKR", "AFJR"},
+        new String[] {"of Gloucester","AFKL", "AFKL"},
+        new String[] {"of Heristal", "AFRS", "AFRS"},
+        new String[] {"of Hungary",  "AFNK", "AFNK"},
+        new String[] {"of Huntington","AFNT", "AFNT"},
+        new String[] {"of Kiev",     "AFKF", "AFKF"},
+        new String[] {"of Kuno",     "AFKN", "AFKN"},
+        new String[] {"of Landen",   "AFLN", "AFLN"},
+        new String[] {"of Laon",     "AFLN", "AFLN"},
+        new String[] {"of Leinster", "AFLN", "AFLN"},
+        new String[] {"of Lens",     "AFLN", "AFLN"},
+        new String[] {"of Lorraine", "AFLR", "AFLR"},
+        new String[] {"of Louvain",  "AFLF", "AFLF"},
+        new String[] {"of Mercia",   "AFMR", "AFMR"},
+        new String[] {"of Metz",     "AFMT", "AFMT"},
+        new String[] {"of Meulan",   "AFML", "AFML"},
+        new String[] {"of Nass",     "AFNS", "AFNS"},
+        new String[] {"of Normandy", "AFNR", "AFNR"},
+        new String[] {"of Ohningen", "AFNN", "AFNN"},
+        new String[] {"of Orleans",  "AFRL", "AFRL"},
+        new String[] {"of Poitou",   "AFPT", "AFPT"},
+        new String[] {"of Polotzk",  "AFPL", "AFPL"},
+        new String[] {"of Provence", "AFPR", "AFPR"},
+        new String[] {"of Ringelheim","AFRN", "AFRN"},
+        new String[] {"of Salisbury","AFSL", "AFSL"},
+        new String[] {"of Saxony",   "AFSK", "AFSK"},
+        new String[] {"of Scotland", "AFSK", "AFSK"},
+        new String[] {"of Senlis",   "AFSN", "AFSN"},
+        new String[] {"of Stafford", "AFST", "AFST"},
+        new String[] {"of Swabia",   "AFSP", "AFSP"},
+        new String[] {"of Tongres",  "AFTN", "AFTN"},
+        new String[] {"of the Tributes","AF0T", "AFTT"},
+        new String[] {"unknown",     "ANKN", "ANKN"},
+        new String[] {"van der Gouda","FNTR", "FNTR"},
+        new String[] {"von Adenbaugh","FNTN", "FNTN"},
+        new String[] {"ARCHITure",   "ARKT", "ARKT"},
+        new String[] {"Arnoff",      "ARNF", "ARNF"},
+        new String[] {"Arnow",       "ARN",  "ARNF"},
+        new String[] {"DANGER",      "TNJR", "TNKR"},
+        new String[] {"Jankelowicz", "JNKL", "ANKL"},
+        new String[] {"MANGER",      "MNJR", "MNKR"},
+        new String[] {"McClellan",   "MKLL", "MKLL"},
+        new String[] {"McHugh",      "MK",   "MK"},
+        new String[] {"McLaughlin",  "MKLF", "MKLF"},
+        new String[] {"ORCHEStra",   "ARKS", "ARKS"},
+        new String[] {"ORCHID",      "ARKT", "ARKT"},
+        new String[] {"Pierce",      "PRS",  "PRS"},
+        new String[] {"RANGER",      "RNJR", "RNKR"},
+        new String[] {"Schlesinger", "XLSN", "SLSN"},
+        new String[] {"Uomo",        "AM",   "AM"},
+        new String[] {"Vasserman",   "FSRM", "FSRM"},
+        new String[] {"Wasserman",   "ASRM", "FSRM"},
+        new String[] {"Womo",        "AM",   "FM"},
+        new String[] {"Yankelovich", "ANKL", "ANKL"},
+        new String[] {"accede",      "AKST", "AKST"},
+        new String[] {"accident",    "AKST", "AKST"},
+        new String[] {"adelsheim",   "ATLS", "ATLS"},
+        new String[] {"aged",        "AJT",  "AKT"},
+        new String[] {"ageless",     "AJLS", "AKLS"},
+        new String[] {"agency",      "AJNS", "AKNS"},
+        new String[] {"aghast",      "AKST", "AKST"},
+        new String[] {"agio",        "AJ",   "AK"},
+        new String[] {"agrimony",    "AKRM", "AKRM"},
+        new String[] {"album",       "ALPM", "ALPM"},
+        new String[] {"alcmene",     "ALKM", "ALKM"},
+        new String[] {"alehouse",    "ALHS", "ALHS"},
+        new String[] {"antique",     "ANTK", "ANTK"},
+        new String[] {"artois",      "ART",  "ARTS"},
+        new String[] {"automation",  "ATMX", "ATMX"},
+        new String[] {"bacchus",     "PKS",  "PKS"},
+        new String[] {"bacci",       "PX",   "PX"},
+        new String[] {"bajador",     "PJTR", "PHTR"},
+        new String[] {"bellocchio",  "PLX",  "PLX"},
+        new String[] {"bertucci",    "PRTX", "PRTX"},
+        new String[] {"biaggi",      "PJ",   "PK"},
+        new String[] {"bough",       "P",    "P"},
+        new String[] {"breaux",      "PR",   "PR"},
+        new String[] {"broughton",   "PRTN", "PRTN"},
+//        new String[] {"cabrillo",    "KPRL", "KPR"}, /* Failing Secondary, result=KPRL */
+        new String[] {"caesar",      "SSR",  "SSR"},
+        new String[] {"cagney",      "KKN",  "KKN"},
+        new String[] {"campbell",    "KMPL", "KMPL"},
+        new String[] {"carlisle",    "KRLL", "KRLL"},
+        new String[] {"carlysle",    "KRLL", "KRLL"},
+        new String[] {"chemistry",   "KMST", "KMST"},
+        new String[] {"chianti",     "KNT",  "KNT"},
+        new String[] {"chorus",      "KRS",  "KRS"},
+        new String[] {"cough",       "KF",   "KF"},
+        new String[] {"czerny",      "SRN",  "XRN"},
+        new String[] {"deffenbacher","TFNP", "TFNP"},
+        new String[] {"dumb",        "TM",   "TM"},
+        new String[] {"edgar",       "ATKR", "ATKR"},
+        new String[] {"edge",        "AJ",   "AJ"},
+        new String[] {"filipowicz",  "FLPT", "FLPF"},
+        new String[] {"focaccia",    "FKX",  "FKX"},
+//        new String[] {"gallegos",    "KLKS", "KKS"}, /* Failing Secondary, result=KLKS */
+        new String[] {"gambrelli",   "KMPR", "KMPR"},
+        new String[] {"geithain",    "K0N",  "JTN"},
+        new String[] {"ghiradelli",  "JRTL", "JRTL"},
+        new String[] {"ghislane",    "JLN",  "JLN"},
+        new String[] {"gough",       "KF",   "KF"},
+        new String[] {"hartheim",    "HR0M", "HRTM"},
+        new String[] {"heimsheim",   "HMSM", "HMSM"},
+        new String[] {"hochmeier",   "HKMR", "HKMR"},
+        new String[] {"hugh",        "H",    "H"},
+        new String[] {"hunger",      "HNKR", "HNJR"},
+        new String[] {"hungry",      "HNKR", "HNKR"},
+        new String[] {"island",      "ALNT", "ALNT"},
+        new String[] {"isle",        "AL",   "AL"},
+        new String[] {"jose",        "HS",   "HS"},
+        new String[] {"laugh",       "LF",   "LF"},
+        new String[] {"mac caffrey", "MKFR", "MKFR"},
+        new String[] {"mac gregor",  "MKRK", "MKRK"},
+        new String[] {"pegnitz",     "PNTS", "PKNT"},
+        new String[] {"piskowitz",   "PSKT", "PSKF"},
+        new String[] {"queen",       "KN",   "KN"},
+        new String[] {"raspberry",   "RSPR", "RSPR"},
+        new String[] {"resnais",     "RSN",  "RSNS"},
+//        new String[] {"rogier",      "RJ",   "RJR"}, /* Failing Secondary, result=RKR */
+        new String[] {"rough",       "RF",   "RF"},
+        new String[] {"san jacinto", "SNHS", "SNHS"},
+        new String[] {"schenker",    "XNKR", "SKNK"},
+        new String[] {"schermerhorn","XRMR", "SKRM"},
+        new String[] {"schmidt",     "XMT",  "SMT"},
+        new String[] {"schneider",   "XNTR", "SNTR"},
+        new String[] {"school",      "SKL",  "SKL"},
+        new String[] {"schooner",    "SKNR", "SKNR"},
+        new String[] {"schrozberg",  "XRSP", "SRSP"},
+        new String[] {"schulman",    "XLMN", "XLMN"},
+        new String[] {"schwabach",   "XPK",  "XFPK"},
+        new String[] {"schwarzach",  "XRSK", "XFRT"},
+        new String[] {"smith",       "SM0",  "XMT"},
+        new String[] {"snider",      "SNTR", "XNTR"},
+        new String[] {"succeed",     "SKST", "SKST"},
+        new String[] {"sugarcane",   "XKRK", "SKRK"},
+        new String[] {"svobodka",    "SFPT", "SFPT"},
+        new String[] {"tagliaro",    "TKLR", "TLR"},
+        new String[] {"thames",      "TMS",  "TMS"},
+        new String[] {"theilheim",   "0LM",  "TLM"},
+        new String[] {"thomas",      "TMS",  "TMS"},
+        new String[] {"thumb",       "0M",   "TM"},
+        new String[] {"tichner",     "TXNR", "TKNR"},
+        new String[] {"tough",       "TF",   "TF"},
+        new String[] {"umbrella",    "AMPR", "AMPR"},
+        new String[] {"vilshofen",   "FLXF", "FLXF"},
+        new String[] {"von schuller","FNXL", "FNXL"},
+        new String[] {"wachtler",    "AKTL", "FKTL"},
+        new String[] {"wechsler",    "AKSL", "FKSL"},
+        new String[] {"weikersheim", "AKRS", "FKRS"},
+        new String[] {"zhao",        "J",    "J"}
+    };
+}

Propchange: commons/proper/codec/trunk/src/test/org/apache/commons/codec/language/DoubleMetaphone2Test.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/proper/codec/trunk/src/test/org/apache/commons/codec/language/DoubleMetaphone2Test.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: commons/proper/codec/trunk/src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.java
URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.java?rev=799961&r1=799960&r2=799961&view=diff
==============================================================================
--- commons/proper/codec/trunk/src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.java (original)
+++ commons/proper/codec/trunk/src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.java Sat Aug  1 23:32:54 2009
@@ -1116,6 +1116,26 @@
         assertEquals(null, this.getDoubleMetaphone().doubleMetaphone("\t\n\r "));
     }
 
+    /**
+     * Test setting maximum length
+     */
+    public void testSetMaxCodeLength() {
+        String value = "jumped";
+        
+        DoubleMetaphone doubleMetaphone = new DoubleMetaphone();
+
+        // Sanity check of default settings
+        assertEquals("Default Max Code Length", 4, doubleMetaphone.getMaxCodeLen());
+        assertEquals("Default Primary",   "JMPT", doubleMetaphone.doubleMetaphone(value, false));
+        assertEquals("Default Alternate", "AMPT", doubleMetaphone.doubleMetaphone(value, true));
+
+        // Check setting Max Code Length
+        doubleMetaphone.setMaxCodeLen(3);
+        assertEquals("Set Max Code Length", 3, doubleMetaphone.getMaxCodeLen());
+        assertEquals("Max=3 Primary",   "JMP", doubleMetaphone.doubleMetaphone(value, false));
+        assertEquals("Max=3 Alternate", "AMP", doubleMetaphone.doubleMetaphone(value, true));
+    }
+
     public void testIsDoubleMetaphoneEqualBasic() {
         String[][] testFixture = new String[][] { { "Case", "case" }, {
                 "CASE", "Case" }, {

Modified: commons/proper/codec/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/xdocs/changes.xml?rev=799961&r1=799960&r2=799961&view=diff
==============================================================================
--- commons/proper/codec/trunk/xdocs/changes.xml (original)
+++ commons/proper/codec/trunk/xdocs/changes.xml Sat Aug  1 23:32:54 2009
@@ -95,6 +95,9 @@
              <action dev="ggregory" type="fix" issue="CODEC-81" due-to="Julius Davies">
                  Base64's new constructor parameters ignored
              </action>
+             <action dev="niallp" type="fix" issue="CODEC-83">
+                 Improve Double Metaphone test coverage
+             </action>
 		</release>
 		<release version="1.3" date="10 July 2004" description="Feature and fix release.">
 			<action dev="ggregory, tobrien" type="add" issue="CODEC-21" due-to="Alex Karasulu">