xref: /webtrees/app/Soundex.php (revision dd71ff6b9f8508a26dabb8d3203ec5b96f870208)
1a25f0a04SGreg Roach<?php
23976b470SGreg Roach
3a25f0a04SGreg Roach/**
4a25f0a04SGreg Roach * webtrees: online genealogy
589f7189bSGreg Roach * Copyright (C) 2021 webtrees development team
6a25f0a04SGreg Roach * This program is free software: you can redistribute it and/or modify
7a25f0a04SGreg Roach * it under the terms of the GNU General Public License as published by
8a25f0a04SGreg Roach * the Free Software Foundation, either version 3 of the License, or
9a25f0a04SGreg Roach * (at your option) any later version.
10a25f0a04SGreg Roach * This program is distributed in the hope that it will be useful,
11a25f0a04SGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of
12a25f0a04SGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13a25f0a04SGreg Roach * GNU General Public License for more details.
14a25f0a04SGreg Roach * You should have received a copy of the GNU General Public License
1589f7189bSGreg Roach * along with this program. If not, see <https://www.gnu.org/licenses/>.
16a25f0a04SGreg Roach */
17fcfa147eSGreg Roach
18e7f56f2aSGreg Roachdeclare(strict_types=1);
19e7f56f2aSGreg Roach
2076692c8bSGreg Roachnamespace Fisharebest\Webtrees;
21a25f0a04SGreg Roach
22a25f0a04SGreg Roach/**
2376692c8bSGreg Roach * Phonetic matching of strings.
24a25f0a04SGreg Roach */
25c1010edaSGreg Roachclass Soundex
26c1010edaSGreg Roach{
27a25f0a04SGreg Roach    // Determine the Daitch–Mokotoff Soundex code for a word
28a25f0a04SGreg Roach    // Original implementation by Gerry Kroll, and analysis by Meliza Amity
29a25f0a04SGreg Roach
30a25f0a04SGreg Roach    // Max. table key length (in ASCII bytes -- NOT in UTF-8 characters!)
3116cfb0b9SGreg Roach    private const MAXCHAR = 7;
32a25f0a04SGreg Roach
33a25f0a04SGreg Roach    /**
34a25f0a04SGreg Roach     * Name transformation arrays.
35a25f0a04SGreg Roach     * Used to transform the Name string to simplify the "sounds like" table.
36a25f0a04SGreg Roach     * This is especially useful in Hebrew.
37a25f0a04SGreg Roach     *
38a25f0a04SGreg Roach     * Each array entry defines the "from" and "to" arguments of an preg($from, $to, $text)
39a25f0a04SGreg Roach     * function call to achieve the desired transformations.
40a25f0a04SGreg Roach     *
41a25f0a04SGreg Roach     * Note about the use of "\x01":
42a25f0a04SGreg Roach     * This code, which can’t legitimately occur in the kind of text we're dealing with,
43a25f0a04SGreg Roach     * is used as a place-holder so that conditional string replacements can be done.
44a25f0a04SGreg Roach     */
4516cfb0b9SGreg Roach    private const TRANSFORM_NAMES = [
46a25f0a04SGreg Roach        // Force Yiddish ligatures to be treated as separate letters
47c1010edaSGreg Roach        [
48c1010edaSGreg Roach            'װ',
49c1010edaSGreg Roach            'וו',
50c1010edaSGreg Roach        ],
51c1010edaSGreg Roach        [
52c1010edaSGreg Roach            'ײ',
53c1010edaSGreg Roach            'יי',
54c1010edaSGreg Roach        ],
55c1010edaSGreg Roach        [
56c1010edaSGreg Roach            'ױ',
57c1010edaSGreg Roach            'וי',
58c1010edaSGreg Roach        ],
59c1010edaSGreg Roach        [
60c1010edaSGreg Roach            'בו',
61c1010edaSGreg Roach            'בע',
62c1010edaSGreg Roach        ],
63c1010edaSGreg Roach        [
64c1010edaSGreg Roach            'פו',
65c1010edaSGreg Roach            'פע',
66c1010edaSGreg Roach        ],
67c1010edaSGreg Roach        [
68c1010edaSGreg Roach            'ומ',
69c1010edaSGreg Roach            'עמ',
70c1010edaSGreg Roach        ],
71c1010edaSGreg Roach        [
72c1010edaSGreg Roach            'ום',
73c1010edaSGreg Roach            'עם',
74c1010edaSGreg Roach        ],
75c1010edaSGreg Roach        [
76c1010edaSGreg Roach            'ונ',
77c1010edaSGreg Roach            'ענ',
78c1010edaSGreg Roach        ],
79c1010edaSGreg Roach        [
80c1010edaSGreg Roach            'ון',
81c1010edaSGreg Roach            'ען',
82c1010edaSGreg Roach        ],
83c1010edaSGreg Roach        [
84c1010edaSGreg Roach            'וו',
85c1010edaSGreg Roach            'ב',
86c1010edaSGreg Roach        ],
87c1010edaSGreg Roach        [
88c1010edaSGreg Roach            "\x01",
89c1010edaSGreg Roach            '',
90c1010edaSGreg Roach        ],
91c1010edaSGreg Roach        [
92c1010edaSGreg Roach            'ייה$',
93c1010edaSGreg Roach            "\x01ה",
94c1010edaSGreg Roach        ],
95c1010edaSGreg Roach        [
96c1010edaSGreg Roach            'ייע$',
97c1010edaSGreg Roach            "\x01ע",
98c1010edaSGreg Roach        ],
99c1010edaSGreg Roach        [
100c1010edaSGreg Roach            'יי',
101c1010edaSGreg Roach            'ע',
102c1010edaSGreg Roach        ],
103c1010edaSGreg Roach        [
104c1010edaSGreg Roach            "\x01",
105c1010edaSGreg Roach            'יי',
106c1010edaSGreg Roach        ],
10713abd6f3SGreg Roach    ];
108a25f0a04SGreg Roach
109a25f0a04SGreg Roach    /**
110a25f0a04SGreg Roach     * The DM sound coding table is organized this way:
111a25f0a04SGreg Roach     * key: a variable-length string that corresponds to the UTF-8 character sequence
112a25f0a04SGreg Roach     * represented by the table entry. Currently, that string can be up to 7
113a25f0a04SGreg Roach     * bytes long. This maximum length is defined by the value of global variable
114a25f0a04SGreg Roach     * $maxchar.
115a25f0a04SGreg Roach     *
116a25f0a04SGreg Roach     * value: an array as follows:
117a25f0a04SGreg Roach     * [0]:  zero if not a vowel
118a25f0a04SGreg Roach     * [1]:  sound value when this string is at the beginning of the word
119a25f0a04SGreg Roach     * [2]:  sound value when this string is followed by a vowel
120a25f0a04SGreg Roach     * [3]:  sound value for other cases
121a25f0a04SGreg Roach     * [1],[2],[3] can be repeated several times to create branches in the code
122a25f0a04SGreg Roach     * an empty sound value means "ignore in this state"
123a25f0a04SGreg Roach     */
12416cfb0b9SGreg Roach    private const DM_SOUNDS = [
125c1010edaSGreg Roach        'A'       => [
126c1010edaSGreg Roach            '1',
127c1010edaSGreg Roach            '0',
128c1010edaSGreg Roach            '',
129c1010edaSGreg Roach            '',
130c1010edaSGreg Roach        ],
131c1010edaSGreg Roach        'À'       => [
132c1010edaSGreg Roach            '1',
133c1010edaSGreg Roach            '0',
134c1010edaSGreg Roach            '',
135c1010edaSGreg Roach            '',
136c1010edaSGreg Roach        ],
137c1010edaSGreg Roach        'Á'       => [
138c1010edaSGreg Roach            '1',
139c1010edaSGreg Roach            '0',
140c1010edaSGreg Roach            '',
141c1010edaSGreg Roach            '',
142c1010edaSGreg Roach        ],
143c1010edaSGreg Roach        'Â'       => [
144c1010edaSGreg Roach            '1',
145c1010edaSGreg Roach            '0',
146c1010edaSGreg Roach            '',
147c1010edaSGreg Roach            '',
148c1010edaSGreg Roach        ],
149c1010edaSGreg Roach        'Ã'       => [
150c1010edaSGreg Roach            '1',
151c1010edaSGreg Roach            '0',
152c1010edaSGreg Roach            '',
153c1010edaSGreg Roach            '',
154c1010edaSGreg Roach        ],
155c1010edaSGreg Roach        'Ä'       => [
156c1010edaSGreg Roach            '1',
157c1010edaSGreg Roach            '0',
158c1010edaSGreg Roach            '1',
159c1010edaSGreg Roach            '',
160c1010edaSGreg Roach            '0',
161c1010edaSGreg Roach            '',
162c1010edaSGreg Roach            '',
163c1010edaSGreg Roach        ],
164c1010edaSGreg Roach        'Å'       => [
165c1010edaSGreg Roach            '1',
166c1010edaSGreg Roach            '0',
167c1010edaSGreg Roach            '',
168c1010edaSGreg Roach            '',
169c1010edaSGreg Roach        ],
170c1010edaSGreg Roach        'Ă'       => [
171c1010edaSGreg Roach            '1',
172c1010edaSGreg Roach            '0',
173c1010edaSGreg Roach            '',
174c1010edaSGreg Roach            '',
175c1010edaSGreg Roach        ],
176c1010edaSGreg Roach        'Ą'       => [
177c1010edaSGreg Roach            '1',
178c1010edaSGreg Roach            '',
179c1010edaSGreg Roach            '',
180c1010edaSGreg Roach            '',
181c1010edaSGreg Roach            '',
182c1010edaSGreg Roach            '',
183c1010edaSGreg Roach            '6',
184c1010edaSGreg Roach        ],
185c1010edaSGreg Roach        'Ạ'       => [
186c1010edaSGreg Roach            '1',
187c1010edaSGreg Roach            '0',
188c1010edaSGreg Roach            '',
189c1010edaSGreg Roach            '',
190c1010edaSGreg Roach        ],
191c1010edaSGreg Roach        'Ả'       => [
192c1010edaSGreg Roach            '1',
193c1010edaSGreg Roach            '0',
194c1010edaSGreg Roach            '',
195c1010edaSGreg Roach            '',
196c1010edaSGreg Roach        ],
197c1010edaSGreg Roach        'Ấ'       => [
198c1010edaSGreg Roach            '1',
199c1010edaSGreg Roach            '0',
200c1010edaSGreg Roach            '',
201c1010edaSGreg Roach            '',
202c1010edaSGreg Roach        ],
203c1010edaSGreg Roach        'Ầ'       => [
204c1010edaSGreg Roach            '1',
205c1010edaSGreg Roach            '0',
206c1010edaSGreg Roach            '',
207c1010edaSGreg Roach            '',
208c1010edaSGreg Roach        ],
209c1010edaSGreg Roach        'Ẩ'       => [
210c1010edaSGreg Roach            '1',
211c1010edaSGreg Roach            '0',
212c1010edaSGreg Roach            '',
213c1010edaSGreg Roach            '',
214c1010edaSGreg Roach        ],
215c1010edaSGreg Roach        'Ẫ'       => [
216c1010edaSGreg Roach            '1',
217c1010edaSGreg Roach            '0',
218c1010edaSGreg Roach            '',
219c1010edaSGreg Roach            '',
220c1010edaSGreg Roach        ],
221c1010edaSGreg Roach        'Ậ'       => [
222c1010edaSGreg Roach            '1',
223c1010edaSGreg Roach            '0',
224c1010edaSGreg Roach            '',
225c1010edaSGreg Roach            '',
226c1010edaSGreg Roach        ],
227c1010edaSGreg Roach        'Ắ'       => [
228c1010edaSGreg Roach            '1',
229c1010edaSGreg Roach            '0',
230c1010edaSGreg Roach            '',
231c1010edaSGreg Roach            '',
232c1010edaSGreg Roach        ],
233c1010edaSGreg Roach        'Ằ'       => [
234c1010edaSGreg Roach            '1',
235c1010edaSGreg Roach            '0',
236c1010edaSGreg Roach            '',
237c1010edaSGreg Roach            '',
238c1010edaSGreg Roach        ],
239c1010edaSGreg Roach        'Ẳ'       => [
240c1010edaSGreg Roach            '1',
241c1010edaSGreg Roach            '0',
242c1010edaSGreg Roach            '',
243c1010edaSGreg Roach            '',
244c1010edaSGreg Roach        ],
245c1010edaSGreg Roach        'Ẵ'       => [
246c1010edaSGreg Roach            '1',
247c1010edaSGreg Roach            '0',
248c1010edaSGreg Roach            '',
249c1010edaSGreg Roach            '',
250c1010edaSGreg Roach        ],
251c1010edaSGreg Roach        'Ặ'       => [
252c1010edaSGreg Roach            '1',
253c1010edaSGreg Roach            '0',
254c1010edaSGreg Roach            '',
255c1010edaSGreg Roach            '',
256c1010edaSGreg Roach        ],
257c1010edaSGreg Roach        'AE'      => [
258c1010edaSGreg Roach            '1',
259c1010edaSGreg Roach            '0',
260c1010edaSGreg Roach            '1',
261c1010edaSGreg Roach            '',
262c1010edaSGreg Roach        ],
263c1010edaSGreg Roach        'Æ'       => [
264c1010edaSGreg Roach            '1',
265c1010edaSGreg Roach            '0',
266c1010edaSGreg Roach            '1',
267c1010edaSGreg Roach            '',
268c1010edaSGreg Roach        ],
269c1010edaSGreg Roach        'AI'      => [
270c1010edaSGreg Roach            '1',
271c1010edaSGreg Roach            '0',
272c1010edaSGreg Roach            '1',
273c1010edaSGreg Roach            '',
274c1010edaSGreg Roach        ],
275c1010edaSGreg Roach        'AJ'      => [
276c1010edaSGreg Roach            '1',
277c1010edaSGreg Roach            '0',
278c1010edaSGreg Roach            '1',
279c1010edaSGreg Roach            '',
280c1010edaSGreg Roach        ],
281c1010edaSGreg Roach        'AU'      => [
282c1010edaSGreg Roach            '1',
283c1010edaSGreg Roach            '0',
284c1010edaSGreg Roach            '7',
285c1010edaSGreg Roach            '',
286c1010edaSGreg Roach        ],
287c1010edaSGreg Roach        'AV'      => [
288c1010edaSGreg Roach            '1',
289c1010edaSGreg Roach            '0',
290c1010edaSGreg Roach            '7',
291c1010edaSGreg Roach            '',
292c1010edaSGreg Roach            '7',
293c1010edaSGreg Roach            '7',
294c1010edaSGreg Roach            '7',
295c1010edaSGreg Roach        ],
296c1010edaSGreg Roach        'ÄU'      => [
297c1010edaSGreg Roach            '1',
298c1010edaSGreg Roach            '0',
299c1010edaSGreg Roach            '1',
300c1010edaSGreg Roach            '',
301c1010edaSGreg Roach        ],
302c1010edaSGreg Roach        'AY'      => [
303c1010edaSGreg Roach            '1',
304c1010edaSGreg Roach            '0',
305c1010edaSGreg Roach            '1',
306c1010edaSGreg Roach            '',
307c1010edaSGreg Roach        ],
308c1010edaSGreg Roach        'B'       => [
309c1010edaSGreg Roach            '0',
310c1010edaSGreg Roach            '7',
311c1010edaSGreg Roach            '7',
312c1010edaSGreg Roach            '7',
313c1010edaSGreg Roach        ],
314c1010edaSGreg Roach        'C'       => [
315c1010edaSGreg Roach            '0',
316c1010edaSGreg Roach            '5',
317c1010edaSGreg Roach            '5',
318c1010edaSGreg Roach            '5',
319c1010edaSGreg Roach            '34',
320c1010edaSGreg Roach            '4',
321c1010edaSGreg Roach            '4',
322c1010edaSGreg Roach        ],
323c1010edaSGreg Roach        'Ć'       => [
324c1010edaSGreg Roach            '0',
325c1010edaSGreg Roach            '4',
326c1010edaSGreg Roach            '4',
327c1010edaSGreg Roach            '4',
328c1010edaSGreg Roach        ],
329c1010edaSGreg Roach        'Č'       => [
330c1010edaSGreg Roach            '0',
331c1010edaSGreg Roach            '4',
332c1010edaSGreg Roach            '4',
333c1010edaSGreg Roach            '4',
334c1010edaSGreg Roach        ],
335c1010edaSGreg Roach        'Ç'       => [
336c1010edaSGreg Roach            '0',
337c1010edaSGreg Roach            '4',
338c1010edaSGreg Roach            '4',
339c1010edaSGreg Roach            '4',
340c1010edaSGreg Roach        ],
341c1010edaSGreg Roach        'CH'      => [
342c1010edaSGreg Roach            '0',
343c1010edaSGreg Roach            '5',
344c1010edaSGreg Roach            '5',
345c1010edaSGreg Roach            '5',
346c1010edaSGreg Roach            '34',
347c1010edaSGreg Roach            '4',
348c1010edaSGreg Roach            '4',
349c1010edaSGreg Roach        ],
350c1010edaSGreg Roach        'CHS'     => [
351c1010edaSGreg Roach            '0',
352c1010edaSGreg Roach            '5',
353c1010edaSGreg Roach            '54',
354c1010edaSGreg Roach            '54',
355c1010edaSGreg Roach        ],
356c1010edaSGreg Roach        'CK'      => [
357c1010edaSGreg Roach            '0',
358c1010edaSGreg Roach            '5',
359c1010edaSGreg Roach            '5',
360c1010edaSGreg Roach            '5',
361c1010edaSGreg Roach            '45',
362c1010edaSGreg Roach            '45',
363c1010edaSGreg Roach            '45',
364c1010edaSGreg Roach        ],
365c1010edaSGreg Roach        'CCS'     => [
366c1010edaSGreg Roach            '0',
367c1010edaSGreg Roach            '4',
368c1010edaSGreg Roach            '4',
369c1010edaSGreg Roach            '4',
370c1010edaSGreg Roach        ],
371c1010edaSGreg Roach        'CS'      => [
372c1010edaSGreg Roach            '0',
373c1010edaSGreg Roach            '4',
374c1010edaSGreg Roach            '4',
375c1010edaSGreg Roach            '4',
376c1010edaSGreg Roach        ],
377c1010edaSGreg Roach        'CSZ'     => [
378c1010edaSGreg Roach            '0',
379c1010edaSGreg Roach            '4',
380c1010edaSGreg Roach            '4',
381c1010edaSGreg Roach            '4',
382c1010edaSGreg Roach        ],
383c1010edaSGreg Roach        'CZ'      => [
384c1010edaSGreg Roach            '0',
385c1010edaSGreg Roach            '4',
386c1010edaSGreg Roach            '4',
387c1010edaSGreg Roach            '4',
388c1010edaSGreg Roach        ],
389c1010edaSGreg Roach        'CZS'     => [
390c1010edaSGreg Roach            '0',
391c1010edaSGreg Roach            '4',
392c1010edaSGreg Roach            '4',
393c1010edaSGreg Roach            '4',
394c1010edaSGreg Roach        ],
395c1010edaSGreg Roach        'D'       => [
396c1010edaSGreg Roach            '0',
397c1010edaSGreg Roach            '3',
398c1010edaSGreg Roach            '3',
399c1010edaSGreg Roach            '3',
400c1010edaSGreg Roach        ],
401c1010edaSGreg Roach        'Ď'       => [
402c1010edaSGreg Roach            '0',
403c1010edaSGreg Roach            '3',
404c1010edaSGreg Roach            '3',
405c1010edaSGreg Roach            '3',
406c1010edaSGreg Roach        ],
407c1010edaSGreg Roach        'Đ'       => [
408c1010edaSGreg Roach            '0',
409c1010edaSGreg Roach            '3',
410c1010edaSGreg Roach            '3',
411c1010edaSGreg Roach            '3',
412c1010edaSGreg Roach        ],
413c1010edaSGreg Roach        'DRS'     => [
414c1010edaSGreg Roach            '0',
415c1010edaSGreg Roach            '4',
416c1010edaSGreg Roach            '4',
417c1010edaSGreg Roach            '4',
418c1010edaSGreg Roach        ],
419c1010edaSGreg Roach        'DRZ'     => [
420c1010edaSGreg Roach            '0',
421c1010edaSGreg Roach            '4',
422c1010edaSGreg Roach            '4',
423c1010edaSGreg Roach            '4',
424c1010edaSGreg Roach        ],
425c1010edaSGreg Roach        'DS'      => [
426c1010edaSGreg Roach            '0',
427c1010edaSGreg Roach            '4',
428c1010edaSGreg Roach            '4',
429c1010edaSGreg Roach            '4',
430c1010edaSGreg Roach        ],
431c1010edaSGreg Roach        'DSH'     => [
432c1010edaSGreg Roach            '0',
433c1010edaSGreg Roach            '4',
434c1010edaSGreg Roach            '4',
435c1010edaSGreg Roach            '4',
436c1010edaSGreg Roach        ],
437c1010edaSGreg Roach        'DSZ'     => [
438c1010edaSGreg Roach            '0',
439c1010edaSGreg Roach            '4',
440c1010edaSGreg Roach            '4',
441c1010edaSGreg Roach            '4',
442c1010edaSGreg Roach        ],
443c1010edaSGreg Roach        'DT'      => [
444c1010edaSGreg Roach            '0',
445c1010edaSGreg Roach            '3',
446c1010edaSGreg Roach            '3',
447c1010edaSGreg Roach            '3',
448c1010edaSGreg Roach        ],
449c1010edaSGreg Roach        'DDZ'     => [
450c1010edaSGreg Roach            '0',
451c1010edaSGreg Roach            '4',
452c1010edaSGreg Roach            '4',
453c1010edaSGreg Roach            '4',
454c1010edaSGreg Roach        ],
455c1010edaSGreg Roach        'DDZS'    => [
456c1010edaSGreg Roach            '0',
457c1010edaSGreg Roach            '4',
458c1010edaSGreg Roach            '4',
459c1010edaSGreg Roach            '4',
460c1010edaSGreg Roach        ],
461c1010edaSGreg Roach        'DZ'      => [
462c1010edaSGreg Roach            '0',
463c1010edaSGreg Roach            '4',
464c1010edaSGreg Roach            '4',
465c1010edaSGreg Roach            '4',
466c1010edaSGreg Roach        ],
467c1010edaSGreg Roach        'DŹ'      => [
468c1010edaSGreg Roach            '0',
469c1010edaSGreg Roach            '4',
470c1010edaSGreg Roach            '4',
471c1010edaSGreg Roach            '4',
472c1010edaSGreg Roach        ],
473c1010edaSGreg Roach        'DŻ'      => [
474c1010edaSGreg Roach            '0',
475c1010edaSGreg Roach            '4',
476c1010edaSGreg Roach            '4',
477c1010edaSGreg Roach            '4',
478c1010edaSGreg Roach        ],
479c1010edaSGreg Roach        'DZH'     => [
480c1010edaSGreg Roach            '0',
481c1010edaSGreg Roach            '4',
482c1010edaSGreg Roach            '4',
483c1010edaSGreg Roach            '4',
484c1010edaSGreg Roach        ],
485c1010edaSGreg Roach        'DZS'     => [
486c1010edaSGreg Roach            '0',
487c1010edaSGreg Roach            '4',
488c1010edaSGreg Roach            '4',
489c1010edaSGreg Roach            '4',
490c1010edaSGreg Roach        ],
491c1010edaSGreg Roach        'E'       => [
492c1010edaSGreg Roach            '1',
493c1010edaSGreg Roach            '0',
494c1010edaSGreg Roach            '',
495c1010edaSGreg Roach            '',
496c1010edaSGreg Roach        ],
497c1010edaSGreg Roach        'È'       => [
498c1010edaSGreg Roach            '1',
499c1010edaSGreg Roach            '0',
500c1010edaSGreg Roach            '',
501c1010edaSGreg Roach            '',
502c1010edaSGreg Roach        ],
503c1010edaSGreg Roach        'É'       => [
504c1010edaSGreg Roach            '1',
505c1010edaSGreg Roach            '0',
506c1010edaSGreg Roach            '',
507c1010edaSGreg Roach            '',
508c1010edaSGreg Roach        ],
509c1010edaSGreg Roach        'Ê'       => [
510c1010edaSGreg Roach            '1',
511c1010edaSGreg Roach            '0',
512c1010edaSGreg Roach            '',
513c1010edaSGreg Roach            '',
514c1010edaSGreg Roach        ],
515c1010edaSGreg Roach        'Ë'       => [
516c1010edaSGreg Roach            '1',
517c1010edaSGreg Roach            '0',
518c1010edaSGreg Roach            '',
519c1010edaSGreg Roach            '',
520c1010edaSGreg Roach        ],
521c1010edaSGreg Roach        'Ĕ'       => [
522c1010edaSGreg Roach            '1',
523c1010edaSGreg Roach            '0',
524c1010edaSGreg Roach            '',
525c1010edaSGreg Roach            '',
526c1010edaSGreg Roach        ],
527c1010edaSGreg Roach        'Ė'       => [
528c1010edaSGreg Roach            '1',
529c1010edaSGreg Roach            '0',
530c1010edaSGreg Roach            '',
531c1010edaSGreg Roach            '',
532c1010edaSGreg Roach        ],
533c1010edaSGreg Roach        'Ę'       => [
534c1010edaSGreg Roach            '1',
535c1010edaSGreg Roach            '',
536c1010edaSGreg Roach            '',
537c1010edaSGreg Roach            '6',
538c1010edaSGreg Roach            '',
539c1010edaSGreg Roach            '',
540c1010edaSGreg Roach            '',
541c1010edaSGreg Roach        ],
542c1010edaSGreg Roach        'Ẹ'       => [
543c1010edaSGreg Roach            '1',
544c1010edaSGreg Roach            '0',
545c1010edaSGreg Roach            '',
546c1010edaSGreg Roach            '',
547c1010edaSGreg Roach        ],
548c1010edaSGreg Roach        'Ẻ'       => [
549c1010edaSGreg Roach            '1',
550c1010edaSGreg Roach            '0',
551c1010edaSGreg Roach            '',
552c1010edaSGreg Roach            '',
553c1010edaSGreg Roach        ],
554c1010edaSGreg Roach        'Ẽ'       => [
555c1010edaSGreg Roach            '1',
556c1010edaSGreg Roach            '0',
557c1010edaSGreg Roach            '',
558c1010edaSGreg Roach            '',
559c1010edaSGreg Roach        ],
560c1010edaSGreg Roach        'Ế'       => [
561c1010edaSGreg Roach            '1',
562c1010edaSGreg Roach            '0',
563c1010edaSGreg Roach            '',
564c1010edaSGreg Roach            '',
565c1010edaSGreg Roach        ],
566c1010edaSGreg Roach        'Ề'       => [
567c1010edaSGreg Roach            '1',
568c1010edaSGreg Roach            '0',
569c1010edaSGreg Roach            '',
570c1010edaSGreg Roach            '',
571c1010edaSGreg Roach        ],
572c1010edaSGreg Roach        'Ể'       => [
573c1010edaSGreg Roach            '1',
574c1010edaSGreg Roach            '0',
575c1010edaSGreg Roach            '',
576c1010edaSGreg Roach            '',
577c1010edaSGreg Roach        ],
578c1010edaSGreg Roach        'Ễ'       => [
579c1010edaSGreg Roach            '1',
580c1010edaSGreg Roach            '0',
581c1010edaSGreg Roach            '',
582c1010edaSGreg Roach            '',
583c1010edaSGreg Roach        ],
584c1010edaSGreg Roach        'Ệ'       => [
585c1010edaSGreg Roach            '1',
586c1010edaSGreg Roach            '0',
587c1010edaSGreg Roach            '',
588c1010edaSGreg Roach            '',
589c1010edaSGreg Roach        ],
590c1010edaSGreg Roach        'EAU'     => [
591c1010edaSGreg Roach            '1',
592c1010edaSGreg Roach            '0',
593c1010edaSGreg Roach            '',
594c1010edaSGreg Roach            '',
595c1010edaSGreg Roach        ],
596c1010edaSGreg Roach        'EI'      => [
597c1010edaSGreg Roach            '1',
598c1010edaSGreg Roach            '0',
599c1010edaSGreg Roach            '1',
600c1010edaSGreg Roach            '',
601c1010edaSGreg Roach        ],
602c1010edaSGreg Roach        'EJ'      => [
603c1010edaSGreg Roach            '1',
604c1010edaSGreg Roach            '0',
605c1010edaSGreg Roach            '1',
606c1010edaSGreg Roach            '',
607c1010edaSGreg Roach        ],
608c1010edaSGreg Roach        'EU'      => [
609c1010edaSGreg Roach            '1',
610c1010edaSGreg Roach            '1',
611c1010edaSGreg Roach            '1',
612c1010edaSGreg Roach            '',
613c1010edaSGreg Roach        ],
614c1010edaSGreg Roach        'EY'      => [
615c1010edaSGreg Roach            '1',
616c1010edaSGreg Roach            '0',
617c1010edaSGreg Roach            '1',
618c1010edaSGreg Roach            '',
619c1010edaSGreg Roach        ],
620c1010edaSGreg Roach        'F'       => [
621c1010edaSGreg Roach            '0',
622c1010edaSGreg Roach            '7',
623c1010edaSGreg Roach            '7',
624c1010edaSGreg Roach            '7',
625c1010edaSGreg Roach        ],
626c1010edaSGreg Roach        'FB'      => [
627c1010edaSGreg Roach            '0',
628c1010edaSGreg Roach            '7',
629c1010edaSGreg Roach            '7',
630c1010edaSGreg Roach            '7',
631c1010edaSGreg Roach        ],
632c1010edaSGreg Roach        'G'       => [
633c1010edaSGreg Roach            '0',
634c1010edaSGreg Roach            '5',
635c1010edaSGreg Roach            '5',
636c1010edaSGreg Roach            '5',
637c1010edaSGreg Roach            '34',
638c1010edaSGreg Roach            '4',
639c1010edaSGreg Roach            '4',
640c1010edaSGreg Roach        ],
641c1010edaSGreg Roach        'Ğ'       => [
642c1010edaSGreg Roach            '0',
643c1010edaSGreg Roach            '',
644c1010edaSGreg Roach            '',
645c1010edaSGreg Roach            '',
646c1010edaSGreg Roach        ],
647c1010edaSGreg Roach        'GGY'     => [
648c1010edaSGreg Roach            '0',
649c1010edaSGreg Roach            '5',
650c1010edaSGreg Roach            '5',
651c1010edaSGreg Roach            '5',
652c1010edaSGreg Roach        ],
653c1010edaSGreg Roach        'GY'      => [
654c1010edaSGreg Roach            '0',
655c1010edaSGreg Roach            '5',
656c1010edaSGreg Roach            '5',
657c1010edaSGreg Roach            '5',
658c1010edaSGreg Roach        ],
659c1010edaSGreg Roach        'H'       => [
660c1010edaSGreg Roach            '0',
661c1010edaSGreg Roach            '5',
662c1010edaSGreg Roach            '5',
663c1010edaSGreg Roach            '',
664c1010edaSGreg Roach            '5',
665c1010edaSGreg Roach            '5',
666c1010edaSGreg Roach            '5',
667c1010edaSGreg Roach        ],
668c1010edaSGreg Roach        'I'       => [
669c1010edaSGreg Roach            '1',
670c1010edaSGreg Roach            '0',
671c1010edaSGreg Roach            '',
672c1010edaSGreg Roach            '',
673c1010edaSGreg Roach        ],
674c1010edaSGreg Roach        'Ì'       => [
675c1010edaSGreg Roach            '1',
676c1010edaSGreg Roach            '0',
677c1010edaSGreg Roach            '',
678c1010edaSGreg Roach            '',
679c1010edaSGreg Roach        ],
680c1010edaSGreg Roach        'Í'       => [
681c1010edaSGreg Roach            '1',
682c1010edaSGreg Roach            '0',
683c1010edaSGreg Roach            '',
684c1010edaSGreg Roach            '',
685c1010edaSGreg Roach        ],
686c1010edaSGreg Roach        'Î'       => [
687c1010edaSGreg Roach            '1',
688c1010edaSGreg Roach            '0',
689c1010edaSGreg Roach            '',
690c1010edaSGreg Roach            '',
691c1010edaSGreg Roach        ],
692c1010edaSGreg Roach        'Ï'       => [
693c1010edaSGreg Roach            '1',
694c1010edaSGreg Roach            '0',
695c1010edaSGreg Roach            '',
696c1010edaSGreg Roach            '',
697c1010edaSGreg Roach        ],
698c1010edaSGreg Roach        'Ĩ'       => [
699c1010edaSGreg Roach            '1',
700c1010edaSGreg Roach            '0',
701c1010edaSGreg Roach            '',
702c1010edaSGreg Roach            '',
703c1010edaSGreg Roach        ],
704c1010edaSGreg Roach        'Į'       => [
705c1010edaSGreg Roach            '1',
706c1010edaSGreg Roach            '0',
707c1010edaSGreg Roach            '',
708c1010edaSGreg Roach            '',
709c1010edaSGreg Roach        ],
710c1010edaSGreg Roach        'İ'       => [
711c1010edaSGreg Roach            '1',
712c1010edaSGreg Roach            '0',
713c1010edaSGreg Roach            '',
714c1010edaSGreg Roach            '',
715c1010edaSGreg Roach        ],
716c1010edaSGreg Roach        'Ỉ'       => [
717c1010edaSGreg Roach            '1',
718c1010edaSGreg Roach            '0',
719c1010edaSGreg Roach            '',
720c1010edaSGreg Roach            '',
721c1010edaSGreg Roach        ],
722c1010edaSGreg Roach        'Ị'       => [
723c1010edaSGreg Roach            '1',
724c1010edaSGreg Roach            '0',
725c1010edaSGreg Roach            '',
726c1010edaSGreg Roach            '',
727c1010edaSGreg Roach        ],
728c1010edaSGreg Roach        'IA'      => [
729c1010edaSGreg Roach            '1',
730c1010edaSGreg Roach            '1',
731c1010edaSGreg Roach            '',
732c1010edaSGreg Roach            '',
733c1010edaSGreg Roach        ],
734c1010edaSGreg Roach        'IE'      => [
735c1010edaSGreg Roach            '1',
736c1010edaSGreg Roach            '1',
737c1010edaSGreg Roach            '',
738c1010edaSGreg Roach            '',
739c1010edaSGreg Roach        ],
740c1010edaSGreg Roach        'IO'      => [
741c1010edaSGreg Roach            '1',
742c1010edaSGreg Roach            '1',
743c1010edaSGreg Roach            '',
744c1010edaSGreg Roach            '',
745c1010edaSGreg Roach        ],
746c1010edaSGreg Roach        'IU'      => [
747c1010edaSGreg Roach            '1',
748c1010edaSGreg Roach            '1',
749c1010edaSGreg Roach            '',
750c1010edaSGreg Roach            '',
751c1010edaSGreg Roach        ],
752c1010edaSGreg Roach        'J'       => [
753c1010edaSGreg Roach            '0',
754c1010edaSGreg Roach            '1',
755c1010edaSGreg Roach            '',
756c1010edaSGreg Roach            '',
757c1010edaSGreg Roach            '4',
758c1010edaSGreg Roach            '4',
759c1010edaSGreg Roach            '4',
760c1010edaSGreg Roach            '5',
761c1010edaSGreg Roach            '5',
762c1010edaSGreg Roach            '',
763c1010edaSGreg Roach        ],
764c1010edaSGreg Roach        'K'       => [
765c1010edaSGreg Roach            '0',
766c1010edaSGreg Roach            '5',
767c1010edaSGreg Roach            '5',
768c1010edaSGreg Roach            '5',
769c1010edaSGreg Roach        ],
770c1010edaSGreg Roach        'KH'      => [
771c1010edaSGreg Roach            '0',
772c1010edaSGreg Roach            '5',
773c1010edaSGreg Roach            '5',
774c1010edaSGreg Roach            '5',
775c1010edaSGreg Roach        ],
776c1010edaSGreg Roach        'KS'      => [
777c1010edaSGreg Roach            '0',
778c1010edaSGreg Roach            '5',
779c1010edaSGreg Roach            '54',
780c1010edaSGreg Roach            '54',
781c1010edaSGreg Roach        ],
782c1010edaSGreg Roach        'L'       => [
783c1010edaSGreg Roach            '0',
784c1010edaSGreg Roach            '8',
785c1010edaSGreg Roach            '8',
786c1010edaSGreg Roach            '8',
787c1010edaSGreg Roach        ],
788c1010edaSGreg Roach        'Ľ'       => [
789c1010edaSGreg Roach            '0',
790c1010edaSGreg Roach            '8',
791c1010edaSGreg Roach            '8',
792c1010edaSGreg Roach            '8',
793c1010edaSGreg Roach        ],
794c1010edaSGreg Roach        'Ĺ'       => [
795c1010edaSGreg Roach            '0',
796c1010edaSGreg Roach            '8',
797c1010edaSGreg Roach            '8',
798c1010edaSGreg Roach            '8',
799c1010edaSGreg Roach        ],
800c1010edaSGreg Roach        'Ł'       => [
801c1010edaSGreg Roach            '0',
802c1010edaSGreg Roach            '7',
803c1010edaSGreg Roach            '7',
804c1010edaSGreg Roach            '7',
805c1010edaSGreg Roach            '8',
806c1010edaSGreg Roach            '8',
807c1010edaSGreg Roach            '8',
808c1010edaSGreg Roach        ],
809c1010edaSGreg Roach        'LL'      => [
810c1010edaSGreg Roach            '0',
811c1010edaSGreg Roach            '8',
812c1010edaSGreg Roach            '8',
813c1010edaSGreg Roach            '8',
814c1010edaSGreg Roach            '58',
815c1010edaSGreg Roach            '8',
816c1010edaSGreg Roach            '8',
817c1010edaSGreg Roach            '1',
818c1010edaSGreg Roach            '8',
819c1010edaSGreg Roach            '8',
820c1010edaSGreg Roach        ],
821c1010edaSGreg Roach        'LLY'     => [
822c1010edaSGreg Roach            '0',
823c1010edaSGreg Roach            '8',
824c1010edaSGreg Roach            '8',
825c1010edaSGreg Roach            '8',
826c1010edaSGreg Roach            '1',
827c1010edaSGreg Roach            '8',
828c1010edaSGreg Roach            '8',
829c1010edaSGreg Roach        ],
830c1010edaSGreg Roach        'LY'      => [
831c1010edaSGreg Roach            '0',
832c1010edaSGreg Roach            '8',
833c1010edaSGreg Roach            '8',
834c1010edaSGreg Roach            '8',
835c1010edaSGreg Roach            '1',
836c1010edaSGreg Roach            '8',
837c1010edaSGreg Roach            '8',
838c1010edaSGreg Roach        ],
839c1010edaSGreg Roach        'M'       => [
840c1010edaSGreg Roach            '0',
841c1010edaSGreg Roach            '6',
842c1010edaSGreg Roach            '6',
843c1010edaSGreg Roach            '6',
844c1010edaSGreg Roach        ],
845c1010edaSGreg Roach        'MĔ'      => [
846c1010edaSGreg Roach            '0',
847c1010edaSGreg Roach            '66',
848c1010edaSGreg Roach            '66',
849c1010edaSGreg Roach            '66',
850c1010edaSGreg Roach        ],
851c1010edaSGreg Roach        'MN'      => [
852c1010edaSGreg Roach            '0',
853c1010edaSGreg Roach            '66',
854c1010edaSGreg Roach            '66',
855c1010edaSGreg Roach            '66',
856c1010edaSGreg Roach        ],
857c1010edaSGreg Roach        'N'       => [
858c1010edaSGreg Roach            '0',
859c1010edaSGreg Roach            '6',
860c1010edaSGreg Roach            '6',
861c1010edaSGreg Roach            '6',
862c1010edaSGreg Roach        ],
863c1010edaSGreg Roach        'Ń'       => [
864c1010edaSGreg Roach            '0',
865c1010edaSGreg Roach            '6',
866c1010edaSGreg Roach            '6',
867c1010edaSGreg Roach            '6',
868c1010edaSGreg Roach        ],
869c1010edaSGreg Roach        'Ň'       => [
870c1010edaSGreg Roach            '0',
871c1010edaSGreg Roach            '6',
872c1010edaSGreg Roach            '6',
873c1010edaSGreg Roach            '6',
874c1010edaSGreg Roach        ],
875c1010edaSGreg Roach        'Ñ'       => [
876c1010edaSGreg Roach            '0',
877c1010edaSGreg Roach            '6',
878c1010edaSGreg Roach            '6',
879c1010edaSGreg Roach            '6',
880c1010edaSGreg Roach        ],
881c1010edaSGreg Roach        'NM'      => [
882c1010edaSGreg Roach            '0',
883c1010edaSGreg Roach            '66',
884c1010edaSGreg Roach            '66',
885c1010edaSGreg Roach            '66',
886c1010edaSGreg Roach        ],
887c1010edaSGreg Roach        'O'       => [
888c1010edaSGreg Roach            '1',
889c1010edaSGreg Roach            '0',
890c1010edaSGreg Roach            '',
891c1010edaSGreg Roach            '',
892c1010edaSGreg Roach        ],
893c1010edaSGreg Roach        'Ò'       => [
894c1010edaSGreg Roach            '1',
895c1010edaSGreg Roach            '0',
896c1010edaSGreg Roach            '',
897c1010edaSGreg Roach            '',
898c1010edaSGreg Roach        ],
899c1010edaSGreg Roach        'Ó'       => [
900c1010edaSGreg Roach            '1',
901c1010edaSGreg Roach            '0',
902c1010edaSGreg Roach            '',
903c1010edaSGreg Roach            '',
904c1010edaSGreg Roach        ],
905c1010edaSGreg Roach        'Ô'       => [
906c1010edaSGreg Roach            '1',
907c1010edaSGreg Roach            '0',
908c1010edaSGreg Roach            '',
909c1010edaSGreg Roach            '',
910c1010edaSGreg Roach        ],
911c1010edaSGreg Roach        'Õ'       => [
912c1010edaSGreg Roach            '1',
913c1010edaSGreg Roach            '0',
914c1010edaSGreg Roach            '',
915c1010edaSGreg Roach            '',
916c1010edaSGreg Roach        ],
917c1010edaSGreg Roach        'Ö'       => [
918c1010edaSGreg Roach            '1',
919c1010edaSGreg Roach            '0',
920c1010edaSGreg Roach            '',
921c1010edaSGreg Roach            '',
922c1010edaSGreg Roach        ],
923c1010edaSGreg Roach        'Ø'       => [
924c1010edaSGreg Roach            '1',
925c1010edaSGreg Roach            '0',
926c1010edaSGreg Roach            '',
927c1010edaSGreg Roach            '',
928c1010edaSGreg Roach        ],
929c1010edaSGreg Roach        'Ő'       => [
930c1010edaSGreg Roach            '1',
931c1010edaSGreg Roach            '0',
932c1010edaSGreg Roach            '',
933c1010edaSGreg Roach            '',
934c1010edaSGreg Roach        ],
935c1010edaSGreg Roach        'Œ'       => [
936c1010edaSGreg Roach            '1',
937c1010edaSGreg Roach            '0',
938c1010edaSGreg Roach            '',
939c1010edaSGreg Roach            '',
940c1010edaSGreg Roach        ],
941c1010edaSGreg Roach        'Ơ'       => [
942c1010edaSGreg Roach            '1',
943c1010edaSGreg Roach            '0',
944c1010edaSGreg Roach            '',
945c1010edaSGreg Roach            '',
946c1010edaSGreg Roach        ],
947c1010edaSGreg Roach        'Ọ'       => [
948c1010edaSGreg Roach            '1',
949c1010edaSGreg Roach            '0',
950c1010edaSGreg Roach            '',
951c1010edaSGreg Roach            '',
952c1010edaSGreg Roach        ],
953c1010edaSGreg Roach        'Ỏ'       => [
954c1010edaSGreg Roach            '1',
955c1010edaSGreg Roach            '0',
956c1010edaSGreg Roach            '',
957c1010edaSGreg Roach            '',
958c1010edaSGreg Roach        ],
959c1010edaSGreg Roach        'Ố'       => [
960c1010edaSGreg Roach            '1',
961c1010edaSGreg Roach            '0',
962c1010edaSGreg Roach            '',
963c1010edaSGreg Roach            '',
964c1010edaSGreg Roach        ],
965c1010edaSGreg Roach        'Ồ'       => [
966c1010edaSGreg Roach            '1',
967c1010edaSGreg Roach            '0',
968c1010edaSGreg Roach            '',
969c1010edaSGreg Roach            '',
970c1010edaSGreg Roach        ],
971c1010edaSGreg Roach        'Ổ'       => [
972c1010edaSGreg Roach            '1',
973c1010edaSGreg Roach            '0',
974c1010edaSGreg Roach            '',
975c1010edaSGreg Roach            '',
976c1010edaSGreg Roach        ],
977c1010edaSGreg Roach        'Ỗ'       => [
978c1010edaSGreg Roach            '1',
979c1010edaSGreg Roach            '0',
980c1010edaSGreg Roach            '',
981c1010edaSGreg Roach            '',
982c1010edaSGreg Roach        ],
983c1010edaSGreg Roach        'Ộ'       => [
984c1010edaSGreg Roach            '1',
985c1010edaSGreg Roach            '0',
986c1010edaSGreg Roach            '',
987c1010edaSGreg Roach            '',
988c1010edaSGreg Roach        ],
989c1010edaSGreg Roach        'Ớ'       => [
990c1010edaSGreg Roach            '1',
991c1010edaSGreg Roach            '0',
992c1010edaSGreg Roach            '',
993c1010edaSGreg Roach            '',
994c1010edaSGreg Roach        ],
995c1010edaSGreg Roach        'Ờ'       => [
996c1010edaSGreg Roach            '1',
997c1010edaSGreg Roach            '0',
998c1010edaSGreg Roach            '',
999c1010edaSGreg Roach            '',
1000c1010edaSGreg Roach        ],
1001c1010edaSGreg Roach        'Ở'       => [
1002c1010edaSGreg Roach            '1',
1003c1010edaSGreg Roach            '0',
1004c1010edaSGreg Roach            '',
1005c1010edaSGreg Roach            '',
1006c1010edaSGreg Roach        ],
1007c1010edaSGreg Roach        'Ỡ'       => [
1008c1010edaSGreg Roach            '1',
1009c1010edaSGreg Roach            '0',
1010c1010edaSGreg Roach            '',
1011c1010edaSGreg Roach            '',
1012c1010edaSGreg Roach        ],
1013c1010edaSGreg Roach        'Ợ'       => [
1014c1010edaSGreg Roach            '1',
1015c1010edaSGreg Roach            '0',
1016c1010edaSGreg Roach            '',
1017c1010edaSGreg Roach            '',
1018c1010edaSGreg Roach        ],
1019c1010edaSGreg Roach        'OE'      => [
1020c1010edaSGreg Roach            '1',
1021c1010edaSGreg Roach            '0',
1022c1010edaSGreg Roach            '',
1023c1010edaSGreg Roach            '',
1024c1010edaSGreg Roach        ],
1025c1010edaSGreg Roach        'OI'      => [
1026c1010edaSGreg Roach            '1',
1027c1010edaSGreg Roach            '0',
1028c1010edaSGreg Roach            '1',
1029c1010edaSGreg Roach            '',
1030c1010edaSGreg Roach        ],
1031c1010edaSGreg Roach        'OJ'      => [
1032c1010edaSGreg Roach            '1',
1033c1010edaSGreg Roach            '0',
1034c1010edaSGreg Roach            '1',
1035c1010edaSGreg Roach            '',
1036c1010edaSGreg Roach        ],
1037c1010edaSGreg Roach        'OU'      => [
1038c1010edaSGreg Roach            '1',
1039c1010edaSGreg Roach            '0',
1040c1010edaSGreg Roach            '',
1041c1010edaSGreg Roach            '',
1042c1010edaSGreg Roach        ],
1043c1010edaSGreg Roach        'OY'      => [
1044c1010edaSGreg Roach            '1',
1045c1010edaSGreg Roach            '0',
1046c1010edaSGreg Roach            '1',
1047c1010edaSGreg Roach            '',
1048c1010edaSGreg Roach        ],
1049c1010edaSGreg Roach        'P'       => [
1050c1010edaSGreg Roach            '0',
1051c1010edaSGreg Roach            '7',
1052c1010edaSGreg Roach            '7',
1053c1010edaSGreg Roach            '7',
1054c1010edaSGreg Roach        ],
1055c1010edaSGreg Roach        'PF'      => [
1056c1010edaSGreg Roach            '0',
1057c1010edaSGreg Roach            '7',
1058c1010edaSGreg Roach            '7',
1059c1010edaSGreg Roach            '7',
1060c1010edaSGreg Roach        ],
1061c1010edaSGreg Roach        'PH'      => [
1062c1010edaSGreg Roach            '0',
1063c1010edaSGreg Roach            '7',
1064c1010edaSGreg Roach            '7',
1065c1010edaSGreg Roach            '7',
1066c1010edaSGreg Roach        ],
1067c1010edaSGreg Roach        'Q'       => [
1068c1010edaSGreg Roach            '0',
1069c1010edaSGreg Roach            '5',
1070c1010edaSGreg Roach            '5',
1071c1010edaSGreg Roach            '5',
1072c1010edaSGreg Roach        ],
1073c1010edaSGreg Roach        'R'       => [
1074c1010edaSGreg Roach            '0',
1075c1010edaSGreg Roach            '9',
1076c1010edaSGreg Roach            '9',
1077c1010edaSGreg Roach            '9',
1078c1010edaSGreg Roach        ],
1079c1010edaSGreg Roach        'Ř'       => [
1080c1010edaSGreg Roach            '0',
1081c1010edaSGreg Roach            '4',
1082c1010edaSGreg Roach            '4',
1083c1010edaSGreg Roach            '4',
1084c1010edaSGreg Roach        ],
1085c1010edaSGreg Roach        'RS'      => [
1086c1010edaSGreg Roach            '0',
1087c1010edaSGreg Roach            '4',
1088c1010edaSGreg Roach            '4',
1089c1010edaSGreg Roach            '4',
1090c1010edaSGreg Roach            '94',
1091c1010edaSGreg Roach            '94',
1092c1010edaSGreg Roach            '94',
1093c1010edaSGreg Roach        ],
1094c1010edaSGreg Roach        'RZ'      => [
1095c1010edaSGreg Roach            '0',
1096c1010edaSGreg Roach            '4',
1097c1010edaSGreg Roach            '4',
1098c1010edaSGreg Roach            '4',
1099c1010edaSGreg Roach            '94',
1100c1010edaSGreg Roach            '94',
1101c1010edaSGreg Roach            '94',
1102c1010edaSGreg Roach        ],
1103c1010edaSGreg Roach        'S'       => [
1104c1010edaSGreg Roach            '0',
1105c1010edaSGreg Roach            '4',
1106c1010edaSGreg Roach            '4',
1107c1010edaSGreg Roach            '4',
1108c1010edaSGreg Roach        ],
1109c1010edaSGreg Roach        'Ś'       => [
1110c1010edaSGreg Roach            '0',
1111c1010edaSGreg Roach            '4',
1112c1010edaSGreg Roach            '4',
1113c1010edaSGreg Roach            '4',
1114c1010edaSGreg Roach        ],
1115c1010edaSGreg Roach        'Š'       => [
1116c1010edaSGreg Roach            '0',
1117c1010edaSGreg Roach            '4',
1118c1010edaSGreg Roach            '4',
1119c1010edaSGreg Roach            '4',
1120c1010edaSGreg Roach        ],
1121c1010edaSGreg Roach        'Ş'       => [
1122c1010edaSGreg Roach            '0',
1123c1010edaSGreg Roach            '4',
1124c1010edaSGreg Roach            '4',
1125c1010edaSGreg Roach            '4',
1126c1010edaSGreg Roach        ],
1127c1010edaSGreg Roach        'SC'      => [
1128c1010edaSGreg Roach            '0',
1129c1010edaSGreg Roach            '2',
1130c1010edaSGreg Roach            '4',
1131c1010edaSGreg Roach            '4',
1132c1010edaSGreg Roach        ],
1133c1010edaSGreg Roach        'ŠČ'      => [
1134c1010edaSGreg Roach            '0',
1135c1010edaSGreg Roach            '2',
1136c1010edaSGreg Roach            '4',
1137c1010edaSGreg Roach            '4',
1138c1010edaSGreg Roach        ],
1139c1010edaSGreg Roach        'SCH'     => [
1140c1010edaSGreg Roach            '0',
1141c1010edaSGreg Roach            '4',
1142c1010edaSGreg Roach            '4',
1143c1010edaSGreg Roach            '4',
1144c1010edaSGreg Roach        ],
1145c1010edaSGreg Roach        'SCHD'    => [
1146c1010edaSGreg Roach            '0',
1147c1010edaSGreg Roach            '2',
1148c1010edaSGreg Roach            '43',
1149c1010edaSGreg Roach            '43',
1150c1010edaSGreg Roach        ],
1151c1010edaSGreg Roach        'SCHT'    => [
1152c1010edaSGreg Roach            '0',
1153c1010edaSGreg Roach            '2',
1154c1010edaSGreg Roach            '43',
1155c1010edaSGreg Roach            '43',
1156c1010edaSGreg Roach        ],
1157c1010edaSGreg Roach        'SCHTCH'  => [
1158c1010edaSGreg Roach            '0',
1159c1010edaSGreg Roach            '2',
1160c1010edaSGreg Roach            '4',
1161c1010edaSGreg Roach            '4',
1162c1010edaSGreg Roach        ],
1163c1010edaSGreg Roach        'SCHTSCH' => [
1164c1010edaSGreg Roach            '0',
1165c1010edaSGreg Roach            '2',
1166c1010edaSGreg Roach            '4',
1167c1010edaSGreg Roach            '4',
1168c1010edaSGreg Roach        ],
1169c1010edaSGreg Roach        'SCHTSH'  => [
1170c1010edaSGreg Roach            '0',
1171c1010edaSGreg Roach            '2',
1172c1010edaSGreg Roach            '4',
1173c1010edaSGreg Roach            '4',
1174c1010edaSGreg Roach        ],
1175c1010edaSGreg Roach        'SD'      => [
1176c1010edaSGreg Roach            '0',
1177c1010edaSGreg Roach            '2',
1178c1010edaSGreg Roach            '43',
1179c1010edaSGreg Roach            '43',
1180c1010edaSGreg Roach        ],
1181c1010edaSGreg Roach        'SH'      => [
1182c1010edaSGreg Roach            '0',
1183c1010edaSGreg Roach            '4',
1184c1010edaSGreg Roach            '4',
1185c1010edaSGreg Roach            '4',
1186c1010edaSGreg Roach        ],
1187c1010edaSGreg Roach        'SHCH'    => [
1188c1010edaSGreg Roach            '0',
1189c1010edaSGreg Roach            '2',
1190c1010edaSGreg Roach            '4',
1191c1010edaSGreg Roach            '4',
1192c1010edaSGreg Roach        ],
1193c1010edaSGreg Roach        'SHD'     => [
1194c1010edaSGreg Roach            '0',
1195c1010edaSGreg Roach            '2',
1196c1010edaSGreg Roach            '43',
1197c1010edaSGreg Roach            '43',
1198c1010edaSGreg Roach        ],
1199c1010edaSGreg Roach        'SHT'     => [
1200c1010edaSGreg Roach            '0',
1201c1010edaSGreg Roach            '2',
1202c1010edaSGreg Roach            '43',
1203c1010edaSGreg Roach            '43',
1204c1010edaSGreg Roach        ],
1205c1010edaSGreg Roach        'SHTCH'   => [
1206c1010edaSGreg Roach            '0',
1207c1010edaSGreg Roach            '2',
1208c1010edaSGreg Roach            '4',
1209c1010edaSGreg Roach            '4',
1210c1010edaSGreg Roach        ],
1211c1010edaSGreg Roach        'SHTSH'   => [
1212c1010edaSGreg Roach            '0',
1213c1010edaSGreg Roach            '2',
1214c1010edaSGreg Roach            '4',
1215c1010edaSGreg Roach            '4',
1216c1010edaSGreg Roach        ],
1217c1010edaSGreg Roach        'ß'       => [
1218c1010edaSGreg Roach            '0',
1219c1010edaSGreg Roach            '',
1220c1010edaSGreg Roach            '4',
1221c1010edaSGreg Roach            '4',
1222c1010edaSGreg Roach        ],
1223c1010edaSGreg Roach        'ST'      => [
1224c1010edaSGreg Roach            '0',
1225c1010edaSGreg Roach            '2',
1226c1010edaSGreg Roach            '43',
1227c1010edaSGreg Roach            '43',
1228c1010edaSGreg Roach        ],
1229c1010edaSGreg Roach        'STCH'    => [
1230c1010edaSGreg Roach            '0',
1231c1010edaSGreg Roach            '2',
1232c1010edaSGreg Roach            '4',
1233c1010edaSGreg Roach            '4',
1234c1010edaSGreg Roach        ],
1235c1010edaSGreg Roach        'STRS'    => [
1236c1010edaSGreg Roach            '0',
1237c1010edaSGreg Roach            '2',
1238c1010edaSGreg Roach            '4',
1239c1010edaSGreg Roach            '4',
1240c1010edaSGreg Roach        ],
1241c1010edaSGreg Roach        'STRZ'    => [
1242c1010edaSGreg Roach            '0',
1243c1010edaSGreg Roach            '2',
1244c1010edaSGreg Roach            '4',
1245c1010edaSGreg Roach            '4',
1246c1010edaSGreg Roach        ],
1247c1010edaSGreg Roach        'STSCH'   => [
1248c1010edaSGreg Roach            '0',
1249c1010edaSGreg Roach            '2',
1250c1010edaSGreg Roach            '4',
1251c1010edaSGreg Roach            '4',
1252c1010edaSGreg Roach        ],
1253c1010edaSGreg Roach        'STSH'    => [
1254c1010edaSGreg Roach            '0',
1255c1010edaSGreg Roach            '2',
1256c1010edaSGreg Roach            '4',
1257c1010edaSGreg Roach            '4',
1258c1010edaSGreg Roach        ],
1259c1010edaSGreg Roach        'SSZ'     => [
1260c1010edaSGreg Roach            '0',
1261c1010edaSGreg Roach            '4',
1262c1010edaSGreg Roach            '4',
1263c1010edaSGreg Roach            '4',
1264c1010edaSGreg Roach        ],
1265c1010edaSGreg Roach        'SZ'      => [
1266c1010edaSGreg Roach            '0',
1267c1010edaSGreg Roach            '4',
1268c1010edaSGreg Roach            '4',
1269c1010edaSGreg Roach            '4',
1270c1010edaSGreg Roach        ],
1271c1010edaSGreg Roach        'SZCS'    => [
1272c1010edaSGreg Roach            '0',
1273c1010edaSGreg Roach            '2',
1274c1010edaSGreg Roach            '4',
1275c1010edaSGreg Roach            '4',
1276c1010edaSGreg Roach        ],
1277c1010edaSGreg Roach        'SZCZ'    => [
1278c1010edaSGreg Roach            '0',
1279c1010edaSGreg Roach            '2',
1280c1010edaSGreg Roach            '4',
1281c1010edaSGreg Roach            '4',
1282c1010edaSGreg Roach        ],
1283c1010edaSGreg Roach        'SZD'     => [
1284c1010edaSGreg Roach            '0',
1285c1010edaSGreg Roach            '2',
1286c1010edaSGreg Roach            '43',
1287c1010edaSGreg Roach            '43',
1288c1010edaSGreg Roach        ],
1289c1010edaSGreg Roach        'SZT'     => [
1290c1010edaSGreg Roach            '0',
1291c1010edaSGreg Roach            '2',
1292c1010edaSGreg Roach            '43',
1293c1010edaSGreg Roach            '43',
1294c1010edaSGreg Roach        ],
1295c1010edaSGreg Roach        'T'       => [
1296c1010edaSGreg Roach            '0',
1297c1010edaSGreg Roach            '3',
1298c1010edaSGreg Roach            '3',
1299c1010edaSGreg Roach            '3',
1300c1010edaSGreg Roach        ],
1301c1010edaSGreg Roach        'Ť'       => [
1302c1010edaSGreg Roach            '0',
1303c1010edaSGreg Roach            '3',
1304c1010edaSGreg Roach            '3',
1305c1010edaSGreg Roach            '3',
1306c1010edaSGreg Roach        ],
1307c1010edaSGreg Roach        'Ţ'       => [
1308c1010edaSGreg Roach            '0',
1309c1010edaSGreg Roach            '3',
1310c1010edaSGreg Roach            '3',
1311c1010edaSGreg Roach            '3',
1312c1010edaSGreg Roach            '4',
1313c1010edaSGreg Roach            '4',
1314c1010edaSGreg Roach            '4',
1315c1010edaSGreg Roach        ],
1316c1010edaSGreg Roach        'TC'      => [
1317c1010edaSGreg Roach            '0',
1318c1010edaSGreg Roach            '4',
1319c1010edaSGreg Roach            '4',
1320c1010edaSGreg Roach            '4',
1321c1010edaSGreg Roach        ],
1322c1010edaSGreg Roach        'TCH'     => [
1323c1010edaSGreg Roach            '0',
1324c1010edaSGreg Roach            '4',
1325c1010edaSGreg Roach            '4',
1326c1010edaSGreg Roach            '4',
1327c1010edaSGreg Roach        ],
1328c1010edaSGreg Roach        'TH'      => [
1329c1010edaSGreg Roach            '0',
1330c1010edaSGreg Roach            '3',
1331c1010edaSGreg Roach            '3',
1332c1010edaSGreg Roach            '3',
1333c1010edaSGreg Roach        ],
1334c1010edaSGreg Roach        'TRS'     => [
1335c1010edaSGreg Roach            '0',
1336c1010edaSGreg Roach            '4',
1337c1010edaSGreg Roach            '4',
1338c1010edaSGreg Roach            '4',
1339c1010edaSGreg Roach        ],
1340c1010edaSGreg Roach        'TRZ'     => [
1341c1010edaSGreg Roach            '0',
1342c1010edaSGreg Roach            '4',
1343c1010edaSGreg Roach            '4',
1344c1010edaSGreg Roach            '4',
1345c1010edaSGreg Roach        ],
1346c1010edaSGreg Roach        'TS'      => [
1347c1010edaSGreg Roach            '0',
1348c1010edaSGreg Roach            '4',
1349c1010edaSGreg Roach            '4',
1350c1010edaSGreg Roach            '4',
1351c1010edaSGreg Roach        ],
1352c1010edaSGreg Roach        'TSCH'    => [
1353c1010edaSGreg Roach            '0',
1354c1010edaSGreg Roach            '4',
1355c1010edaSGreg Roach            '4',
1356c1010edaSGreg Roach            '4',
1357c1010edaSGreg Roach        ],
1358c1010edaSGreg Roach        'TSH'     => [
1359c1010edaSGreg Roach            '0',
1360c1010edaSGreg Roach            '4',
1361c1010edaSGreg Roach            '4',
1362c1010edaSGreg Roach            '4',
1363c1010edaSGreg Roach        ],
1364c1010edaSGreg Roach        'TSZ'     => [
1365c1010edaSGreg Roach            '0',
1366c1010edaSGreg Roach            '4',
1367c1010edaSGreg Roach            '4',
1368c1010edaSGreg Roach            '4',
1369c1010edaSGreg Roach        ],
1370c1010edaSGreg Roach        'TTCH'    => [
1371c1010edaSGreg Roach            '0',
1372c1010edaSGreg Roach            '4',
1373c1010edaSGreg Roach            '4',
1374c1010edaSGreg Roach            '4',
1375c1010edaSGreg Roach        ],
1376c1010edaSGreg Roach        'TTS'     => [
1377c1010edaSGreg Roach            '0',
1378c1010edaSGreg Roach            '4',
1379c1010edaSGreg Roach            '4',
1380c1010edaSGreg Roach            '4',
1381c1010edaSGreg Roach        ],
1382c1010edaSGreg Roach        'TTSCH'   => [
1383c1010edaSGreg Roach            '0',
1384c1010edaSGreg Roach            '4',
1385c1010edaSGreg Roach            '4',
1386c1010edaSGreg Roach            '4',
1387c1010edaSGreg Roach        ],
1388c1010edaSGreg Roach        'TTSZ'    => [
1389c1010edaSGreg Roach            '0',
1390c1010edaSGreg Roach            '4',
1391c1010edaSGreg Roach            '4',
1392c1010edaSGreg Roach            '4',
1393c1010edaSGreg Roach        ],
1394c1010edaSGreg Roach        'TTZ'     => [
1395c1010edaSGreg Roach            '0',
1396c1010edaSGreg Roach            '4',
1397c1010edaSGreg Roach            '4',
1398c1010edaSGreg Roach            '4',
1399c1010edaSGreg Roach        ],
1400c1010edaSGreg Roach        'TZ'      => [
1401c1010edaSGreg Roach            '0',
1402c1010edaSGreg Roach            '4',
1403c1010edaSGreg Roach            '4',
1404c1010edaSGreg Roach            '4',
1405c1010edaSGreg Roach        ],
1406c1010edaSGreg Roach        'TZS'     => [
1407c1010edaSGreg Roach            '0',
1408c1010edaSGreg Roach            '4',
1409c1010edaSGreg Roach            '4',
1410c1010edaSGreg Roach            '4',
1411c1010edaSGreg Roach        ],
1412c1010edaSGreg Roach        'U'       => [
1413c1010edaSGreg Roach            '1',
1414c1010edaSGreg Roach            '0',
1415c1010edaSGreg Roach            '',
1416c1010edaSGreg Roach            '',
1417c1010edaSGreg Roach        ],
1418c1010edaSGreg Roach        'Ù'       => [
1419c1010edaSGreg Roach            '1',
1420c1010edaSGreg Roach            '0',
1421c1010edaSGreg Roach            '',
1422c1010edaSGreg Roach            '',
1423c1010edaSGreg Roach        ],
1424c1010edaSGreg Roach        'Ú'       => [
1425c1010edaSGreg Roach            '1',
1426c1010edaSGreg Roach            '0',
1427c1010edaSGreg Roach            '',
1428c1010edaSGreg Roach            '',
1429c1010edaSGreg Roach        ],
1430c1010edaSGreg Roach        'Û'       => [
1431c1010edaSGreg Roach            '1',
1432c1010edaSGreg Roach            '0',
1433c1010edaSGreg Roach            '',
1434c1010edaSGreg Roach            '',
1435c1010edaSGreg Roach        ],
1436c1010edaSGreg Roach        'Ü'       => [
1437c1010edaSGreg Roach            '1',
1438c1010edaSGreg Roach            '0',
1439c1010edaSGreg Roach            '',
1440c1010edaSGreg Roach            '',
1441c1010edaSGreg Roach        ],
1442c1010edaSGreg Roach        'Ũ'       => [
1443c1010edaSGreg Roach            '1',
1444c1010edaSGreg Roach            '0',
1445c1010edaSGreg Roach            '',
1446c1010edaSGreg Roach            '',
1447c1010edaSGreg Roach        ],
1448c1010edaSGreg Roach        'Ū'       => [
1449c1010edaSGreg Roach            '1',
1450c1010edaSGreg Roach            '0',
1451c1010edaSGreg Roach            '',
1452c1010edaSGreg Roach            '',
1453c1010edaSGreg Roach        ],
1454c1010edaSGreg Roach        'Ů'       => [
1455c1010edaSGreg Roach            '1',
1456c1010edaSGreg Roach            '0',
1457c1010edaSGreg Roach            '',
1458c1010edaSGreg Roach            '',
1459c1010edaSGreg Roach        ],
1460c1010edaSGreg Roach        'Ű'       => [
1461c1010edaSGreg Roach            '1',
1462c1010edaSGreg Roach            '0',
1463c1010edaSGreg Roach            '',
1464c1010edaSGreg Roach            '',
1465c1010edaSGreg Roach        ],
1466c1010edaSGreg Roach        'Ų'       => [
1467c1010edaSGreg Roach            '1',
1468c1010edaSGreg Roach            '0',
1469c1010edaSGreg Roach            '',
1470c1010edaSGreg Roach            '',
1471c1010edaSGreg Roach        ],
1472c1010edaSGreg Roach        'Ư'       => [
1473c1010edaSGreg Roach            '1',
1474c1010edaSGreg Roach            '0',
1475c1010edaSGreg Roach            '',
1476c1010edaSGreg Roach            '',
1477c1010edaSGreg Roach        ],
1478c1010edaSGreg Roach        'Ụ'       => [
1479c1010edaSGreg Roach            '1',
1480c1010edaSGreg Roach            '0',
1481c1010edaSGreg Roach            '',
1482c1010edaSGreg Roach            '',
1483c1010edaSGreg Roach        ],
1484c1010edaSGreg Roach        'Ủ'       => [
1485c1010edaSGreg Roach            '1',
1486c1010edaSGreg Roach            '0',
1487c1010edaSGreg Roach            '',
1488c1010edaSGreg Roach            '',
1489c1010edaSGreg Roach        ],
1490c1010edaSGreg Roach        'Ứ'       => [
1491c1010edaSGreg Roach            '1',
1492c1010edaSGreg Roach            '0',
1493c1010edaSGreg Roach            '',
1494c1010edaSGreg Roach            '',
1495c1010edaSGreg Roach        ],
1496c1010edaSGreg Roach        'Ừ'       => [
1497c1010edaSGreg Roach            '1',
1498c1010edaSGreg Roach            '0',
1499c1010edaSGreg Roach            '',
1500c1010edaSGreg Roach            '',
1501c1010edaSGreg Roach        ],
1502c1010edaSGreg Roach        'Ử'       => [
1503c1010edaSGreg Roach            '1',
1504c1010edaSGreg Roach            '0',
1505c1010edaSGreg Roach            '',
1506c1010edaSGreg Roach            '',
1507c1010edaSGreg Roach        ],
1508c1010edaSGreg Roach        'Ữ'       => [
1509c1010edaSGreg Roach            '1',
1510c1010edaSGreg Roach            '0',
1511c1010edaSGreg Roach            '',
1512c1010edaSGreg Roach            '',
1513c1010edaSGreg Roach        ],
1514c1010edaSGreg Roach        'Ự'       => [
1515c1010edaSGreg Roach            '1',
1516c1010edaSGreg Roach            '0',
1517c1010edaSGreg Roach            '',
1518c1010edaSGreg Roach            '',
1519c1010edaSGreg Roach        ],
1520c1010edaSGreg Roach        'UE'      => [
1521c1010edaSGreg Roach            '1',
1522c1010edaSGreg Roach            '0',
1523c1010edaSGreg Roach            '',
1524c1010edaSGreg Roach            '',
1525c1010edaSGreg Roach        ],
1526c1010edaSGreg Roach        'UI'      => [
1527c1010edaSGreg Roach            '1',
1528c1010edaSGreg Roach            '0',
1529c1010edaSGreg Roach            '1',
1530c1010edaSGreg Roach            '',
1531c1010edaSGreg Roach        ],
1532c1010edaSGreg Roach        'UJ'      => [
1533c1010edaSGreg Roach            '1',
1534c1010edaSGreg Roach            '0',
1535c1010edaSGreg Roach            '1',
1536c1010edaSGreg Roach            '',
1537c1010edaSGreg Roach        ],
1538c1010edaSGreg Roach        'UY'      => [
1539c1010edaSGreg Roach            '1',
1540c1010edaSGreg Roach            '0',
1541c1010edaSGreg Roach            '1',
1542c1010edaSGreg Roach            '',
1543c1010edaSGreg Roach        ],
1544c1010edaSGreg Roach        'UW'      => [
1545c1010edaSGreg Roach            '1',
1546c1010edaSGreg Roach            '0',
1547c1010edaSGreg Roach            '1',
1548c1010edaSGreg Roach            '',
1549c1010edaSGreg Roach            '0',
1550c1010edaSGreg Roach            '7',
1551c1010edaSGreg Roach            '7',
1552c1010edaSGreg Roach        ],
1553c1010edaSGreg Roach        'V'       => [
1554c1010edaSGreg Roach            '0',
1555c1010edaSGreg Roach            '7',
1556c1010edaSGreg Roach            '7',
1557c1010edaSGreg Roach            '7',
1558c1010edaSGreg Roach        ],
1559c1010edaSGreg Roach        'W'       => [
1560c1010edaSGreg Roach            '0',
1561c1010edaSGreg Roach            '7',
1562c1010edaSGreg Roach            '7',
1563c1010edaSGreg Roach            '7',
1564c1010edaSGreg Roach        ],
1565c1010edaSGreg Roach        'X'       => [
1566c1010edaSGreg Roach            '0',
1567c1010edaSGreg Roach            '5',
1568c1010edaSGreg Roach            '54',
1569c1010edaSGreg Roach            '54',
1570c1010edaSGreg Roach        ],
1571c1010edaSGreg Roach        'Y'       => [
1572c1010edaSGreg Roach            '1',
1573c1010edaSGreg Roach            '1',
1574c1010edaSGreg Roach            '',
1575c1010edaSGreg Roach            '',
1576c1010edaSGreg Roach        ],
1577c1010edaSGreg Roach        'Ý'       => [
1578c1010edaSGreg Roach            '1',
1579c1010edaSGreg Roach            '1',
1580c1010edaSGreg Roach            '',
1581c1010edaSGreg Roach            '',
1582c1010edaSGreg Roach        ],
1583c1010edaSGreg Roach        'Ỳ'       => [
1584c1010edaSGreg Roach            '1',
1585c1010edaSGreg Roach            '1',
1586c1010edaSGreg Roach            '',
1587c1010edaSGreg Roach            '',
1588c1010edaSGreg Roach        ],
1589c1010edaSGreg Roach        'Ỵ'       => [
1590c1010edaSGreg Roach            '1',
1591c1010edaSGreg Roach            '1',
1592c1010edaSGreg Roach            '',
1593c1010edaSGreg Roach            '',
1594c1010edaSGreg Roach        ],
1595c1010edaSGreg Roach        'Ỷ'       => [
1596c1010edaSGreg Roach            '1',
1597c1010edaSGreg Roach            '1',
1598c1010edaSGreg Roach            '',
1599c1010edaSGreg Roach            '',
1600c1010edaSGreg Roach        ],
1601c1010edaSGreg Roach        'Ỹ'       => [
1602c1010edaSGreg Roach            '1',
1603c1010edaSGreg Roach            '1',
1604c1010edaSGreg Roach            '',
1605c1010edaSGreg Roach            '',
1606c1010edaSGreg Roach        ],
1607c1010edaSGreg Roach        'Z'       => [
1608c1010edaSGreg Roach            '0',
1609c1010edaSGreg Roach            '4',
1610c1010edaSGreg Roach            '4',
1611c1010edaSGreg Roach            '4',
1612c1010edaSGreg Roach        ],
1613c1010edaSGreg Roach        'Ź'       => [
1614c1010edaSGreg Roach            '0',
1615c1010edaSGreg Roach            '4',
1616c1010edaSGreg Roach            '4',
1617c1010edaSGreg Roach            '4',
1618c1010edaSGreg Roach        ],
1619c1010edaSGreg Roach        'Ż'       => [
1620c1010edaSGreg Roach            '0',
1621c1010edaSGreg Roach            '4',
1622c1010edaSGreg Roach            '4',
1623c1010edaSGreg Roach            '4',
1624c1010edaSGreg Roach        ],
1625c1010edaSGreg Roach        'Ž'       => [
1626c1010edaSGreg Roach            '0',
1627c1010edaSGreg Roach            '4',
1628c1010edaSGreg Roach            '4',
1629c1010edaSGreg Roach            '4',
1630c1010edaSGreg Roach        ],
1631c1010edaSGreg Roach        'ZD'      => [
1632c1010edaSGreg Roach            '0',
1633c1010edaSGreg Roach            '2',
1634c1010edaSGreg Roach            '43',
1635c1010edaSGreg Roach            '43',
1636c1010edaSGreg Roach        ],
1637c1010edaSGreg Roach        'ZDZ'     => [
1638c1010edaSGreg Roach            '0',
1639c1010edaSGreg Roach            '2',
1640c1010edaSGreg Roach            '4',
1641c1010edaSGreg Roach            '4',
1642c1010edaSGreg Roach        ],
1643c1010edaSGreg Roach        'ZDZH'    => [
1644c1010edaSGreg Roach            '0',
1645c1010edaSGreg Roach            '2',
1646c1010edaSGreg Roach            '4',
1647c1010edaSGreg Roach            '4',
1648c1010edaSGreg Roach        ],
1649c1010edaSGreg Roach        'ZH'      => [
1650c1010edaSGreg Roach            '0',
1651c1010edaSGreg Roach            '4',
1652c1010edaSGreg Roach            '4',
1653c1010edaSGreg Roach            '4',
1654c1010edaSGreg Roach        ],
1655c1010edaSGreg Roach        'ZHD'     => [
1656c1010edaSGreg Roach            '0',
1657c1010edaSGreg Roach            '2',
1658c1010edaSGreg Roach            '43',
1659c1010edaSGreg Roach            '43',
1660c1010edaSGreg Roach        ],
1661c1010edaSGreg Roach        'ZHDZH'   => [
1662c1010edaSGreg Roach            '0',
1663c1010edaSGreg Roach            '2',
1664c1010edaSGreg Roach            '4',
1665c1010edaSGreg Roach            '4',
1666c1010edaSGreg Roach        ],
1667c1010edaSGreg Roach        'ZS'      => [
1668c1010edaSGreg Roach            '0',
1669c1010edaSGreg Roach            '4',
1670c1010edaSGreg Roach            '4',
1671c1010edaSGreg Roach            '4',
1672c1010edaSGreg Roach        ],
1673c1010edaSGreg Roach        'ZSCH'    => [
1674c1010edaSGreg Roach            '0',
1675c1010edaSGreg Roach            '4',
1676c1010edaSGreg Roach            '4',
1677c1010edaSGreg Roach            '4',
1678c1010edaSGreg Roach        ],
1679c1010edaSGreg Roach        'ZSH'     => [
1680c1010edaSGreg Roach            '0',
1681c1010edaSGreg Roach            '4',
1682c1010edaSGreg Roach            '4',
1683c1010edaSGreg Roach            '4',
1684c1010edaSGreg Roach        ],
1685c1010edaSGreg Roach        'ZZS'     => [
1686c1010edaSGreg Roach            '0',
1687c1010edaSGreg Roach            '4',
1688c1010edaSGreg Roach            '4',
1689c1010edaSGreg Roach            '4',
1690c1010edaSGreg Roach        ],
1691a25f0a04SGreg Roach        // Cyrillic alphabet
1692c1010edaSGreg Roach        'А'       => [
1693c1010edaSGreg Roach            '1',
1694c1010edaSGreg Roach            '0',
1695c1010edaSGreg Roach            '',
1696c1010edaSGreg Roach            '',
1697c1010edaSGreg Roach        ],
1698c1010edaSGreg Roach        'Б'       => [
1699c1010edaSGreg Roach            '0',
1700c1010edaSGreg Roach            '7',
1701c1010edaSGreg Roach            '7',
1702c1010edaSGreg Roach            '7',
1703c1010edaSGreg Roach        ],
1704c1010edaSGreg Roach        'В'       => [
1705c1010edaSGreg Roach            '0',
1706c1010edaSGreg Roach            '7',
1707c1010edaSGreg Roach            '7',
1708c1010edaSGreg Roach            '7',
1709c1010edaSGreg Roach        ],
1710c1010edaSGreg Roach        'Г'       => [
1711c1010edaSGreg Roach            '0',
1712c1010edaSGreg Roach            '5',
1713c1010edaSGreg Roach            '5',
1714c1010edaSGreg Roach            '5',
1715c1010edaSGreg Roach        ],
1716c1010edaSGreg Roach        'Д'       => [
1717c1010edaSGreg Roach            '0',
1718c1010edaSGreg Roach            '3',
1719c1010edaSGreg Roach            '3',
1720c1010edaSGreg Roach            '3',
1721c1010edaSGreg Roach        ],
1722c1010edaSGreg Roach        'ДЗ'      => [
1723c1010edaSGreg Roach            '0',
1724c1010edaSGreg Roach            '4',
1725c1010edaSGreg Roach            '4',
1726c1010edaSGreg Roach            '4',
1727c1010edaSGreg Roach        ],
1728c1010edaSGreg Roach        'Е'       => [
1729c1010edaSGreg Roach            '1',
1730c1010edaSGreg Roach            '0',
1731c1010edaSGreg Roach            '',
1732c1010edaSGreg Roach            '',
1733c1010edaSGreg Roach        ],
1734c1010edaSGreg Roach        'Ё'       => [
1735c1010edaSGreg Roach            '1',
1736c1010edaSGreg Roach            '0',
1737c1010edaSGreg Roach            '',
1738c1010edaSGreg Roach            '',
1739c1010edaSGreg Roach        ],
1740c1010edaSGreg Roach        'Ж'       => [
1741c1010edaSGreg Roach            '0',
1742c1010edaSGreg Roach            '4',
1743c1010edaSGreg Roach            '4',
1744c1010edaSGreg Roach            '4',
1745c1010edaSGreg Roach        ],
1746c1010edaSGreg Roach        'З'       => [
1747c1010edaSGreg Roach            '0',
1748c1010edaSGreg Roach            '4',
1749c1010edaSGreg Roach            '4',
1750c1010edaSGreg Roach            '4',
1751c1010edaSGreg Roach        ],
1752c1010edaSGreg Roach        'И'       => [
1753c1010edaSGreg Roach            '1',
1754c1010edaSGreg Roach            '0',
1755c1010edaSGreg Roach            '',
1756c1010edaSGreg Roach            '',
1757c1010edaSGreg Roach        ],
1758c1010edaSGreg Roach        'Й'       => [
1759c1010edaSGreg Roach            '1',
1760c1010edaSGreg Roach            '1',
1761c1010edaSGreg Roach            '',
1762c1010edaSGreg Roach            '',
1763c1010edaSGreg Roach            '4',
1764c1010edaSGreg Roach            '4',
1765c1010edaSGreg Roach            '4',
1766c1010edaSGreg Roach        ],
1767c1010edaSGreg Roach        'К'       => [
1768c1010edaSGreg Roach            '0',
1769c1010edaSGreg Roach            '5',
1770c1010edaSGreg Roach            '5',
1771c1010edaSGreg Roach            '5',
1772c1010edaSGreg Roach        ],
1773c1010edaSGreg Roach        'Л'       => [
1774c1010edaSGreg Roach            '0',
1775c1010edaSGreg Roach            '8',
1776c1010edaSGreg Roach            '8',
1777c1010edaSGreg Roach            '8',
1778c1010edaSGreg Roach        ],
1779c1010edaSGreg Roach        'М'       => [
1780c1010edaSGreg Roach            '0',
1781c1010edaSGreg Roach            '6',
1782c1010edaSGreg Roach            '6',
1783c1010edaSGreg Roach            '6',
1784c1010edaSGreg Roach        ],
1785c1010edaSGreg Roach        'Н'       => [
1786c1010edaSGreg Roach            '0',
1787c1010edaSGreg Roach            '6',
1788c1010edaSGreg Roach            '6',
1789c1010edaSGreg Roach            '6',
1790c1010edaSGreg Roach        ],
1791c1010edaSGreg Roach        'О'       => [
1792c1010edaSGreg Roach            '1',
1793c1010edaSGreg Roach            '0',
1794c1010edaSGreg Roach            '',
1795c1010edaSGreg Roach            '',
1796c1010edaSGreg Roach        ],
1797c1010edaSGreg Roach        'П'       => [
1798c1010edaSGreg Roach            '0',
1799c1010edaSGreg Roach            '7',
1800c1010edaSGreg Roach            '7',
1801c1010edaSGreg Roach            '7',
1802c1010edaSGreg Roach        ],
1803c1010edaSGreg Roach        'Р'       => [
1804c1010edaSGreg Roach            '0',
1805c1010edaSGreg Roach            '9',
1806c1010edaSGreg Roach            '9',
1807c1010edaSGreg Roach            '9',
1808c1010edaSGreg Roach        ],
1809c1010edaSGreg Roach        'РЖ'      => [
1810c1010edaSGreg Roach            '0',
1811c1010edaSGreg Roach            '4',
1812c1010edaSGreg Roach            '4',
1813c1010edaSGreg Roach            '4',
1814c1010edaSGreg Roach        ],
1815c1010edaSGreg Roach        'С'       => [
1816c1010edaSGreg Roach            '0',
1817c1010edaSGreg Roach            '4',
1818c1010edaSGreg Roach            '4',
1819c1010edaSGreg Roach            '4',
1820c1010edaSGreg Roach        ],
1821c1010edaSGreg Roach        'Т'       => [
1822c1010edaSGreg Roach            '0',
1823c1010edaSGreg Roach            '3',
1824c1010edaSGreg Roach            '3',
1825c1010edaSGreg Roach            '3',
1826c1010edaSGreg Roach        ],
1827c1010edaSGreg Roach        'У'       => [
1828c1010edaSGreg Roach            '1',
1829c1010edaSGreg Roach            '0',
1830c1010edaSGreg Roach            '',
1831c1010edaSGreg Roach            '',
1832c1010edaSGreg Roach        ],
1833c1010edaSGreg Roach        'Ф'       => [
1834c1010edaSGreg Roach            '0',
1835c1010edaSGreg Roach            '7',
1836c1010edaSGreg Roach            '7',
1837c1010edaSGreg Roach            '7',
1838c1010edaSGreg Roach        ],
1839c1010edaSGreg Roach        'Х'       => [
1840c1010edaSGreg Roach            '0',
1841c1010edaSGreg Roach            '5',
1842c1010edaSGreg Roach            '5',
1843c1010edaSGreg Roach            '5',
1844c1010edaSGreg Roach        ],
1845c1010edaSGreg Roach        'Ц'       => [
1846c1010edaSGreg Roach            '0',
1847c1010edaSGreg Roach            '4',
1848c1010edaSGreg Roach            '4',
1849c1010edaSGreg Roach            '4',
1850c1010edaSGreg Roach        ],
1851c1010edaSGreg Roach        'Ч'       => [
1852c1010edaSGreg Roach            '0',
1853c1010edaSGreg Roach            '4',
1854c1010edaSGreg Roach            '4',
1855c1010edaSGreg Roach            '4',
1856c1010edaSGreg Roach        ],
1857c1010edaSGreg Roach        'Ш'       => [
1858c1010edaSGreg Roach            '0',
1859c1010edaSGreg Roach            '4',
1860c1010edaSGreg Roach            '4',
1861c1010edaSGreg Roach            '4',
1862c1010edaSGreg Roach        ],
1863c1010edaSGreg Roach        'Щ'       => [
1864c1010edaSGreg Roach            '0',
1865c1010edaSGreg Roach            '2',
1866c1010edaSGreg Roach            '4',
1867c1010edaSGreg Roach            '4',
1868c1010edaSGreg Roach        ],
1869c1010edaSGreg Roach        'Ъ'       => [
1870c1010edaSGreg Roach            '0',
1871c1010edaSGreg Roach            '',
1872c1010edaSGreg Roach            '',
1873c1010edaSGreg Roach            '',
1874c1010edaSGreg Roach        ],
1875c1010edaSGreg Roach        'Ы'       => [
1876c1010edaSGreg Roach            '0',
1877c1010edaSGreg Roach            '1',
1878c1010edaSGreg Roach            '',
1879c1010edaSGreg Roach            '',
1880c1010edaSGreg Roach        ],
1881c1010edaSGreg Roach        'Ь'       => [
1882c1010edaSGreg Roach            '0',
1883c1010edaSGreg Roach            '',
1884c1010edaSGreg Roach            '',
1885c1010edaSGreg Roach            '',
1886c1010edaSGreg Roach        ],
1887c1010edaSGreg Roach        'Э'       => [
1888c1010edaSGreg Roach            '1',
1889c1010edaSGreg Roach            '0',
1890c1010edaSGreg Roach            '',
1891c1010edaSGreg Roach            '',
1892c1010edaSGreg Roach        ],
1893c1010edaSGreg Roach        'Ю'       => [
1894c1010edaSGreg Roach            '0',
1895c1010edaSGreg Roach            '1',
1896c1010edaSGreg Roach            '',
1897c1010edaSGreg Roach            '',
1898c1010edaSGreg Roach        ],
1899c1010edaSGreg Roach        'Я'       => [
1900c1010edaSGreg Roach            '0',
1901c1010edaSGreg Roach            '1',
1902c1010edaSGreg Roach            '',
1903c1010edaSGreg Roach            '',
1904c1010edaSGreg Roach        ],
1905a25f0a04SGreg Roach        // Greek alphabet
1906c1010edaSGreg Roach        'Α'       => [
1907c1010edaSGreg Roach            '1',
1908c1010edaSGreg Roach            '0',
1909c1010edaSGreg Roach            '',
1910c1010edaSGreg Roach            '',
1911c1010edaSGreg Roach        ],
1912c1010edaSGreg Roach        'Ά'       => [
1913c1010edaSGreg Roach            '1',
1914c1010edaSGreg Roach            '0',
1915c1010edaSGreg Roach            '',
1916c1010edaSGreg Roach            '',
1917c1010edaSGreg Roach        ],
1918c1010edaSGreg Roach        'ΑΙ'      => [
1919c1010edaSGreg Roach            '1',
1920c1010edaSGreg Roach            '0',
1921c1010edaSGreg Roach            '1',
1922c1010edaSGreg Roach            '',
1923c1010edaSGreg Roach        ],
1924c1010edaSGreg Roach        'ΑΥ'      => [
1925c1010edaSGreg Roach            '1',
1926c1010edaSGreg Roach            '0',
1927c1010edaSGreg Roach            '1',
1928c1010edaSGreg Roach            '',
1929c1010edaSGreg Roach        ],
1930c1010edaSGreg Roach        'Β'       => [
1931c1010edaSGreg Roach            '0',
1932c1010edaSGreg Roach            '7',
1933c1010edaSGreg Roach            '7',
1934c1010edaSGreg Roach            '7',
1935c1010edaSGreg Roach        ],
1936c1010edaSGreg Roach        'Γ'       => [
1937c1010edaSGreg Roach            '0',
1938c1010edaSGreg Roach            '5',
1939c1010edaSGreg Roach            '5',
1940c1010edaSGreg Roach            '5',
1941c1010edaSGreg Roach        ],
1942c1010edaSGreg Roach        'Δ'       => [
1943c1010edaSGreg Roach            '0',
1944c1010edaSGreg Roach            '3',
1945c1010edaSGreg Roach            '3',
1946c1010edaSGreg Roach            '3',
1947c1010edaSGreg Roach        ],
1948c1010edaSGreg Roach        'Ε'       => [
1949c1010edaSGreg Roach            '1',
1950c1010edaSGreg Roach            '0',
1951c1010edaSGreg Roach            '',
1952c1010edaSGreg Roach            '',
1953c1010edaSGreg Roach        ],
1954c1010edaSGreg Roach        'Έ'       => [
1955c1010edaSGreg Roach            '1',
1956c1010edaSGreg Roach            '0',
1957c1010edaSGreg Roach            '',
1958c1010edaSGreg Roach            '',
1959c1010edaSGreg Roach        ],
1960c1010edaSGreg Roach        'ΕΙ'      => [
1961c1010edaSGreg Roach            '1',
1962c1010edaSGreg Roach            '0',
1963c1010edaSGreg Roach            '1',
1964c1010edaSGreg Roach            '',
1965c1010edaSGreg Roach        ],
1966c1010edaSGreg Roach        'ΕΥ'      => [
1967c1010edaSGreg Roach            '1',
1968c1010edaSGreg Roach            '1',
1969c1010edaSGreg Roach            '1',
1970c1010edaSGreg Roach            '',
1971c1010edaSGreg Roach        ],
1972c1010edaSGreg Roach        'Ζ'       => [
1973c1010edaSGreg Roach            '0',
1974c1010edaSGreg Roach            '4',
1975c1010edaSGreg Roach            '4',
1976c1010edaSGreg Roach            '4',
1977c1010edaSGreg Roach        ],
1978c1010edaSGreg Roach        'Η'       => [
1979c1010edaSGreg Roach            '1',
1980c1010edaSGreg Roach            '0',
1981c1010edaSGreg Roach            '',
1982c1010edaSGreg Roach            '',
1983c1010edaSGreg Roach        ],
1984c1010edaSGreg Roach        'Ή'       => [
1985c1010edaSGreg Roach            '1',
1986c1010edaSGreg Roach            '0',
1987c1010edaSGreg Roach            '',
1988c1010edaSGreg Roach            '',
1989c1010edaSGreg Roach        ],
1990c1010edaSGreg Roach        'Θ'       => [
1991c1010edaSGreg Roach            '0',
1992c1010edaSGreg Roach            '3',
1993c1010edaSGreg Roach            '3',
1994c1010edaSGreg Roach            '3',
1995c1010edaSGreg Roach        ],
1996c1010edaSGreg Roach        'Ι'       => [
1997c1010edaSGreg Roach            '1',
1998c1010edaSGreg Roach            '0',
1999c1010edaSGreg Roach            '',
2000c1010edaSGreg Roach            '',
2001c1010edaSGreg Roach        ],
2002c1010edaSGreg Roach        'Ί'       => [
2003c1010edaSGreg Roach            '1',
2004c1010edaSGreg Roach            '0',
2005c1010edaSGreg Roach            '',
2006c1010edaSGreg Roach            '',
2007c1010edaSGreg Roach        ],
2008c1010edaSGreg Roach        'Ϊ'       => [
2009c1010edaSGreg Roach            '1',
2010c1010edaSGreg Roach            '0',
2011c1010edaSGreg Roach            '',
2012c1010edaSGreg Roach            '',
2013c1010edaSGreg Roach        ],
2014c1010edaSGreg Roach        'ΐ'       => [
2015c1010edaSGreg Roach            '1',
2016c1010edaSGreg Roach            '0',
2017c1010edaSGreg Roach            '',
2018c1010edaSGreg Roach            '',
2019c1010edaSGreg Roach        ],
2020c1010edaSGreg Roach        'Κ'       => [
2021c1010edaSGreg Roach            '0',
2022c1010edaSGreg Roach            '5',
2023c1010edaSGreg Roach            '5',
2024c1010edaSGreg Roach            '5',
2025c1010edaSGreg Roach        ],
2026c1010edaSGreg Roach        'Λ'       => [
2027c1010edaSGreg Roach            '0',
2028c1010edaSGreg Roach            '8',
2029c1010edaSGreg Roach            '8',
2030c1010edaSGreg Roach            '8',
2031c1010edaSGreg Roach        ],
2032c1010edaSGreg Roach        'Μ'       => [
2033c1010edaSGreg Roach            '0',
2034c1010edaSGreg Roach            '6',
2035c1010edaSGreg Roach            '6',
2036c1010edaSGreg Roach            '6',
2037c1010edaSGreg Roach        ],
2038c1010edaSGreg Roach        'ΜΠ'      => [
2039c1010edaSGreg Roach            '0',
2040c1010edaSGreg Roach            '7',
2041c1010edaSGreg Roach            '7',
2042c1010edaSGreg Roach            '7',
2043c1010edaSGreg Roach        ],
2044c1010edaSGreg Roach        'Ν'       => [
2045c1010edaSGreg Roach            '0',
2046c1010edaSGreg Roach            '6',
2047c1010edaSGreg Roach            '6',
2048c1010edaSGreg Roach            '6',
2049c1010edaSGreg Roach        ],
2050c1010edaSGreg Roach        'ΝΤ'      => [
2051c1010edaSGreg Roach            '0',
2052c1010edaSGreg Roach            '3',
2053c1010edaSGreg Roach            '3',
2054c1010edaSGreg Roach            '3',
2055c1010edaSGreg Roach        ],
2056c1010edaSGreg Roach        'Ξ'       => [
2057c1010edaSGreg Roach            '0',
2058c1010edaSGreg Roach            '5',
2059c1010edaSGreg Roach            '54',
2060c1010edaSGreg Roach            '54',
2061c1010edaSGreg Roach        ],
2062c1010edaSGreg Roach        'Ο'       => [
2063c1010edaSGreg Roach            '1',
2064c1010edaSGreg Roach            '0',
2065c1010edaSGreg Roach            '',
2066c1010edaSGreg Roach            '',
2067c1010edaSGreg Roach        ],
2068c1010edaSGreg Roach        'Ό'       => [
2069c1010edaSGreg Roach            '1',
2070c1010edaSGreg Roach            '0',
2071c1010edaSGreg Roach            '',
2072c1010edaSGreg Roach            '',
2073c1010edaSGreg Roach        ],
2074c1010edaSGreg Roach        'ΟΙ'      => [
2075c1010edaSGreg Roach            '1',
2076c1010edaSGreg Roach            '0',
2077c1010edaSGreg Roach            '1',
2078c1010edaSGreg Roach            '',
2079c1010edaSGreg Roach        ],
2080c1010edaSGreg Roach        'ΟΥ'      => [
2081c1010edaSGreg Roach            '1',
2082c1010edaSGreg Roach            '0',
2083c1010edaSGreg Roach            '1',
2084c1010edaSGreg Roach            '',
2085c1010edaSGreg Roach        ],
2086c1010edaSGreg Roach        'Π'       => [
2087c1010edaSGreg Roach            '0',
2088c1010edaSGreg Roach            '7',
2089c1010edaSGreg Roach            '7',
2090c1010edaSGreg Roach            '7',
2091c1010edaSGreg Roach        ],
2092c1010edaSGreg Roach        'Ρ'       => [
2093c1010edaSGreg Roach            '0',
2094c1010edaSGreg Roach            '9',
2095c1010edaSGreg Roach            '9',
2096c1010edaSGreg Roach            '9',
2097c1010edaSGreg Roach        ],
2098c1010edaSGreg Roach        'Σ'       => [
2099c1010edaSGreg Roach            '0',
2100c1010edaSGreg Roach            '4',
2101c1010edaSGreg Roach            '4',
2102c1010edaSGreg Roach            '4',
2103c1010edaSGreg Roach        ],
2104c1010edaSGreg Roach        'ς'       => [
2105c1010edaSGreg Roach            '0',
2106c1010edaSGreg Roach            '',
2107c1010edaSGreg Roach            '',
2108c1010edaSGreg Roach            '4',
2109c1010edaSGreg Roach        ],
2110c1010edaSGreg Roach        'Τ'       => [
2111c1010edaSGreg Roach            '0',
2112c1010edaSGreg Roach            '3',
2113c1010edaSGreg Roach            '3',
2114c1010edaSGreg Roach            '3',
2115c1010edaSGreg Roach        ],
2116c1010edaSGreg Roach        'ΤΖ'      => [
2117c1010edaSGreg Roach            '0',
2118c1010edaSGreg Roach            '4',
2119c1010edaSGreg Roach            '4',
2120c1010edaSGreg Roach            '4',
2121c1010edaSGreg Roach        ],
2122c1010edaSGreg Roach        'ΤΣ'      => [
2123c1010edaSGreg Roach            '0',
2124c1010edaSGreg Roach            '4',
2125c1010edaSGreg Roach            '4',
2126c1010edaSGreg Roach            '4',
2127c1010edaSGreg Roach        ],
2128c1010edaSGreg Roach        'Υ'       => [
2129c1010edaSGreg Roach            '1',
2130c1010edaSGreg Roach            '1',
2131c1010edaSGreg Roach            '',
2132c1010edaSGreg Roach            '',
2133c1010edaSGreg Roach        ],
2134c1010edaSGreg Roach        'Ύ'       => [
2135c1010edaSGreg Roach            '1',
2136c1010edaSGreg Roach            '1',
2137c1010edaSGreg Roach            '',
2138c1010edaSGreg Roach            '',
2139c1010edaSGreg Roach        ],
2140c1010edaSGreg Roach        'Ϋ'       => [
2141c1010edaSGreg Roach            '1',
2142c1010edaSGreg Roach            '1',
2143c1010edaSGreg Roach            '',
2144c1010edaSGreg Roach            '',
2145c1010edaSGreg Roach        ],
2146c1010edaSGreg Roach        'ΰ'       => [
2147c1010edaSGreg Roach            '1',
2148c1010edaSGreg Roach            '1',
2149c1010edaSGreg Roach            '',
2150c1010edaSGreg Roach            '',
2151c1010edaSGreg Roach        ],
2152c1010edaSGreg Roach        'ΥΚ'      => [
2153c1010edaSGreg Roach            '1',
2154c1010edaSGreg Roach            '5',
2155c1010edaSGreg Roach            '5',
2156c1010edaSGreg Roach            '5',
2157c1010edaSGreg Roach        ],
2158c1010edaSGreg Roach        'ΥΥ'      => [
2159c1010edaSGreg Roach            '1',
2160c1010edaSGreg Roach            '65',
2161c1010edaSGreg Roach            '65',
2162c1010edaSGreg Roach            '65',
2163c1010edaSGreg Roach        ],
2164c1010edaSGreg Roach        'Φ'       => [
2165c1010edaSGreg Roach            '0',
2166c1010edaSGreg Roach            '7',
2167c1010edaSGreg Roach            '7',
2168c1010edaSGreg Roach            '7',
2169c1010edaSGreg Roach        ],
2170c1010edaSGreg Roach        'Χ'       => [
2171c1010edaSGreg Roach            '0',
2172c1010edaSGreg Roach            '5',
2173c1010edaSGreg Roach            '5',
2174c1010edaSGreg Roach            '5',
2175c1010edaSGreg Roach        ],
2176c1010edaSGreg Roach        'Ψ'       => [
2177c1010edaSGreg Roach            '0',
2178c1010edaSGreg Roach            '7',
2179c1010edaSGreg Roach            '7',
2180c1010edaSGreg Roach            '7',
2181c1010edaSGreg Roach        ],
2182c1010edaSGreg Roach        'Ω'       => [
2183c1010edaSGreg Roach            '1',
2184c1010edaSGreg Roach            '0',
2185c1010edaSGreg Roach            '',
2186c1010edaSGreg Roach            '',
2187c1010edaSGreg Roach        ],
2188c1010edaSGreg Roach        'Ώ'       => [
2189c1010edaSGreg Roach            '1',
2190c1010edaSGreg Roach            '0',
2191c1010edaSGreg Roach            '',
2192c1010edaSGreg Roach            '',
2193c1010edaSGreg Roach        ],
2194a25f0a04SGreg Roach        // Hebrew alphabet
2195c1010edaSGreg Roach        'א'       => [
2196c1010edaSGreg Roach            '1',
2197c1010edaSGreg Roach            '0',
2198c1010edaSGreg Roach            '',
2199c1010edaSGreg Roach            '',
2200c1010edaSGreg Roach        ],
2201c1010edaSGreg Roach        'או'      => [
2202c1010edaSGreg Roach            '1',
2203c1010edaSGreg Roach            '0',
2204c1010edaSGreg Roach            '7',
2205c1010edaSGreg Roach            '',
2206c1010edaSGreg Roach        ],
2207c1010edaSGreg Roach        'אג'      => [
2208c1010edaSGreg Roach            '1',
2209c1010edaSGreg Roach            '4',
2210c1010edaSGreg Roach            '4',
2211c1010edaSGreg Roach            '4',
2212c1010edaSGreg Roach            '5',
2213c1010edaSGreg Roach            '5',
2214c1010edaSGreg Roach            '5',
2215c1010edaSGreg Roach            '34',
2216c1010edaSGreg Roach            '34',
2217c1010edaSGreg Roach            '34',
2218c1010edaSGreg Roach        ],
2219c1010edaSGreg Roach        'בב'      => [
2220c1010edaSGreg Roach            '0',
2221c1010edaSGreg Roach            '7',
2222c1010edaSGreg Roach            '7',
2223c1010edaSGreg Roach            '7',
2224c1010edaSGreg Roach            '77',
2225c1010edaSGreg Roach            '77',
2226c1010edaSGreg Roach            '77',
2227c1010edaSGreg Roach        ],
2228c1010edaSGreg Roach        'ב'       => [
2229c1010edaSGreg Roach            '0',
2230c1010edaSGreg Roach            '7',
2231c1010edaSGreg Roach            '7',
2232c1010edaSGreg Roach            '7',
2233c1010edaSGreg Roach        ],
2234c1010edaSGreg Roach        'גג'      => [
2235c1010edaSGreg Roach            '0',
2236c1010edaSGreg Roach            '4',
2237c1010edaSGreg Roach            '4',
2238c1010edaSGreg Roach            '4',
2239c1010edaSGreg Roach            '5',
2240c1010edaSGreg Roach            '5',
2241c1010edaSGreg Roach            '5',
2242c1010edaSGreg Roach            '45',
2243c1010edaSGreg Roach            '45',
2244c1010edaSGreg Roach            '45',
2245c1010edaSGreg Roach            '55',
2246c1010edaSGreg Roach            '55',
2247c1010edaSGreg Roach            '55',
2248c1010edaSGreg Roach            '54',
2249c1010edaSGreg Roach            '54',
2250c1010edaSGreg Roach            '54',
2251c1010edaSGreg Roach        ],
2252c1010edaSGreg Roach        'גד'      => [
2253c1010edaSGreg Roach            '0',
2254c1010edaSGreg Roach            '43',
2255c1010edaSGreg Roach            '43',
2256c1010edaSGreg Roach            '43',
2257c1010edaSGreg Roach            '53',
2258c1010edaSGreg Roach            '53',
2259c1010edaSGreg Roach            '53',
2260c1010edaSGreg Roach        ],
2261c1010edaSGreg Roach        'גה'      => [
2262c1010edaSGreg Roach            '0',
2263c1010edaSGreg Roach            '45',
2264c1010edaSGreg Roach            '45',
2265c1010edaSGreg Roach            '45',
2266c1010edaSGreg Roach            '55',
2267c1010edaSGreg Roach            '55',
2268c1010edaSGreg Roach            '55',
2269c1010edaSGreg Roach        ],
2270c1010edaSGreg Roach        'גז'      => [
2271c1010edaSGreg Roach            '0',
2272c1010edaSGreg Roach            '44',
2273c1010edaSGreg Roach            '44',
2274c1010edaSGreg Roach            '44',
2275c1010edaSGreg Roach            '45',
2276c1010edaSGreg Roach            '45',
2277c1010edaSGreg Roach            '45',
2278c1010edaSGreg Roach        ],
2279c1010edaSGreg Roach        'גח'      => [
2280c1010edaSGreg Roach            '0',
2281c1010edaSGreg Roach            '45',
2282c1010edaSGreg Roach            '45',
2283c1010edaSGreg Roach            '45',
2284c1010edaSGreg Roach            '55',
2285c1010edaSGreg Roach            '55',
2286c1010edaSGreg Roach            '55',
2287c1010edaSGreg Roach        ],
2288c1010edaSGreg Roach        'גכ'      => [
2289c1010edaSGreg Roach            '0',
2290c1010edaSGreg Roach            '45',
2291c1010edaSGreg Roach            '45',
2292c1010edaSGreg Roach            '45',
2293c1010edaSGreg Roach            '55',
2294c1010edaSGreg Roach            '55',
2295c1010edaSGreg Roach            '55',
2296c1010edaSGreg Roach        ],
2297c1010edaSGreg Roach        'גך'      => [
2298c1010edaSGreg Roach            '0',
2299c1010edaSGreg Roach            '45',
2300c1010edaSGreg Roach            '45',
2301c1010edaSGreg Roach            '45',
2302c1010edaSGreg Roach            '55',
2303c1010edaSGreg Roach            '55',
2304c1010edaSGreg Roach            '55',
2305c1010edaSGreg Roach        ],
2306c1010edaSGreg Roach        'גצ'      => [
2307c1010edaSGreg Roach            '0',
2308c1010edaSGreg Roach            '44',
2309c1010edaSGreg Roach            '44',
2310c1010edaSGreg Roach            '44',
2311c1010edaSGreg Roach            '45',
2312c1010edaSGreg Roach            '45',
2313c1010edaSGreg Roach            '45',
2314c1010edaSGreg Roach        ],
2315c1010edaSGreg Roach        'גץ'      => [
2316c1010edaSGreg Roach            '0',
2317c1010edaSGreg Roach            '44',
2318c1010edaSGreg Roach            '44',
2319c1010edaSGreg Roach            '44',
2320c1010edaSGreg Roach            '45',
2321c1010edaSGreg Roach            '45',
2322c1010edaSGreg Roach            '45',
2323c1010edaSGreg Roach        ],
2324c1010edaSGreg Roach        'גק'      => [
2325c1010edaSGreg Roach            '0',
2326c1010edaSGreg Roach            '45',
2327c1010edaSGreg Roach            '45',
2328c1010edaSGreg Roach            '45',
2329c1010edaSGreg Roach            '54',
2330c1010edaSGreg Roach            '54',
2331c1010edaSGreg Roach            '54',
2332c1010edaSGreg Roach        ],
2333c1010edaSGreg Roach        'גש'      => [
2334c1010edaSGreg Roach            '0',
2335c1010edaSGreg Roach            '44',
2336c1010edaSGreg Roach            '44',
2337c1010edaSGreg Roach            '44',
2338c1010edaSGreg Roach            '54',
2339c1010edaSGreg Roach            '54',
2340c1010edaSGreg Roach            '54',
2341c1010edaSGreg Roach        ],
2342c1010edaSGreg Roach        'גת'      => [
2343c1010edaSGreg Roach            '0',
2344c1010edaSGreg Roach            '43',
2345c1010edaSGreg Roach            '43',
2346c1010edaSGreg Roach            '43',
2347c1010edaSGreg Roach            '53',
2348c1010edaSGreg Roach            '53',
2349c1010edaSGreg Roach            '53',
2350c1010edaSGreg Roach        ],
2351c1010edaSGreg Roach        'ג'       => [
2352c1010edaSGreg Roach            '0',
2353c1010edaSGreg Roach            '4',
2354c1010edaSGreg Roach            '4',
2355c1010edaSGreg Roach            '4',
2356c1010edaSGreg Roach            '5',
2357c1010edaSGreg Roach            '5',
2358c1010edaSGreg Roach            '5',
2359c1010edaSGreg Roach        ],
2360c1010edaSGreg Roach        'דז'      => [
2361c1010edaSGreg Roach            '0',
2362c1010edaSGreg Roach            '4',
2363c1010edaSGreg Roach            '4',
2364c1010edaSGreg Roach            '4',
2365c1010edaSGreg Roach        ],
2366c1010edaSGreg Roach        'דד'      => [
2367c1010edaSGreg Roach            '0',
2368c1010edaSGreg Roach            '3',
2369c1010edaSGreg Roach            '3',
2370c1010edaSGreg Roach            '3',
2371c1010edaSGreg Roach            '33',
2372c1010edaSGreg Roach            '33',
2373c1010edaSGreg Roach            '33',
2374c1010edaSGreg Roach        ],
2375c1010edaSGreg Roach        'דט'      => [
2376c1010edaSGreg Roach            '0',
2377c1010edaSGreg Roach            '33',
2378c1010edaSGreg Roach            '33',
2379c1010edaSGreg Roach            '33',
2380c1010edaSGreg Roach        ],
2381c1010edaSGreg Roach        'דש'      => [
2382c1010edaSGreg Roach            '0',
2383c1010edaSGreg Roach            '4',
2384c1010edaSGreg Roach            '4',
2385c1010edaSGreg Roach            '4',
2386c1010edaSGreg Roach        ],
2387c1010edaSGreg Roach        'דצ'      => [
2388c1010edaSGreg Roach            '0',
2389c1010edaSGreg Roach            '4',
2390c1010edaSGreg Roach            '4',
2391c1010edaSGreg Roach            '4',
2392c1010edaSGreg Roach        ],
2393c1010edaSGreg Roach        'דץ'      => [
2394c1010edaSGreg Roach            '0',
2395c1010edaSGreg Roach            '4',
2396c1010edaSGreg Roach            '4',
2397c1010edaSGreg Roach            '4',
2398c1010edaSGreg Roach        ],
2399c1010edaSGreg Roach        'ד'       => [
2400c1010edaSGreg Roach            '0',
2401c1010edaSGreg Roach            '3',
2402c1010edaSGreg Roach            '3',
2403c1010edaSGreg Roach            '3',
2404c1010edaSGreg Roach        ],
2405c1010edaSGreg Roach        'הג'      => [
2406c1010edaSGreg Roach            '0',
2407c1010edaSGreg Roach            '54',
2408c1010edaSGreg Roach            '54',
2409c1010edaSGreg Roach            '54',
2410c1010edaSGreg Roach            '55',
2411c1010edaSGreg Roach            '55',
2412c1010edaSGreg Roach            '55',
2413c1010edaSGreg Roach        ],
2414c1010edaSGreg Roach        'הכ'      => [
2415c1010edaSGreg Roach            '0',
2416c1010edaSGreg Roach            '55',
2417c1010edaSGreg Roach            '55',
2418c1010edaSGreg Roach            '55',
2419c1010edaSGreg Roach        ],
2420c1010edaSGreg Roach        'הח'      => [
2421c1010edaSGreg Roach            '0',
2422c1010edaSGreg Roach            '55',
2423c1010edaSGreg Roach            '55',
2424c1010edaSGreg Roach            '55',
2425c1010edaSGreg Roach        ],
2426c1010edaSGreg Roach        'הק'      => [
2427c1010edaSGreg Roach            '0',
2428c1010edaSGreg Roach            '55',
2429c1010edaSGreg Roach            '55',
2430c1010edaSGreg Roach            '55',
2431c1010edaSGreg Roach            '5',
2432c1010edaSGreg Roach            '5',
2433c1010edaSGreg Roach            '5',
2434c1010edaSGreg Roach        ],
2435c1010edaSGreg Roach        'הה'      => [
2436c1010edaSGreg Roach            '0',
2437c1010edaSGreg Roach            '5',
2438c1010edaSGreg Roach            '5',
2439c1010edaSGreg Roach            '',
2440c1010edaSGreg Roach            '55',
2441c1010edaSGreg Roach            '55',
2442c1010edaSGreg Roach            '',
2443c1010edaSGreg Roach        ],
2444c1010edaSGreg Roach        'ה'       => [
2445c1010edaSGreg Roach            '0',
2446c1010edaSGreg Roach            '5',
2447c1010edaSGreg Roach            '5',
2448c1010edaSGreg Roach            '',
2449c1010edaSGreg Roach        ],
2450c1010edaSGreg Roach        'וי'      => [
2451c1010edaSGreg Roach            '1',
2452c1010edaSGreg Roach            '',
2453c1010edaSGreg Roach            '',
2454c1010edaSGreg Roach            '',
2455c1010edaSGreg Roach            '7',
2456c1010edaSGreg Roach            '7',
2457c1010edaSGreg Roach            '7',
2458c1010edaSGreg Roach        ],
2459c1010edaSGreg Roach        'ו'       => [
2460c1010edaSGreg Roach            '1',
2461c1010edaSGreg Roach            '7',
2462c1010edaSGreg Roach            '7',
2463c1010edaSGreg Roach            '7',
2464c1010edaSGreg Roach            '7',
2465c1010edaSGreg Roach            '',
2466c1010edaSGreg Roach            '',
2467c1010edaSGreg Roach        ],
2468c1010edaSGreg Roach        'וו'      => [
2469c1010edaSGreg Roach            '1',
2470c1010edaSGreg Roach            '7',
2471c1010edaSGreg Roach            '7',
2472c1010edaSGreg Roach            '7',
2473c1010edaSGreg Roach            '7',
2474c1010edaSGreg Roach            '',
2475c1010edaSGreg Roach            '',
2476c1010edaSGreg Roach        ],
2477c1010edaSGreg Roach        'וופ'     => [
2478c1010edaSGreg Roach            '1',
2479c1010edaSGreg Roach            '7',
2480c1010edaSGreg Roach            '7',
2481c1010edaSGreg Roach            '7',
2482c1010edaSGreg Roach            '77',
2483c1010edaSGreg Roach            '77',
2484c1010edaSGreg Roach            '77',
2485c1010edaSGreg Roach        ],
2486c1010edaSGreg Roach        'זש'      => [
2487c1010edaSGreg Roach            '0',
2488c1010edaSGreg Roach            '4',
2489c1010edaSGreg Roach            '4',
2490c1010edaSGreg Roach            '4',
2491c1010edaSGreg Roach            '44',
2492c1010edaSGreg Roach            '44',
2493c1010edaSGreg Roach            '44',
2494c1010edaSGreg Roach        ],
2495c1010edaSGreg Roach        'זדז'     => [
2496c1010edaSGreg Roach            '0',
2497c1010edaSGreg Roach            '2',
2498c1010edaSGreg Roach            '4',
2499c1010edaSGreg Roach            '4',
2500c1010edaSGreg Roach        ],
2501c1010edaSGreg Roach        'ז'       => [
2502c1010edaSGreg Roach            '0',
2503c1010edaSGreg Roach            '4',
2504c1010edaSGreg Roach            '4',
2505c1010edaSGreg Roach            '4',
2506c1010edaSGreg Roach        ],
2507c1010edaSGreg Roach        'זג'      => [
2508c1010edaSGreg Roach            '0',
2509c1010edaSGreg Roach            '44',
2510c1010edaSGreg Roach            '44',
2511c1010edaSGreg Roach            '44',
2512c1010edaSGreg Roach            '45',
2513c1010edaSGreg Roach            '45',
2514c1010edaSGreg Roach            '45',
2515c1010edaSGreg Roach        ],
2516c1010edaSGreg Roach        'זז'      => [
2517c1010edaSGreg Roach            '0',
2518c1010edaSGreg Roach            '4',
2519c1010edaSGreg Roach            '4',
2520c1010edaSGreg Roach            '4',
2521c1010edaSGreg Roach            '44',
2522c1010edaSGreg Roach            '44',
2523c1010edaSGreg Roach            '44',
2524c1010edaSGreg Roach        ],
2525c1010edaSGreg Roach        'זס'      => [
2526c1010edaSGreg Roach            '0',
2527c1010edaSGreg Roach            '44',
2528c1010edaSGreg Roach            '44',
2529c1010edaSGreg Roach            '44',
2530c1010edaSGreg Roach        ],
2531c1010edaSGreg Roach        'זצ'      => [
2532c1010edaSGreg Roach            '0',
2533c1010edaSGreg Roach            '44',
2534c1010edaSGreg Roach            '44',
2535c1010edaSGreg Roach            '44',
2536c1010edaSGreg Roach        ],
2537c1010edaSGreg Roach        'זץ'      => [
2538c1010edaSGreg Roach            '0',
2539c1010edaSGreg Roach            '44',
2540c1010edaSGreg Roach            '44',
2541c1010edaSGreg Roach            '44',
2542c1010edaSGreg Roach        ],
2543c1010edaSGreg Roach        'חג'      => [
2544c1010edaSGreg Roach            '0',
2545c1010edaSGreg Roach            '54',
2546c1010edaSGreg Roach            '54',
2547c1010edaSGreg Roach            '54',
2548c1010edaSGreg Roach            '53',
2549c1010edaSGreg Roach            '53',
2550c1010edaSGreg Roach            '53',
2551c1010edaSGreg Roach        ],
2552c1010edaSGreg Roach        'חח'      => [
2553c1010edaSGreg Roach            '0',
2554c1010edaSGreg Roach            '5',
2555c1010edaSGreg Roach            '5',
2556c1010edaSGreg Roach            '5',
2557c1010edaSGreg Roach            '55',
2558c1010edaSGreg Roach            '55',
2559c1010edaSGreg Roach            '55',
2560c1010edaSGreg Roach        ],
2561c1010edaSGreg Roach        'חק'      => [
2562c1010edaSGreg Roach            '0',
2563c1010edaSGreg Roach            '55',
2564c1010edaSGreg Roach            '55',
2565c1010edaSGreg Roach            '55',
2566c1010edaSGreg Roach            '5',
2567c1010edaSGreg Roach            '5',
2568c1010edaSGreg Roach            '5',
2569c1010edaSGreg Roach        ],
2570c1010edaSGreg Roach        'חכ'      => [
2571c1010edaSGreg Roach            '0',
2572c1010edaSGreg Roach            '45',
2573c1010edaSGreg Roach            '45',
2574c1010edaSGreg Roach            '45',
2575c1010edaSGreg Roach            '55',
2576c1010edaSGreg Roach            '55',
2577c1010edaSGreg Roach            '55',
2578c1010edaSGreg Roach        ],
2579c1010edaSGreg Roach        'חס'      => [
2580c1010edaSGreg Roach            '0',
2581c1010edaSGreg Roach            '5',
2582c1010edaSGreg Roach            '54',
2583c1010edaSGreg Roach            '54',
2584c1010edaSGreg Roach        ],
2585c1010edaSGreg Roach        'חש'      => [
2586c1010edaSGreg Roach            '0',
2587c1010edaSGreg Roach            '5',
2588c1010edaSGreg Roach            '54',
2589c1010edaSGreg Roach            '54',
2590c1010edaSGreg Roach        ],
2591c1010edaSGreg Roach        'ח'       => [
2592c1010edaSGreg Roach            '0',
2593c1010edaSGreg Roach            '5',
2594c1010edaSGreg Roach            '5',
2595c1010edaSGreg Roach            '5',
2596c1010edaSGreg Roach        ],
2597c1010edaSGreg Roach        'טש'      => [
2598c1010edaSGreg Roach            '0',
2599c1010edaSGreg Roach            '4',
2600c1010edaSGreg Roach            '4',
2601c1010edaSGreg Roach            '4',
2602c1010edaSGreg Roach        ],
2603c1010edaSGreg Roach        'טד'      => [
2604c1010edaSGreg Roach            '0',
2605c1010edaSGreg Roach            '33',
2606c1010edaSGreg Roach            '33',
2607c1010edaSGreg Roach            '33',
2608c1010edaSGreg Roach        ],
2609c1010edaSGreg Roach        'טי'      => [
2610c1010edaSGreg Roach            '0',
2611c1010edaSGreg Roach            '3',
2612c1010edaSGreg Roach            '3',
2613c1010edaSGreg Roach            '3',
2614c1010edaSGreg Roach            '4',
2615c1010edaSGreg Roach            '4',
2616c1010edaSGreg Roach            '4',
2617c1010edaSGreg Roach            '3',
2618c1010edaSGreg Roach            '3',
2619c1010edaSGreg Roach            '34',
2620c1010edaSGreg Roach        ],
2621c1010edaSGreg Roach        'טת'      => [
2622c1010edaSGreg Roach            '0',
2623c1010edaSGreg Roach            '33',
2624c1010edaSGreg Roach            '33',
2625c1010edaSGreg Roach            '33',
2626c1010edaSGreg Roach        ],
2627c1010edaSGreg Roach        'טט'      => [
2628c1010edaSGreg Roach            '0',
2629c1010edaSGreg Roach            '3',
2630c1010edaSGreg Roach            '3',
2631c1010edaSGreg Roach            '3',
2632c1010edaSGreg Roach            '33',
2633c1010edaSGreg Roach            '33',
2634c1010edaSGreg Roach            '33',
2635c1010edaSGreg Roach        ],
2636c1010edaSGreg Roach        'ט'       => [
2637c1010edaSGreg Roach            '0',
2638c1010edaSGreg Roach            '3',
2639c1010edaSGreg Roach            '3',
2640c1010edaSGreg Roach            '3',
2641c1010edaSGreg Roach        ],
2642c1010edaSGreg Roach        'י'       => [
2643c1010edaSGreg Roach            '1',
2644c1010edaSGreg Roach            '1',
2645c1010edaSGreg Roach            '',
2646c1010edaSGreg Roach            '',
2647c1010edaSGreg Roach        ],
2648c1010edaSGreg Roach        'יא'      => [
2649c1010edaSGreg Roach            '1',
2650c1010edaSGreg Roach            '1',
2651c1010edaSGreg Roach            '',
2652c1010edaSGreg Roach            '',
2653c1010edaSGreg Roach            '1',
2654c1010edaSGreg Roach            '1',
2655c1010edaSGreg Roach            '1',
2656c1010edaSGreg Roach        ],
2657c1010edaSGreg Roach        'כג'      => [
2658c1010edaSGreg Roach            '0',
2659c1010edaSGreg Roach            '55',
2660c1010edaSGreg Roach            '55',
2661c1010edaSGreg Roach            '55',
2662c1010edaSGreg Roach            '54',
2663c1010edaSGreg Roach            '54',
2664c1010edaSGreg Roach            '54',
2665c1010edaSGreg Roach        ],
2666c1010edaSGreg Roach        'כש'      => [
2667c1010edaSGreg Roach            '0',
2668c1010edaSGreg Roach            '5',
2669c1010edaSGreg Roach            '54',
2670c1010edaSGreg Roach            '54',
2671c1010edaSGreg Roach        ],
2672c1010edaSGreg Roach        'כס'      => [
2673c1010edaSGreg Roach            '0',
2674c1010edaSGreg Roach            '5',
2675c1010edaSGreg Roach            '54',
2676c1010edaSGreg Roach            '54',
2677c1010edaSGreg Roach        ],
2678c1010edaSGreg Roach        'ככ'      => [
2679c1010edaSGreg Roach            '0',
2680c1010edaSGreg Roach            '5',
2681c1010edaSGreg Roach            '5',
2682c1010edaSGreg Roach            '5',
2683c1010edaSGreg Roach            '55',
2684c1010edaSGreg Roach            '55',
2685c1010edaSGreg Roach            '55',
2686c1010edaSGreg Roach        ],
2687c1010edaSGreg Roach        'כך'      => [
2688c1010edaSGreg Roach            '0',
2689c1010edaSGreg Roach            '5',
2690c1010edaSGreg Roach            '5',
2691c1010edaSGreg Roach            '5',
2692c1010edaSGreg Roach            '55',
2693c1010edaSGreg Roach            '55',
2694c1010edaSGreg Roach            '55',
2695c1010edaSGreg Roach        ],
2696c1010edaSGreg Roach        'כ'       => [
2697c1010edaSGreg Roach            '0',
2698c1010edaSGreg Roach            '5',
2699c1010edaSGreg Roach            '5',
2700c1010edaSGreg Roach            '5',
2701c1010edaSGreg Roach        ],
2702c1010edaSGreg Roach        'כח'      => [
2703c1010edaSGreg Roach            '0',
2704c1010edaSGreg Roach            '55',
2705c1010edaSGreg Roach            '55',
2706c1010edaSGreg Roach            '55',
2707c1010edaSGreg Roach            '5',
2708c1010edaSGreg Roach            '5',
2709c1010edaSGreg Roach            '5',
2710c1010edaSGreg Roach        ],
2711c1010edaSGreg Roach        'ך'       => [
2712c1010edaSGreg Roach            '0',
2713c1010edaSGreg Roach            '',
2714c1010edaSGreg Roach            '5',
2715c1010edaSGreg Roach            '5',
2716c1010edaSGreg Roach        ],
2717c1010edaSGreg Roach        'ל'       => [
2718c1010edaSGreg Roach            '0',
2719c1010edaSGreg Roach            '8',
2720c1010edaSGreg Roach            '8',
2721c1010edaSGreg Roach            '8',
2722c1010edaSGreg Roach        ],
2723c1010edaSGreg Roach        'לל'      => [
2724c1010edaSGreg Roach            '0',
2725c1010edaSGreg Roach            '88',
2726c1010edaSGreg Roach            '88',
2727c1010edaSGreg Roach            '88',
2728c1010edaSGreg Roach            '8',
2729c1010edaSGreg Roach            '8',
2730c1010edaSGreg Roach            '8',
2731c1010edaSGreg Roach        ],
2732c1010edaSGreg Roach        'מנ'      => [
2733c1010edaSGreg Roach            '0',
2734c1010edaSGreg Roach            '66',
2735c1010edaSGreg Roach            '66',
2736c1010edaSGreg Roach            '66',
2737c1010edaSGreg Roach        ],
2738c1010edaSGreg Roach        'מן'      => [
2739c1010edaSGreg Roach            '0',
2740c1010edaSGreg Roach            '66',
2741c1010edaSGreg Roach            '66',
2742c1010edaSGreg Roach            '66',
2743c1010edaSGreg Roach        ],
2744c1010edaSGreg Roach        'ממ'      => [
2745c1010edaSGreg Roach            '0',
2746c1010edaSGreg Roach            '6',
2747c1010edaSGreg Roach            '6',
2748c1010edaSGreg Roach            '6',
2749c1010edaSGreg Roach            '66',
2750c1010edaSGreg Roach            '66',
2751c1010edaSGreg Roach            '66',
2752c1010edaSGreg Roach        ],
2753c1010edaSGreg Roach        'מם'      => [
2754c1010edaSGreg Roach            '0',
2755c1010edaSGreg Roach            '6',
2756c1010edaSGreg Roach            '6',
2757c1010edaSGreg Roach            '6',
2758c1010edaSGreg Roach            '66',
2759c1010edaSGreg Roach            '66',
2760c1010edaSGreg Roach            '66',
2761c1010edaSGreg Roach        ],
2762c1010edaSGreg Roach        'מ'       => [
2763c1010edaSGreg Roach            '0',
2764c1010edaSGreg Roach            '6',
2765c1010edaSGreg Roach            '6',
2766c1010edaSGreg Roach            '6',
2767c1010edaSGreg Roach        ],
2768c1010edaSGreg Roach        'ם'       => [
2769c1010edaSGreg Roach            '0',
2770c1010edaSGreg Roach            '',
2771c1010edaSGreg Roach            '6',
2772c1010edaSGreg Roach            '6',
2773c1010edaSGreg Roach        ],
2774c1010edaSGreg Roach        'נמ'      => [
2775c1010edaSGreg Roach            '0',
2776c1010edaSGreg Roach            '66',
2777c1010edaSGreg Roach            '66',
2778c1010edaSGreg Roach            '66',
2779c1010edaSGreg Roach        ],
2780c1010edaSGreg Roach        'נם'      => [
2781c1010edaSGreg Roach            '0',
2782c1010edaSGreg Roach            '66',
2783c1010edaSGreg Roach            '66',
2784c1010edaSGreg Roach            '66',
2785c1010edaSGreg Roach        ],
2786c1010edaSGreg Roach        'ננ'      => [
2787c1010edaSGreg Roach            '0',
2788c1010edaSGreg Roach            '6',
2789c1010edaSGreg Roach            '6',
2790c1010edaSGreg Roach            '6',
2791c1010edaSGreg Roach            '66',
2792c1010edaSGreg Roach            '66',
2793c1010edaSGreg Roach            '66',
2794c1010edaSGreg Roach        ],
2795c1010edaSGreg Roach        'נן'      => [
2796c1010edaSGreg Roach            '0',
2797c1010edaSGreg Roach            '6',
2798c1010edaSGreg Roach            '6',
2799c1010edaSGreg Roach            '6',
2800c1010edaSGreg Roach            '66',
2801c1010edaSGreg Roach            '66',
2802c1010edaSGreg Roach            '66',
2803c1010edaSGreg Roach        ],
2804c1010edaSGreg Roach        'נ'       => [
2805c1010edaSGreg Roach            '0',
2806c1010edaSGreg Roach            '6',
2807c1010edaSGreg Roach            '6',
2808c1010edaSGreg Roach            '6',
2809c1010edaSGreg Roach        ],
2810c1010edaSGreg Roach        'ן'       => [
2811c1010edaSGreg Roach            '0',
2812c1010edaSGreg Roach            '',
2813c1010edaSGreg Roach            '6',
2814c1010edaSGreg Roach            '6',
2815c1010edaSGreg Roach        ],
2816c1010edaSGreg Roach        'סתש'     => [
2817c1010edaSGreg Roach            '0',
2818c1010edaSGreg Roach            '2',
2819c1010edaSGreg Roach            '4',
2820c1010edaSGreg Roach            '4',
2821c1010edaSGreg Roach        ],
2822c1010edaSGreg Roach        'סתז'     => [
2823c1010edaSGreg Roach            '0',
2824c1010edaSGreg Roach            '2',
2825c1010edaSGreg Roach            '4',
2826c1010edaSGreg Roach            '4',
2827c1010edaSGreg Roach        ],
2828c1010edaSGreg Roach        'סטז'     => [
2829c1010edaSGreg Roach            '0',
2830c1010edaSGreg Roach            '2',
2831c1010edaSGreg Roach            '4',
2832c1010edaSGreg Roach            '4',
2833c1010edaSGreg Roach        ],
2834c1010edaSGreg Roach        'סטש'     => [
2835c1010edaSGreg Roach            '0',
2836c1010edaSGreg Roach            '2',
2837c1010edaSGreg Roach            '4',
2838c1010edaSGreg Roach            '4',
2839c1010edaSGreg Roach        ],
2840c1010edaSGreg Roach        'סצד'     => [
2841c1010edaSGreg Roach            '0',
2842c1010edaSGreg Roach            '2',
2843c1010edaSGreg Roach            '4',
2844c1010edaSGreg Roach            '4',
2845c1010edaSGreg Roach        ],
2846c1010edaSGreg Roach        'סט'      => [
2847c1010edaSGreg Roach            '0',
2848c1010edaSGreg Roach            '2',
2849c1010edaSGreg Roach            '4',
2850c1010edaSGreg Roach            '4',
2851c1010edaSGreg Roach            '43',
2852c1010edaSGreg Roach            '43',
2853c1010edaSGreg Roach            '43',
2854c1010edaSGreg Roach        ],
2855c1010edaSGreg Roach        'סת'      => [
2856c1010edaSGreg Roach            '0',
2857c1010edaSGreg Roach            '2',
2858c1010edaSGreg Roach            '4',
2859c1010edaSGreg Roach            '4',
2860c1010edaSGreg Roach            '43',
2861c1010edaSGreg Roach            '43',
2862c1010edaSGreg Roach            '43',
2863c1010edaSGreg Roach        ],
2864c1010edaSGreg Roach        'סג'      => [
2865c1010edaSGreg Roach            '0',
2866c1010edaSGreg Roach            '44',
2867c1010edaSGreg Roach            '44',
2868c1010edaSGreg Roach            '44',
2869c1010edaSGreg Roach            '4',
2870c1010edaSGreg Roach            '4',
2871c1010edaSGreg Roach            '4',
2872c1010edaSGreg Roach        ],
2873c1010edaSGreg Roach        'סס'      => [
2874c1010edaSGreg Roach            '0',
2875c1010edaSGreg Roach            '4',
2876c1010edaSGreg Roach            '4',
2877c1010edaSGreg Roach            '4',
2878c1010edaSGreg Roach            '44',
2879c1010edaSGreg Roach            '44',
2880c1010edaSGreg Roach            '44',
2881c1010edaSGreg Roach        ],
2882c1010edaSGreg Roach        'סצ'      => [
2883c1010edaSGreg Roach            '0',
2884c1010edaSGreg Roach            '44',
2885c1010edaSGreg Roach            '44',
2886c1010edaSGreg Roach            '44',
2887c1010edaSGreg Roach        ],
2888c1010edaSGreg Roach        'סץ'      => [
2889c1010edaSGreg Roach            '0',
2890c1010edaSGreg Roach            '44',
2891c1010edaSGreg Roach            '44',
2892c1010edaSGreg Roach            '44',
2893c1010edaSGreg Roach        ],
2894c1010edaSGreg Roach        'סז'      => [
2895c1010edaSGreg Roach            '0',
2896c1010edaSGreg Roach            '44',
2897c1010edaSGreg Roach            '44',
2898c1010edaSGreg Roach            '44',
2899c1010edaSGreg Roach        ],
2900c1010edaSGreg Roach        'סש'      => [
2901c1010edaSGreg Roach            '0',
2902c1010edaSGreg Roach            '44',
2903c1010edaSGreg Roach            '44',
2904c1010edaSGreg Roach            '44',
2905c1010edaSGreg Roach        ],
2906c1010edaSGreg Roach        'ס'       => [
2907c1010edaSGreg Roach            '0',
2908c1010edaSGreg Roach            '4',
2909c1010edaSGreg Roach            '4',
2910c1010edaSGreg Roach            '4',
2911c1010edaSGreg Roach        ],
2912c1010edaSGreg Roach        'ע'       => [
2913c1010edaSGreg Roach            '1',
2914c1010edaSGreg Roach            '0',
2915c1010edaSGreg Roach            '',
2916c1010edaSGreg Roach            '',
2917c1010edaSGreg Roach        ],
2918c1010edaSGreg Roach        'פב'      => [
2919c1010edaSGreg Roach            '0',
2920c1010edaSGreg Roach            '7',
2921c1010edaSGreg Roach            '7',
2922c1010edaSGreg Roach            '7',
2923c1010edaSGreg Roach            '77',
2924c1010edaSGreg Roach            '77',
2925c1010edaSGreg Roach            '77',
2926c1010edaSGreg Roach        ],
2927c1010edaSGreg Roach        'פוו'     => [
2928c1010edaSGreg Roach            '0',
2929c1010edaSGreg Roach            '7',
2930c1010edaSGreg Roach            '7',
2931c1010edaSGreg Roach            '7',
2932c1010edaSGreg Roach            '77',
2933c1010edaSGreg Roach            '77',
2934c1010edaSGreg Roach            '77',
2935c1010edaSGreg Roach        ],
2936c1010edaSGreg Roach        'פפ'      => [
2937c1010edaSGreg Roach            '0',
2938c1010edaSGreg Roach            '7',
2939c1010edaSGreg Roach            '7',
2940c1010edaSGreg Roach            '7',
2941c1010edaSGreg Roach            '77',
2942c1010edaSGreg Roach            '77',
2943c1010edaSGreg Roach            '77',
2944c1010edaSGreg Roach        ],
2945c1010edaSGreg Roach        'פף'      => [
2946c1010edaSGreg Roach            '0',
2947c1010edaSGreg Roach            '7',
2948c1010edaSGreg Roach            '7',
2949c1010edaSGreg Roach            '7',
2950c1010edaSGreg Roach            '77',
2951c1010edaSGreg Roach            '77',
2952c1010edaSGreg Roach            '77',
2953c1010edaSGreg Roach        ],
2954c1010edaSGreg Roach        'פ'       => [
2955c1010edaSGreg Roach            '0',
2956c1010edaSGreg Roach            '7',
2957c1010edaSGreg Roach            '7',
2958c1010edaSGreg Roach            '7',
2959c1010edaSGreg Roach        ],
2960c1010edaSGreg Roach        'ף'       => [
2961c1010edaSGreg Roach            '0',
2962c1010edaSGreg Roach            '',
2963c1010edaSGreg Roach            '7',
2964c1010edaSGreg Roach            '7',
2965c1010edaSGreg Roach        ],
2966c1010edaSGreg Roach        'צג'      => [
2967c1010edaSGreg Roach            '0',
2968c1010edaSGreg Roach            '44',
2969c1010edaSGreg Roach            '44',
2970c1010edaSGreg Roach            '44',
2971c1010edaSGreg Roach            '45',
2972c1010edaSGreg Roach            '45',
2973c1010edaSGreg Roach            '45',
2974c1010edaSGreg Roach        ],
2975c1010edaSGreg Roach        'צז'      => [
2976c1010edaSGreg Roach            '0',
2977c1010edaSGreg Roach            '44',
2978c1010edaSGreg Roach            '44',
2979c1010edaSGreg Roach            '44',
2980c1010edaSGreg Roach        ],
2981c1010edaSGreg Roach        'צס'      => [
2982c1010edaSGreg Roach            '0',
2983c1010edaSGreg Roach            '44',
2984c1010edaSGreg Roach            '44',
2985c1010edaSGreg Roach            '44',
2986c1010edaSGreg Roach        ],
2987c1010edaSGreg Roach        'צצ'      => [
2988c1010edaSGreg Roach            '0',
2989c1010edaSGreg Roach            '4',
2990c1010edaSGreg Roach            '4',
2991c1010edaSGreg Roach            '4',
2992c1010edaSGreg Roach            '5',
2993c1010edaSGreg Roach            '5',
2994c1010edaSGreg Roach            '5',
2995c1010edaSGreg Roach            '44',
2996c1010edaSGreg Roach            '44',
2997c1010edaSGreg Roach            '44',
2998c1010edaSGreg Roach            '54',
2999c1010edaSGreg Roach            '54',
3000c1010edaSGreg Roach            '54',
3001c1010edaSGreg Roach            '45',
3002c1010edaSGreg Roach            '45',
3003c1010edaSGreg Roach            '45',
3004c1010edaSGreg Roach        ],
3005c1010edaSGreg Roach        'צץ'      => [
3006c1010edaSGreg Roach            '0',
3007c1010edaSGreg Roach            '4',
3008c1010edaSGreg Roach            '4',
3009c1010edaSGreg Roach            '4',
3010c1010edaSGreg Roach            '5',
3011c1010edaSGreg Roach            '5',
3012c1010edaSGreg Roach            '5',
3013c1010edaSGreg Roach            '44',
3014c1010edaSGreg Roach            '44',
3015c1010edaSGreg Roach            '44',
3016c1010edaSGreg Roach            '54',
3017c1010edaSGreg Roach            '54',
3018c1010edaSGreg Roach            '54',
3019c1010edaSGreg Roach        ],
3020c1010edaSGreg Roach        'צש'      => [
3021c1010edaSGreg Roach            '0',
3022c1010edaSGreg Roach            '44',
3023c1010edaSGreg Roach            '44',
3024c1010edaSGreg Roach            '44',
3025c1010edaSGreg Roach            '4',
3026c1010edaSGreg Roach            '4',
3027c1010edaSGreg Roach            '4',
3028c1010edaSGreg Roach            '5',
3029c1010edaSGreg Roach            '5',
3030c1010edaSGreg Roach            '5',
3031c1010edaSGreg Roach        ],
3032c1010edaSGreg Roach        'צ'       => [
3033c1010edaSGreg Roach            '0',
3034c1010edaSGreg Roach            '4',
3035c1010edaSGreg Roach            '4',
3036c1010edaSGreg Roach            '4',
3037c1010edaSGreg Roach            '5',
3038c1010edaSGreg Roach            '5',
3039c1010edaSGreg Roach            '5',
3040c1010edaSGreg Roach        ],
3041c1010edaSGreg Roach        'ץ'       => [
3042c1010edaSGreg Roach            '0',
3043c1010edaSGreg Roach            '',
3044c1010edaSGreg Roach            '4',
3045c1010edaSGreg Roach            '4',
3046c1010edaSGreg Roach        ],
3047c1010edaSGreg Roach        'קה'      => [
3048c1010edaSGreg Roach            '0',
3049c1010edaSGreg Roach            '55',
3050c1010edaSGreg Roach            '55',
3051c1010edaSGreg Roach            '5',
3052c1010edaSGreg Roach        ],
3053c1010edaSGreg Roach        'קס'      => [
3054c1010edaSGreg Roach            '0',
3055c1010edaSGreg Roach            '5',
3056c1010edaSGreg Roach            '54',
3057c1010edaSGreg Roach            '54',
3058c1010edaSGreg Roach        ],
3059c1010edaSGreg Roach        'קש'      => [
3060c1010edaSGreg Roach            '0',
3061c1010edaSGreg Roach            '5',
3062c1010edaSGreg Roach            '54',
3063c1010edaSGreg Roach            '54',
3064c1010edaSGreg Roach        ],
3065c1010edaSGreg Roach        'קק'      => [
3066c1010edaSGreg Roach            '0',
3067c1010edaSGreg Roach            '5',
3068c1010edaSGreg Roach            '5',
3069c1010edaSGreg Roach            '5',
3070c1010edaSGreg Roach            '55',
3071c1010edaSGreg Roach            '55',
3072c1010edaSGreg Roach            '55',
3073c1010edaSGreg Roach        ],
3074c1010edaSGreg Roach        'קח'      => [
3075c1010edaSGreg Roach            '0',
3076c1010edaSGreg Roach            '55',
3077c1010edaSGreg Roach            '55',
3078c1010edaSGreg Roach            '55',
3079c1010edaSGreg Roach        ],
3080c1010edaSGreg Roach        'קכ'      => [
3081c1010edaSGreg Roach            '0',
3082c1010edaSGreg Roach            '55',
3083c1010edaSGreg Roach            '55',
3084c1010edaSGreg Roach            '55',
3085c1010edaSGreg Roach        ],
3086c1010edaSGreg Roach        'קך'      => [
3087c1010edaSGreg Roach            '0',
3088c1010edaSGreg Roach            '55',
3089c1010edaSGreg Roach            '55',
3090c1010edaSGreg Roach            '55',
3091c1010edaSGreg Roach        ],
3092c1010edaSGreg Roach        'קג'      => [
3093c1010edaSGreg Roach            '0',
3094c1010edaSGreg Roach            '55',
3095c1010edaSGreg Roach            '55',
3096c1010edaSGreg Roach            '55',
3097c1010edaSGreg Roach            '54',
3098c1010edaSGreg Roach            '54',
3099c1010edaSGreg Roach            '54',
3100c1010edaSGreg Roach        ],
3101c1010edaSGreg Roach        'ק'       => [
3102c1010edaSGreg Roach            '0',
3103c1010edaSGreg Roach            '5',
3104c1010edaSGreg Roach            '5',
3105c1010edaSGreg Roach            '5',
3106c1010edaSGreg Roach        ],
3107c1010edaSGreg Roach        'רר'      => [
3108c1010edaSGreg Roach            '0',
3109c1010edaSGreg Roach            '99',
3110c1010edaSGreg Roach            '99',
3111c1010edaSGreg Roach            '99',
3112c1010edaSGreg Roach            '9',
3113c1010edaSGreg Roach            '9',
3114c1010edaSGreg Roach            '9',
3115c1010edaSGreg Roach        ],
3116c1010edaSGreg Roach        'ר'       => [
3117c1010edaSGreg Roach            '0',
3118c1010edaSGreg Roach            '9',
3119c1010edaSGreg Roach            '9',
3120c1010edaSGreg Roach            '9',
3121c1010edaSGreg Roach        ],
3122c1010edaSGreg Roach        'שטז'     => [
3123c1010edaSGreg Roach            '0',
3124c1010edaSGreg Roach            '2',
3125c1010edaSGreg Roach            '4',
3126c1010edaSGreg Roach            '4',
3127c1010edaSGreg Roach        ],
3128c1010edaSGreg Roach        'שתש'     => [
3129c1010edaSGreg Roach            '0',
3130c1010edaSGreg Roach            '2',
3131c1010edaSGreg Roach            '4',
3132c1010edaSGreg Roach            '4',
3133c1010edaSGreg Roach        ],
3134c1010edaSGreg Roach        'שתז'     => [
3135c1010edaSGreg Roach            '0',
3136c1010edaSGreg Roach            '2',
3137c1010edaSGreg Roach            '4',
3138c1010edaSGreg Roach            '4',
3139c1010edaSGreg Roach        ],
3140c1010edaSGreg Roach        'שטש'     => [
3141c1010edaSGreg Roach            '0',
3142c1010edaSGreg Roach            '2',
3143c1010edaSGreg Roach            '4',
3144c1010edaSGreg Roach            '4',
3145c1010edaSGreg Roach        ],
3146c1010edaSGreg Roach        'שד'      => [
3147c1010edaSGreg Roach            '0',
3148c1010edaSGreg Roach            '2',
3149c1010edaSGreg Roach            '43',
3150c1010edaSGreg Roach            '43',
3151c1010edaSGreg Roach        ],
3152c1010edaSGreg Roach        'שז'      => [
3153c1010edaSGreg Roach            '0',
3154c1010edaSGreg Roach            '44',
3155c1010edaSGreg Roach            '44',
3156c1010edaSGreg Roach            '44',
3157c1010edaSGreg Roach        ],
3158c1010edaSGreg Roach        'שס'      => [
3159c1010edaSGreg Roach            '0',
3160c1010edaSGreg Roach            '44',
3161c1010edaSGreg Roach            '44',
3162c1010edaSGreg Roach            '44',
3163c1010edaSGreg Roach        ],
3164c1010edaSGreg Roach        'שת'      => [
3165c1010edaSGreg Roach            '0',
3166c1010edaSGreg Roach            '2',
3167c1010edaSGreg Roach            '43',
3168c1010edaSGreg Roach            '43',
3169c1010edaSGreg Roach        ],
3170c1010edaSGreg Roach        'שג'      => [
3171c1010edaSGreg Roach            '0',
3172c1010edaSGreg Roach            '4',
3173c1010edaSGreg Roach            '4',
3174c1010edaSGreg Roach            '4',
3175c1010edaSGreg Roach            '44',
3176c1010edaSGreg Roach            '44',
3177c1010edaSGreg Roach            '44',
3178c1010edaSGreg Roach            '4',
3179c1010edaSGreg Roach            '43',
3180c1010edaSGreg Roach            '43',
3181c1010edaSGreg Roach        ],
3182c1010edaSGreg Roach        'שט'      => [
3183c1010edaSGreg Roach            '0',
3184c1010edaSGreg Roach            '2',
3185c1010edaSGreg Roach            '43',
3186c1010edaSGreg Roach            '43',
3187c1010edaSGreg Roach            '44',
3188c1010edaSGreg Roach            '44',
3189c1010edaSGreg Roach            '44',
3190c1010edaSGreg Roach        ],
3191c1010edaSGreg Roach        'שצ'      => [
3192c1010edaSGreg Roach            '0',
3193c1010edaSGreg Roach            '44',
3194c1010edaSGreg Roach            '44',
3195c1010edaSGreg Roach            '44',
3196c1010edaSGreg Roach            '45',
3197c1010edaSGreg Roach            '45',
3198c1010edaSGreg Roach            '45',
3199c1010edaSGreg Roach        ],
3200c1010edaSGreg Roach        'שץ'      => [
3201c1010edaSGreg Roach            '0',
3202c1010edaSGreg Roach            '44',
3203c1010edaSGreg Roach            '',
3204c1010edaSGreg Roach            '44',
3205c1010edaSGreg Roach            '45',
3206c1010edaSGreg Roach            '',
3207c1010edaSGreg Roach            '45',
3208c1010edaSGreg Roach        ],
3209c1010edaSGreg Roach        'שש'      => [
3210c1010edaSGreg Roach            '0',
3211c1010edaSGreg Roach            '4',
3212c1010edaSGreg Roach            '4',
3213c1010edaSGreg Roach            '4',
3214c1010edaSGreg Roach            '44',
3215c1010edaSGreg Roach            '44',
3216c1010edaSGreg Roach            '44',
3217c1010edaSGreg Roach        ],
3218c1010edaSGreg Roach        'ש'       => [
3219c1010edaSGreg Roach            '0',
3220c1010edaSGreg Roach            '4',
3221c1010edaSGreg Roach            '4',
3222c1010edaSGreg Roach            '4',
3223c1010edaSGreg Roach        ],
3224c1010edaSGreg Roach        'תג'      => [
3225c1010edaSGreg Roach            '0',
3226c1010edaSGreg Roach            '34',
3227c1010edaSGreg Roach            '34',
3228c1010edaSGreg Roach            '34',
3229c1010edaSGreg Roach        ],
3230c1010edaSGreg Roach        'תז'      => [
3231c1010edaSGreg Roach            '0',
3232c1010edaSGreg Roach            '34',
3233c1010edaSGreg Roach            '34',
3234c1010edaSGreg Roach            '34',
3235c1010edaSGreg Roach        ],
3236c1010edaSGreg Roach        'תש'      => [
3237c1010edaSGreg Roach            '0',
3238c1010edaSGreg Roach            '4',
3239c1010edaSGreg Roach            '4',
3240c1010edaSGreg Roach            '4',
3241c1010edaSGreg Roach        ],
3242c1010edaSGreg Roach        'תת'      => [
3243c1010edaSGreg Roach            '0',
3244c1010edaSGreg Roach            '3',
3245c1010edaSGreg Roach            '3',
3246c1010edaSGreg Roach            '3',
3247c1010edaSGreg Roach            '4',
3248c1010edaSGreg Roach            '4',
3249c1010edaSGreg Roach            '4',
3250c1010edaSGreg Roach            '33',
3251c1010edaSGreg Roach            '33',
3252c1010edaSGreg Roach            '33',
3253c1010edaSGreg Roach            '44',
3254c1010edaSGreg Roach            '44',
3255c1010edaSGreg Roach            '44',
3256c1010edaSGreg Roach            '34',
3257c1010edaSGreg Roach            '34',
3258c1010edaSGreg Roach            '34',
3259c1010edaSGreg Roach            '43',
3260c1010edaSGreg Roach            '43',
3261c1010edaSGreg Roach            '43',
3262c1010edaSGreg Roach        ],
3263c1010edaSGreg Roach        'ת'       => [
3264c1010edaSGreg Roach            '0',
3265c1010edaSGreg Roach            '3',
3266c1010edaSGreg Roach            '3',
3267c1010edaSGreg Roach            '3',
3268c1010edaSGreg Roach            '4',
3269c1010edaSGreg Roach            '4',
3270c1010edaSGreg Roach            '4',
3271c1010edaSGreg Roach        ],
3272a25f0a04SGreg Roach        // Arabic alphabet
3273c1010edaSGreg Roach        'ا'       => [
3274c1010edaSGreg Roach            '1',
3275c1010edaSGreg Roach            '0',
3276c1010edaSGreg Roach            '',
3277c1010edaSGreg Roach            '',
3278c1010edaSGreg Roach        ],
3279c1010edaSGreg Roach        'ب'       => [
3280c1010edaSGreg Roach            '0',
3281c1010edaSGreg Roach            '7',
3282c1010edaSGreg Roach            '7',
3283c1010edaSGreg Roach            '7',
3284c1010edaSGreg Roach        ],
3285c1010edaSGreg Roach        'ت'       => [
3286c1010edaSGreg Roach            '0',
3287c1010edaSGreg Roach            '3',
3288c1010edaSGreg Roach            '3',
3289c1010edaSGreg Roach            '3',
3290c1010edaSGreg Roach        ],
3291c1010edaSGreg Roach        'ث'       => [
3292c1010edaSGreg Roach            '0',
3293c1010edaSGreg Roach            '3',
3294c1010edaSGreg Roach            '3',
3295c1010edaSGreg Roach            '3',
3296c1010edaSGreg Roach        ],
3297c1010edaSGreg Roach        'ج'       => [
3298c1010edaSGreg Roach            '0',
3299c1010edaSGreg Roach            '4',
3300c1010edaSGreg Roach            '4',
3301c1010edaSGreg Roach            '4',
3302c1010edaSGreg Roach        ],
3303c1010edaSGreg Roach        'ح'       => [
3304c1010edaSGreg Roach            '0',
3305c1010edaSGreg Roach            '5',
3306c1010edaSGreg Roach            '5',
3307c1010edaSGreg Roach            '5',
3308c1010edaSGreg Roach        ],
3309c1010edaSGreg Roach        'خ'       => [
3310c1010edaSGreg Roach            '0',
3311c1010edaSGreg Roach            '5',
3312c1010edaSGreg Roach            '5',
3313c1010edaSGreg Roach            '5',
3314c1010edaSGreg Roach        ],
3315c1010edaSGreg Roach        'د'       => [
3316c1010edaSGreg Roach            '0',
3317c1010edaSGreg Roach            '3',
3318c1010edaSGreg Roach            '3',
3319c1010edaSGreg Roach            '3',
3320c1010edaSGreg Roach        ],
3321c1010edaSGreg Roach        'ذ'       => [
3322c1010edaSGreg Roach            '0',
3323c1010edaSGreg Roach            '3',
3324c1010edaSGreg Roach            '3',
3325c1010edaSGreg Roach            '3',
3326c1010edaSGreg Roach        ],
3327c1010edaSGreg Roach        'ر'       => [
3328c1010edaSGreg Roach            '0',
3329c1010edaSGreg Roach            '9',
3330c1010edaSGreg Roach            '9',
3331c1010edaSGreg Roach            '9',
3332c1010edaSGreg Roach        ],
3333c1010edaSGreg Roach        'ز'       => [
3334c1010edaSGreg Roach            '0',
3335c1010edaSGreg Roach            '4',
3336c1010edaSGreg Roach            '4',
3337c1010edaSGreg Roach            '4',
3338c1010edaSGreg Roach        ],
3339c1010edaSGreg Roach        'س'       => [
3340c1010edaSGreg Roach            '0',
3341c1010edaSGreg Roach            '4',
3342c1010edaSGreg Roach            '4',
3343c1010edaSGreg Roach            '4',
3344c1010edaSGreg Roach        ],
3345c1010edaSGreg Roach        'ش'       => [
3346c1010edaSGreg Roach            '0',
3347c1010edaSGreg Roach            '4',
3348c1010edaSGreg Roach            '4',
3349c1010edaSGreg Roach            '4',
3350c1010edaSGreg Roach        ],
3351c1010edaSGreg Roach        'ص'       => [
3352c1010edaSGreg Roach            '0',
3353c1010edaSGreg Roach            '4',
3354c1010edaSGreg Roach            '4',
3355c1010edaSGreg Roach            '4',
3356c1010edaSGreg Roach        ],
3357c1010edaSGreg Roach        'ض'       => [
3358c1010edaSGreg Roach            '0',
3359c1010edaSGreg Roach            '3',
3360c1010edaSGreg Roach            '3',
3361c1010edaSGreg Roach            '3',
3362c1010edaSGreg Roach        ],
3363c1010edaSGreg Roach        'ط'       => [
3364c1010edaSGreg Roach            '0',
3365c1010edaSGreg Roach            '3',
3366c1010edaSGreg Roach            '3',
3367c1010edaSGreg Roach            '3',
3368c1010edaSGreg Roach        ],
3369c1010edaSGreg Roach        'ظ'       => [
3370c1010edaSGreg Roach            '0',
3371c1010edaSGreg Roach            '4',
3372c1010edaSGreg Roach            '4',
3373c1010edaSGreg Roach            '4',
3374c1010edaSGreg Roach        ],
3375c1010edaSGreg Roach        'ع'       => [
3376c1010edaSGreg Roach            '1',
3377c1010edaSGreg Roach            '0',
3378c1010edaSGreg Roach            '',
3379c1010edaSGreg Roach            '',
3380c1010edaSGreg Roach        ],
3381c1010edaSGreg Roach        'غ'       => [
3382c1010edaSGreg Roach            '0',
3383c1010edaSGreg Roach            '0',
3384c1010edaSGreg Roach            '',
3385c1010edaSGreg Roach            '',
3386c1010edaSGreg Roach        ],
3387c1010edaSGreg Roach        'ف'       => [
3388c1010edaSGreg Roach            '0',
3389c1010edaSGreg Roach            '7',
3390c1010edaSGreg Roach            '7',
3391c1010edaSGreg Roach            '7',
3392c1010edaSGreg Roach        ],
3393c1010edaSGreg Roach        'ق'       => [
3394c1010edaSGreg Roach            '0',
3395c1010edaSGreg Roach            '5',
3396c1010edaSGreg Roach            '5',
3397c1010edaSGreg Roach            '5',
3398c1010edaSGreg Roach        ],
3399c1010edaSGreg Roach        'ك'       => [
3400c1010edaSGreg Roach            '0',
3401c1010edaSGreg Roach            '5',
3402c1010edaSGreg Roach            '5',
3403c1010edaSGreg Roach            '5',
3404c1010edaSGreg Roach        ],
3405c1010edaSGreg Roach        'ل'       => [
3406c1010edaSGreg Roach            '0',
3407c1010edaSGreg Roach            '8',
3408c1010edaSGreg Roach            '8',
3409c1010edaSGreg Roach            '8',
3410c1010edaSGreg Roach        ],
3411c1010edaSGreg Roach        'لا'      => [
3412c1010edaSGreg Roach            '0',
3413c1010edaSGreg Roach            '8',
3414c1010edaSGreg Roach            '8',
3415c1010edaSGreg Roach            '8',
3416c1010edaSGreg Roach        ],
3417c1010edaSGreg Roach        'م'       => [
3418c1010edaSGreg Roach            '0',
3419c1010edaSGreg Roach            '6',
3420c1010edaSGreg Roach            '6',
3421c1010edaSGreg Roach            '6',
3422c1010edaSGreg Roach        ],
3423c1010edaSGreg Roach        'ن'       => [
3424c1010edaSGreg Roach            '0',
3425c1010edaSGreg Roach            '6',
3426c1010edaSGreg Roach            '6',
3427c1010edaSGreg Roach            '6',
3428c1010edaSGreg Roach        ],
3429c1010edaSGreg Roach        'هن'      => [
3430c1010edaSGreg Roach            '0',
3431c1010edaSGreg Roach            '66',
3432c1010edaSGreg Roach            '66',
3433c1010edaSGreg Roach            '66',
3434c1010edaSGreg Roach        ],
3435c1010edaSGreg Roach        'ه'       => [
3436c1010edaSGreg Roach            '0',
3437c1010edaSGreg Roach            '5',
3438c1010edaSGreg Roach            '5',
3439c1010edaSGreg Roach            '',
3440c1010edaSGreg Roach        ],
3441c1010edaSGreg Roach        'و'       => [
3442c1010edaSGreg Roach            '1',
3443c1010edaSGreg Roach            '',
3444c1010edaSGreg Roach            '',
3445c1010edaSGreg Roach            '',
3446c1010edaSGreg Roach            '7',
3447c1010edaSGreg Roach            '',
3448c1010edaSGreg Roach            '',
3449c1010edaSGreg Roach        ],
3450c1010edaSGreg Roach        'ي'       => [
3451c1010edaSGreg Roach            '0',
3452c1010edaSGreg Roach            '1',
3453c1010edaSGreg Roach            '',
3454c1010edaSGreg Roach            '',
3455c1010edaSGreg Roach        ],
3456c1010edaSGreg Roach        'آ'       => [
3457c1010edaSGreg Roach            '0',
3458c1010edaSGreg Roach            '1',
3459c1010edaSGreg Roach            '',
3460c1010edaSGreg Roach            '',
3461c1010edaSGreg Roach        ],
3462c1010edaSGreg Roach        'ة'       => [
3463c1010edaSGreg Roach            '0',
3464c1010edaSGreg Roach            '',
3465c1010edaSGreg Roach            '',
3466c1010edaSGreg Roach            '3',
3467c1010edaSGreg Roach        ],
3468c1010edaSGreg Roach        'ی'       => [
3469c1010edaSGreg Roach            '0',
3470c1010edaSGreg Roach            '1',
3471c1010edaSGreg Roach            '',
3472c1010edaSGreg Roach            '',
3473c1010edaSGreg Roach        ],
3474c1010edaSGreg Roach        'ى'       => [
3475c1010edaSGreg Roach            '1',
3476c1010edaSGreg Roach            '1',
3477c1010edaSGreg Roach            '',
3478c1010edaSGreg Roach            '',
3479c1010edaSGreg Roach        ],
348013abd6f3SGreg Roach    ];
3481a25f0a04SGreg Roach
3482a25f0a04SGreg Roach    /**
348316cfb0b9SGreg Roach     * Which algorithms are supported.
348416cfb0b9SGreg Roach     *
348524f2a3afSGreg Roach     * @return array<string>
348616cfb0b9SGreg Roach     */
348716cfb0b9SGreg Roach    public static function getAlgorithms(): array
348816cfb0b9SGreg Roach    {
348916cfb0b9SGreg Roach        return [
3490ad3143ccSGreg Roach            /* I18N: https://en.wikipedia.org/wiki/Soundex */
349116cfb0b9SGreg Roach            'std' => I18N::translate('Russell'),
3492ad3143ccSGreg Roach            /* I18N: https://en.wikipedia.org/wiki/Daitch–Mokotoff_Soundex */
349316cfb0b9SGreg Roach            'dm'  => I18N::translate('Daitch-Mokotoff'),
349416cfb0b9SGreg Roach        ];
349516cfb0b9SGreg Roach    }
349616cfb0b9SGreg Roach
349716cfb0b9SGreg Roach    /**
349816cfb0b9SGreg Roach     * Is there a match between two soundex codes?
349916cfb0b9SGreg Roach     *
350016cfb0b9SGreg Roach     * @param string $soundex1
350116cfb0b9SGreg Roach     * @param string $soundex2
350216cfb0b9SGreg Roach     *
350316cfb0b9SGreg Roach     * @return bool
350416cfb0b9SGreg Roach     */
350524f2a3afSGreg Roach    public static function compare(string $soundex1, string $soundex2): bool
350616cfb0b9SGreg Roach    {
350716cfb0b9SGreg Roach        if ($soundex1 !== '' && $soundex2 !== '') {
350854c1ab5eSGreg Roach            return array_intersect(explode(':', $soundex1), explode(':', $soundex2)) !== [];
350916cfb0b9SGreg Roach        }
351016cfb0b9SGreg Roach
351116cfb0b9SGreg Roach        return false;
351216cfb0b9SGreg Roach    }
351316cfb0b9SGreg Roach
351416cfb0b9SGreg Roach    /**
351516cfb0b9SGreg Roach     * Generate Russell soundex codes for a given text.
351616cfb0b9SGreg Roach     *
351716cfb0b9SGreg Roach     * @param string $text
351816cfb0b9SGreg Roach     *
351916cfb0b9SGreg Roach     * @return string
352016cfb0b9SGreg Roach     */
352116cfb0b9SGreg Roach    public static function russell(string $text): string
352216cfb0b9SGreg Roach    {
352316cfb0b9SGreg Roach        $words         = explode(' ', $text);
352416cfb0b9SGreg Roach        $soundex_array = [];
352516cfb0b9SGreg Roach
352616cfb0b9SGreg Roach        foreach ($words as $word) {
352716cfb0b9SGreg Roach            $soundex = soundex($word);
352816cfb0b9SGreg Roach
352916cfb0b9SGreg Roach            // Only return codes from recognisable sounds
353016cfb0b9SGreg Roach            if ($soundex !== '0000') {
353116cfb0b9SGreg Roach                $soundex_array[] = $soundex;
353216cfb0b9SGreg Roach            }
353316cfb0b9SGreg Roach        }
353416cfb0b9SGreg Roach
353516cfb0b9SGreg Roach        // Combine words, e.g. “New York” as “Newyork”
353616cfb0b9SGreg Roach        if (count($words) > 1) {
3537e364afe4SGreg Roach            $soundex_array[] = soundex(str_replace(' ', '', $text));
353816cfb0b9SGreg Roach        }
353916cfb0b9SGreg Roach
354016cfb0b9SGreg Roach        // A varchar(255) column can only hold 51 4-character codes (plus 50 delimiters)
354116cfb0b9SGreg Roach        $soundex_array = array_slice(array_unique($soundex_array), 0, 51);
354216cfb0b9SGreg Roach
354316cfb0b9SGreg Roach        return implode(':', $soundex_array);
354416cfb0b9SGreg Roach    }
354516cfb0b9SGreg Roach
354616cfb0b9SGreg Roach    /**
354716cfb0b9SGreg Roach     * Generate Daitch–Mokotoff soundex codes for a given text.
354816cfb0b9SGreg Roach     *
354916cfb0b9SGreg Roach     * @param string $text
355016cfb0b9SGreg Roach     *
355116cfb0b9SGreg Roach     * @return string
355216cfb0b9SGreg Roach     */
355316cfb0b9SGreg Roach    public static function daitchMokotoff(string $text): string
355416cfb0b9SGreg Roach    {
355516cfb0b9SGreg Roach        $words         = explode(' ', $text);
355616cfb0b9SGreg Roach        $soundex_array = [];
355716cfb0b9SGreg Roach
355816cfb0b9SGreg Roach        foreach ($words as $word) {
355916cfb0b9SGreg Roach            $soundex_array = array_merge($soundex_array, self::daitchMokotoffWord($word));
356016cfb0b9SGreg Roach        }
356116cfb0b9SGreg Roach        // Combine words, e.g. “New York” as “Newyork”
356216cfb0b9SGreg Roach        if (count($words) > 1) {
3563e364afe4SGreg Roach            $soundex_array = array_merge($soundex_array, self::daitchMokotoffWord(str_replace(' ', '', $text)));
356416cfb0b9SGreg Roach        }
356516cfb0b9SGreg Roach
356616cfb0b9SGreg Roach        // A varchar(255) column can only hold 36 6-character codes (plus 35 delimiters)
356716cfb0b9SGreg Roach        $soundex_array = array_slice(array_unique($soundex_array), 0, 36);
356816cfb0b9SGreg Roach
356916cfb0b9SGreg Roach        return implode(':', $soundex_array);
357016cfb0b9SGreg Roach    }
357116cfb0b9SGreg Roach
357216cfb0b9SGreg Roach    /**
357376692c8bSGreg Roach     * Calculate the Daitch-Mokotoff soundex for a word.
357476692c8bSGreg Roach     *
3575a25f0a04SGreg Roach     * @param string $name
3576a25f0a04SGreg Roach     *
357724f2a3afSGreg Roach     * @return array<string> List of possible DM codes for the word.
3578a25f0a04SGreg Roach     */
357924f2a3afSGreg Roach    private static function daitchMokotoffWord(string $name): array
3580c1010edaSGreg Roach    {
3581a25f0a04SGreg Roach        // Apply special transformation rules to the input string
3582a25f0a04SGreg Roach        $name = I18N::strtoupper($name);
358316cfb0b9SGreg Roach        foreach (self::TRANSFORM_NAMES as $transformRule) {
3584a25f0a04SGreg Roach            $name = str_replace($transformRule[0], $transformRule[1], $name);
3585a25f0a04SGreg Roach        }
3586a25f0a04SGreg Roach
3587a25f0a04SGreg Roach        // Initialize
3588a25f0a04SGreg Roach        $name_script = I18N::textScript($name);
3589*dd71ff6bSGreg Roach        $noVowels    = $name_script === 'Hebr' || $name_script === 'Arab';
3590a25f0a04SGreg Roach
3591a25f0a04SGreg Roach        $lastPos         = strlen($name) - 1;
3592a25f0a04SGreg Roach        $currPos         = 0;
3593a25f0a04SGreg Roach        $state           = 1; // 1: start of input string, 2: before vowel, 3: other
359413abd6f3SGreg Roach        $result          = []; // accumulate complete 6-digit D-M codes here
359513abd6f3SGreg Roach        $partialResult   = []; // accumulate incomplete D-M codes here
359613abd6f3SGreg Roach        $partialResult[] = ['!']; // initialize 1st partial result  ('!' stops "duplicate sound" check)
3597a25f0a04SGreg Roach
3598a25f0a04SGreg Roach        // Loop through the input string.
3599a25f0a04SGreg Roach        // Stop when the string is exhausted or when no more partial results remain
3600a25f0a04SGreg Roach        while (count($partialResult) !== 0 && $currPos <= $lastPos) {
3601a25f0a04SGreg Roach            // Find the DM coding table entry for the chunk at the current position
3602a25f0a04SGreg Roach            $thisEntry = substr($name, $currPos, self::MAXCHAR); // Get maximum length chunk
3603e364afe4SGreg Roach            while ($thisEntry !== '') {
360416cfb0b9SGreg Roach                if (isset(self::DM_SOUNDS[$thisEntry])) {
3605a25f0a04SGreg Roach                    break;
3606a25f0a04SGreg Roach                }
3607a25f0a04SGreg Roach                $thisEntry = substr($thisEntry, 0, -1); // Not in table: try a shorter chunk
3608a25f0a04SGreg Roach            }
3609a25f0a04SGreg Roach            if ($thisEntry === '') {
3610a25f0a04SGreg Roach                $currPos++; // Not in table: advance pointer to next byte
3611a25f0a04SGreg Roach                continue; // and try again
3612a25f0a04SGreg Roach            }
3613a25f0a04SGreg Roach
361416cfb0b9SGreg Roach            $soundTableEntry = self::DM_SOUNDS[$thisEntry];
3615a25f0a04SGreg Roach            $workingResult   = $partialResult;
361613abd6f3SGreg Roach            $partialResult   = [];
3617a25f0a04SGreg Roach            $currPos += strlen($thisEntry);
3618a25f0a04SGreg Roach
3619a25f0a04SGreg Roach            // Not at beginning of input string
3620e364afe4SGreg Roach            if ($state !== 1) {
3621a25f0a04SGreg Roach                if ($currPos <= $lastPos) {
3622a25f0a04SGreg Roach                    // Determine whether the next chunk is a vowel
3623a25f0a04SGreg Roach                    $nextEntry = substr($name, $currPos, self::MAXCHAR); // Get maximum length chunk
3624e364afe4SGreg Roach                    while ($nextEntry !== '') {
362516cfb0b9SGreg Roach                        if (isset(self::DM_SOUNDS[$nextEntry])) {
3626a25f0a04SGreg Roach                            break;
3627a25f0a04SGreg Roach                        }
3628a25f0a04SGreg Roach                        $nextEntry = substr($nextEntry, 0, -1); // Not in table: try a shorter chunk
3629a25f0a04SGreg Roach                    }
3630a25f0a04SGreg Roach                } else {
3631a25f0a04SGreg Roach                    $nextEntry = '';
3632a25f0a04SGreg Roach                }
3633e364afe4SGreg Roach                if ($nextEntry !== '' && self::DM_SOUNDS[$nextEntry][0] !== '0') {
3634a25f0a04SGreg Roach                    $state = 2;
3635a25f0a04SGreg Roach                } else {
3636a25f0a04SGreg Roach                    // Next chunk is a vowel
3637a25f0a04SGreg Roach                    $state = 3;
3638a25f0a04SGreg Roach                }
3639a25f0a04SGreg Roach            }
3640a25f0a04SGreg Roach
3641a25f0a04SGreg Roach            while ($state < count($soundTableEntry)) {
3642a25f0a04SGreg Roach                // empty means 'ignore this sound in this state'
3643e364afe4SGreg Roach                if ($soundTableEntry[$state] === '') {
3644a25f0a04SGreg Roach                    foreach ($workingResult as $workingEntry) {
3645a25f0a04SGreg Roach                        $tempEntry                        = $workingEntry;
3646a25f0a04SGreg Roach                        $tempEntry[count($tempEntry) - 1] .= '!'; // Prevent false 'doubles'
3647a25f0a04SGreg Roach                        $partialResult[]                  = $tempEntry;
3648a25f0a04SGreg Roach                    }
3649a25f0a04SGreg Roach                } else {
3650a25f0a04SGreg Roach                    foreach ($workingResult as $workingEntry) {
3651a25f0a04SGreg Roach                        if ($soundTableEntry[$state] !== $workingEntry[count($workingEntry) - 1]) {
3652a25f0a04SGreg Roach                            // Incoming sound isn't a duplicate of the previous sound
3653a25f0a04SGreg Roach                            $workingEntry[] = $soundTableEntry[$state];
3654e364afe4SGreg Roach                        } elseif ($noVowels) {
3655a25f0a04SGreg Roach                            // Incoming sound is a duplicate of the previous sound
3656a25f0a04SGreg Roach                            // For Hebrew and Arabic, we need to create a pair of D-M sound codes,
3657a25f0a04SGreg Roach                            // one of the pair with only a single occurrence of the duplicate sound,
3658a25f0a04SGreg Roach                            // the other with both occurrences
3659a25f0a04SGreg Roach                            $workingEntry[] = $soundTableEntry[$state];
3660a25f0a04SGreg Roach                        }
3661e364afe4SGreg Roach
3662a25f0a04SGreg Roach                        if (count($workingEntry) < 7) {
3663a25f0a04SGreg Roach                            $partialResult[] = $workingEntry;
3664a25f0a04SGreg Roach                        } else {
3665a25f0a04SGreg Roach                            // This is the 6th code in the sequence
3666a25f0a04SGreg Roach                            // We're looking for 7 entries because the first is '!' and doesn't count
3667a25f0a04SGreg Roach                            $tempResult = str_replace('!', '', implode('', $workingEntry));
3668a25f0a04SGreg Roach                            // Only return codes from recognisable sounds
3669a25f0a04SGreg Roach                            if ($tempResult) {
3670a25f0a04SGreg Roach                                $result[] = substr($tempResult . '000000', 0, 6);
3671a25f0a04SGreg Roach                            }
3672a25f0a04SGreg Roach                        }
3673a25f0a04SGreg Roach                    }
3674a25f0a04SGreg Roach                }
3675e364afe4SGreg Roach                $state += 3; // Advance to next triplet while keeping the same basic state
3676a25f0a04SGreg Roach            }
3677a25f0a04SGreg Roach        }
3678a25f0a04SGreg Roach
3679a25f0a04SGreg Roach        // Zero-fill and copy all remaining partial results
3680a25f0a04SGreg Roach        foreach ($partialResult as $workingEntry) {
3681a25f0a04SGreg Roach            $tempResult = str_replace('!', '', implode('', $workingEntry));
3682a25f0a04SGreg Roach            // Only return codes from recognisable sounds
3683a25f0a04SGreg Roach            if ($tempResult) {
3684a25f0a04SGreg Roach                $result[] = substr($tempResult . '000000', 0, 6);
3685a25f0a04SGreg Roach            }
3686a25f0a04SGreg Roach        }
3687a25f0a04SGreg Roach
3688a25f0a04SGreg Roach        return $result;
3689a25f0a04SGreg Roach    }
3690a25f0a04SGreg Roach}
3691