hspell-1.4/0000755000076600007650000000000013123546345010663 5ustar nyhrlhspell-1.4/PrefixBits.pl0000444000076600007650000000130610076152070013265 0ustar nyhrl# Prefix specifiers currently generated: $PS_ALL=63; # All legal prefixes are allowed for this word $PS_B=1; # only certain prefixes ending in bet are allowed. $PS_L=2; # only prefixes ending in bachla"m are allowed (note that if genprefixes.pl gives a certain prefix PS_L, it should also give it PS_B). $PS_VERB=4; $PS_NONDEF=8; # accept prefixes w/o ה $PS_IMPER=16; # accept nothing/ו $PS_MISC=32; # These have to be bitmasks that can be or'ed easily, so that if one word # can get prefixes of two types, it will have one combined prefix specifier # that describes the prefixes. # # These prefix specifiers are used by genprefixes.pl to create prefixes.c # that is used by hspell.c hspell-1.4/test/0000755000076600007650000000000013123546345011642 5ustar nyhrlhspell-1.4/test/test10000755000076600007650000000374711722533743012644 0ustar nyhrl#!/bin/sh # Test 1: verify that each and every word in the "words-correct" file is # considered correct, and each and every word in "words-wrong" is considered # incorrect. The various subtests use different spellchecking runtimes # (hspell, aspell, hunspell) using the compiled data in the current directory. # # Important: run "make hspell he.rws" first. # NOTE: This test should be run inside the hspell compilation directory, # not in TESTDIR itself. DIR=test TMPLOG=/tmp/test1.log function dotest(){ # Run the given "ispell -a"-like command and expect all the words to # be correct, or all incorrect, as requested. local TESTNAME="$1" local FILE="$2" local SECHEAD="$3" shift 3 if test ! -s "$FILE" then return fi echo -n "Test 1/$TESTNAME ($SECHEAD): " "$@" < $FILE >$TMPLOG nwords=`wc -l <$FILE` nright=`grep -c '^[*+]' <$TMPLOG` nwrong=`grep -c '^[&#]' <$TMPLOG` case $SECHEAD in +*) # all should be right nall=$nright nnone=$nwrong;; -*) # all should be right nall=$nwrong nnone=$nright;; *) echo "TEST BUG: bad header $SECHEAD" return;; esac if test $nall -eq $nwords -a $nnone -eq 0 then echo success. else echo "***** FAILED! *****" #cat $TMPLOG fi } TMPFILE=/tmp/test1.in function test_all(){ TESTNAME="$1" shift >$TMPFILE SECHEAD="" section=0 while read line do case $line in [+-]*) # end of previous section; check it dotest "$TESTNAME/$section" "$TMPFILE" "$SECHEAD" "$@" >$TMPFILE SECHEAD="$line" let section++ ;; *) echo "$line" >>$TMPFILE ;; esac done # end of previous section; check it dotest "$TESTNAME/$section" "$TMPFILE" "$SECHEAD" "$@" rm $TMPFILE } cat $DIR/test1.dat| test_all hspell ./hspell -Dhebrew.wgz -a cat $DIR/test1.dat| test_all aspell aspell --dict-dir=. -d he.rws -a iconv -f iso-8859-8 -t utf-8 $DIR/test1.dat | test_all hunspell hunspell -i utf-8 -d `pwd`/he -a #iconv -f iso-8859-8 -t utf-8 $DIR/test1.dat | #test_all doubleaffixcompress hunspell -i utf-8 -d `pwd`/hunspell/new_he -a hspell-1.4/test/test1.dat0000644000076600007650000000074311663267100013374 0ustar nyhrl+ Correct words כלב חתול וכשהחתולים לישון כלביו שכלביו + Aprostrophe ג'ירפה וכשהג'ירפה מנכ"ל + Aprostrophe ending word סנדוויץ' + Ignore quotes "שלום שלום" "שלום" ה"שלום" ה"שלום - Wrong words דגדגחדשג הנדב ששכלבים + Correct prefix combinations הצרפתי הילד ועד הוועד וכשהוועד שוועד וועד והוועד - No word and prefix match שהכלביו שישון שהשמוע הכובשן ההלכנו הצרפת - Missing mandatory prefix, maqor ישון אדות - Missing mandatory prefix, maqor+kinuy בדותו + Stand alone prefixes ה ב וכשה hspell-1.4/mk_he_affix.c0000644000076600007650000002025513123032546013264 0ustar nyhrl/* Copyright 2004-2012 Nadav Har'El and Dan Kenigsberg */ /* this little program creates hunspell or aspell dictionaries for Hebrew * according to the hebrew.wgz*. * We create a single rule for each of hspell's "word specifier". Each rule * expands to all the prefixes that provide that specifier (and the null * prefix is implied and NEEDAFFIX is specified for each word where this is * not appropriate). */ #include #include #include #include "prefixes.c" #include "hspell.h" #define PREFIXFILE_COMMAND "gzip -dc hebrew.wgz.prefixes | ./specfilter" /* Convert a number in the range 0..52 (currently) to a readable character that can be used as the rule (prefix set) name. To facilitate merging our word list with an English one (for spell-checking mixed text in software that does not support multiple word lists), we do not use the upper-case latin characters. Currently we use the lower-case letters, in addition to Hebrew characters (aspell and myspell have no problems with non-ascii characters) - but almost any symbols can be used to. A note for future expansion: Aspell has problems with a backslash, while Myspell works with them - so we will have to skip the backslash character if we use symbols. But with the digits and other symbols, there's plenty of room for future expansion. */ static inline char num_to_char(int i) { if(i<0){ fprintf(stderr,"internal error: num_to_char(%d)\n",i); exit(1); } else if(i<26){ return 'a'+i; } else if(i<52){ return 'א'+(i-26); } else { fprintf(stderr,"internal error: num_to_char(%d) ran out of symbols\n",i); exit(1); } } /* Usage: mk_he_affix * Where is: 0 for aspell, 1 for hunspell. Hunspell and aspell have * some different affix file features, and also different encoding requirements * (aspell requires ISO-8859-8, while hunspell is, for an unknown reason, * 10 times faster if we give it UTF-8). */ int main(int argc, char *argv[]) { int i, specifier; char seen_specifiers[100], rulechar; int already_seen=0, seen, count; char needaffix=0; FILE *prefixfp, *wordsfp; FILE *afffp, *dicfp; int prefixes_size = 0; char *prefix_is_word; int hunspell; if(argc!=4){ fprintf(stderr,"%d\n",argc); fprintf(stderr,"Usage: %s \n", argv[0]); exit(1); } hunspell=atoi(argv[1]); if(hunspell){ char s[256]; /* Unfortunately, the dictionary file should start with an approximate * count of the number of words. Note that this count is only approximate * as we also add a list of stand-alone prefixes at the end. */ snprintf(s, sizeof(s), "gzip -dc hebrew.wgz | ./wunzip | wc -l > %s", argv[3]); system(s); snprintf(s, sizeof(s), "iconv -f iso-8859-8 -t utf-8 >%s", argv[2]); afffp = popen(s, "w"); snprintf(s, sizeof(s), "iconv -f iso-8859-8 -t utf-8 >>%s", argv[3]); dicfp = popen(s, "w"); } else { afffp = fopen(argv[2], "w"); dicfp = fopen(argv[3], "w"); } fprintf(afffp, "# This file was generated automatically from data prepared\n" "# by the Hspell project (http://hspell.ivrix.org.il/).\n" "# Hspell version %d.%d%s was used.\n", HSPELL_VERSION_MAJOR,HSPELL_VERSION_MINOR,HSPELL_VERSION_EXTRA); fprintf(afffp, "# Copyright 2004-2017, Nadav Har'El and Dan Kenigsberg\n"); fprintf(afffp, "# The dictionary (this file and the corresponding word list)\n" "# is licensed under the GNU Affero General Public License\n" "# (AGPL) version 3.\n"); if(hunspell){ fprintf(afffp, "SET UTF-8\n" "TRY יוהאעחכק'\"שסזדגברנמטצתפםףךץןל\n" "WORDCHARS אבגדהוזחטיכלמנסעפצקרשתםןךףץ'\"\n" "BREAK 3\n" "BREAK ^\"\n" "BREAK \"$\n" "BREAK ^'\n" "MAP 10\n" "MAP ךכח\n" "MAP םמ\n" "MAP ןנ\n" "MAP ףפ\n" "MAP ץצ\n" "MAP כק\n" "MAP אע # for English\n" "MAP גה # for Russian\n" "MAP צס # for Arabic\n" "MAP חכר # for French\n" ); } prefixfp = popen(PREFIXFILE_COMMAND, "r"); while ((specifier=fgetc(prefixfp))!= EOF) { for(i=0, seen=0; (i # # TODO # - UTF-8 support (+cmdline opt to select offsets type: byte-based # or char-based) # - intl support. e.g.: # multispell -T utf8 --ispell-encoding=koi8-r # or: # multispell -T utf8 --ispell-cmd="multispell --ispell-cmd=..." ... # - handle aspell's '$$' ? use strict; use Getopt::Long; use IPC::Open2; use IO::Handle; # options to pass to both hspell and ispell: my @common_opts = qw/ --dummy /; # options to pass to hspell only: my @hspell_opts = qw/ -n --notes --verbose /; my $hspell_cmd = "hspell"; my $ispell_cmd = "ispell"; my $remove_niqqud = 0; my $debug = 0; my $debug_file = "$ENV{HOME}/multispell-dbg.txt"; my $rc_file = "$ENV{HOME}/.multispellrc"; my $rc_file_global = "/etc/multispellrc"; my ($hsplrd, $hsplwr); # pipes to hspell my ($isplrd, $isplwr); # pipes to ispell my $VERSION = "0.4a"; sub DBG { if ($debug) { my $msg = shift; print DBGFL $msg; } } sub help { print <; if (!$signature || $signature !~ /^@\(#\)/) { DBG("Loading failed (please check stderr)\n"); die "Can't load $cmd"; } else { DBG("Loaded OK: $signature"); } autoflush WR 1; return (*RD, *WR); } ($hsplrd, $hsplwr) = load_speller($hspell_cmd); ($isplrd, $isplwr) = load_speller($ispell_cmd); } sub print_signature { print "@(#) International Ispell Version 3.1.20 ". "(but really multispell $VERSION)\n"; } # do_loop() is the crux of the program. it reads ispell-a requests # from stdin, sends them to ispell and/or hspell, and writes the merged # replies to stdout. sub do_loop { my $heb_chars = '\xE0-\xFA'; my $niqqud_chars = '\xC0-\xCD\xCF'; my $niqqud_heb_chars = $heb_chars . $niqqud_chars; print_signature(); while (my $line = ) { DBG(">$line"); my @replies = (); # if the last line of the input does not end in newline, add it ourselves # so that hspell doesn't hang waiting for it. # e.g.: echo -n word | multispell -a $line .= "\n" if $line !~ /\n/; # a workaround for some versions of Aspell that ignore empty input lines. # see http://ivrix.org.il/bugzilla/show_bug.cgi?id=3 $line = " \n" if $line eq "\n"; if ($remove_niqqud) { # erase words containing CP1255's niqqud (hebrew points) $line =~ s/([$niqqud_heb_chars]+[$niqqud_chars][$niqqud_heb_chars]*)/ ' ' x length($1)/oeg; # convert maqaf to ASCII dash $line =~ tr/\xCE/-/; } if ($line =~ /^[#!~@%+&*-]/) { if ($line =~ /^[@&*]/) { # "@word" - ignore word. # "*word" - add word to private dict. # "&word" - ditto. # We send hebrew words to hspell, otherwise to ispell if ($line =~ /[$heb_chars]/o || $line eq "\@ActivateExtendedProtocol\n") { DBG("HSPL>$line"); print $hsplwr $line; } else { DBG("ISPL>$line"); print $isplwr $line; } } else { DBG("IHSPL>$line"); print $hsplwr $line; print $isplwr $line; } # this is a command, so we don't read replies. } else { # words to spell-check. DBG("HSPL>$line"); print $hsplwr $line; while (<$hsplrd>) { DBG("HSPL<$_"); last if ! /\S/; push @replies, $_; } # delete all heb words before sending to ispell $line =~ s/[$heb_chars]/ /og; DBG("ISPL>$line"); print $isplwr $line; while (<$isplrd>) { DBG("ISPL<$_"); last if ! /\S/; push @replies, $_; } # We're about to sort the replies. # But first we need to take care of non-standard replies (like # spelling-hints). Such replies (so we believe) add information to # the last standard reply (e.g. spelling-hints explain the last # reported misspelled word), so we want to concatenate them with # that reply instead of sorting them as if they were independent. for (my $i = 1; $i <= $#replies; $i++) { if ($replies[$i] =~ /^[^*+&?#-]/) { # non-standard? $replies[$i-1] .= $replies[$i]; splice @replies, $i, 1; $i--; } } # sort the replies sub getidx { $_ = shift; (/^[&?] \S+ \d+ (\d+)/ || /^# \S+ (\d+)/) ? $1 : 0; } @replies = sort { getidx($a) <=> getidx($b) } @replies; push @replies, "\n"; DBG("<$_") foreach (@replies); print @replies; } } } # extract_options() takes a list of option names and extracts them and # their values from @ARGV. # For example, if we pass ('-n', '-d:', '-S') to this function, and @ARGV # is ('-i', '-nx', '-denglish', '-p'), it returns "-n -d english", and # @ARGV becomes ('-i', '-x', '-p'). sub extract_options { my @options = @_; my %getopt_hash; my $args = ""; foreach my $option (@options) { $option =~ tr/-//d; my $require_arg = ($option =~ s/:$/=s/); $getopt_hash{$option} = sub { my ($optname, $optval) = @_; $optname = (length($optname) > 1 ? "--" : "-") . $optname; $args .= " $optname"; $args .= " '$optval'" if $require_arg; }; } GetOptions(%getopt_hash); return $args; } # tokenize_cmd_line() is used for parsing the RC files. # it takes a command line string, e.g.: # -x --opt="one two" -i 'on"e" two' # and returns an array: # ('-x', '--opt=one two', '-i', 'on"e" two') sub tokenize_cmd_line { my $s = shift; return map { s/['"]//; s/['"]$//; $_; } grep { /\S/ } split( /( [^\s'"]*(?:'.*?'|".*?") | [^\s'"]+ )/x , $s); } main: { $| = 1; Getopt::Long::Configure("bundling_override", "pass_through"); my $print_signature = 0; my $ispella_mode = 0; my $dictionary = ""; my @drop_opts = (); # Applications use the '-d' option to select a dictionary. # We don't want aspell to consider the locale when '-d' is not specified, # because in most cases that's not what the user wants (e.g. he_IL), and, # anyway, we can't represent most languages other than English in # ISO-8859-8. $ENV{'LC_ALL'} = 'C'; if (open(RC, $rc_file) || open(RC, $rc_file_global)) { while () { s/#.*//; push @ARGV, tokenize_cmd_line($_); } close(RC); } my @saved_argv = @ARGV; GetOptions('debug' => \$debug, 'hspell-cmd=s' => \$hspell_cmd, 'ispell-cmd=s' => \$ispell_cmd, 'drop=s' => \@drop_opts, 'remove-niqqud' => \$remove_niqqud, 'remove-niqud' => \$remove_niqqud, 'remove-nikud' => \$remove_niqqud, 'd=s' => \$dictionary, 'v' => \$print_signature, 'a' => \$ispella_mode, 'i' => sub { ; }, # silently eat up hspell's '-i' 'help|h|?' => sub { help(); } ) or help(); if ($debug) { open(DBGFL, ">>$debug_file"); autoflush DBGFL 1; DBG("\n\n" . "-" x 75 . "\n"); DBG("I was invoked: $0"); DBG(" '$_'") for @saved_argv; DBG("\n"); DBG("On: " . localtime() . "\n"); # According to SUSV, the following 'ps' command is portable, # but I don't want to take risks, so I run it only on linux. if ($^O =~ /linux/i) { my $PPID = getppid(); DBG("By: " . `ps -p $PPID -o args=`); } } if ($print_signature) { print_signature(); exit; } if (!$ispella_mode) { die "You can only use this speller in \"pipe-mode\" " . "(using the '-a' option)\n"; } # If $dictionary contains "hebrew", it's probably something # kspell or emacs passed. We ignore it since ispell knows # no such dictionary. if ($dictionary && $dictionary !~ /hebrew/i) { push @ARGV, '-d', $dictionary; } @drop_opts = split(/,/, join(",", @drop_opts)); extract_options(@drop_opts) if @drop_opts; my $common_opts = extract_options(@common_opts); my $hspell_opts = extract_options(@hspell_opts) . $common_opts; my $ispell_opts = "@ARGV" . $common_opts; $hspell_cmd .= " -a $hspell_opts"; $ispell_cmd .= " -a $ispell_opts"; load_spellers(); DBG("\n"); do_loop(); } # vim:ts=8:sts=4:sw=4: hspell-1.4/WHATSNEW0000644000076600007650000005274413123031437012051 0ustar nyhrlRelease 1.4 (June 24, 2017) * This month, the Academy of the Hebrew Language published a new version of their niqqud-less spelling standard, with some important changes from the old rules - mostly adding yod and waw in additional places. This version of Hspell will be the last one following the previous spelling standard. The next release will be named "2.0" and will follow the new spelling standard. * The niqqudless.odt document, which describes (in Hebrew) Hspell's spelling standard, is finally complete at 110 pages. There is still room for improvement and more content to expect in the next releases, but the current document no longer has any major holes, and discusses the majority of spelling issues that we've encountered while developing Hspell. * Vocabulary: 469,509 words (when built with "--enable-fatverb") based on 24534 base words: 12929 nouns, 3897 adjectives, 5269 verb stems, and 2439 other words. Release 1.3 (February 25, 2015) * Some spelling inaccuracies fixed, and 400 base words added. * Continued to improve the niqqudless.odt document, which describes (in Hebrew) Hspell's spelling standard. The document is still a draft, but is already over 100 pages, discusses the majority of spelling issues we've encountered while developing Hspell, and is a good place to turn to if you're not sure why Hspell expects you to spell a particular word in a particular way. * Vocabulary: 468,508 words (when built with "--enable-fatverb") based on 24495 base words: 12908 nouns, 3889 adjectives, 5261 verb stems, and 2437 other words. Release 1.2 (February 28, 2012) * Some incorrect words purged or fixed, and 600 base words added. * Continued to improve the niqqudless.odt document, which describes Hspell's spelling standard. The document is still incomplete, but is already over 80 pages long and may already explain spelling issues you've been pondering - so take a look! * Fixed bugs which could cause the "hspell" command to core-dump on some words with a lot of apostrophes (because they were confused with gimatria), and hspell_trycorrect() to core-dump on an empty word. * Fixed a bug which caused us to accept a definite article on verbs with objects, e.g., הכובשן. * The "myspell" target was removed, as this format has been all but abandoned in recent years. Use "make hunspell" instead. * The "hunspell" target used to use a utility called "doubleaffixcompress" to make the dictionary smaller. This utility is in fact broken, and is no longer used in this release - resulting in bigger, but more correct hunspell-format dictionaries. * In previous releases, generated hunspell and aspell dictionaries incorrectly accepted bare infinitive verbs, e.g., ישון. This is fixed in this release for hunspell dictionaries, using the hunspell-specific NEEDAFFIX feature. Unfortunately, aspell does not have this feature, so the aspell dictionary still has this bug. Added a "make test" to test this bug. * The "--enable-aspell" configure parameter was removed - use "make aspell" instead. Also added a "make he.rws" target to build he.rws from he.wl. See the INSTALL file for more information about building Hebrew dictionaries for various multilingual spell-checkers. * Added new "--enable-shared" configure parameter to build a shared library libhspell.so, which would be used when compiling the "hspell" tool. * Vocabulary: 464,725 words (when built with "--enable-fatverb") based on 24082 base words: 12718 nouns, 3786 adjectives, 5244 verb stems, and 2334 other words. ----------------------------------------------------------------------------- Release 1.1 (December 31, 2009) * Some incorrect words purged or fixed, and 900 base words added. * This release introduces a new a document (in Hebrew), niqqudless.odt, which explains in detail Hspell's spelling standard, and why Hspell spells some words the way it does. If you ever wondered whether (or why) Hspell's spelling is justified, this is the document for you. This first release is still far from explaining all of the spelling questions that we have encountered while developing Hspell, so be on the lookout for newer releases of this document on Hspell's website. On the website, you can also find the same document in alternative formats, such as PDF; The source package contains only the source of the document, in OpenOffice format. * Fixed some makefile errors, and modernized some makefile targets. * The myspell dictionary created by "make myspell" now uses a different encoding, and as result loads as much as 10 times faster in the "hunspell" multilingual spell-checker. Also added a new makefile target "hunspell", which generates a dictionary especially for hunspell, which is smaller and uses less memory than the myspell dictionary. * Vocabulary: 461,326 words (when built with "--enable-fatverb") based on 23486 base words: 12445 nouns, 3583 adjectives, 5242 verb stems, and 2216 other words ----------------------------------------------------------------------------- Release 1.0 (May 16, 2006): * Some incorrect words purged or fixed, and many more words added: 1,500 base words added. * Fixed small bugs in the generation of dictionaries in the aspell format (for aspell) and myspell format (for Mozilla and OpenOffice), and made these files somewhat smaller. * New "hebeng" make target, which generates an xpi file like the "mozilla" target, but instead of taking only the Hebrew word list, it merges it with another English word list. This can allow mixed Hebrew-English spell-checking in Mozilla. * When Hspell was given Hebrew words with niqqud (in the cp1255 encoding) it used to incorrectly split them on the niqqud characters. Now it collects the entire word, with its niqqud, and by default considers it to be an error (as Hspell cannot check its correctness). To accept this voweled word as correct, you can add it to your personal dictionary. * Hspell is part of Fedora Extras and is available in places such as http://download.fedora.redhat.com/pub/fedora/linux/extras/4/SRPMS/. To save the pain of maintaining two RPM packages, the hspell.spec file was removed form the tarball. * A new "-vv" option prints some information on optional Hspell features enabled at compile time. It can be used, for example, to check if morphological analysis has been enabled, by checking hspell -vv | grep -q LINGINFO * Small bug fixes and manual page improvements. * Vocabulary: 455,043 words (when built with "--enable-fatverb") based on 22589 base words: 11724 nouns, 3297 adjectives, 5223 verb stems, and 2345 other words ----------------------------------------------------------------------------- Release 0.9 (January 13, 2005): * Some incorrect words purged or fixed, and many more words added: almost 2,500 base words added. * Continued the effort to export Hspell's dictionary (word list and valid prefix information) to formats used by other spell-checking frameworks. The "aspell" make target finally works correctly, and was used to generate a Hebrew dictionary for Aspell 0.6 (ftp://ftp.gnu.org/gnu/aspell/dict/he/). A new "myspell" target generates a dictionary in Myspell format, suitable for use in OpenOffice and Mozilla. The "mozilla" target prepares an xpi package for Mozilla out of that dictionary. * C API improvements: New hspell_set_dictionary_path() function to tell Hspell where its dictionaries were installed. Fixed bug on UTF8 locales and removed spurious printouts. * "Hspell -a" (ispell-like pipe API) improvements: words can now be added to personal dictionary. This means that the "Add word" in KDE, LyX, and other Hspell-using applications will finally work. * Fixed errors in the morphological analyzer ("-l" option, when built with --enable-linginfo). Also, now if the "-l" and "-c" options are given together to hspell, morphological analysis is given also for correction suggestions, and those are given even for words which are already correct. * Fixed many other bugs. Check out http://ivrix.org.il/bugzilla/. * Vocabulary: 445,081 words (when built with "--enable-fatverb") based on 21087 base words: 10728 nouns, 3008 adjectives, 5207 verb stems, and 2144 other words ----------------------------------------------------------------------------- Release 0.8 (June 21, 2004): * Some incorrect words purged or fixed, and many more words added: almost 2,000 base words added. * Reorganized and simplified directory structure of source distribution, and added "autoconf" configuration (use "configure" before "make"). See "configure --help" for a list of build-time options, such as to enable more verb forms and to enable a morphological analyzer for the "-l" option. See the INSTALL file for more instructions. The old Perl "hspell.pl", deprecated in release 0.6, is now gone. * If available, use zlib instead of an external gzip process to read the compressed dictionaries. On our tests, this reduced startup time 2-6 fold. It also allows the Hspell API to be used on systens where pipes or gzip are not available, but zlib is (namely, Windows). * Improved Hspell's C api. There is a new function hspell_uninit() for reclaiming memory allocated by hspell_init(), and all exit() calls were purged from the Library (printouts are still there, unfortunately). NOTE: Because Hspell now uses zlib (see above), when using the libhspell.a library you must now also link with the zlib (-lz) library. This is especially important to remember when looking for libhspell in your own configure scripts. * Fixed a few bugs: in morphological analyzer, handling of files without a newline, and more. * It is now possible to use Hspell's Hebrew word list (and valid prefix information) in the upcoming versions of the Aspell spell-checker. A new build option, "configure --enable-aspell", creates the two files "he.cwl" and "he_affix.dat" which can then be used to build Aspell's Hebrew dictionary. We would like to thank Kevin Atkinson and Kevin Patrick Scannell for their efforts in fixing Aspell's affix support, and making Aspell a viable multi-lingual spell-checker. * Vocabulary: 425,709 words (when including kinuyim on verbs) based on 8935 nouns, 2181 adjectives, 5192 verb stems, and 2289 other words ----------------------------------------------------------------------------- Release 0.7 (December 22, 2003): * Some incorrect words purged or fixed, and many more words added: over 1,000 base words added. * Portability improvements (thanks to Baruch Even). * New run-time option -H causes hspell to accept He Ha-she'ela in the text. * The "-n" option (for spelling hints, an explanation of certain kinds of errors) that was lost in version 0.6, is now back. The "likelyerrors" feature is still missing in this version. * A new, and somewhat tentative, Documented C API (libhspell.a library, spell.h header, hspell.3 manual). This are not available in the normal RPM - compile the sources yourself if you want them. * A full morphological analyzer (explaining all the possible ways to read a given word, how each reading was derived and its syntactic properties) is now available when Hspell is run with the "-l" option. Because the data files needed for this feature currently take up as much as 4 times the space needed only for spell-checking, and because the collection and sorting of linguistic information makes the compilation takes much longer, this feature is not compiled by default, unless compilation is done with "make linginfo". Also, the normal RPM does not include this feature, but the "fat" RPM does include it. An innovative parade of hash symbols now appears on screen to the benefit of the bored builder :) * Vocabulary: 406,629 words (when including kinuyim on verbs) based on 8042 nouns, 1783 adjectives, 5113 verb stems, and 1880 other words ----------------------------------------------------------------------------- Release 0.6 (August 5, 2003): In this release, the Hspell front-end (the hspell program) was rewritten. The new front-end has many improvements over the old one, but also a few setbacks - features that are (temporarily) unavailable because they weren't yet ported to the new version. The improvements: * A huge performance improvement - hspell now starts up, and runs, at least 20 times faster than it used to and takes less than one fifth the memory. * The new front-end is written in C, so Hspell can now run on systems which do not have Perl. Perl is still needed for building Hspell from source. * The list of allowed prefixes was improved (joined work with Shlomo Yona) and hspell now finally knows which prefixes are valid for most words, reducing the risk of accepting misspellings as correct and reducing the number of silly (and wrong) correction suggestions. Note that unlike earlier versions, words listed in the user's personal dictionary (~/.hspell_words or ./hspell_words) are no longer automatically accepted with prefixes. Also, these words are never used as suggested corrections. * "hspell -a" was made more compatible with the standard "ispell -a" (thanks to Mooffie). Hspell is now known to be used with LyX, KDE, Geresh and Emacs. The setbacks: * The "-v" option, that used to explain how valid words were derived, is no longer available in this version. It is replaced by a "-l" option, which in this release is weaker (it can only show a division of valid words into prefix particle + word). * The "-n" option, that used to give hints on how to spell correctly, is not available. * The "likelyerrors" feature (or recognizing certain words as theoretically correct but still very likely to be mistakes) is not available. * TeX-like repeated single quote ('') is not treated as double quotes ("). * Long options (GNU's "minus-minus" options) are not supported in this version. Some other changes: * Included in the distribution is a new utility "multispell" by Mooffie, which can spell-check mixed Hebrew-English text by interfacing with two spell-checkers (hspell and ispell) simultaneously. Multispell is better than hspell's built-in slave mode (hspell -a -i) when the calling program can't deal with wrong word order in the results (e.g., Emacs has this issue.) * Some incorrect words purged or fixed, and more words added: over 600 base words added. * Vocabulary: 394,833 words (when including kinuyim on verbs) based on 7462 nouns, 1533 adjectives, 5060 verb stems, and 1819 other words ----------------------------------------------------------------------------- Release 0.5: (May 8, 2003) * Some incorrect words purged or fixed, and many more words added: about 2,000 base words added. * Objective Kinuim are now allowed on all forms of verbs. Because this adds as many as 150,000 correct but rarely-used (in modern texts) inflections, a compile-time option is present for enabling or disabling these forms. The default in this version is *not* to enable them, but this may be changed in the future. Also, precompiled RPMs of both types are available (thanks to Tzafrir Cohen). In order to build the source rpm you must --define in the command-line either 'fat 0' or 'fat 1'. Can anyone tell me how can I set a default for that? * Infinitives now allow בכלמ prefixes, not just ל: לשבור, בשבור, כשבור, משבור. * Added a "-d" option to the word-list generators, which prints derivation explanation for all inflections, and also gender information for all nouns. This feature is not presently used for spell-checking. * Bug fixes: B-words were ignored unless "-v" was used; gimatria checking failed to recognize numbers ending in 17-19; * fixed "ispell -a"'s handling of "^..." lines that prevented Hspell from working properly with KDE (thanks to Meni Livne). * Vocabulary: 390,846 words (when including kinuyim on verbs) based on 7125 nouns, 1484 adjectives, 4801 verb stems, and 1799 other words ----------------------------------------------------------------------------- Release 0.4: (March 10, 2003) * Some incorrect words purged or fixed, and many more words added: over 2,300 base words and 60,000 inflections. Thanks to Orna Agmon for reporting some of the missing words. * Complete overhaul of the hspell homepage (http://www.ivrix.org.il/projects/spell-checker/). Also, the site now features signed RPMs, and the spec used to make them is included in the source distribution. The current binary RPM includes the dictionary compressed with a special algorithm, making it, and the final installation, very small (as little as 100K), at the expense of the "-v" option not working. Thanks to Tzafrir Cohen and Oron Peled for the initial version of the spec. * Shem Poal Natuy + Kinuy for all verbs, things like: ותבשב ,יננטצהב There is probably an error in the conjugation of these Shmot Poal from Binyan Qal. woo creates בזוכרנו, while the strict rules say it should be בזכרנו. This would be settled by the next release. * Added "-i" option, to be used in addition to "-a" from within other programs (e.g. LyX) to allow spell-checking of mixed English-Hebrew text by using ispell for the English words. The new program "hspell-i" runs hspell with the -i option, so it can be used in (for example) LyX as the spellchecker. (thanks to Alon Altman) * Long options, and new --help and --version options. (thanks to Tzafrir Cohen) * Vocabulary: 250,027 words based on 6238 nouns, 1174 adjectives, 4584 verb stems, and 1291 other words ----------------------------------------------------------------------------- Release 0.3: (February 2, 2003) * Some incorrect words purged or fixed, and many more words added: over 1,000 base words and 20,000 inflections. In this release, emphasis has been put on adding Hebrew nouns and adjectives. * Fixed Makefile behavior in certain case. In particular "make" should work regardless of LC_* environment variables. However, as hspell currently works on iso8859-8 encoded files, users with a utf8 locale must run the "hspell" perl program as "LC_ALL=C hspell" (otherwise, they will see error messages from Perl). * Added ispell-like "-a" option, for interfacing with LyX. If you want to use hspell under LyX you should use Hebrew-enabled LyX (version 1.1.6fix4 is known to work). Add the following line to your .lyx/lyxrc file: \spell_command hspell Notice that this prevents using English ispell/aspell from within LyX. If you know of a better configuration, please tell us. Notice that if a Hebrew misspelled word is found, it is shown reversed on LyX's spellchecker (and so are its corrections). This is about to be corrected in future releases of LyX. Also, LyX breaks Hebrew acronyms wrongly, and causes hspell to reject them. Read http://www.math.tau.ac.il/~dekelts/lyx/instructions2.html for Hebrew LyX general instructions. * No longer incorrectly recognize שלווום (should be שלוום, "that to their hook"). * The wolig.pl automatic inflector can handle country names, and many more country names and nationalities have been added. Note that since I did not find a source for "official" country-name spellings in Hebrew, our list might contain errors. Please tell us if you know a dictionary or other authoritative document which contains the official Hebrew spellings of country names. * Vocabulary: 189,347 words based on 5238 nouns, 927 adjectives, 3568 verb stems, and 1203 other words ----------------------------------------------------------------------------- Release 0.2: (January 5, 2003) * Many more nouns, verbs, and other words: around 2500 new base words, and 40,000 inflections. Emphasis has been given to adding *common* words that will appear in typical, modern, documents. * Several incorrect words purged or fixed. * Wolig.pl (noun inflector) overhaul to better and more consistently handle niqqud-less (ktiv male) spelling rules, and to be able to theoretically handle at least 99.9% of the Hebrew nouns (of course, we don't have all of them in the dictionary, yet :)). * -n option to hspell program, which gives longer (human-written) explanations on certain spelling errors - especially common niqqud-less spelling errors. * Read additional accepted words from ~/.hspell_words and/or ./hspell_words * Kinuim Khavurim (possesive suffixes) are recognized on the infinitive forms of the verb. * Added manual page, hspell(1) * Improved Makefile (thanks to Oron Peled) and made other changes to the distribution (thanks to Baruch Even) for more easily building binary packages of hspell. * Vocabulary: 169,266 words based on 4505 nouns, 645 adjectives, 3407 verb stems, and 1237 other words ----------------------------------------------------------------------------- Release 0.1: (first public release - December 13, 2002) * Vocabulary: 125,022 words based on 3206 nouns, 452 adjectives, 2712 verb stems, and 980 other words * In this release we would like to thank Uwe Brauer and Michael Lugassy for "convincing" us to start and to advance this project when we were almost ready to give up. See more acknowledgments in the README file. hspell-1.4/linginfo.c0000644000076600007650000002022211722236623012630 0ustar nyhrl/* Copyright (C) 2003-2004 Nadav Har'El and Dan Kenigsberg */ #include #include #include #include "linginfo.h" #include "dmask.c" /* For an explanation of this bizarre set of definitions, see the comment in dict_radix.c, before a similar set. */ #ifdef HAVE_ZLIB #define BUFFERED_ZLIB #undef FILE #undef pclose #undef pclose #undef getc #ifdef BUFFERED_ZLIB #include "gzbuffered.h" #undef gzopen #undef gzdopen #define FILE void /* void* can be either normal FILE* or gzbFile*. Eek. */ #define popen(path,mode) gzb_open(path,mode) #define gzopen(path,mode) gzb_open(path,mode) #define gzdopen(path,mode) gzb_dopen(path,mode) #define pclose(f) (gzb_close((gzbFile *)(f))) #define getc(f) (gzb_getc(((gzbFile *)(f)))) #define fgets(s,n,f) (gzb_gets((s),(n),((gzbFile *)(f)))) #else #include #define FILE void /* FILE* is void*, a.k.a. voidp or gzFile */ #define pclose(f) (gzclose((f))) #define popen(path,mode) (gzopen((path),(mode))) #define getc(f) (gzgetc((f))) #define fgets(s,n,f) (gzgets((s),(n),(f))) #endif #undef fgetc #define fgetc(f) getc(f) #endif /* HAVE_ZLIB */ static char *flat, **lookup; static int lookuplen; extern int hspell_debug; static int dcode2dmask(const char *dcode) { int i = dcode[0]-'A'+(dcode[1]-'A')*26; return dmasks[i]; } static char *dmask2text(char *s, int dmask) { char *c; s[0]=0; switch(dmask & D_TYPEMASK) { case D_NOUN: c="ע"; break; case D_VERB: c="פ"; break; case D_ADJ: c="ת"; break; case 0: c="x"; break; default: c=""; } strcat(s,c); /* In few cases, both masculine and faminine are possible */ if(dmask & D_GENDERMASK & D_MASCULINE) { strcat(s,",ז"); } if(dmask & D_GENDERMASK & D_FEMININE) { strcat(s,",נ"); } switch(dmask & D_GUFMASK) { case D_FIRST: c=",1"; break; case D_SECOND: c=",2"; break; case D_THIRD: c=",3"; break; default: c=""; } strcat(s,c); switch(dmask & D_NUMMASK) { case D_SINGULAR: c=",יחיד"; break; case D_DOUBLE: c=",זוגי"; break; case D_PLURAL: c=",רבים"; break; default: c=""; } strcat(s,c); switch(dmask & D_TENSEMASK) { case D_PAST: c=",עבר"; break; case D_PRESENT: c=",הווה"; break; case D_FUTURE: c=",עתיד"; break; case D_IMPERATIVE: c=",ציווי"; break; case D_INFINITIVE: c=",מקור"; break; case D_BINFINITIVE: c=",מקור,ב"; break; default: c=""; } strcat(s,c); if (dmask & D_SPECNOUN) {strcat(s,",פרטי");} if (dmask & D_OSMICHUT) {strcat(s,",סמיכות");} if (dmask & D_OMASK) { strcat(s,",כינוי/"); switch(dmask & D_OGENDERMASK) { case D_OMASCULINE: c="ז"; break; case D_OFEMININE: c="נ"; break; default: c=""; } strcat(s,c); switch(dmask & D_OGUFMASK) { case D_OFIRST: c=",1"; break; case D_OSECOND: c=",2"; break; case D_OTHIRD: c=",3"; break; default: c=""; } strcat(s,c); switch(dmask & D_ONUMMASK) { case D_OSINGULAR: c=",יחיד"; break; case D_ODOUBLE: c=",זוגי"; break; case D_OPLURAL: c=",רבים"; break; default: c=""; } strcat(s,c); } return s; } char *linginfo_desc2text(char *text, const char *desc, int i) { int dmask; if (desc[i*2]==0) return 0; dmask = dcode2dmask(&desc[i*2]); dmask2text(text,dmask); return text; } /* find the prefixes required by a word according to its details */ static int linginfo_dmask2ps(int dmask) { int specifier; if ((dmask&D_TYPEMASK)==D_VERB) { if ((dmask&D_TENSEMASK)==D_IMPERATIVE) { specifier = PS_IMPER; } else if ((dmask&D_TENSEMASK)!=D_PRESENT) { specifier = PS_VERB; } else if (dmask & D_OSMICHUT || dmask & D_OMASK) { specifier = PS_NONDEF; } else specifier = PS_ALL; /* TODO I feel that this may lead to a bug with ליפול and other infinitives that * did not loose their initial lamed. I should correct this all the way from * woo.pl */ if ((dmask&D_TENSEMASK)==D_INFINITIVE) specifier = PS_L; else if ((dmask&D_TENSEMASK)==D_BINFINITIVE) specifier = PS_B; } else if (((dmask&D_TYPEMASK)==D_NOUN) || ((dmask&D_TYPEMASK) == D_ADJ)) { if (dmask & D_OSMICHUT || dmask & D_OMASK || dmask & D_SPECNOUN) { specifier = PS_NONDEF; } else { specifier = PS_ALL; } } else specifier = PS_ALL; return specifier; } int linginfo_desc2ps(const char *desc, int i) { int dmask; if (desc[i*2]==0) return 0; dmask = dcode2dmask(&desc[i*2]); return linginfo_dmask2ps(dmask); } char *linginfo_stem2text(const char *stem, int i) { int wp; if (stem[i*3]==0) return 0; wp = stem[i*3]-33+(stem[i*3+1]-33)*94+ (stem[i*3+2]-33)*94*94; return lookup[wp]; } /* currently linginfo_init reopens the words file, reinterprets it, and stores * it flat in memory. If it sounds silly to you, you probably can hear. */ int linginfo_init(const char *dir) { FILE *fp,*fpstems,*fpdesc; char *current; char s[1024],stem[100],desc[100]; int i=0,j; int flatsize; snprintf(s,sizeof(s),"%s.sizes",dir); if(!(fp=fopen(s,"r"))){ fprintf(stderr,"Hspell: can't open %s.\n",s); return 0; } fscanf(fp,"%*d %*d %*d"); /* ignore non linginfo sizes */ if(fscanf(fp,"%d %d",&flatsize,&lookuplen)!=2){ fprintf(stderr,"Hspell: can't read from %s.\n",s); return 0; } fclose(fp); current = flat = (char *)malloc(flatsize); lookup = (char **)malloc(sizeof(char *)*lookuplen); if (!current || !lookup) { fprintf (stderr, "Hspell: alloc failed\n"); return 0; } /* read dictionary into memory */ /* TODO: have better quoting for filename, or use zlib directly */ #ifdef HAVE_ZLIB snprintf(s,sizeof(s),"%s",dir); #else snprintf(s,sizeof(s),"gzip -dc '%s'",dir); #endif if(!(fp=popen(s,"r"))){ fprintf(stderr,"Hspell: can't open %s.\n",s); return 0; } #ifdef HAVE_ZLIB snprintf(s,sizeof(s),"%s.stems",dir); #else snprintf(s,sizeof(s),"gzip -dc '%s.stems'",dir); #endif if(!(fpstems=popen(s,"r"))){ fprintf(stderr,"Hspell: can't open %s.\n",s); pclose(fp); return 0; } #ifdef HAVE_ZLIB snprintf(s,sizeof(s),"%s.desc",dir); #else snprintf(s,sizeof(s),"gzip -dc '%s.desc'",dir); #endif if(!(fpdesc=popen(s,"r"))){ fprintf(stderr,"Hspell: can't open %s.\n",s); pclose(fp); pclose(fpstems); return 0; } /* The following code for reading wunzip'ed word list is copied from * wunzip.c and repeats what was done dict_radix.c's do_read_dict(). It * would be much nicer to read the word list only once. */ { char sbuf[256]; int slen=0; int c,n; while(1){ c=fgetc(fp); if((c>='0' && c<='9') || c==EOF){ /* new word - output old word first */ sbuf[slen]='\0'; lookup[i++] = current; for(j=0; j<=slen; j++) current++[0]=sbuf[j]; if (!fgets(stem,sizeof(stem),fpstems)) { fprintf(stderr, "Hspell: linginfo: unexpected end of file in stems file\n"); return 0; } if (!fgets(desc,sizeof(desc),fpdesc)) { fprintf(stderr, "Hspell: linginfo: unexpected end of file in description file\n"); return 0; } for (j=0; desc[j]!='\n' && desc[j]!=0; j++) { current++[0]=desc[j]; } current++[0]=0; for (j=0; stem[j]!='\n' && stem[j]!=0; j++) { current++[0]=stem[j]; } current++[0]=0; if (c==EOF) break; /* and read how much to go back */ n=0; do { /* base 10... */ n*=10; n+=(c-'0'); } while ((c=fgetc(fp))!=EOF && c>='0' && c<='9'); slen-=n; if(slen<0 || slen >= sizeof(sbuf)-1){ fprintf(stderr,"Hspell: bad backlength %d... giving up.\n", slen); return 0; } /* we got a new letter c - continue the loop */ } /* word letter - add it */ if(slen>=sizeof(sbuf)-1){ fprintf(stderr,"Hspell: word too long... giving up.\n"); return 0; } sbuf[slen++]=c; } } pclose(fp); pclose(fpstems); pclose(fpdesc); if (hspell_debug) { fprintf (stderr, "linginfo: finished reading %d words and stems\n",i); } return 1; } int linginfo_lookup(const char *word, char **desc, char **stem) { int res,i=0,bottom=0,top=lookuplen; while (top>=bottom) { if (i==(top-bottom)/2 + bottom) { return 0; } i=(top-bottom)/2 + bottom; if (hspell_debug) fprintf(stderr,"bot=%d i=%d top=%d) %s\n",bottom,i,top, lookup[i]); res = strcmp(lookup[i],word); if (res>0) {top=i;} else if (res<0) {bottom=i;} else { int len,desclen; len = strlen(lookup[i]); *desc = lookup[i]+len+1; desclen = strlen(*desc); *stem = *desc+desclen+1; return 1; } } return 0; } int linginfo_free(void) { if (lookup) { free(lookup); free(flat); } return 1; } hspell-1.4/README0000644000076600007650000001606013123546340011541 0ustar nyhrlThis is version 1.4 of Hspell, the free Hebrew spellchecker and morphology engine. You can get Hspell from: http://hspell.ivrix.org.il/ Hspell was written by Nadav Har'El and Dan Kenigsberg: nyh @ math.technion.ac.il danken @ cs.technion.ac.il Hspell is free software, released under the GNU Affero General Public License (AGPL) version 3. Note that not only the programs in the distribution, but also the dictionary files and the generated word lists, are licensed under the AGPL. There is no warranty of any kind for the contents of this distribution. See the LICENSE file for more information and the exact license terms. The rest of this README file explains Hspell's spelling standard (niqqud-less), a bit about the technology behind Hspell, how to use the "hspell" program (but see the manual page for more current information), and lists a few future directions. See the separate INSTALL file for instructions on how to install Hspell. About Hspell's spelling standard -------------------------------- Hspell was designed to be 100% and strictly compliant with the official niqqud-less spelling rules ("Ha-ktiv Khasar Ha-niqqud", colloquially known as "Ktiv Male", or "plene spelling" in English), published by the Academy of the Hebrew Language. This is both an advantage and a disadvantage, depending on your viewpoint. It's an advantage because it encourages a *correct* and consistent spelling style throughout your writing. It is a disadvantage, because a few of the Academia's official spelling decisions are relatively unknown to the general public. Users of Hspell (and all Hebrew writers, for that matter) are encouraged to read the Academia's official niqqud-less spelling rules (which are printed at the end of most modern Hebrew dictionaries), and to refer to Hebrew dictionaries which use the niqqud-less spelling (such as Millon Ha-hove or Rav Milim). We also provide in docs/niqqudless.odt a document (in Hebrew) which describes in detail Hspell's spelling standard, and why certain words are spelled the way they are. The technology behind Hspell ---------------------------- The "hspell" program itself is mostly a simple (but efficient) program that checks input words against a long list of valid words. The real "brains" behind it are the word lists (lexicon) provided by the Hspell project. In order for it to be completely free of other people's copyright restrictions, the Hspell project is a clean-room implementation, not based on other companies' word lists, on other companies' spell checkers, or on copying of printed dictionaries. The word list is also not based on automatic scanning of available Hebrew documents (such as online newspapers), because there is no way to guarantee that such a list will be correct, complete, or consistent with regard to spelling rules. Instead, our idea was to write programs which know how to correctly inflect Hebrew nouns and conjugate Hebrew verbs. The inputs to these programs are lists of noun stems and of verb roots, plus hints needed for the correct inflection when these cannot be figured out automatically. These input files are obviously an important part of the Hspell project. The "word list generators" (written in Perl, and are also part of the Hspell project) then create the complete word-list for use by the spellchecking program, hspell. The generated lists are useful for much more than spellchecking, by the way - see more on that below ("the future"). Although we wrote all of Hspell's code ourselves, we are truly indebted to the old-style "open source" pioneers - people who wrote books about the knowledge they developed, instead of hiding it in proprietary software. For the correct noun inflections, Dr. Shaul Barkali's "The Complete Noun Book" has been a great help. Prof. Uzzi Ornan's booklet "Verb Conjugation in Flow Charts" has been instrumental in the implementation of verb conjugation, and Barkali's "The Complete Verb Book" was used too. During our work we have extensively used a number of Hebrew dictionaries, including Even Shoshan, Millon Ha-hove and Rav-Milim, to ensure the correctness of certain words. Various Hebrew newspapers and books, both printed and online, were used for inspiration and for finding words we still do not recognize. We wish to thank Cilla Tuviana and Dr. Zvi Har'El for their assistance with some grammatical questions. Using hspell ------------ After unpacking the distribution and running "configure", "make" and "make install" (see the INSTALL file for more information), the hspell executable is installed (by default) in /usr/local/bin, and the dictionary files are in /usr/local/share/hspell. The "hspell" program can be used on any sort of text file containing Hebrew and potentially non-Hebrew characters which it ignores. For example, it works well on Hebrew text files, TeX/LaTeX files, and HTML. Running hspell filename Will check the spelling in filename and will output the list of incorrect words (just like the old-fashioned UNIX "spell" program did). If run without a file parameter, hspell reads from its standard input. In the current release, hspell expects ISO-8859-8-encoded files. If files using a different encoding (e.g., UTF8) are to be checked, they must be converted first to ISO-8859-8 (e.g., see iconv(1), recode(1)). If the "-c" option is given, hspell will suggest corrections for misspelled words, whenever it can find such corrections. The correction mechanism in this release is especially good at finding corrections for incorrect niqqud-less spellings, with missing or extra 'immot-qri'a. The "-l" (verbose) option will explain for each correct word why it was recognized, if Hspell was built with the "linginfo" optional feature enabled (a morphological analysis is shown, i.e., fully describe all possible ways to read the given word as an inflected word with optional prefixes). Because hspell's output (naturally) is "logical-order", it is normally useful to pipe it to bidiv or rev before viewing. For example hspell -c filename | bidiv | less Another convenient alternative is to run hspell on a BiDi-enabled terminal. Instead of using the hspell program described above, users can also use Hspell's lexicon through one of the popular multi-lingual spell-checkers, aspell and hunspell. See the INSTALL file for more information on building these dictionaries. How *you* can help ------------------ By now, Hspell is fairly mature, and its lexicon of over 24,000 base words is fairly comprehensive, similar in breadth to some printed dictionaries. Careful attention has also been given to its accuracy, and its conformance with the spelling rules of the Academy of the Hebrew Language. Nevertheless, Hspell does not, and probably never will, cover all of modern Hebrew language. Also, undoubtedly, it may contain some errors as well. If you find such omissions or errors, please let us know. Before reporting such omissions or errors, please try to verify that the word you are proposing is indeed correctly spelled: Please refer to modern dictionaries. Please also look at doc/niqqudless.odt - the word you are proposing might actually be a known mispelling which we discuss in that document. hspell-1.4/hspell.c0000644000076600007650000005212313123032416012306 0ustar nyhrl/* Copyright (C) 2003-2017 Nadav Har'El and Dan Kenigsberg */ #include #include #include #include #include #include #include "hash.h" #include "hspell.h" #ifdef USE_LINGINFO #include "linginfo.h" #endif /* load_personal_dict tries to load ~/.hspell_words and ./hspell_words. Currently, they are read into a hash table, where each word in the file gets a non-zero value. Empty lines starting with # are ignored. Lines containing non-Hebrew characters aren't ignored, but they won't be tried as questioned words anyway. If a non-null int pointer is given as a second parameter, the pointed value is set to 1 if a personal dictionary was found in the current directory, or to 0 otherwise (it was found in the user's home directory, or none was found). This knowledge is useful when a modified personal wordlist is to be saved, and we want to know if to save it in the current directory, or home directory. */ static void load_personal_dict(hspell_hash *personaldict, int *currentdir_dictfile) { int i; hspell_hash_init(personaldict); if (currentdir_dictfile) *currentdir_dictfile = 0; for(i=0; i<=1; i++){ char buf[512]; FILE *fp; if(i==0){ char *home = getenv("HOME"); if(!home) continue; snprintf(buf, sizeof(buf), "%s/.hspell_words", home); } else snprintf(buf, sizeof(buf), "./hspell_words"); fp=fopen(buf, "r"); if(!fp) continue; if (i == 1 && currentdir_dictfile) *currentdir_dictfile = 1; while(fgets(buf, sizeof(buf), fp)){ int l=strlen(buf); if(buf[l-1]=='\n') buf[l-1]='\0'; if(buf[0]!='#' && buf[0]!='\0') hspell_hash_incr_int(personaldict, buf); } fclose(fp); } } /* save_personal_dict() saves the personal dictionary to disk. It does this by appending the words in personaldict_new_words to the dictionary file (the one in the current directory, if that had been read, otherwise the one in the home directory).. Returns non-zero on success. */ static int save_personal_dict(hspell_hash *personaldict, hspell_hash *personaldict_new_words, int currentdir_dictfile) { FILE *fp; hspell_hash_keyvalue *new_words_array; int new_words_number, i; char dict_filename[512]; char *home = getenv("HOME"); if (currentdir_dictfile || !home) snprintf(dict_filename, sizeof(dict_filename), "./hspell_words"); else snprintf(dict_filename, sizeof(dict_filename), "%s/.hspell_words", home); fp = fopen(dict_filename, "a"); if (!fp) return 0; /* signal error */ /* We append the new words to the file. We also move them from personaldict_new_words to personaldict so that subsequent calls to this function won't write them again and again. */ /* NOTE: currently, we assume that the personal dictionary we originally read, or last wrote, is the current state of the user's personal dictionary file. This may be wrong if several hspell processes are running concurrently and adding words or the user has been manually editing the file while hspell is running. It might be safer, perhaps, to load the personal dictionary again to see its really current state? In any case, the current behavior isn't likely to cause any serious problems, just the occasional words listed more than once, perhaps. */ new_words_array = hspell_hash_build_keyvalue_array( personaldict_new_words, &new_words_number); if (hspell_debug) { fprintf(stderr, "Saving %d words to %s\n", new_words_number, dict_filename); } for (i = 0; i < new_words_number; i++) { fprintf(fp, "%s\n", new_words_array[i].key); hspell_hash_incr_int(personaldict, new_words_array[i].key); } hspell_hash_free_keyvalue_array(personaldict_new_words, new_words_number, new_words_array); hspell_hash_destroy(personaldict_new_words); hspell_hash_init(personaldict_new_words); return (fclose(fp) == 0); } /* load_spelling_hints reads the spelling hints file (for the -n option). This is done in a somewhat ad-hoc manner. */ char *flathints; int flathints_size; void load_spelling_hints(hspell_hash *spellinghints) { FILE *fp; char s[1000]; int len=0; int thishint=0; hspell_hash_init(spellinghints); flathints_size = 8192; /* initialize size (will grow as necessary) */ flathints = (char *)malloc(flathints_size); /*flathints[0]=0;*/ snprintf(s,sizeof(s),"gzip -dc '%s.hints'", hspell_get_dictionary_path()); fp = popen(s, "r"); if(!fp) { fprintf(stderr,"Failed to open %s\n",s); return; } while(fgets(s, sizeof(s), fp)){ int l=strlen(s); if(s[0]=='+') { /* this is a textual description line */ if(!thishint){ thishint=len; } /* reallocate the array, if no room */ while(len+l >= flathints_size){ flathints_size *= 2; flathints= (char *) realloc(flathints,flathints_size); } /* replace the '+' character by a space (this was the way hints were printed in version 0.5, and wee keep it for backward compatibility */ s[0]=' '; /*strncpy(flathints+len, s, flathints_size-len);*/ strcpy(flathints+len, s); len += l; } else if(s[0]=='\n'){ /* no more words for this hint */ thishint = 0; len++; } else { /* another word for this hint */ s[l-1]=0; hspell_hash_set_int(spellinghints, s, thishint); } } pclose(fp); } /* used for sorting later: */ static int compare_key(const void *a, const void *b){ register hspell_hash_keyvalue *aa = (hspell_hash_keyvalue *)a; register hspell_hash_keyvalue *bb = (hspell_hash_keyvalue *)b; return strcmp(aa->key, bb->key); } static int compare_value_reverse(const void *a, const void *b){ register hspell_hash_keyvalue *aa = (hspell_hash_keyvalue *)a; register hspell_hash_keyvalue *bb = (hspell_hash_keyvalue *)b; if(aa->value < bb->value) return 1; else if(aa->value > bb->value) return -1; else return 0; } static FILE * next_file(int *argcp, char ***argvp) { FILE *ret=0; if(*argcp<=0) return 0; while(*argcp && !ret){ ret=fopen((*argvp)[0],"r"); if(!ret) perror((*argvp)[0]); (*argvp)++; (*argcp)--; } return ret; } #define VERSION_IDENTIFICATION ("@(#) International Ispell Version 3.1.20 " \ "(but really Hspell/C %d.%d%s)\n") /* ishebrew() checks for an intra-word Hebrew character. This includes the Hebrew alphabet and the niqqud characters. The 8-bit encoding that these characters may appear in is the "cp1255" encoding, Microsoft's extension to the iso-8859-8 standard (which did not contain niqqud). For the tables of these encodings, see http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1255.TXT http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-8.TXT */ #define isniqqud(c) ((unsigned char)(c)>= 0xC0 && (unsigned char)(c) <= 0xD2 \ && (unsigned char)(c)!=0xCE && (unsigned char)(c)!=0xD0) #define ishebrew(c) (((c)>=(int)(unsigned char)'א' && (c)<=(int)(unsigned char)'ת')||isniqqud(c)) static int uglyuglyflag = 0; int notify_split(const char *w, const char *baseword, int preflen, int prefspec) { #ifdef USE_LINGINFO char *desc,*stem; #endif if(preflen>0){ printf("צירוף חוקי: %.*s+%s\n", preflen, w, baseword); } else if (!preflen){ printf("מילה חוקית: %s\n",w); } #ifdef USE_LINGINFO if (linginfo_lookup(baseword,&desc,&stem)) { int j; for (j=0; ;j++) { char buf[80]; if (!linginfo_desc2text(buf, desc, j)) break; if (linginfo_desc2ps(desc, j) & prefspec) { printf("\t%s(%s%s)",linginfo_stem2text(stem,j),buf,uglyuglyflag ? ",##שגיאה##" : ""); if (hspell_debug) printf("\t%d",linginfo_desc2ps(desc, j)); printf("\n"); } } } #endif return 1; } int main(int argc, char *argv[]) { struct dict_radix *dict; #define MAXWORD 30 char word[MAXWORD+1], *w; int wordlen=0, offset=0, wordstart; int c; int res; FILE *slavefp; int terse_mode=0; hspell_hash wrongwords; int preflen; /* used by -l */ hspell_hash spellinghints; /* Following Ispell, we keep three lists of personal words to be accepted: "personaldict" is the user's on-disk personal dictionary, "personaldict_new_words" are words that the user asked to add to the personal dictionary but which we haven't saved to disk yet, and "sessiondict" are words that the user asked to accept during this session, but not add to the on-disk personal dictionary. */ hspell_hash personaldict; hspell_hash personaldict_new_words; hspell_hash sessiondict; int currentdir_dictfile = 0; /* file ./hspell_words exists? */ /* command line options */ char *progname=argv[0]; int interpipe=0; /* pipe interface (ispell -a like) */ int slave=0; /* there's a slave ispell process (-i option) */ int opt_s=0; /* -s option */ int opt_c=0; /* -c option */ int opt_l=0; /* -l option */ int opt_v=0; /* -v option (show version and quit) */ int opt_H=0; /* -H option (allow he ha-she'ela) */ int opt_n=0; /* -n option (provide spelling hints) */ /* TODO: when -a is not given, allow filename parameters, like the "spell" command does. */ FILE *in=stdin; /* Parse command-line options */ while((c=getopt(argc, argv, "clnsviad:BmVhT:CSPp:w:W:HD:"))!=EOF){ switch(c){ case 'a': interpipe=1; break; case 'i': slave=1; break; /* The following options do something on ispell or aspell, and some confused programs call hspell with them. We just ignore them silently, hoping that all's going to be well... */ case 'd': case 'B': case 'm': case 'T': case 'C': case 'S': case 'P': case 'p': case 'w': case 'W': /*fprintf(stderr, "Warning: ispell options -d, -B and " "-m are ignored by hspell.\n");*/ break; case 's': opt_s=1; break; case 'c': opt_c=1; break; case 'l': opt_l=1; break; case 'H': /* Allow "he ha-she'ela" */ opt_H=1; break; case 'n': opt_n=1; break; case 'v': opt_v++; break; case 'D': hspell_set_dictionary_path(optarg); break; case 'V': printf("Hspell %d.%d%s\nWritten by Nadav Har'El and " "Dan Kenigsberg.\n\nCopyright (C) 2000-2017 " "Nadav Har'El and Dan Kenigsberg.\nThis is " "free software, released under the GNU Affero General " "Public License\n(AGPL) version 3. See " "http://hspell.ivrix.org.il/ for " "more information.\n", HSPELL_VERSION_MAJOR, HSPELL_VERSION_MINOR, HSPELL_VERSION_EXTRA); return 0; case 'h': case '?': fprintf(stderr,"hspell - Hebrew spellchecker\n" "Usage: %s [-acinslVH] [file ...]\n\n" "See hspell(1) manual for a description of " "hspell and its options.\nRun hspell -V for " "hspell's version and copyright.\n", progname); return 1; } } argc -= optind; argv += optind; /* The -v option causes ispell to print its current version identification on the standard output and exit. If the switch is doubled, ispell will also print the options that it was compiled with. */ if(opt_v){ printf(VERSION_IDENTIFICATION, HSPELL_VERSION_MAJOR, HSPELL_VERSION_MINOR, HSPELL_VERSION_EXTRA); if (opt_v > 1) { printf("Compiled-in options:\n"); printf("\tDICTFILE = \"%s\"\n", hspell_get_dictionary_path()); #ifdef USE_LINGINFO printf("\tLINGINFO\n"); #endif } return 0; } /* If the program name ends with "-i", we enable the -i option. This ugly hack is useful when a certain application can be given a different spell-checker, but not extra options to pass to it */ if(strlen(progname)>=2 && progname[strlen(progname)-2] == '-' && progname[strlen(progname)-1] == 'i'){ slave=interpipe=1; } if(interpipe){ /* for ispell -a like behavior, we want to flush every line: */ setlinebuf(stdout); } else { /* No "-a" option: UNIX spell-like mode: */ /* Set up hash-table for remembering the wrong words seen */ hspell_hash_init(&wrongwords); /* If we have any more arguments, treat them as files to spellcheck. Otherwise, just use stdin as set above. */ if(argc){ in=next_file(&argc, &argv); if(!in) return 1; /* nothing to do, really... */ } } if(hspell_init(&dict, (opt_H ? HSPELL_OPT_HE_SHEELA : 0) | (opt_l ? HSPELL_OPT_LINGUISTICS : 0))<0){ fprintf(stderr,"Sorry, could not read dictionary. Hspell " "was probably installed improperly.\n"); return 1; } load_personal_dict(&personaldict, ¤tdir_dictfile); hspell_hash_init(&personaldict_new_words); hspell_hash_init(&sessiondict); if(opt_n) load_spelling_hints(&spellinghints); if(interpipe){ if(slave){ /* We open a pipe to an "ispell -a" process, letting it output directly to the user. We also let it output its own version string instead of ours. Is this wise? I don't know. Does anyone care? Note that we also don't make any attempts to catch broken pipes. */ slavefp=popen("ispell -a", "w"); if(!slavefp){ fprintf(stderr, "Warning: Cannot create slave " "ispell process. Disabling -i option.\n"); slave=0; } else { setlinebuf(slavefp); } } if(!slave) printf(VERSION_IDENTIFICATION, HSPELL_VERSION_MAJOR, HSPELL_VERSION_MINOR, HSPELL_VERSION_EXTRA); } for(;;){ c=getc(in); if(ishebrew(c) || c=='\'' || c=='"'){ /* swallow up another letter into the word (if the word * is too long, lose the last letters) */ if(wordlen - add to personal dict & - ditto @ - accept, but leave out of dict # - save personal dict */ char rest[512]; int isheb = 0; /* Read rest of line, to get the command parameters. */ if(!fgets(rest, sizeof(rest), in)){ rest[0]='\0'; /* unexpected EOF... */ } else if (rest[0] && rest[strlen(rest)-1] == '\n') { rest[strlen(rest)-1] = '\0'; } else { /* We shouldn't arrive here, but if we do: Eat up rest of line. */ int rc; while ((rc = getc(in)) != EOF && rc != '\n') ; } switch (c) { case '!': terse_mode = 1; break; case '%': terse_mode = 0; break; case '*': case '&': case '@': isheb = ishebrew((int)(unsigned char)rest[0]); /* We don't handle non-Hebrew words */ if (isheb) { if (c == '@') { /* Add word to the session dictionary, which is never saved to disk. */ if (hspell_debug) fprintf(stderr, "hspell_add_to_session(%s)\n", rest); hspell_hash_incr_int( &sessiondict, rest); } else { /* Add word to personaldict_new_words, which is saved to disk when the '#' command is issued. */ if (hspell_debug) fprintf(stderr, "hspell_add_to_personal(%s)\n", rest); if (!hspell_hash_exists( &personaldict, rest) && !hspell_hash_exists( &personaldict_new_words, rest)) { hspell_hash_incr_int( &personaldict_new_words, rest); } } } break; case '#': save_personal_dict(&personaldict, &personaldict_new_words, currentdir_dictfile); break; } /* Pass the command to ispell only if it doesn't involve a Hebrew word. */ if (slave && !isheb) { fprintf(slavefp, "%c%s\n", c, rest); } /* offset=0 remains but we don't want to output a newline */ continue; } if(c==EOF) { /* If we were in the middle of the line (no newline) we nevertheless need to finish with the old line */ if(offset){ offset=0; if(interpipe && !slave) printf("\n"); } /* in UNIX spell mode (!interpipe) we should read all the files given in the command line... Otherwise, an EOF is the end of this loop. */ if(!interpipe && argc>0){ if(in!=stdin) fclose(in); in=next_file(&argc, &argv); if(!in) break; } else break; } if(c=='\n'){ offset=0; if(interpipe && !slave) /*slave already outputs a newline...*/ printf("\n"); } else { offset++; } /* pass the character also to the slave, replacing Hebrew characters by spaces */ if(interpipe && slave) putc(ishebrew(c) ? ' ' : c, slavefp); } /* in spell-like mode (!interpipe) - list the wrong words */ if(!interpipe){ hspell_hash_keyvalue *wrongwords_array; int wrongwords_number; wrongwords_array = hspell_hash_build_keyvalue_array( &wrongwords, &wrongwords_number); if(wrongwords_number){ int i; if(opt_c) printf("שגיאות כתיב שנמצאו, ותיקוניהן " "המומלצים:\n\n"); else printf("שגיאות כתיב שנמצאו:\n\n"); /* sort word list by key or value (depending on -s option) */ qsort(wrongwords_array, wrongwords_number, sizeof(hspell_hash_keyvalue), opt_s ? compare_value_reverse : compare_key); for(i=0; i ", (int)wrongwords_array[i].value, wrongwords_array[i].key); corlist_init(&cl); hspell_trycorrect(dict, wrongwords_array[i].key, &cl); for(j=0;j he@dictionaries.addons.mozilla.org %VERSION% {ec8030f7-c20a-464f-9b0e-13a3a9e97384} 2.0b1 13.0a1 {3550f703-e582-4d05-9a08-453d09bdfdc6} 2.0a1 3.1a1pre {92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 1.1a 1.5a Hebrew spell-checking dictionary (from HSpell) Nadav Har'El and Dan Kenigsberg http://hspell.ivrix.org.il/ true 64 he-IL ׳׳™׳׳•׳ ׳׳™׳•׳× ׳¢׳‘׳¨׳™ (׳ײ¾HSpell) ׳ ׳“׳‘ ׳”׳¨׳׳ ׳•׳“׳ ׳§׳ ׳™׳’׳¡׳‘׳¨׳’ hspell-1.4/tclHash.c0000644000076600007650000005546411724746662012444 0ustar nyhrl/* The following file was taken from TCL 8.4.3's tcl8.4.3/generic/tclHash.c, with the following necessary modifications made by Nadav Har'El: * the "license.terms" file from that distribution is included in a comment below * RCS line removed (our RCS interfered with it) * Assume TCL_PRESERVE_BINARY_COMPATABILITY is 0, TCL_HASH_KEY_STORE_HASH is 1, and remove #ifs related to it. Also removed #if 0 stuff. * copy stuff from generic/tcl.h * Removed key types other than string, and statistics routines. * commented out panic-related lines. * Other changes required to compile without warnings on modern systems. */ #define ckfree free #define ckalloc malloc #include #include #ifdef HAVE_STDINT_H #include #endif #ifdef HAVE_INTTYPES_H #include #endif /* * tclHash.c -- * * Implementation of in-memory hash tables for Tcl and Tcl-based * applications. * * Copyright (c) 1991-1993 The Regents of the University of California. * Copyright (c) 1994 Sun Microsystems, Inc. * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * */ /* The contents of the license.terms file: This software is copyrighted by the Regents of the University of California, Sun Microsystems, Inc., Scriptics Corporation, ActiveState Corporation and other parties. The following terms apply to all files associated with the software unless explicitly disclaimed in individual files. The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. GOVERNMENT USE: If you are acquiring this software on behalf of the U.S. government, the Government shall have only "Restricted Rights" in the software and related documentation as defined in the Federal Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you are acquiring the software on behalf of the Department of Defense, the software shall be classified as "Commercial Computer Software" and the Government shall have only "Restricted Rights" as defined in Clause 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the authors grant the U.S. Government and others acting in its behalf permission to use and distribute the software in accordance with the terms specified in this license. */ #include "tclHash.h" /* * Structure definition for the methods associated with a hash table * key type. */ #define TCL_HASH_KEY_TYPE_VERSION 1 struct Tcl_HashKeyType { int version; /* Version of the table. If this structure is * extended in future then the version can be * used to distinguish between different * structures. */ int flags; /* Flags, see above for details. */ /* Calculates a hash value for the key. If this is NULL then the pointer * itself is used as a hash value. */ Tcl_HashKeyProc *hashKeyProc; /* Compares two keys and returns zero if they do not match, and non-zero * if they do. If this is NULL then the pointers are compared. */ Tcl_CompareHashKeysProc *compareKeysProc; /* Called to allocate memory for a new entry, i.e. if the key is a * string then this could allocate a single block which contains enough * space for both the entry and the string. Only the key field of the * allocated Tcl_HashEntry structure needs to be filled in. If something * else needs to be done to the key, i.e. incrementing a reference count * then that should be done by this function. If this is NULL then Tcl_Alloc * is used to allocate enough space for a Tcl_HashEntry and the key pointer * is assigned to key.oneWordValue. */ Tcl_AllocHashEntryProc *allocEntryProc; /* Called to free memory associated with an entry. If something else needs * to be done to the key, i.e. decrementing a reference count then that * should be done by this function. If this is NULL then Tcl_Free is used * to free the Tcl_HashEntry. */ Tcl_FreeHashEntryProc *freeEntryProc; }; /* * When there are this many entries per bucket, on average, rebuild * the hash table to make it larger. */ #define REBUILD_MULTIPLIER 3 /* * The following macro takes a preliminary integer hash value and * produces an index into a hash tables bucket list. The idea is * to make it so that preliminary values that are arbitrarily similar * will end up in different buckets. The hash function was taken * from a random-number generator. */ #define RANDOM_INDEX(tablePtr, i) \ (((((long) (i))*1103515245) >> (tablePtr)->downShift) & (tablePtr)->mask) /* * Prototypes for the string hash key methods. */ static Tcl_HashEntry * AllocStringEntry _ANSI_ARGS_(( Tcl_HashTable *tablePtr, VOID *keyPtr)); static int CompareStringKeys _ANSI_ARGS_(( VOID *keyPtr, Tcl_HashEntry *hPtr)); static unsigned int HashStringKey _ANSI_ARGS_(( Tcl_HashTable *tablePtr, VOID *keyPtr)); /* * Procedure prototypes for static procedures in this file: */ static void RebuildTable _ANSI_ARGS_((Tcl_HashTable *tablePtr)); Tcl_HashKeyType tclStringHashKeyType = { TCL_HASH_KEY_TYPE_VERSION, /* version */ 0, /* flags */ HashStringKey, /* hashKeyProc */ CompareStringKeys, /* compareKeysProc */ AllocStringEntry, /* allocEntryProc */ NULL /* freeEntryProc */ }; /* *---------------------------------------------------------------------- * * Tcl_InitHashTable -- * * Given storage for a hash table, set up the fields to prepare * the hash table for use. * * Results: * None. * * Side effects: * TablePtr is now ready to be passed to Tcl_FindHashEntry and * Tcl_CreateHashEntry. * *---------------------------------------------------------------------- */ #undef Tcl_InitHashTable void Tcl_InitHashTable(tablePtr, keyType) register Tcl_HashTable *tablePtr; /* Pointer to table record, which * is supplied by the caller. */ int keyType; /* Type of keys to use in table: * TCL_STRING_KEYS, TCL_ONE_WORD_KEYS, * or an integer >= 2. */ { #if (TCL_SMALL_HASH_TABLE != 4) panic("Tcl_InitCustomHashTable: TCL_SMALL_HASH_TABLE is %d, not 4\n", TCL_SMALL_HASH_TABLE); #endif tablePtr->buckets = tablePtr->staticBuckets; tablePtr->staticBuckets[0] = tablePtr->staticBuckets[1] = 0; tablePtr->staticBuckets[2] = tablePtr->staticBuckets[3] = 0; tablePtr->numBuckets = TCL_SMALL_HASH_TABLE; tablePtr->numEntries = 0; tablePtr->rebuildSize = TCL_SMALL_HASH_TABLE*REBUILD_MULTIPLIER; tablePtr->downShift = 28; tablePtr->mask = 3; tablePtr->keyType = keyType; /* * Use the key type to decide which key type is needed. */ if (keyType == TCL_STRING_KEYS) { tablePtr->typePtr = &tclStringHashKeyType; } else { /* TODO: get rid of this else. we have no other types */ abort(); } } /* *---------------------------------------------------------------------- * * Tcl_FindHashEntry -- * * Given a hash table find the entry with a matching key. * * Results: * The return value is a token for the matching entry in the * hash table, or NULL if there was no matching entry. * * Side effects: * None. * *---------------------------------------------------------------------- */ Tcl_HashEntry * Tcl_FindHashEntry(tablePtr, key) Tcl_HashTable *tablePtr; /* Table in which to lookup entry. */ CONST char *key; /* Key to use to find matching entry. */ { register Tcl_HashEntry *hPtr; Tcl_HashKeyType *typePtr; unsigned int hash; int index; typePtr = tablePtr->typePtr; if (typePtr == NULL) { /* Tcl_Panic("called Tcl_FindHashEntry on deleted table"); */ return NULL; } if (typePtr->hashKeyProc) { hash = typePtr->hashKeyProc (tablePtr, (VOID *) key); if (typePtr->flags & TCL_HASH_KEY_RANDOMIZE_HASH) { index = RANDOM_INDEX (tablePtr, hash); } else { index = hash & tablePtr->mask; } } else { hash = (unsigned int) (intptr_t) key; index = RANDOM_INDEX (tablePtr, hash); } /* * Search all of the entries in the appropriate bucket. */ if (typePtr->compareKeysProc) { for (hPtr = tablePtr->buckets[index]; hPtr != NULL; hPtr = hPtr->nextPtr) { if (hash != (unsigned int) hPtr->hash) { continue; } if (typePtr->compareKeysProc ((VOID *) key, hPtr)) { return hPtr; } } } else { for (hPtr = tablePtr->buckets[index]; hPtr != NULL; hPtr = hPtr->nextPtr) { if (hash != (unsigned int) hPtr->hash) { continue; } if (key == hPtr->key.oneWordValue) { return hPtr; } } } return NULL; } /* *---------------------------------------------------------------------- * * Tcl_CreateHashEntry -- * * Given a hash table with string keys, and a string key, find * the entry with a matching key. If there is no matching entry, * then create a new entry that does match. * * Results: * The return value is a pointer to the matching entry. If this * is a newly-created entry, then *newPtr will be set to a non-zero * value; otherwise *newPtr will be set to 0. If this is a new * entry the value stored in the entry will initially be 0. * * Side effects: * A new entry may be added to the hash table. * *---------------------------------------------------------------------- */ Tcl_HashEntry * Tcl_CreateHashEntry(tablePtr, key, newPtr) Tcl_HashTable *tablePtr; /* Table in which to lookup entry. */ CONST char *key; /* Key to use to find or create matching * entry. */ int *newPtr; /* Store info here telling whether a new * entry was created. */ { register Tcl_HashEntry *hPtr; Tcl_HashKeyType *typePtr; unsigned int hash; int index; typePtr = tablePtr->typePtr; if (typePtr == NULL) { /* Tcl_Panic("called Tcl_CreateHashEntry on deleted table"); */ return NULL; } if (typePtr->hashKeyProc) { hash = typePtr->hashKeyProc (tablePtr, (VOID *) key); if (typePtr->flags & TCL_HASH_KEY_RANDOMIZE_HASH) { index = RANDOM_INDEX (tablePtr, hash); } else { index = hash & tablePtr->mask; } } else { hash = (unsigned int) (intptr_t) key; index = RANDOM_INDEX (tablePtr, hash); } /* * Search all of the entries in the appropriate bucket. */ if (typePtr->compareKeysProc) { for (hPtr = tablePtr->buckets[index]; hPtr != NULL; hPtr = hPtr->nextPtr) { if (hash != (unsigned int) hPtr->hash) { continue; } if (typePtr->compareKeysProc ((VOID *) key, hPtr)) { *newPtr = 0; return hPtr; } } } else { for (hPtr = tablePtr->buckets[index]; hPtr != NULL; hPtr = hPtr->nextPtr) { if (hash != (unsigned int) hPtr->hash) { continue; } if (key == hPtr->key.oneWordValue) { *newPtr = 0; return hPtr; } } } /* * Entry not found. Add a new one to the bucket. */ *newPtr = 1; if (typePtr->allocEntryProc) { hPtr = typePtr->allocEntryProc (tablePtr, (VOID *) key); } else { hPtr = (Tcl_HashEntry *) ckalloc((unsigned) sizeof(Tcl_HashEntry)); hPtr->key.oneWordValue = (char *) key; } hPtr->tablePtr = tablePtr; hPtr->hash = hash; hPtr->nextPtr = tablePtr->buckets[index]; tablePtr->buckets[index] = hPtr; hPtr->clientData = 0; tablePtr->numEntries++; /* * If the table has exceeded a decent size, rebuild it with many * more buckets. */ if (tablePtr->numEntries >= tablePtr->rebuildSize) { RebuildTable(tablePtr); } return hPtr; } /* *---------------------------------------------------------------------- * * Tcl_DeleteHashEntry -- * * Remove a single entry from a hash table. * * Results: * None. * * Side effects: * The entry given by entryPtr is deleted from its table and * should never again be used by the caller. It is up to the * caller to free the clientData field of the entry, if that * is relevant. * *---------------------------------------------------------------------- */ void Tcl_DeleteHashEntry(entryPtr) Tcl_HashEntry *entryPtr; { register Tcl_HashEntry *prevPtr; Tcl_HashKeyType *typePtr; Tcl_HashTable *tablePtr; Tcl_HashEntry **bucketPtr; int index; tablePtr = entryPtr->tablePtr; typePtr = tablePtr->typePtr; if (typePtr->hashKeyProc == NULL || typePtr->flags & TCL_HASH_KEY_RANDOMIZE_HASH) { index = RANDOM_INDEX (tablePtr, entryPtr->hash); } else { index = ((unsigned int) entryPtr->hash) & tablePtr->mask; } bucketPtr = &(tablePtr->buckets[index]); if (*bucketPtr == entryPtr) { *bucketPtr = entryPtr->nextPtr; } else { for (prevPtr = *bucketPtr; ; prevPtr = prevPtr->nextPtr) { if (prevPtr == NULL) { /* panic("malformed bucket chain in Tcl_DeleteHashEntry"); */ } if (prevPtr->nextPtr == entryPtr) { prevPtr->nextPtr = entryPtr->nextPtr; break; } } } tablePtr->numEntries--; if (typePtr->freeEntryProc) { typePtr->freeEntryProc (entryPtr); } else { ckfree((char *) entryPtr); } } /* *---------------------------------------------------------------------- * * Tcl_DeleteHashTable -- * * Free up everything associated with a hash table except for * the record for the table itself. * * Results: * None. * * Side effects: * The hash table is no longer usable. * *---------------------------------------------------------------------- */ void Tcl_DeleteHashTable(tablePtr) register Tcl_HashTable *tablePtr; /* Table to delete. */ { register Tcl_HashEntry *hPtr, *nextPtr; Tcl_HashKeyType *typePtr; int i; typePtr = tablePtr->typePtr; /* * Free up all the entries in the table. */ for (i = 0; i < tablePtr->numBuckets; i++) { hPtr = tablePtr->buckets[i]; while (hPtr != NULL) { nextPtr = hPtr->nextPtr; if (typePtr->freeEntryProc) { typePtr->freeEntryProc (hPtr); } else { ckfree((char *) hPtr); } hPtr = nextPtr; } } /* * Free up the bucket array, if it was dynamically allocated. */ if (tablePtr->buckets != tablePtr->staticBuckets) { ckfree((char *) tablePtr->buckets); } /* * Arrange for panics if the table is used again without * re-initialization. */ tablePtr->typePtr = NULL; } /* *---------------------------------------------------------------------- * * Tcl_FirstHashEntry -- * * Locate the first entry in a hash table and set up a record * that can be used to step through all the remaining entries * of the table. * * Results: * The return value is a pointer to the first entry in tablePtr, * or NULL if tablePtr has no entries in it. The memory at * *searchPtr is initialized so that subsequent calls to * Tcl_NextHashEntry will return all of the entries in the table, * one at a time. * * Side effects: * None. * *---------------------------------------------------------------------- */ Tcl_HashEntry * Tcl_FirstHashEntry(tablePtr, searchPtr) Tcl_HashTable *tablePtr; /* Table to search. */ Tcl_HashSearch *searchPtr; /* Place to store information about * progress through the table. */ { searchPtr->tablePtr = tablePtr; searchPtr->nextIndex = 0; searchPtr->nextEntryPtr = NULL; return Tcl_NextHashEntry(searchPtr); } /* *---------------------------------------------------------------------- * * Tcl_NextHashEntry -- * * Once a hash table enumeration has been initiated by calling * Tcl_FirstHashEntry, this procedure may be called to return * successive elements of the table. * * Results: * The return value is the next entry in the hash table being * enumerated, or NULL if the end of the table is reached. * * Side effects: * None. * *---------------------------------------------------------------------- */ Tcl_HashEntry * Tcl_NextHashEntry(searchPtr) register Tcl_HashSearch *searchPtr; /* Place to store information about * progress through the table. Must * have been initialized by calling * Tcl_FirstHashEntry. */ { Tcl_HashEntry *hPtr; while (searchPtr->nextEntryPtr == NULL) { if (searchPtr->nextIndex >= searchPtr->tablePtr->numBuckets) { return NULL; } searchPtr->nextEntryPtr = searchPtr->tablePtr->buckets[searchPtr->nextIndex]; searchPtr->nextIndex++; } hPtr = searchPtr->nextEntryPtr; searchPtr->nextEntryPtr = hPtr->nextPtr; return hPtr; } /* *---------------------------------------------------------------------- * * AllocStringEntry -- * * Allocate space for a Tcl_HashEntry containing the string key. * * Results: * The return value is a pointer to the created entry. * * Side effects: * None. * *---------------------------------------------------------------------- */ static Tcl_HashEntry * AllocStringEntry(tablePtr, keyPtr) Tcl_HashTable *tablePtr; /* Hash table. */ VOID *keyPtr; /* Key to store in the hash table entry. */ { CONST char *string = (CONST char *) keyPtr; Tcl_HashEntry *hPtr; unsigned int size; size = sizeof(Tcl_HashEntry) + strlen(string) + 1 - sizeof(hPtr->key); if (size < sizeof(Tcl_HashEntry)) size = sizeof(Tcl_HashEntry); hPtr = (Tcl_HashEntry *) ckalloc(size); strcpy(hPtr->key.string, string); return hPtr; } /* *---------------------------------------------------------------------- * * CompareStringKeys -- * * Compares two string keys. * * Results: * The return value is 0 if they are different and 1 if they are * the same. * * Side effects: * None. * *---------------------------------------------------------------------- */ static int CompareStringKeys(keyPtr, hPtr) VOID *keyPtr; /* New key to compare. */ Tcl_HashEntry *hPtr; /* Existing key to compare. */ { register CONST char *p1 = (CONST char *) keyPtr; register CONST char *p2 = (CONST char *) hPtr->key.string; for (;; p1++, p2++) { if (*p1 != *p2) { break; } if (*p1 == '\0') { return 1; } } return 0; } /* *---------------------------------------------------------------------- * * HashStringKey -- * * Compute a one-word summary of a text string, which can be * used to generate a hash index. * * Results: * The return value is a one-word summary of the information in * string. * * Side effects: * None. * *---------------------------------------------------------------------- */ static unsigned int HashStringKey(tablePtr, keyPtr) Tcl_HashTable *tablePtr; /* Hash table. */ VOID *keyPtr; /* Key from which to compute hash value. */ { register CONST char *string = (CONST char *) keyPtr; register unsigned int result; register int c; /* * I tried a zillion different hash functions and asked many other * people for advice. Many people had their own favorite functions, * all different, but no-one had much idea why they were good ones. * I chose the one below (multiply by 9 and add new character) * because of the following reasons: * * 1. Multiplying by 10 is perfect for keys that are decimal strings, * and multiplying by 9 is just about as good. * 2. Times-9 is (shift-left-3) plus (old). This means that each * character's bits hang around in the low-order bits of the * hash value for ever, plus they spread fairly rapidly up to * the high-order bits to fill out the hash value. This seems * works well both for decimal and non-decimal strings. */ result = 0; while (1) { c = *string; if (c == 0) { break; } result += (result<<3) + c; string++; } return result; } /* *---------------------------------------------------------------------- * * RebuildTable -- * * This procedure is invoked when the ratio of entries to hash * buckets becomes too large. It creates a new table with a * larger bucket array and moves all of the entries into the * new table. * * Results: * None. * * Side effects: * Memory gets reallocated and entries get re-hashed to new * buckets. * *---------------------------------------------------------------------- */ static void RebuildTable(tablePtr) register Tcl_HashTable *tablePtr; /* Table to enlarge. */ { int oldSize, count, index; Tcl_HashEntry **oldBuckets; register Tcl_HashEntry **oldChainPtr, **newChainPtr; register Tcl_HashEntry *hPtr; Tcl_HashKeyType *typePtr; oldSize = tablePtr->numBuckets; oldBuckets = tablePtr->buckets; /* * Allocate and initialize the new bucket array, and set up * hashing constants for new array size. */ tablePtr->numBuckets *= 4; tablePtr->buckets = (Tcl_HashEntry **) ckalloc((unsigned) (tablePtr->numBuckets * sizeof(Tcl_HashEntry *))); for (count = tablePtr->numBuckets, newChainPtr = tablePtr->buckets; count > 0; count--, newChainPtr++) { *newChainPtr = NULL; } tablePtr->rebuildSize *= 4; tablePtr->downShift -= 2; tablePtr->mask = (tablePtr->mask << 2) + 3; typePtr = tablePtr->typePtr; /* * Rehash all of the existing entries into the new bucket array. */ for (oldChainPtr = oldBuckets; oldSize > 0; oldSize--, oldChainPtr++) { for (hPtr = *oldChainPtr; hPtr != NULL; hPtr = *oldChainPtr) { *oldChainPtr = hPtr->nextPtr; if (typePtr->hashKeyProc == NULL || typePtr->flags & TCL_HASH_KEY_RANDOMIZE_HASH) { index = RANDOM_INDEX (tablePtr, hPtr->hash); } else { index = ((unsigned int) hPtr->hash) & tablePtr->mask; } hPtr->nextPtr = tablePtr->buckets[index]; tablePtr->buckets[index] = hPtr; } } /* * Free up the old bucket array, if it was dynamically allocated. */ if (oldBuckets != tablePtr->staticBuckets) { ckfree((char *) oldBuckets); } } hspell-1.4/wunzip.c0000644000076600007650000000143511722240236012357 0ustar nyhrl#include #include int main(int argc, char **argv) { char sbuf[256]; int slen=0; int c,n; while((c=getchar())!=EOF){ if(c>='0' && c<='9'){ /* new word - output old word first */ sbuf[slen]='\0'; puts(sbuf); /* and read how much to go back */ n=0; do { /* base 10... */ n*=10; n+=(c-'0'); } while ((c=getchar())!=EOF && c>='0' && c<='9'); slen-=n; if(slen<0 || slen >= sizeof(sbuf)-1){ fprintf(stderr,"bad backlength %d... exiting.\n", slen); exit(1); } /* we got a new letter c - continue the loop */ } /* word letter - add it */ if(slen>=sizeof(sbuf)-1){ fprintf(stderr,"word too long... exiting.\n"); exit(1); } sbuf[slen++]=c; } /* output last word */ sbuf[slen]='\0'; puts(sbuf); return 0; } hspell-1.4/hspell.30000644000076600007650000002367613123033112012233 0ustar nyhrl'\" t .\" Copyright (c) 2001-2017, Nadav Har'El and Dan Kenigsberg .TH hspell 3 "24 June 2017" "Hspell 1.4" "Ivrix" .SH NAME hspell \- Hebrew spellchecker (C API) .SH SYNOPSIS .B #include .PP \fBint hspell_init(struct dict_radix **\fRdictp\fB, int \fRflags\fB);\fR .PP \fBvoid hspell_uninit(struct dict_radix *\fRdictp\fB);\fR .PP \fBint hspell_check_word(struct dict_radix *\fRdict\fB, const char *\fRword\fB, int *\fRpreflen\fB);\fR .PP \fBvoid hspell_trycorrect(struct dict_radix *\fRdict\fB, const char *\fRword\fB, struct corlist *\fRcl\fB);\fR .PP \fBint corlist_init(struct corlist *\fRcl\fB);\fR .PP \fBint corlist_free(struct corlist *\fRcl\fB);\fR .PP \fBint corlist_n(struct corlist *\fRcl\fB);\fR .PP \fBchar *corlist_str(struct corlist *\fRcl\fB, int \fRi\fB);\fR .PP \fBunsigned int hspell_is_canonic_gimatria(const char *\fRword\fB);\fR .PP \fRtypedef int hspell_word_split_callback_func(const char *word, const char *baseword, int preflen, int prefspec);\fR .PP \fBint hspell_enum_splits(struct dict_radix *\fRdict\fB, const char *\fRword\fB, hspell_word_split_callback_func *\fRenumf\fB);\fR .PP \fBvoid hspell_set_dictionary_path(const char *\fRpath\fB);\fR .PP \fBconst char *hspell_get_dictionary_path(void);\fR .SH "DESCRIPTION" This manual describes the C API of the Hspell Hebrew spellchecker. Please refer to .BR hspell (1) for a description of the Hspell project, its spelling standard, and how it works. The .B hspell_init() function must be called first to initialize the Hspell library. It sets up some global structures (see CAVEATS section) and then reads the necessary dictionary files (whose places are fixed when the library is built). The .I 'dictp' parameter is a pointer to a .I struct dict_radix* object, which is modified to point to a newly allocated dictionary. A typical .B hspell_init() call therefore looks like struct dict_radix *dict; hspell_init(&dict, flags); Note that the (struct dict_radix*) type is an opaque pointer \- the library user has no access to the separate fields in this structure. The .I 'flags' parameter can contain a bitwise or'ing of several flags that modify Hspell's default behavior; Turning on HSPELL_OPT_HE_SHEELA allows Hspell to recognize the interrogative He prefix (he ha-she'ela). HSPELL_OPT_DEFAULT is a synonym for turning on no special flag, i.e., it evaluates to 0. .B hspell_init() returns 0 on success, or negative numbers on errors. Currently, the only error is \-1, meaning the dictionary files could not be read. The .B hspell_uninit() function undoes the effects of .BR hspell_init() , freeing any memory that was allocated during initialization. The .B hspell_check_word() function checks whether a certain word is a correct Hebrew word (possibly with prefix particles attached in a syntacticly-correct manner). 1 is returned if the word is correct, or 0 if it is incorrect. The .I 'word' parameter should be a single Hebrew word, in the iso8859-8 encoding, possibly containing the ASCII quote or double-quote characters (signifying the geresh and gershayim used in Hebrew for abbreviations, acronyms, and a few foreign sounds). If the calling programs works with other encodings, it must convert the word to iso8859-8 first. In particular cp1255 (the MS-Windows Hebrew encoding) extensions to iso8859-8 like niqqud characters, geresh or gershayim, are currently not recognized and must be removed from the word prior to calling .BR hspell_check_word() . Into the .I 'preflen' parameter, the function writes back the number of characters it recognized as a prefix particle \- the rest of the 'word' is a stand-alone word. Because Hebrew words typically can be read in several different ways, this feature (of getting just one prefix from one possible reading) is usually not very useful, and it is likely to be removed in a future version. The .B hspell_enum_splits() function provides a way to get all possible splitting of the given .I 'word' into an optional prefix particle and a stand-alone word. For each possible (and legal, as some words cannot accept certain prefixes) split, a user-defined callback function is called. This callback function is given the whole word, the length of the prefix, the stand-alone word, and a bitfield which describes what types of words this prefix can get. Note that in some cases, a word beginning with the letter waw gets this waw doubled before a prefix, so sometimes strlen(word)!=strlen(baseword)+preflen. The .B hspell_trycorrect() tries to find a list of possible corrections for an incorrect word. Because in Hebrew the word density is high (a random string of letters, especially if short, has a high probability of being a correct word), this function attempts to try corrections based on the assumption of a spelling error (replacement of letters that sound alike, missing or spurious immot qri'a), not typo (slipped finger on the keyboard, etc.) - see also CAVEATS. .B hspell_trycorrect() returns the correction list into a structure of type \fIstruct corlist\fR. This structure must be first allocated with a call to .B corlist_init() and subsequently freed with .BR corlist_free() . The .B corlist_n() macro returns the number of words held in an allocated corlist, and .B corlist_str() returns the i'th word. Accordingly, here is an example usage of .BR hspell_trycorrect() : struct corlist cl; printf ("Found misspelled word %s. Possible corrections:\\n", w); corlist_init (&cl); hspell_trycorrect (dict, w, &cl); for (i=0; i and Dan Kenigsberg . Hspell is free software, released under the GNU Affero General Public License (AGPL) version 3. Note that not only the programs in the distribution, but also the dictionary files and the generated word lists, are licensed under the AGPL. There is no warranty of any kind. See the LICENSE file for more information and the exact license terms. The latest version of this software can be found in .B http://hspell.ivrix.org.il/ .SH "SEE ALSO" .BR hspell (1) hspell-1.4/binarize-desc.pl0000755000076600007650000002173311374316214013744 0ustar nyhrl#!/usr/bin/perl -w # Copyright (C) 2002-2004 Nadav Har'El and Dan Kenigsberg # # converts the textual linguistic information in wolig-d-dictionaries, # into binary data. # Usage: cat dict1 dict2 ... | binarize-desc.pl > dict_bin_out # use Carp; require "PrefixBits.pl"; # "perl -w" warns about variables only used once (it assumes they are a # typo). This ugliness gets rid of this warning. Is there a more sensible way? ($PS_L,$PS_B,$PS_VERB,$PS_NONDEF,$PS_IMPER,$PS_MISC)= ($PS_L,$PS_B,$PS_VERB,$PS_NONDEF,$PS_IMPER,$PS_MISC); my $specifier; ############ description handlng my $D_NOUN=1; my $D_VERB=2*$D_NOUN; my $D_ADJ=3*$D_NOUN; my $D_TYPEMASK=3*$D_NOUN; my $D_GENDERBASE=4*$D_NOUN; my $D_MASCULINE=1*$D_GENDERBASE; my $D_FEMININE=2*$D_MASCULINE; my $D_GENDERMASK=3*$D_GENDERBASE; my $D_GUFBASE=4*$D_GENDERBASE; my $D_FIRST=$D_GUFBASE*1; my $D_SECOND=$D_GUFBASE*2; my $D_THIRD=$D_GUFBASE*3; my $D_GUFMASK=$D_GUFBASE*3; my $D_NUMBASE=4*$D_GUFBASE; my $D_SINGULAR=1*$D_NUMBASE; my $D_DOUBLE=2*$D_NUMBASE; my $D_PLURAL=3*$D_NUMBASE; my $D_NUMMASK=3*$D_NUMBASE; my $D_TENSEBASE=4*$D_NUMBASE; my $D_INFINITIVE=1*$D_TENSEBASE; my $D_BINFINITIVE=6*$D_TENSEBASE; my $D_PAST=2*$D_TENSEBASE; my $D_PRESENT=3*$D_TENSEBASE; my $D_FUTURE=4*$D_TENSEBASE; my $D_IMPERATIVE=5*$D_TENSEBASE; my $D_TENSEMASK=7*$D_TENSEBASE; my $D_OGENDERBASE=8*$D_TENSEBASE; my $D_OMASCULINE=1*$D_OGENDERBASE; my $D_OFEMININE=2*$D_OMASCULINE; my $D_OGENDERMASK=3*$D_OGENDERBASE; my $D_OGUFBASE=4*$D_OGENDERBASE; my $D_OFIRST=$D_OGUFBASE*1; my $D_OSECOND=$D_OGUFBASE*2; my $D_OTHIRD=$D_OGUFBASE*3; my $D_OGUFMASK=3*$D_OGUFBASE; my $D_ONUMBASE=4*$D_OGUFBASE; my $D_OSINGULAR=1*$D_ONUMBASE; my $D_ODOUBLE=2*$D_ONUMBASE; my $D_OPLURAL=3*$D_ONUMBASE; my $D_ONUMMASK=3*$D_ONUMBASE; my $D_OMASK=3*$D_ONUMBASE+3*$D_OGUFBASE+3*$D_OMASCULINE; my $D_OSMICHUT=4*$D_ONUMBASE; my $D_SPECNOUN=2*$D_OSMICHUT; my $D_STARTBIT=2*$D_SPECNOUN; #print STDERR "finalbit $D_STARTBIT\n"; sub text2mask { my $dmask = 0; my $desc = shift; return 0 if !$desc; if($desc=~m/^([^א-ת]|^)פ([^א-ת]|$)/o) {$dmask |= $D_VERB} elsif($desc=~m/([^א-ת]|^)ע([^א-ת]|$)/o) {$dmask |= $D_NOUN} elsif($desc=~m/([^א-ת]|^)ת([^א-ת]|$)/o) {$dmask |= $D_ADJ} if($desc=~m/,עבר([^א-ת]|$)/o) {$dmask |= $D_PAST} elsif($desc=~m/,הווה([^א-ת]|$)/o) {$dmask |= $D_PRESENT} elsif($desc=~m/,עתיד([^א-ת]|$)/o) {$dmask |= $D_FUTURE} elsif($desc=~m/,ציווי([^א-ת]|$)/o) {$dmask |= $D_IMPERATIVE} elsif($desc=~m/,מקור([^א-ת]|$)/o) {$dmask |= $D_INFINITIVE} if($desc=~m/,יחיד([^א-ת]|$)/o) {$dmask |= $D_SINGULAR} elsif($desc=~m/,רבים([^א-ת]|$)/o) {$dmask |= $D_PLURAL} if($desc=~m/([^א-ת]|^)ז([^א-ת]|$)/o) {$dmask |= $D_MASCULINE}; if($desc=~m/([^א-ת]|^)נ([^א-ת]|$)/o) {$dmask |= $D_FEMININE}; if($desc=~m/,אני/o) {$dmask |= $D_FIRST | $D_SINGULAR} elsif($desc=~m/,אתה/o) {$dmask |= $D_SECOND | $D_SINGULAR | $D_MASCULINE} elsif($desc=~m/,את([^א-ת]|$)/o) {$dmask |= $D_SECOND | $D_SINGULAR | $D_FEMININE} elsif($desc=~m/,הוא([^א-ת]|$)/o) {$dmask |= $D_THIRD | $D_SINGULAR | $D_MASCULINE} elsif($desc=~m/,היא([^א-ת]|$)/o) {$dmask |= $D_THIRD | $D_SINGULAR | $D_FEMININE} elsif($desc=~m/,אנו/o) {$dmask |= $D_FIRST | $D_PLURAL} elsif($desc=~m/,אתם/o) {$dmask |= $D_SECOND | $D_PLURAL | $D_MASCULINE} elsif($desc=~m/,אתן([^א-ת]|$)/o) {$dmask |= $D_SECOND | $D_PLURAL | $D_FEMININE} elsif($desc=~m/,הם([^א-ת]|$)/o) {$dmask |= $D_THIRD | $D_PLURAL | $D_MASCULINE} elsif($desc=~m/,הן([^א-ת]|$)/o) {$dmask |= $D_THIRD | $D_PLURAL | $D_FEMININE} if($desc=~m!/אני!o) {$dmask |= $D_OFIRST | $D_OSINGULAR} elsif($desc=~m!/אתה!o) {$dmask |= $D_OSECOND | $D_OSINGULAR | $D_OMASCULINE} elsif($desc=~m!/את([^א-ת]|$)!o) {$dmask |= $D_OSECOND | $D_OSINGULAR | $D_OFEMININE} elsif($desc=~m!/הוא([^א-ת]|$)!o) {$dmask |= $D_OTHIRD | $D_OSINGULAR | $D_OMASCULINE} elsif($desc=~m!/היא([^א-ת]|$)!o) {$dmask |= $D_OTHIRD | $D_OSINGULAR | $D_OFEMININE} elsif($desc=~m!/אנו!o) {$dmask |= $D_OFIRST | $D_OPLURAL} elsif($desc=~m!/אנחנו!o) {$dmask |= $D_OFIRST | $D_OPLURAL} elsif($desc=~m!/אתם!o) {$dmask |= $D_OSECOND | $D_OPLURAL | $D_OMASCULINE} elsif($desc=~m!/אתן([^א-ת]|$)!o) {$dmask |= $D_OSECOND | $D_OPLURAL | $D_OFEMININE} elsif($desc=~m!/הם([^א-ת]|$)!o) {$dmask |= $D_OTHIRD | $D_OPLURAL | $D_OMASCULINE} elsif($desc=~m!/הן([^א-ת]|$)!o) {$dmask |= $D_OTHIRD | $D_OPLURAL | $D_OFEMININE} if($desc=~m!סמיכות!o) {$dmask |= $D_OSMICHUT} if($desc=~m!פרטי!o) {$dmask |= $D_SPECNOUN} return $dmask; } sub mask2text { my $dmask = shift; my $s; return "" if !$dmask; $s = ${ {$D_NOUN=>'ע', $D_VERB=>'פ', $D_ADJ=>'ת', 0=>'' } }{ ($dmask & $D_TYPEMASK) }; $s .= ${ {$D_MASCULINE=>',ז', $D_FEMININE=>',נ', 0=>'' } } { ($dmask & $D_GENDERMASK) }; $s .= ${ {$D_FIRST=>',1', $D_SECOND=>',2', $D_THIRD=>',3', 0=>'' } }{ ($dmask & $D_GUFMASK) }; $s .= ${ {$D_SINGULAR=>',יחיד', $D_DOUBLE=>',זוגי', $D_PLURAL=>',רבים', 0=>'' } }{ ($dmask & $D_NUMMASK) }; $s .= ${ {$D_PAST=>',עבר', $D_PRESENT=>',הווה', $D_FUTURE=>',עתיד', $D_IMPERATIVE=>',ציווי', $D_INFINITIVE=>',מקור', $D_BINFINITIVE=>',מקור,ב,', 0=>'' } }{ ($dmask & $D_TENSEMASK) }; $s .= ",פרטי" if ($dmask & $D_SPECNOUN); $s .= ",סמיכות" if ($dmask & $D_OSMICHUT); if ($dmask & $D_OMASK) { $s .= ",כינוי/".${ {$D_OMASCULINE=>',ז', $D_OFEMININE=>',נ', 0=>'' } }{ ($dmask & $D_OGENDERMASK) }; $s .= ${ {$D_OFIRST=>',1', $D_OSECOND=>',2', $D_OTHIRD=>',3', 0=>'' } }{ ($dmask & $D_OGUFMASK) }; $s .= ${ {$D_OSINGULAR=>',יחיד', $D_ODOUBLE=>',זוגי', $D_OPLURAL=>',רבים', 0=>'' } }{ ($dmask & $D_ONUMMASK) }; } return $s; } my (%pack_desc_hash,@dmasks,$stem); ############ print STDERR "reading input dictionaries...\n"; my $c=0; while(<>){ chomp; #next if /---/; # TODO: this isn't needed. remove it. #s/-$//o; # TODO: dan added this. remove it. s/\+ / /o; # The Makefile was supposed to remove those, but still... if(/^L/o){ $specifier = $PS_L; s/^L//o; } elsif(/^B/o){ $specifier = $PS_B; s/^B//o; } elsif(!/^[א-ת]/o){ $stem = undef if m/---/; next; # not a word } elsif(/-$/o){ # In wolig.pl's simple output (without -d), this specified smichut, # and we shouldn't allow prefixes with he hayedia. This case is # useful for smichut words in extrawords. $specifier = $PS_NONDEF; s/-$//o; } elsif(/ פ,/o) { if(/ .*ציווי/o) { $specifier = $PS_IMPER; } elsif(!/ .*הווה/o) { $specifier = $PS_VERB; } elsif(/ .*סמיכות/o || m:,כינוי/:o) { $specifier = $PS_NONDEF; } else { $specifier = $PS_ALL; } } elsif(/[ ,][עת],/) { if (/ .*סמיכות/o || m:,של/:o || / .*פרטי/o) { $specifier = $PS_NONDEF; } else { $specifier = $PS_ALL; } } else { $specifier = $PS_ALL; } s/ (.*)$//; # remove all the "-d" explanations after the word $stem = $_ if !defined($stem); # $specifiers{$_} |= $specifier; my $dmask = defined($1) ? &text2mask($1) : 0; $dmask = $dmask & ~$D_INFINITIVE | $D_BINFINITIVE if $specifier==$PS_B; my $dcode = $pack_desc_hash{$dmask}; if (!$dcode) { my $i = 0+keys(%pack_desc_hash); $dcode = chr(ord('A')+$i%26).chr(ord('A')+($i - $i%26)/26); $pack_desc_hash{$dmask} = $dcode; push @dmasks, $dmask; } print "$_\t$specifier\t$dcode\t$stem\n"; $c++; print STDERR "#" if !($c%1000); } print STDERR "\ncreate dmask.c...\n"; open(DESC_C,">dmask.c") or die "cannot create dmask.c\n"; print DESC_C "/* This file is automatically generated by binarize-desc.pl.\n". " DO NOT EDIT THIS FILE DIRECTLY!\n*/\n"; print DESC_C "int dmasks[] = {\n"; print DESC_C join(",\n", @dmasks),"\n};\n"; # the following segment was generate from this very perl code using # grep '^my $D_' pmerge-bin | perl -pe 's/^my \$(D_.*)=.*$/#define $1 \$${1}/;' print DESC_C << "EOF" #define D_NOUN $D_NOUN #define D_VERB $D_VERB #define D_ADJ $D_ADJ #define D_TYPEMASK $D_TYPEMASK #define D_GENDERBASE $D_GENDERBASE #define D_MASCULINE $D_MASCULINE #define D_FEMININE $D_FEMININE #define D_GENDERMASK $D_GENDERMASK #define D_GUFBASE $D_GUFBASE #define D_FIRST $D_FIRST #define D_SECOND $D_SECOND #define D_THIRD $D_THIRD #define D_GUFMASK $D_GUFMASK #define D_NUMBASE $D_NUMBASE #define D_SINGULAR $D_SINGULAR #define D_DOUBLE $D_DOUBLE #define D_PLURAL $D_PLURAL #define D_NUMMASK $D_NUMMASK #define D_TENSEBASE $D_TENSEBASE #define D_INFINITIVE $D_INFINITIVE #define D_BINFINITIVE $D_BINFINITIVE #define D_PAST $D_PAST #define D_PRESENT $D_PRESENT #define D_FUTURE $D_FUTURE #define D_IMPERATIVE $D_IMPERATIVE #define D_TENSEMASK $D_TENSEMASK #define D_OGENDERBASE $D_OGENDERBASE #define D_OMASCULINE $D_OMASCULINE #define D_OFEMININE $D_OFEMININE #define D_OGENDERMASK $D_OGENDERMASK #define D_OGUFBASE $D_OGUFBASE #define D_OFIRST $D_OFIRST #define D_OSECOND $D_OSECOND #define D_OTHIRD $D_OTHIRD #define D_OGUFMASK $D_OGUFMASK #define D_ONUMBASE $D_ONUMBASE #define D_OSINGULAR $D_OSINGULAR #define D_ODOUBLE $D_ODOUBLE #define D_OPLURAL $D_OPLURAL #define D_ONUMMASK $D_ONUMMASK #define D_OMASK $D_OMASK #define D_OSMICHUT $D_OSMICHUT #define D_SPECNOUN $D_SPECNOUN #define D_STARTBIT $D_STARTBIT #define PS_ALL $PS_ALL #define PS_B $PS_B #define PS_L $PS_L #define PS_VERB $PS_VERB #define PS_NONDEF $PS_NONDEF #define PS_IMPER $PS_IMPER #define PS_MISC $PS_MISC EOF ; close DESC_C; hspell-1.4/extrawords.hif0000644000076600007650000010104312646267331013560 0ustar nyhrl------- שונות ע,נ,רבים ### Nouns with only smichut allowed (not the nifrad) שלהי ע,ז,רבים,סמיכות תרתי ע,ז,רבים,סמיכות ### Words that include he hashe'la. In theory, almost anything can be ### preceded by he hashe'la, but in modern usage, only these specific ### cases appear: # Note that unlike אמנם, האומנם has kubuts and an added waw! האומנם האם הייתכן האפשר הכצעקתה # היהפוך כושי עורו? היהפוך # הרצחת וגם ירשת? הרצחת # התינשאי לי? התינשאי התינשא # Perhaps add more inflections of הידעת... הידעת הידעתם הידעתן # Literary, usually as הלזאת תיקרא ... הלזאת התוכל התוכלי התוכלו # The Academia writes in http://hebrew-academy.huji.ac.il/decision3.html # (November 4 2002 decision) # הלא או הלוא בהוראת 'הנה', 'הרי' אפשר לנקדה בחולם חסר - הלא, או בחולם מלא - # הלוא. מהחלטה זו עולה שבכתיב חסר הניקוד אפשרי הכתיב הלא או הלוא. אשר למילה # הלא כמילת שאלה (כגון "הלא כן?" "הלא תבושו?") ניקודה תמיד בחולם חסר, והיא # נכתבת בכתיב חסר הניקוד בלי וי"ו. הלא # Slang: in Arabic, דחילכ דחילק # Slang, considered very offensive in Russian but is not so in Hebrew: קיבינימט יאללה ואללה תכלס # [3] and [4] agree that yod should be added in לעילא for the tsere. I don't # understand why: לשיעורין לעילא היפר- נון- גופא בואכה אקספרס ת,יחיד אסותא סופסוף זוטא ת,יחיד הרי במטותא אפרופו מדאורייתא מדרבנן דרבנן ת,יחיד בפרוטרוט בצוותא בדימוס ת,יחיד אכפת ניחותא ע,יחיד למפרע למשעי להבא כביכול קט ת,ז,יחיד אינספור דאז בגילופין לבסוף אדרבה אדרבא תיקו לינוקס ע,ז,יחיד יוניקס ע,ז,יחיד יוניקוד ע,ז,יחיד מקינטוש ע,ז,יחיד גרסהאחדאחד ע,ז,יחיד לשעבר ממילא אבוי אוי וכולי # [3] prefers גרדא, with tsere, and points גרידא to it. [4] allows ionly # גרידא, with tsere maleh (i.e., yod already in the spelling with niqqud). # [2],[5] prefer the tsere male, pointing the tsere version to it. Google shows # the version with yod to be vastly more common (7000 vs 200). The Talmud # also has it more (21 vs 2). So we'll allow only גרידא. #גרדא גרידא גומלין בלבד ביודעין אדרבה אדרבא מישרין עקיפין עסקינן דאורייתא # טרום- can get a definate article in phrases like "הטרום לידתי" so we don't # mark it as smichut טרום קדם- פוסט הודות עלמין אילך # )מ(לכתחילה לכתחילה פרקדן אפרקדן חת חורין יומיום אכזב ניחא החלט גברא גברי רבן אנטי קונטרה במו כה כגון חינם אן טרם שיטין בעליל רבתי ת,נקבה,יחיד רק ביניים בינתיים כדלהלן כדלקמן תת- # Is תתי- a valid plural of תת-? [4] appears to think it is because it # recognizes this form, but it doesn't write anything about it. [2] and [3] # don't list this form. # In [6], page 76, there's the following footnote: # בישיבה ריז החליטה האקדמיה לדחות הצעה לכללי יידוע וריבוי של צירופים בעלי # תחיליות )ולפיהם היידוע יהיה בראש הצירוף והריבוי יהיה בסופו(. השתמעות ההחלטה # היא שאין האקדמיה קובעת עמדה בשאלת היידוע והריבוי של צירופים בעלי תחיליות # כגון "תת-אלוף" )"התת-אלוף" / "תת-האלוף" / "תת-אלופים" / "תתי-אלופים" וכיו"ב(. תתי- אולטרה אינפרה אינטר אי- כי כיוון # I don't know why the following has kubuts, but [3] says that... האומנם דווקא יותר פחות זהו זוהי לפיכך איזושהי איזשהו כלשהו כלשהי כלשהם כלשהן איכשהו עדיין למרות לעיל דלעיל אונליין בעלמא # איפשהו and מתישהו are considered colloquial by Rav-Milim and missing # completely from Milon Hahove, but considered fine by the new Even-Shoshan # and apparently also by the public מתישהו איפשהו #### מילים שמשמשות רק כחלק מביטוי: # כליא ברק כליא ע,ז,יחיד # עבד עליו הכלח )או כלח( כלח ע,ז,יחיד # בין כסה לעשור כסה ע,ז,יחיד # מחד גיסא, מאידך גיסא גיסא # עתיק יומין יומין # בר קיימא קיימא # רחמנא ליצלן רחמנא ליצלן # שמן * כתית, כתית # בר פלוגתא פלוגתא # בר אוריין - בן תורה, תלמיד חכם אוריין # כתב ברייל ברייל # ביש-מזל, ביש גדא, מזל ביש, עסק ביש, מרעין בישין, עינא בישא ביש ת,ז,יחיד # בזעיר אנפין זעיר אנפין # לזות-שפתיים לזות ע,ז,יחיד,סמיכות # מימים ימימה ימימה # חרב פיפיות פיפיות ע,נ,רבים # חברה קדישא קדישא # שאט-נפש שאט ע,ז,יחיד # הון תועפות תועפות ע,נ,רבים # בנוי לתלפיות תלפיות ע,נ,רבים # added yod in אליבא. used as "אליבא ד..." אליבא # חוכא ואטלולא חוכא אטלולא # איפכא מסתברא איפכא מסתברא # ריצת אמוק אמוק ע,ז,יחיד # פרופסור אמריטוס אמריטוס ת,ז,יחיד # איתרע מזלו (יו"ד נוספה לכתיב מלא לפי ]3[, ]4[ - לא ברור לי למה) איתרע # שלג דאשתקד דאשתקד ת,ז,יחיד # כל דכפין דכפין # מוסר השכל השכל ע,ז,יחיד # טבין ותקילין טבין ע,ז,רבים תקילין ע,ז,רבים # לא-יוצלח. note added yod for ktiv male יוצלח פ,עתיד,הוא # היה לו לזרא זרא ע,ז,יחיד # מט לנפול מט פ # נייר פרגמנט פרגמנט ע,ז,יחיד # קרא תיגר. note added yod for ktiv male תיגר ע,ז,יחיד # חומץ בלסמי בלסמי ת,ז,יחיד # קורת רוח )חולם חסר בקו"ף( קורת ע,נ,יחיד,סמיכות # מורת רוח )חולם חסר במ"ם( מורת ע,נ,יחיד,סמיכות # זבנג וגמרנו )סלג( זבנג ע,ז,יחיד # אבן שאין לה הופכין הופכין ע,ז,רבים # היינו הך היינו הך דהיינו # עביט של שופכין עביט ע,ז,יחיד שופכין ע,ז,רבים # שכיב מרע שכיב ע,ז,יחיד # מלחמת גוג ומגוג גוג ע,ז,יחיד מגוג ע,ז,יחיד # נייר טואלט טואלט # ענייני דיומא דיומא # זיקוקי דינור דינור # פח יקוש יקוש # אשת לפידות לפידות # היה למאכולת אש. note added vav for niqqud-less spelling מאכולת # עורבא פרח עורבא # עיר פרזות פרזות # שמחת בית השואבה שואבה # נהפוך הוא. רב-מילים ואבן שושן החדש אומרים ש"נהפוך" זה הוא צורת מקור בנפעל. נהפוך # "עשרה" או "עשר" במספרים 11-19, והמילים "שנים" או "שתים" במספר 12 (בניגוד # למספר 2, שם בכתיב חסר-ניקוד יש להכפיל את היו"ד - שניים או שתיים, בצורה # שנים-עשר או שתים-עשרה אין סיבה להכפיל את היו"ד עשרה עשר שנים שתים # גידולי שלחין שלחין ע,ז,רבים # סוציאל-דמוקרטיה סוציאל ע,ז,יחיד # סבא רבא, סבתא רבתא רבא ת,ז,יחיד רבתא ת,נ,יחיד # פעלים בצורת "דומני". woo כרגע לא מייצר צורות אלו, ובכל מקרה נהוג # להשתמש בה רק למספר קטן של פעלים דומני חושבני מסופקני תמהני חוששני סבורני בטוחני # And the female forms: דומתני חושבתני מסופקתני תמהתני חוששתני סבורתני בטוחתני # The following are strange inflections of the Aramaic word "די". # The dictionaries I consulted are in complete disagreement about the correct # inflections: # * [2], [3] and [5] list the following bizarre Aramaic inflections: # די דידי דידך דידיך דידיה דידה דידן דידכון דידהון # The problem is that these inflections are never used nowadays, and the more # typically used inflections, like לדידם is not considered at all correct. # Of these inflections, arguably only דידי and דידך is in use today. # Note that [5] mentions one modern (?) use: "לגבי דידן". # * [4] compeletely disagrees with the other dictionaries: it has the # inflections of the word "דיד" and "לדיד", saying that it is from Aramaic # but using the normal Hebrew inflections: # דידי, דידך, דידך, דידו, דידה, דידנו, דידכם, דידכן, דידם, דידן. # I decided to go with [4] in this case. דידי דידך דידך דידו דידה דידנו דידכם דידכן דידם דידן ###### תוארי הפועל )חלוקה גסה, ובכלל לא בטוח שמדויקת, לסוגי תואר הפועל(. # )ת"פ - מקום( היכן איפה אנה שם כאן להלן הרחק הלאה למטה למעלה # )ת"פ - זמן( מתי אז עתה עכשיו כבר היום אתמול אמש שלשום מחר מחרת מחרתיים אשתקד # [4] acknowledges that תכף is the Academia standard spelling, but prefers the # spelling תיכף. See also הפך. תכף תמיד לכתחילה בדיעבד # [4] acknowledges that מיד is the Academia standard spelling, but prefers # the spelling מייד. See longer comment in wolig.dat. מיד # )ת"פ - אופן או איכות( איך כיצד איכה כך ככה היטב מהר פתאום פתע לפתע לחלוטין לגמרי לחלופין למקוטעין חיש היישר יחד יחדיו בדד לאשורו לאשורה לאשורי לאשורם לאשורן לאשורנו ריקם במפגיע בהצנע בהחבא ביעף סטטיסטית כדבעי נחרצות נמרצות בעצלתיים מרחוק מקרוב כמעט # סלנג: חפיף קומפלט לייב # ז'רגון מוזיקה לגטו סטקטו אנדנטה אדג'ו לנטו אלגרו פורטה פורטיסימו פיאנו פיאניסימו # )ת"פ - כמות( כמה מקצת קצת הרבה מעט מאוד קמעה קמעא שבעתיים # )ת"פ - סיבה( מדוע יען # )ת"פ - תכלית( למה # )ת"פ - חיוב( כן אכן אמנם אפוא # )ת"פ - שלילה( לאו לא בל בלי אין בלתי # )ת"פ - ספק( אולי אפשר לכאורה # slang... עלק # )ת"פ - אזהרה( פן שמא חלילה # )מילות חיבור( או אלא אבל אפילו לו אילו # According to [3] and [4], לולא and לולי are both valid spellings (and # similarly for the words אלמלא, אילולא): לולא לולי אלמלא אלמלי אילולא אילולי אך הלוא מעין גם אם # )מילות קריאה( חבל הלוואי נו נא אנא # [3] and [4] say the correct vowel-less spelling of אללי, אזי is with just one # yod. [5] use two yods, and since these words are not on the Academia's # list of exceptions, this decision is more in line with the Academia. אלליי אזיי הידד האח הוי # הא with tsere, version of הנה הא הללויה ###### שמות גוף: # )כינויי הנושא( אני אנוכי אנו אנחנו אתה את הוא היא הם הן # )כינויי הרמז, לקרוב( זה זו זאת אלו אלה הללו # כזה recognized by [4], and useful in combination like וככזה כזה כזו # )כינויי הרמז, לרחוק( ההוא הלז הלזה הלה אותו ההיא הלזו אותה ההם אותם ההן אותן # )כינויי השאלה( מי מה איזו איזה איזהו איזוהי מיהו מיהי מיהם מיהן מהו מהי מהם מהן אילו # )כינויי הזיקה( אשר # )כינויים סתמיים( מישהו # note that [3] doesn't recognize מישהי, only מישהו... מישהי משהו מאום פלוני אלמוני ###### words from wolig.dat with additional he hamegama... ימינה שמאלה אחורה קדימה צפונה דרומה מזרחה מערבה אחורנית # See Academia's rules on why הביתה is spelled with one yud. For השמימה, # that is my guess (based on the explicit rule to spell שמים). הביתה השמימה ###### מידות ומשקלות אטו פמטו פיקו ננו מיקרו מילי סנטי קילו מגה גיגה טרה פטה #אקסה #זטה #יוטה ###### שמות פרטיים עבריים )שאינם שמות עצם רגילים(, בכתיב חסר: נדב ע,פרטי דן ע,פרטי גלעד ע,פרטי זהבה ע,פרטי מיכל ע,פרטי אביטל ע,פרטי הדר ע,פרטי רות ע,פרטי אברהם ע,פרטי אהוד ע,פרטי איוב ע,פרטי אליעזר ע,פרטי אלימלך ע,פרטי אלירן ע,פרטי אריאל ע,פרטי אריאלה ע,פרטי יוסף ע,פרטי יחיאל ע,פרטי ישי ע,פרטי ליאור ע,פרטי ליאורה ע,פרטי לימור ע,פרטי שמעון ע,פרטי עמרם ע,פרטי עובדיה ע,פרטי סעדיה ע,פרטי שי ע,פרטי יהודה ע,פרטי לוי ע,פרטי אפרת ע,פרטי אסף ע,פרטי ברק ע,פרטי ירון ע,פרטי יצחק ע,פרטי מנשה ע,פרטי זבולון ע,פרטי ראובן ע,פרטי מיכאל ע,פרטי שמואל ע,פרטי סמדר ע,פרטי אמנון ע,פרטי דניאל ע,פרטי דניאלה ע,פרטי ענת ע,פרטי רביב ע,פרטי אופיר ע,פרטי אופירה ע,פרטי ניר ע,פרטי מור ע,פרטי זיו ע,פרטי פורת ע,פרטי אבישי ע,פרטי אביעד ע,פרטי אביגדור ע,פרטי נעמה ע,פרטי יואב ע,פרטי דפנה ע,פרטי נחום ע,פרטי אנוש ע,פרטי אדם ע,פרטי מנחם ע,פרטי יואל ע,פרטי עמוס ע,פרטי אלעד ע,פרטי גדעון ע,פרטי הדסה ע,פרטי רונית ע,פרטי רחל ע,פרטי ערן ע,פרטי רפאל ע,פרטי פנחס ע,פרטי יונה ע,פרטי יונית ע,פרטי יחזקאל ע,פרטי גרשון ע,פרטי שמשון ע,פרטי עקיבא ע,פרטי גד ע,פרטי עינת ע,פרטי יוחנן ע,פרטי דורית ע,פרטי יפעת ע,פרטי עמיקם ע,פרטי עמירם ע,פרטי אורית ע,פרטי אורי ע,פרטי גילת ע,פרטי אביאל ע,פרטי אביטוב ע,פרטי אבימלך ע,פרטי אבינדב ע,פרטי אביעזר ע,פרטי אבירם ע,פרטי אבישג ע,פרטי אבנר ע,פרטי אבשלום ע,פרטי אוריאל ע,פרטי אחיטוב ע,פרטי אחינדב ע,פרטי אחיקם ע,פרטי אלדד ע,פרטי אליהוא ע,פרטי אליפלט ע,פרטי אליפז ע,פרטי אליצור ע,פרטי אלישבע ע,פרטי אלישיב ע,פרטי אלישמע ע,פרטי אלישע ע,פרטי אלישפט ע,פרטי אלעזר ע,פרטי אסא ע,פרטי גמליאל ע,פרטי חבקוק ע,פרטי חזקיה ע,פרטי חזקיהו ע,פרטי חלקיה ע,פרטי חלקיהו ע,פרטי חמוטל ע,פרטי חננאל ע,פרטי חנניה ע,פרטי חנניהו ע,פרטי יהוידע ע,פרטי יהויכין ע,פרטי יהויקים ע,פרטי יהונדב ע,פרטי יהונתן ע,פרטי יונתן ע,פרטי יהורם ע,פרטי יהושע ע,פרטי יהושפט ע,פרטי יהואש ע,פרטי יואש ע,פרטי יובל ע,פרטי יובב ע,פרטי יורם ע,פרטי יותם ע,פרטי יקותיאל ע,פרטי ירחמיאל ע,פרטי ירמיהו ע,פרטי ישורון ע,פרטי ישמעאל ע,פרטי ישעיה ע,פרטי ישעיהו ע,פרטי יששכר ע,פרטי נחשון ע,פרטי נפתלי ע,פרטי עובדיהו ע,פרטי עוזיאל ע,פרטי עוזיה ע,פרטי עוזיהו ע,פרטי עמיאל ע,פרטי עמיהוד ע,פרטי עמינדב ע,פרטי עמיחי ע,פרטי צדקיה ע,פרטי צדקיהו ע,פרטי צוריאל ע,פרטי ראומה ע,פרטי רבקה ע,פרטי רחבעם ע,פרטי שאלתיאל ע,פרטי רוחמה ע,פרטי ארנון ע,פרטי לירז ע,פרטי לירון ע,פרטי לירן ע,פרטי פזית ע,פרטי שלי ע,פרטי שירלי ע,פרטי שירה ע,פרטי יסמין ע,פרטי שולה ע,פרטי שולמית ע,פרטי עזרא ע,פרטי מאיה ע,פרטי מיה ע,פרטי גבריאל ע,פרטי גבריאלה ע,פרטי רן ע,פרטי נילי ע,פרטי סימה ע,פרטי אורלי ע,פרטי אורה ע,פרטי נתנאל ע,פרטי נתנאלה ע,פרטי בצלאל ע,פרטי אלחנן ע,פרטי יחיעם ע,פרטי רננה ע,פרטי עמליה ע,פרטי עמיר ע,פרטי עמירה ע,פרטי איריס ע,פרטי אסתר ע,פרטי נחמן ע,פרטי זלמן ע,פרטי כרמית ע,פרטי מיכה ע,פרטי גיורא ע,פרטי חגית ע,פרטי סיגל ע,פרטי שלום ע,פרטי שלומית ע,פרטי אביחי ע,פרטי דגנית ע,פרטי יגאל ע,פרטי ימימה ע,פרטי ירדנה ע,פרטי מתתיהו ע,פרטי מתי ע,פרטי נתן ע,פרטי נחמיה ע,פרטי נטע ע,פרטי שרגא ע,פרטי אביהו ע,פרטי אורטל ע,פרטי איתי ע,פרטי אמוץ ע,פרטי דביר ע,פרטי זרובבל ע,פרטי ינאי ע,פרטי ישראל ע,פרטי ישראלה ע,פרטי נירית ע,פרטי נמרוד ע,פרטי איתמר ע,פרטי אלקנה ע,פרטי גיא ע,פרטי דרורית ע,פרטי דרור ע,פרטי דרורה ע,פרטי זהבית ע,פרטי טלילה ע,פרטי שאול ע,פרטי יאיר ע,פרטי יניב ע,פרטי ליאת ע,פרטי מהללאל ע,פרטי ליהי ע,פרטי ליהיא ע,פרטי מיכאלה ע,פרטי שני ע,פרטי גילי ע,פרטי עדי ע,פרטי מירה ע,פרטי עתליה ע,פרטי רעואל ע,פרטי שפרה ע,פרטי שרית ע,פרטי גדליהו ע,פרטי גדליה ע,פרטי נהורה ע,פרטי עודד ע,פרטי דותן ע,פרטי שרון ע,פרטי אודליה ע,פרטי נבו ע,פרטי יוחאי ע,פרטי עזריאל ע,פרטי # שמות פרטיים בכתיב חסר, ו/או מלא. ראה דיון ב niqqudless.odt. # לחלק משמות אלו יש גם שם-עצם-כללי מתאים שמופיע ב-wolig.dat, בכתיב מלא, # אך לשם שלמות כדאי שיופיע גם פה. לדוגמה: עופר, אורן, נוח, דוב, נאוה. # לחלק מהשמות כמו ארנה ונעה מופיע גם הכתיב המלא וגם החסר כנכון באבן-שושן, # ולכן שמתי פה את שניהם. נאוה ע,פרטי נאווה ע,פרטי נעמי ע,פרטי נעם ע,פרטי נועם ע,פרטי אבינעם ע,פרטי אבינועם ע,פרטי אחינעם ע,פרטי אחינועם ע,פרטי עפרה ע,פרטי עמרי ע,פרטי אסנת ע,פרטי משה ע,פרטי יעקב ע,פרטי נח ע,פרטי דב ע,פרטי דוב ע,פרטי אליהו ע,פרטי בנימין ע,פרטי אליקים ע,פרטי אילת ע,פרטי איילת ע,פרטי אילה ע,פרטי איילה ע,פרטי איה ע,פרטי אביגיל ע,פרטי אביחיל ע,פרטי אפרים ע,פרטי אביתר ע,פרטי דליה ע,פרטי ארנה ע,פרטי אורנה ע,פרטי נעה ע,פרטי נועה ע,פרטי נגה ע,פרטי נוגה ע,פרטי בעז ע,פרטי בועז ע,פרטי אוהד ע,פרטי תהילה ע,פרטי עוזי ע,פרטי יהושע ע,פרטי מרדכי ע,פרטי עמנואל ע,פרטי אהרן ע,פרטי אהרון ע,פרטי רוית ע,פרטי רווית ע,פרטי רויטל ע,פרטי רוויטל ע,פרטי זיוה ע,פרטי זיווה ע,פרטי זיוית ע,פרטי זיווית ע,פרטי רינה ע,פרטי עדו ע,פרטי עידו ע,פרטי חדוה ע,פרטי חדווה ע,פרטי חוה ע,פרטי חווה ע,פרטי סיגלית ע,פרטי סיון ע,פרטי סיוון ע,פרטי עידית ע,פרטי ניצה ע,פרטי אדוה ע,פרטי אדווה ע,פרטי בניהו ע,פרטי דוד ע,פרטי אוריה ע,פרטי תקוה ע,פרטי תקווה ע,פרטי צפורה ע,פרטי ציפורה ע,פרטי ינון ע,פרטי זוהר ע,פרטי עוז ע,פרטי הלה ע,פרטי הילה ע,פרטי #זרבבל ###### שמות פרטיים - חיבה: דני ע,פרטי יוסי ע,פרטי רותי ע,פרטי אפי ע,פרטי איציק ע,פרטי אודי ע,פרטי אריק ע,פרטי אלי ע,פרטי צביקה ע,פרטי מיקי ע,פרטי אסי ע,פרטי צחי ע,פרטי שמוליק ע,פרטי מולי ע,פרטי יוני ע,פרטי ציפי ע,פרטי מירי ע,פרטי אסתי ע,פרטי אתי ע,פרטי שלומי ע,פרטי יפית ע,פרטי רני ע,פרטי שוקי ע,פרטי קובי ע,פרטי ###### שמות משפחה, כתיב חסר כשצריך כהן ע,פרטי הכהן ע,פרטי לוי ע,פרטי הראל ע,פרטי קניגסברג ע,פרטי הריס ע,פרטי אהרוני ע,פרטי שטיינר ע,פרטי שפירא ע,פרטי ###### שמות ראשי ממשלת ישראל, שאינם נמצאים במילון שלנו מסיבות אחרות )כמו ###### היותם שמות עבריים מקובלים או מילים עבריות(. כתיב חסר. גוריון ע,פרטי גולדה ע,פרטי רבין ע,פרטי בגין ע,פרטי נתניהו ע,פרטי אולמרט ע,פרטי ###### שמות נשיאי מדינת ישראל, שאינם נמצאים במילון שלנו מסיבות אחרות )כמו ###### היותם שמות עבריים מקובלים או מילים עבריות(. כתיב חסר. ויצמן ע,פרטי הרצוג ע,פרטי ###### שמות לועזיים שימושיים אליזבת ע,נ,פרטי אלכסנדר ע,ז,פרטי אלכסנדרה ע,נ,פרטי אלכס ע,פרטי,ז ריטה ע,פרטי,נ אלברט ע,פרטי,ז ג'ון ע,פרטי,ז הרולד ע,פרטי,ז ויקטור ע,פרטי,ז ויקטוריה ע,פרטי,נ קלרה ע,פרטי,נ # TODO: most writers write רומיאו and not רומאו. why?? I decided to go with my instinct and write רומאו anyway. רומאו ע,פרטי,נ יוליה ע,פרטי,נ אדוארד ע,פרטי,ז אדולף ע,פרטי,ז ארתור ע,פרטי,ז ###### שמות ארכאיים ושל דמויות היסטוריות וספרותיות שלא סבירים כשמות כיום, בכתיב חסר, ושמות משפחה היסטוריים. אחאב ע,פרטי איזבל ע,פרטי אחיתפל ע,פרטי חירם ע,פרטי למך ע,פרטי תרח ע,פרטי מתושלח ע,פרטי ישמעאל ע,פרטי עמלק ע,פרטי המן ע,פרטי אחשורוש ע,פרטי ירבעם ע,פרטי שלומציון ע,פרטי בלעם ע,פרטי אשמדאי ע,פרטי היטלר ע,פרטי אייכמן ע,פרטי הימלר ע,פרטי קוויזלינג ע,פרטי מוסוליני ע,פרטי עשו ע,פרטי קורח ע,פרטי בטהובן ע,פרטי מוצרט ע,פרטי שוברט ע,פרטי ברהמס ע,פרטי צ'ייקובסקי ע,פרטי ביאליק ע,פרטי טשרניחובסקי ע,פרטי קולומבוס ע,פרטי הרצל ע,פרטי קין ע,פרטי הבל ע,פרטי דרווין ע,פרטי אפלטון ע,פרטי אריסטו ע,פרטי ארכימדס ע,פרטי אוילר ע,פרטי כורש ע,פרטי # "נפוליאון" נפוץ יותר מ"נפוליון" אך לדעתי לא מוצדק. אם כבר, "נפולאון" (ללא # יו"ד) קרוב יותר להגייה הצרפתית, ו "נפוליון" הוא צורת ההגייה הנפוצה בישראל. נפוליון ע,פרטי פרויד ע,פרטי שפינוזה ע,פרטי קופרניקוס ע,פרטי קזנובה ע,פרטי רעמסס ע,פרטי טולסטוי ע,פרטי אדיפוס ע,פרטי אנטיגונה ע,פרטי,נ אלקטרה ע,פרטי,נ רוטשילד ע,פרטי גאודי ע,פרטי טיטוס ע,פרטי אנטיוכוס ע,פרטי דרקולה ע,פרטי,ז הומרוס ע,פרטי,ז סופוקלס ע,פרטי,ז הורדוס ע,פרטי,ז יוליוס ע,פרטי,ז אוגוסטוס ע,פרטי,ז אדריאנוס ע,פרטי,ז חניבעל ע,פרטי שייקספיר ע,פרטי,ז איינשטיין ע,פרטי,ז גאוס ע,פרטי,ז הילברט ע,פרטי,ז טורינג ע,פרטי,ז שרדינגר ע,פרטי,ז טרומפלדור ע,פרטי,ז לוליטה ע,פרטי,נ לינקולן ע,פרטי,ז מולוטוב ע,פרטי,ז סוקרטס ע,פרטי,ז פיתגורס ע,פרטי,ז גלילאו ע,פרטי,ז קפלר ע,פרטי,ז פוליצר ע שרלוק ע,פרטי,ז הולמס ע,פרטי,ז # There's also a spelling מיכאלאנג'לו but the Italian spelling has no reason for the extra consonant aleph. מיכלאנג'לו ע,פרטי,ז נוסטרדמוס ע,פרטי,ז ניוטון ע,פרטי,ז סטלין ע,פרטי,ז סינדרלה ע,פרטי,נ לכלוכית ע,פרטי,נ שלגייה ע,פרטי,נ עגנון ע,פרטי,ז צ'רצ'יל ע,פרטי,ז קונפוציוס ע,פרטי,ז קפקא ע,פרטי,ז רמברנדט ע,פרטי,ז ג'וחא ע,פרטי,ז חושם ע,פרטי,ז גוליבר ע,פרטי,ז היפוקרטס ע,פרטי,ז אבוגדרו ע,פרטי,ז אוהם ע,פרטי,ז אגריפס ע,פרטי,ז ארלוזורוב ע,פרטי,ז אטילה ע,פרטי,ז ערפאת ע,פרטי,ז כהנא ע,פרטי,ז כוכבא ע,פרטי,ז פרנקו ע,פרטי,ז דיזנגוף ע,פרטי,ז אלנבי ע,פרטי,ז אזופוס ע,פרטי,ז בלפור ע,פרטי,ז ח'ומייני ע,פרטי,ז גנדהי ע,פרטי,ז דרייפוס ע,פרטי,ז סאדאת ע,פרטי,ז ###### שמות ספרים בתנ"ך, כתיב חסר בראשית ע,פרטי שמות ע,פרטי ויקרא ע,פרטי במדבר ע,פרטי דברים ע,פרטי יהושע ע,פרטי שופטים ע,פרטי שמואל ע,פרטי מלכים ע,פרטי ישעיה ע,פרטי ירמיה ע,פרטי יחזקאל ע,פרטי הושע ע,פרטי יואל ע,פרטי עמוס ע,פרטי עובדיה ע,פרטי יונה ע,פרטי מיכה ע,פרטי נחום ע,פרטי חבקוק ע,פרטי צפניה ע,פרטי חגי ע,פרטי זכריה ע,פרטי מלאכי ע,פרטי תהלים ע,פרטי תהילים ע,פרטי משלי ע,פרטי איוב ע,פרטי # שיר השירים ע,פרטי רות ע,פרטי איכה ע,פרטי קהלת ע,פרטי קוהלת ע,פרטי אסתר ע,פרטי דניאל ע,פרטי עזרא ע,פרטי נחמיה ע,פרטי # דברי הימים ע,פרטי ###### חודשים: ינואר ע,ז,יחיד,פרטי פברואר ע,ז,יחיד,פרטי מרס ע,ז,יחיד,פרטי אפריל ע,ז,יחיד,פרטי מאי ע,ז,יחיד,פרטי יוני ע,ז,יחיד,פרטי יולי ע,ז,יחיד,פרטי אוגוסט ע,ז,יחיד,פרטי ספטמבר ע,ז,יחיד,פרטי אוקטובר ע,ז,יחיד,פרטי נובמבר ע,ז,יחיד,פרטי דצמבר ע,ז,יחיד,פרטי תשרי ע,ז,יחיד,פרטי חשוון ע,ז,יחיד,פרטי מרחשוון ע,ז,יחיד,פרטי כסלו ע,ז,יחיד,פרטי טבת ע,ז,יחיד,פרטי שבט ע,ז,יחיד,פרטי אדר ע,ז,יחיד,פרטי ניסן ע,ז,יחיד,פרטי אייר ע,ז,יחיד,פרטי סיוון ע,ז,יחיד,פרטי תמוז ע,ז,יחיד,פרטי אב ע,ז,יחיד,פרטי אלול ע,ז,יחיד,פרטי # Interestingly, the month name רמדאן often appears with the definite article. רמדאן ע,ז,יחיד ###### מדינות )קיימות והסטוריות(: # אין צורך לחזור פה על מדינות שכבר מופיעות יחד עם עם ב-wolig.dat # an archaic alternative to פולין, that is too easily confused with # פולנייה... #פולניה ע,פרטי כרתים ע,פרטי לאוס ע,פרטי ליכטנשטיין ע,פרטי # Note: this is rav-millim's spelling, without an Aleph. See also אנטרקטי # in wolig.dat. אנטרקטיקה ע,פרטי מונקו ע,פרטי ביזנטיון ע,פרטי אספמיה ע,פרטי אוגרית ע,פרטי ברמודה ע,פרטי גיברלטר ע,פרטי אטלנטיס ע,פרטי גמביה ע,פרטי הונדורס ע,פרטי זמביה ע,פרטי סמואה ע,פרטי בוהמיה ע,פרטי מורביה ע,פרטי # [4] prefers זימבבווה but also allows זימבבואה. I'm allowing the latter # because it's 10 times more popular on a Google search, and also follows # the common pronunciation more accurately. זימבבווה ע,פרטי #זימבבואה ע,פרטי # The same comment applies to בוצוונה ([4]) vs. בוצואנה (20 times more popular in Google). In hebrew Wikipedia, they preferred בוטסואנה. בוצוונה ע,פרטי #בוצואנה ע,פרטי ברבדוס ע,פרטי ג'יבוטי ע,פרטי טהיטי ע,פרטי טונגה ע,פרטי טימור ע,פרטי טנריף ע,פרטי ניקרגואה ע,פרטי מאוריציוס ע,פרטי מרטיניק ע,פרטי מיאנמר ע,פרטי סיישל ע,פרטי פפואה ע,פרטי צ'אד ע,פרטי מאלי ע,פרטי גרנדה ע,פרטי טובלו ע,פרטי # התעתיק של Lesotho צריך להיות לסותו, וזה הכתיב שרב-מילים מעדיף. אבל רב-מילים, # מקבל גם לסוטו, וזהו כתיב נפוץ פי 50 בגוגל! אז לחשוב לקבל אותו. לסותו ע,פרטי סווזילנד ע,פרטי קיריבטי ע,פרטי מונטנגרו ע,פרטי גיאנה ע,פרטי טרינידד ע,פרטי טובגו ע,פרטי רודזיה ע,פרטי אנטיגואה ע,פרטי ברבודה ע,פרטי גואם ע,פרטי # צריך להוסיף צרופי מילים... #ניו #זילנד #סלבדור #קוסטה #ריקה #הונג #קונג ###### שמות מקומות נוספים: # בניגוד לשמות מדינות וערים, שמות הרים, נחלים ומספר אזורים בארץ מקבלים ה"א # הידיעה, ולכן לא הוספתי להם "פרטי": כרמל ע שרון ע נגב ע ירדן ע גולן ע בשן ע # כינרת is the correct ktiv hasar niqqud. TODO: Should I allow כינרת also?? כנרת ע כינרת ע חרמון ע תבור ע ארבל ע שומרון ע גלבוע ע גיהינום ע איילון ע ירקון ע קישון ע געתון ע נעמן ע חצבני ע מצדה ע גמלא ע,פרטי לטרון ע,פרטי עזאזל ע,פרטי אולימפוס ע אקרופוליס ע נילוס ע יאור ע ירמוך ע סואץ ע,פרטי דנובה ע וולגה ע חידקל ע גנגס ע סמבטיון ע ותיקן ע רוביקון ע מיסיסיפי ע מיזורי ע # [4] adds aleph for niqqud-less spelling: הימלאיה. הימליה ע אנדים ע פירנאים ע,רבים אוורסט ע אלפים ע,רבים אינקה ע פנטגון ע,יחיד קפיטול ע,יחיד קשמיר ע,פרטי סומטרה ע,פרטי פטגוניה ע,פרטי בורנאו ע,פרטי מיורקה ע,פרטי בירנית ע,פרטי # [4] adds aleph for niqqud-less spelling: בירוביג'אן. בירוביג'ן ע,פרטי # אזורים שנהוג לכתוב את שמם רק מיודעים: הבלקן ע,פרטי # as in ארז הלבנון. see also country name, לבנון הלבנון ע,פרטי הקווקז ע,פרטי # בתי חולים בישראל איכילוב ע,פרטי וולפסון ע,פרטי שניידר ע,פרטי אברבנאל ע,פרטי ###### שפות: # שפות שהן פשוט הנקבה של העם )השפה ה...( שמופיע ב-wolig.dat נמחקו מפה. # See also יידי, אידי. TODO: decide on just one spelling. יידיש ע אידיש ע לדינו ע אספרנטו ע אוגריתית ע סנסקריט ע סווהילית ע זולו ע ###### ערים: # Note that some cities, in Israel and abroad, that don't appear in this # section, appear in wolig.dat with their "person from ..." adjective. See # for example חיפאי and לונדוני. פ"ת ע,פרטי כפ"ס ע,פרטי ראשל"צ ע,פרטי #רשל"צ ע,פרטי - not recognized by [4] and much less common in Google than ראשל"צ ב"ש ע,פרטי כ"ס ע,פרטי ר"ג ע,פרטי ת"א ע,פרטי רמה"ש ע,פרטי עפולה ע,פרטי רמלה ע,פרטי הרצליה ע,פרטי חברון ע,פרטי סדום ע,פרטי # TODO: the niqqudless spelling is עמרה with cholam chaser. However, in Google, the phrase "סדום ועמורה" is 1000 times more popular than "סדום ועמרה"! עמורה ע,פרטי מוצקין ע,פרטי חולון ע,פרטי ערד ע,פרטי יקנעם ע,פרטי גבעתיים ע,פרטי כרמיאל ע,פרטי עתלית ע,פרטי שפרעם ע,פרטי בנימינה ע,פרטי חצור ע,פרטי טבעון ע,פרטי יבנאל ע,פרטי יבנה ע,פרטי יטבתה ע,פרטי ירוחם ע,פרטי מגידו ע,פרטי קצרין ע,פרטי יהוד ע,פרטי יודפת ע,פרטי יזרעאל ע,פרטי פקיעין ע,פרטי ענתות ע,פרטי תמנע ע,פרטי נהלל ע,פרטי גבעון ע,פרטי עציון ע,פרטי עתניאל ע,פרטי # The vowelled spelling is לד, so why not write it this way? I don't know. # [4] spells it with an added waw, and so does everyone, apparently. # TODO: rethink this decision. לוד ע,פרטי סח'נין ע,פרטי עצמון ע,פרטי נען ע,פרטי טייבה ע,פרטי קלנסווה ע,פרטי יריחו ע,פרטי ג'נין ע,פרטי קלקיליה ע,פרטי רפיח ע,פרטי רמאללה ע,פרטי ג'לג'וליה ע,פרטי נהריים ע,פרטי נינוה ע,פרטי ריגה ע,פרטי וילנה ע,פרטי טלין ע,פרטי # often written טאלין... דרזדן ע,פרטי ברצלונה ע,פרטי מדריד ע,פרטי אמסטרדם ע,פרטי רוטרדם ע,פרטי המבורג ע,פרטי בלגרד ע,פרטי עמאן ע,פרטי טאבה ע,פרטי דמשק ע,פרטי קהיר ע,פרטי מוסקבה ע,פרטי איסטנבול ע,פרטי קונסטנטינופול ע,פרטי אנקרה ע,פרטי אוסלו ע,פרטי בריסל ע,פרטי האג ע,פרטי טהראן ע,פרטי טריפולי ע,פרטי ליסבון ע,פרטי ניירובי ע,פרטי # TODO: perhaps ניקוסייה according to the academia rules? ניקוסיה ע,פרטי סרייבו ע,פרטי קוסובו ע,פרטי # [4] says the ktiv chaser is פרג, maleh is פראג. I have no idea why. פראג ע,פרטי קייב ע,פרטי קזבלנקה ע,פרטי קופנהגן ע,פרטי אלג'יר ע,פרטי # [4] prefers בודפסט over בודפשט (but allows both). But most people pronounce # and write בודפשט בודפשט ע,פרטי # With בוקרשט, the case is simpler because [4] writes it with a left sin, so there's no question on how to spell it בוקרשט ע,פרטי # Sometimes written as ג'נווה, ז'נבה, ז'נווה. [4] explicitly lists ז'נווה as # a variant spelling of ג'נבה. In a Google search, ג'נבה is the most popular # spelling. TODO: think which to accept. ג'נבה ע,פרטי סידני ע,פרטי סנטיאגו ע,פרטי אדינבורו ע,פרטי גלזגו ע,פרטי אוקלנד ע,פרטי אנטבה ע,פרטי אנטוורפן ע,פרטי # [4] doubles the yod for the tsere male: בייג'ינג ע,פרטי # [4] writes just one yod for the tsere male, others sometimes write ביירות ביירות ע,פרטי מינסק ע,פרטי בלפסט ע,פרטי בנגקוק ע,פרטי ברטיסלבה ע,פרטי דבלין ע,פרטי דלהי ע,פרטי מנילה ע,פרטי # [4] has the extra alpeh in הוואנה also for voweled spelling. הוואנה ע,פרטי הלסינקי ע,פרטי ורשה ע,פרטי טייפה ע,פרטי יוהנסבורג ע,פרטי פרטוריה ע,פרטי לובליאנה ע,פרטי פרנקפורט ע,פרטי הירושימה ע,פרטי # [4] adds aleph for niqqud-less spelling: נגסאקי נגסקי ע,פרטי אושוויץ ע,פרטי טרבלינקה ע,פרטי פונאר ע,פרטי קולומבו ע,פרטי קטמנדו ע,פרטי קנברה ע,פרטי טוקיו ע,פרטי טשקנט ע,פרטי טביליסי ע,פרטי סטוקהולם ע,פרטי רנגון ע,פרטי בוגוטה ע,פרטי # [4] writes, I don't know why, בומבי with one yod. בומביי is much more common and more consistent with out decision to write "ei" with two yods. בומביי ע,פרטי # Similarly for Marseille, ]4[ writes מרסי with one yod, I don't know why. מרסיי ע,פרטי ברסלב ע,פרטי לגוס ע,פרטי מרקש ע,פרטי מוגדישו ע,פרטי מונרוביה ע,פרטי צנעא ע,פרטי קינשסה ע,פרטי אוקספורד ע,פרטי אלכסנדריה ע,פרטי סטלינגרד ע,פרטי נירנברג ע,פרטי סלוניקי ע,פרטי גנואה ע,פרטי דובאי ע,פרטי שנגחאי ע,פרטי קייפטאון ע,פרטי פוניבז' ע,פרטי זלצבורג ע,פרטי שטרסבורג ע,פרטי הלסינבורג ע,פרטי אודסה ע,פרטי פומפיי ע,פרטי מילנו ע,פרטי בולוניה ע,פרטי פיזה ע,פרטי שטוטגרט ע,פרטי בזל ע,פרטי רודוס ע,פרטי קורפו ע,פרטי ג'רבה ע,פרטי רבאט ע,פרטי איזמיר ע,פרטי # מדינות חשובות בארצות: # מדינות ארה"ב: אוהיו ע,פרטי אוקלהומה ע,פרטי אורגון ע,פרטי איווה ע,פרטי איידהו ע,פרטי אילינוי ע,פרטי אינדיאנה ע,פרטי אלבמה ע,פרטי אלסקה ע,פרטי אריזונה ע,פרטי ארקנסו ע,פרטי ג'ורג'יה ע,פרטי דלוור ע,פרטי דקוטה ע,פרטי הוואי ע,פרטי ויומינג ע,פרטי וושינגטון ע,פרטי ויסקונסין ע,פרטי וירג'יניה ע,פרטי ורמונט ע,פרטי טנסי ע,פרטי #טקסס ע,פרטי יוטה ע,פרטי לואיזיאנה ע,פרטי מונטנה ע,פרטי מיזורי ע,פרטי מיין ע,פרטי מיניסוטה ע,פרטי מיסיסיפי ע,פרטי מישיגן ע,פרטי מסצ'וסטס ע,פרטי מרילנד ע,פרטי נבדה ע,פרטי נברסקה ע,פרטי #ניו ג'רזי ע,פרטי המפשייר ע,פרטי יורק ע,פרטי #מקסיקו ע,פרטי פלורידה ע,פרטי פנסילבניה ע,פרטי קולורדו ע,פרטי קונטיקט ע,פרטי #קליפורניה ע,פרטי קנזס ע,פרטי קנטקי ע,פרטי קרוליינה ע,פרטי #רוד איילנד #פרובינציות קנדה: ניופאונדלנד ע,פרטי לברדור ע,פרטי # נובה סקוטיה # איי הנסיך אדוארד # ניו ברזוויק קוויבק ע,פרטי אונטריו ע,פרטי מניטובה ע,פרטי ססקצ'ואן ע,פרטי אלברטה ע,פרטי קולומביה ע,פרטי # ערים חשובות בארה"ב, וגם אזורים בוסטון ע,פרטי שיקגו ע,פרטי # לוס אנג'לס יוסטון ע,פרטי פילדלפיה ע,פרטי אטלנטה ע,פרטי אורלנדו ע,פרטי הונולולו ע,פרטי דטרויט ע,פרטי סיאטל ע,פרטי מיאמי ע,פרטי מנהטן ע,פרטי ברוקלין ע,פרטי פיטסבורג ע,פרטי # ערים חשובות בקנדה טורונטו ע,פרטי מונטריאול ע,פרטי ונקובר ע,פרטי אוטווה ע,פרטי קלגרי ע,פרטי אדמונטון ע,פרטי ויניפג ע,פרטי ###### כוכבי לכת: )שמות עבריים בכתיב מלא, ושמות לועזיים כאשר נפוץ( # כוכב חמה מרקורי ע,פרטי נוגה ע,פרטי ונוס ע,פרטי # ארץ מאדים ע,פרטי #מרס ע,פרטי צדק ע,פרטי #יופיטר ע,פרטי שבתאי ע,פרטי #סטורן ע,פרטי אורנוס ע,פרטי נפטון ע,פרטי פלוטו ע,פרטי ###### שמות מהמיתולוגיה, אלים, וכד': יהוה ע,ז,פרטי מוחמד ע,ז,פרטי קרישנה ע,ז,פרטי ישוע ע,פרטי,ז ישו ע,פרטי,ז # [4] says that the spelling בודהא is more popular than בודהה, but Google shows the opposite. TODO: consider accepting both forms (like [4])). בודהה ע,ז,פרטי אללה ע,ז,יחיד,פרטי אמזונה ע,נ,יחיד אמזונות ע,נ,רבים אנדרומדה ע,פרטי,נ אפולו ע,פרטי,ז אפרודיטה ע,פרטי,נ אכילס ע,פרטי,ז הרקולס ע,פרטי,ז פוסידון ע,פרטי,ז פניקס ע,פרטי,ז פנדורה ע,פרטי,נ פרומתאוס ע,פרטי,ז זאוס ע,פרטי,נ קופידון ע,פרטי,ז # [4] adds yod in niqqud-less spelling: אודיסיאוס אודיסאוס ע,פרטי,ז וולקן ע,פרטי,ז סיזיפוס ע,פרטי,ז מילונאייצספל ע,ז ספינקס ע,ז דמוקלס ע,פרטי,ז יופיטר ע,פרטי,ז # יחידות צה"ל גולני ע,פרטי,ז גבעתי ע,פרטי,ז # חסידויות )שמות בכתיב עברי, לא יידיש( בלז ע,פרטי ###### ראשי תיבות: # Note: according to custom, the plural of ח"כ is ח"כים and its feminine # is ח"כית, despite the fact that the plural of "חבר כנסת" is not "חבר כנסתים". # This is also mandated by the Academia (see discussion in niqqudless.odt) # and accepted in dictionaries like [4]. ח"כ ע,ז,יחיד ח"כים ע,ז,רבים ח"כית ע,נ,יחיד ח"כיות ע,נ,רבים חה"כ ע,יחיד,סמיכות יש"ע ע,יחיד בית"ר ע,יחיד עוה"ד ע,יחיד,פרטי ש"ס ע,ז,יחיד ש"ח ע,ז,יחיד ד"ר ע,יחיד ז"ל זצ"ל שליט"א יבל"ח נ"ל ח"מ ארה"ב ע,פרטי אחה"צ ע,פרטי אח"כ אח"י ע,סמיכות נ"מ ת נ"ט ת ס"ט ימ"מ ע,יחיד יס"מ ע,יחיד יחב"ל ע,יחיד מ"צ ע,יחיד מצ"ח ע,יחיד נח"ל ע,יחיד גדנ"ע ע,יחיד של"ח ע,יחיד גל"צ ע,פרטי אב"כ מל"ח רפא"ל ע,יחיד,פרטי תע"ש ע,יחיד,יחיד יו"ש ע"ש להד"ם חו"ל בס"ד בסה"כ נתב"ג ע,פרטי בי"ד ביה"ד בימ"ש ביהמ"ש יועמ"ש #בימה"ש is בית משפט השלום, but is too easily confused with ביהמ"ש... #בימה"ש בי"ח ביה"ח בתיה"ח בי"ס ביה"ס בתי"ס בתיה"ס # We also accept דוח - see wolig.dat מד"א ע,פרטי בג"ץ אופ"ק למ"ס תמ"ס תמ"ת קק"ל מע"צ חב"ד ע"י מח"ש ע,פרטי צה"ל ע,פרטי רה"מ ע,פרטי מוצ"ש סל"ד חז"ל סה"כ נאט"ו ע,פרטי נאס"א ע,פרטי סכו"ם בע"מ כ"כ אש"ף ע,פרטי פת"ח ע,פרטי אש"ל רמב"ם רמב"ן ראב"ד רצ"ב בינ"ל בד"כ ב"ה תנצב"ה עפ"י ע"ע נעמ"ת ע,פרטי ד"ש ע,ז,נ,יחיד ד"שים ע,ז,נ,רבים לפנה"ס לפסה"נ לסה"נ שתה"פ יח"צ תק"ם כיו"ב סופ"ש סופה"ש בע"פ בע"ח בע"ה פו"פ א"י ע,נ,יחיד פלמ"ח לח"י אצ"ל כ"ץ ש"ך זק"א ביל"ו ימק"א עכו"ם אצ"ג רש"פ פ"נ ע"מ צ"ל ר"ת ר"ח ע"פ אע"פ אעפ"י אעפ"כ עכ"פ מצ"ב ע"ס עו"ש רש"י ע,ז,יחיד,פרטי הקב"ה ע,ז,יחיד,פרטי תקשי"ר הי"ד ויצ"ו ע,פרטי יח"צ כדוה"א ע,יחיד,פרטי מועה"ב ע,יחיד,פרטי מע"צ ע,פרטי,פרטי אב"ד ע,ז,יחיד רבש"ע ע,ז,יחיד,פרטי שו"ת ע,נ,רבים אמ"י אמ"ת ע"ר ע,יחיד דרא"פ ע,יחיד,פרטי אקו"ם ע,יחיד,פרטי זה"ב ע,יחיד חט"ב ע,יחיד ניל"י ע,יחיד,פרטי צד"ל ע,יחיד,פרטי קופ"ג ע,יחיד קופ"ח ע,יחיד רע"מ # מפלגות: מפא"י מפד"ל ##### אותיות: אל"ף ע,יחיד,נ בי"ת ע,יחיד,נ גימ"ל ע,יחיד,נ דל"ת ע,יחיד,נ ה"א ע,יחיד,נ וי"ו ע,יחיד,נ זי"ן ע,יחיד,נ חי"ת ע,יחיד,נ טי"ת ע,יחיד,נ יו"ד ע,יחיד,נ כ"ף ע,יחיד,נ למ"ד ע,יחיד,נ מ"ם ע,יחיד,נ נו"ן ע,יחיד,נ סמ"ך ע,יחיד,נ עי"ן ע,יחיד,נ פ"א ע,יחיד,נ צד"י ע,יחיד,נ קו"ף ע,יחיד,נ רי"ש ע,יחיד,נ שי"ן ע,יחיד,נ תי"ו ע,יחיד,נ ##### אותיות יווניות: # כתיב לפי רב-מילים. לא ברור לי כלל אלו כללים הנחו אותם בטרנסליטרציה - מדוע # יו"ד בביתא, איטה, אבל לא ב- זטה, ומדוע לפעמים א ולפעמים ה בסוף המילה? מתי # ט ומתי ת? מדוע יוטה? מדוע למדא ולא למבדא? מדוע מי ולא מיו? מדוע פי ולא פיי? # האם לאפשר גם סיגמא וגם סיגמה כמו רב-מילים, ואם כן מדוע לא באותיות האחרות? # למה כי ולא חי? #אלפא ע,פרטי #ביתא ע,פרטי #גמא ע,פרטי #דלתא ע,פרטי #אפסילון ע,פרטי #זטה ע,פרטי #איטה ע,פרטי #תיטה ע,פרטי #יוטה ע,פרטי #כפה ע,פרטי #למדא ע,פרטי #מי ע,פרטי #ני ע,פרטי #כסי ע,פרטי #אומיקרון ע,פרטי #פי ע,פרטי #רו ע,פרטי #סיגמא ע,פרטי #טאו ע,פרטי #איפסילון ע,פרטי #פי ע,פרטי #כי ע,פרטי #פסי ע,פרטי #אומגה ע,פרטי # האותיות היווניות, בכתיב שתואם את כתיב האקדמיה מ [6, page 82]. לחלק מהאותיות, # לא מופיע בהחלטת האקדמיה הכתיב הנכון: למשל מי, מו או מיו? ני, נו או ניו? # פי, פיי או פאי? איפסילון או אופסילון? כי, חי או כאי? במקרים כאלו השתמשתי # בצורה בה אני זוכר את האות כפי שנהגתה בטכניון בימי לימודיי. אלפא ע,נ,פרטי אלפה ע,נ,פרטי בטא ע,נ,פרטי בטה ע,נ,פרטי גמא ע,נ,פרטי גמה ע,נ,פרטי דלטא ע,נ,פרטי דלטה ע,נ,פרטי אפסילון ע,נ,פרטי זטא ע,נ,פרטי זטה ע,נ,פרטי אטא ע,נ,פרטי אטה ע,נ,פרטי תטא ע,נ,פרטי תטה ע,נ,פרטי יוטא ע,נ,פרטי יוטה ע,נ,פרטי קפא ע,נ,פרטי קפה ע,נ,פרטי למדא ע,נ,פרטי למדה ע,נ,פרטי מיו ע,נ,פרטי ני ע,נ,פרטי קסי ע,נ,פרטי אומיקרון ע,נ,פרטי פאי ע,נ,פרטי רו ע,נ,פרטי סיגמא ע,נ,פרטי סיגמה ע,נ,פרטי טאו ע,נ,פרטי אופסילון ע,נ,פרטי פי ע,נ,פרטי כי ע,נ,פרטי פסי ע,נ,פרטי אומגא ע,נ,פרטי אומגה ע,נ,פרטי ##### שמות אנגליים של אותיות לטיניות. # כתיב לפי רב-מילים עם תיקונים ברוח האקדמיה )ראה בהמשך ובמסמך niqqudless.sxw(. # שימו לב שישנן מספר אותיות ששמן נכתב בצורה זהה בכתיב חסר ניקוד - A/E/I, V/Y, # G/J )אם כותבים לפי כתיב רב-מילים(, ולכן יש הכרח להשתמש בניקוד חלקי כדי # להבהיר לאיזו אות מתכוונים. # אני לא יודע מדוע רב-מילים טוען שהכתיב חסר הניקוד של I הוא אי, ולא איי, # ומדוע Y אינו ויי. הדוגמה "סי-איי-אי" (CIA) בסעיף 12 של כללי הפיסוק של האקדמיה # מראה שהאקדמיה כנראה דווקא מעדיפה איי, ולא אי, עבור I. אני אכליל החלטה זו גם # עבור Y. # אני הוספתי "אקס", הצורה הרגילה בה מבטאים x, שלא מופיעה ברב-מילים במשמעות אות. אי ע,פרטי בי ע,פרטי סי ע,פרטי די ע,פרטי אי ע,פרטי אף ע,פרטי ג'י ע,פרטי איץ' ע,פרטי איי ע,פרטי ג'י ע,פרטי קי ע,פרטי אל ע,פרטי אם ע,פרטי אן ע,פרטי או ע,פרטי פי ע,פרטי קיו ע,פרטי אר ע,פרטי אס ע,פרטי טי ע,פרטי יו ע,פרטי וי ע,פרטי דבליו ע,פרטי אקס ע,פרטי ויי ע,פרטי זי ע,פרטי זד ע,פרטי איקס ע,פרטי ##### תווים מוזיקליים דו ע,פרטי רה ע,פרטי מי ע,פרטי פה ע,פרטי סול ע,פרטי לה ע,פרטי סי ע,פרטי ##### קיצורים: וכו' וכד' ושות' פרופ' ע,יחיד,ז נק' ע,יחיד,נ עמ' ע,יחיד,ז רח' ע,יחיד,ז שד' ע,רבים,נ אינג' ע,יחיד,ז יח' ע,יחיד,נ גר' ע,יחיד,ז ##### ראשי תבות "מתורגמים", לא מעברית. # אני לא בטוח שבכלל כדאי לקבל כאלו. ]4[ מקבל אותם, ולא תמיד ברור מה בדיוק # היו הכללים שקבעו את הכתיב )השווה אונסק"ו, יוניפי"ל, יוניצ"ף למטה(. אונסק"ו ע,פרטי יוניפי"ל ע,פרטי # [4] prefers אוניצ"ף, but popular speach and writing has it יוניצ"ף. יוניצ"ף ע,פרטי דנ"א ע,ז ###### מספרים: # המספרים הסודרים (ראשון, שני, שלישי, ...) הם תארים ומופיעים ב wolig.dat. ------- אחד אחדים אחת ------- שניים שני שניהם שנינו שניכם שתיים שתי שתיהן שתינו שתיכן # הצורות "דו", "תלת", אינן סמיכות רגילה שכן כותבים "התלת-ממדי" ולא "תלת-הממדי". # לכן לא הוספנו "-" בסוף המילה, כדי לא לאסור את ה"א הידיעה. לא מצאתי החלטת # אקדמיה בנושא. דו # שימו לב לצורות שנים-, שתים-, שמופיעות לעיל כצירופים. ------- שלוש שלושה שלושת שלושתנו שלושתכם שלושתכן שלושתם שלושתן תלת ------- ארבע ארבעה ארבעת ארבעתנו ארבעתכם ארבעתכן ארבעתם ארבעתן ------- חמש חמישה חמשת חמשתנו חמשתכם חמשתכן חמשתם חמשתן ------- שש שישה ששת ששתנו ששתכם ששתכן ששתם ששתן ------- שבע שבעה שבעת שבעתנו שבעתכם שבעתכן שבעתם שבעתן ------- שמונה שמונת שמונתנו שמונתכם שמונתכן שמונתם שמונתן ------- תשע תשעה תשעת תשעתנו תשעתכם תשעתכן תשעתם תשעתן ------- עשר עשרה עשרת ------- עשרים ------- שלושים ------- ארבעים ------- # note added yod for ktiv maleh. See discussion in niqqudless.odt. חמישים ------- # note added yod for ktiv maleh. See discussion in niqqudless.odt. שישים ------- שבעים ------- שמונים ------- תשעים ------- # מאה and its inflections are in wolig.dat מאתיים ------- # אלף and its inflections are in wolig.dat אלפיים ------- מיליון מיליונים מיליוני- ------- מיליארד מיליארדים מיליארדי- ------- ביליון ביליונים ביליוני- ------- טריליון טריליונים טריליוני- ------- קוודריליון קוודריליונים קוודריליוני- ------- קווינטיליון קווינטיליונים קווינטיליוני- hspell-1.4/wolig.dat0000644000076600007650000141253613123032602012474 0ustar nyhrl# Wolig (WOrdLIst Generator) data file # Copyright (C) 2000-2017 Nadav Har'El, Dan Kenigsberg # # This file lists base nouns and adjectives in Hebrew, from which the # "wordlist generator" program wolig.pl builds the complete list of inflected # nouns and adjectives. For most words wolig.pl can figure out on its own how # to correct inflect them, but for many options, or hints, need to be given: # # options for each word: # ע - noun # ות,ים,יות,אות,יים,יחיד,רבים=... - # Wolig tries to guess how to make a plural (default is the masculin- # common ים, unless the word ends in ה or ת, in which case it uses ות, # or if it ends in ות it uses יות). # If the default guess is incorrect, the correct pluralization rule # should be specified. Several rules can be specified at the same # time, for the rare cases where several forms are correct (e.g., # see אות). # If the יחיד option is given, the word will not have plural # inflections unless explictly chosen; This option is the default # for words ending with "יות", e.g., רוחניות. # # In some cases, the proper plural (or one of the possible plurals) # has a non-standard relation to the original word. For example # צל-צללים, שפה-שפתות, בת-בנות, אחות-אחיות, בית-בתים. In this case, # and when the inflections of that plural behave "normally", it is # possible to give the plural directly: for example: רבים=בנות. # זוגי # This option adds, in addition to the plural, the pair plural (zugi). # This option is similar, but not identical, to the יים option. # The differences are: 1. With זוגי, only the pair plural itself - not # its inflections - is generated. 2. זוגי doesn't override the default # plural selection, and is generated in addition to the default or # other selected plurals. # The זוגי option is useful for words like שנתיים, יומיים, שעתיים, # שבועיים, נקודתיים (there is no שנתיי = my two years), while the # יים option is useful for ציפורניים, שפתיים, קרניים (the inflections # are useful in this case). # אין_יחיד, אין_נטיות_יחיד - # This word's singular forms are not considered valid words and # should not be output. # אין_נטיות_יחיד excludes all the singular forms except the singular # nifrad itself. If the nismach form *is* desired, you can get it back # by using the explicit נסמך= option - or use אין_כינויים instead. # אין_נטיות - # A shortcut for יחיד and אין_נטיות_יחיד, leaves only the singular # nifrad form. # אין_נטיות_רבים - # Removes plural nismach and possessive forms, leaving only the plural # itself. # אין_כינויי_יחיד, אין_כינויי_רבים, אין_כינויים - # Causes possessive forms not to be output: only nifrad and nismach # forms are left for each number. # נפרד=..., נסמך=... # This allows to explictly specify different words if they are # completely different from the rest of the inflections. See for # example שה, פה, אשה (under שי, פי, אשת). # נסמכים=... # This allows to explicitly specify the plural נסמך. Note that # currently this option only has effect when specified together with # the רבים=... option. Also, unlike the previous two options, changing # the נסמכים also changes some of the plural possesives. # See for example תיש, עין )עיינות(, גולגולת, גברת. # נפרדים=... # This allows to explicitly specify the plural נפרד, while other # forms of the plural are determined by the (mandatory) רבים= option. # This option is rarely needed in words where the plural form was # combined from two different archaic plurals: see שנה and מים. # שמור_ת - # Keep the ת (or ה) that would normally be removed during # pluralization. For example, compare חניתות / מכוניות - the former # needs שמור_ת. This is a rare case (see [1], page 12). For ה it's # even rarer - see אמה. # אבד_ו - # Loose ktiv-male em-kria (ו) in some of the plural inflections, # because it was changed into shva. See [1, page 48]. Exactly # which inflections lose the vav is different for ים and ות plurals # (this option is not currently supported in other types of plurals). # # The seemingly unrelated (at first glance) cases of שוק and שור # whose vowel vav turns into a consonant in some of the inflections # is also handled by this case - see a comment below on the deep # reasons of why this happens. # אבד_י - # Loose ktiv-male em-kria (י) in all inflection except the base # words because the chirik or tsere are changed to segol or patach # in all inflections. For example, עיפרון, היריון, תיאבון. # סגול_ה - # Normally, in words ending with ה (ביצה (egg), כלבה (bitch), etc.) # the ה is replaced by tav in smichut and in all singular inflections. # However, when the ה is preceeded by segol (like in the masculine # nouns מורה, מחנה, חזה), the ה is kept in smichut, and dropped # altogether in the rest of the singular inflections. # מיוחד_אח - # The words אח, אב, חם include an extra yod in the singular smichut # (e.g., אחי-, אחיו, and not אח-, אחו). # מיוחד_שן - # The plural of שן should have been שניים, but to distinguish it from # the number, an extra yud is added in all inflections. This option # can also be used for alternative (non-academia) ktiv male rules # (see more on that below). # נקבה,זכר - # These options are not used by wolig.pl for the noun inflections - # they are just optionally output as extra information into the # detailed output file, in case the user might want to use this # information. The current Hspell spell-checker can't make use of # that information. If the זכר and/or נקבה options are not given, # heuristics are used to guess the correct gender based on the word # and the other inflection options given. These heuristics are # correct in about 99% of the cases, so most words will not need to # specify the זכר or נקבה options explictly. # ת - adjective # שמור_ה - # Keep the ה that would normally be removed during the inflection. # For example compare גבוה / יפה - the former needs שמור_ה because # the original word had a "mapik" in the ה. # נקבה_ת, נקבה_ה, נקבה_ית, יחידה=... # Usually making an adjective feminine requires adding a final ה, # except when the adjective ends with י in which case ת is added # to make it feminine. But in some other exceptional cases, ת needs # to be added - for example, פושר/פושרת. In some cases (such as שני) # both are valid. # נקבה_ית is similar to נקבה_ת, but an extra י is added to the # feminine form. This case is useful in some cases when it's not # even clear whether the word in question is an adjective or a noun. # The יחידה=... option is used to define a non-standard feminine # form, as in ממאיר to ממארת. (the plural feminine remains standard). # ם - # The plural should be done by adding only ם, not ים as usual. See # for example זכאי (ending with patach-aleph-yud). # יחיד=... - # Overrides the masculine singular forms, which is sometimes useful # when these are not derived in the same way as the rest of the # inflections (see for example נשוי, יפהפה). # עם - # A special option for nationality adjectives, which for convenience # an automatically include country-name and other needed forms. See # examples later in this file. # # references: # [1] לוח השמות השלם, ד"ר שאול ברקלי, מהדורה 11, הוצאת ראובן מס ירושלים, # 0691, וכן מהדורה 81, 0002. # [2] המילון העברי המרוכז, אברהם אבן-שושן, הדפסת 0002. כולל במוסף ה' )עמוד # 349( את "מדריך לכתיב חסר-הניקוד". # [3] מילון ההווה, שושנה בהט ומרדכי מישור, הדפסה 5991. כולל בנספח א' )עמוד # 596( את "כללי הכתיב חסר-הניקוד, מהדורה חדשה". # [4] המנשק המקוון של מילון רב-מילים. http://www.ravmilim.co.il/ # [5] מילון אבן-שושן המרוכז מחודש ומעודכן לשנות האלפיים, הדפסת 2004. # [6] "החלטות האקדמיה בדקדוק", לשוננו לעם, מחזור נה, חוברת א-ב, תשס"ה-תשס"ו # # The following lines will appear also in the resulting output file # (nouns.hif): # #* This file was generated automatically from original data prepared by the #* Hspell project (http://hspell.ivrix.org.il/). #* Copyright (C) 2000-2017 Nadav Har'El, Dan Kenigsberg #* This file, like the rest of Hspell, is licensed under the GNU Affero General #* Public License (AGPL) version 3. #### words that show important features - wolig should be tested on them. כלב ע כלבה ע כלבי ת כלביות ע,יחיד ירוק ת גמד ע גמדי ת גמדת ע # [3] gives only גמדת as the female of גמד, but [4] also gives גמדה. Doing a Google search, גמדה is overwhelmingly more popular than גמדת. גמדה ע גמדות ע,יחיד חנות ע אות ע,ות,שמור_ת,זכר אות ע,יות,שמור_ת,נקבה מכונית ע חזית ע,שמור_ת חזיתי ת # Note: extra yud added because of ktiv male rules: חזייה ע # note extra vav added by academia's ktiv male: שולחן ע,ות שולחני ת # note: [1, page 12] says that טלית is correct with שמור_ת or without it. # but everyone uses it as שמור_ת. If some time we'll want both forms to be # correct, we'll need to have an option (say זרוק_ת) that we can use both # options to get both possibilities of pluralization. טלית ע,שמור_ת # a strange exception (and a strange word) in [1, page 13]. Unlike the ות # pluralization, in the ים case a final ת should not be dropped, and שמור_ת # should not be necessary. A final ה will still be dropped unless שמור_ת is # given: see for example חיטה. #I commented this out just because it's an obscure word and שביט is more common #שבית ע,ים # note extra yud added by academia's ktiv male: חיטה ע,ים # [1, page 22] says that שנה accepts either ים or ות as plural. [2] says # that the plural is שנים, but the smichut of both forms are allowed. [3] # calls the ים-based smichut "literary". Usually, modern speakers use ים for # the nifrad plural, but ות for the other plural inflections (smichut, # possession, etc.). This is also what [4] gives as the legal inflections. # The following commented line allows all inflections for both ות and ים: #שנה ע,ים,ות,יים # But we decided to go with the following line, which allows only the modern # usage: שנים nifradim, and שנות- for all other inflections. שנה ע,רבים=שנות,נפרדים=שנים,זוגי שנתי ת # The word מים is a strange exception. It's usual inflections - מימי-, # מימיו, etc., appear as if it's coming from a plural "מימים". The נפרדים # option takes care of this case. The only inflection we can't add here # is the nismach מי-, which coexists with מימי-. This extra inflection is # added in the seperate file biza-nouns. מים ע,רבים=מימים,נפרדים=מים,אין_יחיד מימי ת # ראה ]1[, עמוד \Lnum{42}. # note extra vav added by academia's ktiv male: כותל ע,אבד_ו צומת ע,ים,אבד_ו # ל-"חודש" היה צריך להיות אולי אבד_ו, אבל בגלל האות הגרונית יש חתף-קמץ במקום # שווא, וחתף=קמץ זה נהגה כמו "ו" ולכן נשאיר את ה-"ו" בכל-זאת )האם זהו החוק # של האקדמיה? לא ברור, אך זהו הכתיב המודרני ומתאים לכללים בסוף אבן-שושן(. חודש ע,זוגי # פועל, עם צירה ב-"ע", וה-"ו" במקור. פועל ע שם ע,ות שמי ת שמני ת # lingustics term # [1] insists that the plural of דוגמה is דוגמות, and [3] prefers but also # allows דוגמאות. [4] allows both, and the latter is the more modern form, # so we'll also allow both. # We do not support the "back-singular" of דוגמא, however, which no dictionary # recognizes. It is an explicit academia decision that female nouns which # come from Arameic, such as קופסה, דוגמה, נוסחה, עובדה, סדנה, סמטה, כופתה, # טבלה, גרסה, רישה, סיפה, שאילתה, משכנתה, אסמכתה, אתנחתה, בדותה - all get # ה, not א, in the end. The plural of all of them can supposedly be either # ות or אות (though for some of them, only one type of plural is common). דוגמה ע,ות,אות # note: extra vav added in ktiv male גבוה ת,שמור_ה יפה ת יפה ע # The (feminine) form יפתי is often used. אב ע,ות,מיוחד_אח אח ע,מיוחד_אח #the following adjective needs to be made feminine using a tav, not a he. פושר ת,נקבה_ת רשאי ת,ם #note the ktiv male rule which drops one of the vavs or yuds in the plural: מצווה ע עירייה ע נחיר ע,ים,יים #According to [3], it is ok that we don't add yud to the inflections that #have chirik before shva nach, like: צבא ע,ות צבאי ת זרא ע,אין_נטיות # in the phrase היה לו לזרא. צמא ע,יחיד # צימאון should probably be preferred יום ע,רבים=ימים,זוגי יומי ת יומיומי ת #New ktiv male rule (see 3): smichut of קריה is קריית קריה ע # Interestingly, the plural of this specific word can be (according to the Academia's site) be pronounced in two ways: krayot and kriyyot. # This is a masculine word (beinoni form, in this case) ending with he - its # inflection is somewhat different than the feminine nouns ending with he. מורה ע,ים,סגול_ה פנאי ע סקופ ע מקווקו ת,נקבה_ת # The words שוק, שור and דוד are very interesting. They are unlike סוס or קול # in that the ו is part of the root (not a י). Their inflection is exemplified # in [1, page 6], and is a bit strange: for example שווקיך but שוקיכם. # Originally, I thought this was a special weird case, which I labeled # מיוחד_שוק. I thought it was a fortunate coincidance that the inflections that # get a doubled (consonant) vav in שוק are exactly those who lose a vav in # צומת (the אבד_ו case). # But this is no coincidence, and here is the explanation why we could remove # the מיוחד_שוק case and leave only אבד_ו: # The word שוק was in the original Hebrew shin-kubuts vav-shva kuf-shva, # just like צומת, from the mil`eli'm was tsadi-kubuts men-shva taf-shva. # Returning now to שוק, in the original Hebrew the vav was pronounced like the # Arabic waw (like English w), so a kubuts followed by a vav quickly became # a long "u" sound, i.e. a shuruk. This is why שוק is spelled with shuruk. # But to understand the rest of the inflections, we have to remember the # origin, and realise that like צומת loses the cholam-chaser in some of the # inflections, שוwק (where ו signifies the kubuts and w the consonant vav) # also loses this kubuts in the same inflections. When it loses the kubuts # the consonant vav (w) remains alone and gets printed (in ktiv male) as # a double vav. # In order for all this insight to work I need to be able to specify the # consonant vav (w below), and wolig.pl's outword needs to know (and it does) # that the וw combination should be turned into one long u sound, i.e., one # vav. שוwק ע,אבד_ו # שוק שוwר ע,אבד_ו # שור דוwד ע,אבד_ו # דוד # This is a really weird case. Note that אריה has tsere, not segol before # the he! The form אריהו should perhaps be removed... אריה ע,ות,סגול_ה אפעה ע,אין_נטיות,סגול_ה ########################### מילים שפעם נתנו תוצאות שגויות ##################### ########################### ראה גם "ODOT" בטקסט ############################### # There's a similar issue to the זוגי/יים issue with the "ין" suffix used in # רבים=..., where the inflections for, say, טיפין isn't useful (while those # of טיפות is). BUT, Even Shoshan actually does say טיפי- is a valid smichut # for טיפה. Also, for the words תפילין and נזיקין, these inflections also # might be useful. Perhaps if some "drop rare words" option is turned on, # the רבים=... case with ין ending should simply not generate any inflections. # is this correct? no אבד_ו? [1] and [2] can't even agree (or [1] with itself) # if נגוהות in ktiv chaser has a vav or cholam chaser... # However, I believe this is correct, just like בוהן,בהונות. נוגh ע,רבים=נגוהות # נוגה # CASE 344 # The plural of קושי is based on the segoliim shleming - with shva... See # [1, page 55]. # But the problem is the default nismach yachid is wrong - [1, case 344] says # it should be with shva (no vav). I'm not sure why... # note extra vav added קושY ע,נסמך=קשי,רבים=קשיים # קושי שwY ע,יחיד # שווי should be written שowי, perhaps, or in another manner... יופY ע,נסמך=יפי,יחיד # יופי בורY ע,נסמך=ברי,יחיד # בורי (בוריו, etc). רואY ע,אין_נטיות # רואי (usually used as "קצר רואי". inflections useless) שונY ע,יחיד # שוני דופY ע,יחיד # דופי # case ? דY ע,יחיד # TODO: even shushan list the plural smichot as "משנות-". how come? [1, page 21] # says "משנות" is also a legal plural. Maybe that's the explanation? משנה ע,יות משנאי ת # TODO: according to [1, page 52], the plural of גולגולת has a kamats, which # I thought to be kamats gadol. However, according to [3], the plural is # גולגולות. In any case the other plural inflections must not have the second # vav... Also I'm not exactly sure if the kamats in the singular inflections # are kamats katan (in which case the vav should be kept) or gadol (in which # case the vav should be dropped). # See also David Yalin's book, page 244. # According to [4], the plural inflections all have vav, and the singular # inflections have kamats katan which for which a vav is added in niqqud-less # spelling. # TODO: rethink גולגולת ע,רבים=גולגולות,נסמכים=גולגלות # This word is a horrible mess. See [1, page 52], [2] (for singular possesives) # and [3] (for niqqud-less spelling of the nismachim form). # Note the two extra vavs in the nifrad. כותונת ע,נסמך=כתונת,רבים=כותונות,נסמכים=כותנות # CASE 301 גברת ע,רבים=גברות,נסמכים=גבירות # The traditional feminine of ממאיר is ממארת, but [4] also allows ממאירה # and there's popular usage of this form, so we allow it to. In the other # words of this mishkal, both the normal ה feminine and this alternative sort # of feminine are acceptable. ממאיר ת,יחידה=ממארת,נקבה_ה ממאירות ע מגדיל ת,יחידה=מגדלת,נקבה_ה מדמיע ת,יחידה=מדמעת,נקבה_ה מקיף ת,יחידה=מקפת,נקבה_ה מזהיר ת,יחידה=מזהרת,נקבה_ה # as in בדידות מזהרת. מתמיד ת,יחידה=מתמדת,נקבה_ה מפסיק ת,יחידה=מפסקת,נקבה_ה # TODO: add this form as a verb, not adjective. מגיד ת,יחידה=מגדת,נקבה_ה מיניק ת,יחידה=מינקת,נקבה_ה # יפהפה is a bizarre adjective. # There's disagreement on how to write its plural. [2] and [3] say it # is יפהפים, with one yod, and [3] even mentions יפהפיים explicitly as wrong. # On the other hand, [4] only accepts the plural with two yods: יפהפיים, and # on Google, the form with two yods is 100 times more popular than with one. # Currently I decided to go with [2] and [3]'s spelling. # TODO: reconsider this decision, which goes against the public spelling. יפהפי ת,שמור_ה,ם,נקבה_ה,יחיד=יפהפה יפיפי ת,שמור_ה,ם,נקבה_ה,יחיד=יפיפה # alternate valid spelling # TODO: inflections of adjective נשוי are נשואה, נשואים, נשואות. I don't # understand why the masculine singular נשוי is different. נשוא ת,יחיד=נשוי נשוא ת # The inflection of סומא is exceptional: סומאה, סומים, סומות. סומ ת,יחיד=סומא,יחידה=סומאה #סומא ע,רבים=סומים #סומאה ע,רבים=סומות ############################################################################## # Words for which stem spelling differs in ktiv male from ktiv chaser, # according to academia rules (see [3]): # # In the future, the spellings of some of these groups of nouns should be # changable by an option (to generate, for example, a word list for ktiv # chaser, or a wordlist based on another spelling style). ############################################################################## # the following words have an extra yod where a "e" sound (tsere or segol) # appears. see [3] for explanations about why these cases, and not others. זיעה ע ליחה ע גירה ע לידה ע קיבה ע קיבתי ת ריאה ע ריאתי ת תיבה ע # TODO: why doesn't "אלה", the type of tree, fit here? According to "כללי נטיית השם" of the academia (page 180), the tserei remains throughout the inflection for that word. [3] keeps it without yod, I don't know why. חירש ת,נקבה_ת קירח ת,נקבה_ת קירחות ע חירשות ע # Compare the following words in the same mishkal as סיפור that got tashlum # dagesh, to other words listed below in this file that didn't get one, # e.g, שיעול ניחוש זיהום. # The Academia have on their site an explict decision on this case: # אלה הכללים לתשלום דגש בבניינים הדגושים - פיעל, פועל והתפעל ובמשקל פיעול: # 1. לפני אל"ף ורי"ש פ' הפועל מנוקדת בתנועה גדולה. # 2. לפני חי"ת תהיה פ' הפועל מנוקדת בתנועה קטנה. # 3. לפני ה"א ועי"ן פ' הפועל מנוקדת בתנועה קטנה בבניינים פיעל והתפעל ובמשקל # פיעול, ובתנועה גדולה (חולם חסר) בבניין פועל. בירור ע סיאוב ע,יחיד חירום ע,אין_נטיות סירוב ע שירות ע,ים דירוג ע גירוש ע,ים,רבים=גירושין אירוס ע,ים,רבים=אירוסין,אין_יחיד אירוס ע,אין_כינויים # kind of flower צירוף ע תירוץ ע טירוף ע חירוף ע חירוק ע # in the phrase חירוק שיניים אירוע ע עירוי ע פירור ע פירוד ע פירוש ע קירוי ע ביאור ע תיאום ע תיאור ע תיאורי ת סירוג ע,רבים=סירוגין # most inflections of this aren't used... מיאוס ע # [4] spells this word with chirik, but in [6, page 11] an Academia decision is mentioned to spell this word with a tsere. # TODO: Maybe according to the above Acadmia decision, the following words # should be in the section of words that get chirik, not tsere? But these # are [3]'s and [4]'s spellings. ניאוף ע # [4] spells this with chirik, and it is also spelled like this in the bible, but according to the academia's decision on tashlum dagesh, and according to [5], it needs to be tsere. חירות ע # Not a shem-peula in piel like the previous words (שירות etc.) but this word has tashlum dagesh because it comes from the root חרר, and it appears as an example in the niqqudless rules. גהות ע,יחיד # Hebrew word for hygene. Only used in phrase "בטיחות וגיהות". [5] doesn't add yod, and it is likely that this is correct (see discussion in niqqudless.odt). TODO: reconsider # The word מרוץ is very problematic. [3] and [5] add the yod for niqqud-less # spelling: מירוץ, [4] didn't, but recently this was changed. [4]'s old # decision is easier to justify: there's no mention of this case in the # Academia's niqqudless spelling rules, so no yod should be added. However, # still most dictionarys add yod and the number of mentions in Google of both # forms is almost equal. Why? # One guess is that מרוץ is on a mishqal that usually has a chirik chaser # followed by dagesh, and this is tashlum-dagesh. Unfortunately, I can't seem # to find any evidence for this, or other words in the same mishkal. I also # haven't found yet any Academia decision talking about this word. # Another guess is that [3] is simply wrong, and its error is caused by the # fact that this word is often mistakenly pronounced with shuruk (all the # dictionaries agree that it is spelled with cholam), and then a yod was # added to מירוץ, like the yod in תירוץ. Unfortunately, this explanation is # very weak because unlike תירוץ whose root is תרץ, the root of מירוץ is # supposed to be רוץ, not מרץ. It can the reason for the popular (Google-wise) # mistake, but not to a mistake in a dictionary like [3]. # See also לשוננו לעם, כללי נטיית השם: In page 177 it mentions "tserei for # Tashlum Dagesh" and mentions מרוץ. BUT, it also mentions גאה there - does # this this mean we need to write גיאה?? # Because the Acadmia wrote us an answer that the correct spelling is מרוץ # we'll use that spelling. מרוץ ע מחוש ע # Usually used in plural: מחושים, pains. Note that [5] and [6, page 30] spell this word with a cholam, but [3] with a shuruk [4] allows both. See also מרוץ. # words like זיכרון: דיראון ע,ות גירעון ע,ות גירעוני ת פירעון ע,ות # the vowelization of the word סירחון has changed over the years. The early # dictionaries [1] and [2] spell it with chirik-chaser and shva (and so should # have been סרחון) but [3], [4], [5] spell it with tsere in the samech (and # kamats in resh), and a yod should be added for tashlum dagesh, as in גירעון. # The academia agrees (in an example on their site) that סרחון has tsere in # the samech. Just like גירעון, in the rest of the inflections, there is a # chirik chaser and the yod is also added. סירחון ע,ות # words like עיפרון: היריון ע,ות,אבד_י הריוני ת עירבון ע,ות,אבד_י תיאבון ע,ות,אבד_י ריאיון ע,ות,אבד_י זירעון ע # Vowelled tserei-shva. This word is explicitly listed in the academia's rules as a case of tashlum dagesh, like קילשון (with dagesh in lamed). See also argument on קלשון/קילשון below. See also לשוננו לעם נא-נב ד "כללי נטיית השם", page 184, which says the same thing. # Tashlum dagesh in the mishkal of תפילה, or more accurately, מסילה. Like # מסילה whose root is double - סלל - so are these words' roots double. # מגירה with root גרר, and מאירה with root ארר. This explains their bizarre # spelling with tsere. מגירה ע מאירה ע # קללה # According to [3], נחן is written with tsere. Similar sounding verbs like # ניחם, ניחר, ניחת, are written with chirik chaser but (obviously) no dagesh # in the ח. strange. ניחן ת היכר ע היכרות ע היתר ע היקש ע היקשי ת היטל ע הישג ע הישגיות ע הישגי ת היקף ע היקפי ת היבט ע היגד ע היצע ע היסט ע # [5] says ות, but this is archaic usage that doesn't actually exist in my experience היסח ע היסע ע הינף ע הינד ע היצף ע הינע ע היסק ע היצג ע # Academia translation for אקספוזיציה # שינה - in this word, the tsere does not persist through the inflections, # so a yud should have NOT been added. However, the academia decided to add # a yud in this case (and only in the nifrad form) so as not to confuse it # with שנה. Too bad... שנה ע,נפרד=שינה,יחיד # The following two words are problematic. The [1] and even shushan both say # that its correct nikud is segol-shva, while [3] says the correct nikud is # tsere-kamats. Whether this affects the presense of an extra yud, I don't # know. We put here the extra yud following the entry in Milon Hahove [3]. היעדר ע,יחיד היעדרות ע היאבקות ע # words with consonant vav that get double vav under academia rules: רווה ת דווה ת רוויה ע,יחיד רוויון ע,יחיד אווז ע אווזה ע ברווז ע ברווזה ע ברווזון ע תאווה ע תאוותן ת,נקבה_ית תאוותנות ע,יחיד תאוותני ת ראוותן ת,נקבה_ית ראוותנות ע,יחיד ראוותני ת שעווה ע,יחיד שעוונית ע פרווה ע פרוותי ת # colloquial, not in [3] or [4] אורווה ע ראווה ע # inflections not useful... חדווה ע קשווה ע זוועה ע זוועתי ת דוור ע דוורית ע נווד ע נוודית ע # this is the feminine form of נווד prefered by [3] and [1] נוודה ע # this is the feminine form prefered by Dan and accepted by Rav Millim. נוודת ע # this is the feminine form of נווד prefered by [2] נוודות ע,יחיד נוודי ת נווט ע נווטת ע נווטות ע,יחיד סוור ע סוורית ע סוורות ע,יחיד חווט ע,אין_כינויים פרוור ע # also: פרבר פרוורי ת זווית ע זוויתי ת תווית ע קווי ת השוואה ע השוואתי ת הלוואה ע שוויון ע,ות # same mishkal as פתרון - pronounced shivyon. שוויוני ת שוויוניות ע משוואה ע טווח ע מטווח ע רווחה ע ענווה ע,יחיד ענוותן ת,נקבה_ית ענוותנות ע,יחיד אחווה ע אדווה ע שלווה ע,יחיד עלווה ע,יחיד חווה ע חוואי ע חוואית ע צוואר ע צווארי ת # medical term צווארון ע עוול ע עוולה ע משוורת ע מכוורת ע כוורת ע כוורן ת,נקבה_ית כוורנות ע,יחיד צוואה ע טווס ע כוונת ע כוונה ע הכוונה ע עכשווי ת רווח ע רווחי ת רווחיות ע צוות ע,ים מזווה ע,ים,סגול_ה מקווה ע,ים,ות,אות,סגול_ה מלווה ע,ים,ות,סגול_ה נווה ע,סגול_ה,רבים=נאות נאווה ת # נאווה מדווה ע,ים,סגול_ה # not in modern use. מדווה ת # not in modern use. מתווה ע,ים,סגול_ה מחוון ע חוויה ע הלוויה ע לוויה ע הוויה ע תקווה ע אוויר ע,יחיד אווירי ת אוורירי ת אוורור ע אווירה ע אווירון ע רווק ע רווקה ע רווקות ע,יחיד ערווה ע,רבים=עריות גאווה ע גאוותן ת,נקבה_ית גאוותני ת גאוותנות ע דוושה ע שוועה ע מזוודה ע מגוון ע # TODO: think if inflections are useful... תוואי ע מרווח ע לוואי ע זוויג ע # meaning "gender" זוויגי ת צווחה ע צווחן ת,נקבה_ית צווחני ת צווחנות ע,יחיד # not in [3], but in [4]. Extremely rarely used. סנוור ע,אין_יחיד # סנוורים משווה ת משווני ת # not recognized by [3]... אוויל ע אווילה ע אווילות ע אווילי ת אווה ע # usually used only in the phrase אוות נפש - "כאוות נפשו". גוויל ע אוושה ע חווק ע מזוויע ת סתוונית ע עווית ע,ות,שמור_ת # vowelled like "בכית" from [1]. [1] says the plural is עוויות, and [2] says that there is no plural. [3] and [4] agree with my experience, that the plural exists and it is עוויתות. עוויתי ת קוון ע # [3] says קוון is a power or telephone line installer, [4] says it's a line referee in soccer. Strangely, [4] returns to the installer meaning for the word קוונות. קוונית ע קוונות ע,יחיד # TODO: consider removing this word, easily confused with כוונות. תרווד ע פרוון ע פרוונית ע דווקני ת דווקנות ע,יחיד שווא ע,אין_נטיות שווא ע,אין_כינויים שוואי ת עווע ע,אין_יחיד,אין_כינויים # Usually in phrases like רוח עוועים. Note: the supposed singular עיווע is on the same mishkal as אילם. However, because the singular doesn't exist, and the plural has shva nach in the waw, we don't add yod. [3] and [4] agree. # CASE 331 און ע,נפרד=אוון מות ע,נפרד=מוות,יחיד,זכר אלמות ע,נפרד=אלמוות,יחיד,זכר אלמותי ת צלמות ע,נפרד=צלמוות,אין_נטיות,זכר # According to [1, page 53], the plural inflection is גוני-, גווניי, גוניכם. # I extrapolated it to mean that it has doubled vavs just like שוק (except in # the nifrad, of course) - and hence the extra w trick (see comment there). גוwן ע,נפרד=גוון,אבד_ו # גוון חדגוני ת חדגוניות ע רבגוני ת רבגוניות ע גוני ת # Only in phrases חד-גוני, רב-גוני. גוניות ע # Only in phrases חד-גוניות, רב-גוניות. # CASE 332 # in תווך the double vav needs to be undoubled for all inflections... # TODO: reconsider plural. [4] and [3] don't recognize any plural, [1] # allows only ות and [2] allows both ות and ים. # TODO: [4] allows the forms תוככי-, בתוככי, לתוככי, calling them מילות יחס. # [5] also allows them. However, [3] explicitly calls these forms לא תקני, # and therefore I am not accepting them, and added a comment about that in # spellinghints. Rethink this position. תוך ע,ות,נפרד=תווך # words ending with "a" + consonant vav that get an extra yud: # Note that according to the academia rules, all inflections (in which the # vav consonant is no longer at the end of the word) the yud is not added. # TODO: maybe write סתaו and add a outword rule that converts "aw" at the end # of the word to יו. However, note that this rule should not be applied to # two-letter words (תו, קו, צו, וו) - so for them I either would not put the # a or the rule would nead to be more sophisticated. סתו ע,נפרד=סתיו,נסמך=סתיו סתווי ת שלו ע,נפרד=שליו,נסמך=שליו # a kind of bird. This is not the adjective שלו. ענו ת,יחיד=עניו # The word לוי is a proper name, so the waw is *not* doubled. But we also # use it as a noun meaning a any person from this tribe, so the name can # be used with the definite article, and in plural, making the fact that # we don't double the waw very strange. Maybe needs to be reconsidered, # though both [3] and [4] spell like this too. לוי ע,אין_כינויים # words with consonant yud that get double yud under academia rules: סייג ע שייר ע סייח ע סייחה ע בניין ע מעיין ע,ים,ות # In modern writing, the plural form מעיינים (especially with possesives) is researved for the phrases בראש מעייניו, כל מעייניו. מניין ע קניין ע # with chirik in kuf קנייני ת קניין ע # with patach in kuf קניינית ע זכיין ע זכיינית ע סייען ע סייענית ע שחיין ע שחיינית ע שחיינות ע,יחיד נסיין ע נסיינית ע צליין ע צליינית ע צליינות ע,יחיד תליין ע תליינית ע אחיין ע אחיינית ע שתיין ת,נקבה_ית שתיינות ע,יחיד בליין ת,נקבה_ית בליינות ע,יחיד בכיין ת,נקבה_ית בכיינות ע,יחיד בכייני ת דייקן ת,נקבה_ית דייקנות ע,יחיד דייקני ת צייתן ת,נקבה_ית צייתנות ע,יחיד צייתני ת חייכן ת,נקבה_ית חייכני ת ביישן ת,נקבה_ית ביישני ת ביישנות ע,יחיד פייסן ת,נקבה_ית פייסנות ע,יחיד פייסני ת צייצני ת קייטן ת,נקבה_ית קייטנות ע,יחיד פייטן ע פייטנית ע פייטני ת חקיין ת,נקבה_ית חקיינות ע עניין ע ענייני ת חייט ע חייטת ע צייר ע ציירת ע סייר ע סיירית ע סיירות ע,יחיד סיירת ע # this is both female of סייר, and a group for סיור (e.g., in the army) שייט ע שייטת ע # female of שייט and a group of boats (in the army) #חייב ת,נקבה_ת חייב ע חייבת ע דייר ע דיירת ע דייג ע דייגת ע דייל ע דיילת ע דיילות ע,יחיד דיין ע דיינות ע,יחיד טייס ע טייסת ע כייס ע כייסת ע כייסות ע,יחיד חייל ע חיילת ע חיילי ת חיילות ע,יחיד תייר ע תיירת ע תיירות ע תיירותי ת תיירן ע # tour organizer תיירנית ע טייל ע טיילת ע סייד ע סיידת ע סיידות ע,יחיד סייע ע סייעת ע טייח ע טייחת ע טייחות ע,יחיד צייד ע ציידת ע סייס ע סייסת ע סייסות ע,יחיד סייף ע סייפת ע סייפית ע # NOTE: [4] says סייפית, not סייפת. [3] accepts both. Perhaps accepting only סייפת would make sense, looking at other words similar to this, all using ת for feminine. אייל ע איילה ע נייר ע,ות קיים ת,נקבה_ת קיימה ע,אין_נטיות # Mostly in the phrase בן קיימה. שייך ת,נקבה_ת שייכות ע אופייני ת תעשייתי ת תעשיין ע תעשיינית ע יישוב ע # some people mis-pronounce "yeshuv" and write ישוב יישובי ת ייחוד ע ייחודי ת ייחודיות ע ייחור ע ייצוג ע ייצוגי ת ייצוגיות ע יישום ע יישומי ת יישומון ע # computer term יידעוני ת,ם בעייתי ת בעייתיות ע חייתי ת עיירה ע נייד ת,נקבה_ת ניידות ע ניידת ע נייח ת,נקבה_ת טיילת ע ניירת ע,יחיד עבריין ע עבריינית ע עבריינות ע עברייני ת # not recognized by [3] or rav-milim, but I think it is useful. e.g, התנהגות עבריינית. דייסה ע # Note that the plural is pronounced daysot. קריין ע קריינית ע קריינות ע זייפן ע זייפנית ע זייפנות ע חיישן ע חיישן ת,נקבה_ית # literary חיישנות ע,יחיד חיישני ת צייקן ת,נקבה_ית # literary צייקנות ע,יחיד צייקני ת קייטנה ע חיידק ע חיידקי ת חייזר ע חייזרית ע # colloquial חייזרי ת חייבר ע,אין_נטיות שיירה ע מאפיין ע # [3] doesn't acknowledge this is a noun. Rav-milim does. התיישבות ע התיישבותי ת מאיית ע,ים # recently, this has come to mean a spell-checker software. [4] has this sense, [3] doesn't. מאייד ע # carburetor. דייק ע,אין_נטיות # biblical word. Voweled like נמר. גוביינה ע,אין_נטיות # [4] prefers גוביינא, but the Academia decided (decision mentioned on their site) גוביינה, with shuruk. עייף ת עייפות ע,יחיד בלייעל ע,אין_נטיות מתנייע ת # words with chirik followed by "ya" sound, that get double yud under # academia rules: # (compare מנייה with chirik ("counting") to מניה ("stock")). הגייה ע שנייה ע מטרייה ע שכמייה ע אטרייה ע דלייה ע נגרייה ע מרפדייה ע סנדלרייה ע סימנייה ע תעשייה ע שערורייה ע שערורייתי ת # [3] does not recognize this word, but Rav-Milim does. נטייה ע נמייה ע בנייה ע מנייה ע ראייה ע רטייה ע צפייה ע סטייה ע פנייה ע תחייה ע ברייה ע # the singular exists but very literary-looking. the plural is more common. שכייה ע # בביטוי: שכיות חמדה ארייה ע # rare word, meaning picking of figs עגבנייה ע פייה ע ענייה ע פטרייה ע פטרייתי ת מעשייה ע מימייה ע צרכנייה ע עוגייה ע כנסייה ע כנסייתי ת לחמנייה ע חמנייה ע # in [1]. note that [3] says the official word is חמנית... חמנית ע # rarely used spelling (see חמנייה) נקניקייה ע פנימייה ע פנימייתי ת שלישייה ע רביעייה ע חמישייה ע שביעייה ע שמינייה ע תשיעייה ע עשירייה ע אלפייה ע # slang גופייה ע גומייה ע מעדנייה ע מלחייה ע # note: [3] declares this wrong, and corrects to: ממלחה. כרטיסייה ע חשבונייה ע # TRODO: strangely, [3] doesn't have this word! פתילייה ע קוקייה ע ספרייה ע תקליטייה ע סרטייה ע צמחייה ע עשבייה ע # two valid forms (different with nikud too), acording to [3]. חצייה ע חציה ע חנייה ע חניה ע גזייה ע כפייה ע כפייתי ת כפייתיות ע ימייה ע # "navy" תושייה ע מאפייה ע מסגרייה ע מרכזייה ע קונכייה ע # note cholam, not shuruk also: קונכית. It comes from greek, and the English "Conch" comes from the same source. ברזייה ע כתפייה ע מגדנייה ע מצחייה ע # NOTE: [3] says this is an invalid word, with the correct being מצחה. However, [4] accepts this word as perfectly valid (without any comment about being colloquial or wrong) and calls מצחה a literary word. מצייה ע דומייה ע,יחיד לבנייה ע # From Arabic. Nowadays the original meaning is not used, and only used for oil refineries in Haifa. TODO: consider removing this. מכבייה ע,אין_כינויים סבונייה ע פודרייה ע פיצוצייה ע # recent colloquial שקדייה ע ברכייה ע # kind of duck (Mallard) תמרוקייה ע מרקייה ע נוטרייה ע # kind of animal נפחייה ע פחחייה ע נשקייה ע צמיגייה ע # TODO: I'm not sure what to do about this word. [3] says there's a female # כילאית, but [1], [2] and [4] don't recognize it. Also, according to [2] # and [4], both כיליים and כילאים are valid plurals, according to [1] # apparently only כילאים is valid, and according to [3] there is no plural. כילאי ת,ם,יחיד=כיליי #כילy ת,אין_נקבה # We need an option to not have a feminine. # Note: [4] acknowledges that מיד and מידי are the Academia standard spellings, # but nevertheless prefers to spell מייד and מיידי. The Academia actually list # both these words as exceptions in their official rules (as of 2004), # explaining that because the mem is מ השימוש, the yod after it should not # be doubled. I tend to agree with [4] and find this "excuse" very weak # (maybe מיד was originally built using מ + יד, but this is a historical, not # a contemporary, detail). However, for the time being I will go with the # Academia anyway, in an attempt to be 100% compliant with them. (And in # this case it's easy, because these words are mentioned explicitly in the # niqqud-less spelling rules). מידי ת מידיות ע # words with u sound that got an extra vav in ktiv male: סוכה ע מוטה ע # In the phrase מוטת כנפיים תומה ע,יחיד גולה ע גומה ע בובה ע בובתי ת חופה ע אונה ע בוצה ע,יחיד # Note shuruk, not cholam, contrary to most speakers. [4] allows plural, but I don't think it's useful. מהלומה ע ארכובה ע אסקופה ע חרצובה ע אגודה ע אגודתי ת כתובה ע קצובה ע קווצה ע # a bunch of hair. watch out for the confusion with קבוצה! אחוזה ע שדולה ע שדולן ע # [4] says that שדלן is an archaic form of this word. See also שתדלן. שדולנית ע שדולנות ע,יחיד סגולה ע סגולי ת סגוליות ע קצונה ע נחושה ע,אין_יחיד,יים # נחושתיים כבודה ע פלוגה ע פלוגתי ת קדושה ע ירושה ע גאולה ע המולה ע אסופה ע אצולה ע גדולה ע ארובה ע ערובה ע עקומה ע עמותה ע אפודה ע חתונה ע חלוקה ע חלוקתי ת # almost exclusively in the phrase צדק חלוקתי. חנופה ע חנוכה ע פעולה ע פקודה ע אלומה ע דבוקה ע שותף ע שותפה ע שותפות ע מושג ע מושגי ת # [4] has this as a translation of "conceptual". שומר ע # kind of plant סוכר ע טוגן ע,אין_יחיד # טוגנים חומש ע # one of the books of the torah אוכף ע דוכס ע דוכסית ע מוצב ע מוצג ע עובר ע עוברי ת שונר ע # lynx מלומד ע מלומדת ע מזומן ע,אין_נטיות_יחיד # meaning cash. מטוטלת ע מבוקש ע מבוקשת ע מטופל ע # patient מטופלת ע מצולע ע מצורע ע מצורעת ע משולש ע משולש ת,נקבה_ת מרובע ע מרובע ת,נקבה_ת מחומש ע משושה ע,ים,סגול_ה משושה ע,ות משובע ע משובע ת,נקבה_ת מתומן ע מתומן ת,נקבה_ת מתושע ע מתושע ת,נקבה_ת מעושר ע מעושר ת,נקבה_ת # Also another meaning - related to religious מעשר. מעוין ע מלוכלך ת,נקבה_ת מסורבל ת,נקבה_ת ממורמר ת,נקבה_ת מסוקרן ת,נקבה_ת מטומטם ת,נקבה_ת מצוחצח ת,נקבה_ת משוכלל ת,נקבה_ת משוקלל ת,נקבה_ת מטושטש ת,נקבה_ת מפולפל ת,נקבה_ת מפוספס ת,נקבה_ת מחוספס ת,נקבה_ת מפוקפק ת,נקבה_ת מפוסטר ת,נקבה_ת מסוגנן ת,נקבה_ת מגורען ת,נקבה_ת ממוחשב ת,נקבה_ת מצונזר ת,נקבה_ת מדופלם ת,נקבה_ת מצומצם ת,נקבה_ת מסובסד ת,נקבה_ת מקורזל ת,נקבה_ת משוכנע ת,נקבה_ת מתורבת ת,נקבה_ת מנומנם ת,נקבה_ת מהוקצע ת,נקבה_ת מצועצע ת,נקבה_ת מרומזר ת,נקבה_ת מכופתר ת,נקבה_ת מכורכם ת,נקבה_ת ממושקף ת,נקבה_ת מפורזל ת,נקבה_ת מדובלל ת,נקבה_ת מגונדר ת,נקבה_ת מהורהר ת,נקבה_ת מלוכסן ת,נקבה_ת מזורגג ת,נקבה_ת # slang מטורלל ת,נקבה_ת # slang מטורזן ת,נקבה_ת # old slang, meaning מגונדר ממושמע ת,נקבה_ת מתוסבך ת,נקבה_ת # [4] calls this colloquial ([3] doesn't) מקורנן ת,נקבה_ת # usually slang מרופרף ת,נקבה_ת # in [4], but not in [3] מחוצף ת,נקבה_ת מחוטט ת,נקבה_ת מבודח ת,נקבה_ת מהופך ת,נקבה_ת מבוגר ת,נקבה_ת משופם ת,נקבה_ת ממוצק ת,נקבה_ת מקובל ת,נקבה_ת משוכן ת,נקבה_ת מנוון ת,נקבה_ת מנוול ת,נקבה_ת מרווח ת,נקבה_ת מנומס ת,נקבה_ת מעושן ת,נקבה_ת מנוקד ת,נקבה_ת מסווג ת,נקבה_ת מסומא ת,נקבה_ת מגושם ת,נקבה_ת מחויך ת,נקבה_ת מדויק ת,נקבה_ת מצויץ ת,נקבה_ת מצוין ת,נקבה_ת מסוים ת,נקבה_ת מפויס ת,נקבה_ת מפויח ת,נקבה_ת מחויב ת,נקבה_ת מחויבות ע מג'ויף ת,נקבה_ת # slang ג'יפה ע,אין_כינויים # slang מפוכח ת,נקבה_ת מטופש ת,נקבה_ת מכונף ת,נקבה_ת משוגע ת,נקבה_ת מרושע ת,נקבה_ת מהוסס ת,נקבה_ת מרוקן ת,נקבה_ת מרוחק ת,נקבה_ת מפוגל ת,נקבה_ת מפוחד ת,נקבה_ת מפולח ת,נקבה_ת מיוחד ת,נקבה_ת מיוחדות ע מיותר ת,נקבה_ת מיודע ת,נקבה_ת מיודע ע # usually inflected, means acquaintence מיותם ת,נקבה_ת מיושן ת,נקבה_ת מיושב ת,נקבה_ת מיונן ת,נקבה_ת מיומן ת,נקבה_ת מיומנות ע מיוחם ת,נקבה_ת מיוחס ת,נקבה_ת מיוחל ת,נקבה_ת מיודד ת,נקבה_ת מעוות ת,נקבה_ת מעונב ת,נקבה_ת מקוטב ת,נקבה_ת מסוגל ת,נקבה_ת מסוגלות ע מסוכן ת,נקבה_ת מסודר ת,נקבה_ת משומש ת,נקבה_ת משובח ת,נקבה_ת מקוון ת,נקבה_ת ממוצע ת,נקבה_ת מחוכם ת,נקבה_ת מעולף ת,נקבה_ת מעונן ת,נקבה_ת משומד ת,נקבה_ת מפותל ת,נקבה_ת מרושל ת,נקבה_ת מאונך ת,נקבה_ת ממולח ת,נקבה_ת מזוגג ת,נקבה_ת מאופק ת,נקבה_ת מצולק ת,נקבה_ת מרופט ת,נקבה_ת מרופש ת,נקבה_ת ממותק ת,נקבה_ת מעופש ת,נקבה_ת ממושך ת,נקבה_ת מעובד ת,נקבה_ת מנוכר ת,נקבה_ת מנוגד ת,נקבה_ת מאוזן ת,נקבה_ת מכובד ת,נקבה_ת מרומז ת,נקבה_ת מקוטע ת,נקבה_ת מנומר ת,נקבה_ת מנומש ת,נקבה_ת משולל ת,נקבה_ת מזומן ת,נקבה_ת,נקבה_ה מהוגן ת,נקבה_ת מזוקן ת,נקבה_ת ממונע ת,נקבה_ת מסוקס ת,נקבה_ת מפולש ת,נקבה_ת מצונף ת,נקבה_ת מקושת ת,נקבה_ת מרוכב ת,נקבה_ת # form of מורכב, used in mathematics and other sciences. מרובד ת,נקבה_ת מחוור ת,נקבה_ת מסוכר ת,נקבה_ת מדוור ת,נקבה_ת מיוגע ת,נקבה_ת מיוזע ת,נקבה_ת מעוקב ת,נקבה_ת # usually only in phrases like מטר מעוקב. מומלץ ת,נקבה_ת מובהק ת,נקבה_ת מובטל ת,נקבה_ת מובחר ת,נקבה_ת מוזהב ת,נקבה_ת מופלג ת,נקבה_ת מושלג ת,נקבה_ת מוגמר ת,נקבה_ת מוגזם ת,נקבה_ת מושכל ת,נקבה_ת מוכרח ת,נקבה_ת,נקבה_ה מוחלט ת,נקבה_ת מוחלטות ע,יחיד # in [4], but not in [3]. מופשט ת,נקבה_ת מופשטות ע,יחיד # in [4], but not in [3]. מופסד ת,נקבה_ת מופנם ת,נקבה_ת מוצלח ת,נקבה_ת מורכב ת,נקבה_ת מוחדש ת,נקבה_ת # Refurbished. A new Academia term from 1995. # The following automatically get ית in the feminine singular (only) מופלה ת,נקבה_ת # with segol in lamed מובנה ת,נקבה_ת ממונה ע,ים,סגול_ה ממונה ע,ות מרובה ת מעולה ת מגולה ת # rare מעושה ת מעוצה ת מנוצה ת מבונה ת מתוחכם ת,נקבה_ת מומחה ע,ים,סגול_ה מומחית ע מומחיות ע פולחן ע פולחני ת פורקן ע אונקל ע # rare word. אנקול is a little more common. פורענות ע מוגבלות ע מורכבות ע דוכסות ע נחושתי ת דובה ע דובון ע דובי ת חוקי ת חוקיות ע חוקה ע חוקתי ת חוקתיות ע תופי ת אומה ע לאומי ת לאומיות ע לאומני ת,עם,ארץ= לאומנות ע,יחיד בינלאומי ת בינעירוני ת נקודה ע,זוגי נקודתי ת # note recognized by [3] מועמד ע מועמדת ע מועמדות ע עובדה ע עובדתי ת עובדתיות ע מונח ע מושא ע ממוצע ע מופלא ת מוכשר ת פומבי ת פומביות ע בולבול ע בולבוס ע בולמוס ע # [1] and [3] disagree wether the last vav is cholam or shuruk... קולמוס ע פולמוס ע פולמוסי ת פולמוסיות ע פולמוסן ת,נקבה_ית פולמוסני ת # almost the same meaning as פולמוסי פולמוסנות ע,יחיד # almost the same meaning as פולמוסיות אולפנה ע # [3] spells this אולפנא, says it is Arameic and acknowledges only the phrase "בית אולפנא". However, I believe this word has been assimilated into Hebrew, and even used in plural. Therefore, according to an explicit academia decision, should be written with ה. [4] also writes it like that, and accepts אולפנא as an "uncommon spelling". קופסה ע,ות,אות קופסית ע כורסה ע,ות,אות כופתה ע,ות,אות חומרה ע עוצבה ע גלוסקה ע,אות # archaic literary. חוליה ע # note that spelt correctly, the ל has shva, hence only one yud! חולייתן ע # Usually in plural, חולייתנים - meaning vertebrates. קושיה ע # note that spelt correctly, the ש has shva, hence only one yud! שוליה ע,זכר,נקבה # [3] and [4] agree that this word has shuruk, not kubuts. note that spelt correctly, the ל has shva, hence only one yud! סוגיה ע # voweled like דוגמה, the gimmel has shva and hence yud not doubled. NOTE: [3] says this word has kubuts, [4] says shuruk. [1] recognizes both with preference to kubuts. סוליה ע # voweled like דוגמה, the lamed has shva and hence yud not doubled. NOTE: [3] says this word has kubuts, [4] says shuruk. [1] recognizes both with preference to kubuts. כנופיה ע # note the פ has shva, hence only one yud. NOTE: [3] says this word has kubuts, [4] says shuruk. [1] recognizes both with preference to kubuts. אוגדה ע אוגדתי ת גונדה ע # archaic. Also used (with different vowels) as Hebrew for "gonad". גונדר ע גונדרית ע כותנה ע תורפה ע,יחיד חורשה ע גומחה ע אומצה ע כומתה ע טומאה ע בוכנה ע חוצפה ע חולדה ע חופשה ע מורסה ע מוגלה ע,יחיד מוגלתי ת חולצה ע פונדה ע # The Hebrew for "pouch" (wallet wore on a belt). גוזמה ע,ות,אות גזוזטרה ע,ות,אות גוזמאי ת,ם סורגה ע # rare and new word for sweater ([3] has it, [1] does not) חורבה ע יומרה ע # TODO: [3] says this word has kubuts, but [1] and rav-milim insist on kamats katan! יומרנות ע יומרני ת אומדן ע חוצפן ת,נקבה_ית חוצפנות ע חוצפני ת דוגמן ע דוגמנית ע דוגמנות ע,יחיד מתורגמן ע מתורגמנית ע קורקבן ע # note that אמן with kubuts is a craftsman, not an artist. see אמן with # kamats katan. Maybe this should be commented out, because it is relatively # rare and only encourages errors? אומן ע אומנית ע אומנות ע #חלודה ע - see חלודה with shuruk קורטוב ע,אין_נטיות # note קרטב (with kamatz katan) is also correct. יוהרה ע,יחיד # shuruk; note יהרה (with kamatz katan) is also correct in [3]. רוגזה ע,יחיד # shuruk; note רגזה (with kamatz katan) is also correct in [3]. זוהמה ע,יחיד # shuruk; note זהמה with kamatz katan & chataf-kamtz is also correct. [4] also allows a plural. יוקרה ע,יחיד # shuruk. יוקרתי ת אולפן ע חומצה ע חומצתי ת חומצי ת # [3] refuses to acknowledge this word, but has חומציות... Rav-Milim does recognize it. חומציות ע חולשה ע בורסה ע בורסאי ת דובדבן ע סולם ע,ות חורבן ע,ות בוצי ת נוקשה ת נוקשות ע,יחיד אומלל ת אומללות ע,יחיד אוכמנית ע # [3] says this, not אוכמנייה, is the correct singular. פוחלץ ע שומן ע שומני ת פונדק ע,ים # [2] also allows אות פונדקאי ת,ם פונדקאות ע,יחיד בורסקי ת,ם בורסקאי ת,ם # [3] doesn't recognize this alternative form, but [4] does (as an alternative). Especially in plural, it is more commonly used now than בורסקי. בורסקאות ע,יחיד פוזמק ע,אות # [2] also allows ות, while [1] allows ים בוסתן ע מוסכמה ע קובלנה ע קומקום ע # the first waw was added by ktiv male הולדת ע,יחיד יוחס ע,אין_יחיד,רבים=יוחסין # [1] says the singular is יוחס with cholam אוכלוס ע,אין_יחיד,רבים=אוכלוסין # [1] prefers the plural אוכלוסים אצטרובל ע אצטרולב ע # archaic device, not to be confused with אצטרובל... סקסטנט ע דומדמנית ע גושפנקה ע קונדס ת,נקבה_ית קונדסי ת קונדסות ע,יחיד תובענה ע # often pronounced with cholam, but the official spelling is with kubuts. קורנס ע # kind of heavy hammer (archaic word) חושחש ע אושפיז ע,רבים=אושפיזין # singular and various inflections not usually used דובשנית ע כוסמת ע,אין_נטיות קולה ע,יחיד # opposite of חומרה קונטרס ע # note strange official vowelization: kuntres. קופה ע קופאי ע קופאית ע קופתי ת # [3] and [4] don't recognize this adjective, but it's commonly used, in the box office (cinema) sense, as in הצלחה קופתית. כורכר ע,אין_נטיות תורמוס ע,אין_כינויים עוזרר ע,אין_כינויים חורשף ע # artichoke. see also קנרס תוכון ע עוזרר ע,אין_כינויים # kind of plant #קובי ת # קובית is more often a mistake for קוביית than an intended word. # words with i sound that got an extra yud in ktiv male: עילי ת עיקר ע עיקרי ת עיסוק ע ריקוד ע אימון ע אימות ע,ים קיבוץ ע קיבוצי ת קיבוצניק ת,נקבה_ית # called "colloquial" by [3] and [4]. The formal alternatives are חבר קיבוץ or בן קיבוץ. גיבור ע גיבורה ע שיפון ע,אין_נטיות נישום ע נישומה ע # [3] also allows נישומת. [4] doesn't, and nobody uses that form. מילון ע מילוני ת שיכור ת ריבון ע ריבוני ת ריבונות ע רימון ע קיפוד ע קיפודי ת צילון ע סיפור ע סיפורי ת עיצוב ע עיצובי ת # not in [3] or [4], but in some use. פיסול ע פיסולי ת ניחות ע # physics term. [3] says it also means שלווה. חיבוט ע זיקוק ע,ים,רבים=זיקוקין # זיקוקים, זיקוקין דינור סיבוך ע סיבוכיות ע # computer science term: complexity שילום ע # usually in plural form: שילומים שיתוך ע # The rarely used Hebrew word for corrosion כימות ע,יחיד קישור ע גילול ע # Literary derogatory word for idol. Usually in plural ([4] accepts only the plural, but [1] and [3] also list the singular). ריקון ע,יחיד # [4] says chirik male, [3] says chirik chaser - but the niqqud-less spelling has a yod anyway. מיקור ע,אין_נטיות # Used only in the phrase מיקור חוץ (outsourcing) ריבוד ע קיטוע ע שילוח ע שילוחי ת # Legal term, mainly in the phrase "אחריות שילוחית". צילום ע צילומי ת # not in [3] or in [4] but in use, esp. in the phrase זיכרון צילומי. עימות ע,ים עיקוף ע חילון ע,יחיד חיקוק ע # a rare alternative for "חקיקה", or can also mean חריתה. זילוף ע היתול ע היתולי ת קישוט ע קישוטי ת דיבוק ע הידוד ע # The Academia invented this word for "Interaction". It is not used. הידודי ת # The Academia invented this word for "Interactive". It is still rare. זיגוג ע סיגוף ע שיזוף ע שיטור ע,יחיד גידול ע # singular means increase or crop, plural always means crops. קיטון ע,יחיד עיקוב ע # [3] considers this literary, for more common מעקב. עיכוב ע ניתוח ע ניתוחי ת # related to surgery. חידוד ע,ים,רבים=חידודין גיבוש ע גיבושון ע # army lingo תימוך ע,אין_יחיד,רבים=תימוכין שיתוף ע שיתופי ת שיפול ע,אין_יחיד # [3] acknowledges the singular, but [4] (and I) doesn't. הילול ע,אין_יחיד # [3] acknowledges the singular, but [4] (and I) doesn't. ריכוז ע ריכוזי ת ריכוזיות ע פיקוד ע פיקודי ת חיסון ע חיסוני ת # not recognized by [3], I don't know why. לימוד ע לימודי ת עיצור ע עיצורי ת # [2] or [3] don't recognize this word, and prefer "... הבאה לציין עיצור". But Rav-milim recognizes this word. ניקוד ע פיגום ע מינון ע איפול ע איטום ע איפוק ע חיקור ע עיטוש ע צידוק ע קיבול ע קידוח ע שימוע ע חינוך ע חינוכי ת ויסות ע,ים עיוות ע,ים עיקול ע דיפון ע כישור ע דיוור ע,יחיד איסוף ע,יחיד עילום ע,יחיד # inflections aren't useful רישול ע,יחיד היתוך ע סיפון ע שיפוד ע איתות ע,ים כיסוף ע # [3] says it is usually used in plural שיפוט ע שיפוטי ת עידון ע מיזוג ע מידור ע אינוס ע # not recognized by [3], but recognized by [2] and [4]. עיצום ע # note that singular and plural have different meaning. כיבוש ע הילוך ע פיטור ע,אין_יחיד,ים,רבים=פיטורין # פיטורים נישוא ע,אין_יחיד,ים,רבים=נישואין # נישואים קידוש ע,ים,רבים=קידושין # קידושים שידוך ע,ים,רבים=שידוכין # שידוכים סימוך ע,אין_יחיד,ים,רבים=סימוכין # סימוכים מילוא ע # useful inflections: נטיות יחיד )לא נפרד( ונפרד רבים - מילואים. מילואיםניק ת,נקבה_ית # colloquial רישום ע אישום ע אישור ע אישוש ע בימוי ע ניכוי ע ליקוי ע עיתוי ע בינוי ע עיסוי ע חיקוי ע היגוי ע,יחיד ציווי ע סיכוי ע ביטוי ע מיפוי ע רישוי ע,יחיד ריבוי ע,יחיד שיקוי ע ניסוי ע ניסויי ת # Yes, the plural has 3 consecutive yods. The Academia even explicitly mentions this example in http://hebrew-academy.huji.ac.il/decision3.html. עילוי ע בידור ע בידורי ת בידוק ע ביגוד ע בילוש ע ביסוס ע ביצור ע ציבור ע ציבורי ת ציבוריות ע דיבור ע עיכול ע מיתוג ע חיתוך ע חיבוק ע היפוך ע ניגוד ע ניגודי ת ניגודיות ע ניגוב ע ניגון ע חיזוק ע חיסול ע ביקור ע ביקוש ע ליכוד ע מימוש ע שיקול ע שיקום ע שיקומי ת שיקוף ע שיקוץ ע תיקון ע סידור ע סידורי ת דילוג ע דימום ע דיקור ע דישון ע סיכום ע סיכול ע סיכון ע סימון ע סילוף ע צימוק ע עיגול ע ריבוע ע ריבועי ת כיוון ע כיווני ת שיווק ע כיווץ ע ביטול ע טיפול ע טיפולי ת טיפוס ע חישוב ע חישובי ת חישול ע חישוק ע חישור ע חישוף ע # archaic like "חישופי צווארה", modern usage in IDF. כישוף ע חיתול ע טיטול ע # colloquial, generalized trade-mark חיתום ע חיתון ע איסור ע חיבור ע חיסור ע חילוק ע חילוף ע #חילופי ת # see also: חלופי. איפור ע איפוס ע מימון ע מימוני ת ניצור ע,יחיד # Interestingly, the following words, in vowelled spelling are in the same # mishkal as סיפור - they have a chirik chaser followed by a ot gronit that # can't get dagesh, but the chirik chaser was never changed into a tsere as # in a tashlum dagesh. # Compare these to words like סירוב, גיהות, תיאום, מיחוש which do get tsere # in vowelled spelling. In unvowelled spelling, both get extra yods because # of different academia rules. מיעוט ע תיעוד ע תיעודי ת תיעוב ע שיעול ע ניחוש ע ביעות ע,ים שיעור ע סיעור ע,יחיד,אין_כינויים # modern use only in the phrase "סיעור מוחות". Not recognized by [3], but in [4]. איחוד ע איחור ע תיחום ע ריחוק ע ריחוף ע טיעון ע דיחוי ע שיהוי ע סיעוד ע סיעודי ת ליהוק ע זיהום ע זיהומי ת ניהול ע ניהולי ת ריהוט ע,יחיד קיטום ע,יחיד עידור ע,יחיד כיחלון ע,יחיד כימשון ע,יחיד,אין_כינויים קימחון ע,יחיד,אין_כינויים זיכרון ע,ות עיצבון ע,ות שיברון ע,ות # usually as שיברון-לב. קיבעון ע,ות # fixation פיתיון ע,ות שיגעון ע,ות שיגעוני ת שיגיון ע,ות שיגיוני ת שיגרון ע,ות שיגרוני ת שיטפון ע,ות דיכאון ע,ות דיכאוני ת # this word is not recognized by [3] שיטיון ע,יחיד ניקיון ע,ות ניכיון ע,ות רישיון ע,ות גיליון ע,ות זיכיון ע,ות כישרון ע,ות כישרוני ת כישלון ע,ות ניצחון ע,ות פיקדון ע,ות ביטחון ע,ות ביטחוני ת # yes, this is the academia spelling, not בטחוני, because of ביטחון ביזיון ע,ות ביזיוני ת # [4] and [2] recognize this, [3] doesn't (to me, it sounds a bit slangish...). Note the added yod, despite the shwa nach, because of the base word ביזיון. see also תימהוני. עיזבון ע,ות # note: the ain has chirik, not tsere as sometimes pronounced. פיכחון ע,יחיד # ות פיקחון ע,יחיד,אין_כינויים # ות - in the phrase "פקחון עיניים". Watch out not to confuse it with פיכחון. שיממון ע,יחיד # ות שידפון ע,יחיד # ות ריקבון ע,יחיד # ות שיכרון ע,יחיד # ות קיפאון ע,יחיד # ות תימהון ע,יחיד # ות תימהוני ת תימהונות ע,יחיד צימאון ע,יחיד # ות כיליון ע,יחיד # ות שיזפון ע,יחיד # ות. means שיזוף. גיזרון ע # Hebrew word for "etymology". [4] think ים, [3] doesn't have plural. [2] and [1] thinks ים, but vowel this word differently, like מכשול (the academia decidea, however, that the voweling should be like זיכרון). גיזרוני ת # etymological ביטאון ע # [3] and I think ים, but [1] thinks ות, like other things in this mishqal חינמון ע # Note that unlike ביטאון, in this word there is a chirik maleh. קיקיון ע # [1] thinks ות, like other זיכרון-like words, but [2], [3] and [4] think ים. קיקיוני ת עיתון ע עיתונאי ע עיתונאית ע עיתונאי ת עיתונאות ע,יחיד # note: עיתונאות is the profession of an עיתונאי (journalism), while עיתונות is also his place of work (the printed media). עיתונות ע,יחיד צינור ע,ות צינורית ע כינור ע,ות ריבוא ע,ות # another word for רבבה, 10,000. ניצול ת # [3] says also נקבה_ת, but I never heard that used in this sense. ביטוח ע ביטוחי ת ויכוח ע קישוא ע ביצוע ע ביצועי ת ביצועיסט ת,נקבה_ית # colloquial גילוח ע מיקוח ע פילוח ע דיבר ע,ות אילם ת,נקבה_ת אילמות ע פיקח ת,נקבה_ת פיקחות ע,יחיד פיקחי ת פיכח ת,נקבה_ת # unfortunately easily confused with פיקח :( פיכחות ע,יחיד פיסח ת,נקבה_ת חיגר ת,נקבה_ת איטר ת,נקבה_ת איטרות ע,יחיד גיבח ת,נקבה_ת # מילה נדירה - קירח מלפנים. קיפח ת,נקבה_ת # literary. means a very tall person. קישח ת,נקבה_ת קישחות ע,יחיד גידם ת,נקבה_ת גיבן ת,נקבה_ת קיטע ת,נקבה_ת עילג ת,נקבה_ת עילגות ע,יחיד עיקש ת,נקבה_ת עיקשות ע,יחיד טיפש ת טיפשות ע טיפשי ת טפשון ת,נקבה_ת # considered colloquial. note that in feminine singular, there is ו only in ktiv maleh. Compare טיפשונת to משקולת. כיסא ע,ות שילש ע ריבע ע שימוש ע שימושי ת שימושיות ע ניסיון ע,ות ניסיוני ת חינני ת חינניות ע ציפור ע,נקבה איגרת ע מינוח ע ניצב ע ניצבת ע כינמת ע,אין_נטיות היצרות ע # While many people pronounce this like היכרות, the correct pronunciation starts with a chirik and kamats. # The following words are in mishkal תפילה, with chirik chaser and dagesh in # the lamed. Ordinarily, these words have from a double root, and their first # letter added part of the mishkal. For example, תפילה is from פלל, and # מסילה is from סלל. That is true for most of the following words, but not for # all: in the words כלימה and קהילה all three root letters are present, and it # is unclear (to me) why this mishkal, and not the one without dagesh ("סליחה") # was chosen. The words אמיתה and מגינה probably also exhibit the same # question, though it's unclear what is the root in that case. Also, the words # נחייה and נשייה are different: these are not double roots, but rather roots # that end in yod. # See also words in the same mishkal but because of tashlum dagesh are # voweled with tsere: מגירה, מאירה. תפילה ע,ות,רבים=תפילין אמיתה ע # Axiom. Note extra yod! And note אמיתות is plural of אמיתה, while אמתות (with shuruk - truthfullness) is written without extra yod. מגינה ע # בביטוי: למגינת לבי נחייה ע # בביטוי: כלב נחייה נשייה ע # בביטוי: תהום הנשייה רמייה ע כלימה ע מגילה ע מחילה ע # באדמה מזימה ע מסילה ע מסילתי ת # not in [4], but used in phrases like "תחבורה מסילתית" and in topology "קשירות מסילתית". מסיבה ע נסיבה ע נסיבתי ת תחילה ע תחיקה ע תחיקתי ת תחינה ע תהילה ע קהילה ע קהילתי ת מצילה ע # bell or type of precussion instrument (see also מצלתיים) משיסה ע,אין_נטיות # archaic, meaning robbery מחיצה ע # הפרדה/קרבה. The Academia decided (as mentioned on their site) that this, with chirik chaser, is the correct spelling. מחיצה with chirik male remains the shem peula (look for מחיצה elsewhere in this file). סלסילה ע # In the phrase "פוסח על שתי הסעיפים" (pronounced se'ipim). [3] says the # singular is סעיפה (chirik chaser in ayin, dagesh in pe), while [5] and [4] # say it is סעף (like מגן), and therefore the plural should be written סעפים. # How do I decide which is correct? "סעיפה" makes more sense in that the word # is female (because of שתי - and [5] agrees that its female), while "סעף" # makes more sense with the ים plural. Add to that the fact that most people # say שני הסעיפים (perhaps confusing with סעיף), and we have a big mess. # TODO: reconsider סעיפה ע,ים,אין_יחיד # סעף ע,נקבה,אין_יחיד ריבית ע עידית ע,יחיד # a rare word, and inflection probably not useful... זיקית ע ציפית ע עילית ע ביזה ע פיסה ע עיסה ע ריבה ע דיבה ע חיבה ע סיבה ע סיבתי ת סיבתיות ע נידה ע נידות ע,יחיד # the state of being in נידה. Unfortunately this can also be a misspelling of the far more common word ניידות. סיכה ע ניצה ע ליבה ע כילה ע חיתה ע,יחיד # literary word meaning fear, terror. Usually used inflected, in the phrase הפיל חתתו רימה ע שידה ע גיזה ע זיקה ע זימה ע,יחיד ביצה ע ביצתי ת מיטה ע כיפה ע מידה ע מידתי ת # usually legalese מידתיות ע # usually legalese פינה ע פינתי ת צינה ע גינה ע כיתה ע כיתתי ת כיתתיות ע טיפה ע,ות,רבים=טיפין הילה ע # Like in the word שנה, it is most common to use the plural מילים but the # smichot form מילות-. However, the other forms (מילות, מילי-) are still # recognized by [1], [2], [3] (calls them literary). [4] doesn't recognize # מילי-, and doesn't see מילות as nifrad when parsing input words. # I decided not to allow מילות (nifrad) and מילי-; use the following commented # line to enable them: #מילה ע,ים,ות מילה ע,רבים=מילות,נפרדים=מילים שיטה ע,ים # kind of tree מילולי ת מילית ע איכר ע איכרה ע # Strangely, [3] only recognizes the feminine איכרה, [4] both איכרה and איכרית, and [5] איכרית and איכרת. On Google, איכרה is by far the most common. As we add the adjective below, איכרית will also be recognized, but as an adjective. איכרי ת שינן ע # masculine for שיננית - not in use. שיננית ע ניצן ע עידן ע כיכר ע,ות,נקבה רינה ע כינה ע,ים פיתה ע קינוח ע הישרדות ע הישרדותי ת # Not recognized by [3] or [4], but I think it is in use. ניכר ת,נקבה_ת נידח ת,נקבה_ת נידף ת,נקבה_ת ניצח ת,נקבה_ת # Only the feminine is in popular use, and [4] recognizes only it. נידון ת נינוח ת נינוחות ע,יחיד נימוח ת עילאי ת עילאות ע ערפילית ע # This is nebula, not fog! גלגילית ע # skate עילה ע אזיק ע # Actually, according to [1], if there were a singular, it would be אזק (kamats tsere). So if there was a singular, we should spell its plural אזקים. But since there is no singular, we need to spell the plural form independently according to the Academia rules, which means adding a yod. In 2013, the Academia decided that the singular is now officially אזיק: http://hebrew-academy.huji.ac.il/hodaot/hodaot/Pages/7feb2013.aspx אישות ע,אין_נטיות מיטלטל ע,אין_יחיד # מיטלטלים מידבק ת # yes, contagious is pronounced midabek, not medabek. חיפושית ע אימונית ע זיבורית ע,יחיד איתורית ע # Pager. Note that איתורית is a tradmark, but commonly used as generic. זימונית ע הילולה ע # shortened form of מלקח, לקיחה, used in phrases like מיקח וממכר, עמד על המיקח. # The form מקח (segol) is considered wrong by [3] but accepted by ravmilim and # according to a decision on the Academia's site (also in academia meeting # 255), is now considered a correct alternative spelling by the Academia. מיקח ע,אין_נטיות מקח ע,אין_נטיות סיגל ע סיגלית ע אימהי ת אימהות ע,יחיד # motherhood (with shuruk) ניחר ת # note chirik chaser followed by chet. strange (compare ניחן). תחילי ת תחילית ע # grammar term ניצה ע,סגול_ה,ים,אין_יחיד # ניצים, meaning people fighting each other. [3] allows the singular ניצה (segol before he) and its feminine ניצה (kamatz), and mentions its can also be a verb. [4] even goes and list the verb ניצה (nifal). However, all these forms other than the plural ניצים are archaic. חינמי ת # computer דlang אימא ע,אין_נטיות,נקבה # See comments on this word elsewhere in this file. חיזיון ע,ות,אבד_י חיסרון ע,ות,אבד_י חיסכון ע,ות,אבד_י חיסיון ע,ות,אבד_י היגיון ע,ות,אבד_י עיפרון ע,ות,אבד_י עיקרון ע,ות,אבד_י עילפון ע,ות,אבד_י חיפזון ע,ות,אבד_י חילזון ע,ות,אבד_י חלזוני ת # means ספירלי חידלון ע,ות,אבד_י # for example, "חדלון וסת", what is colloquially known as בלות #עישרון ע,ות,ים,אבד_י # a rare word. so rare, I or rav-milim never heard of it. But עשרוני comes from it. # TODO: maybe delete the words אשתנו, אשתכם, אשתכן, אשתה אשתן, נשייך, נשיכן... אשת ע,נפרד=אישה,רבים=נשים אשת ע,נפרד=אישה,רבים=נשות # nifradim is useless, but same as nismachim anyway. # words with o sound that got an extra vav in ktiv male: מכוער ת,נקבה_ת מגורר ת,נקבה_ת מגורד ת,נקבה_ת מחורץ ת,נקבה_ת מפורד ת,נקבה_ת מבוהל ת,נקבה_ת מסועף ת,נקבה_ת ממורט ת,נקבה_ת מיואש ת,נקבה_ת מטורף ת,נקבה_ת מתועב ת,נקבה_ת מקורב ת,נקבה_ת מאוהב ת,נקבה_ת מאורס ת,נקבה_ת מסואב ת,נקבה_ת מבועת ת,נקבה_ת מגואל ת,נקבה_ת מצועף ת,נקבה_ת מפורץ ת,נקבה_ת מפוהק ת,נקבה_ת מקורב ע # this is an adjective, which lately became a noun, as in "מקורביו". מעורה ת # [3] says this word has a cholam chaser. but usually spoken with "u". מקורה ת # with cholam chaser, but usually spoken with "u" # The word for sewage - שפכים - and its inflections and variants are debated. # # 1. The first issue is how to inflect this word. There are two approaches: # a) [4] appears to base the inflections on שפך, and simply inflects # שפכי-, שפכיי, שפכיהם, etc. # b) [3] appears to base the inflection on a singular "שופך" (mileil, with # cholam chaser) and gets the nismachim form שופכי-. [1] and [2] also # agree with this approach - and even list שופך (cholam chaser) as the # entry in their dictionary. This generates the inflections שופכי-, # שפכיי, שופכיהם. # While [4]'s opinion is disputed by every other dictionary, it is actually # supported by the general public. A Google search for "שפכיהם" turned up # 28 relevant pages, while a search for "שופכיהם" turned up none. I am # presuming that because the singular form is no longer in use, people # tend to forget it and use the simpler inflections - like those of the # word שפטים, or even פרטים, for example. # We decided to go with most of the dictionaries, and against the public # opinion, and use approach b). TODO: reconsider this decision. # # 2. The variant "שופכין" is considered non-standard by [3]. [4], however, # recognizes this form (vowelled with cholam male) as a valid variant. # [2] also recognizes the שופכין form. [1] doesn't. # For now, we won't accept this form, because it appears this form is based # on an alleged singular שופך (with cholam male), and I consider this # wrong. # Luckily, the public agrees with this verdict, and שפכים is 10 times more # frequent in Google than שופכין. But שופכין is not quite dead, and is # often used in phrases like בור שופכין and מי שופכין - so I am adding # it to extrawords as an archaic word used in phrases. # 3. Even the form שפכים is disputed. It is in [1],[3],[4] but not in [2]. # [2] lists the plurals שפכין (with a strange chataf-kamats in the shin), # שפכין (with shwa in the shin) and שופכין, but not שפכים. # 4. Another variant, "שפכין" (shwa in the shin) is recognized by [1] and [2], # but not by [3] and [4], so we won't accept it. Note that [2] even prefers # this form, and gives "בור שפכין" as an example. שופך ע,אבד_ו,אין_יחיד טופר ע,אבד_ו # טפרים, claws קותל ע,אבד_ו קוטב ע,אבד_ו קוטבי ת קוטביות ע צופן ע,אבד_ו בורג ע,אבד_ו תורן ע,אבד_ו קוטר ע,אבד_ו גולם ע,אבד_ו גולמי ת גולמני ת טופס ע,אבד_ו צורך ע,אבד_ו בוקר ע,אבד_ו גודל ע,אבד_ו רושם ע,אבד_ו רוטב ע,אבד_ו שובל ע,אבד_ו יושר ע,אבד_ו כושר ע,אבד_ו יוקר ע,אבד_ו יושן ע,אבד_ו,יחיד # e.g., להחזיר עטרה ליושנה תוקף ע,אבד_ו,יחיד יובש ע,אבד_ו,יחיד כובד ע,אבד_ו,יחיד קוטן ע,אבד_ו,יחיד רוגז ע,אבד_ו,יחיד זוקן ע,אבד_ו,יחיד # rarely used variant of זקנה. לובן ע,אבד_ו,יחיד נומך ע,אבד_ו,יחיד קומץ ע,אבד_ו חומש ע,יחיד # [1] says the plural is חמשים. [3] says חומשים, and [4] says there is no plural... סומק ע,אבד_ו,יחיד חולד ע # according to [1], it should be אבד_ו. But [3] disagrees. חומץ ע,אבד_ו,יחיד דופק ע,אבד_ו תוכן ע,אבד_ו תוכני ת # unfortunately this adds the misspelling "תוכנית"... קובץ ע,אבד_ו נופש ע,אבד_ו # the plural is quite unnatural: maybe I should add יחיד? בושם ע,אבד_ו כומר ע,אבד_ו רובד ע,אבד_ו רובדי ת רובדיות ע דולב ע,אבד_ו # סוג עץ לוטם ע,אבד_ו # סוג פרח רותם ע,אבד_ו # סוג צמח מותק ע,אבד_ו,יחיד קורט ע,אבד_ו,אין_נטיות נופך ע,אבד_ו,אין_נטיות גופר ע,אבד_ו,אין_נטיות # kind of biblical tree אופל ע,אין_נטיות עומס ע עוקץ ע עודף ע עורף ע עורפי ת עומק ע עותק ע אושר ע חושך ע חוסר ע חוסן ע חוטם ע חוקן ע חומט ע # type of lizard אודם ע # TODO: inflections are useless, if not wrong... חודשי ת חושן ע,אין_נטיות עונג ע אונס ע חוזק ע,יחיד עוקם ע,יחיד # inflections not in use. חומד ע,אין_נטיות # colloquial, used to address something (no inflection) אובך ע,אין_נטיות אומץ ע,יחיד אוטם ע חופן ע,זוגי עושר ע,יחיד חוטר ע עובש ע עומר ע # אסופת שיבולים עולש ע # סוג פרח אורן ע עופר ע אורז ע,יחיד חורף ע חורפי ת חורש ע עונש ע,ים עונש ע,רבים=עונשין,אין_יחיד,אין_נטיות_רבים # The word עונשין is considered a seperate word, not a plural of עונש. In particular, the academia decided that it has cholam male (the waw isn't just added for niqqud-less spelling, like in the word עונשים). עונשי ת # legal term - in the phrase פיצויים עונשיים. אופק ע אופקי ת חופש ע חופשי ת חופשיות ע חומר ע חומרי ת חומריות ע חומרני ת חומרנות ע,יחיד אורך ע אורכי ת קודש ע # Note: it's interesting that קודש and שורש are the only words in this misqual which do not have אבד_ו but do not start with ח, א, or ע. שורש ע שורשי ת שחור ת אפור ת צחור ת צהוב ת אדום ת ורוד ת כחול ת תכול ת כתום ת סגול ת עגול ת ארוך ת ענוג ת רטוב ת עמוק ת חסון ת עבות ת איום ת עקוב ת # as in עקוב מדם. not with shuruk like often pronounced! ערום ת # this is ערם, patach cholam-chaser. see also עירום, also valid... עירום ת # this is עירם, tsere-male cholam-chaser. see also ערום - valid... זהוב ת # [3] prefers to spell this with a shuruk, [4] with cholam chaser. זהוב ע # archaic name of coin. zloty and gilder also means the same. כסוף ת # shuruk מעוז ע שמרחום ע # Academia's translation for Thermos. Not in actual use. תוף ע דוק ע,יחיד # literary חום ע,יחיד דום ע,אין_נטיות # not in [1], I don't know why. חוד ע חול ע,רבים=חולין עול ע רוך ע,יחיד גוב ע שוד ע רוק ע,יחיד אום ע תום ע חוק ע דוב ע רוב ע סוב ע,אין_יחיד,ים,רבים=סובין # [1] and [3] prefer the plural סובים, but it is extreemely rarely used. TODO: reconsider, and delete ים. חוב ע,יחיד # In phrases like טומן בחובו קור ע,ות פות ע,ות,שמור_ת # inflections not normally used... בוץ ע,יחיד תוך ע,רבים=תככים,אין_יחיד # The singular appears in [1] and [3], but I never heard it myself. מור ע,אין_נטיות #,ות # commented out because it's rare לאום ע כוח ע,ות כוחני ת כוחניות ע רוע ע,אין_נטיות מוח ע,ות,רבים=*מוחין,נפרדים=מוחין # This strange combination of options adds the full inflection of מוח,מוחות and an additional plural form (without inflections) מוחין. מוחי ת עירום ע קרסול ע,יים כרכוב ע אלמוג ע חרטום ע קרדום ע,ות,ים מערום ע כרכום ע מדחום ע עוז ע רון ע צור ע מקטורן ע בוטן ע מותן ע,יים מותני ת מעורבות ע # According to the note in [1, page 49], the plural of these words must be # inflected like ספר. The same note also says it's possible to inflect these # words like ספר even in the singular, but we won't support this at this stage. # (so words like חצני [chirik in ח] will not be allowed as an alternative for # חוצני [kamats katan in ח] for now). אומר ע,רבים=אמרים בוסר ע,רבים=בסרים בוסרי ת חוצן ע,רבים=חצנים יושר ע,רבים=ישרים נוכח ע,רבים=נכחים # CASE 295 # [1, page 49] explains: "in nouns whose plural end with -ות a kamats katan # will come under פ השורש in all plural inflections.". אבד_ו does exactly # that when it deals with a ות plural - which is different from what אבד_ו # usually does. גורן ע,ות,אבד_ו,נקבה דופן ע,ות,אבד_ו,נקבה,זכר סולת ע,ות,שמור_ת,אבד_ו נופת ע,יחיד,שמור_ת,אבד_ו,אין_כינויים # in the phrase נופת צופים תופת ע,ות,שמור_ת,אבד_ו שוקת ע,רבים=שקתות # [1] and [3] agree the smichut here also loses vav! בושת ע,יחיד # CASE 298 # This is very similar to the אבד_ו case, except that there is kamats # katan in the ע in all the plural inflections that the אבד_ו changes. # HOWEVER, according to [3] (look up פועל), we should not write an extra vav # in this case. How lucky for us! This is happening because of the academia's # rule to add a vav for chataf-kamats or kamats katan only if it is a cholam # chaser in the base word. Here, it's not! פועל ע,אבד_ו פועלי ת דוחן ע,אבד_ו,יחיד,אין_כינויים מוהר ע,אבד_ו,יחיד שוהם ע,אבד_ו,יחיד # אבן יקרה שחורה טוהר ע,אבד_ו,יחיד סוהר ע,אבד_ו,יחיד גועל ע,אבד_ו,יחיד גועלי ת מועל ע,אבד_ו,יחיד,אין_כינויים # in the phrase "מועל יד" נועם ע,אבד_ו,יחיד,אין_כינויים # in phrases like "דרכי נועם". כוהל ע,אבד_ו # The Academia mention on their site a decision to put a patach on the he, not segol. This makes this word more similar to others in this mishkal. כוהלי ת שוחד ע,אבד_ו בוהן ע,רבים=בהונות,נקבה זוהר ע,אבד_ו נוער ע,אבד_ו תואר ע,אבד_ו דואר ע,אבד_ו צוהר ע,אבד_ו נוהל ע,אבד_ו נוהלי ת # note ו for kamats katan, nothing for chataf kamats. נוהג ע,אבד_ו # I'm not sure, but it seems right from [3]... אוהל ע # CASE 299 # Again, just like case 298, the second letter of the shoresh gets a kamats # katan in most inflections, but since this kamats katan was not a cholam # chaser in the base word, we don't write a vav there. רוחב ע,אבד_ו רוחבי ת רוחק ע,אין_נטיות # in phrases like קפיצה לרוחק דוחק ע,אבד_ו,יחיד # CASE 300 # TODO: Judging from [1], these words should NOT have אבד_ו. However, looking # at אורח in [3], it explicitly says ארחות with chataf-kamatch but no vav, # meaning that we should put אבד_ו here!! # I can't understand that, and I consider it an error in [3]. # How exactly this applies to גובה, if at all, I'm not even sure, and [1]'s # claim that רובע's plural is רובעות is absurd. If I one day get evidence that # these inflections are wrong, I'll have to fix them. אורח ע,ות בדולח ע,אין_נטיות גומא ע,אבד_ו רומח ע,אבד_ו רוגע ע,יחיד כורח ע,ות שובע ע,יחיד # these inflections are so useless... רובע ע,אבד_ו,ים גובh ע,אבד_ו,ים # גובה # Weird cases from [1, page 54] חולY ע # חולי אופY ע # אופי עובY ע # עובי עונY ע # עוני עופY ע,רבים=עופאים # עופי קדקוד ע # Academia decision: the first o, a kamats katan, doesn't get a vav. אופן ע אוזן ע,יים,נקבה כתובת ע יכולת ע נחושת ע,יחיד,אין_כינויים ירוקת ע,יחיד קטורת ע,יחיד פסולת ע,יחיד נסורת ע,יחיד נשורת ע,יחיד נפולת ע,יחיד נצולת ע,יחיד # This means "salvage", what's left from a wreck, or manufacturing refuse that can be reused. ניצולת is a different word. נעורת ע,יחיד # archaic חרושת ע,יחיד חרוסת ע,יחיד # traditional food in Seder Pesach סבולת ע # see also: סיבולת! # note that according to [1, page 52], words like משקולת, originally with # cholam chaser in ktiv menukad, get a cholam male in the plural, even in # ktiv menukad (we'll need to take this into account if we want one day to # be able to generate ktiv chaser). פצפון ת,נקבה_ת # considered colloquial. note that in feminine singular, there is ו only in ktiv maleh. Compare פצפונת to משקולת. תינוקת ע משקולת ע משמורת ע # legal term תקרובת ע # rarely used today outside the phrase "תקרובת עבודה זרה". חלחולת ע סגסוגת ע כרבולת ע זנזונת ע # colloquial אשמורת ע מכמורת ע מעבורת ע מחרוזת ע מחפורת ע תזמורת ע תזמורתי ת תחמושת ע תחפושת ע תחבושת ע תחמוצת ע מחלוקת ע פרסומת ע תקשורת ע תקשורתי ת תזכורת ע תרגולת ע תכתובת ע תלבושת ע תמסורת ע תסבוכת ע תשפוכת ע # literary תנגודת ע תרשומת ע # rare, doesn't appear in [3] (but does in [1],[2],[4]). תסמונת ע תספורת ע תסרוקת ע תגבורת ע תערובת ע תפזורת ע תצרוכת ע תשדורת ע תשחורת ע תשלובת ע תברוגת ע תרכובת ע תקבולת ע # rare word תרנגולת ע צמרמורת ע סחרחורת ע מערגולת ע # Appears in [3], but not in use at all. The English word is "roll". חמרמורת ע # hangover. Not commonly used, and not recognized by [3]. מערבולת ע # Note that the Academia decided that there is a shva in the mem, and [3] also lists it this way. תרעומת ע משכורת ע מלכודת ע מרכולת ע ילדונת ע,אין_נטיות # inflections not useful, usually used in address. צעירונת ע,אין_נטיות # in [4], not in [3]. I consider this rather colloquial. רזונת ע,אין_נטיות # in [4], I consider this colloquial. בצורת ע,רבים=בצרות עשתורת ע,רבים=עשתרות,אין_כינויים כדורת ע,אין_נטיות מפולת ע # [1] suggests the plural is מפלות, but [2] and [3] disagree. מסורת ע # [1] suggests the plural is מסרות, but [2] and [3] disagree. מסורתי ת מכולת ע פרוכת ע מתכונת ע # note: אלוה, אלוהים,אלוהי can be written either with or with ו in ktiv chaser. # The one without vav is considered (by [3]) bible spelling. אלוh ע,ים # אלוה, אלוהים (note the plural and singular have different meanings) אלוהי ת אלוהות ע # common deliberate misspelling of אלוהים and its derivatives, in order not to # write the holy word: אלוק ע,ים,אין_יחיד # אלוקים אלוקי ת אלוקות ע,יחיד מאורע ע,ות בורית ע # Archaic תוהו ע,אין_נטיות # [1] writes the inflections (similar to those of אחו), but nobody uses them. בוהו ע,אין_נטיות הווה ע,אין_נטיות # words with more than one letter added by ktiv male: עיוור ת,נקבה_ת עיוורון ע,יחיד חיוור ת,נקבה_ת # Note: [3] says the smichut of חיוורון is חוורון. I think it's probably a # typo, when comparing it to עיוורון, and when considering the academia's # rules, and [4]. So I will not follow [3] on this. חיוורון ע,יחיד סופגנייה ע פומפייה ע סוכרייה ע אוכלוסייה ע חנוכייה ע קובייה ע קובייתי ת ציפייה ע שישייה ע ציפורן ע,ים,יים,נקבה ציפורן ע # the flower is masculine. ביקורת ע ביקורתי ת ביקורתיות ע טינופת ע ניצולת ע,יחיד # Ravmilim lists the meaning "utilization", but [3] lists a different meaning not used in modern Hebrew. See also נצולת שיבולת ע,רבים=שיבולים סיפורת ע,אין_נטיות # prose טיפונת ע,אין_נטיות # colloquial # People usually say "סיבולת" (chirik chaser, cholam chaser) meaning endurance, # stamina. However, [2] says that this word means something else (a picknick!) # and the word for endurance is "סבולת", with shva in samech. [3] also agrees # the word is "סבולת" and doesn't even list "סיבולת". Rav-milim defines # "סיבולת" as endurance, but says it is a non-standard form. # I decided to follow Rav-Milim's lead and allow "סיבולת". It is a word with # a valid mishkal, and it is silly to insist that it carries an unused # definition, and not the useful definition. סיבולת ע # see also: סבולת סיומת ע גיורת ע # feminine of גר קידומת ע קיבולת ע קיבורת ע,אין_כינויים,יחיד # arm muscle. rarely used (I can't find any use of plural or inflections, except one use of קיבורתו). חווייתי ת לוויין ע לווייני ת # This word isn't recognized by either [2] or [3] לווייתן ע כווייה ע מעוניין ת,נקבה_ת מאwy ע # מאוויי. [1] prefers מאווה (see errata) and a different plural... הwy ע,יחיד # [3] writes הוויי, while [4] הווי. The Academia's rules explicitly list הוויי as an example, so we'll go with [3]. See also אזי, אללי, די for more problems. גווייה ע לוליין ע לוליינית ע לולייני ת לוליינות ע איוולת ע,יחיד קהילייה ע # this was the old translation for "republic". # The correct pronounciation of שומשום is shumshom, but people always # pronounce it sumsum. It is spelled with a kubuts and then cholam chaser. # The plural inflection is problematic. The normal plural is שומשמים, i.e., # אבד_ו needs to be used, but currently אבד_ו only works on the first ו, so # it doesn't work properly. So we do not allow any plural inflections, or any # inflections for that matter (because they're not useful). Another plural # form, שומשמין (also losing the vav) is allowed following [1] and [4] but not # [3] (and it is actually popular in Google, especially in religious contexts, # even more than the "obvious" plurals). שומשום ע,רבים=שומשמים,אין_נטיות,אין_נטיות_רבים שומשום ע,רבים=שומשמין,אין_נטיות,אין_נטיות_רבים # The spelling סומסום, pronounced sumsum, is acknowledged by [3] (pointing # to the "hebrew version" שומשום), [4] (calling this variant colloquial) # and [5] (pointing to שומשום). All of them apparently consider this spelling # less standard, and despite the fact that almost everyone pronounces this # word this way, the spelling שומשום is still much more popular than סומסום # on a Google search. Therefore, for now, we won't accept this spelling. # סומסום ע,אין_נטיות # The following words do not have "i" sound in stem, and therefore cannot # get extra yud in the inflections - according to the academia rules [3]. # But these inflections do have chirik, *not* followed by a shva nach, which # makes the missing yud very peculiar. For example, the plural of מס is # spelled מסים, not מיסים. # While our inflection *is* officially correct, we should think about having # an option for the missing yud, because many people will find this very # strange. # In fact, the academia's rule call for that yud to be used in one exception: # the word שן, whose plural שניים could be confused with the number, so the # extra yuds *should* be added to the inflections of שן. So we have an option # מיוחד_שן which is used below on שן. One can add it to the other words below # to, to choose the with-extra-yud spelling for them too. # Another thing to notice is the adjectives listed below: אמתי, ערפלי, צדי, # אטי and נצי, and the nouns אטיות, ערפלות, ערפליות. The Acadmia views these # words as derivatives of the corresponding nouns (אמת, ...), and since those # nouns do not have the "i" sound, the yod should not be added in the # derivatives either. # [4] usually acknowledges that these are the Academia-specified spellings # (in all cases except ערפלי, ערפלות, ערפליות, אטיות, I don't know why), # but notes that Rav-Millim prefers the spellings with yod: אמיתי, ערפילי, # ערפילות, ערפיליות, צידי, איטי, איטיות and ניצי. We will go against [4], # and with [3] and the Academia for now. # Note that when the relation of the words is inflectional (e.g., singular- # plural), [4] tends to agree with the academia: e.g., its plural of נץ is # נצים, without yod. However, its morphological analyzer does understand # ניצים as a possible match for נצים. אמת ע,ות,שמור_ת אמתי ת אמתות ע # "truthness". See also אמיתה, with yod. גרזן ע ערפל ע ערפלי ת ערפלות ע ערפליות ע ערפלית ע ברזל ע אראל ע # rare ever used, literary word, meaning angel. It is unused enough that [3] doesn't even list it... מגן ע מס ע סף ע # Many people don't know this, but the plural is pronounced "sipim", and it's correct niqqud-less spelling ספים. צד ע,ים,רבים=צדדים צדי ת צדדי ת צדדיות ע בת ע,רבים=בנות פת ע,ים,נקבה כת ע,ות,שמור_ת בז ע לב ע,ות,רבים=לבבות #TODO: # The word אם is super-problematic: # 1. According to the Acadmia, the plural אמהות should have a yod added in # niqqudless spelling: אימהות. # [3] lists אמהות, without a yod, which makes sense seeing # that the singular doesn't have a yod and the Academia doesn't add yods in # such cases. However, [3] then goes on to make a seperate entry אימהות # saying that it is a plural form of אם. Rav-Millim's online interface even # insists that the correct vowel-less spelling is אימהות. # If the dignified dictionaries disagree what is the correct form, we have # no choice but to accept all of them as correct, and hope that a certain # user will at least use one of them consistently. # 2. While [1] accepts all plural inflections as both אמות and אמהות, other # sources ([2], [3], [4]) accept אמהות only as the nifrad plural, but insist # that other plural inflections must use the base plural אמות. [3] and [4] # goes further and says that אמות is not even a valid nifrad plural - but # [1] disagrees. # I decided to go with [3] and [4], the more modern dictionaries, instead # of allowing all the forms. # This mess just adds to the mess of whether to spell אימא or אמא... (See # discussion in spellinghints about אימא). # See also אימהי, אימהות (with shuruk) below. #אם ע,ות,רבים=אמהות,נקבה #אם ע,רבים=אמהות,נסמכים=אמות,נקבה אם ע,רבים=אימהות,נסמכים=אמות,נקבה חץ ע # TODO: does אט have a plural? when we remove the plural, we should also # remove the words לאט from the "milot" file, because it's simply lamed+this! אט ע אטי ת אטיות ע גת ע,שמור_ת # [3] says only ות, but [4] and [5] allow also ים, גתים. (note that if we add ים, we'll also need to add an explicit feminine gender). TODO: reconsider. נס ע חן ע אש ע,יחיד,נקבה # [1] says it is also זכר... TODO: Dan thinks there's a plural. קץ ע נץ ע נצי ת # politics term נציות ע # politics term גט ע תל ע עז ע,נקבה קן ע חך ע # The spelling חיך is incorrect, although the online version of [4] brings up the entry חך when you type it. עת ע,ים,ות,שמור_ת,נקבה את ע,ים # shovel שן ע,יים,מיוחד_שן,נקבה צל ע,רבים=צללים גץ ע # The following words have kamats katan in their stem, which persists # throughout the inflections, and thus according to the ktiv male rules [3] # A vav should *not* be added. # So we didn't add a vav. But note that this results in spelling that is # unexpected by most modern Hebrew users, so maybe we should add an option # not to follow this academia rule, and add vav to the following stems: חכמה ע יזמה ע ישרה ע יהרה ע,יחיד # note that יוהרה (shuruk) is also correct, according to [3]. רגזה ע,יחיד # note that רוגזה (shuruk) is also correct, according to [3]. זהמה ע,יחיד # note that זוהמה (shuruk) is also correct. [4] also allows a plural. עצמה ע עצמתי ת ערמה ע אמנה ע,אין_נטיות תכנה ע תכנתי ת חמרה ע # note that חומרה also exists, but with shuruk! חמרתי ת למדה ע # education software קשחה ע,אין_נטיות # firmware אפנה ע אפנתי ת עגמה ע # note that [1] lists this with patach, and [3] mentions both. צהלה ע # this word can also be vowelled like טחנה, but the "צוהולה" pronounciation is preferred. Many speakers choose a third way of speaking, like קערה. The word טהרה has the same pronounciation issues. טהרה ע אשיה ע חגלה ע ערלה ע שכרה ע,אין_נטיות שבעה ע,אין_נטיות חרמה ע,אין_נטיות חפזה ע,אין_נטיות לחמה ע #,יחיד ? שפכה ע #,יחיד ? It's interesting there is no dagesh in the caf. *אזלה ע,נסמך=אזלת # The word is found stand-alone in [3], but only listed as the phrase "אזלת-יד" in [2] and [4]. It is not found at all in [1]. Following [4], for now, I'm adding only אזלת-. אנייה ע תכנייה ע ארנייה ע # kind of mushroom עזנייה ע,אין_כינויים # kind of bird תכנית ע תכניתי ת אמן ע אמנית ע אמנות ע אמנותי ת קרבן ע,ות דרבן ע,ות # Used to mean spur or porcupine quill, but recently the Academia decided that the same spelling, with kamatz katan, will also refer to the porcupine itself (instead of the old spelling דרבן with patach). חרפן ע # mink אבדן ע אבדני ת # suicidal, not for general loss. אזנית ע # According [3] and [4]. [4] calls אזנייה (with kamats katan) "nonstandard". Also in list of Academia terms from 1960. But most people spell אוזנייה... גפרית ע,אין_נטיות נכרי ת,נקבה_ה,נקבה_ת # [4] acknowledges that this is the standard spelling but says that it still prefers to spell נוכרי נכריות ע הפכי ת # [4] says this is is old spelling, new spelling is הופכי with cholam male. # Note: the plural smichut of צוהר is צוהרי- (vav for kamats katan that # originates in cholam chaser). # This is not the correct inflection of the supposed יים plural, צהריים, # which according to [3] is צהרי with kamats katan in the צ. Why? Because # צהריים should have been with a shva. But it isn't it's in kamats katan. # So this is a different word, a word that has kamats katan in the צ, and # this kamats katan persists throughout the inflections. An explicit rule # of the academia says that in this case the kamats katan should not be # written (just like חכמה, אנייה (chataf-kamts), etc.). צהר ע,אין_יחיד,יים # צהריים # Similarly for the word אבניים. It is a plural-only word, and a singular # אובן (with cholam chaser) doesn't exist. The kamats katan percists through # the (plural) inflection, so we can't add a waw. אבן ע,אין_יחיד,יים # אבניים # The word מצלתיים (chirik chaser in צ) is not considered a plural of מצילה # (again, chirik chaser in צ), which is why a yod is not added to it! This # is according to [3]. An explicit academia decision (see # http://hebrew-academy.huji.ac.il/decision3.html) also says there is no # dagesh in the lamed, and therefore no yod. The Academia's newsletter # Academ from May 2002, page 7, repeats this, and explictly says that it # should be written without yod. מצלה ע,אין_יחיד,יים # מצלתיים # In the following words the yud is not doubled in the stem word, because of # an explicit Academia rule (see [3]). However, it needs to be doubled in # some of the plurals (גייסות, תיישים) of some of the words below. זית ע,ים טיס ע,אין_כינויים,יחיד קיט ע,אין_נטיות בית ע,רבים=בתים,זכר ביתי ת ביתיות ע ליל ע,ות,נפרד=לילה ליל ע,ים # literary. לילי ת # חילות is the modern plural of חיל... In literature the plural is חיילים (see # [1, page 53]). The Academia actually decided in November 13, 2005 that # in addition to חילות, the plurals חיילים and חיילות (with chataf-patach) # are also acceptable; But nobody uses these because they confuse with the # words חייל and חיילת. TODO: reconsider adding those alternative plurals. חיל ע,ות חילי ת יין ע,ות עין ע,יים,נקבה זין ע ציד ע # with chirik (hunt), not hunter which gets another yud in ktiv male דיג ע # with chirik (fishing), not fisherman which gets another yud in ktiv male איל ע # note the difference between איל and אייל # this is קיץ's [3] inflection... [1] recommends the תיש-like inflection. קיץ ע # According to an academia decision from November 13, 2005, this word has an additional, תיש-like plural. TODO: consider adding that inflection. קיצי ת # This is [2]'s inflection for חיץ... [1] recommeds תיש-like inflection # (commented below) while [3] thinks there is no plural at all. # Unfortunately, the misspelled inflection of חץ can look like correct # inflection of חיץ. #חיץ ע,רבים=חyצים,נסמכים=חיצי חיץ ע שיט ע,יחיד # these inflections are rather useless... שיש ע,יחיד # these inflections are rather useless... עיט ע # According to [1, page 53-54], the plural of גיא is גיאות or גיאיות. # [3] and [4] agree on a third spelling: גאיות. [5] prefers גיאיות and # calls the two other spellings "old". The academia agrees with [5] here: # In their site a decision from May 23, 2005 (ישיבה רפ"ג) is that the # inflection of גיא (patach in ג) is גיא- (tsere male), גיאיות (tsere male, # and kamats in aleph), גיאיות- (tsere male and chataf patach). גיא ע,יות # CASES 335-337 - the yud must be doubled in some inflections. see [1, page 52]. # This is quite similar to the former מיוחד_שוק case (for which we now add # the extra w). We could do similarly תיyש, but we'll need the אבד_ו option # to be able to loose a י too. תיש ע,רבים=תyשים,נסמכים=תישי ליש ע,אין_נטיות #רבים=לyשים,נסמכים=לישי # archaic. סיף ע,רבים=סyפים,נסמכים=סיפי # This is only the sword. The sport is correctly called סיוף. Modern usage calls the sport סיף as well, though. עין ע,רבים=עyנות,נסמכים=עינות עיר ע,רבים=עyרים,נסמכים=עירי עירה ע # In 2013 the academia decided this is the female young donkey דיש ע,יחיד #,רבים=דyשים,נסמכים=דישי גיס ע,רבים=גyסות,נסמכים=גיסות פיס ע,אין_נטיות #,רבים=פyסות,נסמכים=פיסות # Note: according to [3], תיל should be inflected like זית. But according to # [1] and to common usage, it should be inflected like תיש !!! see also קיץ, # חי תיל ע,רבים=תyלים,נסמכים=תילי ################################ ש א ר ה מ י ל י ם ######################### דבורה ע,ים שעורה ע,ים יונה ע,ים יוני ת # politics term יוניות ע # politics term חוגה ע שומה ע תלאובה ע # archaic תשובה ע פרוטה ע מלונה ע חלופה ע חלופי ת חליפי ת # NOTE: [2] and [3] don't have this word, but [4] does. קבורה ע קבוצה ע קבוצתי ת חמודה ע,אין_יחיד # חמודות. [3] and [4] disagree on what this means. גרורה ע גרורתי ת בדותה ע # [3] and [4] prefer this form over בדותא. The Academia allows only this form (see comment before דוגמה). מרוצה ע,יחיד # usually used inflected - "במרוצת הזמן", "מרוצתו", etc. מנוסה ע רשומה ע שבועה ע צפונה ע,אין_יחיד # צפונות. [3] thinks the singular is צפון, [4] says there is none. פזורה ע חצובה ע חבורה ע # chataf-patach and non-dgusha bet: group. חבורה ע # NOTE: patach and dgusha bet: bruise. פרוסה ע פרוצה ע משובה ע מחוגה ע משוגה ע # rare, should not be confused with משוגע... עמודה ע לסוטה ע # the rare hebrew word for a sleave-less coat (vest). מזוזה ע משורה ע # used to measure volumes of liquids. rare word. מלוכה ע,יחיד כמורה ע,יחיד מבוכה ע הפוגה ע עזובה ע פרודה ע # molecule מאורה ע פלומה ע פלומתי ת ישועה ע טיוטה ע דיוטה ע # archaic. [3] and [4] also mention דיוטא as an old spelling, and that implies also a plural דיוטאות. TODO: consider removing this word. גלופה ע גלולה ע כמוסה ע גבורה ע מנוחה ע נבואה ע נבואי ת מצודה ע מצולה ע בלוטה ע עלוקה ע אבוקה ע עצומה ע מצוקה ע רצועה ע תשומה ע תשורה ע תשואה ע # Two different words: tsu'a and tshu'a (the latter normally plural). תשועה ע # means rescue, salvation. watch out not to confuse it with תשואה... תרועה ע שמורה ע שמועה ע שלוחה ע ארוחה ע עתודה ע ערוגה ע שכונה ע שכונתי ת חלודה ע # This is sometimes written with shuruk, sometimes with kubuts. Shuruk is the prefered modern alternative. חלוצה ע ארוסה ע אפונה ע,ים כפולה ע משואה ע רפואה ע רפואי ת מהומה ע תאונה ע תאורה ע תאוצה ע תאוטה ע תבואה ע תבוסה ע תבונה ע תבוני ת # this word isn't recognized by [3] תבונתי ת # not in [3]. [4] says its an alternative to תבוני (and prefers the latter). תגובה ע תגובתי ת תהודה ע תזונה ע תזונתי ת תזוזה ע תחולה ע תחושה ע תחושתי ת תכונה ע תכונתי ת תכולה ע תלונה ע כהונה ע תמונה ע תמורה ע תמותה ע תנובה ע תנומה ע תנוחה ע תנודה ע תנודתי ת # fluctuating תנודתיות ע תנועה ע תנועתי ת תנופה ע תעודה ע תעופה ע תעופתי ת # not recognized by [3] תעוקה ע תפוגה ע תפוסה ע תפוצה ע תפוקה ע תצוגה ע תצורה ע תקומה ע תעוזה ע תקופה ע תקופתי ת תרומה ע תרופה ע תרופתי ת תשוקה ע תקורה ע # Overhead. not recognized by [3], but exists in Rav-Milim. כלולה ע,אין_יחיד # כלולות ממגורה ע מהמורה ע # note cholam, not shuruk. מקצועה ע # according to [3] and ravmilim, this and not מקצוע is the proper word אשמורה ע # variant of אשמורת, found in [1],[2],[3],[4], but I never heard used. חברבורה ע הינומה ע סליחה ע טפיפה ע # literary לקיקה ע # literary, the colloquial word is לק. גמיאה ע # In the phrase גמיאת מרחק. compare with גמיעה גמיעה ע תקינה ע תפיחה ע כפיפה ע יציבה ע כבידה ע,יחיד כבידתי ת קרישה ע # gerund of קורש - the verb is archaic, but the gerund is very useful, especially for blood clotting. מחילה ע # סליחה גרידה ע נעימה ע חשיבה ע חשיבתי ת # not recognized by [3], but in [4] and is use. TODO: I'm not sure why it is necessary, though, over alternatives like מחשבתי. ישיבה ע ישיבתי ת שנינה ע יקיצה ע מליצה ע מליצי ת מליציות ע שכינה ע,אין_נטיות # הקב"ה משימה ע כריזה ע בלילה ע פצירה ע קרינה ע קרינתי ת לביבה ע לביאה ע כתיתה ע # שניצל קציפה ע גלימה ע מריבה ע מריצה ע נתיבה ע # usually used in בית נתיבות. מחיצה ע # הפרדה/קרבה, וכן שם פעולה של למחוץ. שמיכה ע רביכה ע # strange word, but I did find it in a newspaper. כמיהה ע פתילה ע פליאה ע נתיחה ע סליקה ע # note that [3] doesn't recognize this word. תמיסה ע נקישה ע מעיכה ע יריעה ע זקיפה ע דהירה ע # note that both this and דהרה are correct. גניחה ע נגינה ע לעיסה ע זריעה ע קטיפה ע קטיפתי ת מליאה ע מנגינה ע מעגילה ע # archaic word for מערוך פשטידה ע רכיכה ע # note correct vowels is patach in resh and kaf dgusha. רפידה ע קפידה ע # inflections not useful... גלידה ע תפיסה ע תפיסתי ת יצירה ע יצירתי ת יצירתיות ע נשימה ע נשימתי ת רחיפה ע סטירה ע גבינה ע צפירה ע גבירה ע בעיטה ע כניסה ע כנימה ע כניעה ע כריתה ע פרידה ע # note [3] says פרדה (with tsere) is also correct... פנינה ע,ים ספינה ע רתיחה ע כביסה ע סריקה ע שריטה ע סריגה ע קליפה ע שקילה ע קשירה ע שלילה ע שלילי ת יחידה ע יחידתי ת מדינה ע מדינתי ת # usually in phrases like בין-מדינתי. רשימה ע ועידה ע שגיאה ע פגישה ע מדידה ע בליעה ע בלימה ע זרימה ע בחירה ע בחינה ע בחישה ע בדיחה ע בדיקה ע אכילה ע חטיבה ע חטיבתי ת חסימה ע חסימתי ת חקיקה ע חקיקתי ת חליפה ע עניבה ע ענישה ע חפיסה ע חטיפה ע חביתה ע חמיטה ע # The Hebrew word (that nobody uses) for pancake. חמיצה ע חביצה ע # Hebrew word for Pudding עריסה ע חגיגה ע חגיגי ת חגיגיות ע אפיסה ע חבילה ע חתיכה ע חפיפה ע עקיפה ע עלילה ע עלילתי ת עלילתיות ע הפיכה ע מהדורה ע תברואה ע תברואתי ת תברואי ת # According to [3] and [4], and to a Google search, this is a common alternative for תברואתי. תהלוכה ע תהפוכה ע תחבולה ע תחבורה ע תחבורתי ת תחזוקה ע תחלואה ע תחלופה ע תעלומה ע תעמולה ע תעמולתי ת תעסוקה ע תעסוקתי ת תעבורה ע תעבורתי ת # I can't find this in [3] or [4], but it seems logical to have it. תעצומה ע תערוכה ע תפאורה ע שוחה ע עוגה ע סוגה ע # "genre" שורה ע סופה ע נורה ע בועה ע בועתי ת צורה ע צורני ת תוגה ע אימה ע,ות,ים נימה ע,ות,ים # [1] says ות only, [3] says ים only and [2] allows both. [2] also says that another meaning of this noun - sleep - takes only ות. Note that the singular of נימים is נימה - there is no singular "נים" for one tiny blood vessle. Also, this means (and [3] explicitly says) that נימים is feminine. I find this a little odd and archaic :( נימי ת נימיות ע,יחיד נים ע # In an Academia decision mentioned on their site, they decided that the masculine "נים" is ok after all. This makes נימים both masculine and feminine. Also, in a different meaning, in the phrase נים ולא נים איפה ע # ancient volume measure ציצה ע # rarely used in modern text. ניעה ע # rarely used gerund for לנוע. ריבה ע # literary, means girl. פיקה ע פימה ע # literary טינה ע חידה ע חידתי ת # not recognized by [3] בימה ע גישה ע בימתי ת בינה ע רישה ע # note that [4] prefers רישא, but allows רישה as variant spelling. [1] and [3] only list this spelling. According to the academia decision on Arameic female words, it should be he. סיפה ע # same comment as in רישה צידה ע פחמימה ע פחמימן ע פחמימני ת איבה ע בירה ע דירה ע דירתי ת דיצה ע # not used in modern text מיתה ע סיעה ע סיעתי ת סיעתיות ע גיסה ע נינה ע סירה ע זירה ע טירה ע שיטה ע שיטתי ת שיטתיות ע ריצה ע גיחה ע ביצה ע,ים ביצתי ת שמלה ע דברה ע,יחיד # usually inflected like נתן את דברתו. Note that דיבר, with plural דיברות, is a completely different word. רתמה ע שליה ע דמעה ע פתחה ע,אין_כינויים,יחיד # [4] lists this as a general geographical term, but I've seen it used only as פתחת רפיח דבשה ע,אין_נטיות תרזה ע,אין_נטיות # kind of tree. Also first name of a famous nun :) רשעה ע,יחיד # literary, means same as רשע. used as רשעה, רשעתו, etc. צפחה ע,אין_נטיות פרכה ע # [3] also allows פרכא, פרכאות, but [1] and [4] don't, and I can't see any evidence of use for that other form. מצחה ע # see comment about מצחייה טרחה ע טרדה ע טפחה ע # beams holding the roof. Usually used as "מן המסד ועד הטפחות". שנאה ע שטנה ע,יחיד שדרה ע # [1] also lists the bizarre plural שדראות יתרה ע ספרה ע ספרתי ת אבחה ע # rare literary word: flash, blade. בטנה ע בקעה ע אמרה ע בטחה ע,יחיד סרכה ע מנחה ע אדרה ע # rare word: fish bones. שמחה ע שכחה ע נצרה ע שפחה ע פטמה ע בקתה ע יפעה ע פסקה ע,ות,אות # אות is the more commonly-used plural. קצבה ע,אות # [1] prefers ות, but [3] and I disagree. פנכה ע,ות,אות # literary זמרה ע זרמה ע קנאה ע פרצה ע גזרה ע צרעה ע צנעה ע,יחיד פשתה ע,ים צדפה ע קרבה ע שמשה ע פסגה ע כבשה ע # Yes, the Academia decided (see http://hebrew-academy.huji.ac.il/decision3.html) that the plural of כבשה is כבשות, not כבשים. See also כבש. כברה ע שלדה ע פרדה ע לשכה ע שכבה ע שכבתי ת כליה ע כלייתי ת # medical term (meaning: renal, having to do with the kidneys). רקמה ע סדרה ע סדרתי ת רצפה ע גבעה ע שגרה ע שגרתי ת שגרתיות ע גרסה ע,ות,אות חזקה ע עגלה ע אברה ע # rare word, meaning wing or wing feathers ערגה ע חמדה ע # mainly in phrases like שכיות חמדה חמלה ע,יחיד עדנה ע המיה ע חרפה ע חברה ע חברתי ת עמדה ע עגל ע חלאה ע חמאה ע פרה ע טחנה ע נחרה ע # [1] and [4] spell this with patach in nun, but [3] has shva. יערה ע,אין_כינויים # literary, and also plant לענה ע,אין_כינויים נחלה ע יחסה ע # linguistic term רעמה ע צחנה ע שחלה ע שחלתי ת # medical term רעיה ע להקה ע ועדה ע נערה ע תחנה ע תחרה ע # [3] and [4] disagree on the vowel of the ח: shva or chataf-patach. מחלה ע משרה ע תגרה ע מחיה ע,יחיד מרמה ע מקשה ע,ות,אות # אות according to [3], but ות according to [1]. תקרה ע מעלה ע אשפה ע,ות,רבים=אשפתות # Garbage אשפה ע,ות # Arrow bags. Note that unlike the word for garbage, here the plural is pronounced "ashafot" (this is mentioned on the Academia's site, and in [5]). מראה ע # mirror שקמה ע,ים # פרשייה is considered, according to [3], to be an incorrect back-derivation # from the plural פרשיות of פרשה. However, [4] accepts פרשייה as a valid word # with a slightly different sense from פרשה, and [5] accepts it but calls it # colloquial. TODO: reconsider our decision not to list פרשייה. פרשה ע,ות,יות גמלה ע,אות מלגה ע,אות,ות פתקה ע,אות פתק ע סמטה ע,אות סדנה ע,אות משחה ע זקפה ע # according to [2],[3], there is no plural. I and rav milim say there is. פגרה ע עסקה ע,ות,אות דסקה ע,ות,אות # found in [1], but not in [3]. מכסה ע,ות # [4], [3], [1] agree the plural is ות. [1] also allows אות, but no other dictionary allows it. The academia decided (see http://hebrew-academy.huji.ac.il/decision3.html) that the plural is vowelled michsot - [4] agrees with that but [3] vowels this word differently. אלונקה ע אצטבה ע,ות,אות # [1] and [3] allow only ות. [2] and [4] allow ות and אות חלה ע חכה ע מהתלה ע שמה ע,אין_יחיד # While [1],[3],[4] recognize the singular, it is almost always used as plural: שמות. אמה ע דקה ע,זוגי גבה ע כלה ע ספה ע מפה ע אצה ע מצה ע מגמה ע מגמתי ת מגמתיות ע מסה ע חיה ע דיה ע # kind of bird צמה ע רקה ע הגנה ע הגנתי ת נאקה ע # Female camel רמה ע קמה ע,יחיד,אין_כינויים # archaic בבה ע # used almost exclusively in the phrase "בבת עינו". עקה ע עגה ע מנה ע אלה ע נפה ע במה ע צרה ע רעה ע מרה ע מעה ע נפלאה ע,אין_יחיד # נפלאות נדבה ע צרחה ע נבלה ע גבבה ע # rare word. יבבה ע סככה ע כברה ע שממה ע רננה ע # rarely used nowadays דממה ע נקמה ע שגגה ע צדקה ע נשמה ע פלדה ע סבכה ע שבכה ע # variant form for סבכה. [4] considers this variant archaic. פצצה ע קללה ע יללה ע רבבה ע כפפה ע #קצרה ע קערה ע רעדה ע דאגה ע סחבה ע # סמרטוט צעדה ע זעקה ע סערה ע שעטה ע נהמה ע גערה ע נהרה ע # rare word meaning "light". רעלה ע דהרה ע בעתה ע רחבה ע צעקה ע נאקה ע שאגה ע דרשה ע שלשה ע שררה ע מצדה ע # Old form of מצודה... Nowadays, usually considered the name of one specific place. TODO: maybe move to extrawords. אמנה ע חממה ע כרזה ע הברה ע הברתי ת חבטה ע מחאה ע קטטה ע יממה ע גמרה ע חזרה ע סברה ע פשרה ע תעלה ע לטאה ע מערה ע תלאה ע נמלה ע,ים דררה ע # Parakeet יבמה ע # religious jargon אהבה ע אהדה ע אדמה ע ערבה ע אנפה ע עננה ע אנחה ע חדשה ע הקלה ע חרטה ע אנקה ע חרדה ע חרד ת הלכה ע הלכתי ת שפה ע,ות,יים,רבים=שפתות מדשאה ע מרפאה ע מרפדה ע # [4] has only מרפדייה, but [3] says that word is wrong. מלטשה ע משחטה ע תוצאה ע תוצאתי ת תופעה ע #words in the same mishkal as שנה: שעה ע,זוגי גדה ע דגה ע,יחיד אמה ע,שמור_ת תימרה ע # E.g., דם ואש ותימרות עשן. תימורה ע,ות,ים # [3] claims that the nismachim form is תימרות as in "דם ואש ותימרות עשן". [1] and [4] disagree and say that the nismachim form is תימורות-. [2] and [4] insist that the תימרות word comes from תימרה. I think that [3] is wrong in this case. [1] and [2] allow both ות and ים, [3] and [4] only ות. לולאה ע מקראה ע מובאה ע זלעפה ע # usually used as "גשם זלעפות". מחראה ע # note: vowelled quite differently than commonly pronounced. kamats-kamats at end, like שנה. [1] [3] and [4] disagree whether ח gets shva or chataf-patach. מסבאה ע מוראה ע # [3] doesn't have this word, but [4] has it, and its plural is often used in phrases about wars, etc. דק ת דקות ע דקיק ת דקיקות ע,יחיד ריק ת אבעבועה ע אורחה ע פארה ע זנב ע,ות ולד ע,ות ירק ע,ות חכם ת עקר ת # Note: I decided not to add the word "עקרת" explicitly, despite [3] claiming it is a seperate word - I think it's just the nismach of עקרה... קטן ת לבן ת חלק ת חדש ת ישן ת ישר ת רשע ת סכל ת # literary שפל ת רחב ת נבל ת יקר ת חזק ת חלש ת קצר ת חכם ע עפץ ע זרז ע חמס ע,אין_נטיות ארד ע,אין_נטיות אבץ ע,אין_נטיות חצץ ע,יחיד # [4] recognizes the plural חצצים, but I don't think it is useful. אבק ע,יחיד עמל ע,יחיד חטט ע # pimple חתן ע חסך ע # חוסר אטד ע # kind of plant. חגב ע הדר ע,יחיד הדר ע # citrus עפר ע,יחיד # [1] says the plural is עפרות. אסם ע חלל ע חללי ת # [3] doesn't recognize this word, but [1] and I do. חצב ע חלב ע,יחיד חלבי ת עשן ע,יחיד ענן ע ענף ע ענפי ת # not in [3], but in [4]. Rarely used. נהר ע,ות רעב ע,יחיד קהל ע גמל ע גמלוני ת גמלוניות ע כרך ע # shva in kaf. חרך ע חרש ע פנס ע נחש ע נחשי ת שערה ע צלע ע,ות,נקבה כעס ע שפן ע חרך ע עצב ע עצבי ת שלב ע שרך ע אולם ע,ות,ים מוסך ע מוסכניק ת,נקבה_ית # called colloquial by [3] and [4] מסך ע פרש ע פרשית ע ארנב ע טבח ע צבע ע מלח ע מפעל ע מתאר ע משען ע עטרן ע,אין_נטיות יצהר ע,אין_נטיות # archaic, שמן תדהר ע # type of tree מתאם ע # קורלציה מלחץ ע,יים,אין_יחיד # מלחציים מסעד ע # literary word... מנחת ע מנהל ע מנהלי ת יצהר ע # literary: oil מנהג ע נבחר ע # This beinoni is also used as a noun משאל ע מצעד ע מטען ע משחק ע משחקי ת # in [4], but not in [3] מבחן ע מתחם ע מסחר ע מסחרי ת מרחב ע מרחבי ת ברחש ע מדחן ע עלעל ע מלאך ע מלאכי ת מבחר ע אזרח ע אזרחית ע אזרחי ת נספח ע נספחת ע # in the sense of atache in embassy. מרקע ע מקטע ע פרחח ע פרחחית ע פרחחי ת פרחחות ע,יחיד מלקח ע,אין_יחיד,יים # מלקחיים תמסח ע משלח ע ממרח ע צלופח ע תותח ע אקדח ע # see also: אקדוח, אקדוחן, אקדחן. מבצע ע מבצעי ת משמע ע משמעי ת מפגע ע מטבח ע,ים,יים מזרח ע,יחיד מזרחי ת מזרחיות ע מערב ע,יחיד מערבי ת מערביות ע מחסן ע מאכל ע מעתק ע מעגן ע מעמס ע מעבר ע מחנק ע,יחיד מעקב ע מעלל ע מענק ע מעקף ע מערך ע מאמר ע מארב ע מארג ע מארז ע # note: [1], [2] or [3] don't recognize this word. Rav milim does. מאבק ע מעצר ע מאסר ע מאגר ע מאהל ע מאזן ע מאחז ע מהלך ע נאמן ע נאמן ת נאמנות ע # this is also moamad, with kamats katan and chataf-kamats, candidate. see # also מועמד (vav replaces kubutz). מעמד ע מעמדי ת מזגן ע סרטן ע #דרבן ע # Old spelling of porcupine, with patch in dalet. See also דרבן with kamats katan. סרטני ת מדבר ע,יות,ים,ות # I prefer יות, [3] prefers ות, and [1] prefers ים. Weird. מדברי ת תריסר ע עגורן ע חזרן ע # bamboo מזרן ע # NOTE: מזרון, the commonly used variant, is considered wrong. לפתן ע כיסן ע # NOTE: The form כיסון is recognized as an alternative by Rav-Milim, but not by [1] or [3]. It is not even listed as wrong alternative in [3]. פשתן ע,יחיד צבען ע תלתן ע כבשן ע מכמן ע,אין_יחיד # literary אבקן ע דוקרן ע # Found in [1] and [4], but not in [3]. לוכסן ע סודר ע # rarely ever used... מגדן ע,ות # I never heard this used. But in [4] (plural only) and [3]. נברן ע # kind of animal ברקן ע # kind of plant עקרב ע משגב ע,אין_כינויים # note chirik in mem. archaic word, and singular used as place name nowadays. מנעם ע,אין_יחיד # Nowadays only the plural מנעמים is in use. [1, 3] also acknowldge the singular, though. מחשך ע חשמן ע משמן ע # In my experience usually used in plural, as משמניו (sort of "his fat body parts"). In [3] slightly different explanations are given... ברנש ע מרבד ע מעמק ע,אין_יחיד # מעמקים מעדן ע שנהב ע אתנן ע # We have a problem with the mishqal of professions, katal, like כנר, נגן, טבח. # In all the Academia's lexicons, the feminine is always with a ת: in this # example כנרת, נגנת, טבחת. Only in rare cases it appears that the Acadmia # goes with ית, e.g., בלנית, medicine lexicon 1939. # However, it appears that modern usage is leaning towards the ית feminine: # כנרית, נגנית, טבחית. In some cases the dictionaries like [3], [4] and [5] # even list the ית feminine. # I decided to decide on each word individually, based on the opinions of # the various dictionaries. But I decided to decide on only one option for # each word. יזם ע יזמת ע יזמי ת # I never heard this used, but [4] has it and so does Google. יזמות ע,יחיד בקר ע # controller or cow farmer. סמן ע נפץ ע גשש ע גששית ע ספן ע ספנית ע ספנות ע,יחיד נתב ע נתבת ע נגן ע נגנית ע בלן ע בלנית ע נפח ע נפחית ע נפחות ע בלש ע בלשית ע בלשי ת נגר ע נגרית ע נגרות ע,יחיד תגר ע # literary, not in use today. תגרית ע תגרות ע,יחיד רפד ע רפדת ע רפדות ע,יחיד צלם ע צלמת ע #תגר ע # Literary word meaning trader, not used today and only confused with תיגר in the misspelled phrase "קריאת תגר". #תגרית ע #תגרות ע קשת ע,ים קשתית ע קשתות ע,יחיד קלע ע קלעית ע קלעות ע,יחיד קדר ע קדרית ע קדרות ע סתת ע,ים סתתת ע סתתות ע,יחיד חזן ע חזנית ע חזנות ע,יחיד חזני ת כנר ע כנרת ע # [3] and [4] agree that the feminine of כנר is כנרת. The Acemia's 1955 dictionary of music terms also says כנרת. Only [5] thinks it is כנרית. רשם ע רשמת ע פסל ע פסלת ע אנס ע טבח ע טבחית ע טבחות ע,יחיד צבע ע צבעית ע צבעות ע,יחיד קשב ע קשבת ע # Also adjective in the phrase: אוזן קשבת סבל ע סבלית ע סבלות ע שמש ע ספר ע ספרית ע חמר ע # not used nowadays... חמרת ע # not used nowadays... גלב ע # not used nowadays... גלבית ע # not used nowadays... רכז ע רכזית ע רכזת ע # alternative to רכזית, and also means telephone switchboard צלף ע צלפית ע שדר ע שדרית ע חתם ע # banking; not useful otherwise... חתמת ע צפר ע צפרית ע צפרות ע זבן ע זבנית ע זבנות ע זמר ע זמרת ע קצב ע קצבית ע קצבות ע רצף ע,אין_כינויים רצפית ע,אין_כינויים רצפות ע,יחיד גנן ע גננת ע גננות ע נהג ע נהגת ע נחת ע,ים # [3] says that the nun has segol here, contrary to most modern speakers. This conversion of kamats into segol before a gutteral consonant used to be typical: consider נהג - nehag, and ההרים - he-harim. נחתת ע # female נחת, but also a type of craft. אשף ת,נקבה_ית דדנית ע,אין_כינויים # Literary, big-breasted woman. No masculine form for this adjective. אגס ע זגג ע זגגית ע זגגות ע,יחיד פחח ע # strangely, [3] insists that this has a segol in the pe... פחחית ע פחחות ע,יחיד שען ע שענית ע # strangely, [3] insists that this and שענות has segol in shin... שענות ע,יחיד חשב ע חשבת ע רתך ע רתכת ע רתכות ע,יחיד גנב ע גנבת ע אתת ע,ים,אין_כינויים # A profession rarely mentioned today... אתתית ע,אין_כינויים חרט ע,אין_כינויים חרטת ע,אין_כינויים # [4] also has חרטית חרטות ע,יחיד נשא ע נשאית ע נשאות ע,יחיד # Not in [3] [4] or [5], but in popular use for the state of being a נשא. ספק ע ספקית ע משפט ע משפטי ת ממש ע,אין_נטיות ממשי ת ממשות ע מסע ע,ים,ות מצע ע,ים,ות # ות is archaic. מפח ע # usually in מפח נפש. מטח ע # [1] and [4] vowels this like מסע, while [3] vowles this like פרט. The academia decided (as mentioned on their site) on the former, and this is how everyone also pronounces. משט ע מבט ע מטס ע # [3] insists to spell it like שטר (mtas). The Academia decided (mentioned on their site) the spelling with patach in mem and dagesh in tet. מבע ע אגן ע # [1] says ות. מגע ע # [1] says ות. מזל ע,ות מגל ע מדף ע מצב ע מצבי ת מצג ע מפל ע מתז ע מקף ע מפץ ע מדד ע מגש ע משב ע מרחץ ע,אות קטר ע סיגר ע קרקס ע מטע ע מכר ע שבת ע,שמור_ת סדן ע שבתון ע משק ע,יחיד,אין_כינויים נדכא ת,נקבה_ת נפרד ת,נקבה_ת נרגש ת,נקבה_ת נפעם ת,נקבה_ת נרחב ת,נקבה_ת נמרץ ת,נקבה_ת נזעם ת,נקבה_ת נרגז ת,נקבה_ת נמהר ת,נקבה_ת נבער ת,נקבה_ה,נקבה_ת # [3] prefers נבערה. [4] allows both. נסער ת,נקבה_ת נרגן ת,נקבה_ת נפסד ת,נקבה_ת נזעף ת,נקבה_ת נכבד ת,נקבה_ה,נקבה_ת נתעב ת,נקבה_ת # [3] also allows נקבה_ה, [4] doesn't. נכזב ת,נקבה_ת נלעג ת,נקבה_ת נכלם ת,נקבה_ת נפתל ת,נקבה_ת נפשע ת,נקבה_ת נפחד ת,נקבה_ת נלבב ת,נקבה_ת נמלץ ת,נקבה_ת נרצע ת,נקבה_ת נרעד ת,נקבה_ת נחמד ת,נקבה_ת,נקבה_ה # according to [3] and bialik, the feminine has tav. נחרץ ת,נקבה_ת,נקבה_ה # ת is the modern feminine. [4] also allows נקבה_ה, [3] doesn't. נחשל ת,נקבה_ת נהדר ת,נקבה_ת נאלח ת,נקבה_ת,נקבה_ה # [3] allows only ה (for the adjective), [4] allows both ה or ת. נאצל ת,נקבה_ת,נקבה_ה # [3] allows only ה (for the adjective), [4] allows both ה or ת. נאשם ת,נקבה_ת # The following automatically get ית in the feminine singular (only) נקלה ת,נקבה_ת נלאה ת,נקבה_ת נעלה ת,נקבה_ת,נקבה_ה # the ה feminine form is more useful for the adjective נרפה ת,נקבה_ת,נקבה_ה # [1] and [3] say ה feminine, [4] says ת. נבזה ת,נקבה_ה נבזות ע נבזי ת נבזיות ע נושן ת,נקבה_ת,נקבה_ה נועז ת,נקבה_ת נועזות ע נרגנות ע,יחיד נבערות ע,יחיד נמרצות ע,יחיד נבצרות ע,יחיד נרגשות ע,יחיד נלעגות ע,יחיד נחשלות ע,יחיד נחמדות ע,יחיד נחרצות ע,יחיד בוש ת # the inflections aren't useful... אולר ע קבלן ע קבלנית ע קבלנות ע,יחיד קבלני ת מאמץ ע מטעם ע מרחק ע מבטח ע וסת ע,ים # regulator נגד ע # electronics term, and also military term for NCO. נגדת ע # Female of נגד. Note that [3] says the female is נגדית and [4] doesn't recognize any female. However, I decided that נגדת is more sensible (like חייטת) and in fact it is the form actually used in the army. קבל ע # electronics term סמל ע סמלת ע פקד ת,נקבה_ית # police rank פרנס ע מניע ע ברור ע שדון ע שדונת ע # in [1], but not in [3] or [4]. שדוני ת זכות ע ראות ע שהות ע שטות ע שטותי ת דמות ע תלות ע תלותי ת תלותיות ע עלות ע שוטטות ע בוננות ע # new word that I don't like because people use it for different meanings. In [3] or [4] it means introspection, but [4] translates it to English as "insight". התמודדות ע התמוטטות ע איכות ע איכותי ת איכותני ת # qualitative; type of research. עקמימות ע # same as עקמומית, עוקם. פרישות ע,יחיד שנינות ע שביעות ע,יחיד,אין_כינויים # only used as שביעות-רצון זילות ע,יחיד # [1] and [2] have this useful word, but [3] doesn't have it. עצירות ע קדימות ע # [3] doesn't have this word, but [1] and rav-milim do. דחיפות ע,יחיד כפיפות ע,יחיד אריכות ע,יחיד רטיבות ע ערירות ע,יחיד ערירי ת קרירות ע,יחיד קריר ת מרירות ע,יחיד מריר ת בהירות ע בהיר ת אטימות ע אטים ת קביעות ע שכירות ע חריצות ע עמימות ע מתיחות ע סמיכות ע סמיך ת קלישות ע כניעות ע,יחיד בהילות ע צרידות ע פריצות ע חסינות ע חסין ת סבילות ע סביל ת נהירות ע נהיר ת עמידות ע עמיד ת עבירות ע עביר ת פגיעות ע פגיע ת פריקות ע פריק ת זהירות ע זהיר ת שכיחות ע שכיח ת קריאות ע קריא ת קבילות ע קביל ת קליט ת סחירות ע # TODO: this word doesn't appear in [1] or [3]! סחיר ת לכידות ע,יחיד לכיד ת חדירות ע חדיר ת זקיפות ע חשיבות ע דריכות ע מתינות ע עכירות ע,יחיד דליחות ע,יחיד קשיחות ע קשיח ת עליבות ע עציבות ע,יחיד # literary, extremely rare but appears in [3] תלילות ע פחיסות ע,יחיד צלילות ע,יחיד הגינות ע אדיקות ע אדישות ע,יחיד אדיש ת קליל ת קלילות ע דביק ת דביקות ע,יחיד פרקליטות ע חמימות ע חמים ת אמיץ ת אמיצות ע אמיד ת אמידות ע,יחיד נפיץ ת נפיצות ע,יחיד # note that according to [4], this can refer to נפוץ or נפיץ. תדיר ת תדירות ע בקיא ת בקיא ת,יחיד=בקי # alternative spelling ([3] and [4] even prefer it) בקיאות ע עליז ת עליזות ע עליצות ע בדידות ע בדיחות ע,יחיד # e.g., בדיחות הדעת סדיר ת סדירות ע אדיב ת אדיבות ע מציאות ע מציאותי ת מציאותיות ע ציונות ע נוח ת נוחות ע נוחיות ע נחישות ע נחיתות ע פחיתות ע,יחיד אליפות ע אלימות ע אלים ת סוכנות ע כוננות ע בטיחות ע בטיחותי ת תובעני ת # watch out, there's also טובעני with a different meaning! טובעני ת תובענות ע,יחיד רכיל ע,אין_נטיות # in the phrase: הולך רכיל רכילות ע רכילותי ת # not in [3] or [4], but in modern use, so I decided to allow it. אחידות ע אחיד ת שחיתות ע רצינות ע רציני ת כפילות ע שניות ע,יחיד # duality יציבות ע יציב ת גמישות ע גמיש ת שריר ת שרירות ע שרירותי ת תאימות ע רפיסות ע צפיפות ע דחיסות ע # rarely used, I'm not sure exactly what's the difference from צפיפות. נצילות ע תכיפות ע פגימות ע,יחיד צניעות ע,יחיד צביעות ע,יחיד מהירות ע יחידות ע אנין ת אנינות ע תשישות ע נחיצות ע שקיפות ע רדידות ע,יחיד רהיטות ע,יחיד להיטות ע,יחיד זחיחות ע,יחיד מסירות ע,יחיד נביבות ע,יחיד תלישות ע,יחיד שדיפות ע,יחיד שגירות ע,יחיד חלישות ע,יחיד # literary אביונות ע,יחיד אביון ע אביונה ע אוריינות ע # Note that many more of the following adjectives are generated automatically # by "woo", as "beinoni paul" forms. תשוש ת כפול ת חשוך ת זקוק ת ספור ת עלול ת # hmm, is this really an adjective? אבוד ת נעול ת נמוך ת שחום ת צמוד ת חמור ת # with shuruk ("serious") אנוש ת # with shuruk - not cholam (the latter is a proper name, in extrawords) הדוק ת חמוש ת עצוב ת עצום ת עגון ת # The feminine is more commonly used. המום ת פזור ת רצוף ת עקום ת סבוך ת חצוף ת צנום ת כחוש ת נבוב ת קשוב ת עמוס ת ערום ת # with shuruk: clever, conniving. פקוע ת # rare word, but strangely enough I found it in the newspaper... גרוב ת מעוך ת פחוס ת נחות ת עגום ת עטור ת שלוב ת שזור ת עמום ת חמום ת מרוט ת חמוד ת שכוח ת עלום ת הלום ת קטום ת שכור ת חפוז ת חרוך ת חרוץ ת כמוס ת רבוע ת רחום ת ארור ת קפוא ת יעוד ת # this should not be confused with the noun ייעוד... מתוח ת קלוש ת כנוע ת בהול ת צרוד ת זקוף ת חשוב ת דרוך ת דלוח ת עכור ת מתון ת קשוח ת עלוב ת תלול ת צלול ת חלול ת הגון ת אדוק ת סדור ת נחוש ת בטוח ת צפוף ת תכוף ת צנוע ת צבוע ת הדור ת ברוך ת חסוד ת חרוף ת # rarely used in modern text, easily confused for חירוף... טחוב ת קבוע ת קדום ת אטום ת אסור ת רדוד ת נחוץ ת שקול ת שקוף ת רדום ת רהוט ת שנון ת כבוד ת # literary, more often used in feminine מרוד ת תמוה ת,שמור_ה שפוף ת כפוף ת מכור ת # addicted (the same word can also mean "has been sold") דחוף ת להוט ת זחוח ת שטוח ת אמון ת קעור ת כעור ת # literary שחון ת קמור ת סגור ת פתוח ת בתול ת נתון ת פצוע ת ספון ת שדוף ת פעוט ת # with shuruk (little) מלוח ת תפוח ת נפוח ת פשוט ת חמוץ ת ברוא ת מסור ת ירוד ת טרוט ת דבור ת זמום ת צנוף ת צפוד ת קמוץ ת מעוט ת # As in the phrase מעוטי יכולת שתום ת # Only in the phrase שתום עין. In the bible meant "open" but later, following סתום, became to mean one eye is closed. שתוק ת # literary - silent לבוד ת # archaic שתוקי ת # Judaism - person with unknown father צרוי ת # has צירי niqqud. Mostly used in feminine, because letter names are feminine. מצוי ת קלוי ת שפוי ת סמוי ת בזוי ת חפוי ת חבוי ת עשוי ת # hmm, is this really an adjective? רwוי ת # רווי. see comment in wolig.pl in why we have "w" here. דwוי ת # דווי. כרוי ת לקוי ת # see לקות. כמות ע כמותי ת שפיות ע קוממיות ע כפיות ע # mainly in the expression: כפיות טובה רעננות ע רענן ת אישיות ע,יות אישיותי ת קטנוניות ע קטנוני ת ישנוני ת # [3] considers this colloquial אפלוליות ע אפלולי ת יבשושי ת # [3] and [4] don't recognize this word, but [5] does. It is used in the figurative (and almost colloquial) sense of יבש, meaning "boring". Personally, I think this word is redundant, perhaps coined in order to remove the figurative sense of יבש? אפרוריות ע אפרורי ת ערמומיות ע ערמומי ת סהרוריות ע סהרורי ת זערוריות ע זערורי ת נכלוליות ע נכלולי ת שמנוניות ע שמנוני ת ודאי ע,אין_נטיות ודאיות ע ודאי ת צחות ע צח ת רכות ע רך ת חפות ע חף ת לחות ע לח ת דלות ע,יחיד דל ת זהות ע # note segol, not tsere, in zain זהותי ת זהה ת כהות ע,יחיד כהה ת קהות ע,יחיד קהה ת גסות ע גס ת קלות ע קל ת חדות ע חד ת חיצון ת חיצוני ת חיצוניות ע חושני ת חושניות ע טרפז ע # the following are *shmot poal* (maqor) of verbs, that are useful as nouns. # They are not nouns, however - he hayedya does not make sense on them # unless part of smichut perhaps, and the gender guessed for them is # irrelevant. היות ע,יחיד חצות ע,יחיד כלות ע,יחיד ענות ע,אין_נטיות # as in the phrase קול ענות חלושה הלוך ע,יחיד,אין_כינויים # in phrases like הלוך ו... Note that לכת is also a maqor of the save verb הולך. חזור ע,אין_נטיות # in phrases like הלוך וחזור צאת ע,יחיד שוב ע,יחיד בוא ע,יחיד דעת ע,יחיד # TODO: reconsider this word. There's already דעה... לכת ע,ים רדת ע,יחיד הלל ע,אין_נטיות # and these also have changed spelling for ktiv maleh: היווסד ע,יחיד היוולד ע,יחיד הימצא ע,יחיד היבחר ע,יחיד היעלם ע,יחיד # note yod added for tsere! הירצח ע,יחיד מלאת ע,יחיד # Usually in the phrase במלאת. Note cholam in lamed. [4] and [5] add waw: מלאות. קרוא ע,אין_נטיות # Note vav added for niqqud-less spelling. In the phrase יודע קרוא וכתוב מצוא ע,אין_נטיות # in the phrase לעת מצוא כתוב ע,אין_נטיות # Note vav added for niqqud-less spelling. In the phrase יודע קרוא וכתוב # יחיד ת יחידי ת יחידאי ת יחידני ת # translation of the adjective "individual" קליף ת שביר ת יביל ת נתיק ת שכיר ע שכירה ע עשיר ע,אין_כינויי_יחיד עשירה ע,אין_כינויי_יחיד שפיר ת הביל ת טמיר ת # note that טמיר means anigmatic, תמיר means tall. תמיר ת תמירות ע,יחיד ישים ת בחיר ת # בחיר-לבה, וכו'. Nifrad is useless, and should not be confused with בכיר... דליק ת זעיר ת זעירות ע,יחיד צחיח ת צחיחות ע,יחיד נגיש ת נגישות ע # [3] doesn't recognize this word. But [1] does. דליל ת דלילות ע שמיש ת שמישות ע,יחיד בריא ת בריאות ע בריאותי ת # not recognized by [3], but found in rav-milim. אמין ת אמינות ע נזיל ת נזילות ע,יחיד נדיף ת # not in [3] נדיפות ע,יחיד נשיר ת רגיש ת רגישות ע נדיב ת נדיבות ע נדיר ת נדירות ע,יחיד שליף ת יהירות ע יהיר ת כשיר ת כשירות ע צמיג ת צמיגי ת צמיגות ע,יחיד צפיד ת צפידות ע,יחיד ישיר ת ישירות ע,יחיד עקיף ת עפיץ ת עפיצות ע,יחיד # The word המיר, המירות is commonly used in the stock and currency market, # but as explained in http://www.haaretz.co.il/hasite/pages/ShArtPE.jhtml?itemNo=152464&objNo=9622&contrassID=2&returnParam=Y # it was not accepted by the Academia, which prefers בר-המרה and המרות. # The problem is that the root of המרה is מור, not המר, so the adjective # "המיר" is not something that can have המרה, but perhaps something you can # להמר (gamble) with. # [3] and [5] list this word, and [4] doesn't. # TODO: reconsider whether we want these words or not. המיר ת המירות ע,יחיד כשר ת כשרות ע יעיל ת שאנן ת שאננות ע נשי ת נשיות ע מדיני ת מדיניות ע מהות ע מהותי ת גלות ע גלותי ת זרות ע הגות ע # [2],[3] say יחיד. [1] and rav-milim disagree. הגותי ת מרות ע חזות ע חזותי ת חסות ע נכות ע אזרחות ע אוננות ע # note kamats in first nun. אחריות ע,יות ריקנות ע,יחיד ריקן ת,נקבה_ית ריקני ת # found in [4], but not in [3]. כללות ע,יחיד רשות ע גזענות ע גזען ת,נקבה_ית כבאות ע,יחיד גזעני ת # [3] doesn't recognize this form, but Rav-milim does. אבהות ע,יחיד אבהי ת קדחתנות ע,יחיד קדחתני ת בוגדנות ע,יחיד בוגדני ת מתירן ת,נקבה_ית מתירנות ע,יחיד מתירני ת פלצות ע,יחיד שבתאות ע,אין_נטיות שדאות ע,יחיד עדות ע הוללות ע רוממות ע,יחיד #עודפות ע,יחיד # doesn't sound very useful to me. [3] has it but rav-milim doesn't. גאות ע # Note: despite the א being gronit, there is no tashlum dagesh and there is no reason to add yod (compare: חירות). גא ת # see also גאה כנות ע כן ת ערות ע ער ת גרות ע גר ת ערני ת ערנות ע ישות ע רעות ע # עד with tsere עד ע שת ע,ות,שמור_ת,זכר # ישבן; not in modern use. TODO: reconsider this word. עט ע זר ע רח ע,יים,אין_יחיד,זכר,נקבה # רחיים. the form "ריחיים" is incorrect - the yod is unnecessary. NOTE: [2] and [3] think this word can be both feminine and masculine, while [1] and [4] say it can only be masculine. לץ ע זד ע # אויב מרושע. Not useful in modern texts... מת ע,ים מתה ע מת ע,ים,אין_יחיד # rare word meaning "people", used especially in מתי-מעט. הד ע אל ע שד ע בר ע # grain (spelling with kamats - for "wild", see בר with patach). נר ע,ות אד ע,אין_כינויי_יחיד ראשית ע ראשיתי ת ראשיתיות ע # בכית ע מלית ע מחית ע # פירה. note shva in mem, not kamats like popularly pronounced. תוכית ע # grammar term סופית ע # grammar term מוספית ע # grammar term מסורית ע # The spelling משורית is considered archaic. זכוכית ע צדודית ע כרוכית ע # strudel פסוקית ע כתובית ע שקופית ע זגוגית ע זגוגי ת סנונית ע שלולית ע תלולית ע כרובית ע שעועית ע,רבים=שעועים # both [1] and [3] insist on שעועים, not שעועיות. מפוחית ע כדורית ע חלילית ע אפיפית ע שפירית ע צפיחית ע # arachic, used in phrase "צפיחית בדבש". אדמומית ע אדמומי ת נקבובית ע נקבובי ת נקבוביות ע גבשושית ע לחלוחית ע,יחיד אפלולית ע רקבובית ע,יחיד רקבובי ת זרבובית ע שלפוחית ע #שלחופית ע # literary, unused today, form of שלפוחית עקמומית ע משכוכית ע גחלילית ע משרוקית ע תחתונית ע מרכולית ע # minimarket קיסוסית ע # kind of plant שקערורית ע שקערורי ת פלנלית ע # army term חלמונית ע # kind of plant לימונית ע # kind of plant בלורית ע צנונית ע לשונית ע צלוחית ע קרונית ע פנימית ע ארונית ע # strangely, not in [3]. Found in [1] and [4]. קונכית ע # note cholam, not shuruk also: קונכייה. עינית ע ביצית ע כוסית ע חוחית ע מונית ע חולית ע # דיונה רירית ע גירית ע בירית ע גיגית ע עירית ע # unfortunately, עירית is also a misspelling of smichut of עיריה... סיבית ע,יחיד לוחית ע נורית ע דוגית ע # a slightly archaic term... פומית ע בועית ע שונית ע מקבילית ע קטנית ע # according to [1] and [3] and Rav-Millim, the word קטנייה does not exist. דסקית ע דבקית ע פתקית ע רשתית ע סדקית ע,יחיד אלתית ע חלמית ע # kind of plant תבנית ע תבניתי ת # in [4] but not in [3]. Commonly used in the phrase דגש חזק תבניתי. לחמית ע # part of eye כספית ע,אין_נטיות חרסית ע,אין_נטיות קרדית ע עצמית ע משכית ע # literary מגבית ע ירכית ע # tunic קרצית ע # according to [1] and [3], the word קרצייה does not exist. [4] calls קרצייה a "non-standard form". [5] lists it (with an additional meaning of "annoying person"), and refers to קרצית for the bug. מרבית ע,יחיד אבנית ע,יחיד מטלית ע מראית ע צלמית ע פרגית ע קרנית ע חרצית ע קשתית ע תדמית ע תדמיתי ת תשתית ע תשתיתי ת תגליף ע תפנית ע תרמית ע תרבית ע חביתית ע קשית ע שקית ע כפית ע מפית ע טסית ע # medical term, usually in the phrase טסיות דם. ציצית ע תחתית ע תגלית ע תמצית ע תמציתי ת תמציתיות ע תקרית ע תצפית ע תצפיתי ת # science term (not in [3] or [4]) תמנית ע # Prof. Ornan uses this for "token", I believe. תכלית ע תכליתי ת תכליתיות ע תקנון ע תקנוני ת # [4] has this, but [3] doesn't. TODO: reconsider if this is useful at all. אשכולית ע כרמלית ע,אין_נטיות # Originally a religious term, recently used to name the subway in Haifa. תפוז ע תפוד ע לימון ע לימוני ת אתרוג ע לולב ע מדורה ע תענית ע שחרית ע,אין_נטיות # name of prayer. [4] says there is a plural. מעלית ע אחרית ע קערית ע מחצית ע תחזית ע צללית ע תזזית ע תזזיתי ת תגית ע דלית ע חבית ע מרית ע כרית ע פגית ע # means larva רקדן ע אילנית ע # kind of frog ניסנית ע # kind of plant ניצנית ע # kind of plant קרקעית ע גזית ע,אין_נטיות דבורנית ע,אין_נטיות # kind of plant רקדנית ע פחזנית ע מרגנית ע לחצנית ע מחסנית ע לכסנית ע # kind of pill that disolves in the mouth שעמנית ע,אין_נטיות # Hebrew for לינולאום יצאנית ע יצאנות ע,יחיד נפקנית ע # In Arameic, נפק means יצא, so נפקנית is the same as יצאנית קורנית ע # this is "thyme", in Hebrew לחמנית ע מרגלית ע מפרשית ע חשמלית ע אספלנית ע # פלסטר עששית ע חזזית ע שממית ע אקרית ע חצאית ע כונן ע כוננית ע צידנית ע פקח ע פקחית ע חללית ע כלנית ע כוכבית ע ידית ע עסק ע עסקי ת עסקן ע עסקנית ע עסקנות ע אוסף ע אספן ע אספנית ע אספנות ע נדבן ע נדבנית ע נדבנות ע,יחיד שארית ע אמון ע יאוש ע # תאום, shva cholam (the one with tsere shuruk gets extra vav in ktiva male) תאום ע סנגור ע סנגורית ע סנגוריה ע,אין_נטיות קטגור ע קטגורית ע קטגורי ת שאלון ע הסתדרות ע הסתדרותי ת זונה ע זנותי ת זנות ע,יחיד התכוננות ע התערבות ע ערבות ע משמעות ע משמעותי ת פרט ע פרטי ת פרטיות ע סבב ע # not recognized by [1], but [3] does have it and it is commonly used. Note niqqud like פרט )shwa kamats(, not two segols. זמם ע גרר ע,אין_נטיות ספר ע,אין_נטיות שמד ע,אין_נטיות שאר ע,אין_נטיות סרק ע,אין_נטיות שרד ע,אין_נטיות # in phrases like מכונית שרד. דחק ע,אין_נטיות דרש ע,אין_נטיות פשט ע,אין_נטיות סתם ע,אין_נטיות סתמי ת סתמיות ע רקק ע,אין_נטיות # old word for swamp; nowadays only in phrase דג רקק. גמר ע,אין_נטיות # [4] allows the plural גמרים (as colloquial), but [4] and [5] don't. To me it sounds too colloquial, with the correct phrase being "משחקי גמר". בדל ע # Note the plural smichut is "bdalei", unlike common pronunciation "bidlei". צלב ע קדל ע,אין_כינויים # means עורף. Rare, and appears in the phrase קדל חזיר לשד ע,יחיד טחב ע # yes, moss is with a shva. the inflections aren't very useful... מכל ע # Note shva in mem (not a tsere, and therefore no reason to write מיכל) מכלית ע קלף ע פקק ע יהב ע,יחיד יקר ע,יחיד רבב ע שבב ע סגן ע סגנית ע סגנות ע,יחיד פגם ע כלל ע כללי ת כלליות ע כתב ע שטר ע,ים,ות # normally, ות plural is used but י- smichut plural! TODO: what? פסק ע כפר ע כפרי ת כפריות ע עירוני ת נחצי ת # linguistics term קרב ע,ות קרבי ת צבת ע,ות,שמור_ת קנס ע,ות ענק ע ענקי ת ענקיות ע ענקות ע,יחיד # There appears to be a controversy whether the medical problem gigantism should be called ענקיות, or is there another word ענקות. [5] says there's יי rule (actually, this is built of two rules in outword) from # being applied. It's an ugly trick, but it works. # TODO: פתאים is also a valid plural of פתי. פתY ת,נקבה_ה # פתי הדדי ת,נקבה_ת הדדיות ע זניח ת סינר ע חרישי ת זך ת זכות ע לקות ע # medicine term: means disability. כסות ע,יחיד # [2],[3] say יחיד. [1] and rav-milim disagree (כסויות). גנות ע,יחיד כשות ע,יחיד # kind of plant. inflections are probably useless. פדות ע,אין_נטיות # [3] says יחיד, but [1],[4] allows plural and inflections. שבות ע,אין_נטיות # [4] says feminine. [1] says can be both feminine and masculine. [3] says the feminine and masculine have different meanings, with the common meaning (as in חוק השבות) being feminine. Inflections exist in the bible, but not in modern use. פריך ת פריכות ע,יחיד סלון ע סלוני ת קפיץ ע קפיצי ת קפיציות ע הפיך ת הפיכות ע,יחיד תיכון ת תיכוני ת תיכוניסט ת,נקבה_ית # colloquial כיור ע אכזר ת,נקבה_ית אכזרי ת אכזרות ע,יחיד # [3] has that obscure form... אכזריות ע # Interestingly, the kamats is kept throughout the inflection in this word. (this is a new Academia decision mentioned in their site). כביר ת מוליך ע מוליך ת ססגוני ת ססגוניות ע שנתון ע # sensible, and according to [3]. [1] recommends ות. רכבל ע סובלנות ע סובלני ת רעיל ת רעילות ע דחף ע עגמומי ת עקמומי ת עקמומיות ע החלטי ת החלטיות ע קדמון ת,נקבה_ית # note that [2] prefers נקבה_ה. [3] and I prefer נקבה_ית. [4] confuses everything (saying in one place the feminine is קדמונית but then recognizing only קדמונה). קדמוני ת קדמוניות ע לחלוחי ת רכרוכי ת רכרוכיות ע # note [1] has "רכרכות" instead. But [3] and modern usage have יות. תקף ת תקפות ע מסמר ת,נקבה_ת מאסף ת,נקבה_ת מרצד ת,נקבה_ת ממכר ת,נקבה_ת משכר ת,נקבה_ת מבדח ת,נקבה_ת מבדר ת,נקבה_ת מהרס ת,נקבה_ת # archaic. See also מהרס plural as noun. מפרך ת,נקבה_ת מרמז ת,נקבה_ת קלוקל ת,נקבה_ת מר ת שקט ת תפל ת טפל ת עשן ת תפלות ע בקיע ע אדנית ע ארעי ת # NOTE: עראי is also valid, but for now I decided not to accept it... ארעיות ע מפגן ע מרדף ע משיבון ע אפרוח ע אפרוחית ע אקדוח ע # antiquated word for אקדח that [4] doesn't recognize. Still, people know what it means and a word derived from it, אקדוחן, is common. קטנוע ע משלוח ע מקצוע ע,ות מקצועי ת מקצועיות ע גחמה ע דאבון ע,יחיד אבדון ע אכיל ת חצוצרה ע שלומיאל ת,נקבה_ית שלומיאלי ת שלומיאליות ע שלומפר ת,נקבה_ית # slang מביש ת # this is mem with tsere. זולת ע,יחיד,זכר # inflections are not exactly a noun, but fits nicely... חודרני ת חשבונית ע טמבל ת,נקבה_ית # slang כותר ע #כלפ ע,אין_יחיד # כלפי. # moved to milot. לוט ת לוע ע,ות לועזי ת לועזיות ע # this is rarely used... מחזמר ע # strangely, [3] says this has a plural. I would use מחזות זמר... קנקן ע רש ת נוגה ת תאב ת רע ת טוב ת מסטיק ע בננה ע אדמוני ת חולני ת חולניות ע חולמני ת חולמניות ע שומם ת,נקבה_ה,נקבה_ת נעלם ת,נקבה_ה,נקבה_ת # [4] says there are variant spellings also for the masculine form. גוץ ת גופיף ע מוג ת # חלש, רק בצירוף מוג-לב. יוצא ת,נקבה_ת קודר ת,נקבה_ת הולל ת,נקבה_ת עודף ת,נקבה_ת תואם ת,נקבה_ת רופס ת,נקבה_ת חותך ת,נקבה_ת שורק ת,נקבה_ת עוין ת,נקבה_ת לועז ת,נקבה_ת # this is rarely used... דואב ת,נקבה_ת הוגן ת,נקבה_ת בוקק ת,נקבה_ת # a very rare adjective meaning empty, barren. חוצץ ת,נקבה_ת זורח ת,נקבה_ת נוגד ת,נקבה_ת נוזל ת,נקבה_ת בורק ת,נקבה_ת כוזב ת,נקבה_ת שוחר ת,נקבה_ת צונן ת,נקבה_ת רופף ת,נקבה_ת חופף ת,נקבה_ת פוחז ת,נקבה_ת פוחח ת,נקבה_ת סודר ת,נקבה_ת בודד ת,נקבה_ת,נקבה_ה צורר ת,נקבה_ת נותב ת,נקבה_ת סורר ת,נקבה_ת דומה ת בוטה ת בוטות ע,יחיד שוטה ת פותה ת # literary שונה ת שונות ע,יחיד #הומה ת,נקבה_ה,יחידה=הומiyה # הומייה is a rare form of female הומה. Note that currently we don't accept the plural "הומיות". הומה ת,נקבה_ה הומי ת,יחיד=הומה,נקבה_ה,ם # To allow vairant forms of הומה: הומייה, הומיות. פורה ת פורי ת,נקבה_ה,יחיד=פורה # To allow variant forms of פורה: פורייה, פוריים, and פוריות פוריות ע בוכה ת בוכי ת,נקבה_ה,יחיד=בוכה # To allow variant forms of בוכה: בוכייה, בוכיים, and בוכיות. TODO: I couldn't find evidence for "בוכיים" in any dictionary. Is this a real form? שובב ת שובבות ע מכלאה ע קרטוב ע,אין_נטיות # Kamatz katan in kuf. Note that kubutz (קורטוב) is also correct. אנפילה ע,אות טרומי ת תרומי ת # Rare word, especially in the phrase מידות תרומיות. סעודה ע אביונה ע # aleph in chataf-patach - very rarely used... אסכולה ע ארנונה ע חרסינה ע זוטר ת,נקבה_ה,יחידה=זוטרית # [3] says ית. [2] says ת. [4] says ית (but says that the plural is ות, not יות, how strange), but also allows ה. I and most people use ה... טבק ע,יחיד כס ע,יחיד,אין_כינויי_יחיד טיסן ע טיסנאות ע מדרחוב ע מהימן ת מהימנות ע נואל ת,נקבה_ה,נקבה_ת נדוד ע,אין_יחיד # נדודים גלמוד ת מאבטח ע דולפין ע דולפינה ע # no dictionary officially has this word, but I see no reason not to accept this logical female form. דרקון ע # Watch out not to cofuse with דרכון... דרקוני ת # [4] says מרכה has tsere chaser but in vowel-less spelling adds yod. # [3] says tsere chaser and does not add yod. The Academia decided, however, # that this word has a tsere male: In the academia's niqqud-less spelling # rules footnote 18, there is מירכה with tsere male; the same spelling is # explictly mentioned as a decision on their site; In the Academia's # כללי הפיסוק )לשוננו לעם, טבט התשס"ב( the punctiation is called "מירכאות". # Personally, I consider this decision unfortunate, because most people # pronounce "מרכאות" with a tsere chaser, not male, so I would go with [3] # here if it weren't for our insistance to abide by the Academia's decisions. מירכה ע,אות מירכא ע,אין_נטיות_יחיד,יחיד,נקבה # According to [6, page 50], this form, with an aleph (and a tserei maleh!), should be used to name the taam mikra. Its inflections apparently aren't used, and it seems מרכא is feminine like מרכה... עתיקה ע,אין_יחיד # Rav-milim does recognize the singular, but says its a legal term. But it's a back-derivation from the plural - other dictionaries recognize only the plural. The Academia explictly lists this singular as valid on their site (decision3), but I still find it useless so I'm not adding it. TODO: reconsider. חלכא ע,אין_יחיד # חלכאים. [1] says the singular is חלך, [3] and rav-milim say חלכה. I say the singular isn't useful at all... מכולה ע # note shuruk, not cholam שרלטן ת,נקבה_ית שרלטני ת שרלטנות ע,יחיד אורקולי ת כספר ע כספרית ע כספרות ע,יחיד מוקיון ע מוקיונית ע מוקיוני ת עקלתון ע אכפתי ת אכפתיות ע # [3] considers this colloquial, Rav-Millim does not. אננס ע אסופי ת בראשיתי ת אגב ע,אין_נטיות # [4] calls this a conjunction. [1] says it's a noun. אגבי ת # incidental. listed on [1] and [4], but not on [2]. זוטה ע,אין_יחיד # Note: According to [4] (and perhaps [3]) Arameic זוטא is no longer used as singular of זוטות, but rather as a word of its own that follows a noun. [2], on the other hand, say that it's an adjective. כליל ת מחזירור ע מערבון ע # Strangely, the Academia decided (in a decision mentioned on their site) that in מערבון, מערכון, the resh has kamats. Most people pronounce it with shva. מערכון ע ערטילאי ת פלוני ת,ם פעוטון ע מקדמי ת # preliminary חכלילי ת # rare, meaning red. חרמונית ע # IDF term שריונית ע # IDF term ערמונית ע # biology term יהודון ת # degorgetory. כדורגל ע,אין_נטיות כדורסל ע,אין_נטיות כדורעף ע,אין_נטיות כדוריד ע,אין_נטיות מחניים ע,אין_נטיות # type of ball game כלומניק ת,נקבה_ית # slang שורוק ע,אין_כינויים ספלון ע עבדקן ע,אין_כינויים קדורני ת # rare. Note that "קדורנית" can also be used as an adverb. קמאי ת מודיעין ע,אין_נטיות דוקרני ת כוללני ת כוללנות ע,יחיד דורסני ת דורסנות ע,יחיד חושפני ת צורמני ת צורמנות ע,יחיד עוקצני ת עוקצנות ע,יחיד קופצני ת קופצנות ע,יחיד # not in [3] or [4], but makes sense and in common use יובשני ת # literary יובשנות ע,יחיד לוחמני ת # in [4], but not in [3] לוחמנות ע,יחיד פוגעני ת # in [4], but not in [3] פולשני ת # in [4], but not in [3] פולשנות ע,יחיד אגרטל ע אמרכל ע אמרכלית ע אמרכלות ע,יחיד אמרכלי ת אמרגן ע אמרגנית ע אמרגנות ע,יחיד קרטיב ע # Originally a trademark, but now used for any popsicle. קלפי ע,ות,נקבה אבא ע,אין_נטיות סבא ע,אין_נטיות # The official spelling is bet refuya, but everyone spells it like אבא, with dagesh. סבתא ע,אין_כינויים,רבים=סבתות,נקבה # NOTE: The plural סבתות is considered colloquial and even infantile language. סבות (plural of סבה) is the proper word. שופכן ע # anatomy term בנאדם ע,אין_נטיות # Not in [3], but in [4] and often used. I would consider this spelling colloquial but acceptable. אדם ע,אין_נטיות לוביה ע,אין_נטיות # Kind of plant. [1] allows both לובייה (chrik in bet) and לוביה, and prefers the former, but [5] allows only the latter, and so does popular usage (according to a Google search). תוספתן ע # The academia allows two pronunciations: with segol or patach in samech. ראשתן ע,אין_כינויים # sperm whale להביור ע שוטון ע # biology term תאית ע,אין_נטיות תיקן ע,אין_כינויים # Unfortunately, the nismachim is תיקני, which is often a misspelling of תקני... דרגנוע ע קרונוע ע שלושער ע,אין_נטיות כלבו ע,אין_נטיות טורקיז ע,אין_נטיות אספסוף ע,אין_נטיות סופשבוע ע,אין_נטיות # This looks to me like slang, especially when the definite article is added - הסופשבוע. קמץ ע,אין_כינויים פתח ע,אין_כינויים סגול ע,אין_כינויים סגולי ת צירי ע,אין_נטיות חולם ע,אין_כינויים חיריק ע,אין_כינויים # קובוץ ע,אין_כינויים # note added vav for niqqud-less spelling. According to the Academia and all dictionaries, the correct word is "קיבוץ" (with chirik chaser). מלעיל ע,אין_נטיות מלעילי ת מלרע ע,אין_נטיות מלרעי ת מאומה ע,אין_נטיות כלום ע,אין_נטיות מקרר ע מקפיא ע סבון ע אלון ע מסוק ע גנון ע מסור ע מסוע ע מכוש ע # note מכוש and מקוש have different meanings מקוש ע בבואה ע שהד ע,יחיד # note sin, not shin. In the phrase שהדי במרומים סהד ע,יחיד # alternative spelling. [4] prefers שהד, [1] and [3] don't specify preference. # "of country ..." adjectives. # The interesting feature of "of country ..." adjectives is that there is # a seperate adjective for "objects from country ..." and for "people from # country ...". In some cases, there is also an adjective for the female # singular person from that country. compare ערבי-ערבית-ערביים to # ערבי-ערבייה-ערבים. # Country names and Languages are also semi-automatically derived here, # instead of in extrawords, so we can keep the country database in one place. # # NOTE: I have no idea if those are official spellings, they are not in [3]. # I'm not sure the יים vs. ים endings are valid everywhere, how to spell # some countries ending in יה (אנגליה or אנגלייה?), מצרים, etc. # THIS HAVE TO BE RECHECKED CAREFULLY. ישראלי ת,עם ציוני ת,עם ציוניות ע סיני ת,עם ירדני ת,עם עיראקי ת,עם בגדאדי ת,עם איראני ת,עם סודאני ת,עם עומאני ת,עם קטרי ת,עם # [4] prefers to add aleph for niqqud-less spelling: קטארי. But note that the Arabic country name does not have an aliph. הולנדי ת,עם לבנוני ת,עם לבנוניזציה ע,אין_נטיות איסלנדי ת,עם יווני ת,עם מתייוון ת,נקבה_ת יפני ת,עם נפאלי ת,עם # נפאל listed as a specific example in the Academia's 2007 transliteration rules פלסטיני ת,עם # For the modern state פלשתינאי ת,עם # For the historic British mandate פלשתי ת,עם לובי ת,עם סנגלי ת,עם סינגפורי ת,עם תאילנדי ת,עם סיאמי ת,עם וייטנאמי ת,עם # [4] says the aleph appears also in vowled spelling. The spelling ויאטנם is also very popular. סורינמי ת,עם # [4] addes aleph for niqqudless spelling: סורינאם. נפלי ת,עם כווייתי ת,עם # Why does [4] write כווית and not כוויית? See also discussion in niqqudless.odt. בבלי ת,עם פרסי ת,עם ארמי ת,עם אכדי ת,עם שומרי ת,עם אדומי ת,עם אשורי ת,עם מדייני ת,עם יבוסי ת,עם כנעני ת,עם עמוני ת,עם אוגריתי ת,עם כושי ת,עם מוקדוני ת,עם שומרוני ת,עם טיבטי ת,עם בנגלדשי ת,עם אקוודורי ת,עם זנזיברי ת,עם בהוטני ת,עם בליזי ת,עם זאירי ת,עם חבשי ת,עם סיבירי ת,עם בחרייני ת,עם # yod added for ktiv maleh (according to [4]). לונדוני ת,עם הוליוודי ת,עם # TODO: The noun form הוליוודים isn't normally used (but is recognized by [4]). Consider removing the עם and adding a הוליווד noun or extraword. צידוני ת,עם לוקסמבורגי ת,עם ניז'רי ת,עם # Note: this is a different country from ניגריה! [4] makes a complete mess of the distinction. קווקזי ת,עם קמרוני ת,עם מוזמביקי ת,עם מדגסקרי ת,עם מלגשי ת,עם,ארץ= # The old name of Madagascar גרינלנדי ת,עם # I chose the spelling טייוון despite it not being the most accepted one. The # spelling טיוואן is 6 times more common (on a Google search), but is illogical # (why not double the yod?). טייוואן is 2 times more common but I don't think # we need this extra א. Rarer spellings include טאיוון and טאיוואן. # Interestingly, when inflected, the popularity order changes: טייוואני is # twice as popular as טיוואני, which in turn is 20 times as popular than # the טיווני that we chose. # http://hebrew-academy.huji.ac.il/hahlatot/TheTranscription/Documents/LAT-HEB.pdf lists טייוואן. # TODO: reconsider this decision, and perhaps choose טייוואן. טייווני ת,עם גבוני ת,עם # Every nationality, e.g., צרפתי, has two male plural forms. One with ים, # צרפתיים, used as an adjective for (usually) objects from that country, # and one with just מ, צרפתים, which is a noun used for people (males) from # that country. # For nationalities ending with אי, e.g., אמריקאי, the ים variant (אמריקאיים) # sounds particularly strange, and people tend to avoid it. Just as an example, # for צרפתי the phrase "מוצרים צרפתיים" is 5 times more common in Google than # "מוצרים צרפתים", while with אמריקאי the ratio is reversed: "מוצרים אמריקאים" # is 3 times more popular than "מוצרים אמריקאיים". For a different phrase, # "מבחנים אמריקאים/אמריקאיים", there is a tie. # However, while people often avoid this form, I don't think we should go as # far as forbid it (like we did in Hspell 1.0 and earlier). This form is # explicitly allowed by [4]. This form is also not negligable in actual use, # and the Academia wrote reply to a Wikipedian, implicitly saying that they # don't see anything different between אמריקאי and צרפתי: # "בעיקרון - הריבוי של צרפתים וצרפתיים למשל, הוא היינו הך. ואולם חל בידול # בין שניהם, ונראה שהבידול מבורך. האנשים ייקראו צרפתים, ואילו שמות התואר # יהיו צרפתיים. לפיכך נוכל לומר: זמרים צרפתים, אבל: כלים צרפתיים. וכנ"ל # אשר לאמריקאים, איטלקים וכו'." # One interesting "solution" to this issue altogether is what [5] does: it # uses the אי form just in singular (אמריקאי, אמריקאית) and recognizes a # different form like אירופי, אמריקני, תוניסי, etc., with all its inflections. # Currently we also recognize this additional form as well (see "alternative # spelling" comments below), but also the אי form. # If I want to disallow אמריקאיים, I should add "ם": אמריקאי ת,עם,ם (and # likewise for all cases of .*אי ת,עם. אירופאי ת,עם אירופי ת,עם,ארץ=אירופה # alternative spelling אמריקאי ת,עם אמריקני ת,עם,ארץ=אמריקה # alternative spelling אמריקניזציה ע,אין_נטיות אפריקאי ת,עם אפריקני ת,עם,ארץ=אפריקה # alternative spelling קורסיקאי ת,עם # Some write קורסיקני, but to me it sounds archaic. ארגנטינאי ת,עם ארגנטיני ת,עם # alternative spelling ונצואלי ת,עם,ארץ=ונצואלה אנדורי ת,עם,ארץ=אנדורה אנגולי ת,עם,ארץ=אנגולה מאוריטני ת,עם,ארץ=מאוריטניה רואנדי ת,עם,ארץ=רואנדה ג'מייקני ת,עם,ארץ=ג'מייקה גנאי ת,עם,ארץ=גאנה # [4] spells the country's name גאנה, with an aleph even for vowelled spellin. Then why doesn't the adjective have an aleph as well? חיפאי ת,עם # חיפה. NOTE: Itschak Avineri hates this form, and prefers חיפני... טברייני ת,עם,ארץ=טבריה # note added yod in ktiv maleh. טברני ת,עם,ארץ=טבריה # Alternative to טברייני, mostly used for the Tiberian school of niqqud. נהרייני ת,עם,ארץ=נהריה # TODO: rethink this spelling. יפואי ת,עם,ארץ=יפו עכואי ת,עם,ארץ=עכו נצרתי ת,עם עזתי ת,עם,ארץ=עזה צפתי ת,עם נתנייתי ת,עם,ארץ=נתניה אילתי ת,עם אשדודי ת,עם אשקלוני ת,עם דימונאי ת,עם וילנאי ת,עם קנייתי ת,עם,ארץ=קניה רומאי ת,עם,ארץ=רומא רומי ת,עם,ארץ=רומי נפוליטני ת,עם,ארץ=נפולי # [4] writtes for niqqudless spelling נאפולי but נפוליטני... ונציאני ת,עם,ארץ=ונציה פלורנטיני ת,עם,ארץ=פירנצה טוסקני ת,עם,ארץ=טוסקנה נורמני ת,עם,ארץ=נורמנדי # In the past "נורמנדיה" was common טריפוליטאי ת,עם,ארץ=טריפולי אתונאי ת,עם ספרטני ת,עם,ארץ=ספרטה ספרטניות ע טקסני ת,עם,ארץ=טקסס קליפורני ת,עם,ארץ=קליפורניה ליטאי ת,עם,ארץ=ליטא ברזילאי ת,עם,ארץ=ברזיל קפריסאי ת,עם,ארץ=קפריסין וינאי ת,עם ברלינאי ת,עם,ארץ=ברלין פריזאי ת,עם,ארץ=פריז # פריס is also common, but I don't think we should accept that. מרוקאי ת,עם,ארץ=מרוקו מרוקני ת,עם,ארץ=מרוקו # alternative spelling מקסיקאי ת,עם,ארץ=מקסיקו מקסיקני ת,עם,ארץ=מקסיקו # alternative spelling קרתגי ת,עם,ארץ=קרתגו קובני ת,עם,ארץ=קובה לוונטיני ת,עם,ארץ=לוונט # TODO: accept also תוניסיה, טוניס, טוניסיה # [4] prefers the spelling טוניס, טוניסיה, טוניסאי, but also allows תוניס, # תוניסיה, תוניסאי. All these alternate forms appear equally common in a Google # search, so we'll allow all of them. # Also, [4] says that טוניסיה is the name of the country, while טוניס is the # name of the capital city. Not everyone agrees with that. # [4] also allows טוניסי, תוניסי. We won't allow these. # TODO: reconsider these decisions. תוניסאי ת,עם,ארץ=תוניס תוניסאי ת,עם,ארץ=תוניסיה אסקימואי ת,עם,ארץ=אסקימו # wrong: אלג'יראי ת,עם,ארץ=אלג'יר. In fact אלג'יר is the capital, but # אלג'יריה is the name of the country (according to [4]) # note that I think אלג'יראי should also be considered correct, but [4] and [5] # disagree. אלג'ירי ת,עם,ארץ=אלג'יריה צ'ילאני ת,עם,ארץ=צ'ילה # [4] says the adjective is צ'יליאני, but I don't understand why the extra yod, and צ'ילאני is actually more popular in use. בוליביאני ת,עם,ארץ=בוליביה פרואני ת,עם,ארץ=פרו טרויאני ת,עם,ארץ=טרויה סיציליאני ת,עם,ארץ=סיציליה פיג'יאני ת,עם,ארץ=פיג'י האיטי ת,עם,ארץ=האיטי בדואי ת,עם,ארץ= מאורי ת,עם,ארץ= # סורי ת,עם,ארץ=סוריה אלבני ת,עם,ארץ=אלבניה יוגוסלבי ת,עם,ארץ=יוגוסלביה סלבי ת,עם,ארץ= # [4] writes סלאבי, even in vowelled spelling. אוסטרלי ת,עם,ארץ=אוסטרליה שווייצרי ת,עם,ארץ=שווייצריה # [4] prefers שוויצרי, and it is also much more common in Google, but see niqqudless.odt for discussion. שווייצי ת,עם # variant of שווייצרי שוודי ת,עם,ארץ=שוודיה נורווגי ת,עם,ארץ=נורווגיה # TODO: [4] prefers נורבגיה, and it is also slightly more common in Google. אתיופי ת,עם,ארץ=אתיופיה סעודי ת,עם,ארץ=סעודיה אינדונזי ת,עם,ארץ=אינדונזיה מלזי ת,עם,ארץ=מלזיה מלאי ת,עם,ארץ= פולינזי ת,עם,ארץ=פולינזיה # not in [4]. סלובני ת,עם,ארץ=סלובניה אסטוני ת,עם,ארץ=אסטוניה סלובקי ת,עם,ארץ=סלובקיה ארמני ת,עם,ארץ=ארמניה מקדוני ת,עם,ארץ=מקדוניה קרואטי ת,עם,ארץ=קרואטיה מונגולי ת,עם,ארץ=מונגוליה צ'כי ת,עם,ארץ=צ'כיה צ'כוסלובקי ת,עם,ארץ=צ'כוסלובקיה ניגרי ת,עם,ארץ=ניגריה סקנדינבי ת,עם,ארץ=סקנדינביה מיקרונזי ת,עם,ארץ=מיקרונזיה קמבודי ת,עם,ארץ=קמבודיה ליברי ת,עם,ארץ=ליבריה אנדלוסי ת,עם,ארץ=אנדלוסיה סומלי ת,עם,ארץ=סומליה # [4] spells טסמניה, and so does the Hebrew Wikipedia. However, the English # pronounciation is with z, and the Israeli pronounciation follows suite, and # when this happens, according to the Academia decision (see מוזיקה vs. # מוסיקה), ז should be used. In Google, both spellings seem equally common. טזמני ת,עם,ארץ=טזמניה טנזני ת,עם,ארץ=טנזניה טרנסילבני ת,עם,ארץ=טרנסילבניה מולדבי ת,עם,ארץ=מולדביה # note מולדביה is part of romania, and the country is מולדובה מולדובי ת,עם,ארץ=מולדובה מסופוטמי ת,עם,ארץ=מסופוטמיה פניקי ת,עם,ארץ=פניקיה נמיבי ת,עם,ארץ=נמיביה מנצ'ורי ת,עם,ארץ=מנצ'וריה פרוסי ת,עם,ארץ=פרוסיה בלרוסי ת,עם # There's also an archaic spelling ביילורוסיה. There's also those who write the country's name "בלרוסיה". # [4] is a bit inconsistent. It prefers אוקיינוס but allows אוקיאנוס as # variant. It prefers אוקייניה (the part of the globe including Australia) # but allows אוקיאניה as variant. Yet, it has the adjective אוקיאני, not # אוקייני. Also, does this adjective relate to oceania, or the ocean? #אוקיאני ת,עם,ארץ=אוקיאניה אוקייני ת אוקייני ת,עם,ארץ=אוקייניה # קנדי ת,עם,ארץ=קנדה אוגנדי ת,עם,ארץ=אוגנדה פנמי ת,עם,ארץ=פנמה גואטמלי ת,עם,ארץ=גואטמלה גינאי ת,עם,ארץ=גינאה אריתראי ת,עם,ארץ=אריתראה # [4] and Hebrew wikipedia prefer אריתריאה but I see little reason for that but the English pronuniciatio of Eritrea; For the Arabic spelling אריתריה might have made more sense. אריתראה looks more Hebrew given the adjective אריתראי. אוקראיני ת,עם,ארץ=אוקראינה בוכרי ת,עם,ארץ=בוכרה פיני ת,עם,ארץ=פינלנד לפי ת,עם,ארץ=לפלנד אירי ת,עם,ארץ=אירלנד סקוטי ת,עם,ארץ=סקוטלנד דני ת,עם,ארץ=דנמרק אפגני ת,עם,ארץ=אפגניסטן פקיסטני ת,עם,ארץ=פקיסטן כורדי ת,עם,ארץ=כורדיסטן אוזבקי ת,עם,ארץ=אוזבקיסטן קירגיזי ת,עם,ארץ=קירגיסטן # TODO: In English there is an extra z: kyrgyzstan. So should we write קירגיזסטן with an additional ז? Perhaps not: in English the z isn't pronounced (see wikipedia entry on kyrgyzstan). Also, does [4] and the majority of writers ommit the ז. קזחי ת,עם,ארץ=קזחסטן # TODO: [4] is inconsistent, preferring קזחי but קזכסטן, and mixing the two spellings in the explanation. Reconsider. טורקמני ת,עם,ארץ=טורקמניסטן טג'יקי ת,עם,ארץ=טג'יקיסטן בריטי ת,עם,ארץ=בריטניה אסייתי ת,עם,ארץ=אסיה # TODO: [4] also accepts אסיאתי, אסיאני - and prefers the last. גרוזיני ת,עם,ארץ=גרוזיה גאורגי ת,עם,ארץ=גאורגיה # שם לבקשת שגריר גרוזיה בישראל ב 2005 אבחזי ת,עם,ארץ=אבחזיה אזרבייג'ני ת,עם אזרי ת,עם,ארץ=אזרבייג'ן # This alternative name for the people of azarbaijan is sometimes considered wrong, because it actually should refer only to one ethnic group in that country. פורטוגזי ת,עם,ארץ=פורטוגל בורמזי ת,עם,ארץ=בורמה טוגולזי ת,עם,ארץ=טוגו # I can't find any dictionary listing "טוגולזי", but this is what I seem to remember, apparently coming from English "togolese". קונגולזי ת,עם,ארץ=קונגו # again, "קונגולזי" is not in [4], but I think it's right. מלטזי ת,עם,ארץ=מלטה # [4] prefers מלטי - but that form is not in use. הודי ת,עם,ארץ=הודו ירושלמי ת,עם,ארץ=ירושלים # note ktiv chaser! מצרי ת,עם,ארץ=מצרים # note ktiv chaser! פיליפיני ת,עם,ארץ=פיליפינים קוריאני ת,עם,ארץ=קוריאה לוונטיני ת,עם,ארץ=לוונט ולשי ת,עם,ארץ=וילס חלמאי ת,עם,ארץ=חלם חלמאות ע,יחיד פרגוואי ת,עם,ארץ=פרגוואי אורוגוואי ת,עם,ארץ=אורוגוואי קטלני ת,עם,ארץ=קטלוניה מונטנגרי ת,עם,ארץ=מונטנגרו מוסלמי ת,עם,ארץ= # note added vav in ktiv male קתולי ת,עם,ארץ= פרוטסטנטי ת,עם,ארץ= פרוטסטנט ת,נקבה_ית פרוטסטנטיות ע אנגליקני ת,עם,ארץ= קופטי ת,עם,ארץ= בהאי ת,עם,ארץ= סיקי ת,עם,ארץ= הינדי ת,עם,ארץ= הינדואי ת,עם,ארץ= הינדואיזם ע,אין_נטיות הינדואיסטי ת הינדואיסט ת,נקבה_ית אינדיאני ת,עם,ארץ= מוהיקני ת,עם,ארץ= דרוזי ת,עם,ארץ= צ'רקסי ת,עם,ארץ= סלג'וקי ת,עם,ארץ= אבוריג'יני ת,עם,ארץ= אפריקנר ת,נקבה_ית סובייטי ת,עם,ארץ= # TODO: if "סוביטים" (soviet people) is wrong, remove עם. בודהיסטי ת בודהיסט ת,נקבה_ית בודהיזם ע,אין_נטיות שינטו ע,אין_נטיות ויקינגי ת,עם,ארץ= נאצי ת,עם,ארץ= נאציזם ע,אין_נטיות אנטישמי ת,עם,ארץ= אנטישמיות ע פילושמי ת,עם,ארץ= # This word is very rarely used, but it is in [4]. פילושמיות ע חילוני ת,עם,ארץ= # note added yod for niqqud-less spelling חילוניות ע רפובליקני ת,עם,ארץ= רפובליקאי ת,עם,ארץ= # variant of רפובליקני, also accepted by [4]. צמחוני ת,עם,ארץ= צמחונות ע,יחיד טבעוני ת,עם,ארץ= טבעונות ע,יחיד ג'ינג'י ת,עם,ארץ= ברברי ת,עם,ארץ= ברבריות ע בורגני ת,עם,ארץ= בורגנות ע,יחיד לטיני ת,עם,ארץ= # עם isn't very important as "לטינים" isn't very useful. אנגלוסקסי ת,עם,ארץ= ישועי ת,עם,ארץ= פוריטני ת,עם,ארץ= פוריטניות ע לותרני ת,עם,ארץ= לותרניזם ע,אין_נטיות מתודיסטי ת מתודיסט ת,נקבה_ית מתודיזם ע,אין_נטיות הבסבורגי ת,עם פרנציסקני ת,עם,ארץ= ישמעאלי ת,עם,ארץ= מורמוני ת,עם,ארץ= אצטקי ת,עם,ארץ= בסקי ת,עם,ארץ= דומיניקני ת,עם,ארץ= קלטי ת,עם,ארץ= טטרי ת,עם,ארץ= # [3] prefers עותמאני, and refers to it from עותומני (which probably means # it views it as an error). [4] prefers עות'מאני (with geresh) but also # accepts a variant עותומאני. Because this word is mostly used in historic # research, I decided to use the spelling the historians prefer to use, and # that is עות'מאני. עות'מאני ת,עם,ארץ= חשמונאי ת,עם,ארץ= טמפלר ת,נקבה_ית טמפלרי ת,עם,ארץ= # [4] doesn't recognize the adjective, I have no idea why. כוזרי ת,עם,ארץ= כשדי ת,עם,ארץ= חרדי ת,עם,ארץ= נורדי ת,עם,ארץ= סיקרי ע,רבים=סיקריקים,אין_כינויים # This bizarre inflection is from [3]. [4] says there is the plural סיקריים as well as סיקריקים צדוקי ת,עם,ארץ= פרושי ת,עם,ארץ= # [4] doesn't recognize פרושיים, I don't know why. Most inflections other than פרושים aren't useful anyway. בושמני ת,עם,ארץ= אטרוסקי ת,עם,ארץ= האשמי ת,עם,ארץ= # TODO: maybe only with definite article? ממלוכי ת,עם,ארץ= בורי ת,עם,ארץ= # ערבי ת,עם,ארץ=,נקבה_ה יהודי ת,עם,ארץ=,נקבה_ה יהודי ע,רבים=יהודים,אין_נטיות_יחיד # Above, יהודים is also a noun. It often gets inflections like יהודיהם - but above we didn't add them. So let's add it now. יהודייה ע,אין_נטיות_יחיד נוצרי ת,עם,ארץ=,נקבה_ה נצרות ע,יחיד עברי ת,עם,ארץ=,נקבה_ה גרמני ת,עם,ארץ=גרמניה,נקבה_ה בולגרי ת,עם,ארץ=בולגריה,נקבה_ה רומני ת,עם,ארץ=רומניה,נקבה_ה הונגרי ת,עם,ארץ=הונגריה,נקבה_ה רוסי ת,עם,ארץ=רוסיה,נקבה_ה איטלקי ת,עם,ארץ=איטליה,נקבה_ה אשכנזי ת,עם,נקבה_ה פולני ת,עם,ארץ=פולין,נקבה_ה צועני ת,עם,ארץ=,נקבה_ה מואבי ת,עם,נקבה_ה תימני ת,עם,נקבה_ה צרפתי ת,עם,נקבה_ה ספרדי ת,עם,נקבה_ה מכבי ע,אין_נטיות_יחיד,רבים=מכבים,אין_נטיות_רבים אגאי ת אדריאטי ת קנרי ת # פשיסט ת,נקבה_ית פשיסטי ת פשיזם ע,אין_נטיות כהניסט ת,נקבה_ית כהניסטי ת כהניזם ע,אין_נטיות איסלאמי ת איסלאם ע,אין_נטיות # the dictionaries prefer without yod איסלאמיסט ת,נקבה_ית איסלאמיסטי ת איסלאמיזם ע,אין_נטיות איסלאמופוביה ע,אין_נטיות איסלאמופוב ת,נקבה_ית איסלמיזציה ע,אין_כינויים,יחיד שיעי ת,עם,ארץ=שיעה סוני ת,עם,ארץ=סונה והאבי ת,עם,ארץ=והאביה # TODO: יה or ייה? סופי ת,עם,ארץ=סופיה # צ in Arabic. TODO: יה or ייה? סלפי ת,עם,ארץ=סלפיה # TODO: יה or ייה? עלווי ת,עם,ארץ=עלוויה # TODO: יה or ייה? שריעה ע,אין_נטיות # muslim law ביזנטי ת עמלקי ת פרעוני ת,עם,ארץ=פרעה קירילי ת קריבי ת אמהרי ת בלקני ת # The region's name is "הבלקן", not "בלקן" (see extrawords). אנטרקטי ת # [4] prefers to spell this word without an aleph. It also recognizes the one with aleph, though. גותי ת,עם,ארץ= ויזיגותי ת,עם,ארץ= אוסטרוגותי ת,עם,ארץ= הוני ת,ם # TODO: rethink ם היספני ת,ם # TODO: rethink ם איברי ת בלטי ת מנדריני ת,עם,ארץ= מנדרין ע,אין_כינויים ברהמין ע,אין_כינויים קראי ת,עם,ארץ= קראות ע,יחיד קראולי ת,עם,ארץ= # [4] addes yod for niqqud-less spelling: קריאולי. קראולית ע,אין_נטיות # [4] addes yod for niqqud-less spelling: קריאולית. יידי ת # TODO: decide if to spell יידי or אידי. See also יידיש, אידיש. אידי ת # TODO: decide if to spell יידי or אידי. See also יידיש, אידיש. יידישאי ת אידישאי ת # foreign words that do not have commonly used Hebrew alternatives: # # There are several issues regarding the spelling of foreign words, and # niqqud-less spelling in particular. # # The most problematic issue is probably whether to use "א" as a marker for # a "a" sound in the foreign word. The Academia opposes this completely. # [4] (Rav-Milim), however, thinks that for niqqud-less spellings, extra א # should be added. It doesn't *always* add them, however, and follows is # a comment I wrote in the Hebrew wikipedia trying to make sense of Rav-Milim's # policy (note that my comment is only a guess). In most cases, we will follow # the Academia's (and [3]'s) standard, not [4]'s and not add any א. # # יש לי הערה לגבי הוספת אם-הקריאה אל"ף לציון "a". כאמור, האקדמיה ללשון העברית # בדעה שאין להוסיף אל"פים כלל. אבל, למשל מילון רב-מילים כן מוסיף אל"פים, וכדאי # לנסות להבין למה ומתי. קל לראות שהוא כלל לא הולך לפי הכלל שצריך לכתוב בכל מקום # שבו יש a אל"ף. קחו לדוגמה את המילה פרגמטי, pragmatic. זה, ללא אל"ף, הוא הכתיב # ה"תקני" של האקדמיה. מילון רב-מילים (ובעקבותיו בודק האיות של Word ולכן רוב # המשתמשים) מעדיף "פרגמאטי". אבל למה לא פראגמאטי למשל - הרי זה מה שהיה קורה # אילו היינו מכניסים אל"ף בכל מקום בו הייתה a במילה המקורית? לדעתי, מילון # רב-מילים מושפע פה מאוד מערבית. בערבית, אליף מציינת לא סתם תנועת a אלא תנועת a # ארוכה. המשמעות העיקרית של אורך התנועה היא קביעת האם המילה תהייה מלעיל או # מלרע. כך ב "פרגמאטי" יבוא ההדגש על ההברה השניה, ואילו היינו כותבים "פראגמטי" # היה בה ההדגש על ההרה הראשונה. הבנה זו מראה גם מתי רב-מילים לא יוסיף אל"ף. # לדוגמה בשם העיר פריז, אין להוסיף אלף, מכיוון שהכתיב "פריז" גורר הגייה מלרעית, # ואילו "פאריז" גורר הגייה מלעילית, לא נכונה. # דוגמה נוספת: המילה פרדוקס. רב-מילים שכל-כך אוהב להוסיף אל"פים בניגוד לדעת # האקדמיה לא מוסיף פה אף אלף - לא ב-a הראשון, ולא ב-a השני. אפילו שאלו הברות # פתוחות. כאמור, לדעתי זה מכיוון שההגייה שמדגישה את ההברה עם אם הקריאה וי"ו # (כלומר, קריאת פרדוקס במלרע) היא כבר נכונה, ואין צורך להוסיף אמות קריאה # שאמורות (כמו בערבית) לשנות את ההטעמה. אבל, במילה פרדוקסלי, רב-מילים כן מוסיף # אל"ף אחד: פרדוקסאלי. למה? כנראה כדי להבהיר שההטעמה נשארת על ההברה האחרונה # (כלומר מלרע) ולא בהברה לפני ההאחרונה (מלעיל). # באופן אישי, אני לא אוהב את השיטה הזו של רב-מילים, מכיוון שהיא די זרה לדרכה # של העברית, ומנוגדת להחלטות האקדמיה, למרות שיש בה איזשהו היגיון פנימי. בכל # מקרה, הכלל "על כל A במקור נשים א" לא רלוונטי, אלא אם כן אנחנו רוצים ערכים # כמו "פאראדוקס" (במקום פרדוקס) או יאפאן (במקום יפן). אורגני ת אנאורגני ת אלקטרון ע אלקטרוני ת אלקטרוניקה ע,אין_נטיות פוזיטרון ע,אין_כינויים # physics term פוטון ע,אין_כינויים # physics term פוטון ע,אין_כינויים # type of bed פרוטון ע,אין_כינויים אלגוריתם ע אלגוריתמי ת אלגוריתמאי ת,ם # TODO: there's also a rarer variant, אלגוריתמיקאי אלגוריתמיקה ע,אין_נטיות אוניברסיטה ע,אות אוניברסיטאי ת טכניון ע,אין_נטיות # [4] allows plural, but usually used with definite article, for the one place in Haifa טכניוני ת דמוגרפי ת דמוגרפיה ע,אין_נטיות דמוגרף ת,נקבה_ית # I'm not sure this is a real profession, but [4] accepts it and it's in some use (but not frequent) by people. קרטוגרפיה ע,אין_נטיות # The spelling כרטוגרפיה is also common. קרטוגרפי ת קרטוגרף ת,נקבה_ית מתמטיקה ע,אין_נטיות מתמטי ת מתמטיקאי ע מתמטיקאית ע טכנולוגיה ע טכנולוגי ת טכנולוג ת,נקבה_ית טכנוקרט ת,נקבה_ית טכנוקרטי ת טכנוקרטיה ע,אין_נטיות טכנו ע,אין_נטיות # type of music טכנופוביה ע,אין_נטיות טכנופובי ת טכנופוב ת,נקבה_ית טכניקה ע טכני ת רדיוס ע רדיאלי ת אינטואיציה ע אינטואיטיבי ת אלגברה ע,אות אלגברי ת אמבה ע אלקטרומגנט ע אלקטרומגנטי ת אלקטרומגנטיות ע מגנט ע מגנטי ת מגנטיות ע מגנטיזציה ע,יחיד פרומגנטי ת אליפסה ע אליפטי ת אנליזה ע אנליטי ת אנליטיות ע בינרי ת כימיקל ע גימיק ע מיקרופון ע פוליטי ת פוליטיקה ע,אין_נטיות פוליטיקאי ע פוליטיקאית ע אפוליטי ת # the opposite of פוליטי פוליטיזציה ע,יחיד,אין_כינויים ספקטרום ע ספקטרלי ת # physics term ספקטרוסקופ ע,אין_כינויים ספקטרומטר ע,אין_כינויים # ספקטרוסקופ and ספקטרומטר are the same thing... מומנט ע מומנטום ע קרנבל ע רובוט ע רובוטי ת רובוטיקה ע,אין_נטיות טופוגרפיה ע טופוגרפי ת ביבליוגרפיה ע ביבליוגרף ע,אין_כינויים ביבליוגרפית ע,אין_כינויים היסטוריה ע היסטורי ת היסטוריון ע היסטוריונית ע היסטריה ע היסטרי ת וקטור ע וקטורי ת # math term לוגריתם ע לוגריתמי ת נורמה ע נורמלי ת נורמליות ע נורמליזציה ע נורמטיבי ת נורמטיביות ע קואורדינטה ע קריטריון ע קריטי ת טרנסצנדנטי ת טרנסצנדנטלי ת # alternative for the above דוקטרינה ע סטודנט ע סטודנטית ע סטודנטיאלי ת רומן ע רומנטי ת רומנטיות ע רומנטיקה ע רומנטיזציה ע,אין_כינויים,יחיד רומנטיקן ת,נקבה_ית תזה ע פרופסור ע פרופסורית ע פרופסורה ע,יחיד קומפקטי ת קומפקטיות ע קתודה ע קתודי ת אנודה ע,אין_כינויים אבסורד ע אבסורדי ת אוטו ע,אין_נטיות # colloquial for מכונית, and part of phrases (transliteration of "auto-"). אוטובוס ע מיניבוס ע אינטרס ע #אינטרסנט ע #אינטרסנטית ע אינטרסנט ת,נקבה_ית אינטרסנטי ת ארוטיקה ע,אין_נטיות ארוטי ת אלמנט ע אלמנטרי ת אוטופיה ע אוטופי ת דיסטופיה ע דיסטופי ת אידאולוגיה ע אידאולוגי ת אידאולוג ע אידאולוגית ע אקולוגיה ע אקולוגי ת אקולוג ע אקולוגית ע אטימולוגיה ע אטימולוגי ת אקדמיה ע אקדמאי ת,ם אקדמי ת טיפוס ע טיפוסי ת אבטיפוס ע,אין_נטיות # an accepted alternative for אב-טיפוס פרוטוקול ע פורום ע ספורטאי ע ספורטאית ע ספורטיבי ת # The Academia decided (as explained in the FAQ on their site) that words of # Greek origin that are commonly pronounced with a "z" should be written # with a ז, for example: פיזיקה, פיזיותרפיה, מוזאון. # However, unfortunately, some of these ס forms are still quite commonly # used, and [3] and [4] accepts many of them, e.g., מוסיקה, as alternative # spellings. מוזיקאי ע מוזיקאית ע מוזיקלי ת מוזיקליות ע מוזיקולוג ת,נקבה_ית מוזיקולוגי ת מוזיקולוגיה ע,אין_נטיות מוזיקה ע,יחיד,אין_כינויים מוזאון ע # preferred over מוזיאון by [3] and the Academia. מוזאוני ת #מוזיאון ע # an alternative vowelled spelling to מוזאון, or according to [4] the correct niqqud-less spelling. פיזי ת פיזיקה ע,יחיד,אין_כינויים פיזיקאי ע פיזיקאית ע מטפיזיקה ע,אין_נטיות מטפיזי ת אסטרופיזיקה ע,אין_נטיות אסטרופיזיקאי ע אסטרופיזיקאית ע פיזיקלי ת פיזיולוג ת,נקבה_ית פיזיולוגי ת פיזיולוגיה ע,יחיד,אין_כינויים פיזיותרפיה ע פיזיותרפיסט ת,נקבה_ית פלזמה ע,יחיד,אין_כינויים # physics and biology term. ציטופלזמה ע,יחיד,אין_כינויים # biology term פרוטופלזמה ע,יחיד,אין_כינויים # biology term. [3] writes with ס, [4] with ז. קתרזיס ע,אין_נטיות # [3] has only קתרסיס. [4] has both, but prefers קתרזיס. פנטזיה ע פנטזיונר ת,נקבה_ית # colloquial פנטסטי ת # usually colloquial - meaning simply "great", not related to fantasy. # Some words are not of greek Origin (e.g., English origin), and still there's # an argument how to write them. One examples is פריימריז vs. פריימריס. Both # [3] and [4] prefer ז, and so do modern speakers (based on the English # pronunciation). But strangely the spelling # with ס is much more commonly # found in Google. We'll go with a ז, to agree with the common pronunciation. פריימריז ע,אין_נטיות צלזיוס ע,אין_נטיות # this is not exactly a noun, but we can call it that. Note that the spelling צלסיוס is more common in Google, though both are very common. TODO: reconsider פרנהייט ע,אין_כינויים קלווין ע,אין_נטיות קורוזיה ע,אין_כינויים,יחיד טנזור ע,אין_כינויים # math term טנזורי ת # math term # Yet another transliteration question is how to translate "v" into Hebrew: # as ב or as ו (וו in niqqud-less spelling). The former has the problem of # being abiguous (b or v) while the latter is both ambiguous (v, u or o) # and longer (in niqqud-less spellig). In the following words, [3] and/or [4] # appear to allow both forms, but there is a preferred for for each. # # Looking in google counts, it is obvious that there are established spelling # traditions for some of these words: טלוויזיה is overwhelmingly more popular # than טלביזיה, while דיבידנד is much more popular than דיווידנד. # # It appears that the וו spelling is gaining popularity over ב and is destined # to replace it completely at some stage. Words that originally had a "w" sound # in English typically can only be written with ו (e.g., פינגווין, סוודר, # סוויטה, בסקוויט, אקווריום, רוטוויילר), and many other words (e.g., אוונגרד) # are almost never written with ב and none of the dictionary lists such # variants for them. # # TODO: try to understand more about the reasoning behind the chosing of וו # vs. ב, and make a more consistent and informed decision on this issue. # (perhaps decide וו always!) Try to ask the academia for a decision on the # subject. טלוויזיה ע טלוויזיוני ת דיבידנד ע # [3] and [4] mention alternative spelling, דיווידנד. רלוונטי ת # [4] also mentions רלבנטי as a less popular spelling. רלוונטיות ע סנדוויץ' ע ציביליזציה ע # [3] and [4] also allow ציוויליזציה but prefer this. TODO: according to Google, popular usage prefers the וו form. reconsider. טריביאלי ת # [3] recommends bet, but [4] recommends טריוויאלי! the latter appears to be more common in Google count. רביזיה ע # The spelling with ב is preferred by both [3] and [4]. It appears, though, that on a Google search, רוויזיה is more popular. Moreover, Dan points to the following absurdity: רביזיה and טלוויזיה come from the same Latin route, "vision", so why the inconsistency in the transliteration? רביזיוניזם ע,אין_נטיות רביזיוניסט ת,נקבה_ית רביזיוניסטי ת אימפרוביזציה ע גרביטציה ע,אין_כינויים,יחיד # physics term גרביטציוני ת טבטוני ת,עם,ארץ= # [4] prefers טווטוני, but allows both spellings, and more people (as seen on Google) prefer the spelling with ב. סילבסטר ע,אין_נטיות # New Years Eve, colloquial רוורס ע,אין_נטיות # colloquial. The spelling רברס and רוורס are equally popular on Google; [4] prefers רברס (but recognizes both), [5] lists only רוורס. ריביירה ע,אין_נטיות # [4] prefers ריוויירה but also allows ריביירה. In a google search, the spelling ריביירה is 100 times more popular than ריוויירה. דיברטימנטו ע,אין_כינויים,רבים=דיברטימנטי דיווה ע,אין_כינויים פביליון ע # ביתן. The spelling פביליון is more common in Google than פוויליון and [4] prefers it. [3] lists both and refer to ביתן. אוונגליון ע,אין_כינויים אוונגליזם ע,אין_נטיות אוונגליסט ת,נקבה_ית אוונגליסטי ת אוונגלי ת פרסביטריאניזם ע,אין_נטיות פרסביטריאני ת,עם,ארץ= קלוויניזם ע,אין_נטיות קלוויניסטי ת קלוויניסט ת,נקבה_ית קווייקרי ת קווייקר ת,נקבה_ית אפיסקופלי ת קונבנציונלי ת # [4] adds aleph for niqqud-less spelling: קונבנציונאלי. [4] also mentions a rarer spelling קונוונציונ)א(לי. פריבילגיה ע,אין_כינויים # [4] also allows פריווילגיה אלטרנטיבה ע אלטרנטיבי ת קווטה ע,אין_כינויים # rarely used. The Hebrew translation is מכסה. קוונט ע,אין_כינויים # physics term קוונטי ת # physics term קוונטיזציה ע,אין_כינויים,יחיד # physics term קוורטט ע,אין_כינויים קווינטט ע,אין_כינויים פרימה ע,אין_נטיות סקונדה ע,אין_כינויים טרצה ע,אין_כינויים קוורטה ע,אין_כינויים קווינטה ע,אין_כינויים סקסטה ע,אין_כינויים ספטימה ע,אין_כינויים אוקטבה ע קוורק ע,אין_כינויים אקוויוולנט ע אקוויוולנטי ת אקוויוולנטיות ע אמביוולנטי ת אמביוולנטיות ע אקוורל ע אינוונטר ע # מצאי דיוויזיה ע פינגווין ע סוויטה ע סוודר ע ביסקוויט ע אקווריום ע # [3] has only אקווריון, but [4] calls that an obsolete alternative form. אוונגרדי ת אוונגרד ע,אין_נטיות אקסטרווגנטי ת אקסטרווגנטיות ע אקוויפר ע אינקוויזיציה ע,אין_נטיות אינקוויזיטור ת,נקבה_ית טרנסווסטיט ע קוויאר ע,אין_נטיות בנק ע בנקאי ע בנקאי ת בנקאות ע טניסאי ע טניסאית ע ליגה ע קריירה ע קרייריסט ת,נקבה_ית קרייריסטי ת שוקולד ע שוקולדי ת # Not in any dictionary, but a valid translation of "chocolaty". סלט ע אוטומט ע אוטומטי ת אוטומציה ע,אין_כינויים תאטרון ע,ים,רבים=תאטראות # [4] adds yod for niqqudless spelling: תיאטרון אמפיתאטרון ע # [4] adds yod for niqqudless spelling: אמפיתיאטרון תאטרלי ת תאטרליות ע תאטרוני ת קלוריה ע קלורי ת מנדט ע מנדטורי ת ג'יפ ע קלסי ת קלסיקה ע פלסטיק ע,אין_כינויים פלסטי ת פלסטיות ע פלסטיקה ע,אין_נטיות פלסטיקאי ע פלסטיקאית ע תרמופלסטי ת קומוניזם ע,אין_נטיות קומוניסטי ת קומוניסט ת,נקבה_ית פיננסי ת פיננס ע,אין_יחיד # פיננסים פסטיבל ע רפורמה ע רפורמי ת,עם,ארץ= רפורמציה ע רפורמיזם ע,אין_נטיות רפורמיסטי ת רפורמיסט ת,נקבה_ית רפורמטור ת,נקבה_ית טמפרטורה ע מודרני ת מודרניזציה ע,אין_נטיות מודרניזם ע,אין_נטיות מודרניסט ת,נקבה_ית מודרניסטי ת פוסטמודרני ת פוסטמודרניזם ע,אין_נטיות פוסטמודרניסט ת,נקבה_ית פוסטמודרניסטי ת מודרנה ע,אין_נטיות דינמי ת דינמיות ע דינמיקה ע דינמומטר ע,אין_כינויים סטטי ת פוטנציאל ע פוטנציאלי ת דיפלומה ע דיפלומט ע דיפלומטי ת דיפלומטיה ע,אין_נטיות דיגיטלי ת דיגיטציה ע # computer term גלובוס ע אינפלציה ע אינפלציוני ת דפלציה ע,אין_כינויים,יחיד דפלציוני ת קונצרן ע קונצרני ת ויזה ע צנזורה ע צנזור ע צנזורית ע דמוקרטיה ע דמוקרטי ת דמוקרטיזציה ע,אין_נטיות דמוקרט ת,נקבה_ית # I'm not sure this is a real word, but [4] accepts it and it's in some use (but not frequent) by people. אירוניה ע אירוני ת אולימפיאדה ע אולימפי ת אופוזיציה ע אופוזיציוני ת אופוזיציונר ת,נקבה_ית קואליציה ע קואליציוני ת מיסה ע קומדיה ע פופולרי ת פופולריות ע פופולריזציה ע,יחיד,אין_כינויים פופוליזם ע,אין_נטיות פופוליסטי ת פופוליסט ת,נקבה_ית אטום ע אטומי ת אטומיזם ע,אין_נטיות אטומיסטי ת אטומיזציה ע,יחיד,אין_כינויים קריקטורה ע קריקטוריסט ת,נקבה_ית פירט ע # This is [3]'s spelling - I (and other people) prefer to add א... פירטית ע פירטי ת פירטיות ע אסטרטגיה ע אסטרטגי ת אסטרטג ע אסטרטגית ע טקטיקה ע טקטי ת טקט ע,אין_נטיות טקטיקן ת,נקבה_ית טנק ע טנקיסט ע,אין_כינויים טנקיסטית ע,אין_כינויים אופטימי ת אופטימיות ע # Hebrew-like alternative to אופטימיזם. אופטימיסט ת,נקבה_ית אופטימיזם ע,אין_נטיות פסימי ת פסימיות ע פסימיזם ע,אין_נטיות פסימיסט ת,נקבה_ית אופטיקה ע,יחיד,אין_כינויים אופטי ת אופטיקאי ע,אין_כינויים אופטיקאית ע,אין_כינויים גלריה ע מיתוס ע מיתי ת מיתולוגי ת # [3] doesn't recognize this word, but rav-milim does. מיתולוגיה ע,אין_כינויים מוטורי ת מוטוריקה ע,אין_נטיות # medical term אוקיינוס ע # [4] also allows אוקיאנוס, but prefers אוקיינוס. See also comment on אוקיאניה אוקיינוגרפיה ע,אין_נטיות אוקיינוגרפי ת אוקיינוגרף ת,נקבה_ית אידיוט ת,נקבה_ית אידיוטי ת בלדה ע בלון ע סקסופון ע סקסופוניסט ת,נקבה_ית סוזפון ע פסיכולוג ת,נקבה_ית פסיכולוגי ת פסיכולוגיה ע,אין_נטיות פסיכולוגיסטי ת פסיכולוגיזם ע,אין_נטיות פרפסיכולוג ת,נקבה_ית פרפסיכולוגי ת פרפסיכולוגיה ע,אין_נטיות פסיכוטכני ת פסיכוטכניקה ע,אין_נטיות פסיכואנליזה ע,אין_נטיות פסיכואנליטי ת פסיכוזה ע,אין_כינויים פסיכוטי ת פסיכוסומטי ת פסיכותרפיה ע,אין_נטיות פסיכותרפי ת פסיכותרפיסט ת,נקבה_ית פסיכיאטר ת,נקבה_ית # [3] has פסיכודלי. [4] says that this form is wrong, and the correct one is # פסיכדלי - with segol in the כ. [5] lists both forms, though it uses a tsere # and not a segol. Both forms appear to be in about equal actual use. In # speech, people often say פסיכדלי with a "a", sound, not either "o" or "e". # For now, we'll accept [4]'s decision. TODO: reconsider. פסיכדלי ת # While פסיכופת et al. are the correct forms, not פסיכופט, the later forms # are also accepted by [4] (they bring up the correct word form) and are # actually much more commonly used (judging from Google counts). # I decided to accept only the correct form, פסיכופת. פסיכופת ת,נקבה_ית פסיכופתי ת פסיכופתיה ע,אין_כינויים סוציופת ת,נקבה_ית סוציופתי ת סוציופתיה ע,אין_כינויים סייבר ע,אין_נטיות ביולוג ת,נקבה_ית ביולוגי ת ביולוגיה ע,אין_נטיות מיקרוביולוג ת,נקבה_ית מיקרוביולוגי ת מיקרוביולוגיה ע,אין_נטיות אטיולוגיה ע,אין_נטיות אטיולוגי ת # [4] writes ארכיאולוג, with an extra yod added in ktiv male. But I can't # understand the reasoning, and I think they are wrong. [4] agrees that the # vowelled form doesn't have a yod (after all, the English word starts with # "arche", not "archi"), and there is no academia rule that adds a yod for # a tsere in such a case. # [3] and [5] write ארכאולוגיה, with tsere, and no yod is added for niqqud- # less spelling. However, they also list a different spelling, with tsere # male (so the yod is already in the voweled spelling), which points to the # main entry (with the ordinary tsere). # This issue, on how to spell ארכאולוגיה, also pertains to many other words, # with prefixes like ארכאו, גאו, נאו, תאו, כוראו, וכד' - all are listed here: ארכאולוג ת,נקבה_ית ארכאולוגי ת ארכאולוגיה ע,אין_נטיות # [4] adds the same questionable yod also to the words כוראוגרפיה, גאוגרפיה, # and all other words starting with גאו. Again, [4] adds this yod only in # unvowelled spelling, and I can't understand which rule it uses to justify # this addition. [3] and [5] agree with the yod-less spelling I use here. # Note that because most Hebrew spell-checkers are based on [4] (Rav-Milim) # popularity counts (Google) usually, also in this case, agree with [4] - # but that doesn't say much. כוראוגרפיה ע כוראוגרפי ת כוראוגרף ת,נקבה_ית טוראדור ע גאוגרפי ת גאוגרפיה ע,אין_כינויים גאוגרף ת,נקבה_ית גאולוגי ת גאולוגיה ע,אין_נטיות גאולוג ת,נקבה_ית גאופיזיקה ע,אין_נטיות גאופיזי ת גאוצנטרי ת גאודזיה ע,אין_נטיות גאודזי ת גאופוליטיקה ע,אין_נטיות גאופוליטי ת גאופיט ע,אין_כינויים גאומגנטי ת גאומגנטיזם ע,אין_נטיות גאוסטציונרי ת גאוסינכרוני ת גאותרמי ת גאופיזיקה ע,אין_נטיות גאופיזיקאי ע,אין_כינויים גאופיזיקאית ע,אין_כינויים # The same problem for the theo ("תאו", "תאי") prefix: [4] consistently # adds a yod for the niqqud-less spelling, I don't know why. [3] and [5] don't. פנתאון ע פנתאיזם ע,אין_נטיות פנתאיסט ת,נקבה_ית פנתאיסטי ת תאולוגיה ע,אין_כינויים תאולוגי ת תאולוג ת,נקבה_ית תאוסופיה ע,אין_נטיות תאוסופי ת תאוקרטיה ע,אין_נטיות תאוקרטי ת אתאיסט ת,נקבה_ית אתאיסטי ת אתאיזם ע,אין_נטיות תאיסט ת,נקבה_ית תאיסטי ת תאיזם ע,אין_נטיות מונותאיזם ע,אין_נטיות מונותאיסטי ת מונותאיסט ת,נקבה_ית פוליתאיזם ע,אין_נטיות פוליתאיסטי ת פוליתאיסט ת,נקבה_ית # And again, for the "דאי" prefix: דאיזם ע,אין_נטיות דאיסט ת,נקבה_ית דאיסטי ת # And again, the same problem for the "neo" prefix: [4] consistently # adds a yod for the niqqud-less spelling, I don't know why. נאון ע,אין_נטיות נאולוגיזם ע,אין_כינויים נאוליתי ת # same issue for פלאו, [4] addes yod for niqqud-less spelling: פליאו פלאוליתי ת פלאונטולוג ת,נקבה_ית פלאונטולוגי ת פלאונטולוגיה ע,אין_נטיות # And again, the same problem for הומאופתיה, to which [4] adds yod for # niqqud-less spelling: הומיאופתיה הומאופתיה ע,אין_נטיות הומאופתי ת הומאופת ת,נקבה_ית # Should we spell תאוריה or תיאוריה? [4] gives vowelled spelling תאוריה, but # then gives vowel-less spelling תיאוריה - I don't understand what could # possibly be the reason for that. [3] derives, as expected, the vowel-less # spelling תאוריה (and has an entry תיאוריה pointing to the spelling תאוריה). # [2], however, lists תיאוריה with tsere male as the vowelled spelling (and # thus, naturally, the yod remains in the vowel-less spelling). # TODO: So which is the correct spelling here? תאוריה ע תאורטי ת תאורטיקן ת,נקבה_ית ארובי ת אנארובי ת ארובטי ת ארובטיקה ע,אין_נטיות ארוסול ע,אין_כינויים אווירונאוטיקה ע,אין_נטיות אווירונאוטי ת אווירודינמיקה ע,אין_נטיות אווירודינמי ת גרפולוג ת,נקבה_ית גרפולוגי ת גרפולוגיה ע,אין_נטיות אתנולוגי ת אתנולוגיה ע,אין_נטיות אתנוגרפי ת אתנוגרפיה ע,אין_נטיות אתנוגרף ת,נקבה_ית אתנוצנטרי ת אתנוצנטריות ע זברה ע # inflections of this are pretty strange... ג'ירפה ע מדליה ע מדליסט ע מדליסטית ע מיליונר ת,נקבה_ית מיליארדר ת,נקבה_ית מכני ת מכניות ע מכניקה ע,יחיד,אין_כינויי_יחיד נודניק ת,נקבה_ית קונדום ע טון ע טוני ת טונלי ת טונליות ע אטונלי ת אטונליות ע דיאטה ע דיאטטי ת #דיאט ע,אין_נטיות # Often replaces "דיאטטי" in product names. This is an anglicism that should perhaps be abolished, but it is very commonly used. Even worse, the spelling דיאט is far more common than the correct דייאט (which [4] also lists). דיאטן ת,נקבה_ית # תזונאי פטריוט ת,נקבה_ית פטריוטי ת פטריוטיות ע פטריוטיזם ע,אין_נטיות # alternative to פטריוטיות recognized by [4]. פמיניזם ע,אין_נטיות פמיניסט ת,נקבה_ית פמיניסטי ת פמיניסטיות ע פמיניזציה ע,יחיד,אין_כינויים # not in [4], but in [3]. דינוזאור ע אמבולנס ע אמבולטורי ת סדיזם ע,אין_נטיות סדיסט ת,נקבה_ית סדיסטי ת מזוכיזם ע,אין_נטיות מזוכיסט ת,נקבה_ית מזוכיסטי ת אידאל ע אידאלי ת אידאליסט ת,נקבה_ית אידאליסטי ת אידאליזציה ע אידאליזם ע,אין_נטיות פקולטה ע פקולטי ת דומיננטי ת רצסיבי ת טפט ע פסטורלי ת פסטורליות ע פסטורליה ע,יחיד # doesn't appear in [4], but often used. פניקה ע סימביוזה ע סימביוטי ת אטלס ע בלונדיני ת,עם,ארץ= בלונד ע,אין_נטיות # slang ברונטי ת #טורפד ע,נפרד=טורפדו,נסמך=טורפדו,ות # [3] says plural טורפדות. [2] says טורפדות or טורפדים טורפדו ע,אין_נטיות_יחיד,רבים=טורפדות # [3] says plural טורפדות. [2] says טורפדות or טורפדים אינטימי ת אינטימיות ע פריטטי ת קונסוליה ע קונסול ת,נקבה_ית קונסולרי ת # [4] adds aleph for niqqud-less spelling: קונסולארי. שריף ע,אין_כינויים דיאליזה ע פוליגרף ע אנליסט ע # occupation אנליסטית ע אולטימטיבי ת אולטימטום ע אמיר ע # Arab prince אמירות ע מוטציה ע מוטנט ע,אין_כינויים מוטנטי ת # not in [3] or [4], but I consider this a valid word. מוטיבציה ע וירטואוז ת,נקבה_ית וירטואוזי ת וירטואוזיות ע וירטואלי ת קבינט ע סטירה ע # It's interesting that while people often write סאטירה to reduce disambiguity, [4] uncharacteristicly does not agree and keeps סטירה even for niqqud-less spelling. סטירי ת סטיריקן ע סטיריקנית ע סצנה ע ספציפי ת ספציפיקציה ע לגיטימי ת לגיטימיות ע לגיטימציה ע ברוטלי ת ברוטליות ע ג'קוזי ע,אין_נטיות סטטוס ע קוקוס ע פנסיונר ת,נקבה_ית מוניטרי ת פטנט ע בונוס ע גנטיקה ע,אין_נטיות גנטי ת גנטיקאי ת,ם גנום ע,אין_נטיות איגואנה ע גיטרה ע גיטריסט ע גיטריסטית ע דילמה ע אותנטי ת אותנטיות ע אפקטיבי ת סוציאלי ת סוציאליזם ע,אין_נטיות סוציאליסטי ת סוציאליסט ת,נקבה_ית אנטיסוציאלי ת אסטרונאוט ע אסטרונאוטית ע אסטרולוג ע אסטרולוגית ע אסטרולוגי ת אסטרולוגיה ע,אין_נטיות אסטרונום ע אסטרונומית ע אסטרונומי ת אסטרונומיה ע,אין_נטיות אגרונום ע אגרונומית ע אגרונומי ת אגרונומיה ע,אין_נטיות ארגונומי ת # related to human-interface. Not to be confused with אגרונומי! ארגונומיה ע,אין_נטיות טרקטור ע טרקטוריסט ת,נקבה_ית # [5] also lists טרקוראי, as a more Hebrew variant, but nobody uses that. טרקטורון ע פירמידה ע # Many people pronounce the pe with segol, not chirik, but this is the accepted spelling, and also listed by the academia קולינרי ת קולינריה ע,אין_נטיות טנדר ע כספומט ע אימפריה ע אימפריאלי ת אימפריאליסטי ת # [3] doesn't have this, but it has אימפריאליזם, so the extra א is justified. אימפריאליסט ת,נקבה_ית אימפריאליזם ע,אין_נטיות אימפרסיוניסטי ת אימפרסיוניזם ע,אין_נטיות אימפרסיוניסט ת,נקבה_ית אקספרסיוניסטי ת אקספרסיוניזם ע,אין_נטיות אקספרסיוניסט ת,נקבה_ית לסבי ת # [3] recognizes only לסבית. But think for example: "קשר לסבי". הומוסקסואל ת,נקבה_ית הומוסקסואלי ת הומוסקסואליות ע,יחיד הומופוב ת,נקבה_ית הומופוביה ע,אין_נטיות הומו ע,רבים=הומואים,אין_כינויים # colloquial for הומוסקסואל אגורפוביה ע,אין_נטיות אקרופוביה ע,אין_נטיות הטרוסקסואל ת,נקבה_ית הטרוסקסואלי ת הטרוסקסואליות ע,יחיד ביסקסואלי ת ביסקסואליות ע,יחיד ביסקסואל ת,נקבה_ית טרנסקסואל ת,נקבה_ית טרנסקסואלי ת טרנסקסואליות ע,יחיד פורנוגרפי ת פורנוגרפיה ע,אין_כינויים פורנו ע,אין_נטיות אפיפיור ע אפיפיורות ע אפיפיורי ת פדרלי ת פדרציה ע קונפדרציה ע אובססיה ע אובססיבי ת אופרה ע אופראי ת אופרטה ע אטלנטי ת אינטנסיבי ת אינטנסיביות ע אקוסטיקה ע,אין_נטיות אקוסטי ת בליסטיקה ע,אין_נטיות בליסטי ת #TODO: other than the fact that the plural of גטו is גטאות, I can't find any #evidence of what the rest of the inflections should look like. The following #ugly tries are what I would guess could be the correct inflections: גטוא ע,נפרד=גטו,נסמך=גטו,רבים=גטאות # inflected like "תאו" #גטו ע,רבים=גטאות,אין_נטיות_יחיד #גטוא ע,נפרד=גטו,נסמך=גטו,ות,אבד_ו קימונוא ע,נפרד=קימונו,נסמך=קימונו אבוקדוא ע,נפרד=אבוקדו,נסמך=אבוקדו,רבים=אבוקדות # the plural is according to [3] פרסק ע,נפרד=פרסקו,נסמך=פרסקו,ים,אות,אין_כינויים גרף ע גרפי ת גרפיקה ע,אין_כינויים # plural is colloquial # currencies: דולר ע,אין_כינויים דולרי ת דולריזציה ע,אין_נטיות סנט ע,אין_כינויים # cent לירה ע,אין_כינויים שטרלינג ע,אין_נטיות דינר ע,אין_כינויים רובל ע,אין_כינויים אירו ע,אין_נטיות רופיה ע,אין_כינויים ין ע,אין_כינויים דרכמה ע,אין_כינויים פני ע,אין_נטיות זלוטי ע,רבים=זלוטים,אין_כינויים סנט ע,אין_נטיות # Senate. [4] and [3] agree to spell this without aleph, but the spelling סנאט appears by mistake in [4]'s explanation text. סנטור ע סנטורית ע הורמון ע הורמונלי ת טרגדיה ע טרגי ת טרגיות ע טרופי ת טרוריסט ת,נקבה_ית טרוריסטי ת טרור ע,אין_נטיות טרוריזם ע,אין_נטיות # It's not clear to me if the distinction between "terror" and "terrorism" (which m-w defines as the "systematic use of terror") exists in Hebrew. The word טרוריזם is definately used much less frequently than טרור. [5] considers both correct, with the same meaning distinction as above. טריטוריה ע טריטוריאלי ת טריטוריאליזם ע,אין_נטיות # Israeli history term טריטוריאליסטי ת # Israeli history term טריטוריאליסט ת # Israeli history term אקסטריטוריאלי ת ליברלי ת ליברליות ע ליברליזם ע,אין_נטיות # alternative to ליברליות. ליברל ת,נקבה_ית ליברליזציה ע,אין_נטיות מדוזה ע מסיבי ת מסיביות ע סימפטום ע סימפטומטי ת סינדרום ע רפובליקה ע סטטיסטיקה ע,אין_כינויים # [4] allows the plural, [3] doesn't. I'll allow it. סטטיסטי ת סטטיסטיקאי ע סטטיסטיקאית ע גרפיקאי ע גרפיקאית ע ספונטני ת ספונטניות ע פיג'מה ע אנציקלופדיה ע # note segol, not chirik, in aleph. אנציקלופדי ת וטרינר ע וטרינרית ע וטרינרי ת וטרינריה ע,אין_נטיות אנזים ע אנזימטי ת אטמוספרה ע # The spelling אטמוספירה is far, far more common on the web, but unjustified. אטמוספרי ת סטרטוספרה ע,אין_נטיות ביוספרה ע,אין_נטיות המיספרה ע,אין_כינויים דיסקרטי ת דיסקרטיות ע,יחיד טלסקופ ע טלסקופי ת # Unlike what [5] says, this adjective has nothing to do with טלסקופ. It describes something which can be extended, opens up and becomes longer (e.g., car antenna). מיקרוסקופ ע מיקרוסקופי ת מיקרוסקופיה ע,יחיד,אין_כינויים מקרוסקופי ת פילוסופיה ע # NOTE that [3] also allows (and even prefers פילוזופיה). I and rav-milim don't like that form. פילוסופי ת פילוסוף ע פילוסופית ע פרימיטיבי ת פרימיטיביות ע פרימיטיביזם ע,אין_נטיות פרימיטיביסט ת,נקבה_ית פרימיטיביסטי ת,נקבה_ית ויטמין ע ניאצין ע,אין_נטיות תיאמין ע,אין_נטיות אקזוטי ת אקורדיון ע טרומבון ע הוריקן ע מיקרוגל ע קונצרט ע קונצרטי ת # [4] says this is an uncommon variant of קונצרטנטי. But Google shows both are common. קונטרבס ע קונצרטנטי ת קונצ'רטוא ע,נפרד=קונצ'רטו,נסמך=קונצ'רטו,רבים=קונצ'רטאות # This is [3]'s inflection קונצ'רטו ע,אין_כינויים,רבים=קונצ'רטי קזינוא ע,נפרד=קזינו,נסמך=קזינו קוסמי ת קיוסק ע קיוסקאי ע קיוסקאית ע # Various dictionaries disagree about the singular of קלישאות (they all agree # on the plural). [2], [3] and [5] say קלישה with segol (just like the English # and French pronounciation). [4] vowels קלישה with kamats, but points to the # preferred spelling קלישאה. [5] also lists קלישאה, but points from it to the # spelling it prefers (קלישה with segol). # Note that while both [2,3,5] agree on the segol on the lamed, they # disagree on the gender - [2,5] go with the strange decision that it is # feminine. If it were feminine, it should have kamats, not segol! # TODO: reconsider the gender of this word. קלישה ע,סגול_ה,אות # Despite the fact that except [4], dictionaries don't like the spelling # קלישאה, it is the pronunciation most often used in modern speech, and is # the most intuitive given the plural קלישאות. It is also vastly more popular # than קלישה on a Google search. So for now (until we find a clear Academia # decision on this word), we'll accept that spelling as well: קלישאה ע # alternative spelling to קלישה רזומה ע,סגול_ה,אין_נטיות קקטוס ע קתדרלה ע רדיקלי ת רדיקליות ע רדיקל ע,אין_כינויים רדיקלית ע,אין_כינויים רדיותרפיה ע,יחיד רדיואקטיבי ת רדיואקטיביות ע ארומתרפיה ע,יחיד ארומתרפי ת כימותרפיה ע,יחיד כימותרפי ת רטוריקה ע,אין_כינויים # I don't like the plural, and [3] doesn't list it, but [4] does. רטורי ת # normally used in the phrase שאלה רטורית רטוריקן ת,נקבה_ית # not in [3] or [4], but in use and I think it is valid. שימפנז ע # see also שימפנזה. שימפנזה ע # [3] and [4] agree that the standard form is שימפנז. [3] considers the form "שימפנזה" baby-talk, but [3] calls it both a כינוי רווח, and the feminine form. Strangely, in Google שימפנזה is vastly more popular than שימפנז, but the more common plural is שימפנז. We'll allow this variant. גורילה ע אורנגאוטן ע פומה ע אורתופדי ת אורתופד ע אורתופדית ע אורתופדיה ע,יחיד,אין_כינויים אורולוגי ת אורולוג ע אורולוגית ע אורולוגיה ע,יחיד,אין_כינויים גינקולוגי ת גינקולוג ע גינקולוגית ע גינקולוגיה ע,יחיד,אין_כינויים # "neu*" words: # According to [3], the foreign word-fragment "neuro" (meaning nerve) should # be transliterated into standard Hebrew as נירו (tsere in nun), not נוירו. # This means we should write נירולוג, not נוירולוג, and so on. There is also # an explicit Academia decision (mentioned on their site) to this effect: # התנועה שמקורה ב- eu נכתבת בצירי מלא. למשל אירופה, רימטיזם, נירולוגיה, # ניטרלי, איקליפטוס # [4] prefers the opposite, but is less consistent. It allows both forms, but # all נירו forms are mere pointers to the נוירו forms. In one case (נוירוטי) # the description mentions that the standard form is the נירו form. For the # word נוירון, [4] doesn't even list the alternative נירון. # # Unfortunately, the writers on the Internet (as judged by Google) have # an overwhelming preference for the נוירו form that the Academia doesn't # accept. For example נוירונים (as in the phrase רשתות נוירונים, neural # networks) is 200 times more popular than נירונים! People also prefer to # pronounce it with נוירו, and not tsere-male. # # But nevertheless, because we aim to be (at least for Hspell 1.0) 100% # Acadmia compliant, I will go with the Academia's decision here of נירו. # This decision is also more consistent with other words in which neu is # written ני (see below). # TODO: reconsider this decision. נירולוג ע נירולוגית ע נירולוגי ת נירולוגיה ע,יחיד,אין_כינויים נירון ע # biology term נירוזה ע נירוטי ת # These are neu* words for which we chosen ני, not נוי, because [4] also # agrees that this is the correct form. This doesn't always mean that the # public prefers this form as well... For example, Google turns up more # נויטרון than ניטרון (but the number difference is not overwhelming). ניטרלי ת # [4] adds aleph for niqqud-less spelling: ניטראלי. ניטרליות ע ניטרון ע,אין_כינויים # Other problematic "eu" words. [3] and [4] agree that the vowlled spelling of # "feudal" is פאודל. However, [4] adds yod to the niqqud-less spelling - # פיאודל, I have no idea why. # TODO: I don't understand why the Academia's "eu" decision (see neu above) # doesn't apply here - if it did, we would need to write פידלי, etc. פאודל ת,נקבה_ית פאודלי ת פאודליות ע פאודליזם ע,אין_נטיות # [4] has the archaic-looking spelling פרמצבטי. TODO: doesn't the Academia's eu decision make this פרמציטי? פרמצבטי ת פרמצבטיקה ע,אין_נטיות # [3] prefers פסידונים, [4] prefers פסבדונים. Apparently, the latter is more # commonly used. I'll allow both for now. TODO: revisit this decision פסידונים ע,אין_כינויים פסבדונים ע,אין_כינויים פסידו ע,אין_נטיות # [4] prefers לויקמיה, [3], [4] and [5] list ליקמיה as the standard spelling. # In Google, the spellings לוקימיה, לוקימיה, and לויקמיה are equally popular, # and hardly anyone use ליקימיה, which unfortunately is the Academia spelling, # and therefore the one we choose. TODO: reconsider this decision. ליקמיה ע,אין_נטיות רימטיזם ע,אין_נטיות # [4] also lists ראומטיזם, but also prefers רימטיזם. איקליפטוס ע # Note: [3] and [4] insist on this tsere maleh, and there is an explicit Academia decision to this effect (search איקליפטוס in this file). The vast majority of Hebrew laypeople will disagree, and also pronounce a tsere chaser. איפוריה ע # Again, according to the Academia, and [3] and [4], this has tserei male, but everyone writes and says אופוריה. איפורי ת היריסטיקה ע # This is the Academia's spelling for "eu", but [4] prefers יוריסטיקה and the popular spelling (and pronunciation) is actually היוריסטיקה. היריסטי ת פרמקולוגי ת פרמקולוגיה ע,אין_נטיות פרמקולוג ת,נקבה_ית אפידמיולוג ע אפידמיולוגית ע אפידמיולוגי ת אפידמיולוגיה ע,אין_נטיות אפידמיה ע אפידמי ת המטולוג ע המטולוגית ע המטולוגי ת המטולוגיה ע,אין_נטיות קרדיולוגיה ע,יחיד,אין_כינויים קרדיולוג ע קרדיולוגית ע קרדיולוגי ת נפרולוג ע נפרולוגית ע נפרולוגי ת פתולוג ע פתולוגית ע פתולוגי ת פתולוגיה ע,אין_כינויים סוציולוג ע סוציולוגית ע סוציולוגי ת סוציולוגיה ע,אין_נטיות אונקולוג ע אונקולוגית ע אונקולוגי ת אונקולוגיה ע,אין_נטיות אימונולוג ע אימונולוגית ע אימונולוגי ת אימונולוגיה ע,אין_נטיות אוטואימוני ת אנקדוטה ע אנקדוטי ת אפוטרופוס ע אפוטרופוסית ע אפוטרופסות ע,יחיד אפוקליפסה ע אפוקליפטי ת אתני ת בוטני ת בוטניקה ע,אין_נטיות בוטנאי ע,אין_כינויים בוטנאית ע,אין_כינויים בוטיק ע ביוגרפיה ע ביוגרפי ת ביוגרף ע ביוגרפית ע אוטוביוגרפיה ע אוטוביוגרפי ת דונם ע דרסטי ת וילה ע חווילה ע # literary alternative to וילה לורד ע לימונדה ע,יחיד לימוזינה ע מדיטציה ע מדיטטיבי ת # not in [3] or [4], but a word. מודט ת,נקבה_ית,נקבה_ת # [3] says מודטת, [4] says מודטית and both appear to be in use (I prefer מודטית). מטאור ע מטאורי ת מטאוריט ע מיסיונר ע מיסיונרית ע מיסיונרי ת מיסיון ע מיסטיקה ע,אין_נטיות מיסטי ת מיסטיקן ע מיסטיקנית ע סאונה ע # [4] adds yod in niqqudless spelling in סטראו, which becomes סטריאו סטראוטיפ ע סטראוטיפי ת סטראופוני ת סטראוסקופ ע,אין_כינויים סטראו ע,אין_נטיות מונופוני ת סימפוזיון ע סימפוניה ע סימפוני ת סימפתי ת # [4] says סימפטי is also a variant spelling. סימפתיה ע # [4] says the usual spelling (but not the official one) is סימפטיה אמפתיה ע # note that [4] also recognizes אמפטיה as a variant. I don't know why. אמפתי ת אנטיפתי ת אנטיפתיה ע,יחיד אנטיפת ת,נקבה_ית # colloquial אפתיה ע,יחיד אפתי ת סכיזופרניה ע,אין_נטיות סכיזופרני ת סכיזופרן ת,נקבה_ית סלמון ע סמינר ע סמינריון ע סמינריוני ת פוליפ ע פולימר ע פולימרי ת פולימריזציה ע,יחיד פוטוגני ת פוטומונטז' ע פילהרמוני ת פיצה ע פיקנטי ת פיקניק ע פלגמטי ת פלגמטיות ע ציני ת ציניות ע ציניקן ת,נקבה_ית קולופון ע קולוסלי ת קולוניאלי ת קולוניאליזם ע,אין_נטיות קולוניאליסטי ת קולוניאליסט ת,נקבה_ית אנטילופה ע אלכוהוליסט ת,נקבה_ית אלכוהוליזם ע,אין_נטיות מתנול ע,אין_נטיות אתנול ע,אין_נטיות אמפולה ע אמפיבי ת אמפירי ת אמפיריציזם ע,אין_נטיות אמפיריציסט ת,נקבה_ית אנאלפבית ת,נקבה_ית אנאלפביתיות ע,יחיד אנומליה ע אנומלי ת # not recognized by [3] or [4], but is present in [2]. אנכרוניסטי ת אנכרוניזם ע,אין_כינויים אסוציאציה ע אסוציאטיבי ת דיסוציאציה ע דיסוציאטיבי ת אתיקה ע,אין_נטיות אתי ת אבולוציה ע אבולוציוני ת רבולוציה ע רבולוציוני ת רבולוציונר ע,אין_כינויים רבולוציונרית ע,אין_כינויים אדמירל ע אדמירלית ע אדמירלות ע,יחיד # [4] lists this spelling, with two yods added for ktiv male and not present # in ktiv chaser. It isn't clear what kind of Academia rules allows adding # a yod in this case... Rather, the yods are probably present in the # transliteration. אינתיפאדה ע,יחיד,אין_כינויי_יחיד # [3] lists this spelling, even in ktiv chaser. I don't understand why. The # Academia rules for foreign words dictate that extra yods should be added # already to the ktiv chaser - I don't belive there is exception for this # for Arabic words (like there is an exception saying we should add א). # Anyway, even if there were such an exception, there must be a yod after # the ת in vowel-less spelling... #אנתפאדה # similarly for ג'יהאד and אימאם - [3] lists ג'האד and אמאם, and again I # went against its decisions. #ג'האד #אמאם ג'יהאד ע,אין_נטיות אימאם ע חיזבאללה ע,אין_נטיות חמאס ע,אין_נטיות אנמיה ע,אין_נטיות אנמי ת אנתולוגיה ע אפוס ע באג ע # Transliteration of English "bug". Note: [3] doesn't recognize this word, [4] calls it slang. It also doesn't fit well with the spelling rules (the added aleph is useless) בירוקרטיה ע בירוקרטי ת בירוקרט ת,נקבה_ית ברוקר ע ברוקרית ע צימר ע מאוזולאום ע # [3] writes מאוזולאון, and [4] acknowledges that spelling but prefers מאוזולאום, and so do most writers (in fact, there's not even one match in Google for the spelling with ון.) [4] adds yod for niqqudless spelling, I don't know why: מאוזוליאום. קונסרבטוריון ע # [3] has only קונסרבטוריון, [4] also prefers it, but allows קונסרבטוריום as well. ג'נטלמן ע ג'נטלמני ת גרנדיוזי ת פומפוזי ת דיאלקטיקה ע,אין_נטיות דיאלקטי ת אקלקטי ת דיאכרוני ת סינכרוני ת סינכרוניזציה ע,אין_נטיות דיכוטומי ת דיכוטומיה ע דידקטיקה ע,אין_נטיות דידקטי ת דיודה ע # electronics term. דיסוננס ע דיסוננטי ת דיפרנציאלי ת דיפרנציאל ע דיפרנציאציה ע,יחיד אודיטוריום ע אוטיסט ת,נקבה_ית אוטיסטי ת אוטיזם ע,אין_נטיות אוריינטציה ע אזוטרי ת אזוטריה ע,אין_נטיות אימננטי ת אינטרקום ע אינהרנטי ת אינסטינקט ע אינסטינקטיבי ת אקטואר ע אקטוארית ע אקטוארי ת אקטואריה ע,אין_נטיות ביומטרי ת אופורטוניסטי ת אופורטוניסט ת,נקבה_ית אופורטוניזם ע,אין_נטיות בונקר ע מלון ע # melon מרתון ע מרתוני ת סיזיפי ת פיסטוק ע # [3] spells this פסטוק, [4] פיסטוק (with the yod already appearing in ktiv menukad). I decided to agree with [4]: [3]'s spelling is sensible if this was a Hebrew word, but I believe it isn't - it comes from English Pistachio or Arabic fustuk. Moreover, even if the "i" sound came directly from Arabic (it doesn't), in order to be milra Arabic would have added a yod as well. צ'ינצ'ילה ע שינשילה ע # considered the "proper" form of צ'ינצ'ילה סמנטי ת סמנטיקה ע,אין_נטיות פלורליזם ע,אין_נטיות פלורליסטי ת פלורליסט ת,נקבה_ית אוקסימורון ע # usually not inflected אליבי ע,רבים=אליבים אלפקה ע אנטומיה ע אנטומי ת אנתרופולוג ע אנתרופולוגית ע אנתרופולוגי ת אנתרופולוגיה ע,אין_נטיות אנתרופוצנטרי ת אנתרופומורפי ת אנתרופומורפיזם ע,אין_נטיות אנתרופוסופי ת אנתרופוסופיה ע,אין_נטיות אסרטיבי ת אסרטיביות ע נוטריון ע נוטריונית ע נוטריוני ת אידיליה ע אידילי ת ח'ליף ע ח'ליפות ע רזולוציה ע דיפוזיה ע אקרילי ת אקריליק ע,אין_נטיות אקרילן ע,אין_נטיות ארקטי ת אתוס ע אתלט ת,נקבה_ית אתלטיקה ע,אין_נטיות אתלטי ת אתלטיות ע בבון ע בולשביק ת,נקבה_ית # The spelling בולשוויק is also found, but less common. בולשביקי ת בולשביזם ע,אין_נטיות ברון ת,נקבה_ית בריזה ע בריסטול ע ג'ונגל ע גילדה ע גיליוטינה ע גלדיולה ע דולפינריום ע דיסקוטק ע דיסקו ע,אין_נטיות דיקן ע דיקנית ע דמגוג ת,נקבה_ית דמגוגי ת דמגוגיה ע,אין_נטיות הוליסטי ת היגיינה ע,יחיד היגייני ת היפותטי ת היפותזה ע אגנוסטי ת אגנוסטיות ע # אגנוסטיציזם אגנוסטיציזם ע,אין_נטיות אגנוסטיקן ת,נקבה_ית גנוסטי ת גנוסטיקה ע,אין_נטיות אוברול ע # strangly used as translation of both overall (סרבל) and overhaul. אונטולוגי ת # philosophy term אונטולוגיה ע,אין_נטיות # philosophy term אפיסטמולוגי ת # philosophy term אפיסטמולוגיה ע,אין_נטיות # philosophy term אורטוריה ע איזוטופ ע אינדוקטרינציה ע אינהלציה ע # comes from "inhalation", but now means a type of medical treatment. אינטגרל ע # math term אינטגרבילי ת # math term אינטגרביליות ע # math term אינטונציה ע איקונין ע,רבים=איקונות אינסטרומנטלי ת אלקטיבי ת # usually said about medical procedure אלקטרודה ע אלקטרוכימי ת אלקטרוכימיה ע,אין_נטיות אמברגו ע,אין_נטיות אמפליטודה ע # physics term אנדרואיד ע אנטיספטי ת אנטיתזה ע אנקונדה ע אסטניס ת,נקבה_ית # From greek, but note no added yod because it was adopted early, not recently. טוטליטרי ת טוטליטריות ע טוטליטריזם ע,אין_נטיות # alternative to טוטליטריות אפלטוני ת אפריורי ת # also adverb, by the way. אינטרפולציה ע # math term אקסטרפולציה ע # math term אקספוזיציה ע אקספרסיבי ת אריסטוטלי ת # philosophy term ארכיפלג ע בוהמה ע בוהמי ת בוהמיין ת,נקבה_ית בולדוג ע דוברמן ע פודל ע בוקסר ע פיטבול ע פינצ'ר ע טרייר ע,אין_כינויים # kind of dog רוטוויילר ע שנאוצר ע צ'יוואווה ע דלמטי ת פקינז ע בסון ע פגוט ע,אין_כינויים # archaic name for בסון. פרפרזה ע # [4] adds aleph in niqqud-less spelling: פרפראזה. גנרטור ע גרוטסקה ע גרוטסקי ת דואלי ת דואליות ע דואליזם ע,אין_נטיות דואליסטי ת דואליסט ת,נקבה_ית # not in [3] or [4], but a perfectly good word. דוקטורנט ע דוקטורנטית ע דטרמיניסטי ת דטרמיניזם ע,אין_נטיות דיסגרפיה ע,אין_כינויים דיסגרפי ת דקדנטי ת דקדנס ע,אין_נטיות דרבוקה ע דרוויש ע הולוגרמה ע הולוגרפיה ע,אין_נטיות הולוגרפי ת הומניסט ת,נקבה_ית הומניסטי ת הומניזם ע,אין_נטיות הוספיס ע הורוסקופ ע הידרולי ת # both [3] and [4] claim that this is the correct spelling. הידראולי is colloquial הידרוליקה ע,אין_נטיות היסטוריוגרפי ת היסטוריוגרפיה ע,אין_נטיות היפודרום ע היפופוטם ע אנופלס ע היפנוזה ע היפנוטי ת היפראקטיבי ת היפראקטיביות ע הלניסט ת,נקבה_ית הלניסטי ת הלניזם ע,אין_נטיות הלני ת # a rare alternative for הלניסטי הרואי ת הרואיות ע אינטרפול ע,אין_נטיות סלנג ע,אין_נטיות סלנגי ת ביקיני ע,אין_כינויים,רבים=ביקינים אנטיביוטיקה ע,אין_נטיות אנטיביוטי ת פרוביוטי ת אנטיגן ע ויברטור ע ויולה ע # Supposedly, the Hebrew alternative is כונרת, but nobody uses that... ויולן ת,נקבה_ית יגואר ע,אין_כינויים ג'מוס ע,אין_כינויים פלמינגו ע,אין_נטיות קנגורו ע,אין_כינויים,רבים=קנגורואים פנדה ע אסקפיזם ע,אין_נטיות # [4] also recognizes a variant אסקיפיזם אסקפיסטי ת אורקל ע,אין_נטיות אנטגוניזם ע,אין_נטיות אנטגוניסטי ת אנטגוניסט ת,נקבה_ית אפרטהייד ע,אין_נטיות שמפו ע,אין_נטיות בומרנג ע אנטרופיה ע,אין_נטיות ונדל ת,נקבה_ית ונדליזם ע,אין_נטיות ונדליסט ת,נקבה_ית # Today, this and not ונדל is used for the new sense. ונדליסטי ת זואולוגיה ע,אין_נטיות # "זאולוגיה" is a common incorrect spelling. זואולוגי ת זואולוג ת,נקבה_ית זומבי ע,אין_כינויים,רבים=זומבים זיגוטה ע,אין_כינויים # biology term זיגזג ע ג'ינגל ע # The Academia translated this to זמריר זמש ע,אין_נטיות # type of leather, from German. חוליגן ת,נקבה_ית חוליגניות ע חוליגני ת חוליגניזם ע,אין_נטיות # alternative of חוליגניות חונטה ע חלטורה ע # colloquial חסקה ע # colloquial. Note that despite the segol before the he, this is feminine and plural is ות. חרקירי ע,אין_נטיות טבו ע,אין_נטיות # note no extra aleph needed (not טאבו). אלטרואיזם ע,אין_נטיות אלטרואיסט ת,נקבה_ית אלטרואיסטי ת דדאיזם ע,אין_נטיות קוביזם ע,אין_נטיות קוביסטי ת קוביסט ת,נקבה_ית # [3] prefers אקסיסטנציאליזם, with ס. [4] allows both, but prefers ז. I do too. אקזיסטנציאליזם ע,אין_נטיות אקזיסטנציאליסטי ת אקזיסטנציאליסט ת,נקבה_ית אקזיסטנציאלי ת דרוויניזם ע,אין_נטיות דרוויניסט ת,נקבה_ית דרוויניסטי ת פרוידיאני ת אדיפלי ת # [4] adds aleph for niqqud-less spelling: אדיפאלי. קפקאי ת ניוטוני ת קופרניקאי ת גאוסי ת שייקספירי ת איקונוגרפיה ע,אין_נטיות איקונוגרפי ת טאואיזם ע,אין_נטיות טאואיסטי ת קונפוציאני ת קונפוציאניזם ע,אין_נטיות # Some people prefer קונפוציוניזם, but this form is more natural with the adjective above. טאוטולוגיה ע # logic term טאוטולוגי ת # logic term טונדרה ע,אין_כינויים טוניקה ע # the dictionaries say there's a Hebrew word for this, ירכית. טוגה ע # Roman clothes. don't confuse with תוגה! TODO: maybe no inflections for this word? טוטו ע,אין_נטיות טוטם ע טוסט ע טוסטר ע טופו ע,אין_נטיות אדרנלין ע,אין_נטיות אינסולין ע,אין_נטיות אסטרוגן ע,אין_נטיות פיטואסטרוגן ע,אין_כינויים טסטוסטרון ע,אין_נטיות דופמין ע,אין_נטיות המוגלובין ע,אין_נטיות ניקוטין ע,אין_נטיות מריחואנה ע,אין_נטיות חשיש ע,אין_נטיות אופיום ע,אין_נטיות מורפיום ע,אין_נטיות קוקאין ע,אין_נטיות מתדון ע,אין_נטיות הרואין ע,אין_נטיות אקסטזי ע,אין_נטיות טופולוגיה ע,אין_נטיות # math term טופולוגי ת # math term קומבינטוריקה ע,אין_נטיות # math term טופי ע,אין_נטיות טורבינה ע טוש ע טיגריס ע טיפוגרפיה ע,אין_נטיות טיפוגרפי ת טלנובלה ע טלפרינטר ע טלפתיה ע,אין_נטיות טלפתי ת טלקומוניקציה ע,אין_נטיות טלקום ע,אין_נטיות # An established shortening of טלקומוניקציה (following English). טמפון ע טנגו ע,אין_נטיות סמבה ע,אין_נטיות טנור ע,אין_נטיות טנור ע,אין_כינויים # tenor singer בס ע,אין_כינויים # plural is slang בריטון ע,אין_כינויים טנטטיבי ת טקטוני ת טקטוניקה ע,יחיד,אין_כינויי_יחיד # not in [3] or [4], but in use. טקילה ע,אין_כינויים # The plural is used colloquially, for "glasses of tequila", but may also be used more formally as "types of tequila", just as we have the plurals יינות or בירות. [5] also lists this plural. טקסונומיה ע,אין_נטיות # note: Inflection used sometimes in specific areas (like CS). טקסונומי ת טרובדור ע טרויקה ע,אין_כינויים טרול ע,אין_כינויים טריו ע,אין_נטיות פליז ע,אין_נטיות # Chemical elements (international names), except those appearing elsewhere # in this file. # מימן דאוטריום ע,אין_נטיות טריטיום ע,אין_נטיות הליום ע,אין_נטיות ליתיום ע,אין_נטיות בריליום ע,אין_נטיות # בור # פחמן # חנקן # חמצן פלואור ע,אין_נטיות הפלרה ע,יחיד # נאון # נתרן מגנזיום ע,אין_נטיות אלומיניום ע,אין_נטיות # or חמרן סיליקון ע,אין_נטיות # or צורן # זרחן # גפרית כלור ע,אין_נטיות כלורי ת # usually in the phrase נתרן כלורי. הכלרה ע,יחיד ארגון ע,אין_נטיות # אשלגן # סידן סקנדיום ע,אין_נטיות טיטניום ע,אין_נטיות ונדיום ע,אין_נטיות כרום ע,אין_נטיות מנגן ע,אין_נטיות # ברזל קובלט ע,אין_נטיות ניקל ע,אין_נטיות # נחושת # אבץ גליום ע,אין_נטיות גרמניום ע,אין_נטיות ארסן ע,אין_נטיות זרניך ע,אין_נטיות # old name for ארסן סלניום ע,אין_נטיות ברום ע,אין_נטיות ברומי ת ברומיד ע,אין_כינויים קריפטון ע,אין_נטיות רובידיום ע,אין_נטיות סטרונציום ע,אין_נטיות איטריום ע,אין_נטיות זירקוניום ע,אין_נטיות ניוביום ע,אין_נטיות מוליבדן ע,אין_נטיות טכנציום ע,אין_נטיות רותניום ע,אין_נטיות רודיום ע,אין_נטיות פלדיום ע,אין_נטיות # כסף קדמיום ע,אין_נטיות אינדיום ע,אין_נטיות # בדיל אנטימון ע,אין_נטיות טלור ע,אין_נטיות # יוד קסנון ע,אין_נטיות צזיום ע,אין_נטיות בריום ע,אין_נטיות לנתן ע,אין_נטיות לנתניד ע,אין_כינויים לנתנידי ת צריום ע,אין_נטיות פרסאודימיום ע,אין_נטיות נאודימיום ע,אין_נטיות פרומתיום ע,אין_נטיות סמריום ע,אין_נטיות אירופיום ע,אין_נטיות גדוליניום ע,אין_נטיות טרביום ע,אין_נטיות דיספרוסיום ע,אין_נטיות הולמיום ע,אין_נטיות ארביום ע,אין_נטיות תוליום ע,אין_נטיות איטרביום ע,אין_נטיות לוטציום ע,אין_נטיות הפניום ע,אין_נטיות טנטלום ע,אין_נטיות טונגסטן ע,אין_נטיות רניום ע,אין_נטיות אוסמיום ע,אין_נטיות אירידיום ע,אין_נטיות פלטינה ע,אין_נטיות # זהב # כספית תליום ע,אין_נטיות # עופרת ביסמות ע,אין_נטיות # [4] prefers ביסמות but allows ביסמוט, while [3] allows only ביסמוט. Which should we have? Looking at the English or "Latin" spelling Bismuth, the transliteration should be with ת. However, m-w.com claims this comes from the German Wismut - so perhaps a ט can also be explained... For now we'll go with the usual transliteration rule - th becomes ת. פולוניום ע,אין_נטיות אסטטין ע,אין_נטיות רדון ע,אין_נטיות פרנציום ע,אין_נטיות רדיום ע,אין_נטיות אקטיניום ע,אין_נטיות אקטיניד ע,אין_כינויים אקטינידי ת תוריום ע,אין_נטיות פרוטאקטיניום ע,אין_נטיות אורניום ע,אין_נטיות נפטוניום ע,אין_נטיות פלוטוניום ע,אין_נטיות אמריציום ע,אין_נטיות קיריום ע,אין_נטיות ברקליום ע,אין_נטיות קליפורניום ע,אין_נטיות איינשטייניום ע,אין_נטיות פרמיום ע,אין_נטיות מנדלביום ע,אין_נטיות נובליום ע,אין_נטיות לורנציום ע,אין_נטיות אוזון ע,אין_נטיות אמוניה ע,אין_נטיות טרילוגיה ע טרימסטר ע סמסטר ע # note no added yod. there's segol or tsere in samech, not chirik. טרמיט ע טרמפולינה ע טרפנטין ע,אין_נטיות טרמפ ע # considered slang, but I am not aware of an official alternative. טרמפיסט ת,נקבה_ית # ditto טרמפיאדה ע # ditto טרנזיט ע,אין_נטיות # kind of slang for type of car... The old meaning same as English "transit" is archaic. טרנזיסטור ע טרנספורט ע,אין_כינויים # nowadays, usually has connotations of transport of Jews during the holocaust. טרנספר ע,אין_נטיות # nowadays, means only transfer of population. ג'ודו ע,אין_נטיות #ג'ודוקא ת,נקבה_ית,יחיד=ג'ודוקה # This is the inflection according to [4] ג'ודוקא ת,נקבה_ית # This is the inflection according to popular usage (Google) ג'ודאי ע ג'ודאית ע יקינתון ע # sometimes also spelt יקינטון # כולרה is the modern spelling for cholera. The old spelling חלירע or חולירע # is considered incorrect by [3] and archaic by [4]. However, the spelling # חולירע (with a ו) is often used as a collquial term for something bad # (not the specific disease), and is even used in "plural" - חולירות. TODO: # reconsider adding these forms as well. כולרה ע,אין_נטיות דפיברילטור ע דפיברילציה ע,יחיד רנטגן ע,אין_נטיות ספורט ע,אין_נטיות סקי ע,אין_נטיות טניס ע,אין_נטיות בדמינטון ע,אין_נטיות גולף ע,אין_נטיות ברידג' ע,אין_נטיות דמקה ע,אין_נטיות שחמט ע,אין_נטיות דומינו ע,אין_נטיות בלט ע,אין_נטיות איידס ע,אין_נטיות # [3] spells אידס with tsere maleh and one yod: אידס. [4] spells with shwa in yod, and yod is doubled לייזר ע,אין_כינויים # [3] doesn't double the yod with shwa: ליזר. [4] doubles the yod: לייזר גייזר ע,אין_כינויים # [3] doesn't double the yod with shwa: גיזר. [4] doubles the yod: גייזר אלצהיימר ע,אין_נטיות כימרה ע הומור ע,אין_נטיות הומורסקה ע הומוריסטי ת הומוריסט ת,נקבה_ית אסבסט ע,אין_נטיות # [4] prefers the spelling אזבסט, but אסבסט is more popular. בטון ע,אין_נטיות אספלט ע,אין_נטיות כלורופיל ע,אין_נטיות כלורופורם ע,אין_נטיות כלורופלסט ע בנזין ע,אין_נטיות ניילון ע,אין_נטיות דקרון ע,אין_נטיות ג'ינס ע,אין_נטיות קורדרוי ע,אין_נטיות דינמיט ע,אין_נטיות כליזמר ת,נקבה_ית כלנתריזם ע,אין_נטיות # israeli politics term קייטרינג ע,אין_נטיות דומיין ע כרומוזום ע כרומוזומלי ת ריבוזום ע לברדור ע,אין_נטיות # kind of dog לוגו ע,אין_כינויים,רבים=לוגואים לוגיסטיקה ע,אין_נטיות לוגיסטי ת לוטוס ע לוטרה ע לוקוס ע # type of fish ליבידו ע,אין_נטיות ליטורגי ת # [4] also allows to write this with ת, but prefers ט. ליטרה ע,אות # [3] has ליטרה with yod (also in the voweled spelling) and [4] also prefers it (the one without yod is a pointer). [1] and Uzzi Ornan's book have לטרה, as if this is a Hebrew word. ליברה ע # [3] allows only ות, [4] allows both ות and אות. לימבו ע,אין_נטיות לימפה ע,אין_נטיות לימפומה ע,אין_נטיות # for some reason, not in [3] or [4]... לקוני ת לקוניות ע מפיה ע,אין_נטיות # [3] spells it without א. [4] spells it like this in vowelled spelling, but מאפיה as ktiv male. I don't know why. מפיונר ת,נקבה_ית מפיוזו ע,אין_נטיות # a rarer alternative to מפיונר. מגנוליה ע # kind of tree אפרודיזיאק ע,אין_נטיות אפידורל ע,אין_נטיות אפידורלי ת # medical term אפוקסי ע,אין_נטיות מדריגל ע # music type term מואזין ע מובייל ע מודם ע # computer term מוזה ע מוטיב ע מומיה ע מונדיאל ע,אין_כינויים מונוגמי ת # [4] says it should be spelt מונוגאמי. This especially doesn't make sense as it write מונוגמיה. מונוגמיה ע,אין_נטיות פוליגמי ת # [4] says it should be spelt פוליגאמי in niqqud-less spelling. פוליגמיה ע,אין_נטיות ביגמיה ע,אין_נטיות ביגמיסט ת,נקבה_ית # technically, bigamy is just a man with two wives, and polyandria is used for the feminine version. But realisticly, hardly anyone knows the word polyandria, there is no "2" version (biandria), and no word ביאנדריסטית, so the word ביגמסטית is in use. פוליאנדריה ע,אין_נטיות מונוגרפיה ע מונוגרמה ע # [3] mentions a Hebrew translation, משלבת. מונולית ע,ים # [4] also allows מונוליט, מונוליטי, but prefers ת. מונוליתי ת מונופול ע,אין_כינויים מונופולין ע,אין_נטיות מונופוליסטי ת מונופוליזם ע,אין_נטיות מונופוליסט ת,נקבה_ית מונסון ע,אין_כינויים מוסלין ע,אין_נטיות # I never heard of this, but someone asked to add it, and it's in [3] and [4]... מורבידי ת מורל ע,אין_נטיות מורלי ת מורס ע,אין_נטיות מזוט ע,אין_נטיות מטאורולוגיה ע,אין_נטיות מטאורולוגי ת מטאורולוג ת,נקבה_ית קלימטולוגיה ע,אין_נטיות קלימטולוגי ת קלימטולוג ת,נקבה_ית מטדור ע מטפורה ע מטפורי ת מטמורפוזה ע מטרונום ע פטריארך ע פטריארכלי ת פטריארכליות ע,יחיד פטריארכיה ע מטריארכלי ת מטריארכליות ע,יחיד מטריארכיה ע מטריצה ע מטריציוני ת # not in [3] or [4], but in actual use in Math and management. מטריצי ת # variant of מטריציוני, less popular. TODO: consider not accepting this? מיגרנה ע מיליציה ע מלנומה ע,אין_נטיות מלנין ע,אין_נטיות מלריה ע,אין_נטיות ממוגרפיה ע,אין_כינויים #ממוטה ע # NOTE: [3] prefers ט, [4] prefers ת. Both accept both. I tend to agree with the ת... ממותה ע מנדולינה ע דוקטור ע,אין_כינויים # TODO: in this, and many other אין_כינויים words, the plural nismach form isn't useful. Think if and how to get rid of it. דוקטורט ע,אין_כינויים מגיסטר ע,אין_נטיות גרם ע,אין_כינויים קילוגרם ע,אין_כינויים מיליגרם ע,אין_כינויים מיקרוגרם ע,אין_כינויים ננוגרם ע,אין_כינויים ליטר ע,אין_כינויים סנטיליטר ע,אין_כינויים מיליליטר ע,אין_כינויים דציליטר ע,אין_כינויים מיקרוליטר ע,אין_כינויים מטר ע,אין_כינויים מטרי ת קילומטר ע,אין_כינויים קילומטרז' ע,אין_נטיות # [4] calls this colloquial, but I can't think of any alternative word (compare English "mileage"). סנטימטר ע,אין_כינויים מילימטר ע,אין_כינויים מילימטרי ת # usually in "נייר מילימטרי". דצימטר ע,אין_כינויים ננומטר ע,אין_כינויים ננומטרי ת פיקומטר ע,אין_כינויים # rarely used פמטומטר ע,אין_כינויים # rarely used מיקרון ע,אין_כינויים מיקרוני ת מילימיקרון ע,אין_כינויים אינץ' ע # some spell this אינטש דציבל ע,אין_כינויים דונם ע,אין_כינויים טונה ע,אין_כינויים טונז' ע,אין_נטיות קילוהרץ ע,אין_נטיות הרץ ע,אין_נטיות מיל ע,אין_כינויים יארד ע,אין_כינויים # How shall we write, ג'יגבייט, גיגבייט, ג'יגהבייט or גיגהבייט? All of these # are fairly commonly used (in todays Google, 230, 1650, 1140, 2140). # [5] prefers the spelling ג'יגבייט. This spelling is the least common in # Google, but has to advantages (besides being in [5]): 1. the common # pronounciation, especially by computer experts (who are highly influenced # by English), is with a ג' (j) sound. 2. Sticking a silent ה in the middle # of a word to signify a "a" sound is foreign to Hebrew. # It's interesting that the "Google Preference" coincides with this decision # on other words. E.g., מגבייט is more popular than מגהבייט, and מגטון is # more popular than מגהטון. # NOTE: If we keep this decision, some words may be too awkward. For example, # usage of מגביט is almost non-existant compared to מגהביט (the former looks # like a spelling mistake of מגבית). Similarly for טרבייט vs. טרהבייט. # If we don't make a different decision for these word and insist of writing # מגביט, people may refuse. Perhaps they can or should write מגה-ביט, where # the ה isn't lost, instead? גיגבייט ע,אין_כינויים גיגהרץ ע,אין_נטיות מגהרץ ע,אין_נטיות מגבייט ע,אין_כינויים מגביט ע,אין_כינויים מגטון ע,אין_נטיות מגפון ע,אין_כינויים מגפיקסל ע,אין_כינויים טרבייט ע,אין_כינויים קילובייט ע,אין_כינויים קילוביט ע,אין_כינויים בייט ע,אין_כינויים ביט ע,אין_כינויים גרפיטי ע,אין_נטיות ג'ז ע,אין_נטיות בלוז ע,אין_נטיות רוקנרול ע,אין_נטיות # [4] writes רוק'נרול, and some people write רוקנ'רול, but the spelling without apostrophe is far more common, and more Hebrew-like. רוקר ת,נקבה_ית מנטרה ע מניירה ע מנייריזם ע,אין_נטיות מניפולציה ע # [3] mentions a Hebrew alternative: תכסוס. מניפולטיבי ת מניפולטור ת,נקבה_ית מרקסיזם ע,אין_נטיות מרקסיסט ת,נקבה_ית מרקסיסטי ת סטליניזם ע,אין_נטיות סטליניסט ת,נקבה_ית סטליניסטי ת מקיאבליזם ע,אין_נטיות מקיאבליסט ת,נקבה_ית מקרתיזם ע,אין_נטיות מרגרינה ע,אין_נטיות וודקה ע,אין_נטיות ויסקי ע,אין_נטיות מרגריטה ע,אין_נטיות ג'ין ע,אין_נטיות יוגורט ע,אין_נטיות ברנדי ע,אין_נטיות קפה ע,סגול_ה,אין_נטיות תה ע,סגול_ה,אין_נטיות תיון ע מרשמלו ע,אין_נטיות קרמל ע,אין_נטיות אורגנו ע,אין_נטיות בהרט ע,אין_נטיות פפריקה ע,אין_נטיות כוסברה ע,אין_נטיות פטרוזיליה ע,אין_נטיות פטרוסלינון ע,אין_נטיות # another rarer name for פטרוזיליה. בזיליקום ע,אין_נטיות דפנה ע,אין_נטיות תימין ע,אין_נטיות מיונז ע,אין_נטיות מיונית ע,אין_נטיות זנגביל ע,אין_נטיות ג'ינג'ר ע,אין_נטיות זעפרן ע,אין_נטיות סחוג ע,אין_נטיות ארטישוק ע,אין_כינויים כורכום ע,אין_נטיות חומוס ע,אין_נטיות חלווה ע,אין_נטיות פלאפל ע,אין_כינויים # plural is colloquial and often military slang for ranks above major, use כדורי פלאפל. אגרול ע,אין_כינויים נענע ע,אין_נטיות,נקבה # According to an Academia decision from November 13, 2005, נענע is feminine. וניל ע,אין_נטיות # There's Hebrew שנף, but it's not common. אלוורה ע,אין_נטיות זעתר ע,אין_נטיות טרגון ע,אין_נטיות סלרי ע,אין_נטיות לבנדר ע,אין_נטיות לואיזה ע,אין_נטיות # plant מליסה ע,אין_נטיות # plant מיורם ע,אין_נטיות # plant רוזמרין ע,אין_נטיות קמומיל ע,אין_נטיות בבונג ע,אין_נטיות # The somewhat old Hebrew (?) name for קמומיל. כמון ע,אין_נטיות קינמון ע,אין_נטיות מנגו ע,אין_נטיות ברוקולי ע,אין_נטיות מרווה ע,אין_נטיות אניס ע,אין_נטיות סויה ע,אין_נטיות צ'ילי ע,אין_נטיות סושי ע,אין_נטיות קוניאק ע,אין_נטיות אוזו ע,אין_נטיות אספרגוס ע,אין_כינויים פופקורן ע,אין_נטיות אספרסו ע,אין_נטיות מקיאטו ע,אין_נטיות גולש ע,אין_נטיות # Unlike its usual preference, [4] doesn't add aleph to this word in the niqqud-less spelling. But some people still like to add an alpeh and write גולאש. המבורגר ע,אין_כינויים קוגל ע,אין_נטיות צימס ע,אין_נטיות # from Yiddish צימעס מינסטרונה ע,אין_נטיות ממליגה ע,אין_נטיות שישליק ע,אין_נטיות בורקס ע # This word is plural in Ladino, but used as singular in modern Hebrew. קטשופ ע,אין_נטיות אנטיפסטי ע,אין_נטיות ספגטי ע,אין_יחיד,רבים=ספגטי # [3] says ספגטי is plural, but [4] says it is singular (though its textual description says ספגטי is a kind of אטריות, which is plural...) פטוצ'יני ע,אין_נטיות לזניה ע,אין_נטיות פרמזן ע,נקבה,אין_נטיות # NOTE: this word is feminine because it is a shortening of גבינת פרמזן... ג'חנון ע,אין_נטיות אנשובי ע,אין_נטיות קוסקוס ע,אין_נטיות בורגול ע,אין_נטיות בורשט ע,אין_נטיות קרמבו ע,רבים=קרמבואים,אין_כינויים # originally a trade-mark. בליני ע,אין_נטיות בלינצ'ס ע,אין_יחיד,אין_כינויים,רבים=בלינצ'ס בקלווה ע,אין_כינויים # Note that in a Google count, the spelling בקלאווה is 5 times more common. ג'בטה ע,אין_כינויים # not in [3] or [4], but commonly used in recent years. It comes from the Italian Ciabatta, but somehow got mispronounced in Israel. ג'לי ע,אין_נטיות ג'לטין ע,אין_נטיות # [3] and [4] says the official Academia-mandated Hebrew name is "גלדין". But nobody uses that (zero Google matches). גויבה ע # [4] adds aleph for niqqud-less spelling: גויאבה מג'דרה ע,אין_נטיות # [4] adds aleph for niqqud-less spelling: מג'אדרה מול ע,אין_כינויים # Mussels. From french "Moule". Most people wrongly pronounce "molim" מוקה ע,אין_נטיות מוסקט ע,אין_נטיות מיורן ע,אין_נטיות מילקשייק ע,אין_נטיות שייק ע,אין_כינויים מלאווח ע,אין_כינויים # ו added for niqqudles spelling מרמלדה ע # [4] adds aleph for niqqudless spelling: מרמלאדה. מרציפן ע,אין_כינויים ניוקי ע,אין_נטיות סופלה ע,אין_נטיות סורבה ע,סגול_ה,אין_נטיות # [4] prefers שרבט, but סורבה has become much more popular. סיידר ע,אין_נטיות סשימי ע,אין_נטיות ערק ע,אין_נטיות פבלובה ע,אין_כינויים פודינג ע,אין_נטיות פונדו ע,אין_נטיות פונץ' ע,אין_נטיות פוקצ'ה ע,אין_כינויים פפיה ע,אין_כינויים # [4] addes aleph for niqqud-less spelling: פפאיה פקן ע,אין_כינויים פרלין ע אנונה ע,אין_כינויים צ'ולנט ע,אין_נטיות צ'ימיצ'ורי ע,אין_נטיות צ'וריסו ע,רבים=צ'וריסוס,אין_כינויים קרי ע,אין_נטיות # [4] adds aleph for niqqud-less spelling: קארי קבנוס ע # [4] adds aleph for niqqud-less spelling: קבאנוס. קורנפלור ע,אין_נטיות קימל ע,אין_נטיות קממבר ע,אין_נטיות קנולה ע,אין_נטיות לפתית ע,אין_נטיות קניידל ע,רבים=קניידלך,אין_כינויים # A bunch of other spellings are also popular: קניידלעך, קניידלאך, קנידלעך, קנידלך, קנידלאך (in this order). But this is the most popular spelling (in Google) and the one that [4] and [5] prefer. רוגל ע,רבים=רוגלך,אין_יחיד,אין_כינויים # The spelling רוגלעך is almost as popular בייגל ע,אין_כינויים # Bagel בייגלה ע,סגול_ה,אין_כינויים,רבים=בייגלך # Pretzel קרפלה ע,סגול_ה,אין_כינויים,רבים=קרפלך קנלוני ע,אין_נטיות קרפצ'ו ע,אין_נטיות מוס ע,אין_נטיות קשיו ע,אין_נטיות קשקבל ע,אין_נטיות # There's also a rarer spelling (which [4] prefers) קצ'קבל. ריקוטה ע,אין_נטיות רביולי ע,אין_נטיות רולדה ע רוסטביף ע,אין_נטיות רוקפור ע,אין_נטיות ריזוטו ע,אין_נטיות שווארמה ע,אין_כינויים # [3] spells שוורמה, [4] spells (even with niqqud) שווארמה. The latter spelling is 100 times more popular on Google. TODO: reconsider. שוקו ע,אין_נטיות שטרודל ע שמפיניון ע,אין_נטיות שקשוקה ע,אין_כינויים שרימפ ע,רבים=שרימפס בולונז ע,אין_נטיות # Originally an adjective in "ספגטי בולונז", but recently became a noun for the meat sauce. אנטרקוט ע,אין_נטיות # TODO: [4] lists it this way, but the spelling אנטריקוט is twice more popular on Google... סינטה ע,אין_נטיות רוקט ע,אין_נטיות קינואה ע,אין_נטיות נוגט ע,אין_נטיות עמבה ע,אין_נטיות # [4] and [5] list גלוקוזה, while [3] lists גלוקוז. Uncharacteristicly, [3]'s # spelling, גלוקוז, is far more common (10 times more) in Google search. # According to the Academia's hebrew-terms.huji.ac.il site, in 1939's lexicon # of medical terms, the word גלוקוזה (and סוכר ענבים) was used, but later, # starting with the 1957 lexicon of baking terms, גלוקוז was used instead, # and it remains גלוקוז in 1999's lexicon of medical terms. So we'll use this # spelling. גלוקוז ע,אין_נטיות פרוקטוז ע,אין_נטיות לקטוז ע,אין_נטיות לקטי ת דקסטרוז ע,אין_נטיות # Another word for Glucose... סוכרוז ע,אין_נטיות # [4] says that with niqqud, the samech has kubuts. Strange. מנטה ע,אין_נטיות # TODO: [3] and [4] prefer the spelling מנתה! גספצ'ו ע,אין_נטיות # [4] adds aleph for niqqudless spelling: גספאצ'ו. גרנולה ע,אין_כינויים דניס ע,אין_נטיות הל ע,אין_נטיות בגט ע,אין_כינויים # [4] adds aleph for niqqud-less spelling: באגט. ויניגרט ע,אין_נטיות # The spelling וינגרט is closer to the original French word, but [4] and the public (as seen in Google and in my experience) prefer pronouncing ויניגרט. ופל ע,אין_כינויים # The official but rarely used Hebrew translation is אפיפית חריע ע,אין_נטיות טבסקו ע,אין_נטיות טורט ע,אין_כינויים טילון ע טירמיסו ע,אין_נטיות טמפורה ע,אין_נטיות מוצרלה ע,אין_נטיות סמבוסק ע,אין_כינויים פסטו ע,אין_כינויים טוניק ע,אין_נטיות #חוביזה ע,אין_כינויים # [4] writes ח'וביזה, with dirty ח, but even if this is more similar to the Arabic, it's strange in Hebrew and a much rarer form in actual use. TODO: consider even prefering חובזה. ח'וביזה ע,אין_כינויים # TODO: decide which alternative to leave #חמסה ע,אין_כינויים # TODO: Same issue as חוביזה: [3] and [4] write ח'מסה. ח'מסה ע,אין_כינויי # TODO: decide which alternative to leaveם חפלה ע,אין_כינויים # slang חרא ע,אין_נטיות # slang. [3] spells ח'רא ח'אן ע # The spelling ח'אן according to the Academia's 1942 archeology terms. מוח'תאר ע,אין_נטיות חג' ע,אין_נטיות # the pilgramage חאג' ע,אין_נטיות # the pilgram פוסטמה ע,אין_כינויים,זכר,נקבה # Slang. [3] and [4] insist that this word can also be masculine. My experience is that it is used just for feminine. נובה ע,אין_כינויים # astronomy term. TODO: reconsider adding this term. סופרנובה ע,אין_כינויים # astronomy term. TODO: reconsider adding this term. נובלה ע נודיזם ע,אין_נטיות נודיסט ת,נקבה_ית נטורליזם ע,אין_נטיות נטורליסטי ת נטורליסט ת,נקבה_ית ניהיליזם ע,אין_נטיות ניהיליסטי ת ניהיליסט ת,נקבה_ית ניואנס ע,אין_כינויים נימפה ע,אין_כינויים נימפומניה ע,אין_נטיות #נימפומן ת,נקבה_ית # נימפומנית exists, but נימפומן does not. Instead, enter only the feminine as a noun: נימפומנית ע,אין_כינויים ננוטכנולוגיה ע,אין_נטיות ננוטכנולוגי ת נפוטיזם ע,אין_נטיות יון ע,אין_כינויים # chemistry term אניון ע,אין_כינויים # chemistry term קטיון ע,אין_כינויים # chemistry term. I'm not sure why ט (compare קתודה). נקטרינה ע נקרופיליה ע,אין_נטיות נקרופיל ת,נקבה_ית נרגילה ע נרקיסיזם ע,אין_נטיות נרקיסיסטי ת נרקיסיסט ת,נקבה_ית סובסידיה ע סולרי ת סולו ע,רבים=סולואים,אין_כינויים # The plural is not recognized by [3] or [4], but commonly used by the public, and I don't see why a plural should not exit, just like the English plural "solos". סולפג' ע,אין_נטיות סולטאן ע # Note vav not in the Arabic spelling and aleph from Arabic alif. סולטאנות ע,אין_כינויים סולידי ת סולידיות ע סולידריות ע סולידרי ת # much rarer than the noun סולידריות סונטה ע סוסון ע # usually in "סוסון ים". סופרלטיב ע,אין_כינויים סטגנציה ע,אין_נטיות סטואי ת סטואה ע,אין_נטיות סטתוסקופ ע # This is the medical instrument, stathoscope. #סטטוסקופ ע # "statoscope" is a barometer. But usually found as a misspelling of סטתוסקופ, so we better not add it. סטלגמיט ע,אין_כינויים סטלגטיט ע,אין_כינויים סטנסיל ע סטרואיד ע,אין_כינויים סטריכנין ע,אין_נטיות מלטונין ע,אין_נטיות סינדיקט ע,אין_כינויים סינדיקציה ע,אין_נטיות # [4] also allows plural. I think it is useless. סינופטי ת סינוס ע # biology term, and math term סינוסיטיס ע,אין_נטיות קוסינוס ע,אין_כינויים # math term סינמטק ע,אין_כינויים סינפסה ע # biology term סינתזה ע סינתטי ת סינתסייזר ע # [4] spells סינתיסייזר (the second yod is a chirik maleh), while [5] spells סינתסייזר. A google search finds 3 times more spelling with the yod... But my personal experience is that pronunciation is without yod! TODO: reconsider # [2, 3, 4, 5] disagree about how to spell "seismograph" in Hebrew. [4] and [2] # says סיסמוגרף, with tsere maleh, while [3] points from this spelling to the # correct spelling it prefers - ססמוגרף, with segol. [5] puts a shva on the yod # and ends up with niqqud-less spelling of סייסמוגרף. Similar decisions exist # for other similar words like סייסמי / סיסמי / ססמי, and so on. # As usual, the more popular usage on the Internet (as determined by Google) # is the one that agrees with [4], but this doesn't say much. # For now I'll go with [5] and against [4, 2], and against [3] on this issue. # TODO: check if popular pronunciation isn't ססמי, not סיסמי, and if so revisit # this decision. סייסמוגרף ע,אין_כינויים סייסמוגרפי ת סייסמומטר ע,אין_כינויים # is this the same as סיסמוגרף? סייסמי ת סייסמולוגיה ע,אין_נטיות סייסמולוג ת,נקבה_ית סירונית ע # mythological Siren סכרין ע,אין_נטיות סכריני ת # metaphorical סלטה ע,אין_כינויים # this is in [4]. [3] prefers סלטו. סמוראי ת,ם סנילי ת סניליות ע ספין ע,אין_כינויים # physics and advertising term פדופיל ת,נקבה_ית פדופילי ת # not in [3] or [4], but I think it exists. פדופיליה ע,אין_נטיות פדנט ת,נקבה_ית # has a rarely used Hebrew translation: נוקדן. פדנטי ת פדנטיות ע פואנטה ע פוביה ע,אין_כינויים פובליציסט ת,נקבה_ית פובליציסטי ת פובליציסטיקה ע,אין_נטיות פוגה ע,אין_כינויים # music term פודיום ע פוזה ע,אין_כינויים פודגרה ע,אין_נטיות פוטוריזם ע,אין_נטיות # art term פוטוריסטי ת # art term פוטוריסט ת,נקבה_ית # art term פוליפוניה ע,אין_נטיות פוליפוני ת פולסר ע,אין_נטיות # astronomy term פולקלור ע,אין_נטיות פולקלורי ת פולקלוריסטי ת פולקלוריסט ת,נקבה_ית פונדמנטליזם ע,אין_נטיות פונדמנטליסט ת,נקבה_ית פונדמנטליסטי ת פונולוגיה ע,אין_נטיות # linguistics term פונולוגי ת # linguistics term פונטיקה ע,אין_נטיות # linguistics term פונטי ת # linguistics term פוני ע,רבים=פונים,אין_כינויים # small horse פונמה ע,אין_כינויים # linguistics term פונמי ת # linguistics term אלופון ע,אין_כינויים הלוגן ע,אין_כינויים גרניט ע,אין_נטיות דולומיט ע,אין_נטיות דיקט ע,אין_כינויים במבוק ע,אין_נטיות נפטלין ע,אין_נטיות קפאין ע,אין_נטיות אצטון ע,אין_נטיות כולסטרול ע,אין_נטיות גליצרין ע,אין_נטיות ניטרוגליצרין ע,אין_נטיות אזמרגד ע,אין_נטיות # The academia decided in November 13, 2005, to vowel this with patach in the mem. פופ ע,אין_נטיות פוף ע,אין_כינויים # a type of cushion. פטוניה ע,אין_כינויים # plant פילודנדרון ע,אין_נטיות # plant פיקוס ע,אין_כינויים # plant פטישיזם ע,אין_נטיות # [3] and [4] also have פטיש but I never heard that used. פטישיסט ת,נקבה_ית פטישיסטי ת פטרוכימיה ע,אין_נטיות פטרוכימי ת פיגורטיבי ת פילולוגיה ע,אין_נטיות פילולוגי ת פילולוג ת,נקבה_ית פיליבסטר ע,אין_כינויים # politics term פילמוגרפיה ע # list of movies פיסקלי ת פיקסל ע,אין_כינויים # computer term פלגיאט ע,אין_נטיות פלגיאריזם ע,אין_נטיות # not in [3] or [4], but its use has become even more common than of פלגיאט פלנל ע,אין_נטיות פלנקטון ע,אין_נטיות # biology term פלסטלינה ע,אין_נטיות פלשבק ע,אין_נטיות פנוטיפ ע,אין_כינויים # biology term פנוטיפי ת גנוטיפ ע,אין_כינויים # biology term גנוטיפי ת פנומן ע,אין_כינויים פנומנלי ת # [4] addes aleph for niqqud-less spelling: פנומנאלי פנומנולוגיה ע,אין_נטיות פנומנולוגי ת פנטומימאי ע,אין_כינויים פנטומימאית ע,אין_כינויים פנטומימה ע,יחיד # [3] says no plural, [4] allows plural. I think it's not useful. פנטהאוז ע,אין_כינויים # There's a variant but less common spelling, פנטהאוס. פניצילין ע,אין_נטיות פסטל ע,אין_כינויים פסטרמה ע,אין_נטיות # [4] adds aleph for niqqud-less spelling: פסטראמה. פסיפלורה ע,אין_נטיות פציפיזם ע,אין_נטיות פציפיסט ת,נקבה_ית פציפיסטי ת פרבולה ע,אין_כינויים # math term פרבולי ת # math term היפרבולה ע,אין_כינויים # math term היפרבולי ת # math term פרבלום ע,אין_נטיות # used to be a type of gun. Now a type of ammunition in the phrase 9 מילימטר פרבלום קליבר ע,אין_כינויים פרגולה ע פרדוקס ע פרדוקסלי ת # [4] adds aleph for niqqud-less spelling: פרדוקסאלי. פרדוקסליות ע # [4] adds aleph for niqqud-less spelling: פרדוקסאליות פרדיגמה ע פרדיקט ע,אין_כינויים # logics term פרהיסטוריה ע,אין_נטיות פרהיסטורי ת פרודיה ע פרודי ת פרוזה ע,אין_נטיות פרוזאי ת פרוזאיות ע פרומיל ע,אין_כינויים פרוספקט ע # note: translation of English prospectus, not prospect. פרטיזן ת,נקבה_ית פרטיזני ת פרלוד ע,אין_כינויים פרמטר ע פרמטרי ת # math term פרמיה ע,אין_כינויים פרנויה ע,אין_נטיות פרנואיד ת,נקבה_ית פרנואידי ת פרספקטיבה ע,אין_כינויים פרפקציוניזם ע,אין_נטיות פרפקציוניסט ת,נקבה_ית פרקט ע,אין_כינויים # the plural looks strange to me but it's in [4], and is being used... פתוס ע,אין_נטיות # [4] adds aleph for niqqud-less spelling: פאתוס. It also allows plural. פתטי ת צ'לו ע,אין_נטיות # TODO: [4] says plural is צ'לי. But צ'לואים sounds more Hebrew to me. צ'לן ת,נקבה_ית צ'מבלו ע,אין_נטיות # TODO: [3] says plural is צ'מבלואות, but I can't find any evidence of that. צאר ע,אין_כינויים # [3] and [4] write this with the aleph even in vowelled spelling. [3] says, however, that צר is also a correct spelling. But I think nobody uses that. צארינה ע,אין_כינויים צארי ת צונמי ע,אין_נטיות # [4] adds aleph for niqqud-less spelling: צונאמי ציאניד ע,אין_נטיות צלולואיד ע,אין_נטיות צלופן ע,אין_כינויים צנטריפוגה ע צנטריפוגלי ת # physics term. [4] doesn't add aleph here, but is inconsistent and adds aleph in some mentions of this word in its definition. צנטריפטלי ת # physics term. [4] doesn't add aleph here, but is inconsistent and adds aleph in some mentions of this word in its definition. צפלין ע קאדי ע,אין_כינויים,רבים=קאדים # the aleph is from the original Arabic קבאב ע # the aleph is from the original Persian (according to [4] and Wikipedia) קמרי ת # music term. [4] adds aleph for niqqud-less spelling: קאמרי. קבוקי ע,אין_נטיות # Japanese theater term קברט ע,אין_כינויים קברטי ת # [4] calls this "colloquial". קואופרטיב ע קואופרטיבי ת קוהזיה ע,יחיד,אין_כינויים קוהרנטי ת קוהרנטיות ע קוורום ע,אין_נטיות קוזק ת,נקבה_ית קולז' ע,אין_כינויים קולחוז ע,אין_כינויים קוליפורם ע,אין_כינויים # קוליפורמים קולר ע קומבינה ע,אין_כינויים # [3] calls this slang, [4] calls it colloquial. קומבינטור ת,נקבה_ית # [4] calls it colloquial, [3] doesn't have it. קומונה ע,אין_כינויים קומונר ת,נקבה_ית קומוניקט ע,אין_כינויים קומוניקטיבי ת קומזיץ ע,אין_כינויים # [3] calls this slang, [4] calls it colloquial, but it's an important word with no accepted "correct" alternative so it cannot be discounted. קומנדו ע,אין_נטיות קומפוסט ע,אין_נטיות קומפוזיציה ע קומפוזיטור ת,נקבה_ית קומפלקס ע,אין_כינויים קונגלומרט ע,אין_כינויים # תלכיד קונדיטוריה ע # מגדנייה קונדיטור ת,נקבה_ית קונדיטאות ע,יחיד קונוטציה ע קונוטטיבי ת קונסטלציה ע # Originally precieved star group, but usually used used metaphorically. קונסיסטנטי ת קונסיליום ע,אין_כינויים # medical term קונפורמיזם ע,אין_נטיות קונפורמיות ע קונפורמיסט ת,נקבה_ית קונפורמיסטי ת קונפורמי ת קונפיגורציה ע,אין_כינויים # usually computer term קונקרטי ת קונקרטיות ע קונקרטיזציה ע,יחיד,אין_כינויים קוסמולוגיה ע,אין_נטיות קוסמולוגי ת קוסמופוליט ת,נקבה_ית # rarely used nowadays קוסמופוליטי ת # rarely used nowadays קופון ע,אין_כינויים קוקטייל ע # both [3] and [4] write this with only one yod, and [5] write it with two. Google shows קוקטייל to be vastly more common than קוקטיל. קוריוז ע,אין_כינויים קורקטי ת # This word got a life of its own in Hebrew. It doesn't mean "correct". קזוארינה ע,אין_כינויים קטטוני ת קטטוניה ע,אין_נטיות וגטטיבי ת קטיושה ע,אין_כינויים # type of rocket קטלוג ע קטלוגי ת קליפ ע,אין_כינויים קליקה ע,אין_כינויים קלמנטינה ע מנדרינה ע קלפטומניה ע,אין_נטיות קלפטומני ת # not in [4], but I think it's valid. קלפטומן ת,נקבה_ית קלאוסטרופוביה ע,אין_נטיות # this form is recognized by [3] and [4], but the much more common form (according to Google and my experience) is קלסטרופוביה, which in [4] points to קלאוסטרופוביה. TODO: reconsider. קלאוסטרופובי ת קלקר ע,אין_נטיות # [3] says קלקר is non-standard and refers to קלקל. [4], on the other hand, prefers קלקר and says that קלקל is colloquial. [4] allows the plural of this word, [3] doesn't. In my experience and using Google, קלקר is much more used in practice. קסבה ע,אין_כינויים קנון ע,אין_כינויים קנוני ת קנוניזציה ע,אין_כינויים קנטטה ע,אין_כינויים קנטינה ע,אין_כינויים קניבל ת,נקבה_ית קניבלי ת קניבליות ע קניבליזם ע,אין_נטיות # foreign-looking variant of קניבליות קניבליזציה ע,אין_כינויים,יחיד קנצלר ת,נקבה_ית קפוטה ע,אין_כינויים קפטן ע # kind of coat, and (in different spelling) according to [4], captain ([3] prefers קפיטן for these meanings( קפיטן ע,אין_כינויים קפיטליזם ע,אין_נטיות #קפיטל ע,אין_נטיות # הון is used in modern Hebrew. קפיטליסט ת,נקבה_ית קפיטליסטי ת קפטריה ע,אין_כינויים # the spelling קפיטריה is overwhelmingly more popular than קפטריה. But the former is not recognized by [3], and in [4] is is a pointer to the latter. [5] also writes קפטריה and mentions that "the pronunciation קפיטריה" is popular. TODO: reconsider our decision not to add קפיטריה. קפלה ע,אין_כינויים # chapel, and choir in the phrase א-קפלה. קקאו ע,אין_נטיות קקופוניה ע,אין_כינויים קקופוני ת קרדיט ע,אין_כינויים קרטל ע,אין_כינויים קרטלי ת קריוקי ע,אין_נטיות קרימינולוגיה ע,אין_כינויים,יחיד קרימינולוגי ת קרימינולוג ת,נקבה_ית יוד ע,אין_נטיות # iodine קרמבולה ע,אין_כינויים קרמיקה ע,אין_כינויים,יחיד קרמי ת קרפיון ע ברבוניה ע # not in [1], [3] or [4] but in common use as a type of fish. קרקל ע,אין_כינויים קרקר ע,אין_כינויים קרשנדו ע,אין_נטיות # music term קתדרה ע,ות,אות # [3] allows both ות, אות, [4] allows only ות. קפצון ע,אין_כינויים # cap (as in cap-gun). [3] considers this colloquial, [4] cosiders it slang; But there is no other word for this thing... רגרסיה ע,אין_כינויים רגרסיבי ת רדיאן ע,אין_כינויים # TODO: why not רדיין? [4] lists as vowelled spelling רדין, but then lists the niqqud-less spelling רדיאן, I don't know why. Also רדיאן is overwhelmingly more popular on Google than רדיין. Reconsider this decision! רדיופוני ת רוגטקה ע # [3] calls this children's slang. רוטציה ע # has come be mostly a political term רולטה ע,אין_כינויים רטרואקטיבי ת רטרואקטיביות ע רטרוספקטיבה ע רטרוספקטיבי ת ריקשה ע ריקושט ע,אין_כינויים דרבי ע,אין_נטיות לינץ' ע,אין_כינויים וטו ע,אין_נטיות פקס ע,אין_כינויים פקסימיליה ע,אין_כינויים אינטרנט ע,אין_נטיות אינטרנטי ת רסיטל ע,אין_כינויים רסטורציה ע,אין_כינויים # rarely used Hebrew version is רפאות. רסטורטור ת,נקבה_ית רפלקס ע,אין_כינויים רפלקסיבי ת רפלקסולוגיה ע,אין_נטיות רפלקסולוגי ת רפלקסולוג ת,נקבה_ית רפלקטיבי ת רפסודיה ע,אין_כינויים # Note dagesh in פ. רפרטואר ע רפרטוארי ת רפרט ע,אין_כינויים ציקדה ע,אין_כינויים רקוויאם ע,אין_כינויים # [3] and [4] don't recognize the plural, but why not? רקטור ת,נקבה_ית שבלונה ע שבלוני ת שבלוניות ע שהיד ת # [4] recognizes the feminine שהידית, but it is not in use. If anything, שהידה appears more common. שוביניזם ע,אין_נטיות שוביניסט ת,נקבה_ית שוביניסטי ת שיאצו ע,אין_נטיות שיח' ע,אין_כינויים # It's strange that [4] admits that the unvowlled spelling is שיח', with one yod, and yet - it also allows spelling without the apostrophe, and then doubles the yod: שייח! שמפניה ע,אין_נטיות שניצל ע שרדונה ע,אין_נטיות # type of grapes, and wine. תלידומיד ע,אין_נטיות # old medicine that caused birth defects. ליקר ע,אין_כינויים פלנגה ע,אין_יחיד # Military organization that used to exist in Lebanon (and also other meanings) אפנדי ע,אין_נטיות גמרא ע,אין_נטיות,נקבה פסחא ע,אין_נטיות וירוס ע וירולוגיה ע,אין_נטיות וירולוג ת,נקבה_ית וירלי ת # Perhaps surprizingly, [4] agrees with this spelling, even for niqqudless spelling. אוסטאופורוזיס ע,אין_נטיות # [4] prefers to add yod for niqqudless spelling after the tsere: אוסטיאופורוזיס. אוסמוזה ע,יחיד,אין_כינויים אורגניזם ע,אין_כינויים מיקרואורגניזם ע,אין_כינויים אודיסאה ע # [4] prefers to add yod for niqqudless spelling after the tsere: אודיסיאה אודישן ע,אין_כינויים אוטודידקט ת,נקבה_ית אטרופיה ע,אין_כינויים,יחיד אטרופין ע,אין_נטיות אידאה ע,אין_כינויים # mainly philosophy term אלפבית ע,ים אלפביתי ת אנגינה ע,אין_נטיות אנדוסקופיה ע,יחיד,אין_כינויים אנדוסקופ ע,אין_כינויים אנדוקרינולוגיה ע,יחיד,אין_כינויים אנדוקרינולוג ת,נקבה_ית אנדוקריני ת אנדורפין ע,אין_כינויים אסימפטוטה ע,אין_כינויים # math term אסימפטוטי ת # math term אקזמה ע,אין_כינויים # The spelling אגזמה is wrong. ארטיק ע # originally a trademark, but now used generically. אשרם ע,אין_כינויים # Interestingly, Google reports that the spelling אשראם is far more common than אשרם. However, even [4], which often adds aleph for niqqud-less spelling, doesn't do it in this case. I suspect that the reason is my Arabic-like long-vowel hypothesis. In this case, the accented syllable is the first, so a long vowel shouldn't be added to the second because it will cause it to be accented. ברוק ע,אין_נטיות # The same comment in אשרם also applies here. ברוקי ת רוקוקו ע,אין_נטיות רנסנס ע,אין_נטיות באוהאוס ע,אין_נטיות # architecture term בזיליקה ע בולימיה ע,אין_נטיות # TODO: [4] says that this word is sometimes said (but not written) בולמיה with segol in lamed. But in Google, that form is 4 times more popular than בולימיה... Reconsider. בולימי ת בוס ת,נקבה_ית # colloquial בוקיצה ע,אין_כינויים # Elm tree. בורדו ע,אין_נטיות ביליארד ע,אין_נטיות בילירובין ע,אין_נטיות # medicine term בסיסט ת,נקבה_ית בר ע,אין_כינויים ברמן ת,נקבה_ית ברנז'ה ע,אין_כינויים ברקוד ע ג'יבריש ע,אין_נטיות ג'ל ע,אין_נטיות בלגן ע,אין_נטיות # slang בלגניסט ת,נקבה_ית # slang ברדק ע,אין_נטיות # slang גונדולה ע גמבה ע # [3] calls this name colloquial, but [4] does not. Nowadays, this name is rarely used, or is this vegetable simply not common, with פלפל אדום replacing it? גנאלוגיה ע,אין_נטיות גנאלוגי ת גנאלוג ת,נקבה_ית # not in any dictionary, and only two Google mentions, but what's wrong with this word? גסטרונומיה ע,אין_נטיות גסטרונומי ת גסטרונום ת,נקבה_ית גסטרולוגיה ע,אין_נטיות # The English term is Gastroenterologist - I don't know why the Hebrew lost part of the name! גסטרולוג ת,נקבה_ית גסטרולוגי ת גרביל ע # kind of animal גרברה ע,אין_כינויים # kind of plant גרפומן ת,נקבה_ית גרפומניה ע,אין_נטיות דאודורנט ע דאווין ע # slang דואט ע,אין_כינויים דינמו ע,אין_נטיות דלתה ע,אות # A river's delta. The Academia mention this spelling in their decision on Greek letters [6, page 82]. [3] and [4], on the other hand, say: דלתא, but feminine. דרואיד ע הנגר ע,אין_כינויים # Even [4] agrees that no aleph should be added, but most people still spell האנגר, and [4]'s online interface accepts brings this word when that spelling is used. הוקי ע,אין_נטיות הילר ת,נקבה_ית # alternative-medicine term הילינג ע,אין_נטיות # alternative-medicine term היפוקמפוס ע,אין_נטיות # biology term היפותלמוס ע,אין_נטיות # biology term היפי ת,עם,ארץ= # colloquial המנגיומה ע,אין_כינויים # medical term הרפס ע,אין_נטיות אספירין ע,אין_נטיות קודאין ע,אין_נטיות אקמול ע,אין_נטיות_יחיד,אין_נטיות_רבים # trade mark אופטלגין ע,אין_נטיות # trade mark ויאגרה ע,אין_נטיות # trade mark פרוזק ע,אין_נטיות # trade mark קורטיזון ע,אין_נטיות ריטלין ע,אין_נטיות תאוברומין ע,אין_נטיות אקונומיקה ע,אין_נטיות # trade mark סולר ע,אין_נטיות מגנומטר ע,אין_כינויים סוכרזית ע,אין_נטיות # trade mark טפלון ע,אין_נטיות # trade mark כינין ע,אין_נטיות וזלין ע,אין_נטיות טיפקס ע,אין_נטיות טלק ע,אין_נטיות ויסקוזה ע,אין_נטיות אמייל ע,אין_נטיות # this is enamel, not e-mail!! ויניל ע,אין_נטיות טוף ע,אין_נטיות נפט ע,אין_נטיות גומי ע,אין_נטיות טופז ע,אין_נטיות רדיו ע,אין_נטיות סודה ע,אין_נטיות חינה ע,אין_נטיות ווק ע,אין_כינויים ויטרז' ע # [4] adds aleph for niqqud-less spelling: ויטראז'. ויקטוריאני ת ורטיגו ע,אין_נטיות ז'יטון ע # colloquial, gambling term זובור ע,אין_נטיות # military slang חבר'ה ע,אין_נטיות # Colloquial. [3] and [4] prefer חברה without geresh. But this spelling is still very common, and has a certain charm. חברמן ת,נקבה_ית # Colloquial. Sometimes also spelled as חברהמן, חבר'המן, חברה'מן. חברמני ת חברמניות ע חברותא ע,אין_נטיות,נקבה חוטיני ע,אין_נטיות חכמולוג ת,נקבה_ית # colloquial. Sometimes spelt and pronounced חוכמולוג. Both I and [4] prefer the spelling without ו. In a Google search, both spellings appear equally popular. חושה ע,אין_כינויים # slang. חנון ת,נקבה_ית # slang חנטריש ע,אין_נטיות # slang חפיפניק ת,נקבה_ית חפיפניקי ת חפיפניקיות ע טאבון ע טרוט ע,אין_נטיות # Tarot cards. Even [4] agrees that no א should be added for niqqudless spelling, though the vast majority of people still spell טארוט. טברנה ע,אין_כינויים טוסטוס ע # colloquial טוסיק ע,אין_נטיות # slang טורבו ע,אין_נטיות טטנוס ע,אין_נטיות טייפון ע טמפרה ע,אין_נטיות # art term טנטרה ע,אין_נטיות טנטרי ת טריגליצריד ע,אין_כינויים # medical term טריקו ע,אין_נטיות טרנד ע,אין_כינויים טרנדי ת # colloquial טרסה ע,אין_כינויים יכטה ע # many people write יאכטה. יוגה ע,אין_נטיות כיף ע,אין_נטיות # slang כיפי ע,אין_נטיות # slang כירופרקטיקה ע,אין_נטיות כירופרקטי ע,אין_נטיות כירופרקט ת,נקבה_ית # [5] lists, instead כירופרקטיקאי and כירופרקטיקן. But nobody uses these words. לבה ע,אין_נטיות לוטו ע,אין_נטיות לינולאום ע,אין_נטיות # [4] adds yod for niqqud-less spelling, I have no idea why. [3] and popular usage don't agree. לס ע,אין_נטיות # type of soil לפרוסקופיה ע,אין_נטיות לפרוסקופי ת לפרוסקופ ע,אין_כינויים לקמוס ע,אין_נטיות קנבס ע,אין_כינויים # [3], [4] and [5] all spell קנבוס, with cholam. But in popular usage, קנביס # is much more common (and actually, קנאביס is even much more popular than # that!), and is actually more aligned with the scientific name of the plant # (Cannabis). קנבוס ע,אין_נטיות קנביס ע,אין_נטיות לקרדה ע,אין_כינויים מהגוני ע,אין_נטיות # kind of tree מוניטור ע מוסקט ע # kind of antique rifle מוסקטר ע,אין_כינויים מטקה ע,אין_כינויים # colloquial מימוזה ע,אין_כינויים # kind of plant סנהדרין ע,רבים=סנהדראות,אין_כינויים,נקבה דיזל ע,אין_נטיות אקרוסטיכון ע,אין_כינויים מוניטין ע,אין_נטיות טורנדו ע,אין_נטיות # There is no plural form - use סופות טורנדו מיניאטורה ע מיניאטורי ת מנגל ע,אין_כינויים # colloquial מניאק ת,נקבה_ית מרקיז ת משקפופר ת,נקבה_ית # slang נומרולוגי ת נומרולוגיה ע,אין_נטיות נומרולוג ת,נקבה_ית ניאגרה ע,אין_כינויים # colloquial, for toilet tank נינג'ה ע,זכר # not in [3] or [4], but a commonly known word. נירוונה ע,אין_כינויים נירוסטה ע,אין_נטיות סגה ע,אין_כינויים # [4] addes aleph for niqqud-less spelling: סאגה סוונה ע # Not in [3] or [4], I don't know why. Common on the Internet with an added aleph: סוואנה. סומבררו ע,אין_נטיות סופרמן ע,אין_כינויים סופרן ע,אין_נטיות סטרייט ת,נקבה_ית # slang סינקופה ע,אין_כינויים סנפלינג ע,אין_נטיות ספרי ע,אין_כינויים # [3] and [5] write ספרי, but [4] addes aleph: ספארי (even with niqqud) ספוילר ע,אין_כינויים ספונג'ה ע,אין_נטיות # slang ספינינג ע,אין_נטיות ספתח ע,אין_נטיות # slang סקייטבורד ע # [3] writes סקטבורד (with segol), [4] write סקטבורד but also recognizes סקייטבורד, and [5] writes סקייטבורד. Both spellings are just as common on a Google search. Using יי is the most consistent transliteration, but my problem is that most people pronounce a segol here, and a yod would not be needed... סקייט ע,אין_כינויים # The problem here is even more pronounced than סקייטבורד. TODO: reconsider. פדיחה ע # slang פנל ע,אין_כינויים פשלה ע # slang פגודה ע מניקור ע,אין_נטיות מניקוריסט ת,נקבה_ית פדיקור ע,אין_נטיות פדיקוריסט ת,נקבה_ית פודרה ע,אין_כינויים פוטבול ע,אין_נטיות # In Hebrew, this refers only to American Football. פוליגל ע,אין_נטיות פומפה ע,אין_כינויים # colloquial פונפון ע פופיק ע # slang פוקר ע,אין_נטיות פורמייקה ע,אין_כינויים פורמלין ע,אין_נטיות פורמלדהיד ע,אין_נטיות פושטק ת,נקבה_ית פיורד ע,אין_כינויים פיטנגו ע,אין_נטיות פינצטה ע פיסורה ע,אין_נטיות # medical term פיסטולה ע,אין_כינויים # medical term פירוטכניקה ע,אין_נטיות פירוטכני ת פירסינג ע,אין_נטיות פלאפון ע # Originally (and still) a trademark, but often used generically. פלייבק ע פלייאוף ע,אין_כינויים פלייר ע,אין_כינויים # pliers פלייר ע,אין_כינויים # flier פלמנקו ע,אין_נטיות פנקייק ע פסוריאזיס ע,אין_נטיות פפרצו ע,רבים=פפרצי,אין_יחיד # [4] adds aleph for niqqud-less spelling: פפראצי פרייר ת,נקבה_ית # slang פרואקטיבי ת # not in [3] or [4], but commonly used. פרוזבול ע,אין_כינויים פרומון ע,אין_כינויים # biology term פריזבי ע,אין_נטיות # originally a trademark פריסקופ ע פרקינסון ע,אין_נטיות # Usually in the sense of Parkinson's disease. פשקוויל ע # [4] lists this as an alternate spelling, and prefers the spelling פסקוויל. But almost nobody uses that spelling. A more frequent variant (that [4] doesn't recognize) is פשקעוויל. ארמדיל ע,אין_כינויים # This is what people often call ארמדילו אלקטרוליזה ע,אין_כינויים אלקטרוליט ע,אין_כינויים אלקטרוליטי ת איגלו ע,רבים=איגלואים,אין_כינויים דמורליזציה ע,יחיד,אין_כינויים אופוסום ע אורתודונטיה ע,יחיד,אין_כינויים אורתודונט ת,נקבה_ית # The spelling (and pronunciation) אורתודנט is considered incorrect. אורתודונטי ת צ'ופר ע # slang צ'חצ'ח ת,נקבה_ית # slang צ'יף ע,אין_כינויים צ'פחה ע,אין_כינויים צוציק ת,נקבה_ית # slang ציסטה ע צלוליט ע,אין_נטיות # medical term צלוליטיס ע,אין_נטיות # medical term קמבק ע,אין_כינויים # colloquial קיאק ע # Uncharacteristicly, here [3] spells with more alephs than [4]: קאיאק in [3] and קיאק in [4] (in both, the alephs are also present when there is niqqud). [4]'s spelling is much more common in Google, so I'll use it. קנו ע,אין_נטיות # [4] adds aleph for niqqud-less spelling: קאנו קרי ע,אין_נטיות # From Arameic, pronounced "krei" (often mispronounced "kri") קרמה ע,אין_נטיות קואלה ע קוברה ע קוטג' ע קולרבי ע,רבים=קולרבים,אין_כינויים # The spelling (and pronunciation) קולורבי is a bit more common, but [3] and [4] list this spelling, from "kohlrabi". קונסולה ע קונץ ע # slang קוקו ע,אין_נטיות # slang קטנצ'יק ת,נקבה_ית # slang קיטבג ע קיט ע,אין_כינויים קליק ע,אין_כינויים # colloquial כלמידיה ע,אין_נטיות # disease - Chlamydia. TODO: Some write with ק, some with כ, which is correct? כ is more popular. קנדידה ע,אין_נטיות # disease - Candida קלמרי ע,אין_יחיד,רבים=קלמרי # [4] adds aleph for niqqud-less spelling: קלמארי כלבתא ע,נקבה,רבים=כלבתות,אין_כינויים קסילופון ע קסנופוביה ע,אין_נטיות קסנופוב ת,נקבה_ית קסנופובי ת ארכנופוביה ע,אין_נטיות ארכנופובי ת ארכנופוב ת,נקבה_ית קפוארה ע,אין_נטיות קרטה ע,אין_נטיות קרטיסט ת,נקבה_ית # usually colloquial קרט ע,אין_כינויים # [4] adds aleph for niqqud-less spelling: קראט קריזה ע,אין_כינויים # slang קריקט ע,אין_נטיות ריגורוזי ת רייטינג ע,אין_נטיות רמפה ע,אין_כינויים # colloquial רפטינג ע,אין_נטיות קרטינג ע,אין_נטיות שטריימל ע שיפוצניק ת,נקבה_ית שנורקל ע עדיליון ע פומלה ע,אין_כינויים # This is considered colloquial, with the correct word פומלו. I don't understand why. פומלו ע,אין_נטיות פומלית ע,אין_כינויים צפדינה ע,אין_נטיות אסכרה ע,אין_נטיות # קרמת דיפתריה ע,אין_נטיות # קרמת קוורץ ע,אין_נטיות קולוקוויום ע קוקסינל ע,אין_כינויים קורקינט ע קיווי ע,רבים=קיווים,אין_כינויים קלרינט ע קלרנית ע # A more Hebrew-like name for קלרינט אוניטרי ת # usually math term אוניטריות ע אופרטור ע # math term אופרנד ע,אין_כינויים # math term אורתוגונלי ת אורתונורמלי ת # math term איטרטור ע,אין_כינויים # computer programming term איטרציה ע,אין_כינויים טלפורטציה ע,אין_כינויים,יחיד טרנספורם ע,אין_כינויים # math term סקלר ע,אין_כינויים # math term סקלרי ת # math term פוטואלקטרי ת פלינדרום ע,אין_כינויים קומוטטיבי ת קריפטוגרפיה ע קריפטוגרפי ת קריפטולוגיה ע קריפטולוגי ת שנור ע,אין_נטיות # slang שנורר ת,נקבה_ית # slang שנוררות ע,יחיד # a more Hebrew-like variant of שנור (still slang) אינטרפרומטר ע,אין_כינויים # physics term שמנדריק ת,נקבה_ית # slang באובב ע,אין_נטיות ביגוניה ע,אין_כינויים בום ע,אין_כינויים # colloquial בונגלו ע,אין_כינויים,רבים=בונגלוס בוסטר ע,אין_כינויים ג'וינט ע,אין_כינויים # slang (and also a name of an organization) ג'ויסטיק ע גירוסקופ ע # Following English, many people prefer writing ג'ירוסקופ or even ג'יירוסקופ. [3] and [4] prefer the more Hebrew-like גירוסקופ. גובלן ע גיישה ע גיימר ת,נקבה_ית # slang גלאוקומה ע,אין_נטיות # The academia decided on a Hebrew term: ברקית. גליקוגן ע,אין_נטיות גרגוריאני ת יוליאני ת גרפיט ע,אין_נטיות מולטימדיה ע,אין_נטיות וידאו ע,אין_נטיות דטורה ע,אין_כינויים דטרגנט ע,אין_כינויים דיאז ע,אין_נטיות במול ע,אין_נטיות דיאטוני ת # music term דיאפרגמה ע דיאקריטי ת דיבל ע,אין_כינויים דיוואן ע,אין_כינויים דייט ע,אין_כינויים דיסקוס ע,אין_כינויים # sports and anatomy term הומונים ע,אין_כינויים הומופון ע,אין_כינויים הומופוני ת הומוגרף ע,אין_כינויים הומוגרפי ת הומולוגיה ע הומולוגי ת הומולוג ע,אין_כינויים היביסקוס ע,אין_כינויים # kind of plant הידרולוג ת,נקבה_ית הידרולוגיה ע,אין_נטיות הידרולוגי ת הידרופוביה ע,אין_נטיות הידרופובי ת הידרופוביות ע הידרופילי ת הידרופיליות ע הידרואלקטרי ת הידרודינמיקה ע,יחיד הידרודינמי ת הידרוליזה ע,יחיד הידרוסטטיקה ע,אין_נטיות הידרוסטטי ת הידרותרפיה ע,אין_נטיות הידרותרפיסט ת,נקבה_ית היסטולוגיה ע,אין_נטיות היסטולוגי ת היפרטרופיה ע,יחיד,אין_כינויים וולט ע,אין_כינויים וולטז' ע,אין_נטיות וולטאי ת וולטמטר ע מיליוולט ע,אין_כינויים קילווולט ע,אין_כינויים אמפר ע,אין_כינויים מיליאמפר ע,אין_כינויים קילואמפר ע,אין_כינויים ואט ע,אין_כינויים קילוואט ע,אין_כינויים מיליוואט ע,אין_כינויים מגוואט ע,אין_כינויים וזיר ע,אין_כינויים ונטיל ע,אין_כינויים # colloquial טבון ע,אין_כינויים טונוס ע,אין_נטיות טימפני ע,אין_נטיות טיפולוגיה ע,אין_נטיות טיפולוגי ת טריאומווירט ע,אין_כינויים # [3] spells this טריומווירט, but this spelling (also in [4]) is 10 times more popular in a Google search. TODO: reconsider טרכומה ע,אין_נטיות טרמולו ע,אין_נטיות טרנס ע,אין_כינויים טרנטה ע,סגול_ה,אין_נטיות # slang יורם ת,נקבה_ית # slang לבורנט ת,נקבה_ית ליברטו ע,אין_נטיות # There's a "Hebrew" word for this: is "לברית" לברית ע,אין_נטיות # [3] and [4] consider this a Hebrew word, and as such can have a chirik chaser. [3] and [4] allow the plural לבריות ([3] writes it ליבריות, but this is obviously a mistake). ליטרלי ת # [4] adds aleph for niqqud-less spelling: ליטראלי. ליידי ע,אין_נטיות מאסטרו ע,אין_נטיות קסטנייטה ע,אין_כינויים מדונה ע,אין_כינויים מונגולואיד ת,נקבה_ית מונגולואידי ת מוקסין ע מימיקה ע,אין_נטיות מיקרופילם ע,אין_כינויים פילם ע,אין_כינויים מיקרופיש ע,אין_כינויים מקברי ת # [4] adds aleph for niqqud-less spelling: מקאברי. מרידיאן ע נובוריש ת,נקבה_ית נובורישי ת נוקאאוט ע,אין_כינויים # [3] write this נוקאוט with only one aleph, [4] with two. I think [3]'s spelling makes little sense (can you have a patach followed by shuruk??) so I'll go with [4]. TODO: reconsider. סופיסט ת,נקבה_ית סופיזם ע,אין_נטיות סוציוביולוגיה ע,אין_נטיות סוציוביולוגי ת סטרפלס ע,אין_נטיות סלבריטי ע,אין_כינויים,רבים=סלבריטיז # From English. "סלבריטאי" is a more Hebrew-like version, but the real Hebrew is ידוען. סלבריטאי ת,ם סמובר ע סמטוחה ע,אין_נטיות # slang סמיילי ע,רבים=סמיילים,אין_כינויים # note added yod for niqqudless spelling סנובורד ע,אין_כינויים # This spelling is 100 times more common in Google than סנואובורד, and is the spelling [4] recognizes. סנוקר ע,אין_נטיות ספא ע,אין_נטיות סקסולוג ת,נקבה_ית סקסולוגיה ע,אין_כינויים,יחיד סרטיפיקט ע,אין_כינויים # only refers to the British-mandate era immigration permit. ערביסט ת,נקבה_ית # colloquial ערבסקה ע פאב ע,אין_כינויים # TODO: consider why the aleph ([4] puts it also with niqqud) פדלאה ע,זכר,נקבה,אין_כינויים # slang פומפרניקל ע,אין_נטיות פורניר ע,אין_נטיות פיוז'ן ע,אין_נטיות פיינליסט ת,נקבה_ית # [4] writes פינליסט with chirik פיפטה ע,אין_כינויים פיפי ע,אין_נטיות # slang פיירקס ע,אין_כינויים פיקולוא ע,נפרד=פיקולו,נסמך=פיקולו,ים,רבים=פיקולות,אין_כינויים # [3] says the plural is פיקולות, [4] says that and פיקולואים. פירומן ת,נקבה_ית פירומניה ע,אין_נטיות פלדלת ע,אין_נטיות פספרטו ע,אין_נטיות פקטין ע,אין_כינויים פקלה ע,סגול_ה,אות,אין_יחיד # פקלאות. slang, from yiddish. פריגטה ע,אין_כינויים פרימדונה ע,אין_כינויים # colloquial in metaphorical sense. פרימוס ע,אין_כינויים # archaic פריק ת,נקבה_ית # slang פריקי ת # slang פרקולטור ע צ'ופסטיק ע,רבים=צ'ופסטיקס,אין_כינויים צ'ופצ'יק ע,אין_כינויים # colloquial קוטר ת,נקבה_ית # slang קויוט ע,אין_כינויים # kind of animal קומביין ע,אין_כינויים קומבינזון ע # the spellings קומבניזון and קומביניזון are also common, but wrong. קונצרטינה ע קוסמונאוט ע,אין_כינויים קופירייטר ת,נקבה_ית קופירייטינג ע,אין_נטיות קורמורן ע,אין_כינויים # kind of bird סיקסק ע # kind of bird. I'm not confident that this spelling is justified, and it shouldn't be סקסק or שקשק. קיברנטי ת קיברנטיקה ע,אין_נטיות קינטי ת קינטיקה ע,אין_נטיות קיקבוקסינג ע,אין_נטיות נטורופתיה ע,אין_כינויים נטורופתי ת נטורופת ת,נקבה_ית קלריקליזם ע,אין_נטיות קלריקלי ת קמליה ע,אין_כינויים # kind of plant קמפור ע,אין_נטיות קפיטליזציה ע,אין_כינויים,יחיד קריוגני ת קריוגניקה ע,אין_נטיות קריז ע,אין_נטיות # slang, but there's not really a more legitimate word for this. רגנרציה ע,אין_כינויים,יחיד רדיאטור ע # both [3] and [4] agree about the presence of the silent aleph (which, according to the academia rules, causes the yod not to be doubled). רהביליטציה ע,אין_כינויים,יחיד רוגבי ע,אין_נטיות # [3] and [5] write רגבי, [4] writes רוגבי. The former makes more sense given the English pronunciation, but the latter is more common, and used by Rugby clubs in Israel and so on. רומבה ע,אין_נטיות רומנסה ע,אין_כינויים ראיפיקציה ע,אין_נטיות רסיבר ע,אין_כינויים שוויצר ת,נקבה_ית # colloquial שומקום ע,אין_נטיות # slang שוקולטייר ע,אין_כינויים אבלציה ע,אין_כינויים קוראן ע,אין_נטיות בלוג ע # new Internet jargon בלוגר ת,נקבה_ית # new Internet jargon # When a foreign word ends with ה, such as דוגמה, דרמה, or סכמה, there is # a controversy how to spell the related adjective - with ת or ט? # * If it to be converted to an adjective like most Hebrew nouns ending with ה, # it should get a ת (דוגמתי, דרמתי, סכמתי). # * However, if we consider the derived adjective to be foreign too (e.g., # דוגמטי derived from "Dogmatic"), then the "t" sound should be written as # a ט, and we get דוגמטי, דרמטי, סכמטי. The ט also makes it look just like # all other foreign adjectives that, incidentally, are not derived from a # noun ending with ה - for example, רומנטי, תאורטי, אנליטי. # [3] is consistent in prefering the ת variants. (and listing the ט variants # as pointers). [4] is less consistent: it only lists דוגמטי, unlike [3] # prefers דרמטי over דרמתי, and like [3] prefers סכמתי over סכמטי. # # In March 2004 the Academia decided (see http://hebrew-academy.huji.ac.il/ # decision3.html) that the טי spelling should be preferred. # In light of this decision, I commented out all the ת variants. דוגמה ע #דוגמתי ת #דוגמתיות ע דוגמטי ת דוגמטיות ע דרמה ע דרמטי ת דרמטיות ע דרמטיזציה ע מלודרמה ע מלודרמטי ת מלודרמטיות ע פסיכודרמה ע פסיכודרמטי ת סכמה ע סכמטי ת סיסטמה ע # This form isn't normally used in Hebrew. סיסטמטי ת סיסטמי ת #פרובלמה ע # This form isn't normally used in Hebrew. פרובלמטי ת # should perhaps be preferred over פרובלמתי. פרובלמטיות ע # should perhaps be preferred over פרובלמתיות. פרובלמטיקה ע,אין_נטיות סומטי ת # There's also the word סומה (meaning body), but it's not in use in Hebrew. # According to the Academia's decision, foreign words with the sound "ks" # should be written as קס, not as כס (the only exception is the name אלכסנדר). # For example, טקסט, אקסיומה, מקסימום, טקסטיל. In all these cases, [4] # recognizes the כס variant (e.g., אכסיומה), but following the Academia [3] # and we will not. סינמה ע,אין_נטיות # typically not used today סינמטי ת אקסיומה ע #אקסיומתי ת אקסיומטי ת טראומה ע #טראומתי ת טראומטי ת ארומה ע #ארומתי ת # this spelling, with ת, is rarely used and not recognized by [4], I'm not sure why. ארומטי ת #אניגמה #אניגמתי ת # this spelling, with ת, is rarely used. אניגמטי ת # should perhaps be preferred over אניגמטי. אסתמה ע,אין_נטיות #אסתמתי ת # this spelling with ת is not recognized by [4], I'm not sure why. אסתמטי ת כריזמה ע,אין_נטיות #כריזמתי ת כריזמטי ת פרוגרמה ע # [4] adds aleph for niqqudless spelling: פרוגראמה. #פרוגרמתי ת פרוגרמטי ת פרגמטי ת # [4] addes aleph for niqqud-less spelling: פרגמאטי פרגמטיות ע פרגמטיזם ע,אין_נטיות פרגמטיסט ת,נקבה_ית # not in [3] or [4], but in use. פרגמטיקה ע,אין_נטיות # linguistics term כרומטי ת # The academia have the following decision on their site: # שמות שמוצאם בלעז והמסתיימים בסיומת יה - האות שלפני היו"ד מנוקדת בשווא כאשר # לפניה תנועה. למשל: דמוקרטיה, ביולוגיה, היסטוריה, אקדמיה. האות שלפני הסיומת # מנוקדת בחיריק (ויו"ד הסיומת דגושה) כאשר לפניה אות בשווא. למשל: גאומטריה, # סימטריה, אנגליה, פונקציה. בכתיב חסר ניקוד: דמוקרטיה, ביולוגיה וכיו"ב לעומת # גאומטרייה, סימטרייה, וכיו"ב. # TODO: reconsider the spelling of all these words. סלקציה ע,אין_כינויים קונקורדנציה ע,אין_כינויים רפרודוקציה ע,אין_כינויים קופרודוקציה ע,אין_כינויים פרודוקציה ע,אין_כינויים # usually in the phrase קו-פרודוקציה פרופורציה ע דיספרופורציה ע פונקציה ע סימטריה ע אסימטריה ע גימטריה ע טריגונומטריה ע,אין_נטיות טריגונומטרי ת איזומטרי ת איזומטריה ע דיקציה ע אינסטנציה ע,אין_כינויים רדוקציה ע,אין_כינויים ראקציה ע,אין_כינויים ראקטיבי ת קונספציה ע,אין_כינויים קונבנציה ע,אין_כינויים # [4] also mentions a rarer spelling, קונוונציה. קולקציה ע # nowadays transformed into a fashion term. סקציה ע,אין_כינויים מונרכיה ע דדוקציה ע ארמיה ע אמולסיה ע פיקציה ע היררכיה ע # note that [3] and [5] prefer הייררכיה because of tsere in yod. Rav-Millim and I disagree. See also היררכי פנסיה ע אינטליגנציה ע קונסטרוקציה ע דקונסטרוקציה ע רקונסטרוקציה ע אינרציה ע אופציה ע ויויסקציה ע,אין_נטיות דמנציה ע,אין_נטיות בילהרציה ע,אין_נטיות רקורסיה ע,אין_נטיות פרוטקציה ע,אין_כינויים # Strangely, in Hebrew, this word has come to mean "favoritism", not "protection". A sensible Hebrew translation is perhaps חסות. סינרגיה ע,אין_נטיות סוגסטיה ע,אין_כינויים ליטורגיה ע,אין_נטיות פלואורסצנציה ע,אין_נטיות # [4] transcribes פלואורסנציה. why? [5] spells this the same as us (but with two yods) דיסלקסיה ע,אין_נטיות דיסלקטי ת,עם,ארץ= דיסלקט ת,נקבה_ית # colloquial? # [3] and [4] disagree about the number of yods that היפוכונדריה should have. # [4] puts chirik on the resh, and therefore two yods. [3] puts shwa on the # resh, and therefore one yod - but this makes this word have a strange row # of three schwas on after another! Nevertheless, I decided to go with [3] # here, because all the other beliefs and sicknesses above appear to have just # one yod... היפוכונדריה ע,אין_נטיות פוטנציה ע # usually not inflected אימפוטנציה ע,אין_נטיות אוליגרכיה ע אפילפסיה ע,אין_נטיות נרקולפסיה ע,אין_נטיות אנורקסיה ע,אין_נטיות אורתודוקסיה ע אנרכיה ע סוציומטריה ע,אין_נטיות אופטומטריה ע,אין_נטיות אורגיה ע גלקסיה ע רפלקסיה ע,אין_נטיות ביופסיה ע נוסטלגיה ע קדנציה ע סנקציה ע אטרקציה ע אינטראקציה ע גאומטריה ע # see also comment on גאו vs. גיאו גריאטריה ע,אין_נטיות פסיכיאטריה ע,אין_נטיות פדיאטריה ע,אין_נטיות # רפואת ילדים. This foreign word is rarely used. פודיאטריה ע,אין_נטיות # רפואת כפות רגליים. פסיכומטריה ע,אין_נטיות אלרגיה ע אינדוקציה ע כירורגיה ע,יחיד,אין_כינויים כירורגי ת כירורג ת,נקבה_ית כירליות ע אנרגיה ע מטלורגיה ע,אין_נטיות סטיפנדיה ע,אין_כינויים # מלגה גוורדיה ע,אין_נטיות # the following word have the ייה question *and* the ו vs. ב question: טריוויה ע פרובינציה ע פרובינציאלי ת פרובינציאליות ע פרוורסיה ע פרוורטי ת # The following words had 2 yods in Hspell 1.0, and also have two yods in rav # milim and sometimes in milon hahove. but according to our decision in # niqqudless.odt to always write יה in foreign words, we changed this in hspell 1.1: אונקיה ע פיצריה ע בטריה ע פנצ'ר ע,אין_כינויים פנצ'ריה ע סטייק ע,אין_כינויים סטייקיה ע גלידריה ע # colloquial טורטיה ע # TODO: consider if to apply this niqqudles.odt decision (which is in the # chapter of non-semitic languages) also to these Arabic words: כפייה ע # Many people spell כאפייה, but [3] and [5] agree with this spelling. גלבייה ע טורייה ע # note added yod for ktiv maleh. From Arabic, colloquial. מיטוכונדריון ע,רבים=מיטוכונדריה # TODO: is there a plural nismach? Maybe מיטוכונדריית? [4] doesn't have it, and we don't generate it. אנגלי ת,עם,ארץ=אנגליה,נקבה_ה # is this the right ktiv-male spelling? פלמי ת,עם,ארץ=פלנדריה לטבי ת,עם,ארץ=לטביה סרבי ת,עם,ארץ=סרביה # note bet dgusha! בלגי ת,עם,ארץ=בלגיה צ'צ'ני ת,עם,ארץ=צ'צ'ניה בוסני ת,עם,ארץ=בוסניה הרצגוביני ת,עם,ארץ=הרצגובינה אוסטרי ת,עם,ארץ=אוסטריה טורקי ת,עם,ארץ=טורקיה תורכי ת,עם,ארץ=תורכיה # alternative spelling: are both correct? בוורי ת,עם,ארץ=בווריה סקסוני ת,עם,ארץ=סקסוניה קולומביאני ת,עם,ם,ארץ=קולומביה גליציאני ת,עם,ארץ=גליציה קסטיליאני ת,עם,ארץ=קסטיליה לומברדי ת,עם,ארץ=לומברדיה נאנדרטלי ת,עם,ארץ= קרפטי ת,עם,ארץ= אינואיט ת,נקבה_ית אינואיטי ת פונקציונלי ת פונקציונליזם ע,אין_נטיות פונקציונליסט ת,נקבה_ית # not in [3] or [4], but I think can be derived from פונקציונליזם פונקציונליסטי ת # not in [3] or [4], but I think can be derived from פונקציונליזם סימטרי ת סימטריות ע אסימטרי ת אסימטריות ע רדוקציוניזם ע,אין_נטיות רדוקציוניסט ת,נקבה_ית # not in [4], but I think it's sensible for a person who practices רדוקציוניזם. רדוקציוניסטי ת,נקבה_ית # not in [4], but I think it's sensible for something related to רדוקציוניזם. ראקציונר ת,נקבה_ית ראקציוני ת מונרכי ת מונרכיזם ע,אין_נטיות מונרכיסט ת,נקבה_ית מונרך ת,נקבה_ית דדוקטיבי ת פרופורציוני ת # not recognized by [3] פרופורציונלי ת # not recognized by [3] דיספרופורציוני ת דיספרופורציונלי ת # strangely, not recognized by [4] which does recognize פרופורציונלי and דיספרופוציוני. פיקטיבי ת פיקטיביות ע היררכי ת # see comment on היררכיה הירוגליף ע,אין_כינויים # The singular is very rarely used. note that [3] and [5] prefers היירוגליפים because of tsere in yod. Rav-Millim and I disagree. See also היררכי הירוגליפי ת פנסיון ע פנסיוני ת אינטליגנטי ת אינטליגנט ת,נקבה_ית קונסטרוקטיבי ת קונסטרוקטיביזם ע,אין_נטיות # art term דסטרוקטיבי ת קונסטרוקטור ת,נקבה_ית # civil engineering term דמנטי ת רקורסיבי ת פרוטקציוניזם ע,אין_נטיות פרוטקציונר ת,נקבה_ית # colloquial סלקטור ת,נקבה_ית סוגסטיבי ת ליטורגיקה ע,אין_נטיות פלואורסצנט ע,אין_נטיות פלואורסצנטי ת היפוכונדר ת,נקבה_ית אימפוטנט ת,נקבה_ית אימפוטנטי ת אימפוטנטיות ע אוליגרכי ת אוליגרך ע,אין_כינויים אוליגרכית ע,אין_כינויים אפילפטי ת אנורקטי ת # this is the form found in [4] אנורקסי ת # NOTE: non-standard variant of אנורקטי, not recognized by [4] or any other dictionary I checked. However, I consider it more Hebrew-like, and on Google it is much more common than the אנורקטי form. אורתודוקס ת,נקבה_ית אורתודוקסי ת אנרכי ת אנרכיסט ת,נקבה_ית אנרכיסטי ת אנרכיזם ע,אין_נטיות סוציומטרי ת אופטומטריסט ת,נקבה_ית גלקטי ת אינטרגלקטי ת נוסטלגי ת אטרקטיבי ת אטרקטיביות ע אינטראקטיבי ת אינטראקטיביות ע גאומטרי ת # see also comment on גאו vs. גיאו גריאטרי ת פסיכיאטרי ת פסיכומטרי ת אלרגי ת אלרגן ע אלרגני ת אינדוקטיבי ת אנרגטי ת מטלורגי ת מיטוכונדרי ת # foreign words that are often used in Hebrew, but have not been adopted # in the language, and *do* also have often-used Hebrew counterpart words # or short phrases: קטגוריה ע קטגוריזציה ע אינפורמציה ע דיסאינפורמציה ע אינטגרציה ע אנימציה ע אנימטור ת,נקבה_ית אנימה ע,אין_נטיות # אנימציה יפנית וריאציה ע וריאנט ע אינווריאנט ע # science term. An older form is אינווריאנטה. אינווריאנטי ת # science term אופציונלי ת אינפורמטיבי ת אינטגרלי ת אינטגרטיבי ת אלגנטי ת גלובלי ת גלובליזציה ע מינימום ע מינימלי ת # [4] prefers niqqud-less spelling of מינימאלי. That's against Academia rules, and why does it spell מינימליזם without the same aleph? מינימליסטי ת מינימליזם ע,אין_נטיות מינימליזציה ע,אין_נטיות # rarely used today - instead there is מזעור מינימיזציה ע,יחיד,אין_כינויים # Usually only used in math context # According to the Academia's decision, foreign words with the sound "ks" # should be written as קס, not as כס (the only exception is the name אלכסנדר). # For example, טקסט, אקסיומה, מקסימום, טקסטיל. In all these cases, [4] # recognizes the כס variant (e.g., אכסיומה), but following the Academia [3] # and we will not. מקסימום ע # TODO: the Academia also alows the plural מקסימאות (mentioned in a decision on their site). מקסימלי ת מקסימיזציה ע,יחיד,אין_כינויים # Usually only used in math context טקסטיל ע טקסט ע טקסטואלי ת פורמט ע פורמלי ת # [4] prefers to add aleph in niqqud-less spelling: פורמאלי. פורמליות ע פורמליזם ע,אין_נטיות פורמליסט ת,נקבה_ית פורמליסטי ת # not in [4] פורמליסטיקה ע,אין_נטיות # not in [4] פורמליזציה ע,אין_נטיות פרופיל ע פרופילקטי ת פרלמנט ע פרלמנטרי ת פרלמנטר ת,נקבה_ית פרלמנטריזם ע,אין_נטיות רוטינה ע רוטיני ת אובייקט ע אובייקטיבי ת אובייקטיביות ע סובייקט ע,אין_כינויים סובייקטיבי ת סובייקטיביות ע אנטנה ע נגטיב ע נגטיבי ת פוזיטיב ע פוזיטיבי ת פוזיטיביזם ע,אין_נטיות קואורדינציה ע קוד ע קומפילציה ע רציונלי ת רציונליזציה ע רציונל ע,אין_נטיות רציונליזם ע,אין_נטיות רציונליסט ת,נקבה_ית רציונליסטי ת רציונליות ע אירציונלי ת אירציונליות ע דיאגנוזה ע סימולציה ע סימולטור ע ספירלה ע ספירלי ת פלטה ע קונטרסט ע אבסולוטי ת אוטונומיה ע אוטונומי ת אופרטיבי ת פרקטי ת פרקטיות ע פרקטיקה ע,אין_כינויים פרויקט ע אינדקס ע מגזין ע אקורד ע אקטואלי ת אקטואליה ע אנונימי ת אנונימיות ע אילוסטרציה ע פלטפורמה ע צילינדר ע אגרסיבי ת אגרסיביות ע אגרסיה ע,אין_כינויים # Not in [3], but in [4]. I consider this, especially the plural, colloquial סקס ע,אין_נטיות סקסי ת סקסואלי ת סקסיזם ע,אין_נטיות סקסיסטי ת אקטיבי ת סטנדרטי ת סטנדרט ע # [3] says סטנדרד. [4] and I say סטנדרט. סטנדרטיזציה ע,אין_נטיות מודל ע אינטלקטואלי ת אינטלקטואל ת,נקבה_ית אינטלקט ע אלכוהול ע,אין_נטיות אלכוהולי ת חמולה ע גנרל ת,נקבה_ית גנרלי ת גנרליסימו ע,אין_נטיות קורפורל ת,נקבה_ית סירנה ע מדליון ע מטרופולין ע,נקבה # Feminine according to Academia decision (see http://hebrew-academy.huji.ac.il/decision3.html) [3] and [4]. מטרופוליני ת # not in [3] or [4], but I consider this word valid. פלקט ע פלקטי ת רזרבה ע רזרבי ת פנורמה ע,אין_כינויים פנורמי ת קונגרס ע שף ת,נקבה_ית דנטלי ת קוסמטיקה ע,אין_נטיות קוסמטי ת קוסמטיקאי ת,ם כימיה ע,אין_נטיות כימאי ת,ם כימי ת ביוכימיה ע,אין_נטיות ביוכימאי ת,ם ביוכימי ת ביוטכנולוגי ת ביוטכנולוגיה ע,אין_נטיות ביוטכנולוג ת,נקבה_ית # not recognized by [4] ביואינפורמטיקה ע,אין_נטיות ביואינפורמטי ת אלכימיה ע,אין_נטיות אלכימאי ת,ם אלכימי ת סלקטיבי ת קונטיננטלי ת וולגרי ת רקטה ע רקטי ת פוסטר ע טורניר ע דירקטור ת,נקבה_ית דירקטוריון ע אופטימלי ת # [4] adds a aleph for niqqud-less spliing: אופטימאלי. אופטימום ע,אין_נטיות אופטימיזציה ע דיאלוג ע דיאלוגי ת ראלי ת # [4] adds a yod for niqqud-less spelling: ריאלי (and similarly for the following words:) ראליזם ע,אין_נטיות ראליסטי ת ראליסט ת,נקבה_ית סוראליסטי ת סוראליזם ע,אין_נטיות סוראליסט ת,נקבה_ית # Not commonly used, but in some use. ראליטי ע,אין_נטיות # colloquial ז'נר ע # Uncharacteristicly, [3] also allows the variant with aleph. I don't know why. קליניקה ע קליני ת קלינאי ת,ם גריל ע מוניציפלי ת סיטואציה ע נישה ע מינרל ע מינרלי ת מינרלוגיה ע,אין_כינויים # A common misspelling is מינרולוגיה מינרלוג ת,נקבה_ית מינרלוגי ת אפקט ע דיקטטור ת,נקבה_ית דיקטטורה ע דיקטטורי ת ארכיטקט ע ארכיטקטית ע ארכיטקטורה ע # Has some submeanings not common with אדריכלות (e.g., computer system design). ארכיטקטוני ת מלודי ת מלודיה ע מולקולה ע מולקולרי ת אוניברסלי ת אוניברסליות ע אנלוגיה ע אנלוגי ת אסתטיקה ע,יחיד,אין_כינויים אסתטי ת אסתטיות ע ארכאי ת # the ם plural sounds good to me, but no dictionary accepts it. מונוטוני ת מונולוג ע מינורי ת מינור ע,אין_נטיות # music term מז'ורי ת מז'ור ע,אין_נטיות # music term סירופ ע אינדיבידואלי ת אינדיבידואליזם ע,אין_נטיות אינדיבידואליסט ת,נקבה_ית אינדיבידואליסטי ת אינדיבידואל ע אינדיבידואום ע # rare alternatrive to אינדיבידואל הרמוניה ע הרמוני ת דיסהרמוניה ע ויזואלי ת הומני ת הומניזציה ע,אין_נטיות הומניטרי ת קולקטיבי ת קולקטיביות ע קולקטיב ע,אין_כינויים קולקטיביזם ע,אין_נטיות קולקטיביסט ת,נקבה_ית קולקטיביסטי ת קולקטיביזציה ע,יחיד,אין_כינויים קמפוס ע קרוון ע קרווילה ע # A more recent slang term, which together with the phrase "מבנים יבילים" almost replaced קרוון... אורבני ת אורבניזציה ע,אין_כינויים,יחיד אורגזמה ע אלסטי ת אלסטיות ע מנטלי ת מנטליות ע סופרמרקט ע מינימרקט ע פרוגרסיבי ת פרוגרסיביות ע פרודוקטיבי ת פרודוקטיביות ע פריפריה ע פריפריאלי ת פריפרי ת # Alternative to פריפריאלי אורגן ע אורגניסט ת,נקבה_ית אינסטלטור ע אינסטלציה ע אינקובטור ע אליטה ע אליטיזם ע,אין_נטיות אליטיסטי ת אליטיסט ת,נקבה_ית אפיזודה ע אפיזודי ת # Not recognized by [3] or [4], but I think it's used. אקסטזה ע אקסטטי ת אקסטרני ת אקסצנטרי ת אינדיקציה ע אינדיקטור ע אינדיקטיבי ת # not recognized by [3] or [4], but I think it's used. אלגוריה ע אלגורי ת בישוף ע ארכיבישוף ע בישופות ע ארכיבישופות ע בריגדה ע ארכיב ע דיאלקט ע דיונה ע אבסטרקטי ת אג'נדה ע,יחיד # Agenda is already plural, in latin, so no plural of it :) אגואיזם ע,אין_נטיות אגואיסט ת,נקבה_ית אגואיסטי ת אגוצנטרי ת אדמיניסטרציה ע אדמיניסטרטיבי ת אדמיניסטרטור ת,נקבה_ית אוריינטלי ת אוריינטליזם ע,אין_נטיות אוריינטליסטי ת # related to אוריינטליזם אינטריגה ע אלימינציה ע אלקטורלי ת אמוציה ע אמוציונלי ת אמורפי ת אמורפיות ע,יחיד אספקט ע אפליקציה ע אקוטי ת # Hebrish for "accute". אקונומי ת אקטיביסט ת,נקבה_ית אקטיביזם ע,אין_נטיות אקטיביסטי ת אקסקלוסיבי ת אריתמטיקה ע,אין_נטיות אריתמטי ת בלרינה ע בלוק ע בולדוזר ע פיגמנט ע פיגמנטציה ע,יחיד,אין_כינויים קמפיין ע אימייל ע מייל ע,אין_כינויים # This has (unfortunately) become the common word for e-mail פוגרום ע ציטטה ע # מובאה סטז' ע # [4] says that the niqqud-less spelling is סטאז'. I don't know why. סטז'ר ע סטז'רית ע הרמטי ת הרמטיות ע אמביציה ע אמביציוזי ת מריונטה ע לינארי ת טקסטורה ע אקרובט ת,נקבה_ית אקרובטי ת אקרובטיקה ע,אין_נטיות אקרן ע # archaic French-based term, no longer in use nowadays. ארטילריה ע ארטילרי ת אריסטוקרטיה ע אריסטוקרטי ת אריסטוקרט ת,נקבה_ית בזאר ע # [4] spells this with א, [3] without. I am going with [4]'s decision, because the English spelling also reminds us of a long vowel, like when in Arabic an aliph is added: Bazaar. בלטה ע בנלי ת בנליות ע בקטריה ע בקטריאלי ת # Most commonly in the phrase אנטי-בקטריאלי אנטיבקטריאלי ת בקטריולוגי ת בקטריולוגיה ע,אין_נטיות בקטריולוג ת,נקבה_ית בריקדה ע גימנסיה ע # archaic word for highschool גלדיאטור ע דוקומנטרי ת דוקומנטציה ע הומוגני ת הומוגניות ע הטרוגני ת הטרוגניות ע אינטרפרטציה ע אינסטרומנט ע # foreign word, not normally used in modern writing אינקובציה ע אמולציה ע # computer term. חיקוי. אמנציפציה ע אוטואמנציפציה ע אנסמבל ע אספירציה ע טוטלי ת אפילוג ע אפיקורס ת,נקבה_ית,יחיד=אפיקורוס אפיקורסי ת אפיקורסות ע,יחיד אקספרימנט ע אקספרימנטלי ת ארגומנט ע ארגומנטציה ע ארוגנטי ת ארוגנטיות ע ארמדה ע ארסנל ע בומבסטי ת בומבסטיות ע גלוריפיקציה ע,יחיד גנגסטר ת,נקבה_ית # slang גנרי ת דבילי ת # slang דביליות ע # slang דביל ת,נקבה_ית # slang דיאגרמה ע דיסקט ע דלוזיה ע #דמון ע # not normally used in modern Hebrew, but דמוני is. דמוני ת דמוניזציה ע,אין_נטיות דפקט ע # [4] calls this slang, but doesn't say that about דפקטיבי... דפקטיבי ת דקורטיבי ת דקורציה ע דקורטור ע דקורטורית ע דקלרציה ע דקלרטיבי ת הדוניזם ע,אין_נטיות הדוניסט ת,נקבה_ית הדוניסטי ת הוסטל ע היברידי ת היבריד ע,אין_כינויים הליקופטר ע ספקולציה ע ספקולטיבי ת קומיקאי ת,ם קומי ת קומיקס ע,אין_יחיד,רבים=קומיקס הרמוניקה ע וולונטרי ת ווקלי ת וולקני ת ואדי ע,ות # Note that [3] prefers to spell this without an aleph, and [4] spells it with an aleph. I disagree with [3], because the Arabic word also has aleph, and so according to the Academia's traditions, it should be kept. Moreover, this is how the vast majority of people spell. היבריס ע,אין_נטיות אפידרמיס ע,אין_נטיות דרמיס ע,אין_נטיות דרמטולוג ת,נקבה_ית דרמטולוגי ת דרמטולוגיה ע,אין_נטיות ויברציה ע אמנזיה ע,אין_נטיות # [3] has the spelling אמנסיה. I think the Academia's decision about ס/ז mandates a ז here. אוברדרפט ע,אין_נטיות קוסמוס ע,אין_נטיות מיקרוקוסמוס ע,אין_כינויים ז'רגון ע זבנג ע,אין_נטיות # slang קטליזטור ע קטליטי ת קטליזה ע,אין_נטיות חמסין ע # colloquial, for שרב. חצ'קון ע # slang מחוצ'קן ת,נקבה_ת # slang חררה ע,אין_נטיות # There's an archaic word with the same spelling, but the current colloquial word (meaning a rash) is not inflected. לוגיקה ע,יחיד,אין_כינויים לוגי ת לוגיקן ת,נקבה_ית טבלואיד ע טולרנטי ת טולרנטיות ע טוקסידו ע,אין_נטיות טיפ ע,אין_כינויים # TODO: the smichut forms aren't used... טלגרמה ע טמפרמנט ע טריבונה ע טריבונל ע תרמוסטט ע תרמודינמיקה ע,אין_נטיות # physics term תרמודינמי ת # physics term תרמוס ע,אין_כינויים # Academia's translation: שמרחום. תרמי ת היפותרמיה ע,אין_נטיות היפותרמי ת טרמינולוגיה ע טרמינולוגי ת טרנזיטיבי ת # math term טרנספורמטור ע # electricity term טרנספורמציה ע טרנסליטרציה ע,יחיד,אין_כינויים ברונזה ע,אין_נטיות כאוס ע,אין_נטיות כאוטי ת באולינג ע,אין_נטיות מגיה ע,אין_נטיות מגי ת # [4] adds aleph for niqqudless-spelling - מאגי - but strangely doesn't add aleph in מגיה. מג ע,אין_נטיות # In the phrase רב-מג סיליקט ע,אין_כינויים מיקה ע,אין_נטיות # mica. the Hebrew name is נציץ. כרונולוגי ת כרונולוגיה ע כרוני ת כרוניקה ע לבירינת ע,ים לגונה ע לקונה ע # legal term לגלי ת לגליות ע לגליזציה ע,אין_נטיות לובי ע,אין_נטיות לוביסט ת,נקבה_ית לויאלי ת # Interesting, even [3] writes this with an aleph. לויאליות ע לויאליסט ת,נקבה_ית לוקלי ת לוקליזציה ע לוקסוס ע # colloquial לינגוויסטיקה ע,אין_נטיות לינגוויסטי ת לירי ת ליריקה ע,אין_נטיות ליריות ע לקסיקון ע לקסיקוגרפי ת לקסיקוגרפיה ע,יחיד לקסיקלי ת מגלומן ת,נקבה_ית מגלומניה ע,אין_נטיות מגלומני ת מדיה ע,אין_נטיות # in Hebrew, this is singular (but talking about all types of mass communications). מדיום ע # usually in the parapsychological sense. TODO: The Academia also allows מדייאות (mentioned in a decision on their site). מדיצינה ע,אין_נטיות # archaic מדיציני ת מוביליות ע,אין_נטיות מודולציה ע # physics term מודול ע # engineering term מודולרי ת # engineering term מודוס ע מודלי ת # [4] prefers מודאלי in niqqud-less spelling מודיפיקציה ע מוטו ע,אין_נטיות # [3] recognizes a plural מוטואים. מונודרמה ע # play with one actor only. מחזה יחיד מונומנט ע מונומנטלי ת # [4] prefers the niqqud-less spelling מונומנטאלי. [3] and I disagree. מורפולוגיה ע,אין_נטיות # linguistics term מורפולוגי ת # linguistics term מטבוליזם ע,אין_נטיות מטבולי ת מטריאליזם ע,אין_נטיות מטריאליסט ת,נקבה_ית מטריאליסטי ת מטריאלי ת # for מיזנתרופ, פילנתרופ, [4] also allows spelling with a ט, but (rightly) # prefers a ת (as it is the transliteration of anthropy). Strangely, it # appears that the ט variants are actually more common (e.g., on Google), # possibly showing the population's preference of ט for foreign words, # together with the fact that the [4]-based spellcheckers accept this spelling. מיזנתרופ ת,נקבה_ית מיזנתרופי ת מיזנתרופיה ע,אין_נטיות פילנתרופ ת,נקבה_ית פילנתרופי ת פילנתרופיה ע,אין_נטיות מיליטנטי ת מיליטנט ת,נקבה_ית מיליטריזם ע,אין_נטיות מיליטריסט ת,נקבה_ית מיליטריסטי ת מיליטריזציה ע,אין_נטיות # not in [3] or [4], but in use. מילניום ע,אין_נטיות # I hate this word... מיניסטר ע # not in modern use מיניסטריון ע # not in modern use מיניסטריאלי ת מיקרוב ע # not in modern use, except as slang. מיקרוביאלי ת מכניזם ע מלנכולי ת מלנכוליה ע,אין_נטיות ממברנה ע אקופונקטורה ע,אין_נטיות מניפסט ע,אין_כינויים מרטיר ע,אין_כינויים מרטירולוגיה ע,אין_נטיות # TODO: rare, consider removing מרינה ע מרמיטה ע # How much wood would a woodchuck chuck, if a woodchuck would chuck wood? מרשל ע,אין_כינויים מתודה ע מתודי ת מתודיקה ע,אין_כינויים מתודולוגיה ע מתודולוגי ת פירה ע,סגול_ה,אין_נטיות נאיבי ת נאיביות ע,יחיד נומינלי ת נומרי ת # computers term. נונשלנטי ת נונשלנטיות ע,יחיד שטנץ ע,אין_כינויים נרטיב ע נרטיבי ת סגרגציה ע ליטיגציה ע,יחיד סטרטאפ ע סטרטאפיסט ת,נקבה_ית סטנדאפ ע,אין_נטיות סטנדאפיסט ת,נקבה_ית לפטופ ע סובטילי ת # not in modern use. סוביודיצה ע,אין_נטיות סובלימציה ע,אין_כינויים # psychology and chemistry term סובסטרט ע,אין_כינויים סוברני ת סוברניות ע סופרפוזיציה ע,אין_כינויים # physics term סוציאליזציה ע,אין_כינויים # sociology term סטודיו ע,אין_נטיות סטטוטורי ת סטטיסט ת,נקבה_ית סטיגמה ע סטיקר ע,אין_כינויים # I hate this useless English loan word. TODO: reconsider this word סטנד ע,אין_כינויים # I hate this useless English loan word. TODO: reconsider this word סטנוגרפיה ע,אין_נטיות סטנוגרפי ת סטנוגרמה ע,אין_כינויים סטרוקטורה ע סטרוקטורלי ת סטרוקטורליזם ע,אין_נטיות סטרוקטורליסטי ת סטרוקטורליסט ת,נקבה_ית # not in [4] סטרילי ת סטריליות ע סטריליזציה ע,אין_נטיות סטרפטוקוק ע,אין_כינויים קרחלמדגשבעך ע,אין_נטיות סינגל ע # music term סיגנל ע סיינטולוגיה ע,אין_נטיות סיינטולוגי ת # not in [3] or [4], but in use. סיינטולוג ת,נקבה_ית # not in [3] or [4], but in use. סימבול ע,אין_כינויים סימבולי ת סימבוליות ע סימבוליקה ע,אין_נטיות סימבוליזם ע,אין_נטיות סימולטני ת סימולטניות ע סינגולרי ת סינגולריות ע,אין_נטיות # math and physics term סינונים ע,אין_כינויים סינונימי ת סינופסיס ע,אין_נטיות סינטקטי ת סירקולציה ע # TODO: or perhaps צירקולציה? סלוגן ע,אין_כינויים סליק ע,אין_כינויים סנוב ת,נקבה_ית סנובי ת סנוביות ע סנוביזם ע,אין_נטיות סנטימנט ע,אין_כינויים סנטימנטלי ת סנטימנטליות ע סניור ת סניטר ת,נקבה_ית סניטרי ת סניטציה ע,אין_נטיות סנסור ע,אין_כינויים סנסציה ע סנסציוני ת ספונסר ת,נקבה_ית ספורדי ת ספרטיזם ע,אין_נטיות ספרטיסטי ת סקולרי ת סקולריזציה ע,אין_נטיות סקטור ע,אין_כינויים סקטוריאלי ת סקטוריאליות ע # not in [3] or [4], but I think it exists. סקיצה ע סקלה ע,אין_כינויים # note: [4] adds aleph for ktiv maleh: סקאלה. סקנדל ע סקפטי ת סקפטיות ע סרקופג ע סרקסטי ת סרקזם ע,אין_נטיות פאוזה ע,אין_נטיות # music term פבריקציה ע פגני ת,עם,ארץ= # note: [4] addes aleph for niqqud-less spelling: פגאני. פגניות ע אנימיזם ע,אין_נטיות אנימיסטי ת אנימיסט ת,נקבה_ית פדגוג ת,נקבה_ית פדגוגי ת פדגוגיה ע,אין_נטיות פואטיקה ע,אין_נטיות פואטי ת פואטיות ע # sometimes used instead of פיוטיות, but not in [3] or [4]. פואמה ע פוזיציה ע פוטוסינתזה ע,אין_נטיות פוטש ע,אין_נטיות פוליו ע,אין_נטיות פוליאסטר ע,אין_נטיות פוליסה ע פולס ע,אין_כינויים פונדמנטלי ת פוספט ע,אין_כינויים פורטרט ע פורמולה ע,אין_נטיות פורצלן ע,אין_נטיות פזה ע,אין_כינויים # [4] gives niqqud-less spelling פאזה. פזי ת # in phrases like תלת-פזי פטיציה ע פטלי ת # [4] gives niqqud-less spelling פטאלי. פטליזם ע,אין_נטיות פטליסט ת,נקבה_ית פטרנליסטי ת פטרנליזם ע,אין_נטיות פיאסקו ע,אין_נטיות פידבק ע,אין_כינויים פיון ע,אין_כינויים # chess pawn פילטר ע פירמה ע,אין_כינויים פלירט ע,אין_נטיות פלנטה ע פלנטרי ת פלנטריום ע # TODO: The Academia also allows פלנטרייאות (mentioned in a decision on their site). פלש ע,אין_נטיות פמפלט ע פאוץ' ע,אין_כינויים פנדל ע,אין_כינויים # soccer term פסטה ע,אין_כינויים פסיבי ת פסיביות ע פציינט ע פציינטית ע פקטור ע,אין_כינויים פרובוקציה ע פרובוקטיבי ת פרובוקטור ת,נקבה_ית פרוביזורי ת # [3] and [4] list both פרוטזה and פרותזה as a transliteration of "prosthesis". # [3] mentions no preference, [4] prefers פרותזה. ת is also the correct # transliteration from the "th" - but this is marred by the fact that we don't # have an accurate transliteration anyway (where did the "s" go?), and that the # ט form is far more commonly used. # We'll allow only the ת form for now, but TODO: reconsider this decision. פרותזה ע #פרוטזה ע פרולוג ע,אין_כינויים פרונטלי ת # [4] adds aleph for niqqud-less spelling: פרונטאלי. פרולטריון ע,אין_נטיות פרומו ע,רבים=פרומואים,אין_כינויים פרופגנדה ע פרופלור ע פרוצדורה ע,אין_כינויים פרוצדורלי ת # [4] adds aleph for niqqud-less spelling: פרוצדוראלי. פרזיט ע,אין_כינויים # the metaphoric sense is considered slang. פרזיטי ת פרזיטיות ע פרזנטציה ע פרזנטור ת,נקבה_ית # marketing term, not related to the generic פרזנטציה. פרטיקולרי ת # [4] adds aleph for niqqud-less spelling: פרטיקולארי. פרטיטורה ע פרטנר ת,נקבה_ית פריזמה ע פריזמטי ת פרילנס ע,אין_נטיות פרילנסר ת,נקבה_ית פרימט ע,אין_כינויים # [4] accepts this spelling, without extra aleph, but in it's description (mistakenly?) also mentions פרימאטים. פרינציפ ע,אין_כינויים פרינציפיוני ת פרמננטי ת פרמננט ע,אין_נטיות # hair style פרנקופון ת,נקבה_ית פרנקופוני ת פרנקופיל ת,נקבה_ית פרסונה ע,אין_כינויים פרסוניפיקציה ע,אין_כינויים פרסונלי ת # [4] adds aleph for niqqud-less spelling: פרסונאלי. פרסונליות ע # in [4] (with added aleph: פרסונאליות), but rarely ever used. פרסונל ע,אין_נטיות # סגל פררוגטיבה ע,אין_כינויים פתוגן ע,אין_כינויים פתוגני ת צ'ט ע,אין_כינויים # Internet slang term צ'יפס ע,אין_נטיות קולה ע,אין_נטיות צלולוזה ע,אין_נטיות קואופרציה ע אופרציה ע קוגניטיבי ת קוגניציה ע,אין_נטיות קודקס ע,אין_כינויים קולג' ע,אין_כינויים קולגה ע,זכר,נקבה # [4] says it is masculine, but can also function as feminine. קולגיאלי ת קולגיאליות ע קולוניה ע קולוניזציה ע,יחיד,אין_כינויים קולונל ע,אין_כינויים אורתוגרפיה ע,אין_כינויים אורתוגרפי ת דיפתונג ע # [4] also accepts דיפטונג, but doesn't list it. קומבינציה ע,אין_כינויים קומוניקציה ע,אין_נטיות קומיסר ת,נקבה_ית # archaic soviet term קומפוננט ע,אין_כינויים # TODO: consider adding קומפוננטה. The plural קומפוננטות is more common in Google than קומפוננטים! קומפלימנט ע,אין_כינויים קונטקסט ע,אין_כינויים קונטקסטואלי ת # strangely not in dictionaries, but I think this is a valid word. קונסולידציה ע קונסטיטוציה ע קונסטיטוציוני ת # Hebrew for English "constitutional" קונסטיטוטיבי ת # Hebrew for English "constitutive" # [4] spells קונצפציה with צ, while [3] prefers to spell it with ס, קונספציה # (but allows both). Similarly, there is no concensus on how to spell קונספט, # קונספטואלי, or קונצפט, קונצפטואלי. Google counts show an overwhelming # preference to the ס forms, and these are also the way that these words are # usually pronounced by Hebrew speakers (probably because of English # influence), so I decided to prefer these forms. # Ironically's there is also no concensus on how to spell קונצנזוס/קונסנזוס. # In that case, it is the צ form that is preferred by [4], and an actual # צ is usually pronounced by Hebrew speakers. # A similar issue is פלצבו/פלסבו. [4] prefers צ, but the modern English- # influenced ס is more commonly pronounced; Both are equally common in Google, # and a third, even more English influnced פלסיבו, is even more common. # In many other words with the same letters, the ס/צ question never comes up # and צ is preferred - perhaps because these words became commonly used # before English influence on Hebrew - see # קונצרט, קונצרן, ספציפי, רצפטור ו- *צנטרי* )צנטריפוגה, אגוצנטרי, וכד'(, *צנטר* # There are also a lot of words which in English are written with "sc" and # in Hebrew, this is normally written as סצ rather than a single ס, e.g., # טרנסצנדנטי, טרנסצנדנטלי, סצנה, פלואורסצנטי, אקסצנטרי, דיסציפלינה. # See also *צלול* (צלוליטיס, צלולוזה, וכד' מול סלולרי), פרוביצ* # TODO: reconsider this decision. # TODO: check what [5] does in this question. קונספט ע,אין_כינויים קונספטואלי ת קונספטואליזציה ע,אין_כינויים פלסבו ע,אין_נטיות # TODO: reconsider קונצנזוס ע,אין_כינויים # [5] prefers קונסנסוס. Note that in the latin word, there's an s, not a c. אימפליציטי ת # TODO: rarely used. reconsider. אקספליציטי ת # TODO: rarely used. reconsider. ציקלי ת ציקלון ע,אין_כינויים סלוטייפ ע,אין_כינויים # The spelling with ס is more common, but the pronunciation is often with a צ... Note added yod for niqqudless spelling. ציקלופ ע,אין_כינויים # [4] prefers the spelling קיקלופ, [3] prefers ציקלופ. קיקלופ is more common in Google. ציקלמט ע,אין_נטיות צנטרליזציה ע,אין_נטיות צנטרליזם ע,אין_נטיות צנטרליסטי ת צנטרליסט ת,נקבה_ית פרסלציה ע קונספירציה ע קונסרב ע,אין_יחיד,אין_כינויים # Archaic קונסרבטיבי ת,עם,ארץ= # שמרני, but nowadays usually used for the so-called "conservative" branch of Judaism (which ironically isn't very conservative). קונפיטורה ע קונפליקט ע,אין_כינויים קונפרונטציה ע,אין_כינויים קונצנטרי ת # math term קונקלוסיבי ת קורלציה ע,אין_כינויים קתטר ע,אין_כינויים # צנתר קטסטרופה ע,אין_כינויים # [3] marks this "slang"; I think it's a foreign word with a good Hebrew alternative (אסון), but not slang. קטסטרופלי ת קטרקט ע,אין_נטיות # ירוד קיטש ע,אין_נטיות קיטשי ת קליגרפיה ע,אין_נטיות קליגרפי ת קליינט ע,אין_כינויים קליינטית ע,אין_כינויים קליינטורה ע,אין_כינויים,יחיד קלסר ע קמיקזה ע,אין_נטיות # [4] adds aleph for niqqud-less spelling: קמיקאזה. קנטון ע,אין_כינויים קסטה ע,אין_כינויים # caste or cassette, and also ice-cream sandwich. קפסולה ע,אין_כינויים קפריזה ע קפריזי ת קפריזיות ע קרדינל ע,אין_כינויים קרדינלי ת קרואסון ע קרוטון ע,אין_כינויים קרוסלה ע,אין_כינויים קרימינל ת,נקבה_ית # [4] doesn't add aleph for niqqud-less spelling, but in one example it writes קרימינאלים. קרימינלי ת קריסטל ע,אין_כינויים # [3] and [4] mention the meaning of בדולח. But it also often has the meaning of גביש or rock (especially in plural). קריסטלי ת קריסטלוגרפיה ע,אין_כינויים,יחיד קריסטלוגרפי ת קריסטלוגרף ת,נקבה_ית קריסטליזציה ע,אין_כינויים,יחיד קרמטוריום ע,אין_כינויים קרצינוגני ת רגולציה ע,אין_כינויים,יחיד רגולטור ת רגולטורי ת # not in [4], but commonly used. רגיסטר ע,אין_כינויים # linguistics, computer and music term. רובריקה ע ריטואל ע ריטואלי ת ריתמוס ע,אין_כינויים ריתמי ת ריתמיקה ע,אין_נטיות רלטיבי ת רלטיביות ע רלטיביזם ע,אין_נטיות רלטיביסט ת,נקבה_ית # not in [3] or [4], but in used and derived from רלטיביזם. רלטיביסטי ת # not in [3] or [4], but in used and derived from רלטיביזם. רליגיוזי ת רנדומלי ת # [4] adds aleph for niqqud-less spelling: רנדומאלי רנדומליות ע # [4] adds aleph for niqqud-less spelling: רנדומאליות רפלקטור ע,אין_כינויים רפליקה ע,אין_כינויים # [4] has this as a theatrical reply. But the common usage is for a duplicate, copy, knock-off. רפרזנטציה ע,אין_כינויים רצפטור ע,אין_כינויים # קולטן רקורד ע,אין_נטיות שיבר ע,אין_כינויים # ברז ראשי. TODO: reconsider this German word. שלטר ע,אין_כינויים # מפסק חשמל. TODO: reconsider this German word. שפכטל ע,אין_כינויים # כף טייחים. TODO: reconsider this German word. תרפיה ע,אין_כינויים תרפיסט ת,נקבה_ית שרמנטי ת לינק ע,אין_כינויים אגררי ת # [4] adds aleph for niqqud-less spelling: אגרארי. But [3] and common usage doesn't. אדפטציה ע # this Non-hebrew term often used in biology. אהבל ת,נקבה_ית,נקבה_ה # slang. The masuline singular is borrowed directly from Arabic. The feminine is spelled הבלא in Arabic, but in Hebrew it is usually אהבלה (found in [4]) and אהבלית (in [3] and [4]). [4] recognizes only the feminine plural אהבלות, but the form אהבליות is also very common (but usually figuratively, and not on actual women), and we will accept it. אוטוסטרדה ע,אין_כינויים אולקוס ע אורגניזציה ע,אין_נטיות # This foreign word is rarely used, after being assimilated into Hebrew in the form "ארגון". However, it is still used in phrases like רה-אורגניזציה. ראורגניזציה ע,אין_כינויים אייטם ע,אין_כינויים # colloquial אייקון ע # computer term אימובילייזר ע,אין_כינויים אימפולס ע אימפולסיבי ת אימפולסיביות ע אימפרטיב ע # philosophy term אימפרטיבי ת אינטגריטי ע,אין_כינויים אינסטנט ע,אין_נטיות # colloquial אינפוזיה ע,אין_כינויים אינפנטילי ת אינפנטיליות ע אינפנטיל ת,נקבה_ית # colloquial אמבוש ע,אין_כינויים # colloquial אנדרוגינוס ע,אין_נטיות אנדרוגיני ת אנתרקס ע,אין_נטיות אקשן ע,אין_נטיות # colloquial בסטה ע,אין_כינויים # slang בוידעם ע,אין_כינויים # slang, from Yiddish. [4] prefers the spelling בוידם (but allows both), and [3] has only בוידם, but still, because this is slang, I prefer the original Yiddish spelling, בוידעם. Both spellings have similar popularities in a Google search. TODO: reconsider. בוכטה ע,אין_כינויים # slang בונבון ע # not often used today בונבוניירה ע בוקס ע,אין_כינויים # colloquial. ביזרי ת # [4] addes aleph for niqqud-less spelling: ביזארי בייביסיטר ע בלוף ע # slang בלנדר ע בקשיש ע,אין_נטיות # archaic slang ג'וב ע,אין_כינויים # slang ג'ובניק ת,נקבה_ית # military slang ג'וק ע,אין_כינויים # colloquial גורמה ע,סגול_ה,אין_נטיות גניוס ע,אין_נטיות גנרטיבי ת # linguistics term גריז ע,אין_נטיות גרמופון ע פטפון ע # [3] and [4] both spell פטפון, but [4] is inconsistant and in the definition for גרמופון writes פטיפון. On Google, the spelling פטיפון is vastly most common. It is so common, that some people even pronounce the yod as chirik. דיזנטריה ע,אין_נטיות # Interestingly, wrong the spelling דיזינטריה is also common. דיליז'נס ע # archaic, from French. דרעק ת,נקבה_ית # slang הומלס ת,נקבה_ית # colloquial הידרומטר ע,אין_כינויים תרמומטר ע,אין_כינויים ברומטר ע,אין_כינויים ברומטרי ת היגרומטר ע,אין_כינויים היגרוסקופי ת היגרוסקופיות ע # The phrase "High tech" (pronounced like in English, hi-tek), is often used # in in Hebrew. [4] spells it as two words, הי טק, or perhaps היי טק in niqqud- # less spelling. It does not allow the single-word spelling, הייטק. I find # this very strange, because the words "היי" and "טק" have no meaning in Hebrew # and people never think of them separately, so it makes more sense, in my # opinion, to spell it as one word: הייטק. # This single-word spelling is also more common than others on a Google search # I did: 128,000 pages matched "הייטק", 82,000 matched "היי טק" or "היי-טק", # and 52,000 matched "הי-טק" or "הי טק". הייטק ע,אין_נטיות הפנינג ע,אין_נטיות # colloquial ואקום ע,אין_נטיות ווליום ע,אין_נטיות # colloquial חמאם ע,אין_כינויים טישו ע,אין_נטיות טלמרקטינג ע,אין_נטיות טמפו ע,אין_נטיות # archaic music term. טסט ע,אין_כינויים # colloquial טרוטה ע,אין_כינויים טריילר ע,אין_כינויים # colloquial. Once, this referred to a נגרר. Nowadays, it means a movie preview. טריק ע,אין_כינויים # slang קריסמס ע,אין_נטיות # The Hebrew name is "חג המולד" לובסטר ע לופוס ע,אין_נטיות # זאבת ליסינג ע,אין_נטיות ליתוגרפיה ע ליתוגרפי ת מבסוט ת,נקבה_ה,נקבה_ית # Slang. The singular מבסוטה is more commonly used, but the more common plural is מבסוטיות. מונוכרומטי ת מיינסטרים ע,אין_נטיות מיקסר ע מסז' ע,אין_כינויים # [4] adds aleph for niqqudless spelling: מסאז' מסז'יסט ת,נקבה_ית מרינדה ע,אין_כינויים # [4] adds aleph for niqqudless spelling: מרינאדה. I don't understand why word needs an aleph, while לימונדה doesn't - looks completely inconsistent to me. סאונד ע,אין_נטיות # In the phrase אולטרה-סאונד, and also jargon term for sound or sound-quality. אולטרסאונד ע,אין_כינויים סאונדמן ת,נקבה_ית סטן ע,אין_נטיות # The Hebrew alternative appears to be כותנה סרוקה. סברה ע,סגול_ה,אין_יחיד,רבים=סברס # [3] and [4] list the singular סברה, but nobody really uses it. Note that in the colloquial use, סברס is singual, and there is a new plural, סברסים! סוטול ע,אין_נטיות # slang מסטול ת,נקבה_ה,נקבה_ית # slang סולחה ע,אין_כינויים # slang סחבק ת,נקבה_ית # slang סחבקי ת סחבקיות ע סטוץ ע # slang סט ע,אין_כינויים ספקטקל ע,אין_נטיות ספקטקולרי ת סרנדה ע,אין_כינויים פזל ע,אין_כינויים # [4] addes aleph for niqqud-less spelling: פאזל פלי ת # [4] addes aleph for niqqud-less spelling: פאלי פדל ע,אין_כינויים פוליטרוק ת,נקבה_ית # Old slang, from Russian פולינום ע,אין_כינויים פונקציונר ת,נקבה_ית # colloquial פורטל ע,אין_כינויים # Internet jargon פלונטר ע,אין_כינויים # slang מינוס ע,אין_כינויים # colloquial פלוס ע,אין_כינויים # colloquial פלופ ע,אין_כינויים # colloquial פלוץ ע,אין_כינויים # slang פלסטר ע,אין_כינויים פנטי ת # [4] adds aleph for niqqudless spelling: פנאטי פנטיות ע # [4] adds aleph for niqqudless spelling: פנאטיות פנט ת,נקבה_ית # [4] adds aleph for niqqudless spelling: פנאט. פסיכי ת # usually slang פרוגנוזה ע פרוזודיה ע,אין_נטיות פרוזודי ת פרוסטטה ע פריזר ע פרמיירה ע נוטריקון ע אגזוז ע # colloquial אסיסטנט ע אסיסטנטית ע צ'יטה ע צ'ק ע,אין_כינויים # According to [3] and [4], this is non-standard, and the standard word is שק. But everyone writes and pronounces צ'ק. קאובוי ע,אין_נטיות קבינה ע,אין_כינויים # colloquial קונוס ע,אין_כינויים קיש ע,אין_כינויים קמפינג ע,אין_נטיות קרבורטור ע # [4] adds aleph for niqqud-less spelling: קרבוראטור קרוקודיל ע קרם ע,אין_כינויים רדאר ע,אין_כינויים רקטום ע,אין_כינויים רקטלי ת שחטה ע,אין_כינויים # slang שוק ע,אין_כינויים # colloquial. Unfortunately, the plural "שוקים" can cause mis-acceptance of misspellings for שווקים or שוקיים. TODO: when we can recognize phrase, only a very limited number of phrases (like שוקים חשמליים) should be accepted with this plural. שוקר ע,אין_כינויים שלגר ע,אין_כינויים # [4] adds aleph for niqqud-less spelling: שלאגר. שישיסט ת,נקבה_ית # colloquial שביעיסט ת,נקבה_ית # colloquial שמיניסט ת,נקבה_ית # colloquial שנטי ע,אין_נטיות # [4] adds aleph for niqqud-less spelling: שאנטי. שפיץ ע # slang שפיצי ת # slang שרמוטה ע,אין_כינויים # vulgar slang קביה ע,אין_כינויים פרמוטציה ע # math term תרומבוזה ע,אין_כינויים שמוק ת,נקבה_ית # volgar slang - a noun and a figurative adjective. בוטקה ע,סגול_ה,אין_נטיות # slang. Note that the [3] and [4] don't agree on almost everything about this word: [4] prefers the spelling בודקה. [3] allows the plural בוטקות. [3] says this word is feminine, [4] says masculine. The spelling בוטקה is more popular in a Google search. בוילר ע בוכהלטריה ע,אין_נטיות בולשיט ע,אין_נטיות # slang בופלו ע,אין_נטיות ביזון ע,אין_כינויים ביבליופיל ת,נקבה_ית בייסבול ע,אין_נטיות גרדרובה ע # old, colloquial אגו ע,אין_נטיות דגנרציה ע,יחיד,אין_כינויים דגנרט ת,נקבה_ית # slang דופלקס ע,אין_כינויים # דירת דופלקס דיגרסיה ע,אין_כינויים דילטנט ת,נקבה_ית דיליז'נס ע לטנטי ת אסקלציה ע,אין_כינויים,יחיד דיל ע,אין_כינויים # colloquial דילר ת,נקבה_ית # banking and casino term אסימילציה ע,יחיד,אין_כינויים דיסימילציה ע,יחיד,אין_כינויים דיסציפלינה ע,אין_כינויים דיסציפלינרי ת # [4] addes aleph for niqqudless spelling: דיסציפלינארי. אינטרדיסציפלינרי ת דיסרטציה ע דפורטציה ע,אין_כינויים דפורמציה ע,אין_כינויים דפיציט ע,אין_כינויים דפרסיה ע,אין_נטיות דפנסיבי ת דפנסיבה ע,יחיד,אין_כינויים אופנסיבי ת אופנסיבה ע,אין_כינויים היולי ת היוליות ע הנגאובר ע,אין_נטיות ונטילטור ע טוקסין ע,אין_כינויים טוקסיקולוגיה ע,אין_נטיות טוקסיקולוג ת,נקבה_ית טוקסיקולוגי ת טורבן ע,אין_כינויים טרמינל ע טרמינלי ת # note how טרמינל and טרמינלי have completely different meanings. טרנסקריפציה ע,אין_כינויים טרק ע,אין_כינויים טררם ע,אין_נטיות # slang לוזר ת,נקבה_ית # colloquial, the Hebrew is מפסידן. מוזאיקה ע,אין_כינויים מולסה ע,אין_נטיות נומיסמטיקה ע,אין_נטיות סטריפטיז ע,אין_כינויים סיפיליס ע,אין_נטיות ספידומטר ע,אין_נטיות ספריי ע,אין_נטיות # תרסיס ענתיקה ע,אין_כינויים # slang פוטוגרפי ת # [4] adds aleph for niqqudless spelling: פוטוגראפי. פולריזציה ע,אין_כינויים,יחיד פונט ע,אין_כינויים פורונקל ע,אין_כינויים # many people prounounce and write this פרונקל. פושטי ת # slang פטיפור ע פיאצה ע,אין_כינויים פיגורה ע,אין_כינויים פיוז ע,אין_כינויים פייבוריט ת,נקבה_ית # colloquial פייטר ת,נקבה_ית # slang פיילה ע,אין_כינויים פינלה ע,אין_נטיות פלוטוקרטיה ע,אין_נטיות פלוטוקרטי ת אוטוקרטיה ע,אין_נטיות אוטוקרטי ת מריטוקרטיה ע,אין_נטיות מריטוקרטי ת היפוקרטי ת # related to hypocrates פלומבה ע,אין_כינויים פספורט ע,אין_כינויים פרוטאין ע,אין_כינויים פרוטקטורט ע,אין_כינויים פרופסיה ע,אין_כינויים פרופסיונלי ת # [4] addes aleph for niqqud-less spelling: פרופסיונאלי פריים ע,אין_כינויים # colloquial פרפומריה ע,אין_כינויים צפלון ת # slang. [4] prefers the Hebrew-like spelling צפלון, but ציפלון is more popular, and is consistent with the fact that this is a foreign word (from Russian Tsiflonok, meaning a fledgling bird) קומנדקר ע,אין_כינויים קומפוט ע,אין_כינויים קומפנסציה ע,אין_נטיות קומפרסור ע,אין_כינויים קונדישנר ע,אין_נטיות # For some reason, the spelling קונדישינר is just as popular. קונטור ע,אין_כינויים קונטרוברסיה ע,אין_כינויים קונטרוברסלי ת # [5] accepts this spelling, but [4] writes קונטרוברסיאלי. The latter makes more sense as a transcription of "controversial" and the word קונטרוברסיה (not קונטרוברסה), but the former is more popular (perhaps because it's easier to say in Hebrew) so we'll accept this for now. TODO: rethink. קונטרוברסליות ע קונטרול ע,אין_נטיות קוניונקטורה ע,אין_כינויים # conjuncture - a combination of circumstances קוקטי ת קוקטיות ע קורטוריון ע,אין_נטיות # TODO: is this word specific to the Technion? It's probably a translation of "curatorium". קטקומבה ע,אין_כינויים קלוץ ת,נקבה_ית # slang קליברציה ע,אין_כינויים קלסיפיקציה ע,אין_כינויים קלציום ע,אין_נטיות קפילרי ת # [4] adds aleph for niqqud-less spelling: קפילארי. קפילריות ע רגולרי ת רונדל ע,אין_כינויים # slang רזוננס ע,אין_נטיות רטיפיקציה ע,אין_כינויים,יחיד ריזיקו ע,אין_נטיות # colloquial רנטה ע,אין_נטיות רפורט ע,אין_כינויים # colloquial רפטטיבי ת רקון ע,אין_כינויים שופינג ע,אין_נטיות # slang שטינקר ת,נקבה_ית # slang שטיק ע,אין_כינויים # slang שטקר ע,אין_כינויים # old slang שמלץ ע,אין_נטיות # slang. The spelling שמאלץ is perhaps more popular. שמלצי ת # slang *שמונצס ע,רבים=שמונצס,אין_יחיד # slang אונומטופיה ע,אין_נטיות # The latin word is onomatopoeia. [3] writes אונומטופיה, [4] writes אונומטופאה and for niqqud-less spelling adds yod: אונומטופיאה, and also allows אונומטופיה. [5] allows both (without the yod). The academia mentions אונומטופיה in http://hebrew-academy.huji.ac.il/decision2.html אונומטופיי ת # in dictionaries, also אונומטופאי דיסידנט ת,נקבה_ית הומיניד ע,אין_כינויים הליוצנטרי ת המופיליה ע,אין_נטיות # There's a great deal of disagreement on the Hebrew name of the canary # (Serinus canarius). The Academia's 1963 lexicon of animals calls it # "בזבוז קנרי". [3] and [4] calls it קנרי, [5] calls it כנרית (and [4] # acknowledges this spelling as a colloquial variant of קנרי). # I think the spelling with ק is correct (after all, the bird is named after # the איים הקנריים. # I decided to go with the Academia and most dictionaries, and write קנרי. # This mishqal is commonly used for birds, by the way: see תוכי, ירגזי, שכווי, # קיכלי, עורבני, נחליאלי, עפרוני קנרי ע,רבים=קנרים,אין_כינויים קורנפלקס ע,אין_נטיות קרטזי ת # math term דיסקוגרפיה ע טומוגרפיה ע,יחיד טומוגרפי ת רדיוגרפיה ע,יחיד רדיוגרפי ת כרומטוגרפיה ע,יחיד סטגנוגרפיה ע,יחיד סטגנוגרפי ת ספקטוגרפיה ע,יחיד ספקטוגרפי ת סינמטוגרפיה ע,יחיד סינמטוגרפי ת אנגיוגרפיה ע,יחיד # medical term אידאוגרפי ת אידאוגרמה ע פיקטוגרף ע פיקטוגרפי ת סורה ע,אין_כינויים # a chapter in th quran. ברוטו ע,אין_נטיות נטו ע,אין_נטיות טרה ע,אין_נטיות פפירוס ע מימונה ע,אין_נטיות טוקטה ע,אין_כינויים # music term ############################################################################## # The following words do not appear in [1], [2] or [3], but they do look real # to me, appear in [4]. (I list here only Hebrew-looking words, not foreign # words). דפדפן ע אבזור ע דיבורית ע # note yud extra in ktiv male שיווקי ת # note extra yud מצוינות ע # note extra vav in ktiv male תרמילאי ע תרמילאית ע תרמילאות ע,יחיד נופשון ע נרקומן ע נרקומנית ע נרקומניה ע,אין_נטיות נרקוטי ת נרקוזה ע,יחיד,אין_כינויים מסעדן ע מסעדנית ע מסעדנות ע,יחיד # not found in [3] or [4], I don't know why. מציצן ע מציצנית ע מציצני ת מציצנות ע תמהיל ע תקריב ע תסמין ע תבחין ע ייעודי ת התלהמות ע מצגת ע תחכום ע חטיף ע בשלן ת,נקבה_ית ידוען ת,נקבה_ית מגדר ע מגדרי ת מטבל ע # dip התקפי ת # this bizarre (but common) word is more related to התקפה then התקף... אכיף ת שפיט ת כביס ת בליע ת # TODO: rethink this word... גזיר ת # TODO: rethink this word... רציף ת # usually math term. The more usual adjective is רצוף. דחיס ת לעיס ת לביש ת סחיט ת פתיר ת בדיד ת # "discrete" (in mathematics). מיצג ע מיצב ע # in [4] but not [3]. In use in the art world. חדשותי ת קפלייה ע # a sort of pill... תיקייה ע דיסק ע פרטני ת פרטנות ע,יחיד פצעון ע # pimple גשרון ע מגבון ע מקלחון ע מקלון ע צהרון ע # [4] says this is a noon newspaper, but the much more common meaning is nursery school מיצוב ע # positioning (marketing term) מקרנה ע # movie projector מכמונת ע # Note added vav for ktiv male. this is a new word for hidden speed trap, not appearing in [1] or [3] (but it is in Rav-Millim) מסלעה ע אסטרואיד ע גופן ע דוגמית ע # note added vav for ktiv maleh. גרביון ע,אין_יחיד # גרביונים. See also גרבונים בינתחומי ת אברון ע # organelle, in cellular biology מגורון ע # caravan מוקדן ע מוקדנית ע ארצישראלי ת חמוצית ע אחוזון ע # percentile (in statistics) בולען ע # swallow-hole, sudden whole in the ground (in geology) חדרון ע חייגן ע ישורת ע # Straight path, in sports. note added vav for ktiv maleh (like יכולת) כוחנות ע # [4] recognizes this, in addition to כוחניות that [1], [2] and [3] recognize. Why? What's the difference? TODO. כלבייה ע כלילי ת # comes from archaic word כליל, meaning crown. מועדונית ע מנעד ע מנשא ע מפתח ע מפסידן ת,נקבה_ית # called "colloquial" by [4], but since there is no better translation for "loser", I'm adding it. מצליחן ת,נקבה_ית # called "colloquial" by [4] מצליחנות ע,יחיד # called "colloquial" by [4] מצליחני ת # called "colloquial" by [4] משקיען ת,נקבה_ית # called "colloquial" by [4] משקיענות ע,יחיד משחקון ע # in tennis משפחתון ע סיבית ע # bit. Note added yod for ktiv male and dagesh in bet! פגייה ע # note added yod for ktiv male. משחקייה ע # note added yod for ktiv male. צהובון ע # note added vav for ktiv male. קדימון ע # promo קולטן ע # receptor קולנוען ע קולנוענית ע קישוריות ע קשרית ע # "node", in medicine. תכניתן ע # Not found in [3], and [4] lists it as "see מתכנת". I would recommend against using this word, which sometimes is used as a derogetory term for something lower for programmer or software engineer. תכניתנית ע תמלילן ע תמלילנית ע תמלילנות ע,יחיד תצפיתן ע תצפיתנית ע תקליטן ע תקליטנית ע תקשוב ע # a word I never really understood the need for, but people use it... צביר ע תוויין ע # note added waw and yod for ktiv male. Plotter. מבואה ע # lobby. In [4] but not in [1], [2] or [3] (do not confuse with מבוי or מובאה). אמצעית ע # usually inflected, e.g., אמצעיתו דגיגון ע # Why is this word necessary, when דגיג is available? הליכון ע # Sometimes refers to walker, sometimes to treadmill. [3] doesn't have this word at all. חוצן ע # another name for alien, חייזר. חוצני ת חזירון ע # another name for חזרזיר חשופית ע סנדלית ע יתיר ת # means redundant. note patach in yod יתירות ע,יחיד כוכבנית ע כלכל ע # [4] has this word, [3] doesn't. I'm not exactly what this word should mean. Apparently it's a term for a high-ranking steward on a plane, but it's not clear why this term is needed at all, or why [4] doesn't have a feminine form of this noun. משרעת ע מוסרני ת מוסרנות ע,יחיד מועדונית ע # for kids מוצלל ת,נקבה_ת # note added vav. has הצללה, shaded. מטבחון ע מידען ע # Fancy, new-age word for ספרן? מידענית ע # Fancy, new-age word for ספרן? מידענות ע,יחיד # Fancy, new-age word for ספרן? מצלול ע סולמית ע # note added vav. means "#". צריפון ע # Frankly, I don't understand why this word is needed. צריף already implies smallness. קלידן ע קלידנית ע קלנוע ע קרטונית ע תאורן ת,נקבה_ית תחדיש ע # means: neologism תינוקייה ע # note added yod. תקציבאי ע,אין_כינויים תקציבאית ע,אין_כינויים תקציבאות ע,יחיד # Words I could not find in any dictionary, but look real to me: אקספוננציאלי ת # math term אקספוננט ע # math term ויזואליזציה ע,אין_כינויים מוביליזציה ע,יחיד,אין_כינויים מעונוע ע ניווני ת # degenerative דלורית ע # kind of plant. Why does no dictionary know this word? טורטליני ע,אין_נטיות ספוגית ע # not in [3] or [4], but often used, for small sponge or form of birth control פריכית ע # not in [3] or [4], but used most often in the phrase פריכיות אורז אלפיני ת אלפיניסט ע,יחיד,אין_כינויים אלפיניסטית ע,יחיד,אין_כינויים אלפיניזם ע,אין_נטיות גלוטן ע,אין_נטיות צליאק ע,אין_נטיות אפולוגטי ת אפולוגטיקה ע,אין_נטיות גורו ע,אין_כינויים,רבים=גורואים ליצ'י ע,אין_נטיות טוקבק ע,אין_כינויים # Slang. I'm curious as to how this word got into Hebrew, seing that this word is rarely if ever used in English in the sense of comments on Internet sites. Maybe it refers to one particular implementation? טוקבקיסט ת,נקבה_ית עירניק ת,נקבה_ית # slang חירניק ת,נקבה_ית # military slang. todo: consider ח"ירניק instead קומולוס ע,אין_נטיות # kind of cloud סטרטוקומולוס ע,אין_נטיות # kind of cloud אלטוקומולוס ע,אין_נטיות # kind of cloud אירוויזיון ע,אין_כינויים בנג'י ע,אין_נטיות פרקטל ע,אין_כינויים פרקטלי ת סטרי ת # In phrases חד-סטרי, דו-סטרי. פיונית ע # biology term מרימבה ע צובל ע,אין_כינויים # kind of animal: sable פיליטון ע פטרוגליף ע אובליסק ע טייקון ע טייקונית ע אוטרקי ת אוטרקיה ע,אין_נטיות טריגר ע,אין_כינויים אלקטרוסטטי ת אלקטרוסטטיקה ע,אין_נטיות אלקטרומכני ת אלקטרומכניקה ע,אין_נטיות אלקטרודינמיקה ע,אין_נטיות אלקטרואופטי ת אלקטרואופטיקה ע,אין_נטיות מיקרואלקטרוניקה ע,אין_נטיות מיקרואלקטרוני ת אלקטרופיזיולוגי ת אלקטרופיזיולוגיה ע,אין_נטיות אנמנזה ע ביסטרו ע,אין_כינויים,רבים=ביסטרואים אורינתולוג ת,נקבה_ית אורינתולוגי ת אורינתולוגיה ע,אין_נטיות סוריקטה ע אופוס ע,אין_נטיות # In Hebrew, only in the context of classical musical ג'יגולו ע,אין_נטיות זנית ע,אין_נטיות # astronomy termת נדיר ע,אין_נטיות # astronomy term אומניפוטנטי ת # It appears that this, not אומניפוטנט, is the more usual adjective in Hebrew. אומניפוטנטיות ע פוטנטי ת # potency of a drug פוטנטיות ע אזימוט ע,אין_כינויים פסיכואקטיבי ת קרניז ע קסרקטין ע קרצינומה ע קרצינוגן ע יסמין ע קלנדרי ת מעפן ת # Slang, from Arabic. [5] says feminine is מעפנית, but מעפנה is more popular. צ'ילבה ע,אין_כינויים # Slang, from Arabic. אקסהיביציוניסט ת,נקבה_ית אקסהיביציוניסטי ת אקסהיביציוניזם ע,אין_נטיות דטונציה ע,אין_כינויים קונטרפונקט ע,אין_נטיות ג'וקר ע,אין_כינויים פיילוט ע,אין_כינויים אטול ע,אין_כינויים אנדמי ת פנדמי ת פנדמיה ע,אין_כינויים רוטור ע אוסקר ע,אין_כינויים קורפוס ע דסקריפטיבי ת פרסקריפטיבי ת אמיני ת # biology term אמינו ע,אין_נטיות # in the phrase חומצת אמינו הידרופוניקה ע,אין_נטיות # note p sound, not ph. הידרופוני ת גריפון ע,אין_כינויים ג'וניור ע,אין_נטיות # colloquial, English. טלפרומפטר ע תמרהינדי ע,אין_נטיות אקנה ע,אין_נטיות גול ע,אין_נטיות בגז' ע יודאיקה ע,אין_נטיות למינציה ע פרק ע,אין_כינויים # Park מדם ע,אין_נטיות # Madame אפצ'י ע,אין_נטיות # Slang קפיברה ע אוטוריטה ע,אין_כינויים אתר ע,אין_נטיות ארטיסט ת,נקבה_ית # archaic or derogatory, usually. קרפ ע,אין_כינויים # crepe קרף ע,אין_כינויים # carafe ביאנלה ע,אין_נטיות סיפולוקס ע פסז' ע הקר ת,נקבה_ית # פצחן טבלט ע ביפר ע טיימר ע פנטטוני ת סלפי ע,אין_נטיות פיליפס ע,אין_נטיות # kind of screwdriver פילינג ע,אין_נטיות ביופילם ע,אין_כינויים מופלטה ע פאונד ע,אין_כינויים # Not often used in Hebrew - see alternatives ליש"ט and ליברה. סקוויה ע,אין_נטיות פנק ע,אין_נטיות # Punk פנק ע,אין_כינויים # Fennec fox פנקיסט ת,נקבה_ית פנקיסטי ת בלזה ע,אין_נטיות עדלאידע ע,אין_נטיות סינקרטי ת סינקרטיזם ע,אין_נטיות אידיוסינקרטי ת מיקרומטר ע # A measuring tool - not a micro-meter (that is called מיקרון). מילישנייה ע,אין_כינויים מיקרושנייה ע,אין_כינויים ננושנייה ע,אין_כינויים פיקושנייה ע,אין_כינויים פמטושנייה ע,אין_כינויים סילאן ע,אין_נטיות טסטר ע,אין_כינויים ############################################################################## # Acronyms. # Note: according to custom, the plural of ח"כ is ח"כים and its feminine # is ח"כית, despite the fact that the plural of "חבר כנסת" is not "חבר כנסתים". # This is also mandated by the Academia (see discussion in niqqudless.odt) # and accepted in dictionaries like [4]. # Another decision of the Academia (החלטות האקדמיה בדקדוק, תשס"ה, עמוד 78 # says that the gender of an acronym is not defined by the Academia, so ד"ש # for example can be either masculine or feminine. We'll choose a specific # gender, however, when there is no ambiguity: the "apparent gender" and the # gender of the underlying words agree, or the acronym refers to a person and # different a masculine and feminine versions exist. מנכ"ל ע,אין_כינויים מנכ"לית ע,אין_כינויים סמנכ"ל ע,אין_כינויים סמנכ"לית ע,אין_כינויים מזכ"ל ע,אין_כינויים מזכ"לית ע,אין_כינויים יו"ר ע,אין_כינויים יו"רית ע,אין_כינויים מלכ"ר ע,אין_כינויים לו"ז ע,אין_כינויים מו"ל ע,אין_כינויים מו"לית ע,אין_כינויים מו"לות ע,אין_נטיות אח"ם ת,נקבה_ית מו"מ ע,אין_נטיות או"ם ע,אין_נטיות דו"ח ע,ות # we also accept דוח without the quotes מט"ח ע,אין_נטיות נדל"ן ע,אין_נטיות נדל"ני ת גמ"ח ע,אין_כינויים תנ"ך ע,אין_נטיות תנ"כי ת מד"ב ע,אין_נטיות צל"ש ע,אין_כינויים גפ"מ ע,אין_נטיות דוא"ל ע,אין_כינויים משת"פ ת,נקבה_ית שת"פ ע,אין_כינויים עב"ם ע,אין_כינויים פס"ד ע,אין_נטיות מתנ"ס ע,אין_כינויים מו"פ ע,אין_נטיות עו"ד ת,נקבה_ית רו"ח ת,נקבה_ית מזה"ת ע,אין_נטיות,זכר אדמו"ר ע מוכ"ז ע,אין_נטיות יח"צ ע,אין_נטיות יחצ"ן ע # see also יחצן, without rashi-tevot. יחצ"נית ע יחצ"נות ע,יחיד ש"ע ע,אין_נטיות תפו"א ע,אין_נטיות רצ"ב ע,אין_נטיות מצ"ב ע,אין_נטיות # Israeli army, defense, and related lingo: שב"כ ע,אין_נטיות ד"צ ע,אין_נטיות סטי"ל ע,אין_כינויים נגמ"ש ע,אין_כינויים מכ"ם ע,אין_כינויים פצמ"ר ע,אין_כינויים חנ"ם ע,אין_נטיות שב"ס ע,אין_נטיות צה"לי ת מג"ב ע,אין_נטיות רמטכ"ל ת,נקבה_ית מטכ"ל ע,אין_נטיות מטכ"לי ת שכפ"ץ ע מזל"ט ע מל"ט ע,אין_כינויים אכ"א ע,אין_נטיות אמ"ן ע,אין_נטיות חר"פ ע,אין_נטיות אג"ם ע,אין_נטיות הג"א ע,אין_נטיות חי"ר ע,אין_נטיות פק"ל ע,אין_נטיות נק"ל ע,אין_נטיות חמ"ל ע,אין_כינויים ממ"ד ע,אין_כינויים ממ"ט ע,אין_כינויים שק"ם ע,אין_נטיות אמל"ח ע,אין_נטיות פז"ם ע,אין_נטיות חפ"ק ע,אין_נטיות בקו"ם ע,אין_נטיות ח"ן ע,אין_נטיות יוהל"ן ע,אין_נטיות,נקבה פו"מ ע,אין_נטיות # TODO: why not פו"ם? בה"ד ע,אין_כינויים בט"ר ע,אין_כינויים בט"ש ע,אין_נטיות קב"א ע,אין_נטיות דפ"ר ע,אין_נטיות # There isn't a complete consensus as to whether one should write אל"ם or # אל"מ, and similarly for סג"ם. [4] prefers the final-letter versions - אל"ם # and סג"ם. But [4] also accepts the non-final-letter versions as alternative # spellings. [3] prefers a strange combination: סג"מ but אל"ם. The older [2] # accepts only the non-final-letter versions: סג"מ and אל"מ. # I decided to allow the final-letter versions only. This makes more sense # when the acronym is read out as a real word (and the plural form is a good # proof of that. compare תנ"צ which is not commonly read out as a word). # Also, I was told that this is the way these ranks are always spelled in # the army. # Another questions is whether these ranks have feminine variants, or whether # the same words apply to females too. [4] commits the ultimate male-chauvinist # faux-pas: it recognizes סג"מית, but not סא"לית or אל"מית, and mark all the # nouns סג"ם, אל"ם, סא"ל as masculine. Again, I was told that in the army # the special feminine forms סג"מית, סא"לית, etc., is commonly used. Some ranks, # however, are used for both genders: e.g., סגן. סג"ם ת,נקבה_ית סמ"ר ת,נקבה_ית אל"ם ת,נקבה_ית סא"ל ת,נקבה_ית תא"ל ת,נקבה_ית רס"ן ת,נקבה_ית רס"ר ת,נקבה_ית רס"ל ת,נקבה_ית רנ"ג ת,נקבה_ית טר"ש ת,נקבה_ית רב"ט ת,נקבה_ית רע"ן ת,נקבה_ית מ"כ ת,נקבה_ית מ"מ ע,אין_נטיות # TODO: consider feminine and plural forms of מ"מ, מ"פ, just like מ"כ. מ"פ ע,אין_נטיות מג"ד ת,נקבה_ית סמג"ד ת,נקבה_ית מח"ט ת,נקבה_ית סמח"ט ת,נקבה_ית קב"ן ת,נקבה_ית מש"ק ת,נקבה_ית פצ"ר ע,אין_נטיות רל"ש ת,נקבה_ית קמב"ץ ת,נקבה_ית סמב"ץ ת,נקבה_ית חפ"ש ת,נקבה_ית קב"ט ת,נקבה_ית רס"פ ת,נקבה_ית רפ"ק ע,אין_כינויים סנ"צ ע,אין_נטיות נצ"מ ע,אין_נטיות תנ"צ ע,אין_נטיות מפכ"ל ע,אין_כינויים # Economic lingo: אג"ח ע,אין_נטיות מע"מ ע,אין_נטיות # TODO: why not מע"ם? ני"ע ע,אין_נטיות מעו"ף ע,אין_נטיות תמ"ג ע,אין_נטיות תל"ג ע,אין_נטיות ליש"ט ע,אין_נטיות # Judaism lingo: בד"ץ ע,אין_נטיות # Measurements: ס"מ ע,אין_נטיות ק"מ ע,אין_נטיות מ"ל ע,אין_נטיות ק"ג ע,אין_נטיות קמ"ש ע,אין_נטיות סמ"ק ע,אין_נטיות סמ"ר ע,אין_נטיות מ"ק ע,אין_נטיות קמ"ר ע,אין_נטיות מ"ר ע,אין_נטיות קסל"ש ע,אין_נטיות מסל"ש ע,אין_נטיות hspell-1.4/hspell.10000644000076600007650000002727113123033053012230 0ustar nyhrl'\" t .\" Copyright (c) 2001-2017, Nadav Har'El and Dan Kenigsberg .TH hspell 1 "24 June 2017" "Hspell 1.4" "Ivrix" .SH NAME hspell \- Hebrew spellchecker .SH SYNOPSIS .B hspell [ .B \-acDhHilnsvV ] .BI [\| file\|.\|.\|. \|] .SH DESCRIPTION .B hspell tries to find incorrectly spelled Hebrew words in its input files. .PP Like the traditional Unix spell(1), .B hspell outputs the sorted list of incorrect words, and does not have a more friendly interface for making corrections for you. However, unlike spell(1), .B hspell can suggest possible corrections for some spelling errors. Such suggestions can be enabled with the .B \-c (correct) and .B \-n (notes) options. .PP .B Hspell currently expects ISO-8859-8-encoded input files. Non-Hebrew characters in the input files are ignored, allowing the easy spellchecking of Hebrew-English texts, as well as HTML or TeX files. If files using a different encoding (e.g., UTF-8) are to be checked, they must be converted first to ISO-8859-8 (e.g., see iconv(1), recode(1)). .PP The output will also be in ISO-8859-8 encoding, in so-called "logical order", so it is normally useful to pipe it to bidiv(1) before viewing, as in: .PP .RS .B "hspell -c filename | bidiv | less" .RE .PP If no input file is given, .B hspell reads from its standard input. .SH OPTIONS .TP .B \-v If the .B \-v option is given, .B hspell prints emacs-oriented version information and exits. .TP .B \-vv Repetition of the .B \-v option causes .B hspell to also show some information on which optional features were enabled at compile time. .TP .B \-V With the .B \-V option, .B hspell prints true and human-oriented version information and exits. .TP .B \-c If the .B \-c option is given, .B hspell will suggest corrections for misspelled words, whenever it can find such corrections. The correction mechanism in this release is especially good at finding corrections for incorrect niqqud-less spellings, with missing or extra 'immot-qri'a. .TP .B \-n The .B \-n option will give some longer "notes" about certain spelling errors, explaining why these are indeed errors (or in what cases using this word is in fact correct). It is recommend to combine the two options, .B \-cn for maximal correction help from .BR hspell . .TP .B \-l The .B \-l (linguistic information) option will explain for each .I correct word why it was recognized (show the basic noun, verb, etc., that this inflection relates to, and its tense, gender, associated Kinnuy, or other relevant information) If Hspell was built without morphological analysis support, this option will only show the correct splits of the given word into prefix + word, as the full information incurs a 4-fold increase in the installation size. Giving the .B \-c option in addition to .B \-l results in special behavior. In that case .B hspell suggests "corrections" to every word (regardless if they are in the dictionary or not), and shows the linguistic information on all those words. This can be useful for a reader application, which may also want to be able to understand misspellings and their possible meanings. .TP .B \-s Normally, the words deemed spelling mistakes are shown in alphabetical order. The .B \-s option orders them by .IR severity , i.e., the errors that most frequently appear in the document are shown first. This option is most useful for people helping to build .BR hspell 's word list, and are looking for common correct words that .B hspell does not know yet. .TP .B \-a With the .B \-a option, .B hspell tries to emulate (as little as possible of) .B ispell's pipe interface. This allows .B Lyx, Emacs, Geresh and .B KDE to use .B hspell as an external spell-checker. .TP .B \-i This option only has any effect when used together with the .B \-a option. Normally, .B hspell \-a only checks the spelling of Hebrew words. If the given file also contains non-Hebrew words (such as English words), these are simply ignored. Adding the .B \-i option tells .B hspell to pass the non-Hebrew words to .BR ispell (1), and return its answer as an answer from .BR hspell . This allows conveniently spell-checking mixed Hebrew-English documents. Running .B hspell with the program name .B hspell-i also enables the .B -i option. This is a useful trick when an application expects just the name of a spell-checking program, and adds only the "\-a" option (without giving the user an option to also add "\-i"). The .B multispell script supplied with .B hspell serves a similar purpose, with more control over encodings and which spell-checker to run for non-Hebrew words. .TP .B \-H By default, Hspell does not allow the He Ha-sh'ela prefix. This is because this prefix is not normally used in modern Hebrew, and generates many false-negatives (errors, like He followed by a possessed noun, are thought to be correct). The .B \-H option nevertheless tells Hspell to allow this prefix. .TP .B \-D base Load the word lists from the given base pathname, rather than from the compiled-in default path. This is mostly used for testing Hspell, when the dictionaries have been compiled in the current directory and hspell is run as "hspell \-Dhebrew.wgz". .TP .B \-d, \-B, \-m, \-T, \-C, \-S, \-P, \-p, \-w, and \-W These options are passed to .B hspell by .B lyx or other applications, thinking they are talking to ispell. These options are cordially ignored. .\".SH EXAMPLES .\".TP 3 .\"1. .\"bidiv README | less .\".SH ENVIRONMENT .\".B COLUMNS .SH "SPELLING STANDARD" Hspell was designed to be 100% and strictly compliant with the official niqqud-less spelling rules ("Ha-ktiv Khasar Ha-niqqud", colloquially known as "Ktiv Male") published by the Academy of the Hebrew Language. This is both an advantage and a disadvantage, depending on your viewpoint. It's an advantage because it encourages a .B correct and consistent spelling style throughout your writing. It is a disadvantage, because a few of the Academia's official spelling decisions are relatively unknown to the general public. Users of Hspell (and all Hebrew writers, for that matter) are encouraged to read the Academia's official niqqud-less spelling rules (which are printed at the end of most modern Hebrew dictionaries, and an abridged version is available in http://hebrew-academy.huji.ac.il/decision4.html). Users are also encouraged to refer to Hebrew dictionaries which use the niqqud-less spelling (such as Millon Ha-hove, Rav Milim, and the new Even Shoshan). Hspell's distribution (and Web site) also include a document, .BR niqqudless.odt , which explains Hspell's spelling standard in detail (in Hebrew). It explains both the overall principles, and why specific words are spelled the way they are. A future release may include an option for alternative spelling standards. .SH "BEHIND THE SCENES" The .B hspell program itself is mostly a simple (but efficient) program that checks input words against a long list of valid words. The real "brains" behind it are the word lists (dictionary) provided by the Hspell project. In order for this dictionary to be completely free of other people's copyright restrictions, the Hspell project is a clean-room implementation, not based on pre-existing word lists or spell checkers, or on copying of printed dictionaries. The word list is also not based on automatic scanning of available Hebrew documents (such as online newspapers), because there is no way to guarantee that such a list will be correct, complete, or consistent in its spelling standard. Instead, our idea was to write programs which know how to correctly inflect Hebrew nouns and conjugate Hebrew verbs. The input to these programs is a list of noun stems and verb roots, plus hints needed for the correct inflection when these cannot be figured out automatically. Most of the effort that went into the Hspell project went into building these input files. Then, "word list generators" (written in Perl, and are also part of the Hspell project) create the complete inflected word list that will be used by the spellchecking program, hspell. This generation process is only done once, when building .BR hspell from source. These lists, before and after inflection, may be useful for much more than spellchecking. Morphological analysis (which .B hspell provides with the .B \-l option) is one example. For more ideas, see Hspell project's Web site, at .BR http://ivrix.org.il/projects/spell\-checker . .SH "FILES" .TP ~/.hspell_words, ./hspell_words These files, if they exist, should contain a list of Hebrew words that .B hspell will also accept as correct words. Note that only these words .I exactly will be added - they are not inflected, and prefixes are not automatically allowed. .TP /usr/local/share/hspell/* The standard Hebrew word lists used by .BR hspell . .SH "EXIT STATUS" Currently always 0. .SH "VERSION" The version of .B hspell described by this manual page is 1.4. .SH "COPYRIGHT" Copyright (C) 2000-2017, Nadav Har'El and Dan Kenigsberg . Hspell is free software, released under the GNU Affero General Public License (AGPL) version 3. Note that not only the programs in the distribution, but also the dictionary files and the generated word lists, are licensed under the AGPL. There is no warranty of any kind. See the LICENSE file for more information and the exact license terms. The latest version of this software can be found in .B http://hspell.ivrix.org.il/ .SH "ACKNOWLEDGMENTS" The hspell utility and the linguistic databases behind it (collectively called "the Hspell project") were created by Nadav Har'El and by Dan Kenigsberg . Although we wrote all of Hspell's code ourselves, we are truly indebted to the old-style "open source" pioneers - people who wrote books instead of hiding their knowledge in proprietary software. For the correct noun inflections, Dr. Shaul Barkali's "The Complete Noun Book" has been a great help. Prof. Uzzi Ornan's booklet "Verb Conjugation in Flow Charts" has been instrumental in the implementation of verb conjugation, and Barkali's "The Complete Verb Book" was used too. During our work we have extensively used a number of Hebrew dictionaries, including Even Shoshan, Millon Ha-hove and Rav-Milim, to ensure the correctness of certain words. Various Hebrew newspapers and books, both printed and online, were used for inspiration and for finding words we still do not recognize. We wish to thank Cilla Tuviana and Dr. Zvi Har'El for their assistance with some grammatical questions. Several other people helped us in various releases, with suggestions, fixes or patches - they are listed in the WHATSNEW file in the distribution. .SH "SEE ALSO" .BR hspell (3), .BR spell (1), .BR ispell (1), .BR bidiv (1), .BR iconv (1), .BR recode (1) .SH "BUGS" This manual page is in English. .\".PP .\"The .\".B hspell .\"spellchecker depends on word lists created by the Hspell project. At this .\"stage, these word lists still do not cover all of the Hebrew .\"vocabulary, and so .\".B hspell .\"will often list correct words (that it doesn't know) as being wrong. This .\"is being worked on, and .\".BR hspell 's .\"vocabulary will grow from release to release. .\".PP .\"Version 0.6 and above feature a redesigned front-end, which is unfortunately .\"missing a few features that existed in version 0.5. For more details, see .\"the .\".B WHATSNEW .\"file in the distribution. .PP For GUI-lovers, .BR hspell 's user interface is an abomination. However, as more and more applications learn to interface with .BR hspell , and as Hspell's data becomes available in multi-lingual spellcheckers (such as aspell and hunspell), this will no longer be an issue. See .B http://hspell.ivrix.org.il/ for instructions on how to use Hspell in a variety of applications. .PP .BR hspell 's being limited to the ISO-8859-8 encoding, and not recognizing UTF-8 or even CP1255 (including niqqud), is an anachronism today. hspell-1.4/dict_radix.h0000444000076600007650000000145707771262276013165 0ustar nyhrl/* Copyright (C) 2003 Nadav Har'El and Dan Kenigsberg */ #ifndef INCLUDED_RADIX_H #define INCLUDED_RADIX_H /* The following structure is opaque for the user - its fields can only be accessed by calling functions, and it can only be instantiated as a pointer (by calling new_dict_radix). This is object-oriented programming in C :) */ struct dict_radix; struct dict_radix *new_dict_radix(void); void delete_dict_radix(struct dict_radix *dict); int allocate_nodes(struct dict_radix *dict, int nsmall, int nmedium, int nfull); int read_dict(struct dict_radix *dict, const char *dir); void print_tree(struct dict_radix *dict); void print_sizes(struct dict_radix *dict); void print_stats(struct dict_radix *dict); int lookup(const struct dict_radix *dict, const char *word); #endif /* INCLUDED_RADIX_H */ hspell-1.4/pack-desc.pl0000755000076600007650000000576311722236735013072 0ustar nyhrl#!/usr/bin/perl -w # Copyright (C) 2002-2003 Nadav Har'El and Dan Kenigsberg # # Packs a sorted, binarized wordlist into, into one dictionary with # or'ed prefix hints, a description file, and a stem file. # Usage: cat sorted_bin | # pack-desc.pl -p prefixesout -d descout -s stemsout > wordsout # use Carp; use Getopt::Std; my %opts; # -p - output prefix file. # -d - output description file. # -s - output stems file. # -l - output dictionary sizes that are relevant to linginfo if(!getopts('p:d:s:l:', \%opts)){ exit(1); } my $out_prefixes=$opts{p}; my $out_desc=$opts{d}; my $out_stems=$opts{s}; my $out_lingsizes=$opts{l}; my ($lastword,$lastspecifiers, $flatlen); my ($stems,$dmasks,$specifiers,$c,%pointers); my @words; $c=0; while(<>){ # I want to print this message only *after* the script started reading # its input - but only once. print STDERR "reading input sorted flat file...\n" if !defined($lastword); chomp; next unless m/^(.*)\t(.*)\t(.*)\t(.*)$/; my ($word,$specifier,$dmask,$stem) = ($1,$2,$3,$4); # found a new word. output the packed one. if($lastword && $lastword ne $word) { $pointers{$lastword} = $c; $stems =~ s/:$//o; push @words, "$lastword\t$lastspecifiers\t$dmasks\t$stems"; # $flatlen += $#lastword+2+($#dmasks+1)/2*5+2; $stems="";$dmasks="";$specifiers=0;$c++; # it takes ages. let's notify the package builder. print STDERR "#" if !($c%1000) ; } $stems .= "$stem:"; $dmasks .= $dmask; $specifiers |= $specifier; $lastword = $word; $lastspecifiers = $specifiers; } # reached EOF. output the final word. TODO: don't do this ugly copy-paste of # code. call a proper function! $pointers{$lastword} = $c; $stems =~ s/:$//o; push @words, "$lastword\t$lastspecifiers\t$dmasks\t$stems"; $stems="";$dmasks="";$specifiers=0;$c++; print STDERR "\nwriting output files..."; if ($out_prefixes) { open(PREFIXES,">$out_prefixes") or croak "Couldn't write -p parameter '$out_prefixes'"; } if ($out_desc) { open(DESCS,">$out_desc") or croak "Couldn't write -d parameter '$out_desc'"; } if ($out_stems) { open(STEMS,">$out_stems") or croak "Couldn't write -s parameter '$out_stems'"; } foreach (@words) { m/^(.*)\t(.*)\t(.*)\t(.*)$/o; my ($word,$specifier,$dcodes,$stems) =($1,$2,$3,$4); print $word,"\n"; print PREFIXES chr($specifier) if $out_prefixes; print DESCS $dcodes,"\n" if $out_desc; $flatlen += length($word)+1; if ($out_stems) { foreach (split(':',$stems)) { my $i = $pointers{$_}; my $c1 = $i%94; my $c2 = ($i-$c1)/94%94; my $c3 = ($i-$c1-$c2)/94/94; print STEMS chr(33+$c1).chr(33+$c2).chr(33+$c3); $flatlen += 5; } print STEMS "\n"; $flatlen += 2; } } close PREFIXES if $out_prefixes; close DESCS if $out_desc; close STEMS if $out_stems; print STDERR "creating $out_lingsizes...\n"; open(DESC_SIZES,">$out_lingsizes") or die "cannot write $out_lingsizes\n"; #print DESC_SIZES "#define FLATSIZE ".$flatlen."\n"; #print DESC_SIZES "#define LOOKUPLEN ".($#words+1)."\n"; print DESC_SIZES $flatlen." ".($#words+1)."\n"; close DESC_SIZES; hspell-1.4/COPYING0000644000076600007650000010333010745442656011725 0ustar nyhrl GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU Affero General Public License is a free, copyleft license for software and other kinds of works, specifically designed to ensure cooperation with the community in the case of network server software. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. Developers that use our General Public Licenses protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License which gives you legal permission to copy, distribute and/or modify the software. A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate. Many developers of free software are heartened and encouraged by the resulting cooperation. However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public. The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community. It requires the operator of a network server to provide the source code of the modified version running there to the users of that server. Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version. An older license, called the Affero General Public License and published by Affero, was designed to accomplish similar goals. This is a different license, not a version of the Affero GPL, but Affero has released a new version of the Affero GPL which permits relicensing under this license. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU Affero General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Remote Network Interaction; Use with the GNU General Public License. Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements. You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see . hspell-1.4/corlist.c0000444000076600007650000000125607767404325012520 0ustar nyhrl/* Copyright (C) 2003 Nadav Har'El and Dan Kenigsberg */ /* a silly implementation of a list of correction words */ #include #include "hspell.h" int corlist_init(struct corlist *cl) { cl->n=0; return 1; } int corlist_free(struct corlist *cl) { /* no need to do anything in this implementation */ cl->n=0; /* not necessary */ return 1; } int corlist_add(struct corlist *cl, const char *s) { int i; for(i=0; in; i++){ if(!strcmp(cl->correction[i],s)) return 1; /* already in list! */ } if(cl->n==(sizeof(cl->correction)/sizeof(cl->correction[0]))) return 0; /* no room */ strncpy(cl->correction[cl->n++], s, sizeof(cl->correction[0])); return 1; } hspell-1.4/gimatria.c0000644000076600007650000001172411331120016012607 0ustar nyhrl/* Copyright (C) 2003 Nadav Har'El and Dan Kenigsberg */ #include #include #include "hspell.h" extern int hspell_debug; /* functions for checking valid gimatria */ static unsigned int gim2int(const char *w){ int n=0; if(hspell_debug) fprintf(stderr,"gim2int got %s ",w); while(*w){ switch(*w){ case '\'': /* ad-hoc change: ג' can mean with 3 or 3000. Our * check that the ' is not in the end forces to be 3, * because I don't want to recognize stuff like תריג' * = 613,000. * TODO: consider if I should remove this if(w[1]) * line. * */ if(w[1]) n*=1000; break; case 'א': n+=1; break; case 'ב': n+=2; break; case 'ג': n+=3; break; case 'ד': n+=4; break; case 'ה': n+=5; break; case 'ו': n+=6; break; case 'ז': n+=7; break; case 'ח': n+=8; break; case 'ט': n+=9; break; case 'י': n+=10; break; case 'כ': case 'ך': n+=20; break; case 'ל': n+=30; break; case 'מ': case 'ם': n+=40; break; case 'נ': case 'ן': n+=50; break; case 'ס': n+=60; break; case 'ע': n+=70; break; case 'פ': case 'ף': n+=80; break; case 'צ': case 'ץ': n+=90; break; case 'ק': n+=100; break; case 'ר': n+=200; break; case 'ש': n+=300; break; case 'ת': n+=400; break; /* ignore " characters */ } w++; } if(hspell_debug) fprintf(stderr,"returning %d\n",n); return n; } #if 0 void int2gim(int n, char *buf, int sizebuf) { int i; int nn, divisor; if(n<=0){ /* no gimatria... */ if(sizebuf) buf[0]='\0'; return; } if(n>=1000*1000*1000) divisor=1000*1000*1000; else if(n>=1000*1000) divisor=1000*1000; else if(n>=1000) divisor=1000; else divisor=1; #define out1(c) {if(i0) { if (i == 3) {i = 0; b=appendStr("\'", b);} if (!i && (n%100 == 15 || n%100 == 16)) { b=appendStr(special[n%100 - 15],b); n /= 100; i = 2; } else { if (n%10) b=appendStr(digits[i][n%10 - 1], b); n /= 10; i++; } } /* reverse the string */ if(hspell_debug) fprintf(stderr,"before %s\n",buf); if(buf[0]!='\0') for(bleft=buf, bright=b-1; bright>bleft; bleft++, bright--){ char tmp; tmp=*bleft; *bleft=*bright; *bright=tmp; } if(hspell_debug) fprintf(stderr,"after %s\n",buf); /* we decided gimatria to end in final letters */ if(buf[0]){ switch(b[-1]){ case 'כ': b[-1]='ך'; break; case 'מ': b[-1]='ם'; break; case 'נ': b[-1]='ן'; break; case 'צ': b[-1]='ץ'; break; case 'פ': b[-1]='ף'; break; } } /* if just one letter was output, follow it by '; Otherwise, put * a " before the last letter */ if(buf[0]!='\0') { if(buf[1]=='\0'){ buf[1]='\''; buf[2]='\0'; /* NOTE: this test is to make 5001 was ה'א', not ה'א. * I'm not sure this is warranted, but it's what we had in * hspell.pl. Note that b[-2] exists because of the previous * test. */ } else if(b[-2]=='\'' && b[-1]!='\'') { b[0]='\''; b[1]='\0'; } else if(b[-1]!='\'') { /* no " in ה' */ char save=b[-1]; b[-1]='"'; b[0]=save; b[1]='\0'; } } if(hspell_debug) fprintf(stderr,"returning %s\n",buf); } /* TODO: stuff like טו' is now recognized as 15,000. In hspell.pl this * wasn't recognized because (I think) a bug in int2gim which generate * something like טו"'. Frankly, I doubt we want to recognize this case * at all... */ unsigned int hspell_is_canonic_gimatria(const char *w) { const char *p; char buf[50]; unsigned int val; /* make a quick look for quotes (if there are none, this is no * gimatria and we return 0 */ for(p=w; *p && *p!='"' && *p!='\''; p++) ; if(!*p) return 0; /* Now make the actual test for canonic gimatria */ int2gim((val=gim2int(w)), buf); if(strcmp(w, buf)) val=0; return val; } hspell-1.4/biza-verbs.hif0000644000076600007650000001426113123016775013422 0ustar nyhrl----- # הטייה מודרנית של "יכול" יכל פ,עבר,הוא יכולתי פ,עבר,אני יכולת פ,עבר,אתה יכולת פ,עבר,את יכלה פ,עבר,היא יכולנו פ,עבר,אנו יכולתם פ,עבר,אתם יכולתן פ,עבר,אתן יכלו פ,עבר,הם יכלו פ,עבר,הן אוכל פ,עתיד,אני תוכל פ,עתיד,אתה תוכלי פ,עתיד,את יוכל פ,עתיד,הוא תוכל פ,עתיד,היא נוכל פ,עתיד,אנו תוכלו פ,עתיד,אתם תוכלנה פ,עתיד,אתן יוכלו פ,עתיד,הם תוכלנה פ,עתיד,הן יכול פ,הווה,יחיד יכולה פ,הווה,יחידה יכולים פ,הווה,רבים יכולות פ,הווה,רבות ----- חי פ,עבר,הוא חייתי פ,עבר,אני חיית פ,עבר,אתה חיית פ,עבר,את חייתה פ,עבר,היא חיינו פ,עבר,אנו חייתם פ,עבר,אתם חייתן פ,עבר,אתן חיו פ,עבר,הם חיו פ,עבר,הן Lחיות פ,מקור חייה פ,ציווי,אתה חיי פ,ציווי,את חיו פ,ציווי,אתם חיינה פ,ציווי,אתן אחיה פ,עתיד,אני תחיה פ,עתיד,אתה תחיי פ,עתיד,את יחיה פ,עתיד,הוא תחיה פ,עתיד,היא נחיה פ,עתיד,אנו תחיו פ,עתיד,אתם תחיינה פ,עתיד,אתן יחיו פ,עתיד,הם תחיינה פ,עתיד,הן חי פ,הווה,יחיד חיה פ,הווה,יחידה חיים פ,הווה,רבים חיות פ,הווה,רבות # צורות ספרותיות יחי פ,עתיד,הוא תחי פ,עתיד,היא ----- קטון פ,עבר,הוא קטונתי פ,עבר,אני קטונת פ,עבר,אתה קטונת פ,עבר,את קטנה פ,עבר,היא קטונו פ,עבר,אנו קטנתם פ,עבר,אתם קטנתן פ,עבר,אתן קטנו פ,עבר,הם קטנו פ,עבר,הן Lקטון פ,מקור קטן פ,ציווי,אתה קטני פ,ציווי,את קטנו פ,ציווי,אתם קטנה פ,ציווי,אתן אקטן פ,עתיד,אני תקטן פ,עתיד,אתה תקטני פ,עתיד,את יקטן פ,עתיד,הוא תקטן פ,עתיד,היא נקטן פ,עתיד,אנו תקטנו פ,עתיד,אתם תקטנה פ,עתיד,אתן יקטנו פ,עתיד,הם תקטנה פ,עתיד,הן קטן פ,הווה,יחיד קטן פ,הווה,יחיד,סמיכות קטנה פ,הווה,יחידה קטנת פ,הווה,יחידה,סמיכות קטנים פ,הווה,רבים קטני פ,הווה,רבים,סמיכות קטנות פ,הווה,רבות קטנות פ,הווה,רבות,סמיכות ----- יגור פ,עבר,הוא יגורתי פ,עבר,אני יגורת פ,עבר,אתה יגורת פ,עבר,את יגרה פ,עבר,היא יגורנו פ,עבר,אנו יגרתם פ,עבר,אתם יגרתן פ,עבר,אתן יגרו פ,עבר,הם יגרו פ,עבר,הן Lגור פ,מקור גור פ,ציווי,אתה גורי פ,ציווי,את גורו פ,ציווי,אתם גורנה פ,ציווי,אתן אגור פ,עתיד,אני תגור פ,עתיד,אתה תגורי פ,עתיד,את יגור פ,עתיד,הוא תגור פ,עתיד,היא נגור פ,עתיד,אנו תגורו פ,עתיד,אתם תגורנה פ,עתיד,אתן יגורו פ,עתיד,הם תגורנה פ,עתיד,הן יגור פ,הווה,יחיד יגורה פ,הווה,יחידה יגורים פ,הווה,רבים יגורות פ,הווה,רבות ----- # We have a bug with the maqor form "לומר". binarize-desc doesn't currently # look at the מקור parameter, and it only checks that the word starts with # an L. But if we write "Lומר", Hspell will not accept לומר - it will require # לוומר! This waw-doubling is indeed required when the initial waw is a # consonant, and indeed initial waws are always consonants - the word לומר # is a bizarre exception. # So, we must write לומר, with a ל, not L, so that Hspell doesn't know this # is a maqor and doesn't double the waw when adding ל. But then - we can't # add the מקור parameter in the description, because that would cause # binarise-desc (as it's now written) not to allow all prefixes that it needs # to allow - in particular we want to allow כ, as in כלומר. Writing לומר # without any parameters, will allow any prefix before it. That's not too # bad, even if some don't really make sense (e.g. ללומר). # # TODO: This problem deserves a better fix that will only accept the legal # prefixes for לומר. #לומר פ,מקור לומר ----- # צורות תנכיות שימושיות יהי פ,עתיד,הוא תהי פ,עתיד,היא יהא פ,עתיד,הוא תהא פ,עתיד,היא ----- # צורה מודרנית של להיסוג Lסגת פ,מקור # ליטוע מיושן Lטעת פ,מקור ----- נסב פ,עבר,הוא נסבותי פ,עבר,אני נסבות פ,עבר,אתה נסבות פ,עבר,את נסבה פ,עבר,היא נסבונו פ,עבר,אנו נסבותם פ,עבר,אתם נסבותן פ,עבר,אתן נסבו פ,עבר,הם נסבו פ,עבר,הן Lהיסב פ,מקור היסב פ,ציווי,אתה היסבי פ,ציווי,את היסבו פ,ציווי,אתם היסבנה פ,ציווי,אתן אסב פ,עתיד,אני תיסב פ,עתיד,אתה תיסבי פ,עתיד,את ייסב פ,עתיד,הוא תיסב פ,עתיד,היא ניסב פ,עתיד,אנו תיסבו פ,עתיד,אתם תיסבנה פ,עתיד,אתן ייסבו פ,עתיד,הם תיסבנה פ,עתיד,הן נסב פ,הווה,יחיד נסבה פ,הווה,יחידה נסבים פ,הווה,רבים נסבות פ,הווה,רבות ----- נמק פ,עבר,הוא נמקותי פ,עבר,אני נמקות פ,עבר,אתה נמקות פ,עבר,את נמקה פ,עבר,היא נמקונו פ,עבר,אנו נמקותם פ,עבר,אתם נמקותן פ,עבר,אתן נמקו פ,עבר,הם נמקו פ,עבר,הן Lהימק פ,מקור הימק פ,ציווי,אתה הימקי פ,ציווי,את הימקו פ,ציווי,אתם הימקנה פ,ציווי,אתן אמק פ,עתיד,אני תימק פ,עתיד,אתה תימקי פ,עתיד,את יימק פ,עתיד,הוא תימק פ,עתיד,היא נימק פ,עתיד,אנו תימקו פ,עתיד,אתם תימקנה פ,עתיד,אתן תימקנה פ,עתיד,הן יימקו פ,עתיד,הם נמק פ,הווה,יחיד נמקה פ,הווה,יחידה נמקים פ,הווה,רבים נמקות פ,הווה,רבות ----- נגול פ,עבר,הוא נגלותי פ,עבר,אני נגלות פ,עבר,אתה נגלות פ,עבר,את נגולה פ,עבר,היא נגלונו פ,עבר,אנו נגלותם פ,עבר,אתם נגלותן פ,עבר,אתן נגולו פ,עבר,הם נגולו פ,עבר,הן Lהיגול פ,מקור היגול פ,ציווי,אתה היגולי פ,ציווי,את היגולו פ,ציווי,אתם היגולנה פ,ציווי,אתן אגול פ,עתיד,אני תיגול פ,עתיד,אתה תיגולי פ,עתיד,את ייגול פ,עתיד,הוא תיגול פ,עתיד,היא ניגול פ,עתיד,אנו תיגולו פ,עתיד,אתם תיגולנה פ,עתיד,אתן ייגולו פ,עתיד,הם תיגולנה פ,עתיד,הן נגל פ,הווה,יחיד נגלה פ,הווה,יחידה נגלים פ,הווה,רבים נגלות פ,הווה,רבות ----- יבולע פ,עתיד,הוא ----- יסולח פ,עתיד,הוא ----- # הטייה מיושנת של התווסף. woo יוצר את ההטייה הזו בצורה נכונה - פרט לצורת # עתיד-אני, שלדעתי צריכה להיכתב בסגול באל"ף )וללא יו"ד(. כדי לא לטרוח ולתקן את # woo, העברתי אותה לכאן. היתוסף פ,עבר,הוא ניתוסף פ,עבר,הוא היתוספתי פ,עבר,אני ניתוספתי פ,עבר,אני היתוספת פ,עבר,אתה ניתוספת פ,עבר,אתה היתוספת פ,עבר,את ניתוספת פ,עבר,את היתוספה פ,עבר,היא ניתוספה פ,עבר,היא היתוספנו פ,עבר,אנו ניתוספנו פ,עבר,אנו היתוספתם פ,עבר,אתם ניתוספתם פ,עבר,אתם היתוספתן פ,עבר,אתן ניתוספתן פ,עבר,אתן היתוספו פ,עבר,הם ניתוספו פ,עבר,הם היתוספו פ,עבר,הן ניתוספו פ,עבר,הן Lהיתוסף פ,מקור Bהיתוספי פ,מקור,כינוי/אני Bהיתוספך פ,מקור,כינוי/אתה Bהיתוספו פ,מקור,כינוי/הוא Bהיתוספה פ,מקור,כינוי/היא Bהיתוספנו פ,מקור,כינוי/אנו Bהיתוספכם פ,מקור,כינוי/אתם Bהיתוספכן פ,מקור,כינוי/אתן Bהיתוספם פ,מקור,כינוי/הם Bהיתוספן פ,מקור,כינוי/הן היתוסף פ,ציווי,אתה היתוספי פ,ציווי,את היתוספו פ,ציווי,אתם היתוספנה פ,ציווי,אתן אתוסף פ,עתיד,אני תיתוסף פ,עתיד,אתה תיתוספי פ,עתיד,את ייתוסף פ,עתיד,הוא תיתוסף פ,עתיד,היא ניתוסף פ,עתיד,אנו תיתוספו פ,עתיד,אתם תיתוספנה פ,עתיד,אתן ייתוספו פ,עתיד,הם תיתוספנה פ,עתיד,הן מיתוסף פ,הווה,יחיד,ז מיתוסף פ,הווה,יחיד,ז,סמיכות מיתוספת פ,הווה,יחיד,נ מיתוספת פ,הווה,יחיד,נ,סמיכות מיתוספים פ,הווה,רבים,ז מיתוספי פ,הווה,רבים,ז,סמיכות מיתוספות פ,הווה,רבים,נ מיתוספות פ,הווה,רבים,נ,סמיכות ----- אטב פ,עתיד,אני תיטב פ,עתיד,אתה תיטבי פ,עתיד,את ייטב פ,עתיד,הוא תיטב פ,עתיד,היא ניטב פ,עתיד,אנו תיטבו פ,עתיד,אתם תיטבנה פ,עתיד,אתן ייטבו פ,עתיד,הם תיטבנה פ,עתיד,הן ----- הב פ,ציווי,אתה הבי פ,ציווי,את הבו פ,ציווי,אתם הבנה פ,ציווי,אתן ----- # גרסה משנאית של "לתת" ליתן פ,מקור ----- # רק בביטוי "לא י/אונה רע" אונה פ,עבר,הוא יאונה פ,עתיד,הוא ----- # רק בביטוי "ירום הודו" ירום פ,עתיד,הוא hspell-1.4/Makefile.in0000644000076600007650000003214713123033602012722 0ustar nyhrl# Hspell Makefile # Copyright (C) 2002-2015 Nadav Har'El and Dan Kenigsberg # A comment about parallel make: # Unfortunately, parallel make deals with rules with multiple targets in a way # I can only describe as "useless". If one rule has multiple targets, and # more than one of them appear as dependencies in other rules, parallel make # may run the rule more than once concurrently! To work around this problem, # we need to change every rule of the form: # a b c: # ... create a b and c # to the form: # a: # ... create a b and c # b c: a # Now, the real rule will be run just once, because "a" will be created just # once. This workaround is used several times in the Makefile below. # Locale override: # Some of the things we do here (like sort), and Perl scripts we run can be # distracted by the user's locale setting, which are irrelevant - Hspell's # source and data are all in ISO-8859-8, and that has nothing to do with the # builder's choice of locale. So we need to override them. The best would # have been to do: # export LANG=C # export LC_ALL=C # But the "export" directive is only supported by Gnu make, so let's instead # redfine all the relevant LC_* variables the user might have set... Note that # the following only modified environment variables that were already exported # by the user - which is actually ok (but this makes us have to set all these # different variables). LANG=C LC_ALL=C LC_CTYPE=C LC_COLLATE=C # If making one of the intermediate targets failed in the middle delete it, # so the partially built output file doesn't look like a legitimate file # on the next "make" run. .DELETE_ON_ERROR: @SET_MAKE@ # build and installation paths prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ DESTDIR = PREFIX = @prefix@ BIN = @bindir@ SHARE = @datadir@/hspell LIBEXEC = @libexecdir@/hspell MAN1 = @mandir@/man1 MAN3 = @mandir@/man3 LIBDIR = @libdir@ INCLUDEDIR = @includedir@ DICTBASE = @DICTBASE@ PERL=@PERL@ CC=@CC@ DEFS=@DEFS@ -DDICTIONARY_BASE=\"$(DICTBASE)\" CFLAGS=@CFLAGS@ LIBS=@LIBS@ CPPFLAGS=@CPPFLAGS@ LDFLAGS=@LDFLAGS@ STRIP=strip .c.o: $(CC) -c $(CFLAGS) $(CPPFLAGS) $(DEFS) $< # For building a shared library (--enable-shared) %.lo: %.c $(CC) -c $(CFLAGS) $(CPPFLAGS) $(DEFS) -fPIC -DPIC -o $@ $< # Our TARGETS variable chooses what to compile. Some things are # optionally compiled depending on --enable-* paramters to configure. TARGETS = @TARGETS@ all: $(TARGETS) # SEDCMD controls on whether objective-kinuyim - about 130,000 rare verb # forms - are left during build or removed. It is set to the appropriate # strings when "configure" is run (depending on whether --enable-fatverb # is given). SEDCMD=@SEDCMD@ # EXTRAOBJECTS - for --enable-linginfo EXTRAOBJECTS=@EXTRAOBJECTS@ clean: rm -f wunzip wordlist.wgz shemp.dat \ corlist.o dict_radix.o find_sizes.o gimatria.o \ hspell.o tclHash.o hebrew.wgz hebrew.wgz.sizes \ hebrew.wgz.prefixes shemp.hif shemp.dat \ nouns.hif verbs.hif hspell find_sizes \ prefixes.c libhspell.o libhspell.a hspell.exe \ hebrew.wgz.desc hebrew.wgz.stems he_affix.dat \ he.wl mk_he_affix linginfo.o mk_he_affix.o \ hebrew.wgz.lingsizes.tmp dmask.c \ spell-he.xpi he.dic he.aff README-he.txt \ README_he_IL.txt he_IL.dic he_IL.aff he_IL.zip \ specfilter.o specfilter he.rws libhspell.so.0 libhspell.so \ dict_radix.lo gimatria.lo corlist.lo libhspell.lo linginfo.lo \ he.xpi misc/dictionaries/he.dic misc/dictionaries/he.aff \ misc/dictionaries/license.txt misc/dictionaries/README-he.txt distclean: clean rm -f Makefile config.log config.status # On Windows, this would typically be set to hspell.exe HSPELL_EXECUTABLE=hspell install: all test -d $(DESTDIR)$(BIN) || mkdir -m 755 -p $(DESTDIR)$(BIN) $(STRIP) $(HSPELL_EXECUTABLE) -rm -f $(DESTDIR)$(BIN)/$(HSPELL_EXECUTABLE) cp $(HSPELL_EXECUTABLE) $(DESTDIR)$(BIN)/$(HSPELL_EXECUTABLE) chmod 755 $(DESTDIR)$(BIN)/$(HSPELL_EXECUTABLE) cp multispell $(DESTDIR)$(BIN)/multispell chmod 755 $(DESTDIR)$(BIN)/multispell test -d $(DESTDIR)$(SHARE) || mkdir -m 755 -p $(DESTDIR)$(SHARE) cp hebrew.wgz hebrew.wgz.prefixes hebrew.wgz.sizes $(DESTDIR)$(SHARE)/ gzip -9n < spellinghints > $(DESTDIR)$(SHARE)/hebrew.wgz.hints (cd $(DESTDIR)$(SHARE); chmod 644 hebrew.wgz hebrew.wgz.prefixes hebrew.wgz.sizes hebrew.wgz.hints) test ! -f hebrew.wgz.stems || cp hebrew.wgz.stems hebrew.wgz.desc $(DESTDIR)$(SHARE)/ (cd $(DESTDIR)$(SHARE); test ! -f hebrew.wgz.stems || chmod 644 hebrew.wgz.stems hebrew.wgz.desc) -rm -f $(DESTDIR)$(BIN)/hspell-i -ln -s $(HSPELL_EXECUTABLE) $(DESTDIR)$(BIN)/hspell-i test -d $(DESTDIR)$(MAN1) || mkdir -m 755 -p $(DESTDIR)$(MAN1) cp hspell.1 $(DESTDIR)$(MAN1)/ chmod 644 $(DESTDIR)$(MAN1)/hspell.1 test -d $(DESTDIR)$(MAN3) || mkdir -m 755 -p $(DESTDIR)$(MAN3) cp hspell.3 $(DESTDIR)$(MAN3)/ chmod 644 $(DESTDIR)$(MAN3)/hspell.3 test -d $(DESTDIR)$(LIBDIR) || mkdir -m 755 -p $(DESTDIR)$(LIBDIR) cp libhspell.a $(DESTDIR)$(LIBDIR)/ chmod 644 $(DESTDIR)$(LIBDIR)/libhspell.a test -d $(DESTDIR)$(INCLUDEDIR) || mkdir -m 755 -p $(DESTDIR)$(INCLUDEDIR) cp hspell.h linginfo.h $(DESTDIR)$(INCLUDEDIR)/ chmod 644 $(DESTDIR)$(INCLUDEDIR)/hspell.h $(DESTDIR)$(INCLUDEDIR)/linginfo.h test -f libhspell.so.0 && cp libhspell.so.0 $(DESTDIR)$(LIBDIR)/ test -f libhspell.so.0 && chmod 755 $(DESTDIR)$(LIBDIR)/libhspell.so.0 test -f libhspell.so.0 && ln -sf libhspell.so.0 $(DESTDIR)$(LIBDIR)/libhspell.so ################################################ # for creating an hspell distribution tar PACKAGE = hspell VERSION = 1.4 DISTFILES = COPYING INSTALL LICENSE README WHATSNEW \ Makefile.in stats wunzip.c wzip \ hspell.1 \ wolig.pl wolig.dat biza-nouns.hif milot.hif extrawords.hif \ woo woo.dat biza-verbs.hif \ likelyerrors spellinghints \ corlist.c dict_radix.c \ dict_radix.h find_sizes.c gimatria.c hspell.c \ hspell.h libhspell.c gzbuffered.h \ pmerge PrefixBits.pl genprefixes.pl \ hash.h tclHash.c tclHash.h \ binarize-desc.pl pack-desc.pl linginfo.c linginfo.h \ multispell hspell.3 mk_he_affix.c configure.in configure \ misc/install.rdf.pre specfilter.c \ doc/niqqudless.odt test/test1 test/test1.dat DISTDIR = $(PACKAGE)-$(VERSION) distdir: rm -rf ./$(DISTDIR) mkdir -m 755 $(DISTDIR) cp -a --parents $(DISTFILES) $(DISTDIR) #cp -a $(DISTFILES) $(DISTDIR) # Note that Oron Peled suggested a more eleborate version that makes hard # links instead of copies: # for file in $(DISTFILES); do \ # if test -d $$file; then \ # cp -pr $$file $(distdir)/$$file; \ # else \ # test -f $(distdir)/$$file \ # || ln $$file $(distdir)/$$file 2> /dev/null \ # || cp -p $$file $(distdir)/$$file || :; \ # fi; \ # done dist: distdir tar zcvf $(DISTDIR).tar.gz $(DISTDIR) rm -rf ./$(DISTDIR) ############################################################################ LIBOBJS=dict_radix.o gimatria.o corlist.o libhspell.o $(EXTRAOBJECTS) libhspell.a: $(LIBOBJS) -rm -f $@ ar cr $@ $^ -ranlib $@ # For building a shared library (--enable-shared) libhspell.so.0: $(LIBOBJS:.o=.lo) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ -shared -Wl,-soname,libhspell.so.0 $^ -lz ln -sf libhspell.so.0 libhspell.so HSPELL_LIB = @HSPELL_LIB@ $(HSPELL_EXECUTABLE): hspell.o tclHash.o $(HSPELL_LIB) $(CC) $(CFLAGS) $(LDFLAGS) -o $(HSPELL_EXECUTABLE) hspell.o tclHash.o $(HSPELL_LIB) $(LIBS) # remember to update this dependency list once in a while... libhspell.o dict_radix.o find_sizes.o: dict_radix.h dict_radix.o linginfo.o: gzbuffered.h libhspell.o mk_he_affix.o: prefixes.c hspell.o: hash.h tclHash.h tclHash.o: tclHash.h corlist.o gimatria.o hspell.o libhspell.o: hspell.h hspell.o libhspell.o linginfo.o: linginfo.h hspell.h linginfo.o: dmask.c specfilter.o: prefixes.c libhspell.lo: prefixes.c prefixes.c: genprefixes.pl PrefixBits.pl $(PERL) -w ./genprefixes.pl >prefixes.c find_sizes: find_sizes.o dict_radix.o $(CC) $(CFLAGS) $(LDFLAGS) -o find_sizes find_sizes.o dict_radix.o $(LIBS) # *.hif, "hspell inflection format" files, list all the possible inflections # and information on how each word was derived. Some are the outputs of the # various word-list generators with the -d (derivation) option, and others are # pre-prepared files for exceptional inflections. # These files are pretty big - totalling over 16 MB - and can be easily # kept compressed. However, on modern computers, 16 MB temporary disk usage # is nothing to worry about, so we don't. HIFS=milot.hif extrawords.hif biza-verbs.hif biza-nouns.hif \ nouns.hif verbs.hif shemp.hif hif: $(HIFS) nouns.hif: wolig.pl wolig.dat $(PERL) -w wolig.pl -d wolig.dat > $@ verbs.hif: woo woo.dat $(PERL) -w woo -d woo.dat | sed "$(SEDCMD)" > $@ shemp.dat: verbs.hif shemp.hif: shemp.dat wolig.pl $(PERL) -w wolig.pl -d shemp.dat > $@ # hebrew.wgz contains all the words without any allowed-prefix hints. # hebrew.wgz.prefixes is the prefix hints (one byte per word, compressed). # hebrew.wgz.sizes contains the memory sizes that reading hebrew.wgz will # require (this makes it easier for hspell to preallocate the needed sizes). hebrew.wgz: pmerge PrefixBits.pl $(HIFS) cat $(HIFS) | ./pmerge -p hebrew.wgz.tmp | ./wzip | gzip -9n > hebrew.wgz -rm -f hebrew.wgz.prefixes gzip -9n < hebrew.wgz.tmp >hebrew.wgz.prefixes -rm -f hebrew.wgz.tmp hebrew.wgz.prefixes: hebrew.wgz hebrew.wgz.sizes: hebrew.wgz find_sizes gzip -dc hebrew.wgz | ./find_sizes >hebrew.wgz.sizes ###################################### optional linginfo stuff ############## dolinginfo: linginfo_data $(HSPELL_EXECUTABLE) # In the following long rule, the complete list of all words with linguistic # details is concatanated and sent to binarize-desc.pl, which converts the # detailed information of each word into bitmap (called dmask), produces a # specifier that tells which prefixes are accepted with the word, and writes its # stem. Then the words list is sorted, packed (a-la uniq), and the output files # are written. # TODO: make pack-desc.pl/binarize-desc.pl and pmerge into just one script # (with options on whether to generate stems, etc.), and then we won't have # this ugliness of two different rules generating hebrew.wgz in two ways # (this is not only ugly, it's unsafe. If we use linginfo (--enable-linginfo # and change, say, "extrawords", and run "make hebrew.wgz" we will get the # wrong program run. A bare "make" does work properly because we stick an # extra target in front of the default targets. linginfo_data: hebrew.wgz.stems hebrew.wgz.stems: binarize-desc.pl PrefixBits.pl pack-desc.pl $(HIFS) find_sizes for hif in $(HIFS); do \ cat $$hif; echo ---; done | \ $(PERL) binarize-desc.pl | \ sort -u | $(PERL) pack-desc.pl -p hebrew.wgz.prefixes.tmp \ -d hebrew.wgz.desc.tmp -s hebrew.wgz.stems.tmp \ -l hebrew.wgz.lingsizes.tmp | \ ./wzip | gzip -9n > hebrew.wgz gzip -dc hebrew.wgz | ./find_sizes >hebrew.wgz.sizes cat hebrew.wgz.lingsizes.tmp >> hebrew.wgz.sizes -rm -f hebrew.wgz.lingsizes.tmp -rm -f hebrew.wgz.prefixes gzip -9n < hebrew.wgz.prefixes.tmp >hebrew.wgz.prefixes -rm -f hebrew.wgz.prefixes.tmp -rm -f hebrew.wgz.desc gzip -9n < hebrew.wgz.desc.tmp >hebrew.wgz.desc -rm -f hebrew.wgz.desc.tmp -rm -f hebrew.wgz.stems gzip -9n < hebrew.wgz.stems.tmp >hebrew.wgz.stems -rm -f hebrew.wgz.stems.tmp hebrew.wgz.desc hebrew.wgz.lingsizes.tmp dmask.c: hebrew.wgz.stems ############################################################################ # The following targets build packages of Hspell's word list in formats # required for other spell-checkers like Aspell and Hunspell. They are not # necessary for building the native Hspell spell-checker. ############################################################################ mk_he_affix.o: prefixes.c hspell.h # The "he_affix.dat" and "he.wl" files are the two files basic files which # together form an Aspell 0.6 dictionary. .PHONY: aspell aspell: he_affix.dat he.wl he.wl: mk_he_affix wunzip hebrew.wgz hebrew.wgz.prefixes specfilter ./mk_he_affix 0 he_affix.dat he.wl he_affix.dat: he.wl # Aspell runtime prefers a hash-table dump which can be mmapped, instead of # the textual word format: he.rws: he.wl aspell --lang=he create master ./he.rws < he.wl # The "he.dic" and "he.aff" files are the two files basic files which # form a Hunspell dictionary; Hunspell is the multilingual spellchecker used # by Firefox, OpenOffice, and many other projects. The format of these files # is almost identical to the aspell format above, with only minor variations, # so the same "mk_he_affix" program generates both. .PHONY: hunspell hunspell: he.dic he.aff he.dic: mk_he_affix wunzip hebrew.wgz hebrew.wgz.prefixes specfilter ./mk_he_affix 1 he.aff he.dic he.aff: he.dic .PHONY: firefox firefox: he.xpi misc/install.rdf: misc/install.rdf.pre sed 's/%VERSION%/$(VERSION)/' $< > $@ he.xpi: misc/install.rdf he.dic he.aff -mkdir misc/dictionaries ln -f he.dic he.aff misc/dictionaries ln -f COPYING misc/dictionaries/license.txt ln -f README misc/dictionaries/README-he.txt cd misc; zip ../$@ dictionaries/he.dic dictionaries/he.aff dictionaries/license.txt dictionaries/README-he.txt install.rdf ############################################################################ # A (very small number of) automated tests .PHONY: test test: hspell hebrew.wgz.sizes he.rws hunspell test/test1 hspell-1.4/woo.dat0000600000076600007650000017305513123032674012157 0ustar nyhrl# Woo (WOrdlist generator Object-oriented verb section) data file # # Copyright (C) 2000-2017 Nadav Har'El, Dan Kenigsberg # # options for each word: # ע - noun - see wolig.dat # ת - adjective - see wolig.dat # פ - verb # Verb lines include a verb root, the binyanim in which it conjugates, and # modifiers. Notice that you should not treat the root stated here as the # grammatically correct one. Rather, it is letter cobmination that produces # correcet conjugations. # פי, פו, הת - # The verb conjugates in pi`el, pu`al, hitpa`el respectively. # קל_אפעל, קל_אפעול - # The verb conjugates in qal (pa`al). The future is conjugated # with patax / xolam respectively. # נפ, הפ, הו - # The verb conjugates in nif`al, hif`il, huf`al respectively. # # "modifiers" for verbs: # שמור_פנ - # Keep initial consonantal nun הנביט/הביט # שמור_מפיק - # Keep consonantal he הגביה,הגיה # שמור_עו, שמור_עע - # Behave as if was a regular root # שמור_ל - # keep last consonant, even if it creats a doublette שבתתי # שמור_פד - # Do not assimilate initial consonant - as in התדרדרתי # שמור_עע - conjugate as a common verb, not like the `kpulim' # # נסתר - An alternative to supplying the root. 3rd person male singular # from the dictionary. This alternative is important for highly # irregular forms, and is the one favoured by Uzzy Ornan who dislikes # the notion of Root. # # בינוני_שמן - the conjugation in the present tense is qatel (just like # shamen) # # אין_בינוני - no present tense # # אין_שם_פעולה - some verbs do not have usefull `shem peula' # שם_פעולה=שםפעולה - for verbs with special `shem peula' # אין_פעול - the default of קל_ verbs is to have a פעול form # פעול - the root has a פעול form (even though not a קל_form) # # מקור=למכור - exceptional form of the infinitive. replacement for List I # in Ornan's page 13 # עתיד1=ללך - replacement for Ornan's Future List I # # מקור_מלעילי - information needed by the imperative chart # מקור_אבד_פנ - few verbs in binyan qal loose their initial nun in the # infinitive form # # בינונית_ארכאית - female at the present tense has two forms. Ornan prefers # the more common and modern one, but in some cases the "archaic" form # is favorable. # בינונית_תה - for case where both the ת- and ה-ending form is acceptable. # # הסיבותי_ישן - old-fashion conjugation of `doubled' roots in binyan hif`il. # נסוב_מודרני - new-fashion conjugation of `hollowed' roots in nif`al. # TODO: normalize these options - have them all in the same `direction' # בינוני_שומר - the present tense is like "complete" root, and so is the past # of 3rd persons. # עתיד_חרוק - פשוט חולני. # חדתי_מודרני - for doubled with normal past suffixes # # גם_נת - for certain verbs, the archaic passive-like form of hitqatel is # still common. # # עתידי_אאמץ - for few cases where the 1ps future is normal even for אפעל # # נפ_ניזון - for the nif`al form with xiriq for midle-waw-roots. # # references: # [1] לוח השמות השלם, ד"ר שאול ברקלי, מהדורה 11, הוצאת ראובן מס ירושלים, 0691. # # [2] נטיית הפועל בתרשימי זרימה, עוזי אורנן, אקדמון, תש"ם # # [3] לוח הפעלים השלם, ד"ר שאול ברקלי, מהדורה 10, הוצאת ראובן מס ירושלים, 1953 # # [4] מילון ההווה, שושנה בהט ומרדכי מישור, ספרית מעריב, איתאב - בית הוצאה # לאור, 1995. # # The following lines will appear also in the resulting output files # (verbs.hif, shemp.hif): # #* This file was generated automatically from original data prepared by the #* Hspell project (http://hspell.ivrix.org.il/). #* Copyright (C) 2000-2017 Nadav Har'El, Dan Kenigsberg #* This file, like the rest of Hspell, is licensed under the GNU Affero General #* Public License (AGPL) version 3. אבד פ,הת,פי+ # הפ תנכי אבד פ,קל_אפעל,אין_שם_פעולה # נפ נשמע ילדותי אבטח פ,פי+,פו אבן פ,פי+,פו,הת אבק פ,פי,פו,הת,נפ,הפ+,הו אגד פ,פי,פו,הת,פעול # קל_אפעול # מיושן אגף פ,פי,פו אגר פ,קל_אפעול,נפ אדה פ,פי,פו,הת אדם פ,הפ אהב פ,הת אהב פ,קל_אפעל+,שם_פעולה=אהבה אהב פ,נפ,הפ+,אין_שם_פעולה אוץ פ,קל_אפעול,אין_שם_פעולה אוץ פ,הפ,הו אור פ,הפ,הו,נפ אזן פ,הפ,פי+,פו,הת אחד פ,פי+,פו,הת,פעול,הפ,הו אחז פ,נפ אחז פ,פי,אין_שם_פעולה אחז פ,קל_אפעל+,ציווי=אחוז אחל פ,פי,פו אחר פ,פי,פו,הת אטט פ,הפ,הו אטם פ,קל_אפעול+,נפ אים פ,פי,פו,שמור_עו איש פ,פי,פו,שמור_עו אכזב פ,פו,הת אכזב פ,פי+,אין_שם_פעולה אכל פ,קל_אפעל+,נפ,פי,פו,הת,הפ+,הו אכלס פ,פי,פו,הת אכף פ,נפ,אין_שם_פעולה אכף פ,קל_אפעול+ אלץ פ,פי+,פו,נפ אמן פ,הפ,הת,פי+,פו,פעול,נפ אמץ פ,פי+,פו,הת אמץ פ,קל_אפעל,אין_בינוני,אין_פעול,אין_שם_פעולה,עתידי_אאמץ,ציווי=אמצ אמר פ,קל_אפעל,קצר_פא,נפ,הפ,הו אנח פ,נפ אסף פ,קל_אפעול+,שם_פעולה=איסוף אסף פ,נפ,הת אסר פ,קל_אפעול+,אין_שם_פעולה אסר פ,נפ אפה פ,נפ,אין_שם_פעולה אפה פ,קל_אפעל אפyן פ,פי,פו,הת,אין_שם_פעולה אפף פ,קל_אפעול+,אין_שם_פעולה,שמור_עע אפק פ,הת אפר פ,הפ,פי,פו,הת אפשר פ,פי+,הת אצר פ,קל_אפעול # )במוזאון( אצר פ,נפ,אין_שם_פעולה # )במוזאון( ארגן פ,פי+,פו,הת ארז פ,קל_אפעול,נפ ארח פ,פי,הת ארע פ,פי,אין_בינוני,אין_ציווי,אין_עתיד # )רק עבר!( אשם פ,הפ+,הו,נפ אשם פ,קל_אפעל,בינוני_שמן,אין_פעול,אין_שם_פעולה,עתידי_אאמץ,ציווי=אשמ # אשמנו, בגדנו אשפז פ,פי+,פו,הת אשר פ,פי+,פו,הת אשש פ,פי+,פו,הת אשש פ,פי+,שמור_עע אתת פ,פי,פו בגד פ,נפ,אין_שם_פעולה בגד פ,קל_אפעול בדל פ,פי,פו,הת,הפ+,הו,נפ בדק פ,נפ,אין_שם_פעולה בדק פ,קל_אפעול+ בהה פ,קל_אפעל,אין_פעול,שמור_עע בהל פ,הפ+,הו,נפ,פעול בהק פ,קל_אפעל,אין_פעול,אין_שם_פעולה,הפ בהר פ,הפ+,הו,הת בוא פ,קל_אפעול,הפ+,הו בוא פ,הפ+,הסיבותי_ישן בוך פ,הפ+,הו בוך פ,נפ,אין_שם_פעולה בוך פ,נפ,אין_שם_פעולה,נסוב_מודרני בון פ,הפ+,הו,הת בון פ,הפ,הסיבותי_ישן בוס פ,הפ+,הו,פו,הת בוש פ,הת בוש פ,פי,שם_פעולה=בושה בוש פ,קל_אפעול,נסתר בזבז פ,פי+,פו,הת בזז פ,נפ,שמור_עע,אין_שם_פעולה בזז פ,קל_אפעול+,שמור_עע בזק פ,קל_אפעול,הפ,הו בזק פ,נפ,אין_שם_פעולה בחן פ,קל_אפעל+,אין_פעול,נפ,הפ,הו בחר פ,קל_אפעל+,נפ בטח פ,פי+,פו,הפ+,הו בטח פ,קל_אפעל,אין_שם_פעולה בטל פ,פי+,פו,הת בים פ,פי,פו,שמור_עו ביש פ,פי+,פו,הת,שמור_עו בכה פ,פי,אין_שם_פעולה בכה פ,קל_אפעל,אין_פעול בלבל פ,פי,פו,הת בלגן פ,פו,הת בלגן פ,פי,אין_שם_פעולה בלה פ,פי,הת בלה פ,קל_אפעל,בינוני_שמן בלט פ,קל_אפעול,אין_פעול,הפ+,הו,הת בלש פ,קל_אפעול,אין_פעול,שם_פעולה=בילוש בנה פ,נפ,אין_שם_פעולה בנה פ,קל_אפעל+,הפ+,הו # הפ והו בהנדסה בסס פ,פי+,פו,הת,שמור_עע בער פ,קל_אפעל,אין_פעול # גם, אבל לא רק! שם_פעולה=בערה בער פ,פי+,פו,הפ+,הו בצע פ,פי+,פו,הת,קל_אפעל,נפ בקר פ,פי+,פו בקש פ,פי+,פו,הת,גם_נת ברג פ,הפ+,הו,הת ברח פ,קל_אפעל,אין_פעול,הפ+,הו ברך פ,הת,גם_נת # הפ,הו - להושיב גמל ברך פ,פי+,פו,אין_שם_פעולה ברר פ,קל_אפעול,בינוני_שומר ברר פ,קל_אפעל,שמור_עע,פי,פו,הת,גם_נת,הו # הפ ספרותי בשל פ,הפ,הת,פי+,פו בשר פ,פי,פו,הת,גם_נת גאל פ,קל_אפעל+,שם_פעולה=גאולה גאל פ,נפ,אין_שם_פעולה גבה פ,הפ+,הו,שמור_מפיק גבה פ,נפ,אין_שם_פעולה גבה פ,קל_אפעל,פי,פו,הת גבה פ,קל_אפעל,שמור_מפיק,אין_פעול גבל פ,הפ+,הו גבל פ,קל_אפעול,אין_שם_פעולה,אין_פעול גבן פ,פי,פו גבר פ,קל_אפעל,אין_פעול,הפ+,הו,הת גבש פ,פי+,פו,הת גדד פ,הת # גדד פ,קל_אפעול,אין_פעול # קטיף תמרים גדל פ,פי+,פו,הפ+,הו גדל פ,קל_אפעל,בינוני_שמן,אין_פעול,ציווי=גדל גדר פ,פי+,פו,הת,הפ+,הו,פעול גדש פ,הפ,הו,אין_שם_פעולה #רק עבור הגדיש את הסאה גדש פ,קל_אפעל,אין_שם_פעולה גהץ פ,פי,פו גוב פ,הפ,אין_שם_פעולה גון פ,פי,פו,הת,שמור_עו גוע פ,קל_אפעול,שמור_עו,אין_פעול גור פ,הת גור פ,קל_אפעל,אין_שם_פעולה #TODO: להיזכר - היש הבדל אפעול/אפעל בנכי ע"ו? גזל פ,נפ,אין_שם_פעולה גזל פ,קל_אפעול+,שם_פעולה=גזלה גזם פ,הפ,הו גזם פ,קל_אפעול,שם_פעולה=גיזום גזם פ,נפ,אין_שם_פעולה גזר פ,נפ,אין_שם_פעולה גזר פ,קל_אפעול ##גיל פ,קל_אפעל # TODO האם להשאיר את הדבר הזה? גיס פ,פי+,פו,הת,שמור_עו גלגל פ,פי,פו,הת,גם_נת גלה פ,פי,הת,גם_נת,הפ+,הו גלה פ,קל_אפעל,נפ,אין_שם_פעולה גלל פ,פי,הת,אין_שם_פעולה # נפ הושלך למוזרים גלל פ,נפ,שמור_עע,אין_שם_פעולה גלל פ,קל_אפעול,שמור_עע,אין_פעול גלם פ,פי,פו,הת,פעול גלף פ,פי,פו גלש פ,קל_אפעול,אין_פעול,הת,הפ,הו גמגם פ,פי,פו גמל פ,נפ,אין_שם_פעולה # אולי צריך שם פעולה? גמל פ,קל_אפעול+,אין_פעול גמר פ,נפ,אין_שם_פעולה גמר פ,קל_אפעול,פי,פו גנב פ,קל_אפעול+,שם_פעולה=גנבה גנב פ,הפ,הו,הת גנב פ,נפ,אין_שם_פעולה גנה פ,פי,פו גנז פ,קל_אפעול גנז פ,נפ גנן פ,פי,הת,הפ,הו גנן פ,פי,שמור_עע #to garden געל פ,הפ+,נפ,הו # מוגעל: לכבוד פסח געש פ,קל_אפעל,אין_פעול,אין_שם_פעולה געש פ,הפ # מיושן גרה פ,פי,פו,הת גרם פ,קל_אפעול,נפ #,הת #TODO רק לרופאי עצמות גרע פ,קל_אפעל,נפ גרף פ,קל_אפעול,נפ,פי,פו גרר פ,פי,פו,קל_אפעול,נפ,שמור_עע גרש פ,פי+,פו,הת,פעול גשם פ,הפ+,הו,הת,פעול גשר פ,פי,פו גשש פ,הת גשש פ,פי,שמור_עע דאג פ,הפ+,הו,אין_שם_פעולה דאג פ,קל_אפעל,שם_פעולה=דאגה,אין_פעול דבב פ,פי דבב פ,פי,פו,שמור_עע דבק פ,נפ,הפ+,הו דבק פ,קל_אפעל,אין_שם_פעולה דבק פ,קל_אפעל,בינוני_שמן,אין_שם_פעולה,אין_פעול דבר פ,נפ,פי,פו,הפ+,הו דגל פ,קל_אפעול,אין_שם_פעולה #פי,פו רק במצעדים דגש פ,הפ+,הו,פעול דדה פ,פי דהם פ,הפ+,נפ דהר פ,קל_אפעל,אין_פעול,הפ+,הו דוח פ,פי,פו,שמור_עו דון פ,קל_אפעל+,נפ,אין_שם_פעולה דין פ,הת,שמור_עו דין פ,הת,שמור_עו,שמור_פד דחה פ,נפ,אין_שם_פעולה דחה פ,קל_אפעל+ דחס פ,קל_אפעל+,נפ דחף פ,קל_אפעול+,נפ דחף פ,קל_אפעול,ציווי=דחף דחק פ,קל_אפעל+,נפ,הפ+,הו דכא פ,פי+,פו דלל פ,פי,פו,הת,שמור_עע דלל פ,קל_אפעל,אין_פעול,עתיד_חרוק,אין_שם_פעולה דלף פ,קל_אפעול,הפ+,הו,אין_פעול דלק פ,הפ+,הו,נפ דלק פ,קל_אפעול,שם_פעולה=דלקה # דלוק נשדד ע"י הסלנג דמה פ,נפ,פי,פו,הת דמה פ,הת,שמור_פד דמה פ,קל_אפעל,אין_שם_פעולה דמyן פ,פי,אין_שם_פעולה,פו דמם פ,קל_אפעול,אין_פעול,אין_שם_פעולה,שמור_עע דמם פ,פי דמם פ,הפ+,הו,פי,שמור_עע דעך פ,קל_אפעל,אין_פעול דפס פ,הפ+,הו דפס פ,נפ,אין_שם_פעולה דפק פ,נפ,אין_שם_פעולה דפק פ,קל_אפעול,הת דפק פ,הת,שמור_פד דקדק פ,פי דרבן פ,פי+,פו דרג פ,פי+,פו דרדר פ,פי+,פו,הת דרדר פ,הת,שמור_פד דרך פ,קל_אפעול,נפ,הפ+,הו דרש פ,קל_אפעול+,נפ הגר פ,פי,שם_פעולה=הגירה הדהד פ,פי הדף פ,נפ,גם_ליהנות הדף פ,קל_אפעול+ הדק פ,פי,פו,הת הוה פ,הת,גם_נת,שמור_עו הוה פ,פי,שמור_עו,אין_שם_פעולה wרד פ,הפ # הווריד פ,נסתר,הפ ## ורד פ,הפ,שמור_פי היה פ,נסתר,קל_אפעל,אין_בינוני,שמור_עו,אין_פעול,אין_שם_פעולה היה פ,נפ,אין_ציווי,אין_עתיד,אין_מקור,אין_שם_פעולה הלך פ,הת,פי ילך פ,הפ+,הו # מטרה מקדשת.. הלך פ,קל_אפעל,מקור=ללכת,מקור_מלעילי,אין_פעול,עתיד1=ללך הלל פ,הת הלל פ,הת,שמור_עע # חוגר כמפתח הלל פ,פי+,פו,אין_שם_פעולה,שמור_עע הלל פ,הפ,הסיבותי_ישן,אין_עבר,אין_בינוני,אין_שם_פעולה,אין_מקור,אין_ציווי הלם פ,קל_אפעול המה פ,קל_אפעל,אין_פעול,אין_שם_פעולה המם פ,קל_אפעול,אין_שם_פעולה,שמור_עע,אין_בינוני,אין_עתיד,אין_ציווי המם פ,אין_שם_פעולה,שמור_עע,פי,פו המר פ,פי הנה פ,נפ,גם_ליהנות,אין_שם_פעולה הסס פ,פי,שמור_עע הפך פ,נפ,גם_ליהנות הפך פ,קל_אפעול+,הת הפנט פ,פי,פו,הת הרג פ,נפ,גם_ליהנות,אין_שם_פעולה הרג פ,קל_אפעול+ הרה פ,קל_אפעל,אין_שם_פעולה,אין_פעול הרה פ,קל_אפעל,אין_שם_פעולה,אין_פעול,בינוני_שמן הרהר פ,פי הרס פ,נפ # "ליהרס" לא נראה מתאים הרס פ,קל_אפעול+ התל פ,פי ותר פ,פי זהה פ,פי+,פו,הת,שמור_עע זהם פ,פי,פו,הת זהר פ,קל_אפעל,אין_פעול,נפ,הפ+,הו זוז פ,הפ+,הו זוז פ,קל_אפעול,אין_שם_פעולה,אין_פעול זון פ,הפ+,הו # זון פ,קל_אפעול מי זן את העולם? זחל פ,קל_אפעל,אין_פעול,הת זין פ,פי+,פו,הת,שמור_עו זיף פ,פי+,פו,שמור_עו זכה פ,קל_אפעל,פי,פו,הת,אין_פעול זכר פ,קל_אפעול+,נפ,הפ+,הו זלג פ,קל_אפעול,אין_פעול זלזל פ,פי זמן פ,פי+,פו,הת,הפ+,הו זמר פ,נפ,פי,פו,הת,אין_שם_פעולה זמר פ,קל_אפעול+ זנח פ,קל_אפעל,הפ+,הו זנח פ,נפ,אין_שם_פעולה זנק פ,פי,הפ+,הו זעזע פ,פי,פו,הת,גם_נת זעף פ,הפ,הת זעף פ,קל_אפעל,אין_שם_פעולה זעק פ,הפ+,הו,הת,נפ זעק פ,קל_אפעל,שם_פעולה=זעקה,אין_פעול זקן פ,הפ,אין_פעול,אין_שם_פעולה זקן פ,הת זקן פ,קל_אפעל,בינוני_שמן,אין_פעול,אין_שם_פעולה,ציווי=זקן זקק פ,פי+,פו,הת,נפ,שמור_עע זרז פ,פי+,הת,פו זרם פ,קל_אפעול,אין_פעול,הפ+,הו זרק פ,נפ,קל_אפעול,הפ+,הו חבא פ,הפ+,הו,הת חבא פ,נפ חבל פ,קל_אפעול,אין_שם_פעולה,נפ,פי,פו חבק פ,פי+,פו,הת,קל_אפעול חבר פ,קל_אפעול,פי+,פו,הת,גם_נת חבש פ,נפ,אין_שם_פעולה חבש פ,קל_אפעול+ חגג פ,קל_אפעול,בינוני_שומר,אין_פעול #א25 חגג פ,קל_אפעול,שמור_עע,אין_פעול חגג פ,נפ,אין_שם_פעולה,שמור_עע חגג פ,נפ,אין_שם_פעולה חגר פ,קל_אפעול,נפ חדד פ,פי+,פו,הת,שמור_עע חדד פ,קל_אפעול,חדתי_מודרני,אין_פעול,אין_שם_פעולה חדל פ,קל_אפעל,בינוני_שמן,אין_פעול חדר פ,קל_אפעול,הפ+,הו חדש פ,פי+,פו,הת,גם_נת חוה פ,פי+,שמור_עו חוה פ,קל_אפעול,שמור_עו,אין_שם_פעולה,אין_פעול חוה פ,שמור_עו,נפ,הפ,אין_שם_פעולה חול פ,קל_אפעול,הפ+,הו,פי,פו,הת חזה פ,הת חזה פ,קל_אפעל,נפ,שם_פעולה=חיזוי חזק פ,הפ+,הו,פי+,פו,הת חזר פ,קל_אפעול,הפ+,הו,פי,פו,אין_פעול חטא פ,הפ+,הו,פי,פו # הת - תנכי חטא פ,קל_אפעל,אין_שם_פעולה,אין_פעול חטב פ,קל_אפעול,פי,פו חטף פ,הפ,אין_שם_פעולה חטף פ,קל_אפעול,נפ # היחטפות - רק של קמצים חיב פ,פי+,פו,הת,גם_נת,שמור_עו חיך פ,פי,שמור_עו חיל פ,פי+,פו,הת,שמור_עו חכה פ,פי+,אין_שם_פעולה חכם פ,הפ,הת חכר פ,קל_אפעול,נפ,הפ+,הו חלה פ,הת חלה פ,קל_אפעל,אין_שם_פעולה,אין_פעול,פי # פי - רק לחלות פנים חלט פ,הפ,הו,קל_אפעול,פי,פו # חילוט - הוצל"פ חלל פ,הפ,הו חלל פ,פי+,פו,שמור_עע חלם פ,הפ חלם פ,קל_אפעול,נפ,אין_פעול # שם_פעולה חלימה מושג מוכר בפסיכולוגיה חלף פ,קל_אפעול,אין_פעול,הפ+,הו,הת חלץ פ,קל_אפעול,נפ,פי+,פו חלק פ,הת,פי,פו,נפ,הפ+,הו חלק פ,פי+,פו,הת חלק פ,קל_אפעול,אין_שם_פעולה חלש פ,קל_אפעול,נפ,הפ+,הו חמא פ,הפ,הו,אין_שם_פעולה חמם פ,פי+,פו,הת,שמור_עע חמץ פ,הפ+,הו חמץ פ,נפ,אין_שם_פעולה חמק פ,קל_אפעול,אין_פעול,הת חמר פ,הפ,הו חמש פ,פי+,פו,הת חנט פ,נפ,אין_שם_פעולה חנט פ,קל_אפעול חנך פ,נפ,אין_שם_פעולה חנך פ,קל_אפעול+,אין_פעול,פי+,פו,הת חנן פ,קל_אפעול,שמור_עע,הת ##חנן פ,נפ חנן פ,קל_אפעול,בינוני_שומר,אין_שם_פעולה,אין_פעול # )יש, אבל חבל פעמיים( חנן פ,פי,פו # ספרותי חנף פ,הת חנף פ,הפ,אין_שם_פעולה חנק פ,קל_אפעול,נפ,הפ,הו # רק אנחת מוחנקות חסה פ,קל_אפעל,אין_שם_פעולה חסך פ,קל_אפעול,אין_שם_פעולה,אין_פעול,נפ חסל פ,פי+,פו,הת חסם פ,נפ,אין_שם_פעולה חסם פ,קל_אפעול,פי,פו חסן פ,פי+,פו,הת חסר פ,פי,פו חסר פ,קל_אפעל,הפ,אין_שם_פעולה,אין_פעול,בינוני_שמן,הו חפה פ,פי חפז פ,נפ,פעול # קל_אפעול תנכי חפץ פ,קל_אפעול,קל_אפעל,בינוני_שמן,אין_שם_פעולה,אין_פעול חפש פ,פי+,פו,הת חצה פ,קל_אפעל,נפ חצן פ,הפ,הו חקק פ,נפ,אין_שם_פעולה,שמור_עע חקק פ,פי,פו,אין_שם_פעולה חקק פ,קל_אפעול,שמור_עע חקר פ,נפ,אין_שם_פעולה חקר פ,קל_אפעול+,אין_פעול חרב פ,הפ+,הו חרב פ,קל_אפעול,אין_שם_פעולה,אין_פעול,נפ חרג פ,קל_אפעול,אין_פעול חרג פ,הפ,הו חרד פ,הפ+,הו,הת חרד פ,נפ,קל_אפעל,בינוני_שמן,אין_פעול,אין_שם_פעולה חרה פ,הת חרה פ,קל_אפעל,אין_פעול,אין_שם_פעולה חרט פ,נפ,אין_שם_פעולה חרט פ,קל_אפעול,הת # הקציע במחרטה חרם פ,הפ+,הו חרף פ,הפ+,הו,פי+ חרף פ,קל_אפעול,אין_פעול,אין_שם_פעולה # חריפת הציפורים באפריקה חרץ פ,נפ,אין_שם_פעולה חרץ פ,קל_אפעול חשב פ,קל_אפעול+,נפ,פי,פו,הת,הפ+ חשד פ,הפ,הו חשד פ,קל_אפעול,נפ,אין_שם_פעולה חשף פ,קל_אפעול+,נפ חשש פ,קל_אפעול,אין_שם_פעולה,שמור_עע חתך פ,נפ,אין_שם_פעולה חתך פ,קל_אפעול,שם_פעולה=חיתוך חתם פ,נפ,אין_שם_פעולה חתם פ,קל_אפעול,הפ+,הו #פי בבנקאות חתן פ,פי,פו,הת טאטא פ,פי,פו,שם_פעולה=טאטוא טבח פ,קל_אפעל,נפ,אין_שם_פעולה טבל פ,נפ,אין_שם_פעולה טבל פ,קל_אפעול+,הפ+,הו טבע פ,קל_אפעל,הפ+,הו,פי+,פו,נפ טוה פ,קל_אפעול+,שמור_עו,אין_פעול טוה פ,שמור_עו,נפ טוס פ,קל_אפעול,הפ+,הו טיל פ,הפ+,הו טיל פ,פי,פו,שמור_עו טלפן פ,פי טמן פ,נפ,אין_שם_פעולה טמן פ,קל_אפעול+,הפ+,הו טמע פ,הפ+,הו,נפ,קל_אפעל,אין_פעול טנגרל פ,פי טעה פ,קל_אפעל,הפ+,הו,אין_פעול טען פ,נפ,אין_שם_פעולה טען פ,קל_אפעל,הפ+,הו טפח פ,קל_אפעל,אין_פעול,פי,פו טפטף פ,פי טפל פ,פי,פו,נפ טפל פ,קל_אפעול,אין_שם_פעולה,אין_פעול טפס פ,פי,פו טרד פ,הפ+,הו טרד פ,קל_אפעול,אין_שם_פעולה,נפ טרנספר פ,פי,שם_פעולה=טרנספור טרף פ,נפ,אין_שם_פעולה,הפ # ואולי אפילו הוטרפתי בסלנג טרף פ,קל_אפעול טרק פ,נפ,אין_שם_פעולה טרק פ,קל_אפעול יאש פ,נפ,פי,הת יבא פ,פי,שם_פעולה=ייבוא יבא פ,פו יבל פ,הפ+,הו יבש פ,פי+,פו,הת יבש פ,קל_אפעל,אין_פעול,אין_שם_פעולה,בינוני_שמן יגע פ,הפ+ יגע פ,פי+,הת,אין_שם_פעולה יגע פ,קל_אפעל,בינוני_שמן,שמור_פי,אין_פעול ידד פ,הת,שמור_עע ידה פ,הפ,פי # אבל גם שם_פעולה=הודאה ידע פ,נפ,פי+,פו,הפ+ ###יכול פ,קל_אפעל,נסתר # זוועה חייה ידע פ,קל_אפעל+,מקור=לדעת,מקור_מלעילי,עתיד1=לדע יזם פ,קל_אפעול,אין_שם_פעולה יחד פ,פי,פו,הת,גם_נת יחל פ,פי,פו,הפ # הפ תנכי יחס פ,פי+,פו,הת,שמור_פי יטב פ,הו יטב פ,הפ,שמור_פי,שם_פעולה=הטבה יכח פ,הפ+,הו יכח פ,נפ,הפ ילד פ,נפ,פי+,פו,הת,הפ+ ילד פ,קל_אפעל+,מקור=ללדת,מקור_מלעילי,עתיד1=ללד,אין_שם_פעולה ינק פ,הו ינק פ,הפ,שמור_פי,שם_פעולה=הנקה ינק פ,קל_אפעל,שמור_פי,ציווי=ינק,אין_פעול יסד פ,נפ,פי,פו יסד פ,קל_אפעול,אין_פעול,אין_שם_פעולה # TODO צריך לבדוק ההטיה יסף פ,נפ,פי,פו,הת,הו,הפ+ #תסף פ,פי # טעות מקובלת לגבי ייסוף wסף פ,הת,גם_נת # כך נהוג לדבר, ואפילו אושר ע"י האקדמיה #היתוסף פ,נסתר,הת,גם_נת # עבר למוזרים יעד פ,פי,פו,הת,הו,הפ+,נפ יעל פ,הפ,אין_שם_פעולה יעל פ,פי,הת,פו יעץ פ,פי,הת,נפ יעץ פ,קל_אפעול,מקור=לעוצ,אין_פעול,אין_שם_פעולה #,נפ,פי,הת יפה פ,פי,פו,הת יפה פ,קל_אפעל,בינוני_שמן,אין_פעול,אין_שם_פעולה יפyף פ,הת יפע פ,הפ יצא פ,פו,הפ+,הו,שמור_פנ יצא פ,פי+,שם_פעולה=ייצוא יצא פ,קל_אפעל,מקור=לצאת,מקור_מלעילי,ציווי=צא,עתיד1=לצא,אין_פעול יצב פ,הפ+,הו,הת,פי+,פו יצג פ,הפ+,הו,פי+,פו יצע פ,הפ+,הו יצק פ,הפ יצק פ,קל_אפעול,מקור=לצקת,ציווי=צוק,עתיד1=לנצוק יצק פ,קל_אפעול יצק פ,נפ,אין_שם_פעולה,אין_עתיד,אין_ציווי,אין_מקור,שמור_פנ יצר פ,קל_אפעול,נפ,פי+,פו,שמור_פנ # בניין קל נראה לי רע עם כינוי חבור ירד פ,הפ+,הו ירד פ,קל_אפעל,מקור=לרדת,מקור_מלעילי,עתיד1=לרד ירה פ,הפ+,שם_פעולה=הוראה ירה פ,נפ,אין_מקור,אין_ציווי,אין_עתיד,אין_שם_פעולה #TODO שוב - אמצעים שפלים למטרה נעלה. ירה פ,נפ,שמור_פי,מקור=להיירות,אין_עבר,אין_בינוני ירה פ,קל_אפעל ירק פ,הפ ירק פ,קל_אפעל,שמור_פי,ציווי=ירק #TODO האם יירקי או ירקי ירש פ,הפ+,נפ # גם אם איוורש, ואהלך שחוח ירש פ,קל_אפעל+,שמור_פי,אין_שם_פעולה,אין_פעול,מקור=לרשת,ציווי=ירש,עתיד1=לירש ישב פ,הפ+,הו,פי+,פו,הת ישב פ,קל_אפעל,מקור=לשבת,מקור_מלעילי,עתיד1=לשב ישט פ,הפ+,הו ישם פ,פי+,פו ישן פ,פי+,פו,הת ישן פ,קל_אפעל,בינוני_שמן,ציווי=שן,אין_פעול,אין_שם_פעולה יתר פ,נפ,הפ+,פי,פו # TODO האם פי/פו סבירים? כאב פ,קל_אפעל,אין_שם_פעולה,הפ כבד פ,פי+,פו,הת,הפ+,הו כבס פ,פי+,פו,הת,אין_שם_פעולה # קל_אפעול טיפה מיושן כבש פ,נפ,אין_שם_פעולה כבש פ,קל_אפעול+ כהה פ,קל_אפעל,שמור_עע,אין_פעול,אין_שם_פעולה,בינוני_שמן כהה פ,הפ,שמור_עע,הת,הו כהן פ,פי,אין_שם_פעולה כון פ,הו,בינונית_ארכאית #עבור מוכנה כון פ,נפ,אין_שם_פעולה כון פ,פי+,פו,הת,הפ+ כון פ,הפ+,הסיבותי_ישן כון פ,פי+,פו,הפ,הו,הת,שמור_עו כזב פ,פי,הפ+,נפ,אין_שם_פעולה כחל פ,הפ כחש פ,הפ+,הו,הת,פי # פי מיושן כיל פ,הפ כלא פ,נפ,אין_שם_פעולה כלא פ,קל_אפעל,הפ כלכל פ,פי+,אין_שם_פעולה כלל פ,קל_אפעול,נפ,הפ+,הו,שמור_עע כמה פ,קל_אפעל,שמור_מפיק,בינוני_שמן,אין_פעול כמר פ,נפ כמש פ,קל_אפעול כנה פ,פי+,פו,הת כנס פ,נפ,פי+,פו,הת,הפ+,הו,קל_אפעול # כונס נכסים כנע פ,הפ+,הו,נפ כסה פ,פי+,פו,הת כעס פ,קל_אפעל,אין_שם_פעולה,הפ+,הו כפה פ,נפ,אין_שם_פעולה כפה פ,קל_אפעל+ כפף פ,הפ+,שמור_עע,הו,קל_אפעול # נפ מיושן כפף פ,פי,פו,הת #כפף פ,קל_אפעול,בינוני_שומר,אין_פעול #א25 # מיושן, אבל קיים. לכוף את רצונו כפר פ,קל_אפעול,אין_פעול,פי,פו,הת כפת פ,נפ,אין_שם_פעולה כפת פ,קל_אפעול+ כפתר פ,פי,פו כרה פ,נפ,אין_שם_פעולה כרה פ,קל_אפעל,אין_פעול כרז פ,הפ,הו כרך פ,קל_אפעול,נפ כרע פ,הפ+,בינונית_תה כרע פ,הו,קל_אפעל כרת פ,קל_אפעול+,נפ,הפ+,הו כשל פ,הפ+,הו כשל פ,נפ,אין_שם_פעולה כשל פ,קל_אפעול,אין_שם_פעולה,אין_פעול כשר פ,הפ+,הו כתב פ,קל_אפעול+,נפ,פי,פו,הת,הפ+,הו כתם פ,הפ+,הו כתש פ,נפ,אין_שם_פעולה כתש פ,קל_אפעול,הת לבט פ,הת לבל פ,נפ,אין_שם_פעולה לבן פ,הפ+,הו,פי,פו,הת לבש פ,הת,הפ+,הו לבש פ,קל_אפעל+,ציווי=לבש לבש פ,נפ,אין_שם_פעולה להט פ,קל_אפעל,אין_שם_פעולה,הפ+,הו להט פ,הת לוה פ,נפ,אין_שם_פעולה,אין_פעול,שמור_עו,קל_אפעול # אולי לווייה היא פעולה תקינה? לוה פ,פי+,פו,הת,שמור_עו לוה פ,הפ+,שמור_עו,שם_פעולה=הלוואה,הו לון פ,קל_אפעל,הת,הפ,הו לוץ פ,הת לחח פ,פי,פו,שמור_עע לחם פ,נפ,אין_שם_פעולה לחם פ,קל_אפעל,הפ+,הו לחץ פ,קל_אפעל+,נפ,הפ+,הו לחש פ,נפ,אין_שם_פעולה # פי שירי לחש פ,קל_אפעל,אין_פעול,הת לכד פ,קל_אפעול+,נפ,פי,פו,הת לכלך פ,פי+,פו,הת למד פ,נפ,אין_שם_פעולה,הת למד פ,פי+ למד פ,קל_אפעל+,ציווי=למד לעג פ,קל_אפעל,אין_שם_פעולה,אין_פעול לעג פ,הפ,אין_שם_פעולה #מיושן, אבל חוקי. לקה פ,קל_אפעל לקה פ,הפ+,הו,שם_פעולה=הלקאה לקח פ,הת לקח פ,נפ,אין_שם_פעולה לקח פ,קל_אפעל+,מקור=לקחת,מקור_מלעילי,עתיד1=ליקח לקט פ,פי+,פו מאס פ,קל_אפעל,נפ,הפ מדד פ,הת מדד פ,נפ,שמור_עע,אין_שם_פעולה מדד פ,קל_אפעול,שמור_עע מהר פ,פי,אין_שם_פעולה מור פ,הפ+,הו מות פ,הפ+,הו מחא פ,נפ,אין_שם_פעולה מחא פ,קל_אפעל,אין_פעול מחה פ,הת מחה פ,קל_אפעל,אין_שם_פעולה,אין_פעול,נפ #יש: מחייה/הימחות מדפי ההסטוריה מחק פ,קל_אפעל+,נפ מחש פ,הפ+,הו מוט פ,פי+,פו,הת,הפ,הו # קל_אפעול,נפ תנכי. לא תימוט מכר פ,קל_אפעול+,נפ,הת מלא פ,נפ,אין_שם_פעולה מלא פ,פי+,פו,הת מלט פ,נפ,פי+,הפ,הו מלץ פ,הפ,הו ממן פ,פי+,פו ממש פ,פי+,פו,הת מנה פ,קל_אפעל+,נפ,פי+,פו,הת,גם_נת מנע פ,קל_אפעל+,נפ מסס פ,הפ+,הו,הת מסס פ,פי,אין_שם_פעולה מסר פ,נפ,אין_שם_פעולה מסר פ,קל_אפעול+,הת מעד פ,קל_אפעל,אין_פעול,הפ+,הו מעט פ,פי,הת,גם_נת,הפ,הו מען פ,פי,פו,נפ מצא פ,קל_אפעל+,נפ,הפ+,הו,הת,אין_פעול # יש פעול, אבל הוא "מצוי" ולא "מצוא" מקד פ,פי+,פו,הת מקח פ,הת מקם פ,פי+,פו,הת מרא פ,הפ מרר פ,פי,שמור_עע משך פ,קל_אפעול+,הפ+,נפ,הת מת פ,קל_אפעול,נסתר מת פ,קל_אפעול,נסתר,שמור_ל מתח פ,קל_אפעל,נפ,הת מתן פ,הפ,פי+,פו,הת,פעול נאף פ,פי נאף פ,קל_אפעל,אין_פעול,אין_שם_פעולה נבא פ,פי,הת #נפ תנ"כי נבח פ,קל_אפעל,שמור_פנ נבט פ,הפ,נפ נבט פ,קל_אפעול,הפ+,הו,שמור_פנ,אין_פעול נבל פ,קל_אפעול,פי נבע פ,הפ+,הו נבע פ,קל_אפעל,שמור_פנ נבר פ,קל_אפעול,שמור_פנ,אין_פעול נגב פ,פי,פו,הת נגד פ,הת,הפ,הו,פי,פו #הו תנכי נגד פ,הפ,שמור_פנ נגה פ,הפ,הו,שמור_מפיק # מוגה )הפעיל( נדיר נגה פ,קל_אפעל,שמור_מפיק,ציווי_שמור_פנ,אין_פעול נגח פ,נפ,פי,פו,הת נגח פ,קל_אפעל,נפ,שמור_פנ נגח פ,קל_אפעל,מקור_אבד_פנ #ציווי_שמור_פנ נגע פ,נפ,שמור_פנ # נראה לי שזה יותר יפה ככה נגע פ,קל_אפעול,מקור=לגעת,שמור_פנ,מקור_מלעילי,עתיד1=ליגע #גם זה חוקי. נגע פ,קל_אפעל,הפ נגע פ,קל_אפעל נגף פ,הפ,הו #מקור_אבד_פנ אם יש קל נגף פ,נפ,אין_שם_פעולה נגר פ,נפ,הפ+,הו נגש פ,הפ+,הו,הת #נגש פ,הפ+,הו,שמור_פנ נגש פ,נפ,מקור=לגשת,מקור_מלעילי,שם_פעולה=גישה,עתיד1=ליגש #כנראה בכלל לא בניין נפעל נגש פ,קל_אפעל,שמור_פנ,אין_פעול נדב פ,פי+,פו,הת נדד פ,קל_אפעול,שמור_עע,שמור_פנ,ציווי_שמור_פנ נדד פ,קל_אפעול נדד פ,הת נדח פ,הפ+,הו נדף פ,קל_אפעול,אין_פעול,אין_שם_פעולה,ציווי_שמור_פנ נדף פ,הת,הפ # בכימיה גם פי,פו נדר פ,קל_אפעול,אין_פעול,הפ+,הו נדר פ,קל_אפעול,שמור_פנ,אין_פעול נהג פ,פי,פו,הת,הפ+,הו,קל_אפעל נהל פ,פי+,פו,הת נהם פ,קל_אפעל,אין_פעול נהם פ,קל_אפעל,ציווי=נהום,אין_פעול נהר פ,קל_אפעל,אין_פעול נוא פ,הפ+,הו נוח פ,הפ+,הו נוח פ,קל_אפעל,אין_שם_פעולה נוט פ,פי+,פו,שמור_עו נוע פ,קל_אפעול,אין_שם_פעולה,אין_פעול נוע פ,הפ+,הו נזל פ,קל_אפעל,ציווי_שמור_פנ,אין_פעול נזל פ,הת #כימיה נזל פ,הפ,הו נזר פ,הת #מקור_אבד_פנ אם יש קל נזר פ,נפ,אין_עבר,אין_בינוני נחל פ,הת,הפ+,הו נחל פ,קל_אפעל,שמור_פנ,אין_שם_פעולה,אין_פעול נחש פ,פי,פו נחת פ,קל_אפעל,הפ+,הו,נפ # )אסונות ניחתים( נטב פ,הפ # ראה ה"שורש" ננק נטה פ,קל_אפעל,הפ+,הו נטל פ,קל_אפעול,מקור_אבד_פנ נטל פ,קל_אפעול+,נפ,הפ+,הו נטע פ,נפ ##נטע פ,קל_אפעל,מקור_רגיל,ציווי_שמור_פנ נטע פ,נפ,שמור_פנ נטע פ,קל_אפעל+,ציווי=טע #TODO לטעת,ליטע עתיד1 נטר פ,פי,פו נטר פ,קל_אפעול,אין_שם_פעולה,אין_פעול נטרל פ,פי+,פו נטש פ,נפ,אין_שם_פעולה נטש פ,קל_אפעול+ נטש פ,קל_אפעול,נפ,שמור_פנ,אין_שם_פעולה דון פ,נפ,נפ_ניזון,אין_שם_פעולה זון פ,נפ,נפ_ניזון,אין_שם_פעולה זוק פ,נפ,נפ_ניזון,אין_שם_פעולה,אין_עתיד,אין_ציווי,אין_מקור # שורש אמיתי: נזק נזק פ,נפ,אין_שם_פעולה,אין_עבר,אין_בינוני #טוח פ,נפ,נפ_ניזון,אין_שם_פעולה # נראה לי משונה מידי. בשפת הדיבור: ניטח מוח פ,נפ,נפ_ניזון,אין_שם_פעולה מול פ,נפ,נפ_ניזון,אין_שם_פעולה צוד פ,נפ,נפ_ניזון,אין_שם_פעולה אות פ,נפ,נפ_ניזון,אין_שם_פעולה נכה פ,הפ+,הו,שם_פעולה=הכאה נכה פ,פי,פו # הסיר, להטעות לעומת ניקה נכח פ,קל_אפעל,אין_שם_פעולה,אין_פעול # הפ מחקרי מדיי נכר פ,הפ+,הו,הת נכר פ,פי,הת נמך פ,הפ+,הו,שמור_פנ נמך פ,קל_אפעול,בינוני_שמן,שמור_פנ,אין_שם_פעולה נמק פ,פי+,פו ננק פ,הפ+ # שיטה איומה לקבלת תוצאה נכונה. המטרה מקדשת את האצעים? נסה פ,פי+,פו,הת נסח פ,פי+,פו,הת,הפ,הו נסך פ,קל_אפעול,שמור_פנ נסס פ,הת נסע פ,הפ+,הו נסע פ,קל_אפעל,ציווי=סע,אין_פעול #נסע פ,קל_אפעל+,ציווי=סע,אין_פעול # מדוע השטות הזו כאן??? נסר פ,פי+,פו,הפ+,הו נער פ,קל_אפעל+,פי+,פו,הת,אין_פעול # נפ ישן נפח פ,פי+,פו,הת נפח פ,קל_אפעל,מקור=לפחת,מקור_מלעילי נפח פ,קל_אפעל,ציווי_שמור_פנ נפל פ,קל_אפעול,הפ+,הו,הת נפל פ,קל_אפעול,מקור_אבד_פנ #,ציווי_שמור_פנ נפץ פ,פי+,פו,הת נפק פ,פי+,פו,הפ+,הו,שמור_פנ נפש פ,קל_אפעול,אין_שם_פעולה,אין_פעול,שמור_פנ נפש פ,הפ+,הו,שמור_פנ נצח פ,פי+,פו,הפ+,הו,שמור_פנ,הת נצל פ,הפ+,הו,נפ,פי+,פו,הת נצל פ,שמור_פנ,הפ # האם זה פועל של אבא שלי בלבד? נצת פ,הפ+,הו # באמת שורש יצת נקב פ,קל_אפעול,אין_שם_פעולה # נפ מיושן ואולי כדאי גם שמור_פנ נקב פ,פי+,פו נקה פ,פי+,פו,הת נקט פ,קל_אפעול,נפ,שמור_פנ נקם פ,קל_אפעול,אין_שם_פעולה,אין_פעול,נפ,הת #אולי כדאי גם שמור_פנ נקע פ,נפ,שמור_פנ,אין_שם_פעולה נקע פ,קל_אפעל,שמור_פנ #TODO לקעת ??? נקש פ,הפ+,הו,הת נקש פ,קל_אפעול,שמור_פנ נשא פ,נפ,הת,הפ+,הו נשא פ,קל_אפעל+,מקור=לשאת,מקור_מלעילי,ציווי=שא,עתיד1=לישא נשג פ,הפ+,בינונית_תה נשג פ,הו נשך פ,קל_אפעול+ נשך פ,קל_אפעול,נפ,ציווי_שמור_פנ נשך פ,קל_אפעול+,נפ,שמור_פנ נשל פ,קל_אפעל,ציווי=של,אין_פעול נשל פ,קל_אפעל,שמור_פנ,אין_פעול נשל פ,פי+,פו,הפ+,הו נשם פ,קל_אפעול,שמור_פנ,אין_פעול,הת נשם פ,הפ+,הו,שמור_פנ נשק פ,פי,פו,הת,הפ,הו נשק פ,קל_אפעל,ציווי=נשק,אין_פעול נשק פ,קל_אפעל+,ציווי=שק,אין_פעול נתח פ,פי+,פו נתן פ,נפ,אין_שם_פעולה נתן פ,קל_אפעל+,מקור=לתת,ציווי=תנ,עתיד1=ליתנ נתק פ,פי,פו,הת,נפ נתר פ,פי,הפ,הו סבב פ,הפ+,הסיבותי_ישן #סבב פ,נפ,אין_שם_פעולה # הושלך למוזרים סבב פ,פי+,פו,הת,הפ+,הו סבב פ,קל_אפעול+,בינוני_שומר,אין_פעול סבב פ,קל_אפעל+,אין_פעול,פי,פו,שמור_עע סבך פ,פי+,פו,הת סבל פ,נפ,אין_שם_פעולה,קל_אפעול,אין_פעול סבן פ,פי,פו,הת סבסד פ,פי,פו סבר פ,הפ+,הו,הת סבר פ,קל_אפעול,אין_שם_פעולה,פי סגד פ,קל_אפעול,אין_פעול סגל פ,פי,פו,הת #סגר פ,פי,אין_שם_פעולה #TODO למה זה כאן? סגר פ,קל_אפעול,נפ,פו,הת,הפ+,הו סדק פ,קל_אפעול,נפ סדר פ,פי+,פו,הת,הפ+,הו סוג פ,נפ,נסוב_מודרני,שם_פעולה=נסיגה # צורת המקור הנוספת לסגת - בbiza סוג פ,פי+,פו,הת,שמור_עו נסג פ,הפ+,הו סוד פ,הת סוה פ,הפ+,הו,שמור_עו,שם_פעולה=הסוואה סוה פ,הת,שמור_עו סחט פ,נפ,אין_שם_פעולה סחט פ,קל_אפעל+ סחר פ,קל_אפעל,נפ,אין_שם_פעולה סחרר פ,פי,פו,הת סטה פ,קל_אפעל,אין_פעול סיג פ,פי+,פו,הת,שמור_עו סים פ,פי+,פו,הת,גם_נת,שמור_עו סיע פ,פי,הת,שמור_עו סכל פ,פי+,פו,הת סכם פ,נפ,אין_שם_פעולה סכם פ,קל_אפעול+,פי+,פו,הת,הפ,הו סכן פ,פי+,הת סכסך פ,פי,פו,הת סכר פ,קל_אפעול+ סכר פ,נפ,אין_שם_פעולה סלח פ,נפ,אין_שם_פעולה סלח פ,קל_אפעל,אין_פעול סלל פ,נפ,שמור_עע סלל פ,קל_אפעול+,שמור_עע סלם פ,הפ,הו סלק פ,פי+,פו,הת סלק פ,הפ,הו #סלנג סמך פ,קל_אפעול,נפ,הת,הפ+,הו סמל פ,פי+,פו סמן פ,פי+,פו,הת סמר פ,קל_אפעול,הת,פי,פו # סימר או סומר במסמרות סמרר פ,הת סנן פ,פי+,פו,הת,שמור_עע סעד פ,קל_אפעל,אין_שם_פעולה,אין_פעול # נפ נדיר סער פ,הת סער פ,הפ+,הו,אין_שם_פעולה סער פ,קל_אפעל,אין_פעול,שם_פעולה=סערה ספג פ,נפ,אין_שם_פעולה ספג פ,קל_אפעול,הפ+,הו ספד פ,קל_אפעול,הפ+,הו,אין_שם_פעולה,אין_פעול ספה פ,נפ ספח פ,קל_אפעל,אין_פעול,נפ,פי,פו,הת ספק פ,פי,פו,הת,הפ,קל_אפעול ספר פ,קל_אפעול+,נפ,פי+,פו,הת סקל פ,נפ,אין_שם_פעולה סקל פ,קל_אפעול+,פי+ סקר פ,נפ,אין_שם_פעולה סקר פ,קל_אפעול,פי,פו סרב פ,פי,פו סרח פ,קל_אפעל,הפ סרט פ,הפ+,הו סרטן פ,פי סרק פ,קל_אפעול,פי,פו,הת,נפ סתם פ,נפ,אין_שם_פעולה,הת,גם_נת # הסתתמו טענותיו, מיושן. סתם פ,קל_אפעול סתר פ,נפ,אין_שם_פעולה סתר פ,קל_אפעול,הפ+,הו,הת עבד פ,פי+,פו,הפ+,הו עבד פ,קל_אפעול+,שם_פעולה=עבודה,אין_פעול עבר פ,קל_אפעול,אין_פעול,נפ,הפ+,הו,פי+,פו,הת עגן פ,נפ,אין_שם_פעולה עגן פ,קל_אפעול,אין_פעול,פי,פו עדד פ,פי+,פו,הת עדכן פ,פי+,פו,הת עדף פ,הפ+,הו עדר פ,קל_אפעול,נפ עוב פ,הפ,הו עוד פ,הפ עום פ,הו עוק פ,הפ,אין_שם_פעולה עור פ,נפ,נפ_ניזון,אין_שם_פעולה עור פ,פו,שמור_עו עור פ,פי,פו,הת,גם_נת,הפ+,הו עור פ,הפ,הסיבותי_ישן עור פ,פי,פו,הת,שמור_עו עזב פ,קל_אפעול+,נפ,הפ,הו עזז פ,הפ עזר פ,נפ # הת מיושן ומטעה מול התאזרות עזר פ,קל_אפעול,אין_שם_פעולה,אין_פעול עטף פ,נפ עטף פ,קל_אפעול+,הת עטר פ,פי,פו,הפ עין פ,פי,שמור_עו עכב פ,פי+,פו,הת עלב פ,נפ,הפ+ עלב פ,קל_אפעול,אין_שם_פעולה עלה פ,הפ+,שם_פעולה=העלאה עלה פ,קל_אפעל,אין_פעול,הו,הת עלם פ,נפ,הת,הפ+,הו עמד פ,קל_אפעול,אין_פעול,נפ,פי,פו,הפ+,הו עמם פ,פי,פו,הת,שמור_עע עמס פ,הפ,הו # קל_אפעול מיושן. עמק פ,הפ+,הו,הת עמר פ,הת עמת פ,פי,פו,הת ענה פ,נפ,פי+,פו,הת ענה פ,קל_אפעול+,אין_שם_פעולה ענyן פ,פי,פו,אין_שם_פעולה ענyן פ,הת ענן פ,הת,שמור_עע ענק פ,הפ+,הו ענש פ,הפ+,הו # הוענש נשמע לי מעושה ומעצבן, אבל הוא חוקי. ענש פ,נפ,אין_שם_פעולה # אולי צריך שם פעולה? עסק פ,הפ+,הו,הת עסק פ,קל_אפעול,אין_שם_פעולה עצב פ,נפ,הפ+,הו,פי,פו,הת עצבן פ,פי,פו,הת עצם פ,קל_אפעול,נפ,הפ+,הו,הת עצר פ,קל_אפעול+,נפ עקב פ,קל_אפעול,אין_פעול עקף פ,נפ,אין_שם_פעולה עקף פ,קל_אפעול+,אין_פעול עקר פ,פי+,פו,הת,קל_אפעול+,נפ עקש פ,הת ערב פ,קל_אפעול,בינוני_שמן,אין_פעול,אין_שם_פעולה ערב פ,פי+,פו,הת,הפ ערבב פ,פי+,פו,הת ערג פ,קל_אפעול,אין_פעול ערטל פ,פי,פו,הת ערך פ,קל_אפעול,נפ,הפ+,הו ערער פ,פי,פו,הת ערף פ,הפ,נפ,אין_שם_פעולה ערף פ,קל_אפעול ערפל פ,פי,פו,הת עשה פ,קל_אפעל+,נפ עשן פ,פי עתק פ,הפ+,הו,נפ עתר פ,קל_אפעול,אין_פעול,נפ,הפ,הו # להעתיר מתנות פאר פ,פי+,פו,הת פגן פ,הפ,הו פגע פ,קל_אפעל,נפ,פי פגש פ,נפ,אין_שם_פעולה פגש פ,קל_אפעול+,אין_פעול,הו,הפ+ פהק פ,פי פוח פ,הפ,הו פוץ פ,הפ+,הו פוץ פ,הפ+,הסיבותי_ישן פוץ פ,נפ,אין_שם_פעולה פוץ פ,נפ,נסוב_מודרני,אין_שם_פעולה פזר פ,פי+,פו,הת פחד פ,הפ+,הו פחד פ,פי,אין_עבר,אין_ציווי,אין_שם_פעולה # פי - TODO למפחד אין עבר חוקי פחד פ,קל_אפעל,אין_שם_פעולה,אין_פעול פחלץ פ,פי,פו פחת פ,קל_אפעל,פי,פו,הפ+,הו פטר פ,פו,הת,קל_אפעול+,נפ,הפ,הו פטר פ,פי+,אין_שם_פעולה פיס פ,פי+,פו,הת,שמור_עו פיס פ,הפ,הו פיק פ,הפ+,הו פלא פ,הפ,הת,נפ # נפלאתי בעיניו. מיושן. פלג פ,פי,פו,הת,הפ,הו פלל פ,פי,הת,שמור_עע,הפ+,הו פלס פ,פי,פו פלש פ,קל_אפעול,אין_פעול,הת פנה פ,נפ,אין_שם_פעולה פנה פ,קל_אפעל,פי+,פו,הת,הפ+,הו פנטז פ,פי #בשפת הדיבור פנם פ,הפ+,הו פנק פ,פי+,פו,הת פסד פ,הפ,שם_פעולה=הפסד פסח פ,קל_אפעל,אין_פעול פסל פ,פי,פו,קל_אפעול+,נפ פסק פ,קל_אפעול,נפ,פי,פו,הפ+,הו פעל פ,הפ+,הו,הת פעל פ,קל_אפעל,שם_פעולה=פעולה,אין_פעול פענח פ,הת,אין_שם_פעולה פענח פ,פי+,פו פצה פ,קל_אפעל,אין_פעול,פי+,פו פצע פ,נפ,הפ,אין_שם_פעולה פצע פ,קל_אפעל פצץ פ,הפ,הו,שמור_עע פצץ פ,פי+,פו,הת פצר פ,הפ פצר פ,קל_אפעול,ציווי=פצור # בניגוד להיותו ברשימה II עמ' 31 פקד פ,קל_אפעול+,נפ,הפ+,הו,פי,הת פקח פ,נפ,אין_שם_פעולה פקח פ,קל_אפעל,פי,פו פקע פ,קל_אפעל,אין_פעול,הפ+,הו,הת פקפק פ,פי פקק פ,הת # קצת מיושן פקק פ,קל_אפעול,אין_שם_פעולה,שמור_עע פרד פ,הפ+,הו,נפ,פעול פרח פ,קל_אפעל,אין_פעול,הפ+,הו פרט פ,נפ פרט פ,קל_אפעול,פי+,פו,הפ+,הו פרכס פ,פי פרנס פ,פי,הת פרס פ,קל_אפעול,נפ,הת,הפ # הפ - רק בענייני כשרות פרסם פ,פי+,פו,הת,גם_נת פרע פ,נפ,קל_אפעל+,הפ+,הו,הת פרץ פ,נפ,אין_שם_פעולה פרץ פ,קל_אפעול+,הת פרק פ,פי+,פו,הת,קל_אפעול פרק פ,נפ,אין_שם_פעולה פרר פ,פי,פו,הת,הפ פרר פ,פי,פו,הת,הפ,הו פרש פ,נפ,אין_שם_פעולה פרש פ,קל_אפעול,פי+,פו,הת,הפ+,הו פשט פ,קל_אפעול,הפ+,הו,פי+,פו,הת פשל פ,הפ+,הו,פי,פו,הת #זכותי לתקוע סלנג לתוך המילון שלי! פשע פ,קל_אפעל,אין_פעול פשר פ,הת,פי+ # ,פו פתח פ,קל_אפעל+,נפ,פי+,פו,הת פתע פ,הפ+,הו פתר פ,קל_אפעול+,אין_שם_פעולה,נפ צ'קמק פ,פי,פו,הת #הצ'טקמק פ,נסתר,הת צבע פ,נפ,אין_שם_פעולה צבע פ,קל_אפעל,הת,הפ,הו צבר פ,קל_אפעול,נפ,הת צדק פ,הפ+,הו,הת צדק פ,קל_אפעל,אין_פעול,אין_שם_פעולה צהב פ,הפ,הו זהב פ,הפ,הו צהל פ,קל_אפעל,שם_פעולה=צהלה,אין_פעול צהר פ,הפ,הו צוד פ,קל_אפעל,אין_שם_פעולה צוה פ,פי+,פו,שמור_עו,הת,גם_נת צוף פ,קל_אפעול,הפ+,הו צוץ פ,קל_אפעול,אין_שם_פעולה צוץ פ,הפ צחק פ,קל_אפעל,אין_פעול,אין_שם_פעולה,הפ+ # יש גם ציחק - אבל לא במילון שלי. צחקק פ,פי צטט פ,פי+,פו,שמור_עע ציד פ,פי,פו,הת,שמור_עו צין פ,פי,פו,הת,שמור_עו ציץ פ,פי,שמור_עו ציר פ,פי+,פו,הת,שמור_עו צלב פ,קל_אפעול,הפ+,הו,הת צלב פ,נפ,אין_שם_פעולה צלה פ,קל_אפעל+ צלה פ,נפ,אין_שם_פעולה צלח פ,הפ,קל_אפעל,אין_פעול צלל פ,הפ,הו צלל פ,קל_אפעול,שמור_עע,הת צלם פ,פי,פו,הת צלף פ,קל_אפעול,אין_פעול,הפ, צמא פ,הפ צמא פ,קל_אפעל,אין_פעול,אין_שם_פעולה,בינוני_שמן צמח פ,קל_אפעל,אין_פעול,הפ+,פי # פי ספרותי צמצם פ,פי+,פו,הת צנח פ,קל_אפעל,אין_פעול,הפ,הו צנן פ,פי,פו,הת,שמור_עע צער פ,פי,הת,הפ # הצעיר - חדש, ולא מאוד שימושי צפה פ,נפ,אין_שם_פעולה צפה פ,קל_אפעל,פי+,פו צפף פ,פי,פו,הת צרח פ,קל_אפעל,אין_פעול,שם_פעולה=צרחה צרח פ,הפ # רק בשחמט? צרך פ,נפ,הת,הפ,הו,אין_שם_פעולה,גם_נת צרך פ,קל_אפעול+,אין_פעול צרף פ,פי+,פו,הת,קל_אפעול קבב פ,קל_אפעול,אין_פעול,עתיד_חרוק,אין_שם_פעולה # אין לי מושג מה זה הפועל הזה! קבל פ,פי+,שם_פעולה=קבלה קבל פ,קל_אפעול+,הפ,הת,גם_נת,אין_פעול קבע פ,קל_אפעל+,פי,פו,הת,גם_נת קבע פ,נפ,אין_שם_פעולה קבץ פ,פי+,פו,הת קבץ פ,נפ,אין_שם_פעולה # קל_אפעול תנכי קבר פ,קל_אפעול+,נפ קדם פ,הפ+,הו,פי+,פו,הת ##קדם פ,קל_אפעל # רשימה2 ציווי קדם פ,קל_אפעל,פי,פו,הת,הפ,הו קדר פ,קל_אפעל,אין_שם_פעולה,אין_פעול קדש פ,פי+,פו,הת,גם_נת,הפ+,הו קוה פ,פי,שמור_עו,אין_שם_פעולה קוה פ,נפ,שמור_עו קום פ,קל_אפעל,הפ+,הו,פי,פו,הת קום פ,הפ+,הסיבותי_ישן קוץ פ,קל_אפעל,הפ קיץ פ,פי,שמור_עו # רק לציפורים נודדות קיץ פ,הפ,הו,אין_שם_פעולה קטלג פ,פי+,פו קטן פ,הפ+,הו קטן פ,קל_אפעל,אין_שם_פעולה,בינוני_שמן,אין_פעול קטע פ,נפ,אין_שם_פעולה קטע פ,קל_אפעל,פי,פו קים פ,פי+,פו,הת,גם_נת,שמור_עו # TODO: מקוים נראה נורא קיף פ,הפ+,הו קלט פ,קל_אפעול+,נפ,הפ+,הו קלל פ,הפ,הו קלל פ,פי+,פו,שמור_עע,אין_שם_פעולה קלל פ,קל_אפעל,אין_פעול,אין_שם_פעולה # מנשרים קלו קלע פ,נפ,קל_אפעל קלקל פ,פי,פו,הת קמר פ,פי,פו,הת קנה פ,נפ,אין_שם_פעולה קנה פ,קל_אפעל+,הפ+,הו קנט פ,הפ,הו קנן פ,פי קנן פ,פי,שמור_עע קסם פ,הפ,הו קסם פ,קל_אפעול,אין_שם_פעולה קפא פ,קל_אפעל,הפ+,הו קפד פ,הפ,הו,פי,פו,הת # קיפד ראשו, חייו קופדו ? קפל פ,פי+,פו,הת קפץ פ,קל_אפעול,הפ+,הו,פי # קפוץ - משמעות שונה..., קיפץ - מיושן קצה פ,הפ+,הו,שם_פעולה=הקצאה קצץ פ,הת,שמור_עע,אין_שם_פעולה,נפ קצץ פ,פי,פו,שמור_עע קצץ פ,שמור_עע,קל_אפעול קצר פ,קל_אפעול+,פי+,פו,הת קצר פ,נפ,אין_שם_פעולה קרא פ,הפ+,הו,קל_אפעל+,הת קרא פ,נפ,אין_שם_פעולה קרב פ,פי+,פו,הת,הפ+,הו קרב פ,קל_אפעל,ציווי=קרב,בינוני_שמן,אין_שם_פעולה,אין_פעול קרה פ,נפ קרה פ,קל_אפעל,אין_שם_פעולה קרם פ,הפ+,הו קרם פ,קל_אפעול,אין_שם_פעולה,אין_פעול #רשימה2 ציווי קרן פ,קל_אפעול,אין_פעול,הפ+,הו קרס פ,קל_אפעול קרר פ,פי,פו,הת,שמור_עע קשב פ,הפ ##קשב פ,קל_אפעול #רשימה2 ציווי קשה פ,הפ+,הו,הת קשה פ,קל_אפעל,אין_שם_פעולה,אין_פעול,בינוני_שמן קשר פ,קל_אפעול,נפ,פי,פו,הת ראה פ,הפ+,אין_שם_פעולה ראה פ,קל_אפעל+,נפ,הת,הו ראyן פ,פי,פו,הת רבץ פ,קל_אפעול,אין_פעול,הפ רגז פ,הפ+,הת רגז פ,קל_אפעול,אין_שם_פעולה רגל פ,הפ+,הו,הת,אין_שם_פעולה רגם פ,קל_אפעול+,נפ רגע פ,קל_אפעל,נפ,הפ+,הת רגש פ,קל_אפעול,אין_פעול,אין_שם_פעולה # גבוה רגש פ,פי,פו,הת,הפ+,הו רדם פ,נפ,הפ+,הו,פעול רדף פ,נפ,אין_שם_פעולה רדף פ,קל_אפעול+ רהב פ,הפ,הת רוח פ,הפ+,שמור_עו,אין_שם_פעולה,קל_אפעל,אין_פעול רוח פ,פי,פו,הת,שמור_עו רום פ,הפ+,הו,הת רום פ,פי+,פו,אין_שם_פעולה רחב פ,הפ+,הו,הת ##רחב פ,קל_אפעל,בינוני_שמן,אין_שם_פעולה,אין_פעול רחף פ,פי רחק פ,הפ+,הו,הת,קל_אפעל רחרח פ,פי רחש פ,קל_אפעל,אין_פעול,אין_שם_פעולה רחש פ,הת ריח פ,הפ+ רכב פ,הת,הו,הפ+ רכב פ,קל_אפעל,מקור=לרכב רכז פ,פי+,פו,הת רכך פ,פי+,פו,הת,שמור_עע רכל פ,פי # TODO בדוק סלנג רכן פ,קל_אפעול,הפ+,הו רכש פ,נפ,אין_שם_פעולה רכש פ,קל_אפעול+,אין_פעול רמה פ,פי+,פו,אין_שם_פעולה רמס פ,קל_אפעול+ רמס פ,אין_שם_פעולה,נפ רסס פ,פי+,פו,שמור_עע רסק פ,פי+,פו,הת רעב פ,הפ+,הו רעב פ,קל_אפעל,בינוני_שמן,אין_שם_פעולה,אין_פעול רעד פ,קל_אפעל,אין_פעול,הפ+,הו רעל פ,הפ+,הו,פעול רענן פ,פי+,הת רעף פ,הפ+,הו רפא פ,פי+,פו,הת,נפ רפד פ,פי+,פו ##רפד פ,קל_אפעול #רשימה2 ציווי רפה פ,הפ+,הת,פי+ #לרפות ידיים רפה פ,קל_אפעל,אין_שם_פעולה רפרף פ,פי רצה פ,הפ,שם_פעולה=הרצאה רצה פ,נפ,אין_שם_פעולה רצה פ,קל_אפעל,פי+,פו,הת רצח פ,קל_אפעל,אין_פעול,נפ רצף פ,פי,פו רקב פ,קל_אפעל,בינוני_שמן,אין_שם_פעולה רקב פ,נפ,אין_שם_פעולה,הפ רקד פ,הפ+,הו,פי # פי תנכי.גוזמה רקד פ,קל_אפעול,אין_שם_פעולה,אין_פעול רקם פ,קל_אפעול,נפ # שם פעולה: רקימת חלומות רקם פ,הת רשה פ,הו רשה פ,הפ,שם_פעולה=הרשאה רשם פ,קל_אפעול+,נפ,הפ+,הת רשע פ,הפ+,הו רשש פ,הת,פי+ רתם פ,קל_אפעול,נפ רתע פ,נפ,אין_שם_פעולה רתע פ,קל_אפעל,אין_פעול,נפ,הפ+,הו רתק פ,פי+,פעול,פו שאב פ,קל_אפעל,נפ שאה פ,הת שאל פ,קל_אפעל+,נפ,הפ+,הו שאף פ,נפ,אין_שם_פעולה שאף פ,קל_אפעל,הפ,הו שאר פ,נפ,הפ+,הו שבב פ,הת,פי שבע פ,קל_אפעל,בינוני_שמן,אין_שם_פעולה,אין_פעול # שביעה - קצת משונה שבע פ,הפ+,הו,נפ שבץ פ,פי+,פו,הת שבר פ,נפ,פו,קל_אפעול+,הת,הפ # השברה=רכש שבר פ,פי,אין_שם_פעולה שבש פ,פי,פו,הת,גם_נת שבת פ,קל_אפעול,שמור_ל,הפ+,הו,אין_פעול שגע פ,הת שגע פ,פי+,פו,אין_שם_פעולה # שיגוע זה סלנג ילדותי שגר פ,פי,פו,פעול שגשג פ,פי שדך פ,פי+,פו,הת שדל פ,פי+,פו,הת שדר פ,פי+,פו שדרג פ,פי+,פו שהה פ,קל_אפעל,אין_פעול,הת,גם_נת,הפ+,הו,שמור_עע שוב פ,קל_אפעל,הפ+,הו שוה פ,הפ+,שמור_עו,שם_פעולה=השוואה שוה פ,קל_אפעול,שמור_עו,אין_שם_פעולה,אין_פעול,בינוני_שמן שוה פ,שמור_עו,פי,הת,הו שוט פ,קל_אפעל,אין_שם_פעולה שוק פ,פי+,פו,שמור_עו שוש פ,קל_אפעל שחח פ,פי,אין_שם_פעולה שחח פ,הת,פעול # להתכופף שחט פ,נפ,אין_שם_פעולה שחט פ,קל_אפעל+ שחק פ,נפ,פי,אין_שם_פעולה,פו שחק פ,קל_אפעל שחר פ,הפ+,הו,פי שחרר פ,הת,גם_נת,פי+,פו שחת פ,הפ+,הו,פי # נפ ספרותי, ומטעה מול שחיטה. שחת פ,הפ+,הו,שמור_ל שטח פ,הת שטח פ,קל_אפעל,פי # שטיחת טענות, שיטוח פני הקרקע שטף פ,נפ,אין_שם_פעולה שטף פ,קל_אפעול+ שוח פ,קל_אפעול,אין_שם_פעולה # לטייל שיח פ,קל_אפעל,הפ שיט פ,הפ+,הו שיט פ,פי,שמור_עו שיך פ,פי+,פו,הת,שמור_עו שים פ,קל_אפעל+,הפ+,הו שיר פ,קל_אפעל,הו #, פי # לשורר מיושן שיר פ,הת,שמור_עו שיש פ,קל_אפעל שית פ,הפ,הו,שמור_ל שכב פ,הפ+,הו שכב פ,נפ,אין_שם_פעולה שכב פ,קל_אפעל,מקור=לשכב שכח פ,קל_אפעל+,נפ,הת,הפ+,הו שכל פ,הפ+,פי,פו שכל פ,קל_אפעול,אין_שם_פעולה #רשימה2 ציווי שכן פ,פי,פו,הת,הפ+,הו שכן פ,קל_אפעול,אין_פעול,אין_שם_פעולה שכנע פ,פי,פו,הת שכר פ,נפ,אין_שם_פעולה שכר פ,קל_אפעול+,הפ+,הו,הת #שכר פ,פי+,אין_שם_פעולה # להביא למצב של שיכרון שכתב פ,פי+,פו שלב פ,פי,פו,הת שלח פ,נפ,אין_שם_פעולה שלח פ,קל_אפעל+,פי+,פו,הת שלט פ,נפ,אין_שם_פעולה שלט פ,קל_אפעול,אין_פעול,פי,הת,הפ+,הו # גם שולטתי שלך פ,הפ+,הו שלל פ,הת שלל פ,קל_אפעול,אין_פעול,נפ,שמור_עע שלם פ,פי+,פו,הת,הפ+,הו,נפ שמד פ,הפ+,הו,הת,נפ שמח פ,קל_אפעל,פי+,אין_שם_פעולה,אין_פעול,בינוני_שמן שמט פ,קל_אפעול+,נפ,הפ+,הו,הת שמן פ,קל_אפעל,בינוני_שמן,אין_שם_פעולה,אין_פעול שמן פ,הפ,פי+,פו שמע פ,נפ,אין_שם_פעולה שמע פ,קל_אפעל+,אין_פעול,הפ+,הו,הת שמץ פ,הפ+,הו שמר פ,קל_אפעול+,פי+,פו,הת,נפ,גם_נת שמש פ,פי,הת,הפ+,הו שנא פ,קל_אפעל+,הפ+,אין_שם_פעולה שנה פ,קל_אפעל,נפ,פי+,פו,הת,גם_נת שעבד פ,פי+,פו,הת,גם_נת שעט פ,קל_אפעל,שם_פעולה=שעטה,אין_פעול שעמם פ,פי+,פו,הת שען פ,נפ,הפ+,הו שער פ,פי,פו שערך פ,פי שפט פ,נפ,אין_שם_פעולה שפט פ,קל_אפעול+ שפך פ,נפ,אין_שם_פעולה שפך פ,קל_אפעול+,הת שפל פ,הפ+,הו,הת שפל פ,קל_אפעול,בינוני_שמן,אין_שם_פעולה,אין_פעול שפע פ,קל_אפעל,פי,פו,הפ,הו שפף פ,הת,פעול שפץ פ,פי+,פו שפר פ,פי+,פו,הת שקד פ,קל_אפעול,אין_פעול שקה פ,הפ+,הו שקט פ,קל_אפעול,אין_שם_פעולה,אין_פעול,הפ+,הו שקט פ,קל_אפעול,אין_שם_פעולה,אין_פעול,בינוני_שמן שקלל פ,פי,פו,הת שקם פ,פי+,פו,הת שקע פ,הפ+,הו,קל_אפעל,פי,פו,הת שקף פ,פי,פו,הת,הפ שקף פ,נפ,אין_שם_פעולה שקק פ,הת שקק פ,קל_אפעל,אין_פעול,שמור_עע שקר פ,פי,אין_שם_פעולה שרט פ,נפ,אין_שם_פעולה שרט פ,קל_אפעול שרטט פ,פי,פו שרyן פ,פי,פו שרע פ,הת,פעול שרף פ,קל_אפעול+,אין_שם_פעולה,נפ שרר פ,קל_אפעול,שמור_עע,אין_פעול,אין_שם_פעולה,הת שרש פ,פי,פו,הפ+,הו,הת שתה פ,קל_אפעל,הת שתל פ,קל_אפעול,נפ,הפ+,הו שתן פ,הפ,הו שתף פ,פי+,פו,הת שתק פ,קל_אפעול,אין_פעול,הת,הפ+,הו,פי,פו תאם פ,הפ+,הו,פי,פו,קל_אפעל תאר פ,פי+,פו תבע פ,נפ,אין_שם_פעולה תבע פ,קל_אפעל+ תהה פ,קל_אפעל,שמור_עע,אין_פעול תוך פ,פי,פו,שמור_עו תור פ,קל_אפעול,אין_שם_פעולה תחב פ,קל_אפעל,נפ תחל פ,הפ+,הו תיק פ,פי,פו,שמור_עו תיר פ,פי,פו,שמור_עו תכן פ,נפ,פי,פו # עבר של נפ לא מקובל, פי ופו הנדסיים ומטעים לעומת תיקון תכנן פ,פי+,פו תלה פ,קל_אפעל+,נפ תלש פ,נפ,אין_שם_פעולה תלש פ,קל_אפעול+ תמד פ,הפ,בינונית_תה תמה פ,קל_אפעל,בינוני_שמן,הפ+,שמור_מפיק תמך פ,נפ,אין_שם_פעולה תמך פ,קל_אפעול תמר פ,הת,הפ,הו # הפ.הו - כימיה תסס פ,קל_אפעול,שמור_עע,אין_פעול,הפ+,הו תעב פ,פי+ תעד פ,פי+,פו תעדף פ,פי,פו תפס פ,קל_אפעול+,נפ תפר פ,נפ,אין_שם_פעולה תפר פ,קל_אפעול+ תפש פ,קל_אפעול+,נפ תקל פ,נפ תקל פ,הפ,הו,פי,פו # סלנג פראי תקן פ,פי+,פו,הפ+,הו תקע פ,קל_אפעל+,נפ תקף פ,קל_אפעול+,נפ,הפ+,הו תקצב פ,פי+,פו תרגם פ,פי+,פו תרם פ,הפ תרם פ,קל_אפעול,נפ,אין_שם_פעולה תרע פ,הפ תרץ פ,פי,פו ### חנה פ,קל_אפעל,אין_פעול,הפ+,הו גאה פ,קל_אפעל,אין_פעול,אין_שם_פעולה גאה פ,הת אנס פ,קל_אפעול+,אין_שם_פעולה,נפ לבה פ,פי,פו משל פ,קל_אפעול,אין_שם_פעולה,נפ משל פ,הפ+,הו פתה פ,פי+,פו,הת בלם פ,קל_אפעול+ בלם פ,נפ,אין_שם_פעולה # אולי צריך שם פעולה? בלס פ,קל_אפעול טיח פ,פי,פו,שמור_עו טוח פ,קל_אפעול,אין_שם_פעולה טוח פ,הפ+,הו רוץ פ,קל_אפעול,פי,פו,הת,הפ+,הו אתר פ,פי,פו תזמן פ,פי,פו דגם פ,הפ+,הו,קל_אפעול #פי סלנג דגם פ,נפ,אין_שם_פעולה כפל פ,קל_אפעול,הפ+,הו כפל פ,נפ,אין_שם_פעולה בזר פ,פי+,פו ודא פ,פי,שם_פעולה=וידוא wדה פ,הת,פי דרס פ,קל_אפעול דרס פ,נפ,אין_שם_פעולה בלע פ,קל_אפעל+,אין_פעול,נפ,הפ+,הו # יש גם פועל - שלא יבולע לו. כוץ פ,פי,פו,הת,שמור_עו כיל פ,הפ+,הו אתחל פ,פי,פו נסק פ,קל_אפעול,שמור_פנ,אין_פעול נסק פ,הפ,הו כרח פ,הפ+,הו,אין_שם_פעולה רוע פ,הפ,אין_שם_פעולה רעע פ,הפ,הו,הת,פעול # האומנם רעים בצירה הם רעים בקמץ? ניב פ,הפ תפקד פ,פי שכפל פ,פי+,פו,הת קדד פ,פי,פו קדד פ,קל_אפעול,שם_פעולה=קידה,אין_פעול פרז פ,פו,פי,הפ,הו,פעול תכנת פ,פי,פו שקל פ,קל_אפעול שקל פ,נפ,אין_שם_פעולה תנע פ,הפ+,הו טחן פ,קל_אפעל טחן פ,נפ,אין_שם_פעולה חרת פ,קל_אפעול # שרט, גירד, חקק חרת פ,נפ,אין_שם_פעולה אמלל פ,פי,פו בטא פ,פי+,פו,הת דיק פ,פי,פו,שמור_עו סיר פ,פי,שמור_עו סכך פ,פי,אין_שם_פעולה סכך פ,פי,שמור_עע סכך פ,קל_אפעול,שמור_עע,אין_פעול,אין_שם_פעולה סוך פ,קל_אפעול פקר פ,הפ+,הו,הת ארך פ,הפ+,הו,הת ארך פ,קל_אפעל,אין_פעול,אין_שם_פעולה רמז פ,קל_אפעול רמז פ,נפ,אין_שם_פעולה,פי # פי נשמע תלמודי מדיי רחץ פ,קל_אפעל,הת רחץ פ,נפ,אין_שם_פעולה רפף פ,פי,הת ספף פ,הת פוג פ,קל_אפעול,אין_שם_פעולה פוג פ,פי,הת,הפ,הו סלד פ,קל_אפעול,אין_פעול, סרר פ,קל_אפעול,אין_פעול,שמור_עע,אין_שם_פעולה קטר פ,פי קטר פ,הפ+,אין_שם_פעולה,הו # רק בפולחן קפח פ,קל_אפעל,אין_פעול,אין_שם_פעולה קפח פ,פי,פו #### after version 0.1 אהד פ,קל_אפעול,אין_שם_פעולה,נפ חוש פ,קל_אפעול,הפ+,הו עוט פ,קל_אפעול,אין_שם_פעולה עמל פ,קל_אפעול,אין_שם_פעולה,אין_פעול,בינוני_שמן עמל פ,הת צעק פ,קל_אפעל,אין_פעול,אין_שם_פעולה קרע פ,קל_אפעל+ קרע פ,נפ,אין_שם_פעולה רקע פ,קל_אפעל,הפ,פי,פו טגן פ,פי,פו קלף פ,פי,פו,הת קלף פ,קל_אפעול,אין_שם_פעולה #,נפ מיושן גרס פ,קל_אפעול גרס פ,נפ,אין_שם_פעולה ברא פ,קל_אפעל+,אין_פעול,פו,הפ ברא פ,פי+,שם_פעולה=בירוא ברא פ,נפ,אין_שם_פעולה קצף פ,קל_אפעול,אין_פעול,הפ+,הו טרח פ,קל_אפעל,אין_פעול,אין_שם_פעולה טרח פ,הפ+,הו שחם פ,הפ+,הו עלל פ,שמור_עע,הת עלל פ,פי,אין_שם_פעולה בעבע פ,פי פצח פ,קל_אפעל,אין_פעול,פי,פו צרב פ,קל_אפעול צרב פ,נפ,אין_שם_פעולה עשת פ,הת רגל פ,פי,הת,הפ+,הו דקר פ,קל_אפעול+ דקר פ,נפ,אין_שם_פעולה דגדג פ,פי,פו רברב פ,הת מפה פ,פי,פו רעש פ,קל_אפעל,אין_שם_פעולה,אין_פעול,נפ רעש פ,הפ+,הו אפס פ,קל_אפעל,אין_פעול,בינוני_שמן,פי,פו,הת חשמל פ,פי,פו,הת ענד פ,קל_אפעול+ ענד פ,נפ,אין_שם_פעולה חכך פ,קל_אפעול,אין_פעול,פי,הת,שמור_עע חמל פ,קל_אפעול,אין_שם_פעולה,אין_פעול נצר פ,קל_אפעול+,שמור_פנ,הת נצר פ,נפ,שמור_פנ,אין_שם_פעולה,פי+ צמק פ,פי,פו,הת שזף פ,קל_אפעול+,אין_שם_פעולה שזף פ,פי+,הת ארס פ,הת,פי,אין_שם_פעולה,פעול # פי,פו תנכי בגר פ,קל_אפעל,אין_פעול,אין_שם_פעולה,אין_עתיד,אין_ציווי בגר פ,הת בגר פ,פי,אין_שם_פעולה נטף פ,קל_אפעול,אין_שם_פעולה,אין_פעול,שמור_פנ,ציווי_שמור_פנ נטף פ,הפ,הו תפף פ,פי חתר פ,קל_אפעול,אין_פעול,הת כבה פ,קל_אפעל,אין_שם_פעולה,נפ # נפעל - סלנג מכוער כבה פ,פי+,פו קטל פ,קל_אפעול+ קטל פ,נפ,אין_שם_פעולה נתץ פ,פי+,פו,שמור_פנ # תנכי גם קל_אפעול נקר פ,קל_אפעול,פי,פו,שמור_פנ רשת פ,פי,פו,שמור_ל שלש פ,פי,פו # במותחני ריגול, גם הפ,הו עבה פ,פי,פו,הת קשט פ,פי,פו,הת מלך פ,קל_אפעול,אין_שם_פעולה,אין_פעול מלך פ,נפ,הפ+,הו כתר פ,הפ+,הו,פי,פו שלשל פ,פי,פו,הת גער פ,קל_אפעל,אין_פעול,שם_פעולה=גערה כער פ,פי+,פו,הת,פעול פער פ,קל_אפעל,נפ בתר פ,פי+,פו ותר פ,פי נחם פ,נפ,פי+,פו,הת ישר פ,פי+,פו,הת ישר פ,הפ,שמור_פי,אין_שם_פעולה יקר פ,פי,הת,הפ+ גרד פ,פי+,הת גרד פ,קל_אפעול,אין_פעול # די מיושן קצע פ,הפ+,הו צבט פ,קל_אפעול,נפ תסכל פ,פי+,פו שכנע פ,פי+,פו,הת #עיף פ,קל_אפעל,בינוני_שמן,שמור_עו # TODO יוד כפול בעתיד/מקור עyף פ,קל_אפעל,בינוני_שמן,אין_ציווי,אין_פעול,אין_שם_פעולה #TODO האם זה נשאר? עיף פ,שמור_עו,פי+,הת עוף פ,קל_אפעול,פי,אין_שם_פעולה עוף פ,הפ+,הו,הת עפעף פ,פי דשדש פ,פי לחשש פ,פי,הת קעקע פ,פי,פו,הת קשקש פ,פי,פו כשכש פ,פי קצב פ,הפ+,הו,פי,קל_אפעול קצב פ,נפ,אין_שם_פעולה כלב פ,הפ+,הו רצע פ,קל_אפעל עפל פ,הפ אפל פ,הפ+,הו זעם פ,קל_אפעל,אין_שם_פעולה זעם פ,הפ wכח פ,הת,אין_שם_פעולה שגה פ,קל_אפעל כwנן פ,פי,הת # כוונן טלטל פ,פי+,פו,הת תלתל פ,פי,פו סלסל פ,פי+,פו,הת מסה פ,פי+,פו,הת כלם פ,הפ+,הו,נפ חלד פ,הפ לגם פ,קל_אפעול,אין_פעול לגם פ,נפ,אין_שם_פעולה פתל פ,פי,פו,הת צרר פ,קל_אפעול,נפ,שמור_עע צרר פ,הפ+,הו קרץ פ,קל_אפעול,פו חוד פ,קל_אפעול פלט פ,קל_אפעול,אין_פעול,נפ,הפ+,הו # הפ+הו ספרותי פרם פ,קל_אפעול,נפ הדר פ,פי,פו,הת הדר פ,הפ,הו,אין_שם_פעולה # קומפילציה שטט פ,פי פלה פ,קל_אפעל,אין_פעול,הפ # נפ - תנכי פלה פ,הו,בינונית_תה קרצף פ,פי,פו,הת נצנץ פ,פי,פו עטה פ,קל_אפעל # הפ,הת # ספרותי מאוד שדד פ,קל_אפעול,נפ,אין_שם_פעולה,שמור_עע רבע פ,פי,פו,הפ,הו רבה פ,הפ+,קל_אפעל,אין_פעול,הת ריב פ,קל_אפעל,אין_שם_פעולה צור פ,קל_אפעל # לשים מצור תחח פ,שמור_עע,פי,פו,פעול נתך פ,נפ,הפ+,הו מעל פ,קל_אפעל,אין_פעול מחל פ,קל_אפעל מחל פ,נפ,אין_שם_פעולה מהל פ,קל_אפעל,נפ מול פ,קל_אפעל,פי כרסם פ,פי+,פו,הת נזע פ,הפ # ההטיה של יזע היא כאילו של נזע. והמטרה מקדשת יזע פ,פי,פו,הת שבח פ,פי+,פו,הת,הפ+,הו ערבל פ,פי,פו,הת שגח פ,הפ,הו שכם פ,הפ+,הו צית פ,פי,פו,שמור_עו זרה פ,קל_אפעל זרה פ,פי,אין_שם_פעולה # כיום - רק בצירוף עם אימה ככב פ,פי סות פ,הפ+,הו עשר פ,הפ+,הו,הת פשר פ,הפ+,הו,הת,פי,פו שעה פ,קל_אפעל,אין_פעול,אין_שם_פעולה שעה פ,הפ+,הו חשבן פ,הת לגלג פ,פי צנתר פ,פי אחסן פ,פי+,פו אכסן פ,הת # פי ו פו סתם מבלבלים מול אחסן. מתק פ,הפ+,הו פרך פ,הפ+,הו נזק פ,הפ צדד פ,פי,שמור_עע צדד פ,פי,הת מוג פ,נפ,נסוב_מודרני מוג פ,נפ,הת פגר פ,פי,הת יקד פ,קל_אפעול,אין_פעול,אין_ציווי #TODO מה קורה בציווי? מדוע נושרת היוד? מרמר פ,הת קרזל פ,הת קלח פ,הת,פי,פו # פי/פו בשימוש אצל הורים לפעוטות. "קילוח" הוא במשמעות אחרת לגמרי קלח פ,קל_אפעל,אין_פעול,אין_שם_פעולה נשר פ,קל_אפעול,שמור_פנ,ציווי_שמור_פנ,אין_פעול # אורנן טוען גם מקור_אבד_פנ נשר פ,הפ+,הו לטף פ,פי+,פו,הת סחב פ,קל_אפעל+,אין_פעול,נפ סחף פ,קל_אפעל+,נפ להב פ,הפ+,הו,הת להב פ,נפ,אין_ציווי,אין_עתיד,אין_שם_פעולה,אין_מקור שנן פ,פי+,פו,שמור_עע,פעול יאל פ,הפ מצץ פ,קל_אפעול+,שמור_עע,נפ פעם פ,קל_אפעל,אין_פעול,נפ,הפ+,הו,הת,פי צחן פ,הפ צמרר פ,פי+,פו,הת תקשר פ,פי,פו עכר פ,הפ+,נפ,קל_אפעול פגז פ,הפ+,הו נתב פ,פי+,פו,הת רטט פ,קל_אפעול,אין_פעול,שמור_עע,הפ+,נפ,פי #פי מיושן כשף פ,פי,פו אלתר פ,פי,פו זלל פ,קל_אפעול,אין_פעול,שמור_עע,נפ מרד פ,קל_אפעול,הפ+,הו,הת מצה פ,פי+,פו,הת סנט פ,קל_אפעול,אין_פעול רסן פ,פי,פו,הת תעל פ,פי,פו מחץ פ,קל_אפעל+,נפ חלחל פ,פי,פו,הת לטש פ,קל_אפעול,פי,פו,הת להטט פ,פי לקק פ,פי+,פו,הת,שמור_עע תמצת פ,פי,פו פצח פ,פי+,פו,הת אלם פ,נפ בצר פ,קל_אפעול,פי+,פו,הת בצר פ,נפ,אין_שם_פעולה נום פ,קל_אפעל,שם_פעולה=תנומה # לא שם פעולה, אבל למי אכפת? נענע פ,פי,פו,הת נעץ פ,קל_אפעל+,נפ,שמור_פנ נעם פ,קל_אפעל,אין_פעול,אין_בינוני # יש, אבל הוא לא נעים נעם פ,הפ,הו ערם פ,קל_אפעול+,נפ,הפ+,הו נפנף פ,פי+,פו,הת דכדך פ,פי+,פו באש פ,קל_אפעל,אין_שם_פעולה,נפ # מיושן לאללה באש פ,הפ,הו בדד פ,פי+,פו,הת גחך פ,פי+,פו,הפ,הפ # מאוד גבולי אם יש כזה פועל יגוחך. נתש פ,הפ+,הו # השורש הוא תשש, אבל המטרה מקדשת את האמצעים ערץ פ,הפ+ ערץ פ,נפ,אין_שם_פעולה חרש פ,קל_אפעול,הפ+,הו,הת חרש פ,נפ חבט פ,קל_אפעול,שם_פעולה=חבטה חבט פ,נפ,אין_שם_פעולה חבט פ,הת חמד פ,קל_אפעול חמד פ,נפ,אין_שם_פעולה גמד פ,פי+,פו,הת פרגן פ,פי,פו # אידיש, לא? חקה פ,פי+,הת ערק פ,קל_אפעול,אין_פעול רשל פ,הת שלהב פ,פי+,פו,הת שרה פ,קל_אפעל,הפ+,הו נמנם פ,פי,הת תקתק פ,פי שחזר פ,פי+,פו,הת שרך פ,הת,נפ,קל_אפעול גלע פ,הת,גם_נת יסר פ,פי+,פו,הת סור פ,קל_אפעל,הפ+,הו כלה פ,קל_אפעל,אין_פעול,הת,פי+,פו נאם פ,קל_אפעל,אין_פעול,אין_שם_פעולה נאם פ,נפ,אין_שם_פעולה,שמור_פנ עדן פ,פי+,פו,הת אמד פ,קל_אפעול+,אין_פעול אמד פ,נפ,אין_שם_פעולה קהה פ,קל_אפעל,שמור_עע,הפ+,הו דור פ,קל_אפעול ברק פ,הפ+,הו גבב פ,פי+,פו,שמור_עע תיג פ,פי+,פו,שמור_עו צפן פ,קל_אפעול,הפ+,הו קיא פ,הפ+,הו פטם פ,פי+,פו,הת משה פ,קל_אפעל+,נפ עלעל פ,פי,פו קנא פ,פי,אין_שם_פעולה קנא פ,הת # מיושן פשק פ,פי+,פו # קל_אפעול נדיר, ועלול להטעות לעומת "לפסוק" נצץ פ,קל_אפעול,אין_פעול,שמור_עע,שמור_פנ נצץ פ,הפ,שמור_פנ,הת # הת טיפה ספרותי מגן פ,פי+,פו,הת סוט פ,הפ+,הו פטרל פ,פי שעשע פ,פי+,פו,הת ענג פ,פי+,פו,הת צתת פ,פי שחל פ,הפ+,הו,הת חור פ,הת,שמור_עו,גם_נת # התברר, התבהר חwר פ,הפ,הו חור פ,פי,פו,הת מזל פ,הת נכל פ,הת עקם פ,פי+,פו,הת בעט פ,קל_אפעל,נפ בעת פ,הפ+,נפ # פי,פו עוד יותר מיושן עתד פ,הת צנע פ,הפ+,הו,הת פצל פ,פי+,פו,הת טשטש פ,פי,פו,הת ירט פ,פי+,פו איר פ,פי,פו,שמור_עו נוף פ,הפ+,הו,פי,פו,הת ברבר פ,פי,הת # סלנג גסס פ,קל_אפעול,אין_פעול,שמור_עע ינה פ,הפ,שם_פעולה=הונאה נוד פ,הפ # לא היה צריך להיות מ-נדד? חשק פ,קל_אפעול,פי,פו,הת חשק פ,אין_שם_פעולה,נפ פגם פ,קל_אפעול,נפ שרד פ,קל_אפעול,אין_פעול סעף פ,הת צדע פ,הפ אוה פ,הת,שמור_עו # פי - מיושן, ומטעה מול לעוות נדנד פ,פי,הת עטש פ,הת נזף פ,קל_אפעול,שמור_פנ,נפ סמם פ,פי+,פו,הת,שמור_עע רטן פ,קל_אפעול,אין_פעול צמד פ,הפ+,הו,נפ,פי,פו אסלם פ,פי+,פו,הת חפר פ,קל_אפעול,הת חפר פ,נפ,אין_שם_פעולה הגה פ,קל_אפעל+ הגה פ,נפ,אין_שם_פעולה # כאן הצורה )ליהגות( לא מקובלת בכלל קלד פ,קל_אפעול,אין_פעול,הפ+,הו חרך פ,קל_אפעול+,נפ געגע פ,הת,פי # בניין פיעל בעבור אחי הברווזים בקע פ,קל_אפעל,אין_פעול,נפ,הפ+,הו,פי+,פו,הת יזל פ,הפ+,הו # כרגיל, הדרך לכוונות טובות רצופה בגיהנום אזכר פ,פי+,פו תעה פ,קל_אפעל,אין_פעול #LP פסע פ,קל_אפעל,אין_פעול מרט פ,קל_אפעול+ מרט פ,נפ,אין_שם_פעולה שחה פ,קל_אפעל,אין_פעול קהל פ,הת,הפ+,הו # תנ"כית גם קל_אפעול,נפ קהל פ,נפ,אין_שם_פעולה # קצת תנ"כי, אבל מופיע חצץ פ,קל_אפעול,שמור_עע,אין_פעול חצץ פ,נפ,שמור_עע,אין_שם_פעולה פעפע פ,פי נעל פ,קל_אפעל+,נפ,שמור_פנ # הפ # הלביש בנעל זרח פ,קל_אפעל,אין_פעול ישע פ,הפ+ ישע פ,נפ,אין_שם_פעולה נחה פ,הפ+,הו דהה פ,שמור_עע,קל_אפעל כרבל פ,הת,פי,פו צעד פ,קל_אפעל,אין_פעול,הפ+,הו קרקר פ,פי מרח פ,קל_אפעל+,נפ,הת צנף פ,הת # אחרי גרסה 0.2 תנה פ,הפ,הו,פי אבחן פ,פי+,פו נגן פ,פי,פו,הת סקרן פ,פי,פו,הת פכפך פ,פי רטב פ,הפ+,הו,הת,נפ בדה פ,קל_אפעל,הת,פי עמעם פ,הת,פי,פו פכח פ,הת קדר פ,הת חטט פ,פי,שמור_עע כבל פ,קל_אפעול,נפ מסמס פ,פי,פו,הת,גם_נת לשן פ,הפ טרפד פ,פי,פו לעס פ,קל_אפעל,נפ גלד פ,הפ דקדק פ,פי,פו לבב פ,פי,שמור_עע לעט פ,הפ+,הו נדה פ,פי+,פו סרג פ,קל_אפעול סרג פ,נפ,אין_שם_פעולה עות פ,פי+,פו,שמור_עו עות פ,הת,שמור_עו עשק פ,קל_אפעול+,אין_שם_פעולה,נפ רצץ פ,קל_אפעול,שמור_עע רצץ פ,נפ,שמור_עע,אין_שם_פעולה דלדל פ,פי,פו,הת דלדל פ,הת,שמור_פד מרץ פ,הפ+,הו שדד פ,פי,שמור_עע,פו שכך פ,קל_אפעל,שמור_עע,אין_פעול,פי,פו שכלל פ,פי+,פו,הת תעתע פ,פי,פו עלז פ,קל_אפעול,אין_פעול,אין_שם_פעולה פדה פ,קל_אפעל+,נפ ארג פ,קל_אפעול ארג פ,נפ,אין_שם_פעולה גדע פ,קל_אפעל+,נפ מסד פ,פי,פו,הת רדד פ,פי,פו,הת,שמור_עע,פעול עלס פ,הת כחד פ,פי,הפ+,הו,נפ כבר פ,הפ הסה פ,פי,פו שתת פ,קל_אפעול,אין_פעול,הפ+,הו,שמור_עע זקר פ,קל_אפעול,הת חשך פ,קל_אפעל,בינוני_שמן,אין_שם_פעולה חשך פ,הפ+,הו ילל פ,פי,שמור_עע,אין_שם_פעולה ימר פ,הת שוע פ,פי,שם_פעולה=שוועה,שמור_עו נעע פ,הת שגב פ,נפ,אין_שם_פעולה סלף פ,פי,פו רעם פ,קל_אפעל,אין_שם_פעולה,אין_פעול רעם פ,הפ,הת נקז פ,פי+,פו,הת,הפ+,הו שבט פ,פי,פו,הת ערה פ,הת # גם פיעל ופועל, אבל נדיר. פלפל פ,פי,פו,הת נגס פ,קל_אפעול,שמור_פנ,נפ רפס פ,הת #קל_אפעל,אין_שם_פעולה,אין_פעול זמזם פ,פי,הת,פו דלג פ,פי,פו אדר פ,הפ+,הו עקל פ,פי+,פו,הת # החרמת רכוש/ כיפוף. צקצק פ,פי לחן פ,הפ+,הו פרה פ,קל_אפעל,אין_פעול,אין_שם_פעולה # יש: פרייה ורבייה פרה פ,הפ+,הו אלמן פ,הת בזה פ,פי+,פו,הת בוז פ,קל_אפעול,אין_שם_פעולה קטף פ,קל_אפעול+,נפ # after 0.3 אית פ,פי,פו,שמור_עו גדף פ,פי,פו גיח פ,הפ שנע פ,פי,פו צרד פ,נפ,הפ+,הת חוט פ,פי,פו,שמור_עו חיט פ,פי,פו,שמור_עו בית פ,פי,פו,הת,שמור_עו צות פ,פי,פו,הת,שמור_עו # סלנג צבאי? שצף פ,קל_אפעול,אין_פעול,אין_שם_פעולה איד פ,פי,פו,הת,שמור_עו # רק כימיה? אין פ,פי,פו,הת,שמור_עו # פילוסופי/פיסיקלי מדי? הזה פ,קל_אפעל,שם_פעולה=הזיה שחז פ,הפ+,הו גמש פ,הפ+,הו,הת טהר פ,פי+,פו,הת טהר פ,קל_אפעל,אין_שם_פעולה,אין_פעול #מעולם לא טהרתי בתכלת שוקטה ובתום... טלא פ,הפ+,הו #,פעול מלכד פ,פי,פו קרקע פ,פי,פו שפצר פ,פי,פו #צבאי קרטע פ,פי יקע פ,הפ+,הו מזג פ,פי+,פו,הת,קל_אפעול מזג פ,נפ,אין_שם_פעולה חרחר פ,פי תזמר פ,פי+,פו אשרר פ,פי+,פו חשל פ,פי+,פו,הת קצן פ,הפ,הו יבם פ,פי # הת )כל השורש הזה נדיר למדיי( יחם פ,פי,פו,הת יתם פ,הת,גם_נת מטר פ,הפ+,הו תוה פ,שמור_עו,הפ+,הו נרמל פ,פי,פו בלל פ,הת בלל פ,שמור_עע,קל_אפעול,נפ חבב פ,שמור_עע,הת חבב פ,שמור_עע,פי+,אין_שם_פעולה פשפש פ,פי צוח פ,שמור_עו,אין_פעול,קל_אפעל,שם_פעולה=צווחה אלף פ,פי+,פו רפק פ,הת רקח פ,קל_אפעל רקח פ,נפ,אין_שם_פעולה קדח פ,קל_אפעל,הפ,הו,נפ גוז פ,קל_אפעול,נפ,אין_שם_פעולה חyה פ,הפ+,הו,שם_פעולה=החייאה # בוודאי שזה פ"י - שהחיינו חyה פ,פי,אין_שם_פעולה זמם פ,קל_אפעול,אין_פעול,שמור_עע,אין_שם_פעולה זמם פ,הפ,הו # "הזים" זו שגיאה! נשף פ,קל_אפעול,שמור_פנ,אין_פעול,הת נשף פ,שמור_פנ,נפ # ,פי,פו # קיטור שרק פ,קל_אפעול,אין_פעול שרק פ,נפ wדע פ,הת # התוודע #wעד פ,הת # מיושן גלח פ,פי+,פו,הת,פעול דברר פ,פי+,פו # תקשורת שטה פ,הת,פי חרבן פ,פי,פו,הת # רדוד שתן פ,הפ # רדוד חרפן פ,הת # סלנג חלא פ,הפ+,אין_שם_פעולה # לא מהשורש חלה! סערב פ,הת צלצל פ,פי,הת עקץ פ,קל_אפעול,נפ צפצף פ,פי רשרש פ,פי לבלב פ,פי כרכר פ,פי לחלח פ,פי,הת # נועד להטעות עולים חדשים שכותבים על לכלוך... גרגר פ,פי טרטר פ,פי,פו # צבאי מסמר פ,פי,פו סרסר פ,פי פרפר פ,פי,הת # הת סלנג צרצר פ,פי שרשר פ,פי,פו # הת, מדעי המחשב, concatenate שפשף פ,פי+,פו,הת שקשק פ,פי,הת # סתם אונומטופיאה פזז פ,פי,שמור_עע גזז פ,קל_אפעול,נפ,שמור_עע טזז פ,פי,שמור_עע # סלנג צבאי קזז פ,פי+,פו,שמור_עע,הת זגזג פ,פי משש פ,פי,פו,שמור_עע מוש פ,קל_אפעול,אין_שם_פעולה בשש פ,פי,אין_שם_פעולה # ,הת תנכי לוש פ,קל_אפעול קשש פ,פי רקק פ,קל_אפעול,שמור_עע,אין_פעול לצץ פ,הת ארב פ,קל_אפעול,אין_פעול,אין_שם_פעולה נקף פ,קל_אפעול,אין_פעול,שמור_פנ # לנקוש, לדפוק אזל פ,קל_אפעל,אין_פעול,אין_שם_פעולה,עתידי_אאמץ חצץ פ,קל_אפעול,שמור_עע,אין_פעול חרק פ,קל_אפעול # חרוק - רק בלשון נוס פ,הפ+,הו נוס פ,קל_אפעול,אין_שם_פעולה אזר פ,קל_אפעול,נפ,הת # לאסוף, לאגור. מטעה לעומת לעזור דמע פ,קל_אפעל,אין_פעול #דמע פ,הפ # לא כל-כך קיים גרב פ,קל_אפעול,אין_פעול גרב פ,נפ,אין_שם_פעולה משח פ,קל_אפעל+,נפ # תנ"כי ומטעה לעומת למשוך. מספר פ,פי,פו דאה פ,קל_אפעל,אין_פעול קטב פ,פי,פו רצד פ,פי צעצע פ,הת תמרן פ,פי,פו בלח פ,הפ מלח פ,הפ+,הו אבזר פ,פי+,פו בצבץ פ,פי הבהב פ,פי קרח פ,הפ,הת # הת ספרותי קלש פ,הפ תבל פ,פי+,פו תגבר פ,פי+,פו תחקר פ,פי+,פו חרז פ,קל_אפעול,הת שבה פ,קל_אפעל+ שבה פ,נפ,אין_שם_פעולה זוג פ,פי+,שמור_עו,פו,הת קין פ,פי,שם_פעולה=קינה # לא מדויק, אבל מותר לי קנן פ,פי,שמור_עע אמת פ,פי+,פו,הת באר פ,פי+,פו,הת # מבלבל לעומת התבהר! בדר פ,פי+,פו,הת דפן פ,פי+,פו דשן פ,פי+,פו # שום קשר למרסל חתל פ,פי+,פו כסף פ,הפ+,הו,נפ,פי # מכסף - ספרותי להק פ,פי+,פו מתג פ,פי+,פו עגל פ,פי+,פו,הת עכל פ,פי+,פו,הת עסה פ,פי+,פו קנח פ,פי+,פו שפד פ,פי+,פו,הת תחם פ,פי+,פו,קל_אפעול גנח פ,קל_אפעל,אין_פעול דלה פ,קל_אפעל+,אין_פעול דלה פ,נפ,אין_שם_פעולה זקף פ,קל_אפעול+,נפ,הפ+,הו,הת זרע פ,קל_אפעל+,נפ,הפ+,הו חפף פ,קל_אפעול,שמור_עע חפף פ,נפ,שמור_עע,אין_שם_פעולה חפף פ,פי,פו,הת,שמור_עע # סלנג לא יפה סטר פ,קל_אפעול # ,אין_פעול יש פעול, אבל לא שימושי צפר פ,קל_אפעול,אין_פעול צפר פ,נפ,אין_שם_פעולה רתח פ,קל_אפעל,הפ+,הו,הת להם פ,הת גרל פ,הפ+,הו קשח פ,הפ+,הו,הת פעה פ,קל_אפעל,אין_פעול געה פ,קל_אפעל,אין_פעול גיר פ,פי+,פו,הת,גם_נת,שמור_עו סיד פ,פי+,פו,הת,שמור_עו שזר פ,קל_אפעול+,נפ # הת נשמע ישן תפח פ,קל_אפעל,הפ+,הו דאב פ,קל_אפעל,אין_שם_פעולה,הפ זנה פ,קל_אפעל,אין_פעול,הפ+ # קצת תנ"כי מדיי רעה פ,קל_אפעל+ חיג פ,פי,פו,שמור_עו כיל פ,פי+,פו,הת,שמור_עו פיט פ,פי,שמור_עו,הת לפת פ,קל_אפעול,נפ נהה פ,קל_אפעל,שמור_עע,אין_פעול זוע פ,קל_אפעול,אין_שם_פעולה כסח פ,פי,פו,הת # הת סלנג פברק פ,פי,פו # לועזי סאן פ,קל_אפעל,אין_פעול,אין_שם_פעולה קרש פ,נפ,הפ,הו,הת,פעול וסת פ,פי+,פו wסת פ,הת פטפט פ,פי פמפם פ,פי #סלנג פספס פ,פי,פו,הת #סלנג פצפץ פ,פי טמא פ,פי+,פו,שם_פעולה=טימוא טמא פ,נפ סרס פ,פי+,פו תרבת פ,פי+,פו מהמה פ,הת,שמור_מפיק שתך פ,פי,פו # כימיה אגם פ,פי אחה פ,פי,פו,הת אכן פ,פי,פו # צבא ? בתק פ,פי,פו גהק פ,פי שהק פ,פי דוש פ,פי,שמור_עו דוש פ,קל_אפעול זכך פ,פי,פו,הת,שמור_עע # מה לעשות, מבלבל מול זקק טוח פ,פי,פו,שמור_עו # צבא כוה פ,שמור_עו,נפ ינן פ,פי,פו,הת,שמור_עע # כימיה מכן פ,פי,פו,הת לפף פ,פי,פו,הת,שמור_עע מסך פ,קל_אפעול,פי,פו # )למסוך רעל( מסך פ,נפ,אין_שם_פעולה מקש פ,פי,פו #צבא נכש פ,פי,פו,הפ+,הו # חקלאות ונחשנות נפה פ,פי,פו סאב פ,פי,פו,הת סנף פ,פי,פו # ארגון סנף פ,הפ # סלנג סתת פ,פי,פו,שמור_עע קמט פ,פי+,פו,הת רטש פ,פי,פו רתך פ,פי,פו שמם פ,פי,שמור_עע # תודעה שמם פ,הת שסף פ,פי,פו שפה פ,פי,פו #מיסוי שסה פ,פי,פו תעש פ,פי,פו חבץ פ,קל_אפעול,אין_פעול # ליצור גבינה חלב פ,קל_אפעול,אין_פעול חלב פ,נפ,אין_שם_פעולה חצב פ,קל_אפעול חצב פ,נפ,אין_שם_פעולה לאט פ,קל_אפעל,אין_פעול,אין_שם_פעולה # ספרותי נתז פ,הפ+,הו נתז פ,נפ,אין_שם_פעולה סבא פ,קל_אפעל,אין_פעול #ספרותי ענב פ,קל_אפעול ענב פ,נפ,אין_שם_פעולה עקד פ,קל_אפעול,שם_פעולה=עקדה # רק לגבי יצחק עקד פ,נפ,אין_שם_פעולה פזל פ,קל_אפעול,אין_פעול צלע פ,קל_אפעל,אין_פעול צרם פ,קל_אפעול,אין_פעול קמל פ,קל_אפעול,בינוני_שמן,אין_פעול רכס פ,קל_אפעול,נפ בשם פ,פי,פו,הת חסד פ,הת חצף פ,הת,פעול,הפ # הפ ספרותי תמם פ,הת,שמור_עע תמם פ,קל_אפעול,עתיד_חרוק,אין_שם_פעולה,אין_פעול # גם קל_אפעל בחש פ,קל_אפעל בחש פ,נפ,אין_שם_פעולה בטש פ,קל_אפעול,אין_פעול # סוסים בעיקר ביץ פ,פי,שמור_עו גמע פ,קל_אפעל,אין_פעול גמע פ,נפ,אין_שם_פעולה #גמא פ,קל_אפעל,אין_פעול # אותה משמעות כמו גמע. טעם פ,קל_אפעל+,אין_פעול,נפ,הפ+,הו פרף פ,קל_אפעול # לחבר )מיושן לאללה( קמץ פ,קל_אפעול+,פי רדה פ,קל_אפעל צבא פ,קל_אפעל,אין_פעול,אין_שם_פעולה רוה פ,קל_אפעל,בינוני_שמן,שמור_עו,הפ+,הו שאג פ,קל_אפעל,אין_פעול,שם_פעולה=שאגה שאג פ,נפ,אין_שם_פעולה שבק פ,קל_אפעול,אין_פעול,אין_שם_פעולה שלה פ,קל_אפעל+,אין_פעול,נפ שלה פ,הפ,הו זבח פ,קל_אפעל+,אין_שם_פעולה זבח פ,נפ,אין_שם_פעולה זפת פ,פי+,פו נאץ פ,פי+,פו רהט פ,פי+,פו,פעול אבל פ,הת אבל פ,קל_אפעל,בינוני_שמן,אין_פעול,אין_שם_פעולה,עתידי_אאמץ,ציווי=אבל # נאבל על זיו העלומים בדח פ,הת עלף פ,הת תפל פ,הפ+,הו פלץ פ,הפ,הת # סלנג מגעיל תרס פ,הפ רגן פ,קל_אפעול,אין_שם_פעולה,אין_פעול #מיושן אצל פ,הפ+,הו בכר פ,פי,הפ #ספרותי בלג פ,הפ,הו נדם פ,קל_אפעול דרם פ,הפ כפש פ,הפ+,הו לאם פ,הפ+,הו לעז פ,הפ סכן פ,הפ סמק פ,הפ,פעול עלל פ,הפ,שמור_עע פלק פ,הפ,אין_שם_פעולה #סלנג יידי פלח פ,פי,הת #סלנג צמת פ,הפ+,הו צמת פ,נפ,אין_שם_פעולה שרץ פ,הפ+,הו,קל_אפעול,אין_פעול אבס פ,הפ+,הו,פעול אנש פ,הפ # ספרות, מטעה מול ענישה פשה פ,קל_אפעל,אין_פעול #ספרותי צבה פ,קל_אפעל,אין_פעול #ספרותי ריק פ,הפ+,הו רחם פ,פי,אין_שם_פעולה,פעול שיף פ,פי,פו,שמור_עו נון פ,פי,פו,הת,שמור_עו חמס פ,קל_אפעול,אין_פעול מרץ פ,הפ+,הו רזה פ,קל_אפעל,בינוני_שמן,אין_פעול,אין_שם_פעולה רזה פ,הפ רנן פ,קל_אפעול,אין_פעול,בינוני_שומר,שם_פעולה=רינה רנן פ,הפ,שמור_עע,אין_שם_פעולה רנן פ,פי,שמור_עע רנן פ,הת יפח פ,הת ירא פ,קל_אפעל+,בינוני_שמן,הת,אין_פעול,אין_שם_פעולה אקלם פ,הת # איקלם/אוקלם חקלאות בלבד. עמלן פ,פי+,פו תדלק פ,פי+,פו טמטם פ,פי+,פו # אירוני משהו לחך פ,פי+,פו,קל_אפעל,אין_פעול תפעל פ,פי+,פו מין פ,פי+,פו,הת,שמור_עו תגמל פ,פי+,פו אלחש פ,פי,פו עכס פ,פי ענטז פ,פי #סלנג מלמל פ,פי המהם פ,פי תארך פ,פי+,פו סנwר פ,פי+,פו,הת אwרר פ,פי+,פו,הת ספרר פ,פי+,פו ספסר פ,פי סנגר פ,פי קטרג פ,פי קנטר פ,פי,פו נאק פ,קל_אפעל,אין_פעול,שם_פעולה=נאקה # לא קשור לגמל סנדל פ,פי,פו שwץ פ,הפ # סלנג שחץ פ,הת יהר פ,הת אגרף פ,פי+,פו,הת פזם פ,פי,פו פזם פ,הת,אין_שם_פעולה אזרח פ,פי+,פו,הת אנפף פ,פי גפף פ,פי,הת,שמור_עע # אולי גם פו גפר פ,פי,פו # כימיה גנדר פ,הת דפדף פ,פי דקלם פ,פי+,פו זנב פ,פי,הת חמצן פ,פי+,פו,הת # כימיה טנף פ,פי+,פו,אין_שם_פעולה לכסן פ,פי+,פו # אלגברה סגף פ,הת עשב פ,פי+ # חקלאות קלטר פ,פי+ #חקלאות פרזל פ,פי שסע פ,פי+,פו,פעול שעתק פ,פי+,פו שרבב פ,פי+,פו,הת שרבט פ,פי+,פו זלף פ,הפ+,הו # פי מיושן ברש פ,הפ+,הו רצן פ,הפ שעל פ,הת שנק פ,נפ,אין_שם_פעולה שנק פ,הת אבך פ,הת #פיסיקה בהם פ,הת מרק פ,פי,פו,הת פחם פ,הת,פי,פו שלק פ,קל_אפעול+ שלק פ,נפ,אין_שם_פעולה כרכם פ,הת כרטס פ,פי מזמז פ,פי,הת # סלנג מצמץ פ,פי שכשך פ,פי,הת שנס פ,פי בסם פ,פי+,פו,הת רבב פ,פי,פו,שמור_עע # הנדסת חשמל בנאם פ,פי,פו # אינטרנציונליזציה מסחר פ,פי+,פו דגר פ,קל_אפעול,אין_פעול,הפ+,הו מהה פ,פעול,שמור_מפיק אבה פ,קל_אפעל,אין_פעול,אין_שם_פעולה גדם פ,קל_אפעול גהר פ,קל_אפעל,אין_פעול # מיושן זוב פ,קל_אפעול חוס פ,קל_אפעול,אין_שם_פעולה מלק פ,קל_אפעול מלק פ,נפ,אין_שם_פעולה מסק פ,קל_אפעול,נפ,אין_פעול,אין_שם_פעולה עלץ פ,קל_אפעול,אין_שם_פעולה,אין_פעול שטם פ,קל_אפעול,אין_פעול,אין_שם_פעולה # מיושן ומטעה מול לסתום שחwה פ,הת מאן פ,פי,אין_שם_פעולה צום פ,קל_אפעול,אין_שם_פעולה עוה פ,שמור_עו,פי,אין_שם_פעולה עwה פ,שמור_עו,הפ קלס פ,הת,פי # להתקלס - ללעוג. לקלס - לפאר שלף פ,קל_אפעול,נפ נחר פ,קל_אפעל,אין_פעול מרר פ,פי,שמור_עע,אין_שם_פעולה קטט פ,הת בעל פ,קל_אפעל+ בעל פ,נפ,אין_שם_פעולה מגר פ,פי+,פו שרת פ,פי+ אנן פ,הת אנן פ,פי,אין_שם_פעולה מסגר פ,פי,פו עגב פ,קל_אפעול,אין_שם_פעולה,אין_פעול פכר פ,קל_אפעול,אין_פעול # רק לפכור ידים. האם להתיר? סכת פ,הפ,אין_שם_פעולה # נראה שיש הסכתה, אבל מאוד נדיר. #משג פ,הפ # פילוסופי מדיי #מצב פ,פי # כלכלי/פרסומי מדיי חשה פ,הפ # למען ציון לא אחשה מעך פ,קל_אפעל,נפ צנזר פ,פי,פו קטם פ,קל_אפעול,נפ כסס פ,קל_אפעול,שמור_עע כסס פ,נפ,אין_שם_פעולה,שמור_עע סרבל פ,פי,פו ניד פ,פי+,הת,שמור_עו אתגר פ,פי,פו מחז פ,הפ,הו מגנט פ,פי,פו,הת אכזר פ,הת תמחר פ,פי,פו # שיווק מצק פ,פי,הת # כימיה עצל פ,הת נמס פ,קל_אפעל,בינוני_שמן,אין_פעול,אין_שם_פעולה # לא פועל תקני! בחל פ,קל_אפעל,אין_פעול,הפ,הו קנס פ,קל_אפעול,אין_פעול קנס פ,נפ,אין_שם_פעולה נקד פ,פי+,פו ארה פ,קל_אפעל,אין_שם_פעולה,אין_פעול # רק לגבי דבש # after 0.5 אנק פ,נפ #ימן פ,הפ,שמור_פי,אין_שם_פעולה #תנכי #שמל פ,הפ #תנכי #ארר פ,קל #תנכי שחלף פ,פי,פו,הת #כימיה, אלגברה לינארית מצע פ,פי,פו קw-נט-ט פ,פי,פו #קwנט פ,פי,פו # הצורה המאושרת ע"י האקמיה לא מוכרת בציבור ומעצבנת באוזן. פל-רט-ט פ,פי שפרץ פ,הפ # סלנג, ויוצא דופן פראי - שורש מרובע בבניין הפעיל?! בעה פ,נפ #מליצי טולי חוב פ,קל_אפעול,אין_שם_פעולה ביל פ,פי,פו,שמור_עו גחן פ,קל_אפעל גלען פ,פי,פו # בישול ארק פ,הפ,הו מזער פ,פי,פו סמא פ,פי,פו,הת צחצח פ,פי,פו שפת פ,קל_אפעול+ # רק לגבי קומקומים שקץ פ,פי+,פו # תנכי לגמרי זיד פ,הפ,אין_שם_פעולה # מאוד מיושן, פרט ל"במזיד" זוד פ,פי,פו,שמור_עו טיב פ,פי,פו,שמור_עו כתת פ,פי,פו,שמור_עע,אין_שם_פעולה לאה פ,הפ+,נפ,אין_שם_פעולה # נפ תנכי. הווה מודרני נשב פ,קל_אפעול,אין_שם_פעולה,אין_פעול,פי # פי ספרותי יבב פ,פי,שמור_עע,אין_שם_פעולה תחבל פ,פי מלל פ,פי,הת,אין_שם_פעולה # טיולי טבע #מלל פ,פי,שמור_עע # גבורות ישראל עבט פ,קל_אפעול,אין_פעול,אין_שם_פעולה חפן פ,קל_אפעול,אין_שם_פעולה פסס פ,קל_אפעול,אין_פעול,אין_שם_פעולה בקבק פ,פי # למזוג לבקבוקים זבל פ,פי,פו משכן פ,פי,פו פגל פ,פי,פו,הת # קלקל, טימא הין פ,הפ # העז #לעע פ,קל_אפעל #ספרותי מדיי כדר פ,הת כדרר פ,פי,הת צמג פ,הת פחס פ,הת,פעול אפנן פ,פי,פו # הנדסת חשמל מדבר פ,פי # גאוגרפיה זוח פ,הפ,הו # ספרותי. אולי כדאי להסיר קלק פ,הפ # סלנג מחשבי סנתז פ,פי,פו דוג פ,קל_אפעול,אין_שם_פעולה דנג פ,פי # לצפות בשעווה מסטל פ,פי,פו,הת # סלנג סנכרן פ,פי,פו,הת יער פ,פי,פו #ערגל פ,פי # גלגול מתכת לצינור שחד פ,פי+,פו שחבר פ,פי,פו # לשון - rewrite עצבב פ,פי,פו # פיזיולוגיה כיר פ,שמור_עו,פי,פו # ייצור כדים פלמר פ,פי,פו # כימיה פסטר פ,פי,פו המגן פ,פי,פו שפעל פ,פי,פו # כימיה רמזר פ,פי,פו # תעבורה מחשב פ,פי,פו כיס פ,פי,פו,שמור_עו פלסף פ,הת הון פ,פי,פו,שמור_עו הנהן פ,פי מרה פ,הפ,אין_שם_פעולה # רק להמרות פה. חצצר פ,פי #חצרץ פ,פי # חצצר בשפה מדוברת יהד פ,פי,פו,הת שלטט פ,פי # זפזופ בין ערוצים #זפזפ פ,פי # סלנג לשלטט. אופס, מה יהיה עם הפ"ה הסופית?? TODO #סקרר פ,פי # סקירה זריזה של ספרים סגנן פ,פי,פו # להוסיף קישוט וסגנון פלמס פ,הת פנצ'ר פ,פי,פו,הת,אין_שם_פעולה # סלנג תשש פ,קל_אפעל,עתיד_חרוק,אין_שם_פעולה כחכח פ,פי צלק פ,הת,פי קלה פ,קל_אפעל קלה פ,נפ,אין_שם_פעולה סלא פ,פו # רק יחסית לזהב. בכyן פ,הת # עממי משהו מנף פ,פי,פו מנף פ,הת,אין_שם_פעולה # כלכלה )עסקי אויר, למען האמת( פרמט פ,פי,פו # ז'רגון מחשבי זנגף פ,הת # כבר מזמן לא שימושי, אבל לזכר שנות השישים... פרשן פ,פי,אין_שם_פעולה # ז'רגון עיתונאי שחצן פ,הת,אין_שם_פעולה # עממי יותר מ"התייהר" תזז פ,פי,פו,שמור_עע # סלנג צבאי צעף פ,הת באס פ,פי,פו,הת # סלנג תרגל פ,פי,פו קמצן פ,הת # עממי נחמד פ,הת # התחזה לנחמד - לא תקני במיוחד נשנש פ,פי # סלנג # אכשר פ,פי # הכשרה, הכנה מראש. לא שימושי קמח פ,פי,פו # רק במטבח יחצן פ,פי,פו,שמור_פי,שם_פעולה=ייחצון הנדס פ,פי,פו # חדש צברח פ,פי,פו,הת # סלנג ישן פיח פ,פי,פו,שמור_עו גלwן פ,פי,פו # ציפוי אבץ לברזל עפש פ,פי,פו,הת # ספרותי קצת פכה פ,פי # מעיינות קרקש פ,פי # סתם אונומטופיאה? ברז פ,הפ,הו # יצירת בורג/הברגה, וגם סלנג להתחפפות תשאל פ,פי,פו #רק במשטרה תמלל פ,פי,פו מרכז פ,פי,פו # בעיקר עיבוד תמלילים אחזר פ,פי,פו # מסדי נתונים # דור פ,פי,פו,שמור_עו # שיווק ודוורות # כמס פ מה התרגום של אנקפסולציה? פי,פו -או- הפ,הו? # עיל פ,פי,פו,שמור_עו # רישום ערך במילון תחזק פ,פי,פו תרה פ,הפ,הו,שם_פעולה=התראה צוח פ,קל_אפעל,שמור_עו,שם_פעולה=צווחה,אין_פעול # פי ספרותי מדיי דגמן פ,פי,אין_שם_פעולה #מקק פ,נפ,אין_שם_פעולה # בעיקר בכלא # הושלך למוזרים דבג פ,פי,פו # סלנג מחשביסטי חנטרש פ,פי # סלנג שפן פ,הת # סלנג? תדרך פ,פי,פו משמש פ,פי,פו # קווץ' #שגל פ,פי אהל פ,הפ נאה פ,הת נול פ,הת,שמור_עו # הפך למנוול #רמש פ,קל_אפעול # תנכי מידיי שגג פ,קל_אפעול,שמור_עע מקצע פ,הת #דשא פ,הפ # תנכי מחזר פ,פי,פו,הת חרמן פ,פי,הת # סלנג לא מנומס עלק פ,הת # סלנג שנורר פ,פי,נסתר,אין_שם_פעולה #TODO ההטיה מצליחה במקרה! פקשש פ,פי,הת # סלנג גרען פ,פי,פו,הת עקצץ פ,פי דסקס פ,פי # סלנג הדס פ,פי # ספרותי תקלט פ,פי # to D.J. מלצר פ,פי # לעבוד כמלצר מרפק פ,פי # סלנג, פילס דרך באלימות ארגונית תמרר פ,פי,פו # מחלקת התנועה רוקן פ,נסתר,פי,פו # יותר יפה מלשים בתוך קובץ המוזרים. התרוקן פ,נסתר,הת שרג פ,הת # בעיקר גפנים תמרץ פ,פי,פו תצפת פ,פי,אין_שם_פעולה # צבאי, פו יותר מדי צבאי נכס פ,פי,פו לוט פ,הפ,הו חנחן פ,הת #פקס פ,פי,פו # עדיף מיקד/מוקד פקסס פ,פי # סלנגי רפט פ,הת טפף פ,פי # ספרותי ומטעה מול תיפוף #מקף פ,פי # לשונאי קרנף פ,הת ארכב פ,פי+,פו צפד פ,הת # ספרותי #עפר פ,פי #כיסה בעפר זגג פ,פי,פו,שמור_עע # רק עוגות? #תלע פ,הפ,אין_שם_פעולה # עלתה בו רימה ותולעה #מלל פ,פי,שמור_עע,אין_שם_פעולה # גבורות ישראל #דוה פ,קל_אפעול,שמור_עו,אין_שם_פעולה #קטנן פ,הת אנגלז פ,פי #אפסן פ,פי,פו,אין_שם_פעולה #אפסר פ,פי # לקשור בהמה #מקסם פ,פי,פו #מנם פ,פי,אין_שם_פעולה # רק רוני רוט #סמפל פ,פי,פו # סלנג מוזיקאי #גגל פ,פי # אני מתערב שהפועל הזה לא ייקלט #שנקר פ,הת # סלנג יפה ברגן פ,הת #מסכן פ,הת פרקד פ,הת תעתק פ,פי,פו # לשונאי מדר פ,פי,פו # ביטחוניסטי רשף פ,קל_אפעול,אין_שם_פעולה # ספרותי רבד פ,פי,פו,הת # הניח בשכבות, גאולוגיה תאגד פ,פי,פו # הפך לקורפורציה פוש פ,קל_אפעול,אין_שם_פעולה,אין_פעול,אין_בינוני,אין_עבר,אין_ציווי בלף פ,פי,אין_שם_פעולה # סלנג סלבט פ,הת #סלנג כיף פ,פי,שמור_עו צ'פר פ,פי,פו,אין_שם_פעולה #סלנג תחמן פ,פי # סלנג # נכנעתי לאיות בחית, למרות הדמיון במשמעות ל"מכמונת". כמן פ,הפ,הו # ספרותי גרז פ,פי,פו סמלץ פ,פי,פו #סלנג הנדסי: simulate פקטר פ,פי,פו #סלנג מתמטי: factorize #פנן פ,הת # סלנג גבס פ,פי,פו # לעטוף בגבס יwן פ,פי,הת #זור פ,הפ,הו # מינוח ספרותי #טרם פ,הפ,הו # הציג מראש, בא לפני. מבלבל מול תרם כתף פ,הפ #,הו # צבאי, שם על כתף ערסל פ,הת חספס פ,פי,פו אזק פ,קל_אפעול,נפ ג'יף פ,הת,שמור_עו קרקף פ,פי,פו תסרט פ,פי,פו,אין_שם_פעולה תקצר פ,פי,פו,אין_שם_פעולה שבלל פ,הת חלזן פ,הת עמם פ,הו,הפ ערגל פ,פי,פו פדר פ,פי hspell-1.4/find_sizes.c0000444000076600007650000000056207771332502013165 0ustar nyhrl/* Copyright (C) 2003 Nadav Har'El and Dan Kenigsberg */ #include #include #include #include "dict_radix.h" #include int main(int argc, char *argv[]) { struct dict_radix *dict = new_dict_radix(); allocate_nodes(dict, 200000, 100000, 10000); read_dict(dict, NULL); print_sizes(dict); print_stats(dict); return 0; } hspell-1.4/biza-nouns.hif0000644000076600007650000000074310321702367013437 0ustar nyhrl# The following are unique ways to inflect nouns that wolig.pl doesn't yet # support. # In all these cases, wolig.pl already produces a bunch of more "normal" # inflections, but we want to add here one useful, exceptional, inflection. ----- מים ע,ז,רבים מי ע,ז,רבים,סמיכות ----- רע ע,ז,יחיד רעהו ע,ז,יחיד,של/הוא ----- אב ע,ז,יחיד אביהו ע,ז,יחיד,של/הוא ----- קצה ע,ז,יחיד קצווי ע,ז,רבים,סמיכות ----- בעל ע,ז,יחיד,סמיכות בעלי ע,ז,רבים,סמיכות בעלת ע,נ,יחיד,סמיכות בעלות ע,נ,רבים,סמיכות hspell-1.4/genprefixes.pl0000544000076600007650000000445507724471432013552 0ustar nyhrl#!/usr/bin/perl -w require "PrefixBits.pl"; sub find_prefixes { my $INQUISITIVE_HE=shift; my ($mask,$prefix); my %prefixes; foreach $W ('','ו'){ foreach $S ('','ה','ש'){ foreach $K ('','כש','מש','לכש'){ foreach $k ('','כ'){ foreach $B ('','ב','ה','כ','ל','מ','מה'){ next if (!$INQUISITIVE_HE && $S eq 'ה'); next if ($k eq 'כ' && $B eq 'ה'); $prefix = "$W$S$K$k$B"; $mask = $PS_MISC; $mask |= $PS_L if $B =~ m/[בכלמ]$/; $mask |= $PS_B if $prefix =~ m/^ו?ש?ב$/; $mask |= $PS_VERB if ($k eq "" && $B eq ""); $mask |= $PS_NONDEF if $B !~ m/ה$/; $prefixes{$prefix} = 0 if !defined $prefixes{$prefix}; $prefixes{$prefix} |= $mask; } } } } } foreach $W ('','ו'){ foreach $S ('','ה','ש'){ foreach $K ('','כש','מש','לכש'){ foreach $B ('','ב','ל','מ'){ foreach $k ('','כ'){ next if (!$INQUISITIVE_HE && $S eq 'ה'); $prefix = "$W$S$K$B$k"; $mask = $PS_MISC; $mask |= $PS_L if $B =~ m/[בכלמ]$/; $mask |= $PS_B if $prefix =~ m/^ו?ש?ב$/; $mask |= $PS_VERB if ($k eq "" && $B eq ""); $mask |= $PS_NONDEF if $B !~ m/ה$/; $prefixes{$prefix} = 0 if !defined $prefixes{$prefix}; $prefixes{$prefix} |= $mask; } } } } } foreach $B ('ב','ל'){ $prefix = "מ$B"; $mask = $PS_MISC; $mask |= $PS_L if $B =~ m/[בכלמ]$/; $mask |= $PS_B if $prefix =~ m/^ו?ש?ב$/; $mask |= $PS_NONDEF if $B !~ m/ה$/; $prefixes{$prefix} = 0 if !defined $prefixes{$prefix}; $prefixes{$prefix} |= $mask; } $prefixes{""} |= $PS_IMPER; $prefixes{"ו"} |= $PS_IMPER; return %prefixes; } print "/* This file is automatically generated by genprefixes.pl.\n"; print " DO NOT EDIT THIS FILE DIRECTLY!\n */\n\n"; # Prefix list without He Ha-She'ela (but with He Ha-Yedi`a, of course) my %prefixes = find_prefixes(0); print "static char *prefixes_noH[]={"; foreach (sort keys %prefixes) {print "\"$_\",\n"} print "0};\n"; print "static int masks_noH[]={"; foreach (sort keys %prefixes) {print "$prefixes{$_},\n"} print "-1};\n"; # Output the same thing, but with He Ha-She'ela... %prefixes = find_prefixes(1); print "static char *prefixes_H[]={"; foreach (sort keys %prefixes) {print "\"$_\",\n"} print "0};\n"; print "static int masks_H[]={"; foreach (sort keys %prefixes) {print "$prefixes{$_},\n"} print "-1};\n"; hspell-1.4/wolig.pl0000755000076600007650000007450512465405227012360 0ustar nyhrl#!/usr/bin/perl -w # # Copyright (C) 2000-2015 Nadav Har'El, Dan Kenigsberg # use Carp; use FileHandle; my $detailed_output=0; my $detail_prefix; # This arrays will be useful later to convert ordinary letters into final, # and vice-versa. my %fin = ('כ'=>'ך', 'מ'=>'ם', 'נ'=>'ן', 'פ'=>'ף', 'צ'=>'ץ'); my %nif = ('ך'=>'כ', 'ם'=>'מ', 'ן'=>'נ', 'ף'=>'פ', 'ץ'=>'צ'); sub outword { my $word = shift; my $details = shift; # "*" sign used to signify non-existant word that should not be output. # It will allow us to more-easily drop words without huge if()s. return if $word =~ m/^\*/; # change otiot-sofiot in the middle of the word # (the silly a-z was added for our special "y" and "w" marks). # (the ('?) and $2 are for סנדוויץ', סנדוויצ'ים) $word =~ s/([ךםןףץ])('?)(?=[א-תa-z])/$nif{$1}$2/go; # change special consonant marks into the proper Hebrew letters, using # proper ktiv male rules. # Note that the order of these conversion is important. Since they have # the potential of changing so many words, it is highly recommended to # diff the output files before and after the change, to see that no # unexpected words got changed. # The vowel markers 'a' and 'e' do nothing except to a yud (chirik male) - # which turns it into a consonant yud; For example your(feminine) צי is # צייך (tsere in the yud, so it's a consonant and doubled) and # your(masculine) צי is ציך (yud is chirik male, and not doubled) $word =~ s/י[ea]/y/go; $word =~ s/[ea]//go; # The vowel 'i' is a chirik chaser - it should be followed by a yud if # necessary. We do nothing with it currently - it's only useful for words # like סנאiי where we want to make sure that wolig.pl does not think this # is the normal patach-aleph-yud (with no niqqud under the aleph) case as # in תנאי. # The first rule here is useful for transformation from שני to שנייה, via # שני adj-inword> שנiי feminine> שנiיaה outword> שנiyה outword> שנייה $word =~ s/iy/יי/go; # useful in stuff like שנiי - שנייה $word =~ s/i//go; # Y is the same as y, except it is not translated to a double-yud (but rather # to a single yud) when it is the last letter of the word. It's used in words # like חולי in which the original form of the word has a chirik male, but in # all the inflections the yud from the chirik becomes a fully-fleged # consonant. We do not need a similar trick for vav (w), because the # Academia's rules do not do anything to a vav at the end of the word, # contrary to what happens to a yud. # I'm not sure this trick is "kosher" (based on the language), but it does # work... $word =~ s/Y($|(?=-))/י/go; # Y's at the end of the word $word =~ s/Y/y/go; # the rest of the Y's are converted to y's # The first conversion below implements the akademia's rule that a chirik # before a yו should not be written with a י. So we convert יyו into יו. # IDEA: to be more certain that the first י functions as a chirik, it would # have been better to use the i character: in addition to the יה -> yה rule # we have in the beginning of processing a word, we should do ייה -> iyה. # Then here the rule would convert iyו, not יyו. [but everything is working # well even without this idea] $word =~ s/יyו/יו/go; $word =~ s/(?<=[^ויy])y(?=[^ויyה]|$)/יי/go; $word =~ s/y/י/go; # otherwise, just one yud. # The first conversion below of וw to ו has an interesting story. In the # original Hebrew, the consonant ו sounded like the English w or Arabic # waw. An "u" sound (a kubuts, which we mark by ו) followed by this w # sound sounded like a long "u", which was later written with a shuruk, # i.e., one vav. This conversion is very useful for understanding how the # word שוק is inflected (see explanation in wolig.dat). $word =~ s/וw/ו/go; $word =~ s/(?<=[^וw])w(?=[^וw-])/וו/go; # if vav needs to be doubled, do it $word =~ s/w/ו/go; # otherwise, just one vav. # A consonant ה (h) is always output as a ה. The only reason we are # interested in which ה is consonant is to allow the rules earlier to double # yud next to a consonant ה (i.e.. h), but not next to a em-kria ה. # For example, compare אריה (lion) and ארייה (her lion). $word =~ s/h/ה/go; if($detailed_output && defined($details)){ $word =~ s/-$//; # smichut is already known by the details... $word .= " ".$detail_prefix.$details; } print $word."\n"; } sub inword { # For some combinations of אהוי at the end or beginning of a word, we can # immediately guess that these must be consonants (and not vowels) and make # use of that knowledge by changing the Hebrew letters into the markers # "w", "y" we use for consonants ו and י respectively. # # This function takes a word as inputted from wolig.dat, presumably written # in ktiv male, and makes a few predictions, such as that a vav in the # beginning of the word must be a consonant. Predictions that appear here # must have two traits: # 1. They must be useful for the correct inflection of some word. # For example, realising that the וו at the end of מזווה is a consonant # help us later avoid the false inflection מזווו and instead generate # the correct מזוו. # 2. They must be correct in 100% of the cases. For example, a rule saying # that every appearance of וו in the input is a consonant (w) is wrong, # because of words like ציווי. # However, the rules only have to "appear" correct (for all the actual # words in wolig.dat), not necessarily be linguisticly correct. For # example, we'll see below a rule that a ו at the end of a word is a # consonant (w). This is indeed true for most nouns (צו, מקווקו), but not # for אחו. However, all of אחו's inflections have a consonant vav, and in # the word itself we don't really care about mislabeling it "consonant" # because a vav at the end of the word isn't doubled anyway under the # Academia's rules. # # Actually the second rule can be relaxed a bit if we provide alternative # ways to input a certain construct. For example, if "u" could signify a # vowel vav in the input, then we wouldn't really care if in a few rare cases # we wrongly decide a certain vav to be consonant: the user could override # this decision by putting a "u" explicitly, instead of the vav, in the # input file. my $word = shift; if(substr($word,0,1) eq "ו"){ # A word cannot start with a shuruk or kubuts! substr($word,0,1)="w"; } if(substr($word,-4,4) eq "וויה"){ # A word like חוויה, הלוויה, טריוויה. I can't imagine any base noun (or # adjective) for which such a double-vav isn't a consonant but rather # a vav and shuruk. substr($word,-4,2)="w"; } if(substr($word,-1,1) eq "ו"){ # This vav is a consonant (see comment above about why the few exceptions # that do exist don't bother us). substr($word,-1,1)="w"; } elsif(substr($word,-3,3) eq "ווה"){ # If the word ends with ווה, the user wrote in ktiv male and intended # a consonant vav. Replace the וו by the character "w", which will be # doubled if necessary (for ktiv male) by outword. This change actually # makes a difference for the סגול_ה with ות cases: for example, the # word מקווה has a plural מקוות and his-possesive מקוו. Without this # change, we get the incorrect possesive מקווו and plural מקווות. # Similarly it is needed for the adjective נאווה's correct feminine plural. substr($word,-3,2)="w"; } elsif(substr($word,-2,2) eq "יה"){ substr($word,-2,1)="y"; # TODO: maybe convert ייה (in ktiv male, e.g., סופגנייה) into iyה. # see outword above on a discussion about that. But everything also # works without this change. } return $word; } ############################################################################# my ($fh,$word,$optstring,%opts); my $infile; if($#ARGV < 0){ $infile="wolig.dat"; } else { if($ARGV[0] eq "-d"){ $detailed_output=!$detailed_output; shift @ARGV; } $infile=$ARGV[0]; } $fh = new FileHandle $infile, "r" or croak "Couldn't open data file $infile for reading"; while(<$fh>){ print if /^#\*/; # print these comments. chomp; s/#.*$//o; # comments start with '#'. next if /^[ ]*$/o; # ignore blank lines. ($word,$optstring)=split; die "Type of word '".$word."' was not specified." if !defined($optstring); undef %opts; my $val; foreach $opt (split /,/o, $optstring){ ($opt, $val) = (split /=/o, $opt); $val = 1 unless defined $val; $opts{$opt}=$val; } if($opts{"ע"}){ ############################# noun ###################################### # Shortcuts if($opts{"אין_נטיות"}){ $opts{"יחיד"}=1; $opts{"אין_נטיות_יחיד"}=1; } if($opts{"אין_כינויים"}){ $opts{"אין_כינויי_יחיד"}=1; $opts{"אין_כינויי_רבים"}=1; } # note that the noun may have several plural forms (see, for example, # אות). When one of the plural forms isn't explicitly specified, wolig # tries to guess, based on simplistic heuristics that work for the majority # of the nouns (84% of them, at one time I counted). my $plural_none = $opts{"יחיד"} || substr($word,-3,3) eq "יות"; my $plural_bizarre = exists($opts{"רבים"}); my $plural_implicit = !($opts{"ות"} || $opts{"ים"} || $opts{"יות"} || $opts{"אות"} || $opts{"יים"} || $plural_none || $plural_bizarre); my $plural_iot = $opts{"יות"} || ($plural_implicit && (substr($word,-2,2) eq "ות")); my $plural_xot = $opts{"אות"}; my $plural_ot = $opts{"ות"} || ($plural_implicit && !$plural_iot && (substr($word,-1,1) eq "ה" || substr($word,-1,1) eq "ת" )); my $plural_im = $opts{"ים"} || ($plural_implicit && !$plural_ot && !$plural_iot); my $plural_iim = $opts{"יים"}; # Find gender for detailed output. This has nothing to do with word # inflection, it's just an added value of wolig.pl... if($detailed_output){ my $gender; if($opts{"זכר"}){ if($opts{"נקבה"}){ $gender="ז,נ"; } else { $gender="ז"; } } elsif($opts{"נקבה"}){ $gender="נ" } elsif($opts{"סגול_ה"}){ $gender="ז"; } elsif((substr($word,-1,1) eq "ה") && !$opts{"אבד_ו"}){ $gender="נ"; } elsif(substr($word,-1,1) eq "ת" && !$opts{"ים"}){ $gender="נ"; } else { $gender="ז"; } $detail_prefix="$gender,"; } # preprocess the word the user has given, converting certain ktiv male # constructs into markers (w, y) that we can better work with later (see # comments in inword() about what it does). $word=inword($word); # related singular noun forms if(exists $opts{"נפרד"}){ outword $opts{"נפרד"}, "ע,יחיד"; # explicit override of the nifrad } elsif(!$opts{"אין_יחיד"}){ outword $word, "ע,יחיד"; # the singular noun itself } if($opts{"אבד_י"}){ # in words like עיפרון and היריון the first yud (coming from chirik # or tsere in ktiv male) is lost in all but the base word $word =~ s/י//o; } my $smichut=$word; if($opts{"אין_יחיד"} || $opts{"אין_נטיות_יחיד"}){ # We mark the singular words with "*", telling outword to drop them. # This makes the code look cleaner than a huge if statement around all # the singular code. Maybe in the future we should move the singular # inflection code to a seperate function, if() only around that, and # stop all that "*" nonsense. $smichut="*".$smichut; } #my $smichut_orig=$smichut; if($opts{"מיוחד_אח"}){ # special case: # אח, אב, חם, פה include an extra yod in the smichut. Note that in the # first person singular possessive, we should drop that extra yod. # For a "im" plural, it turns out to be the same inflections as the # plural - but this is not the case with a "ot" plural. # Interestingly, the yud in these inflections is always a chirik # male - it is never consonantal (never has a vowel on it). if(substr($smichut,-1,1) eq "ה"){ # Remove the ה. Basically, only one word fits this case: פה $smichut=substr($smichut,0,-1); # And add the extra third-person masuline possesive (just like the # סגול_ה case, but we don't bother to check for the סגול_ה flag here). outword $smichut."יהו", "ע,יחיד,של/הוא"; } outword $smichut."י-", "ע,יחיד,סמיכות"; # smichut outword $smichut."י", "ע,יחיד,של/אני"; # possessives (kinu'im) outword $smichut."ינו", "ע,יחיד,של/אנחנו"; outword $smichut."יך", "ע,יחיד,של/אתה"; outword $smichut."יך", "ע,יחיד,של/את"; outword $smichut."יכם", "ע,יחיד,של/אתם"; outword $smichut."יכן", "ע,יחיד,של/אתן"; outword $smichut."יו", "ע,יחיד,של/הוא"; outword $smichut."יה", "ע,יחיד,של/היא"; outword $smichut."יהן", "ע,יחיד,של/הן"; outword $smichut."יהם", "ע,יחיד,של/הם"; } else { if(!$opts{"סגול_ה"}){ # replace final ה by ת, unless סגול_ה option if(substr($smichut,-1,1) eq "ה" && !$opts{"סגול_ה"}){ substr($smichut,-1,1)="ת"; } } if(exists($opts{"נסמך"})){ outword $opts{"נסמך"}."-", "ע,יחיד,סמיכות"; } else { outword $smichut."-", "ע,יחיד,סמיכות"; # smichut } if($opts{"מיוחד_שן"}){ # academia's ktiv male rules indicate that the inflections of שן # (at least the plural is explicitly mentioned...) should get an # extra yud - to make it easy to distinguish from the number שניים. substr($smichut,0,-1)=substr($smichut,0,-1).'י'; substr($word,0,-1)=substr($word,0,-1).'י'; } if(substr($word,-2,2) eq "אי" && length($word)>2){ # in words ending with patach and then the imot kria aleph yud, # such as תנאי and גבאי, all the inflections (beside the base word # and the smichut) are as if the yud wasn't there. # Note that words ending with אי but not patach, like אי and סנאי, # should not get this treatment, so there should be an option to turn # it off. substr($word,-1,1)=""; substr($smichut,-1,1)=""; } # Note that the extra vowel markers, 'a' and 'e' are added for mele'im # ending with yud (e.g., אי) - this vowel attaches to the yud and makes # the yud a consonant. This phenomenon is handled in outword. my $no_ah=0; if($opts{"סגול_ה"}){ # the ה is dropped from the singular inflections, except one alternate # inflection like מורהו (the long form of מורו): # (there's another femenine inflection, מורה with kamats on the he, # but this is spelled the same (as מורה with mapik) without niqqud so # we don't need to print it again). if(substr($smichut,-1,1) eq "ה"){ $smichut=substr($smichut,0,-1); } unless ($opts{"אין_כינויי_יחיד"}){ outword $smichut."ehו", "ע,יחיד,של/הוא"; } # TODO: maybe add the "eha" inflection? But it won't generate anything # different from the ah below... #outword $smichut."eha" unless $no_ah; } unless ($opts{"אין_כינויי_יחיד"}){ outword $smichut."י", "ע,יחיד,של/אני"; # possessives (kinu'im) outword $smichut."eנו", "ע,יחיד,של/אנחנו"; outword $smichut."ך", "ע,יחיד,של/אתה"; outword $smichut."eך", "ע,יחיד,של/את"; outword $smichut."כם", "ע,יחיד,של/אתם"; outword $smichut."כן", "ע,יחיד,של/אתן"; outword $smichut."ו", "ע,יחיד,של/הוא"; outword $smichut."ah", "ע,יחיד,של/היא"; outword $smichut."aן", "ע,יחיד,של/הן"; outword $smichut."aם", "ע,יחיד,של/הם"; } } # related plural noun forms # note: don't combine the $plural_.. ifs, nor use elsif, because some # nouns have more than one plural forms. if($plural_im){ my $xword=$word; if(substr($xword,-1,1) eq "ה" && !$opts{"שמור_ת"}){ # remove final "he" (not "tav", unlike the "ot" pluralization below) # before adding the "im" pluralization, unless the שמור_ת option was # given. $xword=substr($xword,0,-1); } my $xword_orig=$xword; if($opts{"אבד_ו"}){ # when the אבד_ו flag was given,we remove the first "em kri'a" from # the word in most of the inflections. (see a discussion of this # option in wolig.dat). $xword =~ s/ו//o; } outword $xword."ים", "ע,רבים"; $smichut=$xword; my $smichut_orig=$xword_orig; unless ($opts{"אין_נטיות_רבים"}){ outword $smichut_orig."י-", "ע,רבים,סמיכות"; # smichut } # (We write patach followed by a consonant yud as "y", and later this will # give us the chance to automatically double it as necessary by the # Academia's ktiv male rules) unless ($opts{"אין_כינויי_רבים"}||$opts{"אין_נטיות_רבים"}){ outword $smichut."y", "ע,רבים,של/אני"; # possessives (kinu'im) outword $smichut."ינו", "ע,רבים,של/אנחנו"; outword $smichut."יך", "ע,רבים,של/אתה"; outword $smichut."yך", "ע,רבים,של/את"; outword $smichut_orig."יכם", "ע,רבים,של/אתם"; outword $smichut_orig."יכן", "ע,רבים,של/אתן"; outword $smichut."יו", "ע,רבים,של/הוא"; outword $smichut."יה", "ע,רבים,של/היא"; outword $smichut_orig."יהן", "ע,רבים,של/הן"; outword $smichut_orig."יהם", "ע,רבים,של/הם"; } } if($plural_iim || $opts{"זוגי"}){ # The difference between זוגי and יים is that זוגי adds only the "יים" # plural, while יים adds the plural and its inflections. For example, # for שנתיים, יומיים, שעתיים, שבועיים, נקודתיים, one would never say # שנתיי (my two years); On the other hand for other words יים and all # the inflections it implies makes sense, e.g., consider ציפורניים, # שפתיים, קרניים. my $xword=$word; if(substr($xword,-1,1) eq "ה"){ # Change final he into tav before adding the "iim" pluralization. $xword=substr($xword,0,-1)."ת"; } my $xword_orig=$xword; outword $xword."yם", "ע,רבים"; $smichut=$xword; my $smichut_orig=$xword_orig; unless ($opts{"אין_נטיות_רבים"} || !$plural_iim){ outword $smichut_orig."י-", "ע,רבים,סמיכות"; # smichut } unless ($opts{"אין_כינויי_רבים"}||$opts{"אין_נטיות_רבים"} || !$plural_iim){ outword $smichut."y", "ע,רבים,של/אני"; # possessives (kinu'im) outword $smichut."ינו", "ע,רבים,של/אנחנו"; outword $smichut."יך", "ע,רבים,של/אתה"; outword $smichut."yך", "ע,רבים,של/את"; outword $smichut_orig."יכם", "ע,רבים,של/אתם"; outword $smichut_orig."יכן", "ע,רבים,של/אתן"; outword $smichut."יו", "ע,רבים,של/הוא"; outword $smichut."יה", "ע,רבים,של/היא"; outword $smichut_orig."יהן", "ע,רבים,של/הן"; outword $smichut_orig."יהם", "ע,רבים,של/הם"; } } if($plural_ot){ my $xword=$word; if(substr($xword,-1,1) eq "ה" || substr($xword,-1,1) eq "ת"){ # remove final "he" or "tav" before adding the "ot" pluralization, # unless the שמור_ת option was given. if(!$opts{"שמור_ת"}){ $xword=substr($xword,0,-1); } } if($opts{"אבד_ו"}){ # In segoliim with cholam chaser chat that inflect like feminines # (i.e., the plural_ot case), the cholam is lost *only* in the base # plural, not in other plural inflection. This is comparable to the # inflections of the word מלכה, where the patach is lost only in the # base plural. # See for example גורן, דופן. my $tmp = $xword; $tmp =~ s/ו//o; outword $tmp."ות", "ע,רבים"; } else { outword $xword."ות", "ע,רבים"; } $smichut=$xword."ות"; unless ($opts{"אין_נטיות_רבים"}){ outword $smichut."-", "ע,רבים,סמיכות"; # smichut } unless ($opts{"אין_כינויי_רבים"}||$opts{"אין_נטיות_רבים"}){ outword $smichut."y", "ע,רבים,של/אני"; # possessives (kinu'im) outword $smichut."ינו", "ע,רבים,של/אנחנו"; outword $smichut."יך", "ע,רבים,של/אתה"; outword $smichut."yך", "ע,רבים,של/את"; outword $smichut."יכם", "ע,רבים,של/אתם"; outword $smichut."יכן", "ע,רבים,של/אתן"; outword $smichut."יו", "ע,רבים,של/הוא"; outword $smichut."יה", "ע,רבים,של/היא"; outword $smichut."יהן", "ע,רבים,של/הן"; outword $smichut."יהם", "ע,רבים,של/הם"; } } if($plural_iot){ my $xword=$word; if(substr($xword,-1,1) eq "ה" || substr($xword,-1,1) eq "ת"){ # remove final "he" or "tav" before adding the "iot" pluralization, # unless the שמור_ת option was given. if(!$opts{"שמור_ת"}){ $xword=substr($xword,0,-1); } } outword $xword."יות", "ע,רבים"; $smichut=$xword."יות"; unless ($opts{"אין_נטיות_רבים"}){ outword $smichut."-", "ע,רבים,סמיכות"; # smichut } unless ($opts{"אין_כינויי_רבים"}||$opts{"אין_נטיות_רבים"}){ outword $smichut."y", "ע,רבים,של/אני"; # possessives (kinu'im) outword $smichut."ינו", "ע,רבים,של/אנחנו"; outword $smichut."יך", "ע,רבים,של/אתה"; outword $smichut."yך", "ע,רבים,של/את"; outword $smichut."יכם", "ע,רבים,של/אתם"; outword $smichut."יכן", "ע,רבים,של/אתן"; outword $smichut."יו", "ע,רבים,של/הוא"; outword $smichut."יה", "ע,רבים,של/היא"; outword $smichut."יהן", "ע,רבים,של/הן"; outword $smichut."יהם", "ע,רבים,של/הם"; } } if($plural_xot){ my $xword=$word; if(substr($xword,-1,1) eq "ה" || substr($xword,-1,1) eq "ת"){ # remove final "he" or "tav" before adding the "xot" pluralization, # unless the שמור_ת option was given. if(!$opts{"שמור_ת"}){ $xword=substr($xword,0,-1); } } outword $xword."אות", "ע,רבים"; $smichut=$xword."אות"; unless ($opts{"אין_נטיות_רבים"}){ outword $smichut."-", "ע,רבים,סמיכות"; # smichut } unless ($opts{"אין_כינויי_רבים"}||$opts{"אין_נטיות_רבים"}){ outword $smichut."y", "ע,רבים,של/אני"; # possessives (kinu'im) outword $smichut."ינו", "ע,רבים,של/אנחנו"; outword $smichut."יך", "ע,רבים,של/אתה"; outword $smichut."yך", "ע,רבים,של/את"; outword $smichut."יכם", "ע,רבים,של/אתם"; outword $smichut."יכן", "ע,רבים,של/אתן"; outword $smichut."יו", "ע,רבים,של/הוא"; outword $smichut."יה", "ע,רבים,של/היא"; outword $smichut."יהן", "ע,רבים,של/הן"; outword $smichut."יהם", "ע,רבים,של/הם"; } } if($plural_bizarre){ # User specified plural for bizarre cases; For example, the plural of # צל is צללים, the plural of בת is בנות. # We take the fully formed plural from the user, and may need to take # of the ending to guess the smichut and possesives (letting the user # override the smichut forms too). my $plural=$opts{"רבים"}; #outword $plural, "ע,רבים"; outword((exists($opts{"נפרדים"}) ? $opts{"נפרדים"} : $plural), "ע,רבים"); # Overriding the plural nishmach with the נסמכים option: David Yalin, # In his book דקדוק הלשון העברית (1942) explains in page 207 how some # of the kinuyim are known as "kinuyey hanifrad" and some "kinuyey # hanishmach" because when the nismach and nifrad differ, they follow # different ones. This is important for words like תיש, and in fact # the אבד_ו option does basically the same thing. my $smichut_orig; unless ($opts{"אין_נטיות_רבים"}){ if(substr($plural,-2,2) eq "ות"){ $smichut_orig= exists($opts{"נסמכים"}) ? $opts{"נסמכים"} : $plural; # as David Yalin explains (ibid.): "צריך להעיר כי בשמות שסימן הריבוי # שלהם הוא -ות נוטים כל כינויי הרבים אחרי צורת הסמיכות". $smichut=$smichut_orig; outword $smichut_orig."-", "ע,רבים,סמיכות"; # smichut } elsif(substr($plural,-2,2) eq "ים" || substr($plural,-2,2) eq "ין"){ $smichut=substr($plural,0,-2); # the removal of the final yod from נסמכים is a bit silly... maybe # we should have had a מקור_נסמכים option and ask it without yod. $smichut_orig= exists($opts{"נסמכים"}) ? substr($opts{"נסמכים"},0,-1) : $smichut; outword $smichut_orig."י-", "ע,רבים,סמיכות"; # smichut } else { #die "Plural given for $word is of unrecognized form: $plural."; # An unrecognized plural form, so we don't know how to construct the # construct forms from it. Just ignore them. $opts{"אין_כינויי_רבים"}=1; } } unless ($opts{"אין_כינויי_רבים"}||$opts{"אין_נטיות_רבים"}){ outword $smichut."y", "ע,רבים,של/אני"; # possessives (kinu'im) outword $smichut."ינו", "ע,רבים,של/אנחנו"; outword $smichut."יך", "ע,רבים,של/אתה"; outword $smichut."yך", "ע,רבים,של/את"; outword $smichut_orig."יכם", "ע,רבים,של/אתם"; outword $smichut_orig."יכן", "ע,רבים,של/אתן"; outword $smichut."יו", "ע,רבים,של/הוא"; outword $smichut."יה", "ע,רבים,של/היא"; outword $smichut_orig."יהן", "ע,רבים,של/הן"; outword $smichut_orig."יהם", "ע,רבים,של/הם"; } } } elsif($opts{"ת"}){ ############################# adjective ################################## $detail_prefix=""; # preprocess the word the user has given, converting certain ktiv male # constructs into markers (w, y) that we can better work with later (see # comments in inword() about what it does). $word=inword($word); # A preprocessing rule special for adjectives: a final yud will always be # a chirik male, not some sort of consonant yud or another vowel. Together # with the iy post-transformation in outword, this makes שני - שנייה work # correctly. However, when the word ends with וי (and not ווי) we assume # this is shuruk followed by a consonant yud (for example, מצוי). In # words that do end in ווי and the וו is not a consonant we must use a # w explictly, (e.g. רווי should be written explictly as רwוי). if($word =~ m/([^aeiו]|וו)י$/o){ substr($word,-1,1) = "iי"; } my $xword=$word; if(substr($xword,-1,1) eq "ה"){ # remove final "he" before adding the pluralization, # unless the שמור_ה option was given. if(!$opts{"שמור_ה"}){ $xword=substr($xword,0,-1); } } if($opts{"עם"}){ # For nationality adjectives (always adding in yud!), there is a seperate # plural for the people of that nationality (rather than other objects # from that country), with only ם added. There's also a country name, # and sometimes a female-person form too (נקבה_ה). We these here, # instead of seperately in extrawords, so that the country list can be # organized nicely at one place. if(exists($opts{"ארץ"})){ outword $opts{"ארץ"}, "ע,פרטי,נ" if($opts{"ארץ"} ne "") # country name } elsif(substr($word,-3,3) eq "אiי"){ outword substr($word,0,-3)."ה", "ע,פרטי,נ"; # country name } else { $country = $word; $country =~ s/i?י$//; $country =~ s/([כמנפצ])$/$fin{$1}/; outword $country, "ע,פרטי,נ"; # country name } outword $word."ם", "ע,רבים,ז"; # plural (people of that nationality) $opts{"נקבה_ת"}=1; # for enabling ת plural. adding ה plural is optional. } if(!exists($opts{"יחיד"})){ outword $word, "ת,יחיד,ז"; # masculin, singular outword $word."-", "ת,יחיד,ז,סמיכות"; # smichut (same as nifrad) } else { outword $opts{"יחיד"}, "ת,יחיד,ז"; # masculin, singular outword $opts{"יחיד"}."-", "ת,יחיד,ז,סמיכות"; # smichut (same as nifrad) } if($opts{"ם"}){ # special case for adjectives like רשאי. Unlike the noun case where we # turn this option automatically for words ending with אי, here such a # default would not be useful because a lot of nouns ending with ה or א # correspond to adjectives ending with אי that this rule doesn't fit. outword $xword."ם", "ת,רבים,ז"; # masculin, plural outword $xword."-", "ת,רבים,ז,סמיכות"; # smichut } else { outword $xword."ים", "ת,רבים,ז"; # masculin, plural outword $xword."י-", "ת,רבים,ז,סמיכות"; # smichut } # feminine, singular: my $nekeva_implicit = !($opts{"נקבה_ת"} || $opts{"נקבה_ה"} || $opts{"נקבה_ית"} || $opts{"יחידה"}); # by checking for final iי, we're basically checking for final י except # in final וי (see comment above on where we added the i) my $nekeva_t = $opts{"נקבה_ת"} || ($nekeva_implicit && substr($xword,-2,2) eq "iי"); my $nekeva_h = $opts{"נקבה_ה"} || ($nekeva_implicit && !$nekeva_t); my $nekeva_it = $opts{"נקבה_ית"}; if(exists($opts{"יחידה"})){ my $yechida=$opts{"יחידה"}; outword $yechida, "ת,יחיד,נ"; $yechida =~ s/ה$/ת/ if(!$opts{"שמור_ה"}); outword $yechida."-", "ת,יחיד,נ,סמיכות"; } if($nekeva_t){ if(substr($word,-1,1) eq "ה" && !$opts{"שמור_ה"}){ # This is a rare case, where an adjective ending with ה gets a ת # feminine form, and an extra yud needs to be added. For example # מופלה, מופלית. outword $xword."ית", "ת,יחיד,נ"; outword $xword."ית-", "ת,יחיד,נ,סמיכות"; # smichut (same as nifrad) } else { # note: we don't bother adding the vowel "e" before the ת because that # would only make a difference before a yud - and interestingly when # there *is* a yud, the vowel is dropped anyway! outword $xword."ת", "ת,יחיד,נ"; outword $xword."ת-", "ת,יחיד,נ,סמיכות"; # smichut (same as nifrad) } } if($nekeva_h){ outword $xword."aה", "ת,יחיד,נ"; outword $xword."aת-", "ת,יחיד,נ,סמיכות"; # smichut } if($nekeva_it){ outword $xword."ית", "ת,יחיד,נ"; outword $xword."ית-", "ת,יחיד,נ,סמיכות"; # smichut } # Feminine, plural: # It stays the same, regardless of the singular for. The only exception # is the ית feminine, where the plural becomes יות. Note that there is # no "else" in the if below - because we need to support the cased that # one word has both types of plural (e.g., see אהבל). if($nekeva_h || $nekeva_t || $opts{"יחידה"}){ outword $xword."ות", "ת,רבים,נ"; # feminine, plural outword $xword."ות-", "ת,רבים,נ,סמיכות"; # smichut (same as nifrad) } if($nekeva_it){ outword $xword."יות", "ת,רבים,נ"; # feminine, plural outword $xword."יות-", "ת,רבים,נ,סמיכות"; # smichut (same as nifrad) } } else { die "word '".$word."' was not specified as noun, adjective or verb."; } outword "-------" } hspell-1.4/tclHash.h0000644000076600007650000001373311314466104012423 0ustar nyhrl/* from generic/tcl.h: */ /* TCL_HASH_KEY_RANDOMIZE_HASH: * There are some things, pointers for example * which don't hash well because they do not use * the lower bits. If this flag is set then the * hash table will attempt to rectify this by * randomising the bits and then using the upper * N bits as the index into the table. */ #define TCL_HASH_KEY_RANDOMIZE_HASH 0x1 #define TCL_STRING_KEYS 0 #include # define _ANSI_ARGS_(x) x #define VOID void #define CONST const #define EXTERN extern typedef void *ClientData; struct Tcl_Obj; typedef struct Tcl_Obj Tcl_Obj; /* * Forward declarations of Tcl_HashTable and related types. */ typedef struct Tcl_HashKeyType Tcl_HashKeyType; typedef struct Tcl_HashTable Tcl_HashTable; typedef struct Tcl_HashEntry Tcl_HashEntry; typedef struct Tcl_HashSearch Tcl_HashSearch; typedef unsigned int (Tcl_HashKeyProc) _ANSI_ARGS_((Tcl_HashTable *tablePtr, VOID *keyPtr)); typedef int (Tcl_CompareHashKeysProc) _ANSI_ARGS_((VOID *keyPtr, Tcl_HashEntry *hPtr)); typedef Tcl_HashEntry *(Tcl_AllocHashEntryProc) _ANSI_ARGS_(( Tcl_HashTable *tablePtr, VOID *keyPtr)); typedef void (Tcl_FreeHashEntryProc) _ANSI_ARGS_((Tcl_HashEntry *hPtr)); /* * Structure definition for an entry in a hash table. No-one outside * Tcl should access any of these fields directly; use the macros * defined below. */ struct Tcl_HashEntry { Tcl_HashEntry *nextPtr; /* Pointer to next entry in this * hash bucket, or NULL for end of * chain. */ Tcl_HashTable *tablePtr; /* Pointer to table containing entry. */ unsigned int hash; /* Hash value. */ ClientData clientData; /* Application stores something here * with Tcl_SetHashValue. */ union { /* Key has one of these forms: */ char *oneWordValue; /* One-word value for key. */ Tcl_Obj *objPtr; /* Tcl_Obj * key value. */ int words[1]; /* Multiple integer words for key. * The actual size will be as large * as necessary for this table's * keys. */ char string[4]; /* String for key. The actual size * will be as large as needed to hold * the key. */ } key; /* MUST BE LAST FIELD IN RECORD!! */ }; #define TCL_STRING_KEYS 0 /* * Macros for clients to use to access fields of hash entries: */ #define Tcl_GetHashValue(h) ((h)->clientData) #define Tcl_SetHashValue(h, value) ((h)->clientData = (ClientData) (value)) /*#define Tcl_GetHashKey(tablePtr, h) \ ((char *) ((h)->key.string))*/ #define Tcl_GetHashKey(tablePtr, h) ((h)->key.string) EXTERN Tcl_HashEntry * Tcl_NextHashEntry _ANSI_ARGS_(( Tcl_HashSearch * searchPtr)); EXTERN Tcl_HashEntry * Tcl_FirstHashEntry _ANSI_ARGS_((Tcl_HashTable *tablePtr, Tcl_HashSearch * searchPtr)); EXTERN void Tcl_InitHashTable _ANSI_ARGS_((Tcl_HashTable *tablePtr, int keyType)); EXTERN void Tcl_DeleteHashTable _ANSI_ARGS_((Tcl_HashTable *tablePtr)); EXTERN Tcl_HashEntry *Tcl_CreateHashEntry _ANSI_ARGS_((Tcl_HashTable *tablePtr, CONST char *key, int *newPtr)); EXTERN Tcl_HashEntry *Tcl_FindHashEntry _ANSI_ARGS_((Tcl_HashTable *tablePtr, CONST char *key)); /* * Structure definition for a hash table. Must be in tcl.h so clients * can allocate space for these structures, but clients should never * access any fields in this structure. */ #define TCL_SMALL_HASH_TABLE 4 struct Tcl_HashTable { Tcl_HashEntry **buckets; /* Pointer to bucket array. Each * element points to first entry in * bucket's hash chain, or NULL. */ Tcl_HashEntry *staticBuckets[TCL_SMALL_HASH_TABLE]; /* Bucket array used for small tables * (to avoid mallocs and frees). */ int numBuckets; /* Total number of buckets allocated * at **bucketPtr. */ int numEntries; /* Total number of entries present * in table. */ int rebuildSize; /* Enlarge table when numEntries gets * to be this large. */ int downShift; /* Shift count used in hashing * function. Designed to use high- * order bits of randomized keys. */ int mask; /* Mask value used in hashing * function. */ int keyType; /* Type of keys used in this table. * It's either TCL_CUSTOM_KEYS, * TCL_STRING_KEYS, TCL_ONE_WORD_KEYS, * or an integer giving the number of * ints that is the size of the key. */ Tcl_HashKeyType *typePtr; /* Type of the keys used in the * Tcl_HashTable. */ }; /* * Structure definition for information used to keep track of searches * through hash tables: */ struct Tcl_HashSearch { Tcl_HashTable *tablePtr; /* Table being searched. */ int nextIndex; /* Index of next bucket to be * enumerated after present one. */ Tcl_HashEntry *nextEntryPtr; /* Next entry to be enumerated in the * the current bucket. */ }; hspell-1.4/LICENSE0000644000076600007650000000071513123031517011661 0ustar nyhrlHspell is copyright (C) 2000-2017, Nadav Har'El and Dan Kenigsberg. It is released to the public under the GNU Affero General Public License (AGPL) version 3. See the COPYING file included in this distribution for the whole text of the license. Note that not only the programs in the distribution, but also the dictionary files and the generated word lists, are licensed under the AGPL. There is no warranty of any kind for the contents of this distribution. hspell-1.4/gzbuffered.h0000644000076600007650000000622011722236072013153 0ustar nyhrl/* Copyright (C) 2004 Nadav Har'El and Dan Kenigsberg */ /* The implementation of gzgetc() in the Zlib library, which gets the next uncompressed character when reading a gzip file, is extremely slow. When we tried using gzgetc() to read the gzipped dictionary file one character at a time, the result was 7 times slower start-up than when we read from a pipe to the "gzcat" program. It turns out that this can easily be solved, by buffering the reads: we can read, using gzread() a whole chunk (say, of 4 Kbytes) of uncompressed characters, and then dispense them one character at a time, much like the stdio library's getc() buffers calls to read(). This implementation provides a new type, "gzbFile *", routines to open and close such a file, gzb_open, gzb_dopen (uses an already open file descriptor) and gzb_close, and most importantly, a gzb_getc() routine from getting, in a buffered manner, the next uncompressed character from the file. The semantics implemented is "close enough" to that of zlib to fit our needs, but not identical. Also, many other facilities offered by zlib and stdio are not given a buffered version here because Hspell doesn't need them. Such facilities, like ungetc, scanf, tell/seek, and of course writing, can be implemented in the future if needed. */ #define GZBUFFERED_SIZE 4096 /* empirical testing showed this to be fine */ #include #include typedef struct { gzFile gz; char buf[GZBUFFERED_SIZE]; /* buffer of preread characters */ char *b; /* next character to read from b */ int n; /* number of character left to read in buffer */ } gzbFile; static inline gzbFile * gzb_open(const char *path, const char *mode) { gzbFile *ret = (gzbFile *)malloc(sizeof(gzbFile)); if(!ret) return NULL; ret->n = 0; ret->gz = gzopen(path,mode); if(!ret->gz){ free(ret); return NULL; } return ret; } static inline gzbFile * gzb_dopen(int fd, const char *mode) { gzbFile *ret = (gzbFile *)malloc(sizeof(gzbFile)); if(!ret) return NULL; ret->n = 0; ret->gz = gzdopen(fd,mode); if(!ret->gz){ free(ret); return NULL; } return ret; } static inline int gzb_close(gzbFile *f) { int ret; ret=gzclose(f->gz); free(f); return ret; } static inline int gzb_getc(gzbFile *gzbp){ if(!gzbp->n){ /* No more characters buffered. Refill buffer with gzread() */ gzbp->n = gzread(gzbp->gz, gzbp->buf, sizeof(gzbp->buf)); if(gzbp->n <= 0){ gzbp->n=0; return EOF; } gzbp->b=gzbp->buf; } /* Return the next available character in the buffer */ gzbp->n--; return *(gzbp->b++); } /* We need an implementation of this function for use in linginfo.c (which used fgets). This might not be the most efficient implementation - we could have browsed the buffer directly, rather than calling gzb_getc per character. But I think this will be quick enough. */ static inline char * gzb_gets(char *s, int size, gzbFile *stream) { int c; char *ret=s; while(--size){ /* stop after at most size-1 characters */ c=gzb_getc(stream); if(c==EOF) break; else { *(s++)=c; if(c=='\n') break; } } *s='\0'; return s==ret ? NULL : ret; } hspell-1.4/linginfo.h0000644000076600007650000000166510417663037012652 0ustar nyhrl/* Copyright (C) 2003 Nadav Har'El and Dan Kenigsberg */ #ifndef INCLUDED_LINGINFO_H #define INCLUDED_LINGINFO_H #include "hspell.h" /* load description and stem files into memory */ int linginfo_init(const char *dir); /* free'em */ int linginfo_free(void); /* translate the i'th description of a word into human-readable text */ char *linginfo_desc2text(char *text, const char *desc, int i); /* translate the i'th description of a word into older-style prefix specifier, * such as the PS_* that are kept in .prefixes */ int linginfo_desc2ps(const char *desc, int i); /* translate the i'th stem-index of a word into human-readable text */ char *linginfo_stem2text(const char *stem, int i); /* search for a word in the linginfo database. if a the word is found, fill the * pointed desc and stem buffers with the relevant (opaque) data. */ int linginfo_lookup(const char *word, char **desc, char **stem); #endif /* INCLUDED_LINGINFO_H */ hspell-1.4/libhspell.c0000644000076600007650000003216211722236550013006 0ustar nyhrl/* Copyright (C) 2003-2012 Nadav Har'El and Dan Kenigsberg */ #include #include #include #include #include "dict_radix.h" #include "hspell.h" #include "linginfo.h" /* Hspell uses a dictionary, and several related files (prefix information, sizes information, stems, and linguistic description file). It needs to know the path of the dictionary, and to that it add suffixes to get the names of the other files. The function hspell_set_dictionary_path() can be used before calling hspell_init() to determine where that function loads the dictionary from. hspell_get_dictionary_path() queries the current setting. */ static const char *hspell_dictionary = DICTIONARY_BASE; const char * hspell_get_dictionary_path(void) { return hspell_dictionary; } void hspell_set_dictionary_path(const char *path) { hspell_dictionary = path; } /* TODO: compile out debug code in production version... */ int hspell_debug=0; /* Load the data files. Returns 0 on success, -1 if couldn't read the dictionary. */ static int load_data(struct dict_radix **dictp) { clock_t t1, t2; if(hspell_debug){ fprintf(stderr,"Loading data files... "); t1=clock(); } *dictp = new_dict_radix(); if(!read_dict(*dictp, hspell_dictionary)){ delete_dict_radix(*dictp); return -1; } if(hspell_debug){ t2=clock(); fprintf(stderr,"done (%d ms).\n", (int)((t2-t1)/(CLOCKS_PER_SEC/1000))); } return 0; } /* * The prefix tree "prefix_tree" is built by build_prefix_tree, from a list of * known combinations of prefixes. Each prefix also has a mask that determines * to what kind of words it can be applied. * * The list of known prefixes and masks were defined in the prefixes[] and * masks[] arrays in prefixes.c. That file is automatically generated by the * genprefixes.pl program. */ #include "prefixes.c" struct prefix_node { /* if a prefix has a certain 'mask', and lookup on a word returns * 'val' (a bitmask of prefixes allowed for it), our prefix is * allowed on this word if and only if (mask & val)!=0. * * This means that 'mask' defines the bits that this prefix "supplies" * and he 'val' defined for a word is the bits this words insists on * getting at least one of (i.e., val is the list of types of * prefixes that are allowed for this word). */ int mask; struct prefix_node *next['ת'-'א'+1]; }; static struct prefix_node *prefix_tree = 0; static void build_prefix_tree(int allow_he_hasheela){ int i; const char *p; struct prefix_node **n; char **prefixes; int *masks; if(allow_he_hasheela){ prefixes=prefixes_H; masks=masks_H; } else { prefixes=prefixes_noH; masks=masks_noH; } for(i=0; prefixes[i]; i++){ p=prefixes[i]; n=&prefix_tree; if(hspell_debug) fprintf(stderr,"prefix %s ",p); while(*p){ if(!(*n)) *n=(struct prefix_node *) calloc(1,sizeof(struct prefix_node)); n=& ((*n)->next[*p-'א']); p++; } /* define the mask (making sure the node exists). */ if(!*n) *n=(struct prefix_node *) calloc(1,sizeof(struct prefix_node)); (*n)->mask=masks[i]; if(hspell_debug) fprintf(stderr,"mask=%d\n",(*n)->mask); } } static void free_prefix_tree(struct prefix_node *n) { /* free_prefix_tree recursively walk the tree, freeing all nodes */ int i; if(!n) return; for(i=0; i< sizeof(n->next)/sizeof(n->next[0]); i++) free_prefix_tree(n->next[i]); free(n); } int hspell_check_word(struct dict_radix *dict, const char *word, int *preflen) { int hashebrew; const char *w=word; struct prefix_node *n; *preflen = 0; /* ignore empty words: */ hashebrew=0; while(*w){ if(*w>='א' && *w<='ת'){ hashebrew=1; break; } (*preflen)++; w++; } if(!hashebrew) return 1; /* ignore (accept) empty words */ n=prefix_tree; if(hspell_debug) fprintf(stderr,"looking %s\n",w); while(*w && n){ /* eat up the " if necessary, to recognize words like * ה"שטיח". or הידיעה ש"המידע...". * See the Academy's punctuation rules (see לשוננו לעם, טבת, * תשס"ב) for an explanation of this rule (we're probably don't * support here everything they suggested; in particular I * don't recognize a single quote as valid form of merchaot). */ if(*w=='"'){ (*preflen)++; w++; continue; } /* The first case here is the Academia's "ha-ktiv hasar * ha-niqqud" rule of doubling a consonant waw in the middle * a word, unless it's already next to a waw. When adding a * prefix, any initial waw in a word will necessarily * become a consonant waw in the middle of the word. * The "else if" below is the normal check. */ if(n!=prefix_tree && *w=='ו' && w[-1]!='ו'){ if(w[1]=='ו'){ if(w[2]!='ו' && (lookup(dict,w+1) & n->mask)){ /* for example: הוועד */ if(hspell_debug) fprintf(stderr,"found %s: double waw.\n",w); return 1; } else if(lookup(dict,w) & n->mask){ /* for example: הווים */ if(hspell_debug) fprintf(stderr,"found %s: nondouble waw.\n",w); return 1; } } } else { if (hspell_debug) fprintf (stderr, "tried %s mask %d prefmask %d\n",w,lookup(dict,w), n->mask); if(lookup(dict,w) & n->mask) return 1; /* found word! */ } /* try the next prefix... */ if(*w>='א' && *w<='ת'){ n=n->next[*w-'א']; (*preflen)++; w++; } else { break; } } if(n && !*w){ /* allow prefix followed by nothing (or a non-word like * number, maqaf, etc.) */ if(hspell_debug) fprintf(stderr,"Accepting empty word\n"); return 1; } else return 0; /* unrecognized (misspelled) word */ } /* this functions copies, in a less than intelligent fashion, the Nadav's code * from hspell_check_word. TODO: use the same code for both functions. */ int hspell_enum_splits(struct dict_radix *dict, const char *word, hspell_word_split_callback_func *enumf) { int preflen=0, count=0; int hashebrew; const char *w=word; struct prefix_node *n; /* ignore empty words: */ hashebrew=0; while(*w){ if(*w>='א' && *w<='ת'){ hashebrew=1; break; } preflen++; w++; } if(!hashebrew) return -1; /* ignore empty words */ n=prefix_tree; if(hspell_debug) fprintf(stderr,"enum_splits looking %s\n",w); while(*w && n){ /* eat up the " if necessary, to recognize words like * ה"שטיח". or הידיעה ש"המידע...". * See the Academy's punctuation rules (see לשוננו לעם, טבת, * תשס"ב) for an explanation of this rule (we're probably don't * support here everything they suggested; in particular I * don't recognize a single quote as valid form of merchaot). */ if(*w=='"'){ preflen++; w++; continue; } /* The first case here is the Academia's "ha-ktiv hasar * ha-niqqud" rule of doubling a consonant waw in the middle * a word, unless it's already next to a waw. When adding a * prefix, any initial waw in a word will necessarily * become a consonant waw in the middle of the word. * The "else if" below is the normal check. */ if(n!=prefix_tree && *w=='ו' && w[-1]!='ו'){ if(w[1]=='ו'){ if(w[2]!='ו' && (lookup(dict,w+1) & n->mask)){ w++; /* for example: הוועד */ if(hspell_debug) fprintf(stderr,"found %s: double waw.\n",w); enumf(word, w, preflen++, n->mask); n=n->next[*w-'א']; w++; count++; continue; } else if(lookup(dict,w) & n->mask){ /* for example: הווים */ if(hspell_debug) fprintf(stderr,"found %s: nondouble waw.\n",w); enumf(word, w, preflen++, n->mask); n=n->next[*w-'א']; w++; count++; continue; } } } else { if (hspell_debug) fprintf (stderr, "enum_splits: tried %s mask %d prefmask %d\n",w,lookup(dict,w), n->mask); if(lookup(dict,w) & n->mask) { enumf(word, w, preflen++, n->mask); n=n->next[*w-'א']; w++; count++; continue; } /* found word! */ } /* try the next prefix... */ if(*w>='א' && *w<='ת'){ n=n->next[*w-'א']; preflen++; w++; } else { break; } } if(n && !*w){ /* allow prefix followed by nothing (or a non-word like * number, maqaf, etc.) */ if(hspell_debug) fprintf(stderr,"Accepting empty word\n"); enumf(word, w, preflen, n->mask); count++; } /* else return 0; unrecognized (misspelled) word */ if (hspell_debug) fprintf(stderr, "enum_splits found %d splits\n", count); return count; } /* In the past, we used to use snprintf for this splicing needed for hspell_trycorrect. But it turns out that snprintf, when given the %.*s format, counts locale "characters", and not bytes. When the locale was UTF8, this made it count wrong, despite us knowing here that we only deal with iso-8859-8. So let's implement this functionality on our own. This is ugly :( This function splices together the first s1len characters of s1, then two characters c1,c2 (or nothing if c is 0) and the string s2. */ static inline void splice(char *buf, int size, const char *s1, int s1len, char c1, char c2, const char *s2) { int len=s1len; if(len>=size) len=size-1; strncpy(buf,s1,len); if(len+1>=size){ buf[len]='\0'; return; } else if(c1) { buf[len++]=c1; } if(len+1>=size){ buf[len]='\0'; return; } else if(c2) { buf[len++]=c2; } if(s2){ strncpy(buf+len,s2,size-len-1); buf[size-1]='\0'; /* in case the last command truncated */ } else { buf[len]='\0'; } } /* try to find corrections for word */ void hspell_trycorrect(struct dict_radix *dict, const char *w, struct corlist *cl) { char buf[30]; int i; int len=strlen(w), preflen; static char *similar[] = {"העא", "גה", "כח", "תט", "צס", "שס", "כק", "בו", "פב"}; #define TRYBUF if(hspell_check_word(dict, buf, &preflen)) corlist_add(cl, buf) /* try to add a missing em kri'a - yud or vav */ for(i=1;i0 && w[i]=='ו' && w[i+1]=='ו') splice(buf,sizeof(buf),w,i,*g,0,w+i+2); else if(*g=='ו') splice(buf,sizeof(buf),w,i,'ו','ו',w+i+1); else splice(buf,sizeof(buf),w,i,*g,0,w+i+1); TRYBUF; } } } } /* try to replace a non-final letter at the end of the word by its * final form and vice versa (useful check for abbreviations) */ if(len>0 && len=2){ splice(buf,sizeof(buf),w,len-1,'"',w[len-1],0); TRYBUF; } /* try to make the word into an abbreviation (add ' at the end) */ snprintf(buf,sizeof(buf), "%s'",w); TRYBUF; } /* hspell_init() reads the dictionary and initializes the necessary data structures, into the an allocated dictp structure. hspell_init() returns 0 on success, or negative numbers on errors: -1: cannot read dictionary. */ int hspell_init(struct dict_radix **dictp, int flags){ int ret; ret=load_data(dictp); if(ret<0) return ret; build_prefix_tree(flags & HSPELL_OPT_HE_SHEELA); #ifdef USE_LINGINFO if (flags & HSPELL_OPT_LINGUISTICS) { if (!linginfo_init(hspell_dictionary)) return -1; } #endif return 0; } /* TODO: hspell_init should use a new "hspell_context" structure, not dict_radix. Because we might want to add more things like user dictionary. The prefix tree should also sit in the hspell_context, instead of being a global variable: the current mishmash of globals and non-globals is ugly. Linginfo's global variables (see linginfo_init and linginfo_free) should also be in this context. */ /* hspell_uninit() undoes the effects of hspell_init, freeing memory that was allocated during initialization. The dict pointer passed is no longer valid after this call, and should not be used (i.e., hspell_uninit() has similar semantics to free()). */ void hspell_uninit(struct dict_radix *dict) { delete_dict_radix(dict); /* free prefix tree. Too bad this is a global variable, and not something in a "context" given to us as a parameter. */ free_prefix_tree(prefix_tree); prefix_tree=0; #ifdef USE_LINGINFO linginfo_free(); #endif } hspell-1.4/doc/0000755000076600007650000000000013123544652011427 5ustar nyhrlhspell-1.4/doc/niqqudless.odt0000644000076600007650000072211313123233744014332 0ustar nyhrlPKײ}׳J^ֶ2 ''mimetypeapplication/vnd.oasis.opendocument.textPKײ}׳Jk–’˜˜Thumbnails/thumbnail.png‰PNG  IHDRµֲ‎ַיfPLTE $$$+++444===CCCKKKSSS[[[ccckkkttt{{{ƒƒƒ‹‹‹”””›››£££«««³³³¼¼¼ֳֳֳֻֻֻ׃׃׃דדדכככףףף‏‏‏ptםIDATxם Sף¶א„ַ–uױך²_v¾¦ם´׃0ח ¶eI÷ױ»°>§ VMzתׁ w½Sdu)ֻ±י[²•r~ט‎¨Udz״כךiֹן¯²מ›וUYצ]¡ן7¶ד,2´–mWF…ַI¬‏rׁף×r?iכ³תgקֽ|¦>’^=[xv:mדף3µ]~w:ֶ£~ָ´ל×ZDקQ¯³mזוף…Xֿ£¦©oפ1װ›§¯R¿¥¼קc›w#P?«.¦µ¢¶dךP§¨ֽ¡/Sױ¿L}[ֶf8›zש­¿]צי׳X/·כn(ז7ךי¶u»vg³ףבס‹÷no”װן/oפיךbAץG¬T%%ׁ~לM%6³צ0‚J!„8–x־ׂעF…B}װ”¡”״c­V2ַעeg¾ױכ|]wTד5װPC 5װPC 5װPC 5װPC 5װPC 5װPUZה;×·כiד‹ץLt¿–כ¥¹כg=d ‎8Uֻ”Yמֿ#‰×ם—VחkOף¦Z§אכ‡:¨—UsTJuVm«-ט!׳Iץ¡ףח¨¡‏«?‏ל §R~—¡דos^Q=ֵ˜Vס}נ[עֵg|R bTN/©זײאyדG.R!’s±BK/©ײײKm¥—V5&²ֽל¡ׂם [ַh„j¨¡†j¨¡†j¨¡‏Wַ\«ˆdמ±iN=•ּ±ֶRCyaץ<'Y–­­¥,צ#o¨ף£ֽ%ֽey¼®÷8§ץז•§₪«÷װ­÷J\ֵ¿ר{×½}“~]¶?ז‏~ץUװ=QחJ6 SׂDjםnּ4²ב(‰ַ׀jN-Eב’?c`~‚¹ז)ֵuן‰…₪¨­Xg$)©׳װ¥6ׂd‰jz u‘iֽ‰$«J‹¦’^5«X´IEbֿ95[ 1gz™ׁר·c°ץ—>‡ִUjo9צW>‡סbדg¡¥}'uק5& ·uףf£ן»¨S–ח[׳¶ת%h|ֿ5װPC 5װPC 5װPC 5װPC 5װPC 5װPC 5װPC 5װPC 5װPC 5װPC 5װPC 5װPmךVט/ױ¨I‘V ׳%*m¢ּ)§Lc”₪Fֵkj¹”¸וPמ™;ׂג)–[«­װשbk)ײh-5hk"¶§װ²¶‡“L•¢קU¸ך¶צ¹1—…ZךLֽ‰ֹּ‘z{ab¢(•™;©}XעVn%R“כל‹«RֽaZk ײ/ju$rֹ!Qׂgכׁ24;¥װ—ם´qYײ׃¢K«›¦p¿/כcu‏V‏q¬ S‹נfOֽ± ,vט¢)ךAE¥Aq¢Hױ¶ָע…Dך˜¸f‹µֲc¯Zֵ•2י¼9חq“-k5וl/\ל}ץ±­´ר-¹ךX׃—#ַֹ%¡µ‹~=¦ּ©EרFgֽ=¹{־ֶt¹²ז±[׃U·´×ץ Wµ\+ֶׂ4ׂQX[]ׁrךרqײדµYפץ¹«µ־=[וצlֽ²ֶ’?A]n<¯n™מK¸;ww׃i¡=\חַ»›ך²ּכ|V}[­·ֻB¢«ֽzl¶¬¯l¼^מ3Yקנ‘‚ Yַ‎‚=X½W²¾¿…>Aזµ¸²Mךחא\•‡wn½­<=m[z(bp9–ּ·Ql¸7WםֹG¡b§ז–h{÷6±עd‡lUba+$)װפ|‎c´16‏d¢ \¡†j¨¡†j¨¡†j¨¡†j¨¡†j¨¡†j¨¡†j¨¡†j¨¡‏פ/®†Y$IEND®B`‚PKײ}׳J layout-cacheM”MHTa†ֿ½w´fֲ E%´(C†A(¦QLS&טGˆWA‘ n₪)¨ˆ&2‚[-¥›„ZeH…."I…ˆpQ› חמ,†ח}ֿ{־קoז»vץs¬7m–:`fֵת -‏L«מ2ֹֻױ{ז 9€®ּN ~ ־ ¾יֳ½,״¸{r™rEנק0My6¹ְ¼א ‘O¸ֻ‚c,°‚Gנ¨\«4HL0eGאמ>A‘ֳ%"mDN‏|±8#ס”H?‘k‚SDF%²lל.0L³ְ;`xֿאֱןKה‰6€@}ט aגwK@4Kt#J,נLyכDJִE‰[,v…° {wLנˆֶַקֹ‘¯%Zi~:T™ע1nהL–$ײh\‰#µ_¢ˆ#³!Fn‹צD^n‰'׀%‏/8³4צƒְMא6נ€בּֿ›’haף3K ¯ׂר!עכXׂ-5;ׂ¨‹©+Qm«w.F‰“ֶ†דמuֶb‎¿‚ ו —~;°8dSy\נ„־n ‚{¸—pG‹לטN*qַˆ<|%2-ׁ־”–~Xח° ”y mr״לp>ם׀™qָm1PK-‘uךPKײ}׳Jקn5/ֳTֳT5Pictures/1000000000000122000001906200897DA1ADE3B7.jpg״אJFIF,,בExifMM*‏Created with The GIMPC  !"$"$Cְ""ִִI !1"AQ2aq‘¡ׁ#BR‚$3br’±ֱ4CSב¢ֲנ%&'5Ds²ׂסִִ*!1AQ3a"#2‘¡ֱנ ?ץ PE¾elַ«K{כƒן:‎Es÷{8׀­²H1ע¦פיֶpG>µ‰•K׳½›hֳֻ!שJMw¨°!U‚זֱ©+±PQˆ4)'¹Sֿ#ײ¸.רדֱYס,ד‎$Rב/ֱ9B7Y8ְ´ׂ9טU¨יW47ֽ€$©¬{[¢שץSְכ…5¼qיN©Z`vm´gv|עhƒO=p?*—–U÷שPbi£§±L‰H4׃ַן˜.rXƒA’Wדpj¥m 1|¾ץ³¦/LµlLsƒ&kב—£}יֿqtfsץ¨6•nw‎טׂzן5¦¼8 [?3U Mַ¥BOB(ֻ£מח"„—ִoI®ו'ְִױ1rh–‡£75ׁ!~F—צ«…?ִ~µ1¨ֻ¬ּ¿:¨XחG‰FW$|Mbיwץ­%ב#–?CQ{©3”l3M+i0ֲהtˆH# |תװb~נnv*}3L,״ֳכU+ hײ·דתgל›`Iײ·#—תTם9;¨£`ף‡פ©ֿ‹‎ױ¿lRה+ףף©@ֶYֹרז×VY´¨3ֳ0רn¡I₪¡#ק¬־n%¢ַy¡Jב־^F?Z…•}&״{ׂ~u§ׂ׀ «8‏®(²0'™”pִ3W*ֳ[M‡ִ|¢ִׁ —טױ3+gR³Hש'qֶ}y₪L!‏iדֽ ֱV%e?ױAvf‏3ק ²’חִ=h£¨ֱ•ף‏$מ¬₪ָl‰YU-RwLAµeוL*G? •´nהc _³e­txפ[kv>kJbֵ9דײ·vג¶²² f‘‡?ֽYwj¢"ׁ¹™­?קrI ש׀Zb0 אב=½פNXֲ…$|ֽDg>ג›pֻ­ִ¹ו)BZ€־wף$‘)S¶|s[³‰w9°ק₪בdרT@´·„¿½F–ׁBLִY–טwTMֲ ֱֻfֵ³ˆ¦Hז€צ1™ױ8ז¼•”¯uבָ¡LXֵ’Tװ“O¶ ˜b2py Ij ֹ°d׃ֲm¨Y“;XשPbֵ†עיK2^ZI]ְ״BYqF´v#mֱ#?*’ֿxs‡›D’3װע5´‰;ֽ£'J$$מFh‘2‰f¥”wִs½+µ£Z3:‚Aְ4ו’s·‘³­-³‹ע}ך­uaaZ"y45‰@הzטם?/Z2¡r2)-¼ "FU=i¹"‰"@«†=M`–״7#µ«ְ­"d -1ל­ֹ¨±gj'U+G85;ָ”‎En״Kם=ף¨₪ײ6bdb״@ׂ÷ם™ׂ[װy#y¹ ƒ׳!ֶ»°A פ÷"ֶ”7i~‏לץ,AרqE¸•ײ0 פג×Hֵ BPֲ«ֿrFCS21uוI¥ח  ױ¶†=»²'ƒ@¼K`¬{­§=A¬Aˆ U*טj vi99¨¡$vּ„) qז בY1דָח˜> zRמֳ¿P¸ָרTKA¹–nׁw±>8e2 0Sw׳ ‎‚ם´eNF´ַ§שד¡®‹u®י†{״םVM6=קJAqפהc׃4ם;+{(µ$—¥Ethגg$0אם?Jע׳<·ת»­[ֹ4Bֻ÷±wn¶tסyN•v_‎״¸/46ײ… Q׀*¥+;n׃han¯Mצ״mצס:¼a*Fל\Tם{]ֻ›HoL®־6ִִH״qד#׀f¸>jס[vµI“½ׁc‰A^¬ֿ´~f¢§י}¢ל¼6ף#®ipoִ\˜¿v7¡'5*v ½¹ג¬ַ-ֿ³(h״קשHֶAשׂצֻE½¹·׃c2‹¹וםdCחyְ¸k{ק·{w“µqKH0r3פ®¿Sˆֵ+£¥?ֻJyK­cµ:."X¼‚בc÷₪S¦IPp)K־׃י1˜ַ´)ן-ו !lִ:°ְ×Vתֲַסי¯מ£·GׂU¶‚ֿW‹ h;k)^G’־ג1ֶײRלpG_…Buk4Kc´·¼$§ג&״[¶מֶ7c´5‎"M.ִ¹ּW7ֿwmג|דֶGCײ¸6(m´¾i–מ¦ץo£»%tV‹7 ֱ >)מח5˜y­לµ³v.f1דwBrqIבֵ]:זuײWgֻ"«ֲט—ֳׂרU~™[{»›Ho-®,o®w‚Hטֵ@Z¼׳']K¶ת•k+ָO)ע₪;mSFKLm¿=ע«}&צR±I„L’ ©¬:חnרֱp«װעjְָ†pxHי[צm’.=׃ lׂ¹–\Tֹג1G±› ג¡`®AכH-׀¹ָ¢e—=¦¸Lr¼©ד4HדBׁCy¨+^Gn¨m9R׳CלצֵOמJMmא`N־x×ױ*62ח[‰X¯כVW1ַ^ךixpׂ)ב ח«^Tr=kA¸¾Tק³©™@־ֲ‘Br]3†כM×+ 8ׂˆ¾&\b¨¬µכ«׳װ-£ׂ,bװ¬¦HחK¬Fֱֲֻd±Pם›­כ+d©₪ֻ±כ0HI™Nר@%ה ֶ:׳;מכZ½£‚ןS±0>G(ֳ|¹ץ©D,uי„7- ׂ.qֹ`ב₪J s[»ם¼צק7ףI£¾a:Cqp“וֶלrh־23ֿ¬,;/q×v¯Sױ5}9"µ¶†ײb®YTמ,״ָכ ױ/i{9w¨A×יggח‚[שP\^<¨"¬‎»‰ט=©װ]u ֶ§ם ƒ½ֲ A1ט?…«¿׀"O״¶’ƒ‏(7–קנOk4jCgּ#VQlCƒלצ¨תuׁVdב5ww©Tת3÷ֶט¸§ֹ×ףM[ie´ $ץץפ4‏”׀]:הv¹ףהך^zvvף,ׂ+©ָ9כSI|;ױc¥{k¦ׁ.ֹן#­״~1]ְJָ¿ץ®±$ ֱ‘‚‘’E2xשV*²· ץ¦mֶPW?>)Aן;'#ז(ˆמZ.?ך"*’הzVדfW„w#§Viמֳ68€([ז¬ֱ°wuֵ:mזy¨'(r« VV;÷Sְ ֽׂ !N+v…ײ`q‘ƒׂUB0a_nֵױn@hַ¥h4.v— ֵ )$+ 2#´EV†h־׀A־1Kֲ6G/¸r<…T ֳq1•6Wpדk›ֹ} ×¶ֱַQ[·`fP@ק¨׃™5ֶG^iַ.RM־»˜uֵ"ך±}(0קw,״ hwi,qװװyK€¹S־(‘‰Z)?›9­^לY‰ FrjVד[J¨כ“׀ …§ m¥ן אqֵF ˜ָ9‘[·Ya¶“½Zװ&>סIQװQּ5מU†1׃!<ֲס»ֲ6©¦c™ד``₪oeE|ַ'4#©);®3÷“÷+ײH®גI׀8`² ##¡ז‰םY9*2–9\µ~?lq¸Kc+/B9ז¬ֵָּ¶רH¥S!e ¼דׂ₪Jט9‚,ח8ע¡ֶ‡9`qLHR8z¯‎*1»₪l8¥2ֽ“מ¶²ˆTהע~ױ••·fױaְאנֵjAxֵ›ֳGל¬ֻpsף¨ W2ה¨¼ײ¥־³ׂׂOצ«2Mּ#ַ¾¾b¼ט4$ך¥YM{4P•O שz׳vחH–ַP7ֶE´ה•¼ֵys‹w‡–וu+Hoל״%ו¿‰z/­u­«l.s±ˆ"מ°ך+ֽtYו°½ֳ01?טגfׁµD¿_ײp:)עz1i״‡דX/אװ£…AR#ƒ1RצyOרs]aY£ ן6|ַZJ¬Ct=1Bqָ01Zv,«ןמׂµn%S¼׃­e0SבQֿ­¾FBז´k–I״ֱ¸יA¶÷eYQֶ3׀ג{Yס‚T תװ µ¹\¯Z)‚־₪א#$`¼)הׁ…ƒ–>מ~u³¦%ןׂ¡ָfpK׃4ֶ״½˜(>, ֳg2נ ­imnאת@·+„1-EJֹ!E;ƒgsZצIתןL‏U¡o 9WT 0V”HyאqC״\“€rj ֳדֶ2<י¡o>ך-¢WeaאdPn"©‚Cָ¶²ף’¹שװֵ¼ב־0qס©cֵ«!ו‰ד Qy«†bHנׁ#¶“ֱqPncƒַ•i?y&7ֳ{Nף«@¹µ~×תװ‹ֶ‎ּ^ר|יeEy‘’1OI׃„V*Bפ׀'°™r1ף —³m9Xף¡J®וC ֶKK…<׳ײqֻך:ש’מNל£r§iS*ִ‡sS׃E3=₪־¸VיW³—i†q׀װ‹\_µeK“מ‎כ(¥rל{9+'g-ַwֱֶֿ­mיNTײ6₪צvדר×Q"´˜ ‎כRִ®Bֶ×µֻץ­e_ !#Wֹוׂ“2אףוד=»ד/װ`עK+ˆס$g~†®{?y³י·`W5׃צG7–‚ת?ן6אח—O1פ¯8I&G¸9ג¹ו½½±ƒַ#hWd™a·sq‏¢÷–Pׂ7`z׳–צ Fֲֹךq׳ב]^ƒm+ZqWJ·¥·<2>½~•¬fם7]ִׁ™]q“יK`©R_¥½—f7ף+i"ׂו־)Y@@ַZtֽא”69¥חrָ־:fֳ¹׀‚‡zװbָ±־©נNG¯‘­w’w„|)Lּf״ƒָֽdr–“ֳ שז$„חvj "™xqנ₪ ע$g…,q“ֿJJׂ1]¬`¸>|!"‡נ1תT‘ֳnְ®qֹ­( ר“$‏u3–#³כS„(#.¼yR9יj01‘ָ&§QlשSSF³.?*¨T R‹$2U3“ְץ¦™hI'יֵ‹€@"°0א b–d‰yCdG‘­¬ןנֻsע¦;‡9״ח׳T‎X“חַJ•†²ףֵhH% .Ty׃&/T–x\Nr-Ir הת׀הƒ׀Je`@+‘כ@–0ױR´₪pXr¹ש׀¥‘ֹדֻװװ^%95 ח?)\µ¶C‘ר'¼!ֶ~װּP•|ח"µ2xג¼g­³»U‘€&ץ­KׂG*סה׬ֳ[כ}J`xG־…#®zf¸On״ּ«L A*עמי׀h—~eHםnr ֶײף*ץַ8 Jף¯ֶ‎µ.ֿ%פ[Fֻ*×p ְַU_zyµַm£ׁײֱִֵ®0קג}~•M¥.­×%מ›,ֿ©3™{ױד3ט!k« ¼}װjyg?jפ/ֳkֻMY,ײ5-7‏cu'׃>”ִF1ֳׂ»­~ׁ”Jֻץ¸r₪s¸y‎k¡go˜¼צע_ל‏½¹n¦!.װt שץנ¯L³ בK›wWE ¬:Sp¶ע€J7˜ =´ח“׀³“ִ1׳ Jטעv—«H 3‚ׂxֹתPd·qֿ׀דh±aג FkEׁˆR¸=)´:°^נxכCx yzb•@סp@ח47t־\¨ַ™5…® ֳ‡ֲ‹o–cחUuז½¡ZםZ¥¸#ׇ‏UQy‏ֽ[’c÷|"~¸₪Lֳ×qU. ־+&^¼ד׃ב^{sר¥£‡+ ®|R?קHKרy)a9”“39Cװˆחּ*i$…±:ע“ר¯>2‏¢jp~-÷L„yֳ†¨z² ־O|… ¦T°ַֻו^emר«o‘0–QתU½·גN2גhna>¸ֽ"בֹ(N•פמֶqyu®zַµ» J49י.Wz½‚Xf]נֿˆq‚¬×ֹ± &ƒ4£qשג₪ מו©[ Rb{־=)°›9AןgאE Y> >ױ £“h‏5>t´±·jFב®9ְ©fֶCqI´kC}hr b¸ע©,S»Sא"…3Iֿ‘H-ֶד•¥lL®ַo<ףAB<†i¥3ֵ4ם־?:^|dץy‰‡?ײVןYBt]¯g­¼G”kt%ָ$t8כ[לײgmaƒ¥ds,rֹ¸gƒ°*ְUAְ¸¥ה‰rAא׃‰*8נ‚>´6מ˜נֳ?:ב=»c2¯מ\7¹רף@÷·ןCG8WFYHא´d9י‘Pמ׀ץ$Tיס.ױט²ט»Aײׂ׀Uפש¥C,ט6°9אt¯jם‘¯₪In›;פבcֶy}zW€j¥פIfס] V2r)§¢¥ֻ¯Y‹5ֳ!A“נ¦¿ »P »9¨¿9-hלz–¼’·Iק»n ה’s…\J‹2$׀ֽ²eס#ָ4׀װתj2״#k)'ֿׂ׳Hס'!±^Kֵ©פt±ם¡¸ֲּ Gַ<¬u¿ֵֽ<ֱ.‡ףiO ¦¥­Pפw0ClYDj¼’ַ|כ–׳»s iְ¢Lo&\{½=My½םVB׳7לדֹK`W5y~>פ±9=SXQ¿™;»8א·Pxדscכַו\f­}OPsם³IנֵrMx„X·‰m ‎בׂ־yAטQ ¨]­Mד–cףRק!²¬װCSwc{I{ןB°)ף–@?!ֽtב\²ב¯u|qֶ™־*±Neµ‹&5 כƒCmBw,xכV†=‡-ױַת₪ְ…tZa{)lIס׀¾_?sV¨Zeאׁז0ח? *Jפ׳ׂV÷&ֵ¾eת!QTלVצ ׂAץ״(װ´¾g†מXש6עp†¬"½ָד•G£+יd׃‚ָףAQ“IׂO}¥ָ:dֲ¿¥Z‡ֿv׳ˆ[>נפ'¥]i÷´צׂo¶Xף•b+ײ®k´&]2ר¡+A¨‏hע–};R¸´lח ‡_–8«T ֶIטˆ­»×\»OGo¸®¦ַ¶N£.7Jqִ‡+y®¹״׃i@ֽ %פ+־ר §­ro×K ֱY·#חLaפֲ\ָcB”@Nוֲַ₪טl-&‰ֶ/m‰ף‎טaשf¯לR`T=ֽ»n¿ם®Vֱ¥רX…u}2]]ֵl­$Gֶ²‡d¬צד{÷קסN•װj³—f(yS÷eל¶H׳ ¼±ךַּױ.±$„’>Fµ‹Yp¨¹¹]±58ק¸ ₪'y†Q~Tkt|^”¹®אhֱסLG1-¼W•צ†פ ‘UײאאeY₪`x‚¨?J²[8ׂA ]ֻ¼x˜ףֵ3o¦„mֵ|ֽ5z€0tDbO• )'…yדx¨5ֲd‘1QוR³ L®@‡Uk¾© ½0’b[„־ֱ־3Eמ=¿דdH—•k=+$±ק€ָ#ײY{³־OU¯^½6·p˜זeu=3װW!®צr0L–שen„{o:Kגח –8™m¡¹R1¶M}ˆ¦­®/&]ײl2–¥ַז­m4?bמA ךִעMSj÷<סָ״E­"“V“>8†y4+¹)·¹›P¸»¸D …]¥X§§ף^U½H¢גצה9!mֱֱפק…{gב ֱAs ’²Lֽ÷D p<=>µ™ke]\lµ״`¥s¬«+2.ג®5#•גL1>~uךm²lקחG9ה”›˜*u4‎£Ex˜­WמֹסKשSpGvpqײ™s…½©¶;K9יV‚FE!Iע×vuוdU”×ִ0ף¨¬ׂײ ״'ֿU,­{׳\ֻ”8#¼ֵ9מ¢RZE*zqֽKיL¿א©b@שׁ—MbֻT±ֻ»גח¹ײך׀–ׁ´Tj7ףטz?Z־״צ–xאm?J¸Q}#»¨y¨׀l`°F‘מּק2ֻ19$שײµetx,m;µ2מס±ף5”¸;UqE׃"ע”\ץ¥ץ€N“<תזˆk¦G6ְ´‹ƒ»(gָ׀ה’,®0}Mׁ$טך~µ¡fץ”…Ob ׳ ח\|)gxַֻ­ •WרֱR6ו7ודVz^nןֶ×zTQ ֱ$ƒץ¨Kqק„¨V:P&”«r9£´‘<9ƒHJ#rz‹ ח'‘YJכ?ג½e כ]˜ׁ4{? h08;־h‹¢״₪A¼שרO³L¿° כu'#§ַ­t—2חB׃sd c®צ‎j¾דF׃ק`X¡‏£ת׳E"¶ּהZ©¹¬yjףֿnר]OaO¹£‏ָ׃vg#? ײ³yֶןׂ’8P[Zאƒijָלרֿװ‏µ‡Kׂל1ץ<~uf_ע¡÷yZ¥l÷N˜¼Ga דדPM'O _כV^»¾U#·׳ע×ֵ“₪²fK(G¥/6™¦נ=¨=jַj•ךHשPf‰201TJ¥F¥¡h—vג7³Hהc€ס’¬+›װ;¨F7״\ַsעIבaץט*ם½$¹wcֵ0Tֳׁע=1Z÷bq‰x«¡K"ת[v'©^>‡¥{cםM¯e´ט¢‰Jˆpp2y÷“ֽ¨Q—ƒֱr Xָ±[F«•@ |*»XדDuE99sWֱI`P}« ױ&W$†cף®fתP%#לד‘f ׀ ֱ¦m†nְ8₪YעG½ףׁא˜©µf‰yfֲֿ«•D‡¥דֳcת#6‰§  חשGיW)qטsפ₪מז^HהEJˆ®ƒ§ל!m£h M£Z(*mגי׳h¦^י‰ g%¶¼¥~•R<b»)·9בׂ²­I€’w ­Rַ³kv÷?¾„ƒTצע״¶³²›³נ†‰I Lֶכ¸„Pzכ.-Dקְ «N)[³y¿w|?ה«ױ‡-ע ־‚¸OoF=)מֿµנEK¾9Gֿm9±O@5“D ])5ָ-<¨ֱLדֹj< HMa‹ €@£˜UJ®K.$sE }¡סּ"´.pyחה*OoTכג<ףQֲ4F`[ןH {K:mP¥»gsֿע<6 0'"’{h״$““׀ױְ”’פµִ]°E’ו0 isףZSN 3m`ׂE¹ְ¥4ֽ˜7p¯)חֻsi} XF¦95Bm-ױ–~=iֽ2גײHanG%l2§־˜ˆV§r˜;Cֽs׳Wj¬|?z¶ױn¡6’פ!ֱ׋‘k&N <ךד"ע"מ~Tִײ״זד¯X«1ֶr ‹“h-·A«†!}o{jl+סֵ= ס׃׳5ֿ2ˆׁ||“M9bצ¡₪5lפ.*ב¨t–ק(rעכLG$.¬ר|g¹s×י¸`.  ְ%ps´}®nTH–דyֹlמְ#בעפ¬וMC¢C·‏h‏×&כrNמק‎װ—³•-´“…־I£{/ן™3ײ¹׃ ²ּֿנ¯#­d׳vּyֵ©{כvH„MIm·D־FHַ€:ֻDr|ך„lp[¼ֿת«;„•5¶²X €>4Qqlְ6ץׂ‚ס¨ל?׳L­«x79הװ.­cL‎xכM"ס5¾HX‎ִ׀ז6´LA>¦l‘ן$d`‘’imC¼V*­ֱפ4ׂX-דSWב¸ׂ3´)!ִ,uV[£ ‘‰-׳“K\";ֹ‚=*₪@ֹנe ¯?ֵYUBu”ַלhJ–ֹOZk÷&ח8?z®ל²״QwS°y׃1ֵ’qs(רf÷K™ֲYFֲ>DR¼‰!!ֹ¦½˜¾חֿuVG²@½ל£ת«ֿ=»ד׀ֵֹl°?j;g¹*©De54¨L‡U&ש ד‹ױbN8ף§ €¡,O…ּ½׀[ֻר¨¾ָ€H₪¿Lז₪›·%ֿ‎ק”,״פ¨›Ht>=ףCX¢ּ «ז5ׂyַ½װf;Emy&…wo ַˆˆcֿZOQ†X¬¢Tfֳ61’|י2nhV\{GZ,7[-I,‘½ק›7?˜׀D צpFNzBָ\H\Hד$`Sz…¥¥ִQ+n ֳƒW9,QG€נr «ׁ4L–ךח»\f₪ד5­ֻױײבֹ d1ט}j÷]RswnRN@הmשj\hב¹‘XZ«•‘$Vֲ¨µj—<¡Wq§L¶f~א†קװףDֵ¥*ס²4kןp1Qקטv·;­N׳|%׳ֲֳfONRִC%׃c¼’9f™ֳG׀¦??Z~*ֱ#9“½־ֱ±ַַh1>G'9`S*$צU]‏tLֻT±׃llVMֲ5¼Dד’jקF+סזBƒd7J§´ן}¡qwכVZ\ ל 2½Tכ>…¼—–K#«•1EktwN­…ד®n$ ע´I, ם¿r¯CKy׀÷ק tרׁׂxײ˜ָ9ֱע×טא…­]D*מ¸©ט#ZהE, \‘טjמn"!„אy׀QH™ˆ`FFy¦®¢…·uֶָ1IֻR´‰²!ָע×"{l´egQֱדu'5ךw€4ְשײׁ'v6)ְLNq‚j¶(;I7נ~h¡7$€0h"5¹U‘‘TAnh“>j„N:מjֽµz Spen@ֶXיR¹IP€ײ¹‰/m2₪´«ז>uױצb“N÷ב₪ֹשyS˜מpKװ:ֿ7סַ¸c[·¹t$l€h—²,הץu¢X־#B‚>§'=sKM8eLpשַּS±,ט‚ְף:N+f7א*÷}pק¦™‘¯dB¡ֶ<ֶ3@jKHֳ`צrF¬ֵ€אץjJU»]ּ ײ₪!r;32(/kp[חV-ױG^>5],ט‡^¹¨₪‘@¥®¡cZjIqץ¥n’1*®r ַZPmײ$FY;²yכט*ֶ3ן]½9¥5ׁHֱֱ#Ol9ײT הנ>ץ”ׁtXO»xMֲ!Uֻl5"ײ׳‘ָ}›Rm€נXd׃™P{; H¨ֽ³‚¢›ײc…O–(™”0ך{¬*|vײ;ׂ7 m[הµ…„Grֶ:ײ.¡f¸L»דֹe})ץ-ינ@(M¡]פhPV‹%ף·*§ֿ]ז>y4¢z%ֱ›QשרE חF¿V·ַ§£O;›•!€ֶָ@¦e//ˆMbU)׃IװRֵצ9י¶‰&~Dgצ‚9Zl-™·a÷ײN¡Mחק×ֵ¼ׂoׁ¹װ־1ה8¨i׃,27µֵּ˜אrqFװ@«2¸ֱגƒdלײL°O‹ƒחײ›ֻ« UQ{‚¼עµ¨lo®יֱ־x¡™«8#=kvm6רOV( ¬ן˜“.Nְֲ{J‰ןD'¬: ½ִdח$|כ"‘@[j±K מH¥µװ¥@«G׀£¹׀uamU₪,ַk±ה~µe~PO €ם>י>T;±+Gױְ-יי.yE99t]f9¬{‹>||hַIױ Qָ›×†ֳ*±¾״5kvfn|תb™µ{8Pzפ£†9TYh›¯;ֹu)YO‏[dםשSV¶U‘vtsגַ‎*ױKEp»ֲ“ח¡ ²ֵ+!²9י¢ˆ–|q‹t9ע=H:¶צ ]־¡*®ְU5¼‚#µqץ«¨װKbB08&‰–ד­´©הgfװ. mכ¸ #hק† w; wƒT;wמ¥—.pח4ה;’ד=hµMiHw^7^₪~•“XjKqd©zל›· פָjׂFtBX¹Rzֵֻl‎ד‘˜ֽ6&¸ׁ¯ּּ‏fף’…6…r!@ֳֽׂq‰Y]‘&qֳ ƒS7Eםד$`מכM×TK₪J³€׃]cֿ*F]‰'%ִַ‘]lֻ1U“Ov¸ֿ5Z¥,ZUװQ–[‚ֳ= ד »Kְֲ©ךֵtVףG$EG‡”¥א_s>yZ§?…סv,i>ס©†°/&מב8ט†״wע2*¯P·ִ‘ˆ$ז›Ta´˜קG׳TײRַ½ֿ¿YUu–„ֿ@¼lח&´¶ץ¢צI׀aּ„‚§<;¦>-ַוVBh†1כIM ה‘ֱ”נV,„˜ֵ)<3ִ׳ םטַ¢2E† ‚ַחR‰b´¨Sו*ֶה²–לcֹiDnגe¸£¥o‏Tָן# ֿײ²;v ¡*RldpNy­?}³gU«¹>T\׀’@_P1sPW־׃µ©‹nאdzס@~ס2רU׃;4ˆ ³>jXxPףM!P׀ָך£=:qZN¼©ך0x«CN«MmהdרO₪¦ׂ¨<1­ַo0pvd»ָ(rFI¨ָJ’:ד­!^!”+«–ך¢ֱqx¥!Xֳ*.G5e®T’¼תF’7ױ¢P¨v¶~ױD‰‡9®Gwo.י-˜ח •V%ו־×»§ן;o{¸ֶ6 3ױֳֶ,ֽ1ƒ¯¯5¹r%ִֵ² 6¶א1’1Lֵֶ»Jו[®FsWVˆ!xכ“QD„םm˜ץֿZּUֹk¹s`` ־?w!L%ְOוֵ6—HW–_ ×”]²w7ׂwa)¶¹־ב"kqץDeאdסR 1uv¿ _S{™ם$G'aַx«OhL ”ֹרפ¬ן£”ם™־:׃Uכ<׃ֶב8*דװVI<ˆ¬€r0)ֽ-H׃cֻ ˜°|¶’?ך§-ְDח»ד*aןT3lח׀׀ח˜7*W¢«!hQאאVw9`~Tִz‚+€X}ko}jX÷ֽ(¢]H$סָ¥nק¹ֻ|ֶ=-ֵ©\®3װׂ²ֿג.}sRW™fֹכצ¬©´#דףץ¬×׃´לֵ´O ל‏j ‰ ִ6בע4>.{?yםף£ֹ‘&O־µ,0ְ€(ֽ+6׀p¡‡ֳq§rF׳½ח\'·|z„-װ0?2j! ְl¨׀ה`­•f¦%¾ % ¡², ¯,hh–»†ִ$ײוoס('Fs T†¶עDmַשo-ֶ™¢E2”‏,שjj_j‘nך?mו•E׃ך@‎ nגֲװ($±74{r-׃“ז©צ’j3˜ֹdֳ™©’Zƒ»ִF˜׀ּ6kױ[ח¸ױ¾Dד¯QC0¢“•'ׂ•Jס “ƒן‎ ¬kM<€ם¸y'‏יק·Vס.T1D³³\E ֳOֲ¥D-4ֻIdbb|‡5װvwA‚ֲf“ סִם:‘j¦+x8חכ@iח{¹,0x­ֶ?,L«{]l³]?¸q€§ֿ[ֽb9µ{{dׂ»;ַּ’sIG¥¢L9¦Xdױ¥¼ןL₪*sY³¨¹T2|ך,j%‡'ןSֳ9‏29¡ײ–qַֻeUַ X‘פ9ז·¶°אcאMoMHtןGל#"™ku-+sO…fb›‰²‹ghם„¶כO§#(>€f)aVָָ4eh³;ףPװ׳¢‘Zgo³|ֽdײ–b15a›u`wGֳƒZw‚L—q‚*ב•5„¯u ‹xY·(bNח4KR0ײָך6ײגu‡Yu‏ ָױ[µNIQXp<ֵ& ָ,“ו¡I5˜9X#פו)ַkfטpqװP&[q1 ׳"₪Q‎¹{X³ו…·{i(m# O’rDF ƒt L‘ֳDֻֿPsL;מִ…+raןˆ¢­…%,sַQ[krƒ!³ץ¬i›8L3KM<ֱנW’[[vNs“kMf8‘³(&W'# ּ׃-¼¯·•RE\ƒ6×9ּ…ת’Gו„י‘ֳהכײ­ׁ "A@u!€$|ףTִLp} mX״ ה¯\װc,: CהְתRןHEO‹¾ ײּ²ס)טkQְd” ™יZkti6`שf₪÷=¢¶x³ltq‘Z¨¹ױH־­xקZshֳJ×דּױ\ס´oגPF3ƒMֻ9—Rs&\/-ַ%ַ 8¡ H¥_A8עײךs׀Ulׂׂ+’סב˜©>¦¦'r]Wƒױים¡ rש*46»€מגS» Z£’D¸nlc'½JIbga‹¼Pa׃זRK…bDxU\´s&!¥›¥Ny ׁ׀ :ײ״¼yנ1PYGְ!A= E2£~Nב׳<ס["ש־ֶ9­epש xר|(M /₪WR‘׳Q²”d‚ֽs×O¨¨ֿם¹“ “חׂµ¬ַp–ֻ(‰צֳ*Hqה ‏Y§M”ןֹP¼g¨ צYx*ֿ4EFn6‘ף4ִ–²¨^Bחדֵג+ˆסµ†=i-×”a»-׳¡יA›y> דחM"· מ<°*@J…+ -NiR¢<€qחM4›½2zֶאI>MH¿{7£}ֵe ּ2sµeI׃vbb;;ˆeaֶׂh©r˜צiפב7Yאׁa_bWץיD·¹¸Y&?‏CLש1q׳לִָqm/ )4².Aµ—׳5m־{ֳJֽ‚AQכ5ֲ|˜¼y1®Y–L‘לRֲ?ך¶עּx‏S\L½»¼-ƒb™?ח5k²6iץsNז+s—iם2מגׂA‎&¢nI;^ׂ_‡„׳{ov‏/דQ‏]©ַ²@ֳ׃&¨עb·1שv¦R£"־L§¥ גצ&ִנH­,ָ£(yֱGk=÷»#ֳeo‏דA~¼נָײ׀ƒֱֹצjֵnbפYn$ֹױסס#ץ 4²¶²¸‎k“·׳{?נ–ה¨ׂ’צךקe₪|ֿG“w1שwִ]‘jOץײ„׃)ְµ~¾L?Zג"ם‎ג 5”?מ5}xַ‹Hשw1[˜»¸g÷|hAR‏µ§םX+[c{—ץ® ;{ֿקKl|ֽFN_+לvרץֹ£s¹ֻׁb–י‎ֹaי¸~´ ֹ¦'ֵjt„7כC‏ךלצ ~´nb·1z-ִׂ{4°ֻ¸‘ ¬<ֶַg×Ksi±ֲW¼Iֹץ¯=nךj-םXC~´­¿n5(”F-ם@R„סֿ־­ּVז/Ow¹dקc‎F3Mָg‡#חתW?ou.3¯OCתױֽ†·{}aׁX•›98כ]|Q»•b'ֻG+זi°¹‎)K«k»»״ַ>₪ױ*—׳‚Lyרװ•׀R G‚x8¯GשLy™8פֿיC•¦$‏צ<|sתRחP¹ֹוqע¡½¼’#"µע-‎ח‏₪e*o>לj>׳ָwנr¢ִ2 ו[„‡1Qלב־‰3£/%שBy¯ףK¼`ַ”חַ“ַ§EָרR—$n־®3¬ֳ®¦±ֹ ע­7‰¹­ב›ם?ץMX6ב3כY1חf~9«ם+K׃gׂמoץ-BKE‰ײ4ֳb ַQ׀ u;¦¯gW]]fכL‎ֶcקuי¿¥4ײ™—'םzײח,™ֿCי?³BרX ץן=­½‹»מא0¥fµ׀­מֽ³]ּם{ˆ¢]€ת…'$|r*ׂ4¡דבsPxְnH¥_j1׃/­ב¼¹cer½ה7QG¸:z€Hרdf™םgt½VK ם^בK¢¸•mPץחע§L2ז„J:iyא$ח­^v“B›@¼Hd."–1$3 נ÷:f¬`ײ5˜´ימה·y״a ֱ<ע1׃דVB¦יN±)5x+ט.t‎ N}>mVך&S‘¬ֱPAֶx|דיCםf®פsoq<«=…ֱ+¨Nוaץַ8ע5i•¦TkXד®kf ÷C³.¥iת„תֵE~…ד f \c9ֻiY´-•ּ:ּןkq#ֵ+›`ה®ף‘גuiS¹§8;Fm€k¦ם—f.{5rL·׃&טg €דֿנy¡טZf•¨i׳·7:„¶עYֵ²,ק.@אמה§CL(Fצַ‡׳E Tu®ַ@ׂ¯{3y­^ז4³`²Eל×I'¦‏z׳-¼ֵw R˜₪ײR[”¨בכרUמ½כ'@ׂuIו¾B]q‏uך¿קT*רח•Sb˜–©©a·d©.ץq†״(·ˆ¯־€‘rr¡y¨רֱ־S¿סb´#\הJ!T‘’qנ ּO=3NLא6|ט2ֶ¹־CfEּ}6F+µלJ4h‚a—ֵ׳§Zהz‡>µvfױB†O·‘ץ¯׀qה‎1הטׂ0G>†µ,ד,[‰?ִiµ׃dָ&99ח‘A¹¶L`5צ.y‚†iX"|¨N‡םP~פp<±ֶ¯#“€ֹ&®­»%;צעqn;@k9ש1ֲ9–נֳ,חˆr{ע~U•׳־״dx‎«+ֿק^?—o·ֿבו‎ָֻקhך¸lמ'ׂ… +~ֵ‹{½)ˆד%³ֿ|ygK†H4U°EY1נ₪מ£ wuג¸ֿn°C$Ec²הQNבפ5Fײ¢H]ל₪w|ם־vמד>¸®ױ¥ע qGֿ¦¸·ך==k¶’?ƒ‘¿vxװ·gX"˜oiv{?c»I¨Fח¼HDkֿ»¸‘ש}«…ח¯ ל¿okmW³³÷F586ֲּxן8\‏UOoqotצ²ִי29FV}1W¨uױױןג–I=מ״ֹ…=GוYר¥¦ך¨µ[KW—uCpS´uךz ֽ~o״‎†°להƒ·Uֲ¨÷ִסצ¥ו¹_¶´«²םpzשV½5—ר¢ˆי<ת~k2\.j°´¨|,רֱף Kנ‏r½¶ֱֲׂרrGְױ ן{ֳוW‡ס»vL7ֿ=0hX‰¼¬k׃j…YIצ¹z¬׳W•¾.ײל®X0³u’w'8P~ץּv÷ׂג>ױךQ´®׳R₪AbE[^ƒ v%´ֹ¶®¡©$–=(¢7"Hzַָ+׃ ¾ִצcmֵ´;a“Yח‘ׂ¹­sJƒOk$Kˆזyםִּס¾וֹfט>¹®ƒ¶·״.ּH‘±E@ִב'ֿ¹9,oפֶ/qbsn8ר~´K9צפ‹‰m5½Vף±ּ¡C¬oa;קrwjvך<ֵrZv—.—i,/ַ¦גN«C¿‏װצo^ׂ$ֱ¹W7צ‹י×>˜Zא#˜‚>˜®‹²=©–ֳ]´״l#xYLV¬PנpGֲ‡רƒ£¾‹›¨#¥¼­Cיµ¹ְש¥Sּ,¹‹sֿחֳR±8+ZסgEmD„פרV\ׂ1°< `’E8eדּשׁ62*pֳsrhI2 ¬חBeu<6N(†מH´ּwנֲ• pFל צoֲטa•·,ּ‏ך5דgqֶי^•״kשם5 *ֳ>zxz~›ֻ:†±1›—£·gסד§ּv•4¨.´„²d¢ַ~=xQ װ¯3"I.ׂP€OִתW9®כ»m·0D·Aw3£ ®3<ַ'kׁוד‰ו4ש#’דU÷Yd=¶¸i"r¢גM¡rדכIGu™ץK{½SY·>D(·אtָֿײ«P>‹s«ֻq)ֻl·L€GOtתC¹1¸6תקe₪‘O>×@Q\²³ם׃ַבa=®fr½ ÷A¸בE÷סֿN•”¬w€@”  ¸ינ¬®Tײ¥€ְhנה•3a÷`u—gע4H=6׃צ­ךkשµָ¬T§Nµ´ׁoמלe¾·´–[hןyחֽoh>µ״~ָ¶©JSOH•&\pI8ט3ק¯7“-1pפר±¦¥חנiw—“Am#א/־˜ײMִכ¦Nd7F?™}s׃׳¡v‹N³לַfµ¨•·C2‹PN׃ֹNhm«ֿgרUֱ.d ?‹fדחע_ָW=י¡f"j~y¨v{X°½‚ׂזֶxזג !ֿ  ג¬ong¥¬V—wWנַ0‘³x[•{¬¿{רQ¥ּה™ט…by¿jdw8ׁ$‘·¸װRy njװyg‏–GSך¯צ{]mA¬ֵׂ‰”8¯­ZֱkHMם´˜…2n$6‘@1ֻ~tֿגֻ<}×\I°›dהyk_ןב.”‎ב9¸ ץזJ£ֹ•D¸‰>׳;7¨ֳ×hm}sy<}העױO’oE_םQ­v־5—Q¸ױ#BpHשd)4~ׁJ%צ)ֽ©&ח˜ןg5װצ%ּ‎‚ם W F‰¹U@;Iָ Gס+S´װg׃[O»IV¯O¥™NTg׃×eF‚ז–MF8cRּLד@פֽE¡םמ§µֹ7“ֶ¼·q*¹G>”פR1|ֻגצ¬×¹‎GF½׃t[ VK₪h®שQ›rסx§&S±¯¬¯i'׳ם`׳e»i£ ֹ'׃>U“­j־t¸d• .׳ƒ־HֿO÷ִי;³w.CLצ7>ףxS¯¹ֿטw¦›¨_[\GYG¾@ִ‚ֳסנ4ַ’נװֶXVuֻם‡esֽ¨ ”לשpqMM¡צזזָYֻנDFpWבבV=•¦:׳¢¸c*ֶEnvַװ —גױּ‘v‹L–)6[T*Aהַּyrױ¥¹סֶW.WMׂuד¬K+y–תֱֽqח־=E_jZn/bS¨ֱ}sTI8\ UחlZ4L׀וPKIרנׁ5—_ֶ˜Dl ֶֿQ7²¾,םD\_÷qZOg5­V)%°±yDlQj₪7¦ ּT/{?®YCeqc$s\0X †'ָ6qש׳£]"¯l¡¶¹µ¶¿–A·{„%6‚p~'w©mL·„7Fiƒ5״מKrW•אך4GdO†#‎ֳ•ױפ]cG‘cװ¬נe ֱ >Usַ9;‏•ט=°Yנ¿³ׂH ר Nxֳ~‚¼ץ²½÷רף£—/&:g†‚ֶ<‰רײ›»b0zײ4£8e¡HA>פ®סqֳן;#6‡א·Cס5ְ NףפNַ–:,¥s–צ‎ה‎9ש:_h׀»mNNײ[¡ד¡×־׀›M@X¸+ֶ¸²·{Gס/,c ע«}(ָo קmא־7qׂ©{Iuל—oַsgTִƒ|ֽבuיוװt®UשO_׃GצneR‚םc¦i‚pƒ3uרnqץֵמk“‹½fמyנx±‘³VnJ”¹i½–}ְ“qpה חXriws״ײ-·ֲ£¹ח‡o־¹:5 ר 6ֹ!<[q»דYFi¸סNףxתqY\רo—7 «~ֶˆ(ֳN@[׀¥;?יwc7b¸ֻחwרw].™c`5['¸.¦”ֽ€½rל@<‚~"–w\¨N>"¼שc©טֳ-.÷קR׃ץ®ֳEkywzƒb-שּ‹יצדזK´׳:n¡§ט¦©oDL׃0;צ¿¸wbFvד" ּzײv£׃{³=ֳ¹ױ.4d׀4ּJ;„Kעזג v¢וכײ§¬kת%eb´¶e·6·‰ֲs»»S€kֿer •ֿ›U³z~Gג~£e×v‰nlgY¢*מ\ץֹג©כ6~i\s£ֵ>ח‹ eשפףַ²©סשג°"פרtץ§n*#ב™עLּֿק²י₪‹ֵ¼ױ/ֵ¼vל®"Y¥ףְַN‚—ם¸תז·-‏ֲ±,jO÷£§_­*J)y#a*װc‎Vֶ¿יׂל¯5«? ל´µ}¶;‚ֽ@ֻsשhץ› ®ֱיtw קpHL±ף•oװW*Pא—™pנFGj|³ל{#«i¶}’׳m.®–9מcִ(sג;H®FBֽ׀*;2AךV&˜ֶ¦e‰ג#בֵ«YצfSN†ק7w\חnלח¦+}©ױ¬.»¢Xֱ6›a‰P•דו\X›>!J–yyּxג&,ױכq«i׳‎׀mם'Y&¶ƒlָ×9ָרaµ:ַ³} µ»¸Xf÷ƒl(Aס¬1שדI=@ָשײְ§םֶ#vujv½•ױל,»­Y\־©qp?t˜9n=qQIױפ‎WV±–u8םױ€FגqַָgֿsVd€:µ1דˆֻP:^¬ךװ;g§j_µד־bֶ7;\£<רצ‚ןס*-m״ֳf&_y(\dע®(c¦jj.Jּx¢"¿Meז™¿—g¯ֱ כz‏£¨ׁCj²Mµ6מֵ—hחכµ7y©טPvn²–¦c–^עמץ¡`£ֿz@W9Z99 ײ¾"ח¡¹ּֽvן{e×i-״½3G°װ½÷[Y|ecdד ֿ#ד\'ן הx@ח&ג8ַ¥h0'@§ tֵ1z¦״ִ7¼€QחA=c ׃.7E נ¹[†Q ©?מ!¸hQ~ן#sr>uֳ™’½±‘£hח#ִַף¯o׀‏G?'K$IָB9‎׃{„מֶ<¾5Y«ק)×ֻ$ײ@V5 ytא°נ<ח Njמְ$O,ד X›. exכT:‎•ז«,ֽm{wr¨0ן»»ֶׁװ/ך:׳_©¿§¯י¿םָֿu¥A&÷װ/o®6*ֶvדזח‏«qֳa5µִׁט׳קC~שIףך¨£Ksov®ק^DP?-ק5©¹g»םC¶@ַu¼…?ױ\ Cgn׀£- *R¼…ebi—מ1ֳnכס¬®¶כרPKײ}׳J styles.xmlם=]ד¶vן‎‚ƒ-׀’=ֽה"»ֹ˜Mׂל&/Eq!פXYYr$y<“§‏„^E¢םK‹‡ז½¿₪’DQ₪D}״–gֹX<$ֳֹֿֿק¸uµ„ןצּ¾ׁ׃€·פWwיֳ[}ײץ¹¿^;Kp³ע—-נ"=\j°²ֲ>נn|;tֲֿ‚נ&Zר;אֵ•nXטש‚S­xT+#״L]{¡3fk¯ ZֱB²ױ׳¾jוַ׀ױ׳¾¾פ·;;r8,]ַxDׁמf08‎ֳ°ןקs>pi‚נ2םC­–אװY80ז †‚ָVֱֵ²(yם¬±#;'ױנב^Y#מ%¬Ynל@Y70pV¼ֳ•÷x‡+¶מײ6™ּן`!‏ֿ»»T‚­j_6ֳ×eאל”ֹ$׀l}קTQ2@1÷–aה7}(?N|Y¾´eֲq+b„3BHMcט-my<ְ־¢‘µ÷‚±’בµ‰¶®|x¡ׂפ>X­„ ב5¨טתƒץ2–³XsN״ •Uֱ@¬*¬`“ (’װ¨ק‰_{§ @נ¸ƒlW»ֹ´ְj™כ׳h’־L ך7¡ Iֲf|_†÷דAֵפw7Lםµֳa$‡¨LG³´´fׂ´z_ִ3ה‡³ד^}–nרֵחִ²%5ע!yb‎‏i»נ¡ A+Cmק‰+LAf*ֿG=$¥ƒגNGv ם$S״ “7‏ײYjןm/װ½פף׳צ־6E>•5•‎א¬´7wן,i« m‘%ִ^ש‡'·א~ןAYo¨‎¸5jJוי‎;{¹q¡f:¨ֹ‘´ן XIֿ¯}wU©a+9ק›H]9E|f´³₪ׂA ה{™_לקT/}ֿ—k(א© 8ףm‎¼ ָ־‰–׀9X; µ»‎£SSq|d¾ ױ~ע¸>Eד F}°!(×Tֽ€|8™÷½µfs ֳ™™–ֽQSִp2…GCב{םד-7עב‘@4׳ס«m"›t*+ֿm¡$ױח8}°7‏ײא’װoz‘¡צ8h?ֲ–<)½‚9h{m¡&—E9ne³uס!@8‏.ן:<8a״ָ¼§׃¸T_u8‚י¯ֲ‏ַ“!\א¶+#‎ֲu~ƒ“ב¬½ס½נB ע(ף`}v¾9 אֵt‰²p€ ¶×m VױT)¡>­יwנI\µ½wi b:+אPmW£±€‎jP)סOP€ב†VS·=7׀£EF»hPTם“°ְִU–ם† Qָ^@עw!R?9 8ֲ;Gֽ> ’-‰­ֱ`‘’ר2P©pqט‹Mkבo®םןם{ר  ¥¿ק¢×ֽOןsֽךvט״py˜¢b@ׂ e3ם).‰€i—q¨cץwֱ£׀ֳֻ&ֲ.“ׂ א;M¾½כ¥גֹ {[ָ³W¨˜ֱ›§x״מי®½‚כtד‚ַ¹כl}E‎ם½e´' ";©„tC5,WנX1ץ•÷‡:1ת£¹5NG_v ל 7׃±wUװ3)*«G ¶6¼r`k;נֶfו€vpֳ4d3‚1{.`ץƒל«.)=R(hםC€ R±ֶכא:‡_¸בק€שק  K4¼:f;L‚™ׂױ@־ ֲִsם:/h ”2]ח×ײ/0rײOq3פ'װ ןRu€L₪.¦‹¦*י8ֵ£'כהֶ%‹G₪z` IR ‏$] Sl¹ֵavx±»C˜@Uֱ4­%ֵ8I1g`ע)%"ױ®­תֵפֻרֲֳ_%’‡†yחOz ¡±ֵRֵƒ'^i«טזײאַ ] ‡`תmבGֽ5תֶlˆ'²}·„,.ןױbת¿ƒ]­ײhY¨*  —\°°;³¼ ˆvs,ה× CכAH§µ®ְָי™ֲBx ’םpRֳחwָילZ‡ ­¸»4סבC˜o€½b<£&₪xˆ§G׀¢ }sֲ+Oץ–ּwxץהבױ“םל§°ּ‡c&‚r^<”¯זֻ&…ך«yWם¢”A5v!׳'…QHˆֱ…“@ֶ«"”ּ¹נzDVhMf’€{ֹTֶ¹×<Lg«A4TL±-§YgrC\i˜ֶn¿°eqֱעMMׁ0¦¶vA„D´בJנCRמ‘N¨µֳ+j¯טפXָ}¶׳Q L%Cָ-ס ײp¯ע‚„g”¿) -־ױ-ײ‘ֶ„x_¬ְ) z£ע˜°ַ„uז1a‰ֶ„×2ׁµ|*˜װ׃¯¦c¼A"ִ׀R'‚ƒlYEy [ח‎ת£HX,‎ב™¥?l ‎+‎zb®&ֶ²Y«¶FֵBYH£תB_וFh<*‰nֶM­PqדI±¼שז¢‹~|fׁ[}-7’akKhrf MךKhZYB׃&’Tn.!׃(QZ~.¿רD…tח„m־\װ₪b°AUY—xצ,ש/»bֽEAg•%AָX3µ Xf²B1Q1תhUˆ=¶mץ ‚wדHdV¥8#ן[‰6b|ֱ1Xo)כל£`8N;0*R)\ /€ץˆ/ֹ x1י‹א ‏g >=‏·¹…<װב¥d ג״mnCו־{סb‎׀!G†)¢§Du ׀ױE&<+«9בkס-¬A‰ֲ3gjּכׁ•שgb‏ה²ֶצ†\™ ¦ס0]”•ע˜cד3°§¥%חִז¯‘i¬ּ!ס’‰ ׂ÷ ‏•‰×ƒח;4-l׀װ״{ְַ”• 6·ײµ~«±Uxצ“$ױֿ¡ױv½ז69wצd¨‰©"§י.&­¬8׀hUֿֿIַ`ֱ ¶גAX¬גMֿ–} Y‏״¢‚;¸½v§„bfׂG±רְE9³†ׂqג××ֻ:g²:{מםHףנ₪תז&¿ֻl÷Yא7ׁ/IXhV­Zֶע¼D×־dIִ†0¹V´¦-&¿3«ס¨װbֶ€ַ2my€‰y»ֵ”˜D%¯ײV₪pױֳ<’` ‎הג¨b¼t^Aפֱ+#׳NG ן°J!™¥¸־-jֶ¸?3†דKRֹסְD=jlM=†sk‏¢װcbLֽ®«ַ7ֹ%{₪ wNבN׳$p t×+08}f+׳ּb#T×$₪/zgm״א­aּOƒ˜Cת‏Rz¢NbMי׳ Nd?cRר1f4w‘¶עק(pּ@ײ `‎גc&‘אXג.«רT¹׃־ף$,K|T×לת|–NX3–/ׂ«c¿™d¢ד¿—lNחף#®†ִגeהE|b9ס®ע¼r,»s¯7/…‡נ×`}‏@ִv‹·ע–…[yLדaZ:’G6'r$ A€ך–E…v µכsL'׃ֶt׳|ןל•‎€דµ³p’”Dreƒj"¸&: “b„~'ַ ×Q ַf×Zj—;n£:Y–”HM%ע6Cr›5µz·d5L8ׂf/i¹2לֿח³QחMGמ{Aך1מ›3czIך!ֹ|‘¨G­װ­©ַt6±^zתףp~Iך!I»‘¨G­¼­©ַ|f5¿%ץ˜־¦ץ±ך1-QיY}s:7_”zחֶEYY‰zּ־×ֳיxע¢װc8]װ±·y‰zּֿ×דיֻr=LגiwY9¾"¬׳;w¥XץLִ׳ך(wD/ז®ת}־#t¦ּ¯s›R‎ˆׁ²´ףXCֹ;&[װv¢’qֻׂ%ב>†ׁX€.¦;¨n„­‏l6E”ףSEצ›!ֹ+3Y–¸JלL†<Ufג(Xgל[;9;V׳„׀ׁ²bSJ`®¦´3‘W)¥»ׂ.H,־ Wv  g…»ekֽI|‡±²]ַ>¼„גדמךו–”lת₪ח2kםת´¢ֵזyµ¸םה¶?ט!—­‚)ˆףH7ֵּg!5¬כ-=×_`bב~ח{¾ל§נ5Jרxz‹iם<¢¸VI_+¢aˆ<ש3OMUֶ7®.ֳ:.§¸3ֵ…ב.’|¥„$ HII $ִװ ן'|ּXe”/cE-]‰=זִס~¿ˆָ­"­“¼²~¹±wָ1,ד>{ֱ†ת’´¡‚;6×ֱֹQ4U0*y†T¯סCז×דסדיu'®÷K3y­ן’V־×ֵ5:‹)© YN`µ. r׳Tˆaִ•אֳpl״‡›µד¢—¨}׳װ%_ג;' ת—–רָ¢FOhײ1^¥’P¾± ֹAAQ}6Wְ¸¯c²Ww”ֲֲ8 7ײl†ֹi`+“]₪a9hֹֻװכ\1ױ"צ÷Qו«ׂQֵ?—ֽ*ז»גKKE££ע]r·?ַנ´…ƒKtGpZ(y; |בסֿ־&N«Ed‘£¬א—:ֵ®׀s¬ג—מT”lFHj.­²#[HqG¶h T:ש E³wUB[¬ך¾ץˆZ.=Fm3P¾ז+2‏˜GL7ֿbƒF ^‚b+&°^R Tzֶ¼† ¶¾–*0ע”%µֽ|ץwrה¡’­rאפנEiSױw>qbה״ֳֻEAµ{=‎g₪Kעִ¬תu„¸–ײצ½„־y/ׁYַbטeiF·o{sC\B1”ֶ.q6€ֻµR¢\ר±K^#ט]½D)wקp¶ֽ׳I’צfאֳ‎ֽc|ֿ ‏‎”»>ֹ3₪ֹEסEµ\Aזױ?&ּ¢Cs] I=מְJOנׁ״ױ]gכDl:÷׳.׃ֶt|¡M 8†]® .ֳ>(ƒm’'¡I ¨L©¬מאx½(¹×§¬¿'2ֿY‹cי+1v^•ֿ ש›g¦ֶGi!ֳ§ןIItֱp)8ֹּ„>צLF ץp¿†nֵm¯¯±_I‚ף¿¸IZה¼Eƒֹ^ְh‏#ָt@´ך{ֵ½l‰¨“ב©HU…R3™p !j¢“” ›S6ל&e£ז”÷I¸9eדnR6iN₪›”M›S6ם&e³ז”ֽ÷I¼9eףnR–>½U4׃89m"–אפ}מ£’}W¼hdם±­1=׃ל’¼Sƒ²+»¢•*bי.˜ׁˆmרCtƒ9I׀”°SBQz­ְׁ{B9H€¾@ךay(בtL•IJֿ₪8ץ׳י˜4:+“”|:Iסף6§cׂר¬LRry&ֵODI“³2Iֹ׃ה™4§™†Oַ₪יY™₪ה´f™dצֽ™9>-“fge’’ֻ3iַi™4?+“”\iIqה׃1 ¹ײgה’W־³i:µ1LqUק*sֿ­c»ח/ֳיז5®÷tײƒ~פהִז¸]HwM׳״*פת¨כ|f׳¸מZמt6)פQFs«n!5X³oׁ4p`-₪»†Ojצg“ש°ˆמ©שrf´מn¦ƒY!sc7³מד°?¢O=‹י6†5s,₪»†38ךiֱ<—†5כ€3XHxn˜F -…דGץן†e‏°‏^–¶l»א•-·Aw;«?X~־1טמ‚7לG£?חtwֱ¿ץ§VQ0אtwֱ¿C?fRאחƒמ.רw׃¾1›־NKw»Yּ ‎»צימ‚7ןN<‹uֳ»3‏d״ׂ^ֽ½K!{vהםA©S· )ֵכ9u´€ףbצ‏ן»n״n<¥ֻik™:bב÷׳gז£"§¥3Qקk[ג ֶ]‚Qק|[דEאך8g*xַ­±fdN‹ֿD•5ץ¼gֹ¾7צו[­{ֿRב7[Dףׂי¶·ׂ‰׀…גa9>׃»E—¶ֽr ´mqם»®+}סDiלEי<~Zֹ‹ֵ 8לbזֽd¦ˆ”₪w„t—¥µ¯ˆ}¿^׳ײ—,Rk8±*‹”Vך´H›-f.Y₪ֳסhXY₪´R§Elvֹ"M«RR§׃m¶x¼dׂ#.ױ$‹י¬H›­z/Y₪ScVלׂJi³ות%‹tfױ°»´R§E,־pֹ"ֶױG)­װi‘6 \®Hֽ¾1*4©װi‘6ל\²LיNj5™2¯§–iֵףzצ~@ע{ם,\ַַֹa2)¸$gרP=­”fא×x¨¢ֳ‰ש{ׁ˜¨}®¯b‰n×bu%ׁ´‘da¥¢c½o‎:x'Mt­ַ±Zc‰/>>¥`[¿ֲ‏7"ֱ+@™שKOֹמ׳bך5+—›h¢V‚י¦Rq(©o)²³מ¨‰ֲR×|«·ׂE¨>UיV#Mֵ9ע¬ע…«>MשbWbב6ZH²¢¨ױ'*×ף®u ף®(„ץ©·×x»/]a4כSoֵ‰׳:דִ+ m¡'7C”1zםן,\K פ¥k‡!z_ֽ׀o¥ggTא-…I•€‡^ר«'i•ל«¥7?b%1 ±לל{©דֵכqµ·ע—{¬ƒ*,הuׂ"0ןf°µֳ:B+ YA2B=’#ְ™Eט#l¼4Iטֲ¿uװV˜₪,ַ%‏z‚ˆMb"ַ¶’עי8-s¼e¶x0±nֲ†%ֽ— ‏D/ֱ6¥מע¡ײw?₪ישi`7—־~=ְX+nח‘׃/§ױG‎`ױ¡*†ז4-|–p6@›M|‏ֻ>5×zS@?רֱ*ײu?הה…:T–„… * …'4(ˆg<]ֹGYּw[³'ג°ֵ%פ ל¬oM8׀… 6” ׃לOטב@¢½ְ±י~א@1״װ†שA״N”{@ע¬d+…†טֻ qי‏ְ ­ ™EW)_‰yױ·צcBֵ3(ֱ.n.>=lSז¡…8-=~*` ָֻ^#“)„‘=׃g¯ג£ƒי i¶ֶ¯ג¯יC×£b™ַo°Eׁ3×D¿­סְדפ×N'ָ ÷†ׁ ֲ‡פ#ףE‏} ְ׳ג1H?§oH₪R7צ?d%°z‚Csט”axhˆ˜G¹vr†ׂ—BXו+C?‹j^]L‹U´L¦C©i±הstu׃’¦$©]¾,pֹ•$´ִE"Cד§54Cr ₪׀׀d`T סylg¢±"lHA‡•5p,V¿OXף.R3R§›׀uJײg/M‚kOoe‰?ּג,p₪ׂt³ֻ/UOK#'‚זץש¿ֿֿםשֿ‏רדף¿ֲ’ױוש?בןֵ¢K[R¶a/ש?¡a¬’«J–{ֵ¼tJ?EײGl}|‚גש? r~‏'m!^n£ד¿w4˜]k’kMd ֹlB‡ְֻKzס ְq׃4ג>׃ y4ג9I— ­ֻX?א¥vbR™3.Dcֻ…’¾„,‰‚ °שײ[ַ’^Jב–הֲf†לR–-סח8÷?PKן‰~k״=PKײ}׳Jmeta.xml”ֽnװ0…קח:q–g·»»¦”Z­|F¾'׃\×lו_®_ ,}²װ›d‚pֽ×P6״ K=׳×JׂK+¿2hZ’(÷%±טB¨±…ל׃₪3ך+·¹TV‏ײ‚P׳uXדP› ְ׃׃S׀©#ִ•ֹ;3 rׁ:”†l›נ״P-»Ik=µx÷³CQƒ~=ׂ™ב<lַbאRKƒ)ך§¾7¿wאָOַ׃mc₪ֻ.L&”0װj“ֻk#tHB־Ctr.Uu{ץn1»ֵpU‎^0כOU2חZ‚ƒ‎–+m.ׂזWףµשװ|wֿ{¯¹k~4קnqח5עַk¾4?ת·“?/ֱװױחcFPכ&p"m%€Qב5D$ֱֳֶק!׳z pD³¹†‰g®'c-f1ufS•U4©PֱוE§M¥>‹אׂ÷ֿ5`Y.ַ(”‡8¯L-}‹1|¾F/“ר5F­ױ7O ´®\Zֹ¼®nיu.¦+eW¾÷¢¹cE}¾¡C´״'ב¿×¡™¡ֵv”p”װנ±'^ u¶uMּ 3(™C˜ ×r¯¢J+‚2חר ד9|0[•Nגb#•אֳמ­Wj£=x†ֳנqXbאֱ…‎ׂ¿PKA‏O@PKײ}׳J settings.xmlוZ[wג8~_‘ֳכ4—₪בt˜c&$ֽ%ֽ›l p#KIa~‎–lָdtX=ל<°¥×r¾×’±סֹױזֲcפ!WVָ]aך0׳£ֻ‡dl^ֿ‎Q׳¶Xx®÷ּ }LוµְRֲq©¨&·r!§U†„'×שXT¥Se¦mױ««1³ה†xt‎[ITףש(¾E7_ז‹•J%/u]xֻsY%«?²b½3Rabf¥B¡O~ח®vB~PM)Wכaרµ;ַֹµ'±¯tsµ»¬D{ָֻך›‡£w­וםח)¬78Fcהצwה6€;„ׁe®V¼¹¹/ָ¦s>ם^ָ£ִ ט־= מץ ™)¡^gl}±ט‏¬9’סד²WR &״‘״59\H!ש‘‹“ּ©»¼u|וש׀\9’װ ֶ “ֹg"h°YL_eׂ(‰@»ץ’³&כK1i00&#÷ֱ ”ֹ״|G¢'[טַפ[+ֿׁ%~fu״D›חא!q‏lG 079ף-,ֳCָ¹˜»סFrנ&«K°1‚€lˆ£¥²jסµֹ¸ה˜ץBֶ±N4=«v² פַָמqx¥G5׀o‚j\ֲר₪f n…<־>ר3°ו#B4נש;ֿ)+}=rֵ‏עִּ לFƒZ’‚Yֳ<²“ֿ¡b«\Iּ<¹ך""¢kז³a€v†”\ז ׳UsK‎p­¨¨{₪ =.eaָAc”| צKי¬u.©²?£ט׃ֱחVֲ²½€שׁw>זֱ¯טישׂ*2‏G‏†ֵיpעWְ¯—־ £kָבן¦a¬,ץיֲ?ֻ¯x£–Yרi›­oׁל¶0mW׀“סb<sר‎ףu״¥reׂ×l§חz¾,U"4›‏57_ל™¹—H8o™÷¯½‚=›†מc!ך<¢ˆ¢†{³aן¼5ײ²ׂ‎5|qzb‏:'6¬¾כ¹?"®O~ַֽ…כKhײ#ƒ±ס21כֽa©÷­i9–w<´^tֽ°o†w׃׳zr“–Iח׃^€‎ֹp<4FO׃ָ†=‎ץם›םO £6†…Joׂ4'¯…ׁtׂ˜3³ׂFfcYoN§ץמh÷Z ףVתƒ|C¼w‎ֶa)‡2?n/ׂ`ֹ7׳ע^ֿz¾צPKֳ8@­×‚/PKײ}׳JConfigurations2/popupmenu/PKײ}׳JConfigurations2/images/Bitmaps/PKײ}׳J'Configurations2/accelerator/current.xmlPKPKײ}׳JConfigurations2/progressbar/PKײ}׳JConfigurations2/toolbar/PKײ}׳JConfigurations2/menubar/PKײ}׳JConfigurations2/floater/PKײ}׳JConfigurations2/statusbar/PKײ}׳JConfigurations2/toolpanel/PKײ}׳J manifest.rdfֽ“ֱnƒ0Dן|…e־` —‚9ו\µ_א“X/ע.%}]'×¢×*ֽ¡ַ]fhוֽצ8לC;4`k§g*ט׳|¦>yה&¸®¯^ףj‹•j~ *!–eI—‡^הeY¬E‘xE‚«%yL,ֶ¼‰ ­FוּD>}ֽע f×y%´N:¼90;¥¿£:P˜‚Dƒ L†L‹ת(-ע´£&)¦ק}‚Gm‰‹-®²ֻc1«¥£su¿¹…‡_5R`ֹד¥פ¿""­ƒֶ?^v¼ח}¡כד§“ק־ תF÷‹zק†{ ײ?²V‏G5ׁ'PK‎=«¹ƒPKײ}׳JMETA-INF/manifest.xml­Tֹnֲ0½ף‘¯Ul’J"¢¥=ק@?ְ8“`הM^ש&”%U"*¾xֶ¿קֶדסt¾—"u\«%xˆ"PL\U9תZ}ִc4 ¦’*^‚ףֹˆs«2Mw™¢\זY¦ ¨B³ Aשלw|v`:{) ¢ _ִֹֽy[_¢ֻ Dl¨הˆ\¹,K(8}m GװֱץM©ד®Nלaןי£aµ r­(ר“‰×®hא’V@‎^,‚ײ:ר˜Q¶;²[sEmג“3,8’ ;#I׃y2|i¬סd´\$‹וףכoֽם,·z¦ֹ´עmחr¹-i·{ב:_ p‡•אידµ‚קM=^ם›V%¯‚=<—h\m ײ¾רq‘.¨V³.Bֿ²׳°-;ˆ›¨§דeNֹ¯nצ PK0/Y%PKײ}׳J content.xmlל½nY&x?OבֳF"$e¢,ELUfgUb"²Q… „­’w8י*§3QWשMJמ¢˜₪(J%.ְ זbhװE?Dת}>ְ<ֳ״Yם˜גצ13§gxug¦hnfחֿעןgףשק£ֱwׁהh8>|²£מ+;ƒט0‡ֳֳ§Ov‏י›_ן9;צ¿ֽ8‡Aפ8ַׁבt/N“$O=&¿>9>{Gֳ£ַ‡Atפx<?Sֵ»ד±ָ•£י£ד›ֵ§§ׁק׃÷£{3ֿz~‎‘סֽג׃בִ{Qקato2©גדס¸מֳצגq2כֿ½יp‰ןGֳֳoל<›N?~פטֵ‹/פ‎סהי#ױuGרWNpְן{~<ב»ֲאQ4׀`Gװ}ץ»ק zuיCק$רׁ₪צװxS/·×G=­½#¾{Z25ֱ3oR{oא›³ֻ«‡ץ—Wֵg¼י³’5q}™ˆכֻ/ׂ½09¨;÷73Uֱdר¼6›הnסשסxּIEֹױֵxD‏מ~Qy‹ֹpM„ƒoנMZrת(¹c/תmS¾סׁD•< ="?ף›ֲׂW—/¿ר:xxיֳֽױ7ן ¦a:3´¥&ׁףסd'&®/0“ױׂ8mֿ¦£עד~e·>„aב­ 9ת£הט'oן»aפג?םd$yץ†p—6‹«ֱ7‰r³עUy„מבַ8"©<וz(&L$÷‹N`פ‎ףh2D?y#״דִּ]?7x%ױ]ֲ2}˜ִא,¾f<;8J6PrPֶֿ Ogץֳהאz¯C‡cֶֻo\ֱׁ‘>-|ץ‎¶‡װc¢טH‚Y ם|ֶl"?ס qb לֵ^ם…Q0:תלoˆ,ח—הoDק“Lשת‡lׂDn³»†£–~L_‚ףQ”‏‎שץQץ _O½Iי ™%שור` ¾צ_~]0־_{ַֿG¿ָE.­zס¯¼ן†בא—_|©•¾•B(2ג…דֹ!VחOv¾¼ֹ×=ס¿|u=¡—×¥ד.״־ט¿ץ‚g£dןׁ+ׂ±3·­שןֶ£4¬°_ >›ײEף,ל־ן ׁ(x¹¾jEֽחc÷/ַ‡דע¶tcֱ צF‡‰DJt‎ֱ8&‡™[§Abֳֵן£•₪}q‎°&~Gקִםdטt8L\¢¨ך/X@ק;/¹)ֳ÷b 8V‰¦£µ&s$ˆY3-‹#Yֲנx4e~ל„/¿|9< •~‡®ָ¿ֶ"Rf׀rײm‘T~ב÷B‚¦o¼gcה±הhב?4ubX ~½|•¼י°”¥jˆד }_[₪•¯ֵjVּײiַ:¢€`v½|ט£ֳ£#)ס×ס:×z÷₪·B‎ֱf{m‚ׁ ץ8ךזֱ/ַ‡atxY”yK½צybטGל®¯״,K7ײUm׃&ATTױ"‎Q™N¯{ַ׃DגM‡ֱ~wלסg‎ַ¢=ק&׃‰ק!¹€ער=עװ?D^b›ן°׳¢״ֳףֹרy4™ׁ e/"₪)לרֻB‡°ח ½ֳ‚ׁ 8,<¾/’±פq~‡O}ֶG—,kMX‏ץx<Xז,ס§ֲ &|ׁ!¦’'‏סׁt°w4<|¼ץֵx&7:₪כMHO׃ֳ׀›„_½ †–¡ֿ³6÷ּv@ס|}סֿץ'ֹhe’–Yy »lfן«ֿ† s_W‚ך¸¿§iֿVk<;×¥–Umף{תצ,½ז{ַr\7¬(¨¾gB:®§iֿNl¾wֲ8שױ ¿§i/N׳|v¼׀ˆVD£´Pױ²C2!z׃^>²c%P V½}dַ–*´׳£Mסb׀9Z>r”ְ כמ¬G9±מ†ףמ¬G9±o¸uwײ£\׃ׂ"H ©³}ה÷ jXrײ£\7 B}ט£”:ֵR«ֻ₪״=ת׀T־ף3׀Wִƒָ•_:}ט°% °]+ׁיC»-ֹ¶–ו_zQחyfU7±{נ@}hDNo†Fuִא`=÷ׂSֳָ¡¹כׁ•¾z:$¶א®GW¦י¸ מ®GWVh‚Zפ>ue¨X×כ®L{פ©+C5׀Uh~אBץר{p:װˆ4װn÷ָ}ְ ¿÷¡#²Bׁׂ{ Hmכס=#ֽ‹ˆ>U•>*'ֿ³-c…aI+f!,פ¡k9yq¨;«~ֹ=ײ£†‡fהֵ×oר+d½ֲB*:¶ױYa׃{ ,¬'עחC|>Uי׃mCֿ°×כb=ײ•#ױ²aGs-aD"ט '©ֽ`LודסםE ¨¯fPׂ3×jס‚צh3\IyB#R!=yj3„DiB5ֳ0C Z‹P‰+—×»¦W+ v„…µ₪U=ׂUPO½"$b¹<_¯¶״=zװsס˜†¹b»׀{ ,¬)h&ְOm¡²¯“ש@יj‹Pƒ«7…¥טaPםֶ²{ ,¬'jaCֲ­j‹א5ז•¸÷_aa=÷ׁ |זo·÷!װV8‚ִ׳װ1עVo ;´}½קa¡Ohַ¾¬״׳פ }ךFG 7¨fa¡ֿHmהG׳"Nן°׀cעRumWVפ~׃{,´Wƒ7²ךּ»ֲֲz5­חֵֶ ֿמ°°¦ִ§ב9L צ¨OU/ײo…I@ן°׀g1eZA¼"Gi™¶¥ƒ|¦fאa]²`{ו4שךt5Eֳ›q5< ¾)Zum"»ֲB–“GQq*Y ק@XטS¾¦E+xפ }ך`?׀Cu…·Kן°׀§צ£ְZ2Dן°׀§·(f[ױ,׀{ ,פ©•ה{ױ9~v„…>½ְwװוׂל ‚)‰WַGCפת„ֶ¿$‎Wו+«n®׀&לJ;Hלd©—״qLt”:5×$40₪ֲ;6× TSְ†&:"W2M÷?ס$Rפ§|¢½G ­Eiתױגקtֿy=צם(Zֶ¦ק@XX‹s­±†°(®%‘«9!„צ¨₪5'C·ZW±{,´´…ִ©Y•`ק@XX‹.ױ|׳MD?ˆ׀e-°װ״¨6K“{ּ׀ֽ^{@,„± ׳V׳ך׃  ×'¯>$+„…µ¦÷¡oU’ל כׁ¡o>¨V`=`@Z‘ T­ H CXP¶8 -ע-;yכֱׂ¢ָצb׀] »ךz‏§תP—÷H ױ15ֶ×¶ˆ ”’“ם´;נ&O‡‡{£(&4w„‹ bW1¯ֳֳ0^$¯צ§ד½ּPMµ¨׀׳Sן0פ&aכL‚;›L‎¹ֱ׳dנUY!­eע›aF5 ¿›T3ְ¨ך¿ֳY3)ר´כ–ךיfu!¿דO`/»rך¾aZ«Nk¯לaר-‚e­kעת 7²ZjG)ִ׀ֳׁװ›Lכ¶כhR#ˆ x{¿ץ‚g£a4ז±¬ֻ–½2q†wִ‰ ’·D“5ֽVנ’uםש4ן9חטf¶mֹ#¥»:קlױתהֶאק•ׂ8זׂ {םב/†~4סP¥אkןנ¨:ױ§;¡כ03e gחsP›ָF–lֱw£‹§צil-6L?¨®¢fקװחQkVƒַJ2Mֳ׳ צ•ײ ¶­צ9ף'‘קםֵדI„^‎ֿׂ²‎z<kֽ ‹–­רֶ°רJטC´f`lpעU ½xE½B~#כן7‰שץ=’%jוזאּy~עררyמ׳›¶­¨©ֵ7‎ב9²£‘a—F‘F= ַ׃i.‎†&ףֹ־¾0×ט­=mL÷_&‚*¹vפ³99›rא%ז’5ג–לװה#ƒ$÷‎ֹrEv…_ס¡־y×±dN‰]סֲׂ?C¹¥U:כ¿N°Qס;ִx £¢`X\yב ת£ײ ־oץ´ױS­נmW›¯F¶2_£בQצ†/ּtֹ†m†וWg״Fם–§[ָ¾ײִ_)ך©“¯ז)Z[1´|t®bט÷ׁZ@צ+ו]ט¼ֻW•ןצ¿נעױ´וּyש:rז-0ףym¯QV7םנ{z:ש׀L…ְ¨–׃עµ¾¥CױC·^X:´µbטu²ב¹&­<ֲ¶yC[ס׀¡•׀C "X0₪¬ֲRf…פ׀6­C) E ¸כP-»כ†dׂZ?,׳» Tך«®²’a¯Cc/סDױךגרַ±´@«לוJ-״a[½R*׃Zְ;,gb…סװ„aױ״5S‡©וש+ן»aּ—k-€V9-ױ״¡מTWִ•Zlג¯װנ> ‹׳¥ַi·m׀קU׳0‡‡ p#ָ׳"+£-`nנ\. ”w:¸aנו׳ yלRc7²ˆp]¶÷װֻוLW‹{> \ֻ׀tcש¸ױ¢¹ֵּעא±²bלu÷¯ YQ ZU"₪Z®תֶˆײbױ7g¾6ֳֶ';U‘iַJ ¬­§ק@˜לN¯6aׁׂ/®‏¨ »ְd3pGi…_f Oםִצ¢uv„…ur7p׳;6d¡“ןkְֻֽ×צ„+½ֲBz¼›ֹjֽ`²׀ ‏¾ײ צ±בYL׃qWH$z„…½–ֱק@Xט׃µ4_YU?akיƒV¡ˆdC:ש"ˆײ ^²יFJvwE™½ֲB9#·•״ס!_׀O6k'ײp½ֲB:Xq£״„m…>ץ«©¶³B9ׁ{ ,פ¨_µ׀T4§z“°{ ,פ¨_U;p!,v„…מפ«pU›Ok†³״™½¥“›a$2]ת°JbKDײ<+÷m]mָ±{ ¬ֻ5װ—fMױ-jֽ כ…whֲnט†c|{yך¶נnפקoqƒd²+hl₪/[§±I₪ַָ›¡%>fַצ˜Tj₪§³£ֱּ¾f‚Y¸o ׁס!0«…ֲׂ2ֽנ;c¶ֵג))¯¿ֹh´ײ1כ׃“׃ׂ׀SpCדמֶor ¾ֹם–¡ E‎0“³bֶvBU§fr¾5fתo¢‎&§ֹbֶuֽW&§©bֶ׳4”ֵל•™&n‰ֽ² ֱZם‡™¦m‹ַפ¾ֿLZ¥-n\E׳¢¾¹iGYpד©÷·¦ֹc·´ֶM›} ´<L[„¶jV}ף¥n÷2t5…״qOteטדnte–½s׃•%`״Z¬ק.׃÷2 Gױ¿on÷²LS „2ֵ~¸ֹ£±´ֶMשAte ˜¶×ט}[׀y¨—¶¸ס|׳טָƒ¾´ֶM¨{^te XZ¢r¾¹י°פ׀סתײyא—¶¸15ךNֻ½´ֵם‰5ו=q׃•-pד}y—¶¸q\7לNֳֻ´ֵ(~vZ!¦%nlֿצ¢¾-›<זL[ר÷׳{l0>׃7ֹ© ֲ¾%t־¦-n|±תצע9mqֶ‘;7]¦*aןח¦+[ְ‹ֳָמ[{זcZג†a¶ץֻMW¶€¯¹aן9‚<L[¬¼¹ינ0¶z_›®lײןׂ/7]יFA:E׃7הkC=s׃•-¾kצָ#ֱ´ִMטj׳»טcַ{_›®l0p|¥oֻ&׃7‘×FBקx?הbגFsB»ןָmM¦5n¼8ט»0%9׃7z"¢>7yפ™¶¸qµָךךּCװ´ִM¬Yn·“ַ±i‹'v{—׀yH›¶¸!נV=s׃•-»¡פ¾׃÷²b?נ¾#PyD›¶¸ =ֳך;G‡®i‹‚¶ײ37]q¬±77××ט·„־£´ֵ¦jןח¦#[@Uuַ‹ת¶:ףX8mqcרzןUCyX–¸1שlץםהrג&´µoם™ֻi‹›ָ׳ץ¹יָP-ױ•¾ץMB§-nּ8סqתז¦#[@µ,]תiy`¶¸q,׳ל;•Gi›׀נz_›®lֻױ=¥o3׃7ר=¸י°#r†RF"ֿ×\ צ‘‹>”1¢«eVױחµֿˆ\h¢”5ם×א´¡¿‹ "³×•·uF$סוJ "¯25>#hvC ¢¸×`÷}F÷ׁל†i*A¿t£ [‹ץ^FI¹RF,32×g₪ֽn8צTֵZg₪ֽn_שA°ציF³¯ּ*´ֿH7}e¡}F÷ׁלfל~¯+"‰Wֶˆejװ«­%‰Wˆם9F¯¢$.\)#^א¸½:V’ˆpe״Qכ•‘n4»םטJ¿גW®'נz5ד%סJסl¯ַ¿}F÷ׁל¶ןv¯¢$ז[#¸Q¯ײ¯$[)#n ¸½*DI·RF"SיWJ"¼•2כn״k\K­׳´´¨WַJױ­”7 ֲ~ֿH7}e{Ltק‚״ל5$‰בVֶH )~e¡Wt£׃t~W₪ֽ¸×קךXI"¶•2גQ%זTכHbµ•2ג+¡«װ’Di+c$װjִנציF³‡®זx½ז%‘J _יץ°Kb²•1²²1«}F÷ׁל+»¶g₪ֽ׳oָT­”‘Xקד^}vIלµFTױ‰;¶ֿH']U}ֵן7צ+‰·VH¨;F¯+"‰´Vֶˆ¦״Qeֿyt¢ױD?™‎zˆ’טj¥xquבot¢Uֽפz®E‘DT+cִ0,ױךױת•ִR+eִׂ-·WEE­”׳´ד^MI´RF|׳­פlt£׀r*?::#’˜i¥D¾®קֻH7װk€N'­”_ן9$‰Vֶˆ¥תVוWְg₪ֽnימפ*µ$QׁJ1c¥a¡}F÷ׁל–ˆׁ״>יF³eV~I¥}F÷ׁלv כ=‹n4»ד:VװkzZ`­”ֿpmM’D_+eִ"¿׳אƒ$4[#®n¯’¸me¬D˜k‘n4Jר¹ציF³¯ִֻh‘n4J½ציF³¦oץi”’+eִ "µ­ױfקCֻ°z4JB׀•1ר–דץ÷"’רt%hFל„a¯F£$x]#¾Z¯!SId»RFVב0¶ֿH'}5נat¢W# ¶ֿH7tm[ן5/‰¦W¶"+1 g₪ֽ¾תֻם3ׂ‰f׳bֳױ¿’ }¥x‘aקך!J"ר•0¢כ¾ק»µ$ב‎10¶zµµ$¡±t¥ח 6¯6#«¾^ײ>#hצױ-k‘N4ךO|µֿH'}ץח£g₪ֽ¾ת³^ם3ׂ‰f_‎ֹ¨¶ׁ»ֱ ׃םPU”>» מ¨~ ץ»"hצ•ןj‘n4»8ׂ§ֿ®·‚AW¦xֲ`¶׀ףMת•ק0l¥64~-–Fב׃cן©ְׁ3nmדדֳיה‡פ§|ׁ.—„נiI„צנdַ‡hh˜^9פֳ@7ײְqֽ/d™^e‎R7 ֳװv‹ k×״u>ײ2ֳ0ץ&ֳaˆנךzgf´ָ°לח׀י…Cי/f×yeץ א®)Cx—†כ÷}צט@¼ײX]½Ugµ= }ֲjיתAˆj¢hV^‚׳5 J ׀·,Q@ ÷FDyZט{ ¢ײזDש†$×m[×Y!Dµ­ ע]¦­…ˆ¨f.§CT¦R sµ’.הסe¦נlˆ '=S¬ְז×פOCt¹ v ִ† v­ֽW×­*z¼3,׀Lj±ג…KY®ֽ˜ֹf ¿ˆ= ˜¦† אi0-ֿS³ֹּO›¯׃ֲ ײ‡‚¯4™–µפQ‡?Cֽ2: gH³"O³6l†Z± kֿP`¡»a3װו¼vqClֳֶj»FC€ַ³ׁ€]׳<µb׃ײ'i1»®yjֵbּ“¬°]׃<5D¿\'׳ׂrs) Mנֻסֱ0|ם ¾4p“Haיְkֱֿ)¹I L˜ָo†ֹוF/_¼ֳl^$[Hעכ‰wרםWַׁ3״[!¬אדֹNDִ­עx²ףק_F•#¯“ױz5?ֲcז™אPPm×ן‚¨«\9r)„y¨ה"¨ױ׃ׁ%ם¡×c kJׁ÷k —ױB¡ִ÷*ׂ2׀ח5!CJ×EְּYn@<¨|GE 4׀aֲ= ©EF×’B1 ‡K˜ˆ.RקּT„#*2´UP¬*2עלׂ¨e!{ @׳Tֵ2!=¬#§`HֽQl״ִJ]פ$cט7…CF0 ִ§)׀ף`­*'¦`ָ עLפגµ †¶RVתjֵ ר¿₪¨pT״²ַׂXח¸ִף(2v,¶ce¥©:&Lyס- †4ױְ„M¬¬פ1ֽ עA D–(תײ;°!e¥;†X *D…i[:H¬19ַםX ¢C  ¯¡`ָ״,״ִJQ4ה“±†װ˜(") יH_q †פlײבDA(ׂw Xcד T ˆ`׀ז…ִ'(B´ֶ¥¬פqװ@aCJ0D†D(ׂ±½t.¸C÷ֹ†…|!ײv‎ י'ך dַ{ת † -¹´ְ‎‚!ֳ׀R ְ°¿`ָָT` ״m_0d¬»ְ‰••>nr.a†°S¾`H׃ׂ"״ZJ׳ײ]״¹צ¼ י†ARVתxj9  לa/ׂ7C‚‏`ּ † ‚„Lx¿7O{h[‹ † |׳„ר &°_·@ri~אB€½L`?mֱֹׁAֱ™ְױ‚!]ֽeQM`Sjֱד+  ל,ֽi^@ ״ײY0₪י¨1ִ€7M•Cתzr6ACJ(u$ ל-l׀6 iZ‘ ±ְ־½‚!]ױ ־˜ ל+ׂ<˜¾צ¨ ֹ ))}אx&°×`H[QUQ l*R³״צ‘”>×ךD(3RRת¨×¯רל\JJd•Xi`ַIׁ÷ֲb5ם!ש!5ֵ,Hרְצc if2*C€l`חAׁ¬ ֲ¶ יֵ°d ל'(ׂק\ֶ¥¬פ1hA†”•>†[ ˜OS¶„ דR¶^547†‰¢vױ°tֻ…q)+} ׳´c׀Zֻׂ †פ]׳)/`וx  ־&hH ָ½oָײA_¬² ¥R”f₪@’ב¦ּח[ T¶vך`|BYSKs¥€~R”:× 3Ad>j,Ei¹6ָ>“­}WM׳¶u­}W-ױ·@ְש¦lם»jימ€פ€lם»j¹¦ƒ¢©²µן×ו[KY+װ =—­}Wmֳ @5¶¦lם»j[–תׂ)[ i1Hhֹײ¾«¶ם†hbekUױa5¶¦lם;’¾$זq ׃\{׳ ¢TVhe÷ "[2טI]‡™„²%ף×+&,$[2¯:J¸°]'+´] ]״’Zי×1ָ©”-™W+ע#’-™W8פAֵ3eKזU׳PU״צ‘-™W]ַע`a’yױu#E·eKזUֿק|´ceKזU/ײh¿)[2 ֵ*לָJ_3 d‏–ּ«¾D*ָ•–ּ‹WַGC„ץdחט8שy`:io‘okמ iV‏j *Jo7Aµ‚R­fֻרT&° %^4ַV¯נK״2¼4×ֻKֿנ¦l‚X°תI¶}A ±A¦¯l‚ר–דֱ¸”ױAרל }'¾ †×¥ֱ4lJזֲ¾םg¶/¨a₪Y.(¨%¾ FV₪ְ&V¶}Aָr)k‡F–ש !e¥OD‘ע)dװ(2bהכֻ¶/¨±ג°rOצ…dָ״‚E4dװXSU¶–²ׂ'6”״ƒD4,`Bׁ¦j©¶€CZ±ג[²jל8( RVתִqהk0¬%8 )j…Cbֹ6$כh+1D_Z²b#–lד€†ג*lHIי£)vƒך‚,ֶMq<;‚װD[²גֶ¡גR¶q ךaךo¶d4U7= 6±’ׂGSMUu`CJױעtP«‹%8 ©¶iֳ־¥lד@bQv›XYי£z~Bן³d´ִ×װ}¾”m׀4ױנA]o–lד€¦%ֻ‚×-ֶM3L´bֹ6h ¬׃°d4ֽ2tPC%8 iv «ג·d4ֽסbˆ%8 i®ש°ם#+}´@±AשGK¶q@KװH¢₪ACJCQP.’mH†$נd4CODhָ6h† tK¶q@3\ַװ ‘JK¶q@3‚ װa\Jב9€₪lד€fִN‚ּ-ֶֽ4tזׂ6h¦ו™ p¾%½oת–S^ׂ ת–¢÷ h K ׂbָ¥¬פ± ‰@b]¶q@³ץHw!sK¶q@³-!¾Yְֶ‚!½״•ֵZְ€‚ה)עiAF¥,T»זט†ֳv¬¬פq¾ֱ2מ°\\=>צ^ ֳס‹=\¨GדIעההXרb,ֻ7S+÷’/ֽR*±נ+ L5©®×d*?ױ±iרָײּ7¡J׳דָ@ךXˆ*C‹P` }3×LU![ְ*fT©j›·€…ר¨2/‚y«²µת‰,‹mא“•״¾c K¶V_ף]7°ACײךke†.h-¥kץ=/F`!eםֵ0Qm6ֳָ‘­ױG¦›ֲ°dkץµ00"P)%[«¯E«*ֱ,Z}-R5f¼ֹײךk‘o!H9ָײך'C:ּ[•…·׳¢׀ \7P¡I²ץב÷©G.Hֶ²ץב÷„×ס¢mתpׂH-[®[fה€ךjlתpעBd״²ץב÷F1·lתp¼׀‚„lתpװBבְ‰l}¸n[†ך³eכֳuS$}dכֳuKK¼Z״••>v"|@׀־¶l}¸nַ:† )+}ױ@ֽM¶l}¸מ,ֹ`ֻײ‡כ{H“ָײ‡כ™ d˜-[®»‰ו ֲּ¶eכֳu7p*§-[®{J €נD<ֹ-ו׃‰ק€=ק&J¢?צָC¿$ֳ‰¢קחY¡¿o„ל ֳpִ“ֹ·I4z²ףN“‘״ֶֿ“ב¿%—״ףAע[4)רµא ס8!; ‡‡O“9W Eג«‏xF|ׁz>GֳpנלױGֿ¼p‚ו¾ֳ‰ק‚^?ק‚בפ”קV‏ 2ַ¹½»zqT5ֽ CהינpoֵSִד“^t‹ץירyֱU<רd״ֹqr³ֹררי³„“ס$z£a¼H¨– dW=׀peכ>ס0_e‹Gּ•¯;Cfׁ;Xozֱp2AשXr;2 “)˜Dֱפ“d״Aז¿>¥o ½ֳ YYפ*| m׳‰w4.M¢Pרכי$…¿‎ׁ±רSןאְcִׁ7ֶ“½בa2ֻGנ$צFG©ב:#K< ֳהםGSן0פ&עuֲyNˆ% רמ¥ח…D§jM­ל„¦דƒֳ#‚‹‏¹‡ׁ÷w„kOׁמC‹-P› ֲHמ₪vַˆ™g¼לƒלF£½ֳpBUWֳ'‹5™&כFט…l׃G‡azm_%³׃פרשם[soֽל9÷ֶ€=ˆ4שדׁנˆ ‎ּ>BoE%dRp|אG“ש]ַח)*גIר{Mש‎׳?רדׁ״ֹ+צֳב';גֵA2בֶזJ^״מֻ”1x¥½Dpל%ג%¢¢dהשֹֿhרפנ€©elֱאKOv’ש,jי1:¾G£ס‹(ף““‰IN@Pעg2Qדח"ה׃¾I—ֽײo/9kfV‎1jf–¶p’_«ײ°zvץ×Wֿ†.כתיץ«Z?´xj+glW®rוׂ5×¹xהzoכgn׳¯z‎ ֻ׳כךYױ«^= S{ײ{צv‎×ײO-ײח9•«\9¨׃zײ{מv‎×׳÷|½®Jo—¯jש€OkGס ?׳‰׀hֽ6B³]½m„fד׳o¡״•Fh6|‎¶M^½m„f“׳o¡״•Fh6|‎¶^¾ˆ׀טֽ6B³]½m„fד׳o¡״•Fh6|‎¶M^½m„f“׳o¡״•Fh6|‎¶^¾ˆ׀ֽ6B³]½m„fד׳o¡״•Fh6|‎¶M^½m„f“׳o¡״•Fh6|‎¶^¾ˆ׀˜¥x4¦5/Xע¿ֳ·eײC y“';‏ֳ‡¿¨ֵם7C¦°NE±˜zכtצס/lת÷€W×(ךRo¥^E­TסנֵW~–R¯ןH x¥")?K¹׳oּ¼NE1“§װכ9:^©¢טָֿRצץ¯QQהg)ץתx€W×(גס³”{‎ֶ6ְכTרy½£l©€Q k[g²¡±mֹfG<¶u&›ײ™lvtd[g²ֹ1“mֹfGR¶u&›_ײ™lvװe[g²ֹ±˜mֹ†Ghײ™״:“‹ײ™lJװe[gענד+:“M‰₪lכL6#f²­3”טָ¶־הבַA¶u&›ס״ײ™lFlc[g²1Q†u&־¶־₪ֽ״†­ְ1‏ָ¶ה¡¬¡£׳>²­8yk¨מ+׀sָײ<”5װ¡ח?²­?y(kײ‡jןתp[…²b ֱתPם]n+QV¸"`}¨ץ®·5)+ײ¬µץב¶.eUל~ײ‡ך”U‹VˆZ[ q·±Vc;6,•ֱֶv:x י#״־ֳXC¨®!dy(k¨Cֿ!dy(kײ‡jןתpY¯aתpY®¡ײ»>ֶvVֶvְk״·>ֶvVֶvְk״·>ֶvVַvְ‹״’Bֶv’¥¶m‏R R·םG›²Rצ£ X£mֶׁ¬װ¶‎h3ײi~´+µm?€5¶mּJm6d¡6¢‎HU·5*״V§lvָc[™²©m=f‡G¶µ(›4V¡lv(e[²©–mֹf‡]¶5'›V›lxˆ¦i¥‰צנC4dm‎(y(B1™?׃>¼D/†בפYתkֱ’?פ`ַע<¬}ײ3X{םף°<;ך÷'a=nלׂ$<°‡pyײ> כס«–§a‎²a=^Jv´uOֲzL‎¥Ix²aMFףעDt5PSר¶חֶרפאf¯6=¸ֹכ·Mnלm׃ƒ¾~פא&¯6=¸ֹכ·Mnלm׃ƒ¾~פאF/f₪m#תƒֶlׁ7%ל²mDר–m#ת¦„R¶ט›46¢oJxdˆ‏נ!FפM ylׁ7#¸±mD˜0F׃Fts[i²¡ֱm¥ֹf‡<¶•&›Vlvxd[i²ֹA“m¥ֹf‡R¶•&›`Vlv״e[i²ֱֹ˜m¥ֹ†‡hVXM›!׃ׁ¡Qעָ6PףPײ׀QְkHkֶ× פעG¶a›‡²†:פעG¶¡›‡²†`}¨צ®·kײ‡jןתpִYב‹€ץ¡ײ»>†sV¬!Xj½כֳmHgUH~ײ‡ְ־×E+D­-… מ״‎´‎ק~סֹPרar5N)ס_O½ ![­@ׁי¯ח›_½ג ®w$zh®ֵ#\ן<5ןcirלד®w’·4:s2x†כ'‰‡Nןp½׃װ¼¢ׁ™Xװ¸‡¡ׁ±k—¸I’hhpזdנ׳;OוMNb'ףµmb¶ֵ₪ּטY”לZ=Z;ןlkח־ת©ְךש‎m‎CZ=Zֱ«oכחׂתֱt¯מ¦_W¬Pק©=כ¾mךµr‎4 מ׃תױ}₪כױך>­g·M¸®X?˜מ׃תױ}TכT+פרµ¢ ¡w‹ײרא ¶h›]°Ek|ר [´ֶM#״¢5nנְ­qS ¶hL`‹ײ¸)°[´ֶֽ״¢5n @ֳM†1¶a¿Xֵ¶ clJmֳ°F0ֶֶ¬װ6±כ´ clֶJmֳ°F0ֶֶ¬װ6±! ץPֲֶq< ¢ַסt|אM‡ש!y‎ֱ‡?נ?׀ד„³ד£hןhOק{O“קO"ן£';׃ֹq´ֳןF•4Gפֲכדqp{££h‡‏רשט‡½0:J&—®שש\Gׁ¿G‡ֹ†Q0:*÷Hˆ ‡GֿG{דדיhxםׁ}ַ¶p¿¦­Dס€—}דש£:!oI‏)‎’_M¼ֳֳ§iװע¬…ֹ דIrףS<…סD!Wֹ¿F·±x‡w<Oצ¦?ֳ±f «¼©ּvtNף¼אר¦X;->,Nףֵ«ֵl°x½˜Wֹ_7ֹw‹ֱג2¹v±¸E׳ן—ƒֵIrףשמ`ס‎ן`1K~:A׳_ץ¿§¿X\מT׳pק4Eqצי4>¯ Aח«Vכg”¸4פyעֿ{Dו צ!שכrס‎ףQr._'װ/Nֵׁ9שב2שב*yֳ=zCע<"jq–°“p°x»[‹ָֿׂקׁ׀ֳקֹpִֹ'ן;_¼B¯ֵw¼_”LKעמֱ' 5ט±K~q€xI‏3G¡™O®}Z—†¹Hֵ]2ֲ™YֲY²Dx°{´P׳ˆֶהFLErפנ‏Q3[¼Lx!Kx—׀ױ־ Vgי•ך‎´ֶ«w÷ׁ¯×knרן«¶ך&'ג—דח?Lש1רwֹײQֶW3G£ת‰:³·'#~‹₪ָא¼ֹ_{‰נ‹<װ~ƒמ&[‎›gֳ£ֱ‹סהAע¿£ִ¾><ֱֲqbeMא]Jע®_&צתtר]4רורא`|x4ריt2פ±ַפ5u;~ֱ„נc.ֹ†ױoW׃ƒO‚ סµצ¼Oק; ֶ׃gֹאץ<L¢£hע]מ%¦8•;+ ק)²תקֶס^0>roP¼‎כ(˜²´nגM“?£תG9a0“…ְo:RwJֶH¼­דI‘‡—‏¶¹ק¦ֳiעט4:H†i”'…מˆ¼y %ִֶˆרY"ן‘%q-»¢W—‘gעֳ9’«יZb‰¼1xז=F“G?¡ …׳©ףMףףִ‡ֱ[…ץ|’ˆ&4׀°¿Sפֱֳבױ ¦%¦¦(ֽ,Nצף¢¼®85תֿwjׂ©גװ?©)_Sc‏|§¦(e(Nץף¢85צֿwjRcגװ8?©)E‰Sד‏|§¦0‎“±ש”’ˆם„הU–MכjO¢ּgְV|E¨¼‘ֱ³¼ו_י%jTGoCג«ֵן”G׳«vְ’h(‚ז'ֲדfַu<‏‡«qִKopD„Dyt–|Mֲׂ`Nֱd°ףֵ¦^¡Wִס(<¥8÷Lלl /Wץ÷o7k¾}(¼]«‎vkשם(8רGQ0}¥®ױ}¥¼r¾8§¯—|,¾×v§גםg,•‚בגכם÷¯w+^“l“Gף‎u‚~=K‏‎ד‏ƒ$X{ף¨עˆe+`װ^TUֵ§ח'’$ׂ‡ֵk’1״E?%ח‚&YNנq‡‏yEמַ¬}`Utbן״9KGD¹)ָˆvם}¦ך. ×½וTtְO’7£הװYש˜¢ל¨ֿ…)־‡dוp( ¼D ¯­O3:״?¡,!´פnם7"¡( Hק–'±־H_ם×µ_5IˆP^O·‏>tE2g,Y÷¾©)x—א¹פ’s§©÷םQפ½¨­Xֿ» ״ ד=ֻGµ:‰U†G{¸‏ד¶€hHעQש›§V?”=¡רYש”|“\@פ!WִטM½MJy‏´x—O#‘¥EiO”÷£kd7אlR4(¸ר1snI±ְ-Q‎חר¿׃R(¿}»¸# ךע–9ײ^(?¥שח—ר58}‘G&ˆnd’sֲֶFYךs&@־נ§d׃¾O‏ףGZ€ל—Bב÷8ֳדHמ¹a›[‹9+?MyאשֱלןBע~zוױ1‎ן“›‘´¼ֵ”‹tנZ„+<ְMֻ{vF~ע]ַKm´ֱק£ֳַTFi®£מ×®©÷iXFQ°ף ֵ;u˜˜׳U'MUW¦|Lֶ¼ֶI׀{$j.±d₪Jbֽֽתיִ‡{Iv$ףר‘־ּ-)±¸#שgR±נ /ײ;& זdD×.נ†÷O‏~'װˆ$׃›•“]sƒeׁ)»ח'²…3ןE‰h‰oנ»’ ִז}‡ֻ^׀R#ֿ׀-ט´÷קר¿ֿ!רף^‘jL¿0־ֽ$'÷„t'ר׳Wט~₪}p[wֲש“†~‹ֽץ˜±y¸גן'[ת’lF¬ו/׀NM_L6/ִפ|£®^MlA^blץ.׀v>…mגװgh„d‎ko¨ֹ.׃ְˆֲ4aAR?{‡* PU־KלRבuc)צש׀I9k0סץieLֳ§¾ֱD&׃V"ֲרYEy¹7ִgַr„X´ד!KyIµְMz¨dY =—ַ־+Usשת¸3,גNqUג›“.x²ֶָQ״9¥ˆ”ָ{F˜%”"א‎‘Yf‚^ג” ©}־uז5·ל]axַt3’ׁo׀Lb™ף”4־h­צ.*—gX£¢K₪R Mי+jlXiע®3¹oֶ ‘3D$" ´ץ®ס^ §±לmDכG‘ֲ²H]™ײdֿ—J¡Vn´ִײ='“}‰u GטZ\ֳֿ±Nֳ+תN—6װ9^ֳ9ת$-ע\>—״ת»%מ›פ-Q¿D5¥‰|ׂ[|¨׀z`u~8eזַ=75fי›§·Pַ ³y‘!¢©₪¢B¨),5 וזַx“oק¦d*F;¯¢ר·ַ¿ף&ן¯¦××–VKW™|³d:׀צ^6שָ‰;m]ֱf_ע¾ט$ב*ױ‘? PƒBִ¯·¸ץףkEסֶ€p‹ ×o|P2Fױˆ”*“£AµS²אףA]₪n˜{ץ ד¢gx5sײפMMH~־“{‹g…Fטןף¶roס÷־ַן˜ַ4ֳ–פ @\¹? ס;a{‘+d!ח‹—פ¿ֲc ק\c—ןי§״½ ױטןל “#}ֽN6Qש$’…·nֹi¦z%¿L'¢ש>™ˆkגaֻn±\²÷3‰ץװ9GKֳ †/¾ֹּs3ו*צ™6ט‏7LC£#r/¼ע©ֵֽו>qת^uBTwP/™¼^g€%“‚÷#rQyֻ&ֱfדKָ§:#־p¯=5wlּ“ּ‚,סC״ְ/ֵַq@ִ A„ ¨¯חִI…יהגu¹ֲ“ƒM"נii|‏”† פKֱס–׃ףAװ/¼קקX <0†·₪כƒ¿LPװ ¼ֵּ_ו\_״"cwװM<™Sך¸'›˜„ש־‘¨ֽw ™°–±ײ’ ױֶv.עm€v&pˆ3dך¦9פpU^¼M,ׂ*׀  CODֵ‹ףַƒפ©כB™›  3z¼#¢ן–ַ$ֽ|G™§¯ִ¬¹˜ו]~³א1‘¾4 ‹¥[mֲ§¦–ֲּנ-'i—D— מ£Fyj{!חת=12™…7ל"ֳ‘Hƒֿ7T\בֹsd\0ƒט*•¼h«|$"הg®H,נ¾T׀i˜³ֽB}‏vרN r~ֹ‘Y׳,.ַ_y™E sƒ@¸=כ„lס׀ּQ'חOב,«¸L$&ל>י׳»ִֽ )µִ_^ײWBP’רT¢’y~+ IWdקqL<%אס-ס«fX’Rנt¬ָ–%A‰ׁנHµ¾dn$™×;²צחהJmֵˆ½\ƒNץ30צ‰3{2ְצֵl¯מׂƒ-לבִl ;ָrלֵ1&¿‚’" ®נ‘¾ כˆ}Afנ©₪ם“¥~Kק+ֿנ7?u©כ´ֻד(|½I@א”iֶ‡:ׁy÷®¿›^¨°ךVQR²װ¼V§¯RE­T’"_a1pp€÷Z–[X¡י=˜o®÷ג²uַRuS,2¥<ץ|’[ ©E9aײא–¶ֹl(8{G+EJ} B׳˜•°¡ִU<=הXֹ{ֱָ;Bלדס‎ֽ¦‰6גֶעֿX<{U¸S¨*אט׳K/קFֿy~4ˆtVן-/ "ץ7_&Q†MSױ´]Wµ­ױ¡ƒוMי¼ִ*#ƒ¯¨שI<‰¢‚xבM¢Ow‰—¾"m¬בױ¿#xFּ X¸>ֿ«¦´”zSO=‚°ׂ?kkׂk ר‎d<:‰£גZֵOwףNס ®g¹e¾ד’£y‰Ytַ (®טU5]ׂ©N#;/I:װ¹תyTIB-M!א#Vָ־ v N:$ֿI½5ײ}/8Iחי˜3לו•ל6ֱ4»fu—״״|‹wן{¢‡i¸צh¾9ײvח$czEֶ¸$wֱb½'Dֳ׃T/צלףDָֽ¡$~/°¥ר¯טO״½ִ÷´נטִ0AF\־±>בQמ3l/hעד™·ָז½EךWj\ג;$)ג9±‰דנ3Qט0djXzעִmנpׁ/ג=™±+¼ָ8׳q‚‰ Gjנ}¢ך¾¥•ֱGֳƒח£h‡^{6‰ג';ֿ¦׃ח=zסגֵ~|£¾ןG• ¿9F“C_ƒ¦·|7J7ֽׁ#|¡ֳMZ‹¾mק—ֽ}ֱdK/אָֻי¶3Z‡ֲּWװ—-³״X§‰ ¼ˆ׃xEla7גֶ4ˆ¢R· 4eF‹>3¯§®ת%Kָcֽ׃qט]K&ףע'‰Z“V¼I—ש³T‘YְU?4ֵxKPn׀ף'i "ֳׁ#—װֽ₪¹Ag•װ]דhNז'|ש שk´‘ ֲ9‏סj±¿c׃Cײֶּq=1"›׃/‚ְ‡°g‰CP<ח5gu\ ±Hnֵa0ץֿ°pp€י”ַ®ָ·$בN¢=7©~APzז$%M¬אk $& _<ֿ©,NCgT©‹#2£j";׳=Q\גO^ש‏l@"3,÷9ַ¢RuAֲט„ד¢(²®bF\¬בs׳כ… bּׁxO˜/ִו›לn ‏פ›/­xvinX°)¹†|ֿ\ֱlµ 6שn¾₪ֱש"–9˜ִf9]˜ם ‰7*»„ֲ3Z÷€g=׃`u‰›×ˆ«‎‏’{ֹ*•‘ֵֵר@p$™JL]²ג:װ·/¼ַוw©#}ƒ ÷ז1%¹0Eµj)^“‹?jאר£&¡4jרֿH1נ»ֹנ{ ”ײ¥E_>*7דכYס»ּ¹{Bxדחף°¼fz7µֽ‰kE+/H×ןז9“@'¹פֻ=צמpְi¶T6%&=Hֱ=>׀‘ֲֽEע‚ּ±(K‏fT5‰־ˆֲוװ•˜O£µµE0WֲA2צ/q94T<²„{–¥¥$&”Cpiמ·|JNiֵhEפ GֳֵֹU´Zr&ZT\וֶf¨₪׳x®…6ך~’|&—™ְצ;ׂv„רC׃qoֳָמ…פ'®–'ֲמ-’˜p<־-±wOˆֱ/שsAIUDּFפ ׂ¦/ #ר7צקֹח₪8…הj¯ל z2£+i…-5¢“k#k™Tגד:jצ7XSׁkƒ‰עN&־ׁ)Vb®4 £3O£^‘„8־ƒ`ksZ¥ 1¼’ys–Fת#g‏"›ף_>₪׳xN 0#5ס~N,>ֱ’dױ…lן,§¾ֵסk\@LZ5סֹ_ך*״™gװּ(…3~ּן™BmZ₪€+ ˆ‘~¿ …M—¼"©gXH²n,*OB'י1zKֽKb¿$nת ²43µ`x±­ZN«°–«­‘+Dכמ'£³Z}בלe&צz|$z…³(6W¸„Etך>ל 5׳״z™ס09.QP¯׳דtנ+פא«"ה•™׳zוםא׃xMח–•²”¡ףYֿh~.¼א®°(קtOˆLֵ1ֿkא‚ז\מיPIו{4׳lT~ —כ–÷נחq;JG½f ¦`¥I«NטבOµ5׳¬´זtֱ;ai* 1qGֻ.²גוbAKj.Rc¹yהג–JZ־—V^בק³’})ִB€9ץֵ.he6qcָv|C*¾h$†A‰eT=4$tֵZ`hq6ב,~‎#ׂ@ִ¹ֱL}` bן‚­n&ְ'ָe‏מq1ּi ¶‘f|»א£BCi˜— נXע»וm_‰¥ך}d‘i }; ‎‚ֶhט/-¦׳ˆK:¼'1…«ֿ^ּ>e¦׃]Jח)ֿ©A§!%±ˆ›»BWי’v·  ָwװf †µ2© ‏’„גxGסd)-ֵcֽ²gי”k÷‏¸4%כרג,™HשsuT•½$ת‡Z₪¯ֻVחBף/˜ח¾gz÷$י.qtמ {· ָֿק₪Aƒ»<שfejhd7T‘”ּ-‏¶ˆ„tו «•z™ *RvY‘טIZֽp´ƒ{>ֻ%r£)F>0ctעdעַ„sl°N_~Iװֽ%כ†F\׀יהVֲ%®ץחְׂ¿d&†0 w$­‘™ Fs…ח…„?—’/°5_זgi{‘–U˜מ׃5ז וpֶשֻp6°]₪ֶאֵ2ƒװY¾ֲ^±.¡3ל€ֶ˜שj’h$‘₪₪„„®3pcק·8£E8mgoב ›´ח¬ע2ןְ >¡³Nהץ=זפ¿®ַ§»$Swֵ/´אqy…· ¯~ֶ­'?²ƒz›Q³4sפt«-µ©°JMֹ ÷N™ֱ@ֻU«ַ8¸cKׁׂDVsֶvה=O]¡™]! ת†P¶ֽFm¨ס‚{HZֱ~¢ ¬ׁ Aׂג¶Qp1ְֻ6ַ„‰תU*-jד=‚PNפ׫¨$L?P]׳א£?§¯¥Qם{CB;nh…|IBp¾ eׁ<קzN¢DB0ם]#Q%T>@6כ‏ƒO™ׁ³2צ‚¦AgYWu‡×‰ק6ֽטןׂ7r ר}N°W®Yֹןuj7׀ך§ִ ¨ח ^±M¶p2}ע©;‎E‰°ְִ‰!&g´א$y0Eƒֽi*ֹֻ¹¹§‚cי4ִֽױ:‰ֱU$/—"p4:ף‘״׃%µ­¥¿Ju=‡`'פ9w„E¢n°2זֹֻmb¢§i.†ָwףtנ5‹K\©קFO¹÷¿#SL€ק9Jֻ>}ס\KQpַmַ'ַפµ®xרk&ְv—‘ˆסׁ-׀6 jך_4°»hv’n=ת1&5חְS3,O?זxUi§$Fס׃F$עש~ז)z‘+‘ד]qֳ«Gיױ.³ז7לjs “0ַ>)`gת>ך;Nsbײמ¶’J¬“O5fPHnנ‘ְg דµ)÷®מװ¥6cpף«~$כ,cX3±¬ס§`[eN¢אן‰j<]ֻ+rdנ״X·³!־ ‰•pN2Uװ9₪‰÷;"Vv>.1־k×tְׂ״MiFשSK†•&¦UP7v {¼׃¨R»¡d 3›¦ּXh—‚9¬ַ}ת׃rִw™sv—ֽ;zb®°€¹&* »u…‘צW xR"V¼ֲ5ד]eXװבס¼«ֲ+־G|ֹ¼¼°4‚ֿ׳D°.yƒ׳®נ2@J"7,ןI.‹_ד 1A‚´&°ֿ]}!ֵֽׁ4מ”Id LJh—חn>’T5·ףx(w7U7)_קXL½%9CJW{.זG²¨1³…‎wGנ¢₪;¢"¨wL„מVז ₪+6_·ר³=]\2O—b€ס©,µ(O¢˜נ#א¯(£OU{׃';ה“;ח½Bd%WUTCµw>M¯”3סםםכ ׳Bל2«ד”ejo™{_¹E@›?עּbֶ>/פּר´b~סzAa;y?ױ§״K¬_‡ח׃{'¬l55)†%“}s¼o‰>Aj9ֽTֶ’ו½y«€ָָFה t /ָץ־Hב2(׀‎‰ֿס‏ %ר5¾·D–|ִ«ֽ{ז8µֶ/ל†§09£4ׂ‰₪½eD7 מI˜עֻ9ֻ>.´Aֻsב¼®ס„־¨³}‰»s—כ(¬ֳ־>"”^eE~}ibחג„מ ֲף]־÷[,GגhEPvI.IB˜ֲK>#{±ץא׃M.ם±D7-›חכ.װM1/…§¿ָֻxֽeQl¾ָָ„pr^m+ַ÷ם ‹¾s#ץg²׀ˆ7MJ}¼ׂ¥©›a2טo§¢~wז,חˆ©קx÷yא².כLuG{²\1KAa¯1Ey }אXְN‘SN₪ָKוgץ#ׁ¬w†¢פ7ֿˆ־װ'ִw¦ֻpwץ©Tl†צOףׁטּעם™´=ֿ₪#Sן‚¹bהt³‏ן|A“§_·ֱ (‏©•|ֹבc– ׃­ְK‎>₪‘סםמ›q`»o—gִ%B¯ֶ/ֱהײמפSZֵ}Bגק†fך&F¿׃‹v,½½ֱ€™וXd¾|ƒ>C‡ֽ סK¥_/(+ה‚79B¥hי·¡צ3oה ײר™›TFf ”ךˆ¥גsּ ׂעs’˜Dzט.(•}v·=ׂjau÷/lֽRס‡†6ֶn'#.±p+b||אAם‚F׃ִ4E4~J “ ¾ףIn­ה־TסW˜׀' ֿSֻe):™ »p*²'~װx³p×וטי~—Qץ5ֿ‎?יiס´#7¿­N¦“ScMJƒ- †‚i´קס¡i}ֹֻ‡ףnb3…÷¥c ²SVC£²ײ»<$?>5^3[~’×ש7ףן¯PPoyבֹ87b:hPq¸‚WסמָJ¹"ֱrd ‰ֿ=§מָMךTPס‎ְv¥כ»MפijPרk›rlגI.ֵ)5z]‚¯נN…})••w4¡׳lH‰<}i=OוL2Iהׂ ס <ֳי*ַn¿רhע’\„d¶אfFבNֶ‚3. ״w¨„Gת8™לע7ֻ ָ‎U †דCZ5z¹ָ”k_Oדb1_ש¹%c!‰ָזiI׳ג2µ¨ס¥ִצ_°ת\ֱzIW€ױ0ׂ©ֻA±ס¹¿נ\2י"¹O*ˆ,6|?%9 3R!ָV0´¹ּR0ח₪j“?y)“ׁ!c6ׂׂJ§¯LA¥ֿ(z—bִK¶ו¢נ~²”¼b 2´‘:ףׁeײ=LF חRA1~D[‹\´"׀tZ%ױsVBaח¿™˜”M׳ mI'p8ׂיז1˜A& ױVנ©Loסyp%J§ת­~Kuיֿn·ג»b¡}¶¢מ*-+w‹ת+iFש©I¢וB׀„8׀›9x₪׀^·¼ֻ₪€9µ¼´%ˆׁ“פ»)ֻ…¯טD¼f=ײֲg³],רG¢ׁוֻלWס§ֿפ3 sׂ .1₪עK‚Vgב¯%‎µק||פ‹O¸Eהm´½־׀זבµjD µ`•Q"®¯w…®_נJפpWz¦×Nפ)yז3„7דשבוoXY h)ה›€Lף©4נ!M¼¾#זטk’ִד…yַS®pE&•:h`tR$zֱֶ’0 ְQׂObײ‹q¨Y’;ֳƒ“·¥“–חDg?1Sד¬:ִKר˜@`.$xKת־Iֽ‏=ּ‰:÷ּD™ֶֹ?aּז´״¶a ‚ײM-™׀3ROs־׀ש” –ZbU¨Y$•‰ֲ₪‎שֳ\%ֻ®²נֲ­ֵ ^²R¾ִ'¼§U˜˜H‡נאsׂAQt3תצ?‎ַ¢פ#מפd³i>%׃A»‏®Xi"±E־2•ƒ%›³ל, ½װ8aגסuB*Ch‎~´h8d ֽׂ—Et5?׳3²Y8Wֲתף*+Le2 ‘₪ל€‘q*>ׁDNֹKr…״0s1–„לכיKw/¥ק#+י¼!–‏h¾בFִץת¦v.ƒ™דז,{†kQע!‡ׂ9fחהlֳKִֵיג–;Gה{• [t· א]³¬‹¼ 8Com7’d7Snקּ{‡O~‎…p´‹µF¶†|xµ–“«לSֲ'K:»¬כ=HI¾KIg~ MחE '@•¸ ןָ‘ֲ׀ִC¹'{›כ5apZp^xָ±» זma§$-G¦¦ / ° 8[ײלKvS&M ·¸bH¼›צתז¹9aG lרS\תG¼I_c1|A¾®n‹´װ₪˜ֶRה²ַI÷y%ן0ֲ,®c `זwLne p.‰Y´dֽ]QI,רֽ$÷„“ֱ!O׃†׀z~……[%>0•&¨@˜ ‡xfִYˆ׳…ֹ…QAֳS6$ַKצ׀?YEיא÷\‎¢-×כ×מ²®C4´¨’£±g?>“¸iױG_¦(l׃¾%l¶°tטץ!T —7' _ׁ¢6#oW<ֵyP¾k%ֶ/J•״"m#¥״Uh2ר7nשםgV@(t?t~ֱz ™ֹ·*/W =4g'ל³‡ּ‏Yr3f—J\ׁ¾&›—¿‚z³װ(א!¼\™?½d¦×9Fkץn—HְkZ O\Y־a )[÷‰–י„׀_½¥­ר¢…‹4…ֲG¡ְ;ֽ‰!¡yF` ^ָ-‎´י 3CHIץ‚·”ױ’”ּy&V=#ֻ2vח‚קױ_עpח ֶ \Jxֵה#g LNׂ7]Aƒ…#‚oy׃1fa ם“;WָB@Q­WdײB?ו`:u¿aֲ¬&}ץO£ְ‹¡u&mU.¥>חRb³6g©בֵ|ק3‘»אּי"Sֽ‹¸…ֽך¥¾fEz˜½ R_‎שIiםeז ׀±3–Uׁˆ‰nAM´ ‏CZֿO׳X),ִֶ*‏זiIק+R?ˆU%+€«ֵּWֻסw]3L׃ױ’%‎ױ. ְֳָ+גf¹Xuץ[>Y ¾(װ‡÷S‏‡·‹W6™­\»ˆnaױ"-}!×”f;—°צ­ }Y«ֵ )L'DשXן.‎8_‡ׁ–‎ .יXץי ת¸Kג ׀%דM›P¿ֵ94+"gB¡¶׀ נשםB ן)¯צ¯²“ֵכLoe½¾״^‚’¬־$³סִJ†+a ֽ’+F‹'yCr.i®‘¸iח״ױז†ם[b]2C)­CV4ף!h7‏^®¢a¨חd7½#¿&¿}~XהJנ¯¨e‹D{|ֳl—|ם‡\{¹`״NWשZ=vmצ©†yֽj>/ֻ¨>!ץפװ†§ֶוף‡װ¥תב<*…ֳfץ=aו’ְב#4n.G‡[ׂ&¯§±!\ּ|ֻ}״y רף¸tUfּK'־זפ{¦ ׃4u!“I˜ƒֳ¿"a‹¾XP0₪ \ ¼·4ך"l¥קּ›)Qח´oךפח₪¥ח5Q¦'|ׂl׳%>נH¾¢PֵsRז.ץֹ u„־q0~ַY(®תמ×£N>‚{IB~—₪P=qq<Q‏SNֳiצ ˆ±–Zwח3ֵ!Wגג›QO»$Iˆ“p˜{כ™מ¯xֲיrי[¢ƒש!א%שְm¶¥ַד’¿½e+u¶…ֱָֻ´®„װTב)†שe₪o_±ֱמˆ ›סױ¿¢KqY« !ֽ־£I®aֶ]דםrBגק ת%†]’­¼¥“LO־ג·ׁ0‎7ri~¥Qתדי vח,€"„RרQ‎dע‚»v6oָ"³tשqBֿ˜G”IVדֿ·ׁOL]xל”R$חִ׳ח{כJלסת‘µ£ ]ֵ¯$װ‡»©w‏Xh·$dּYF|‏§A¢W K¡!k¾—ֲZס?[P״n!u•ץE÷ו—ƒg6-[¨}V;ֹ*שldZץµ»לִװ±®ה#x׀Wdg=™S’¡לה„k²!Sw|¹i-׳(ִג_-h ֵp%¢קN§s'¹~*rZץ£’Jx¾Hs° 3?cֻµ 5ך‹tרu:¿h­×ֲl)u›װּ\±‎sp R¿A×tט¬cYwֽD!ֶT%ֹ²¥€hז‹ק ¨‎×ֽימנxֻ…oXeV]ײNד‏„¶RכדLj{‘O²TׂK ‡´®{ֵ–"¹¦DBנfּ$ ®ֱאֵgCֻdׂ´™¯›P°×חN(<7×ףב/ֻ|p}FEְ)ֿ6A(ָˆ.כw3²’÷9n”¦ִׂ’«sVױֶ …A¥$9M‹Nײ5םת/,6^אkװפ~Iו°3E#° ֲ¦]js iץג[ xָ¿כ€^S£˜ױY'k§•kהֳeiiכ%<ּ‹ױG«jֱIV‚l סQ³ƒ׃׀q¸¢Hב₪¬ Ozbמ׀B!z²hƒs=e†בM±ֽˆ£ֻ‘}9HN EBש3Vֳ”¥‡²–ְ „•§¥¾ֳֹֻץ®ט»ץƒןF8…‏0 µֳ6Ua`f|ֵח nU¡gצ†׃ט ֲ׃°‰ֵk¬hֱֶ€}ˆ“u½ _’9²sXמ¸ִRוםZu¯ָI!¯גmחֶA} ¼!"§Z{·Xת8רױ{R{†³¦ףAQ›iLhרחדVצ-¶6O¥>1ױךXPשUm'י‹µכ…=הM¹¦‚ֶ7-C8‎I\ּYxֳ־Oו k¾ײ’m®_Mךן£¦VYI‎גe»ֶלַםjkפ®’j«`¢%^;°¨“­#”lָRJס,~l7%K= £7ם† e©¯ׂEװ¿\„dB÷²װ׳½#ך?¶g…’q¥©¯›"™בbּײv·ֿײ¦‏¬T–ל׳N9ך[9d\Iך“—d־uk“+K½£ז‏÷5™Cַ•¥ײ§צc{sOֶ•¥2§צ÷µ}Oַ•¥4ך}¶¿I†z2n1vֶ³!ף‰B‹™3±4}³R6 €¸hµמ•-»˜÷ w¨N -תָֹ²פk&@`ת\2z•‹^ 5ם“ ,ז>ֱV£}bH­@ׂ/i6k(ֱJF‘¨‚v"€„ֿCF@?ר־@"„/¹,V®q1ײ׀›£sה¶L—מ¸tBעn®·ג4ו-ףֱAaPrב%1₪‹$ַ©4›m±UewUד 3h×iל½Ko+•.רWxsP׀,Zװ÷9ט=ךA<3.†qP•@•׃(@{Vמy|%Q¢(G)2tדװ½™vָPw¦¸=­_ׂ±׳k¯½#‚An†”Um }$‘½צz|כ[‹‹‹דד‹׃ףֻ“²ִ“z‰—”–%©nB‚ּa23@מ°1Ymb.“²{]3‘דvƒֶ;d¯ף~·BfRY¦ך1(w°ƒ(€®V«¾ ‎³ »‚-וץרT,ֵ®קצCךֵ״”״†װgָ~!¡$“$n§¾9“¢CC‚ֹה)S¶˜¿m€I×27`A@לISH#ׂX?ת.{8לנכת«בTv*_3i\½’rֵש»¸ג°€›^˜–V?ֶ4D;MoN³´י^I¯ע¹·ׂca|5›J3צ¾""^×(ֳ3Uױ}´;#^בכHnO1ֳֽ׳צֶ4µ:cבq ן¶‘vKײ˜3q ±×ד´¬ZצA&>r?´¡i]“.µ‎אI cPכTQwkמE5ֿ־ָׂI¯D«•+v=Xֶ,+ טכbֳD׀­¾8א‚\P¢׀l‎הT×Q—וµנײcqT[³z]…T,…jH¬H0·ןץנ®ױX• `וֹ®^¾ֽמ^>{‰;—µ:קעcj)rfָ±²U/M†Xµנ!סדµ‡<D'ˆ›»„k»›n±תDג³c,$7ֲר•H9_/«ײW‡J4 ,"`…#‹JMy€5wמכ ַ!’R8¥µ׀1זRH%"ףJ!:o<nֵכ#<5פq׳»#3iשב÷zש!ךju-<סׂ$4ֻO>cH׳•`I¸¼ֳ´1ו׳—ת6:ץוg» ײְ™vֽAסzֹ´ ׀¼k[/Cםcר´וEֹכ½_˜ז)K±@¥9ׁt­­A%#­ו(לKv U‎zFכs^¢ִsֻm₪¶ט^חדהטטֵֹy&~ץץ¯קױ¯w˜c¾תץ‏‎מ!ף$אZ‘ֳ‰§½–דנf¥>V )4„˜>kבקh‏בכC+®‎j§ יDT׃א½7¡%\’=fXי,r אGjׂxC¶׀ִzi׀>ONנײַt£0םsםNr1>ֱ•7A§9K/נIjץּ,«U(‎ת&#JH[%‏י®ר‚¢MןרW״ךֶ+y ¸ױ˜#­JƒJM[bֱƒףֱ®_¾{נ`*:¡~'±V#O¿@µI©°z2¬Wױc׳״ׁRXE/«z'b¸1÷HZPכb4ײWׁd‹"/m ˜bSמ₪£NP%’3ַשOOX«µBמ½ן_דצשׂ,VחסF¦;¼j8m¸9€ xשu!­#‏ i/:F=צ‘·•ּ9v צZִ ָנ]˜6ןb‘*|e&l™X0€15£ַPrN p…n‡ֵ—‹3cאאׂK ,d,4ְִ¯D’אףטV ְf{,Bׂא[WֲPs!÷nז°הסs=״‘הRוlוֽH%„ב#÷,±ןUֳjsכ¡״W±ִצ·„R6X£÷‡>»rdאqםש²%=־QƒBשWקֻns¡§£“³׃‹n>ײn·׃¥yסר¦ק׀זֵֹ)´yׂ9+k³Pד>y±Qִ1N#P§ת˜;ק-נ¦ds¬˜Qk)ֹn–kVM'”„׀ yֽ¨')*„$g´pPoפ®¼;=9¾xwr|vyy~=÷8*s¡ײs¡¾[»-88=¸V …ְֻ.3%kג.iזײ5‰¯»wק ‏¼ P…ֽ.ƒIOAPָ u‹‘`ְK~ק1 µ‏׳׳–”XסגvT8³¦b‘T­Rם9q M½i[$'}„ר9־·ץ¼’‡¼e‹‚סZ™ה‰oS1g¥³¶±T M7g¸iז9׃Z>ekֿM»"קzׂj•8Tִ)ֻ‡':¥„’Pl-״7]hּYiןcuג“M‏•B,?״°Aת*מiפה“ד;2ֽv¸¨O%V<ױ…ֿEֱC™›xף”˜׳jHִ•£¡t¦‘6´ׁPqH₪ƒ}G`ִֽץ5ֶ9–Xdj‹]{ \¿eה°ֶטַS;ׁגu״nc jלדֻˆG…§PFx‘’§״µֱ+c ˆ½ַvw¥lתע z6ָתm²²¶eַ’\RBBגV{ֱfy׳)ָֻ$ַֻ9¥…‚ֽ‹װ*₪“-V›¦lW(‡\J|)5XZםFqFcfiV”ˆ1נx ·(…ל׀:ץpJֹ§86ּZbֹׁ6^ן%¹]Vט נײ¸µ¢;y¾1 £?7ַץ.‡דw%¹¨ש‹¶v8יnlדuZכ/}ְח†€­lְ¹µ‚mBםsc]&L&r§|¡_¶%qֲHP‡¹₪8;]נ`V cYנz­£F£ט{>‚µ‘£&ֵe4#ֳ³“ך·¶…3 ”°בd÷€w¯פ,ײֻs7בֶx)Wsֵ¼מ_פ—lרע§|e‏X…0?¬f¦סhWװd5v…^ֳ¬ִ27Be~¶ bֵ'ƒF´.Y£װ©[¼יVe„»’hה~ˆ2)tSC^u½l¾M”d¶„EtיNFחְ{?צ·? †¦ױ״ 5 › ÷±kEרqח¾}קם׃÷ֳ³ס£—¿הׂ;בֲ0רa ¦ד„¬‡c¦w•;pbּ׳־¨sר7״Emn° jwwn0צ%%bl­*‚־´׀ּ—¯±ל ָ_m”e#פ-Uײ£״םx G&²ֳv›“׀€s5¡ָמ&ַ¿8?e·/ןavֲׁ$2;mlDI¦³¿יVה¬†>“ט££¶;X.9hׁ'טµֿ|תBױ%ַXע:„‡)²ַ†o•€rֲ ¯צ>±ּ׀‰T®€Z‡כש״ע£ק[p‏‰”‏לףwK₪ףֿ±4GAֵ¨ןק,)‎¥€oן{L­¢9׳₪‏Sכנ&%גֶפ¥:“fpץ)^‚]±5b₪\{[lִײ¹d¶§{¿כּ¾׀א˜לית״לM«y}לiEל§ל¿Pו2N&׀ײֵ±×²SתTְr_U ‘6+4~'÷n[Wחן÷'GGח§ַף‹׃£wGg2‘ףZ”#ַGk'«0@ֻoף 0b¾ ״כHp™×Eֶ¿²r$i'J4sת#†PַKIiָv~[%b‡†׃°±Lֱ(i ¶‡ ¶_U[m•ע½ב־פ8@j`•¯צ’ֲwמpcb@hֶר{ְ‰½ד2י‰ְj‏*נB׀1y״½ֲcQ™װא®ֵ}־₪ב}ׂ¹– -¶µ״>t¨:A²CZgo§\“o3ל­#״F›׀ןA±ֿz}2†קfוֳ?תֿ»3/ךqk×+6—]49¶iq1=pp×z»-™Dׂ’אשf†O·fשװ) –[:p/ƒ-D*¬I&ֲvֿ`~‚>$3ֵ¨‎ה‎דח¶,-aָVsעk;¶¾^°HL Q“—ן<±ױׁµִ1=.<½²}¯>dיS¦UY%ַק!»iwo² ·“לI׀ץIAשz„˜‹zן `‏¾-‰ן–ד4S•®<¥8ח<ו¿,%₪פj~—½–ֿEװd°xח aם84¬fj»ּAqז״¡¨װֵ¼+)בֿ?81¡k¿לm@‎¼‹בnJ‰(9ֿ;¥G´tױְח'ni÷ִ&jףֿ¸םs @yPIƒ$ה½¬?yt‏>ׂ®צ1€׳0!£װ¬u¾׳§²QכK2,ֹ=3ִװ¼yֲQס.s÷CנְIjDְ־b€Z  ֻB\ Fb,y₪´B‏{׀€zFJ¥”cה˜8#װ›&¯C.%.›Fךך¸Nח‏ז7•ו67—uƒ Sםלהֻס‹ְֹּ עMֻfױ¶בֲּ¥ֲIֽ JPס_V•s׃¢I–Ws&(ק¡†Eַtd˜Q*ױvC ׂ†ה·ּsֳ4ֳDך"B[–h8{AL]ֵֽh»e[&<קֿ¬ו†@<÷\י¦c€'e‰t½s 3yֲG§ \(ג°ְUט¥&·M "o{®lCBK ׃qף{׳¸—X”ֿל"9 f“…{Ut ס>'ks₪hֻ}נtֳ־#„‎‹tr%“ˆק¯¿ Gִ<‘#ִנG˜ vֽP.*c5~¸x4ףAםFkˆֳ ַ:ָקc?v1€f׳5ְ­ֹc½"±i׳tj‡כyqOw־L$R“ P±wAי‡ס_µ{ַ”חֱ±־1¦kַ‡´{¬e”p¬ 0®¢5₪״c ({ֵ·qװ±†´¼'ד=¼ִֹׂnלu ("ַrר)ז ׂnלu== «q‡D[׳vcץ₪¬Q־c9!םֶכׁq .1ƒ´hc i7¶צ½¼sמְָ¦=‡´{]ף…ױx₪¢­kH»±ַz \׳pDkH»5-׃ֽˆ3׃=װ(‡¦€n¼™ iקUm¨‹n¨%‚‹4ׂnl=וט"0_v°־r¬*ִ¼Cֵג‰ֳׂC`וD[J:™הRְָ¦¹„¹]ֵׂ“£מq‏E>¥—¥3 ™¥3Lׁקz²ְ²\ֲ.&ָ™^9ה€Jׁ5E‰r?ץ9*FםQB]CָVƒצq2%‹ף>ך«~ץץ¯לס„r&¬µJu€ ‹•װ°#ת?y¾A‚‚e‏ם[זת ¥ֱDpׁ-_°־`£־כ ִהƒe&U)pcײn„ו¢7/\Rfם¢CT²b|ר_גHת€ֶב»*]A9ם6nױ!‡ ֹ-[ׁ׀’hCט,Ds„ִץac<#¸g*¥"¹4p״’װ‡ק(ב„׀²ֹ׃ֹס)§³J¬£Y תC\+ֻJKz›קּ=:‹´ ™®ײ1Qץ7§¥‡שמ®?:מֲ^7א‚—²&2סP½)€|¨hמ0>ױw¾§]\ָמqוJ*5o‡®lֲ „ץ¹×f| יְ ₪Mלכלv|ל3ז›Dד ˜×ף™B2&FSֵׂאל…F«¼m$ע·א©«M3×3ƒW Zpן2e¶ַ־÷u˜D•@ƒOנץˆֲֶ(ֶH*[•Dג'D] †µD₪£-»1m¹ֶ §@JlPת₪N#»־7€&u א CֲדRר–נ‰2˜ָץD®מv‹]»@&>³PRxd T' ¦׳®ִyרע”z!jIךׂ”—§CAְחb‡ף›Cּ\´"gQƒ!םֶ-0ג¨ב¼¼~ְִQH»‘Gא¦ב‰iDdH»‘Gא–ִ‘צA~7י5ו÷¼q‚K @¾s״‡ֶy%†¦Nx)JֶJץ•ק;tq8{¨A¾MU95F?£Celֵ [ׂ׀'s[hl׳“vg•—װrֿ«¿!~£C8ZaY¦t׀‏DL6mֹרQ·™e·_@ִbkׂf±jVֿ}(ב--½uKESֲµLgxc®א²u¬-›‘(HN“S‹|~Do»ֱu©€·­:e׀ IGנ<ײ0b—yמ¾׃²ְ'c_ח»ֱֽHF²םUQ·(וd·™v®צ¸–+}V•‚on ³›z®e׳iח”6יs>ײ*„®v¹צמֿ־~vפ®e³Rש²ֳPXI ¢־7¬‹פi— I‏-עׁ&ָ)k¼Kpf׃׃F?xD¥ חֻ״ְWט‘´ ¦3zP'­³¯!V@£F¹ֻ²«¼³)P›_ֳgטש÷{«zִ/Rפְwנ„AןְַָרP˜Uס°י0q)TרZבv¿B$׀ֲ־ךrָc *ֵ8ױ YS Iׂ Vצd’<»ףt·׀Fx_װ;e$צ»fחR·ע0sCJֲ¼0'hxֲמֶ:R›״Y"ץ1:yװv/9Z©חקתrױ¶xץ‡k©קˆu[נ2:mbקzֿ¥ -ƒוSD×´gטG~Pבם hֲ«ּHEkH·ױq"%B׃‚£׃6jq¼׀q>©X™מנD:וeOְױpו³²2Fjֳ€>5ׂh¬|ֱם¾ןmZמ«ר©¨כ5Lד¶¦ֽ{Sƒ}F׀ַ*®נ–=F¶sֳ‹ C©M6·­ֶgL׳ף÷zp®ˆי¼Fwס tcph†$‰0מ,9¢Vwם{@ךַS¦ׁזZµן)Z‹·g¨ױ]cRיlִ.ײ iץ¸6לקֻ׃`ֶr״v@¾ְ+(ײ[[~GֽLה¾‎I‏ת Cז§G"V'‘ש5x0³₪Z)3ר5¼}IרSl‏ ֱZט/s¼;ֻ‘>–#3?ִC¥Fך7”£"ֿװ"־zh)*ז-2Dֱֳַ¼[5ׂ­³ƒnB¯״] 4ֿלע»p{· ‰BE7קK,ב-•„¿µp³י‚ƒsד"רC₪Wֲ]^שָמ`‰)®Lם*יpkT:¬d ׃ְ©{<]±~־®ƒXh“2ֵ÷¸@+Y כמ“sע¯t_²Nןbג¯m·Jנ¢v¶¾4¾|`:4²¸C‹¬t©H תך”=dעהE&׀ּ׳=ׂEJHVְ›NJ´|CתׁX]3ִ׿Xˆd6 €׃¾u$V¶»‚ƒ'ב+ףd•§²י8ic ְ«4AWcהםםן= „cׁ!}€±»g]¾ ק“.Dְ¦/EYקלב½X„a˜”ּ¦ R÷BחtY‚2…3¼GיT0צ¥ ״k״^¹3¹†יB־_ Kװ[Sֿs$@‎ˆw­׃÷0Yגsנ‡ֵ8Xu˜זײ*קkִ¬9B‹¸‚ְײR<שB÷ˆ ־”a%r׳ עO±‹ ֱֵQƒ>‘ֲb2ֲממ®@¼‏z§@ך;½‘b‡^‘®u״ר· ־y§ֲּּ—ט‚|¯wy‡S\$…ט—ִ$»“)' !‚יxp£ײֹVr\{.ק[­<ג$ל¹ ¡װl%יץz„Wסׁ6ױכjvהHN8uמ»RNם₪{|ִבוw½Xx-¹¯vי¾4EוN¢Ox×pxN ‰÷׀ֱ× O¨ _a…% ָי@ֶ²[b…nא«כ´} ֱmנzO¦´ ־‡י›>©”A5‚€Qױe©MH ִׁהv₪mל©CTָֹֿ’n9¦סdֲ״¦%´ְ 6]g`ל„d”qט«׳µ„#cd¡`ת¬ר(”¾Ib—>Anח;¸÷c'<÷S+m¡pHֶ$ה6stL0ר׳<ע×₪פךסװגZעִ`fkָ5H¹R“–ָ₪Y&hץ!­U­‎™ױ •ֵg‹ :¶µQ½dg§ףF¦|רC‹קװ“Q:®י´H÷.Q*ץ™Jן?X”Iלד"ףץT!3‰“{ו‰W†yױ«_ C־Cח„״—6א›ןJNנQׁ-ףD·?@th_˜ X>׀ף€N~ןXy“¶™E‏‏op3קֱ¶’6N‰zp¡£`×N¦ױ|;¢‘ׂE ©´c{ן—®»ׂm\8)#S|h5 ÷m-An»₪lNצחעכ¼‏—]חµ\‹ֵ¯ל¿{ײ/ײכEַ3ט ‚QטךC¦9!צaµ¾g׳Q™ddD ֹ™1 }‚w(W¸Yנ…G=¹Iy"wו,;2dף¹"ב|_ֶּ §dG¨Kנ†q?Dװnc%3›o,´ׂכֱN5ק‘‚zֱֱװּ¹I¬G §†‡±§0קo+]@` ¿o BףְS«קװמ®½¯ֶ1T%·.p]{_2eְׁD§1$f8´­7|4ˆ¶»kןkֽ];ˆ A„H#zSֹ±„ִF„`.׃}¨¬—V‘¬$i“®³qP₪;ך\c?“ע₪';+fּ¾מ¯± ‚ֳ®P™l»־ֿµuם¬)*˜ֳ·wu8 דjKס¥:`וxתFH«לֵזXכ€–ן@G_ֵ•ַ½_—1“ˆo}J‡‎ךw˜  <ֵe1 ²4)כHFDגqp?1“+׀“2¡&¡ֵL²ˆBuRס9¥זט³H3,E×¼n:®7eP …)א]/²»—ן‰eJ_מ©‰’d¨¾#=R/¨ֹ¹P¯’_ח±¦ֱ5#Nוא“Wz J­$G״mײ>·H‘6כuwz­zSיdָ¥°₪G“זD'‰a *F <םE<%ׁI¾FV±y¡ז£Tm»עKC<‚Sˆl ;ֶ” ¦*µ<צש¾ ֻי@JKב¿¡ֳ׀ ‡¥ג˜פw!4ףEֻ#S6/9ַgׂ†*”¶א5ֻ“¾1׀=F}<ו2ײֲ•²~־ a–ֱֽ”ֲnװ>t£cBֱ²€מ>ב´CIj¨—ֿײ0ֶ9l;-+bןU™ן¢©ֱsZ_¬34•F¬» ְ0»ףתְ}ֵֿµ׃¼Qִ +r|ִ׳4[³¼×…אדg‰קf¢˜tח¼jף’JBן¨*ש”q‰²f‡אrֶˆ ’ׂה$ִ/K`noHL¸—u₪ְל&&³ “9†P‡ׁ¶­נ³jץֱ·ת*Qה^Giדױ;Aֱֵn×´jG©מֱ–¼ְֱ'+,V2`ְz…ˆ-₪ִiuׂג\PZ;~‡d}A:«ֽ"Vˆwח²ל&L`ָ«ָ)\]F₪–״¨M„± ן5h`e׳₪–/h Z¦_@‎W±ˆNֲ₪»רףֻ ׃9ָ¾!ZG»o±װי־Z ™ ”‎4H´'`>Zokְֻנ0¬zU°ƒY]²”™FXװXֻןHq1¹sN±»[˜Nַמ°`כ“³C¢yX³ c^×oֿ°ץ5;ו&ֽ²דף¹ֹ¨:J½*¹Moעי\ִKׁ{ֽ ,T›†װ׀jGץ?Hגֶ}E׀פpֽi‚)›w4×צװמrM©q•ּ©zkBUג0›ק¨=ִֹ ——עe ˜Q#אוdƒע¼ֲ´נ  <¼ָ(©eֻy° f:^µZ\C"C­׀לpbפ8B¡·Dֲ³?ְ/װע¨˜N,*u³ .I ָ¦€.Yט^9>׳§G\׀»bתֽ¾ו4³הAp%פ9¹5¦kT$ם–6ֻלqֵ`|µ¼Sַ§ץארץO¹L¬ץףf/ט_±h1­©ֶ[¸‏_ ±ּת–Uֿ]†eֶײֻ¿ע64gZMֻ}OTƒb¿;₪‘ ֲ½U%־n“-&¸–H5Kר״x@nֹpLאׂ¸­m6Rrtּˆחֽת`›שZDOr=?=9!o‎Iu¥ ,µtrׁׁFB%jZ#ב B¢6£l|\ֹֻ²§¿—O`•ֹ`ֱ0p;פ)םd=‎.^Oֱ?‏·b[z־¦^ְק{qZ*¶Caכךn ¿bר%E!8ֲל™ִ=²ajL©Na¢²ף¡Fׁ,ֹ&//׀ףP\הL³ֹ_ףP¦ˆ®נˆcQפ׳׀0ק`o¼₪jzTֵ‚c»זz«…,ֵa{3cַ^ף<§NאךMƒ1/?– ג›› „¹¼›jתFxI×ׁE₪ *y,דS˜כ{Iג‚¾×ַ‚%”ע_ןEiVױמtְP8@ˆײ/µ‘ן ש² ¾Z»kXוֵfז׀מ SZ×BY)¦SoC•ִdl"N¹uךˆֲƒו nVצ"ֵ†`€'מ:רzm”²ּבw‚u Qy³!~#SV|ה2 ֵSZ"נ˜tXן—ּ–€ƒסS³,›‰@£%·׀³±װt¢yv03ג*q»@·aֳ XI־³3“ֶj½A+B˜uײ•“ט#oDב tZ: x~Qֹf§ג¨#7g“Fפ~uֻ¹ bDּׁ‚‚ H‎פ°»Eֵׂn£ƒ8©t°vמא©¶M>] …]C)ױ₪›(Cc´–0#b‡$ײ¿(5_zִl3€‡ˆF€ˆQ.J+l(ן״ל|¹€ג‹V­wC7'ס¢¨©חו¯D•זTmˆKַu‏מ\P¿CיMm¾ƒ:a¼‎|‡¾ֹ‰ס¼ `ז ¾““ףֶיq¼XS¦s¼AmGo€³ ַ}C®o1׃SB™Wz\½ֲ„ U‰n±¦±+¨sץ}®-כֵwƒ״''gש ®^¾ֽמ^>™£‎עo־ֳ#cץ¼?0}$ׁm’µARׁ6ץ{³pט:£qֵא¬NPµךX·U+¾X¯UVמֻףת²צפ״ֵ0ש¸Eku1Zg]`+ִ™¥”₪§ֹ›[„~§Ncּ*$₪6÷ְ×Z iVװpנ§ך׳(ף}ֻױN”z½ם$8ִ³³¬ay†tדG€m7ֶ±al‚^ֶֿזֶ_£ֶׁ»W@)p¹†`aP¬;­>±V²ַת‰־¼†פ <°±E c׳O #צK!ׂr4U´»DS h´WּYH˜ׁ2b®²k7y)d½ײ™ר>²¨«?AAW×ִ ד j½N‏נ¥¯ ל*’‚ֹ'ל\ELְײ£׃µs yװ±^)װ[סp°%‰ה¨³…­רPq“¢½Ht¸₪ ִR s>¦J>S8€ֲ]M₪0Euב~ד®¶*R¦ֳףםWˆj¯/[h| p€ל‡µ`N!$וֽוט„»;-RיFלדuףoֻbֻ’ֶ5אPU5tע6P₪0‚“ֻ-–ףפ$X$ּ`״I!׀8µ±H(ֶױQ,q!g‰¿ױ¬›ו’¡[¦÷ַY Tk׳ַרµ*ֱ¬§‰g~+m‰)„g `”oדˆ¨b`°ֵס־ֳױ¸>wzכ}E9@ר¥פְֹXׁP{¾ש¼4ׂצ,±˜?Cת.¯P—²²3¦˜fװ k³ט7.;ג o)ִח *­װזƒןִK‹›ּ©Q€esנ ײLפ&ֿ.־ֿ±ֹׂ;¨¢ש[יִ…›Iח´4¾(A„ֶׁ¨³ז]{l/©ָ•rF3ב¡2«}סe@«‘ֳ0װֵהֿ[#ל«9™ֳUמJP>¬‹=%₪gXױ®z7¦¢WeCָ·§;|שMg—gtתֻ½|CIֱ ³Q0ֳ‡*Eq_¾ֽ–/ּ.~סֱ3›–"¨’lז[@¢ֶֹ@aIח©8—]N¼ƒחןרm baQֹ;6ײ<®cO£°´K.r}אK*ש•ה0»|˜··ּ®ְק`תY£F׳5†|Pק†ֽpץעl†yq3†AAָ¥¼*’¹pW€’½1ֲ¶¨ֶYR×א„ב״עeƒ/¼]Nt/¬™ן־ְ1נ‹מQ¹ׂt Y›ֻ׃C¹₪ ׃C ;ףN°v‚‚ד»ה¬¦כƒׁ§¾'ךNם7aא -¾ָוהו‡|“§ֻ¶ש 1Z%eH…‰_u¶¡D^}nרJ©c=·f‏ךן~ש›•לC»}~ײיSף־;k]T‡w‰tU$y¨װ¿Iז:FUז;ֹj½cט?£+… [®×w˜JA]qQ ›±®ק¡›¿u³מ‘צׁ½fכiקב³Gף3|h+)VZ¢¨nAh (הl ”ֽ1׳¼|f־#’¡× n&µ$¡ֶ$£mֵ˜:¡“\ƒכ„nCֹפך׳pFֱ[Q‡^%j°זש™m]@°^‡5•Lr^“׃©ר›0Q4¸ם'¼£ײֲm6¹¹ׂ/ °4+M=G`½ ¥"“הח€>5amx\ל?Xsצ–-†'ֿTN¥ ז×uq+TC׀£+€׳y/ׁSֲֵ‘§אLjכXפשַן1lנ¼ֱי j…©GbL©~®Z|ןr…er7הָ²·Y7~¸m%ה3ג-1%ֳQ7¸ƒ½?±¦] ֲ}זKEף½‚C3Aי=ת₪׳¢Hs×§|q\חwE¸&($„nֱ?ױ— ף7יB®O7 [It₪hסwֳ›sqָ«†«¸M&ס¶Ihֻץִ£²& ֹ™דU£׳ מּ…¶לךױכQֳַ¢„.דט׃U§טuװי n¹זF£י÷ֿtױ¨ozh´י my»י÷»z0ײ(Iz ג7a myץ}#!J1[¨Nנ־¸³e|ל]¬©\£–s‘r[ֵ5_¼¢•1Q>#9q\¹\W‚rq"d÷’ּיgd)דZ{&׀XC¢m׀–w¾צs¿gבb/גֽ\hֻ©E¶ˆ>]בְֵWא+ˆ·ׁ‚[n÷’½ל®נן«ָך@pֻoI¸¼ ²©jװr׀“;‹7¹‎irg>~0׀ברף^‘סV”Yo\Wlֹ¾gk9JQ²׃תךH¢?³¹…L—1¾¼¯&‘‘Vr–Nvֿ™l‡Gײֱ(נY׃י:$Oה(E€ל|AJ> ÷’ֲכLשֱ¿)ֲ–ֻL8"*†•Nם“–ƒֻpR•־·vM2^ױ°Npa(ט]²‎&VY׃»Z…®/ך1©@¯>[בץ–ֻב„nRb ׀ץ4®Oי[sYtZkRצVˆ_Hח)–ֿ ”¬'[רUr±&ˆ‚±P².¨¬I6׳„|GXֱc’8ג Q׀#ע'LQ׀ ף˜ֲ/׃Uµqװ`QI#VתIN”N#ֻ{qכ1Bp¥­ג״Kט-זs‰+j”9 ½NSw”װ‡,§ƒ×#­א>OuֳkִֹR-'{סרָ:›V3נ²ם£Jj´N`װ¯Z »¥ז´€e_ָ¸d ! סK%8|µםBֻ^q9…נV{c˜J,jֶוֵ¸<= ”ֻdַ״מ®תָ»דz½ֿ"ׂרa»‡‹PKb#ˆf]ִ°$..Oךץ>זc>:F rו8.[—Om ־ֶ%ֵֶַ›kO¿Tכ£'׀ˆ£ רT’z|kV¹זם[א1›fE־y ‰>‘f)9lWהl"Aם גד‎ף‘’©cת׀„wּס¡)ק׳¸ס&Bnײ‡G\hˆƒ׳©3¾kL¦ER¹Aj{־*‎dT=«t6´ַ₪¬oֻ/©¶«״zu×Vm3bף‘־Z,7µּ‹;אucטCב½"ֳ|aׂo—םlg__c׀ֶS=ת .£ׁ³µA0ֵBi‏¨½Y5¶Do1ֱ#ךי“`µהגiHu1«ftׁ’2¾¯©¸װTGסחQTַpֳL.¶¸¦Yכ@ַ_2‘e,8z`כ‡y)4ˆX¶µl₪!/‘ְטq}E;/C°£®Gƒx8ˆ8מ÷pW©@–³4״Q½¢‏ף¦\ױבa‚›ָף'P₪¹(aנקס¦‚dבJ–A±מ‘B”ֱבב9ץ?Zם•(גzֱש˜÷uנ¼״;8„ח`ktֻ¯ׁ¸¸8©9±2jy׳‏Jֱ>YXׁ,Dly׳]+a‎ַׂ Qֻ»צל(P_Q¯bץ[u§״F?״ע®Aכ³P-Lתם¢¶w]“³^>8mj}׳1§ב*<ֶך?¶¼³: E3ך,]˜Zמהv¹ p8ס\E$צ\¯˜G9}E½סײO1}ְֿµ¯׀ח"T–עתזכ$”h–ׂ/<%׃„u₪ץ4ִal+ה ˜`”(!6K)vaƒׂR‎bD³.₪?ְ[ #@3euh“>}7tֱח<ƒ ֶנא·ֲ++¡tH´ ¨k@<‡„xOדF0ס¸C«" ׁצ±9¼׀הA5{דז'zPWװh +¶˜°—‏G»®גˆתzמ<¢K?ׂu¬נ₪װֹ›RxֲN#c®#,q־p…¿Oף-$Eב7¸x¼-ƒ+א}(oxFHצ´ NNH­|כ˜n§89ֱn³ץ?Z®ב¬–%ץ?¸ב¼מ´°Oֳ™-7$¢…־mׂG׃־n1קW³ ח·­ ץֶ״־¸ףU{ְבײככ´/.Ok(bgIחt״ ן\׀X%נ)9ֶם/ֻ5ף וw¿פווGֵqqֵ®לt©(׃־w¿´#5µrער״ֿ‰9ֲ]FKzƒIם¬ƒר£Ul$fֽ{‡–ִׁׂ-®7ף×ָ¼Pl“־ץ±(¥+‘t0YK¹ָw— ²H¸ כ B`*ַ£t½wֲ6) pףאש‹ =הq2‚]ִAֹֿ{‰–s4א$ֽ‹םm•s₪J׳©¸^0‎{שבו;׃§—<_m-:z₪² ¬0®1rQ-ם×›׃F}D'c<ו’)´ֱא™H³?ז3±a& װD‏†xַךׂע ,“‡*#זZ•פbֻ3¹ח„t•’*¥¨.׃<±±YD>;Oש>ש6›ח34vn6G₪m}„ה1yֵw) ֱע%ף| ?Xי^`ך4£‚=עֵgZK [׳aֿ¥*tפD¡fO&vׂי¡ם'ֵc–®ֶ׳B#’ֵ÷y¹ץ®”4—r״\}`PZ¸T‹$ג„´[Q¬xןvף]װ‘†´y₪ֱצי"מH<ׂ`_ֲ$ךֹiw‹‘ִ³{‹l3ה¶Tא–R ֿ`X©²הLQ\#±z¸ײזA°?`ױ׳”©<†YzOתׂ¡¦חזnt„(>N*ַ»2o:¾(o ”%ׂ‘\_ִ¥®»d£^ױC[lכפLsWFַhךzַp‚מY-‚^װק¨”למc(a8`½]”>ָ=ן0ָMV¨—9”euטץ‏רuט¡;wQ§_g‰‏ֲֲֲֲֲִm6A„,קְַAY“R>t9ֵK!ל%הD]7‰ֻ׳רב«¿‎ץg·ף_‏כ¿ו_‏ןצט·´[הֳי¨§*LhYˆ]S½לEל״lv®¼tzS§‏מױ‡_״V­n´†GפגתװOsn׃j‏{q—תJWQUק|aQ8ַK@u¾)²] ך/C §Kˆ•‹VL±פֲ‘rֹ‘פ)קטsױָ·תֶz+-(W0B"u ©Z0m₪,$ז¹’בb^זL³zY׳‹¼iU„:אותˆי˜©¿‘ֳ¥ּֽ'`=3OֹN÷ד!•»A0C׃Kjטשo‚JEk1״µ;ֲׂ¶וN 6ׂIשMN¡ /D’h*+Oשֳm†€TOֿ4]¹‚ו]ך¢ ה C$-ַ€r‘ןˆךהSַל¾]6Ekw,“BחמZט©םCדT`ו™H)iU¨M‚ )4-₪yכ\בRHq;#‰‰Wו´b¦ף¥Zֵuvעyֿ@¨־©”÷}Uן¶”{–“¥¡ָ¹ֳCתˆףִ©a±zP•Wְֱֱ&c׀²,^¾‹ך™??6~“ן¶1₪O7בױyֲתפ־פי‡תה8ִ₪LM¨†ֿp¯¸כl c{כצq¥Fx¼”wDנ'6zPˆ„־´ם­L'”™nYOֱ ׃·D‚O(עח׀ק!רz°iֳַר±T6o'6=K©0חJvִt£‏¸ַ‘„”¹x‘­Y›zUו+”O)8װB2ֵס±£ >f¨/`G¨¢T"„*cׁO÷ֵ]׀i%¦baT%“$´<+>‏70ױzֻv P.ֻֽcל¹ֻZא}bT”W”חDו‘ˆ´קָaH·J¼׳­ס M׀¢קw‎¯ץ 9l0,X/€t*u}»י©,xֲ;­¼ֳ״d e²<״₪²m·JF˜¹eֳ₪´סּ\ף¢z~Qױ·¼ƒ;£J_$?סJMP ³$(ֿ˜#¢₪|¨nֱ“הצחs9ז¿b†4ָRq¨rgF-0€₪ ִ¢‏pV¥7װM­Kבƒ©÷bשT±t—ֱ¹ ן„X‘+bac[>$?qAׂ„X¨'H‏¾wDפ5Rv¥רׂ:5₪ױץ¿‏S.Mא- צױ₪ֶ״גY!°שR₪ֶ״‡׳0oיתs|v5ֱן@T‡עy0׃T;ֶ¯‏ֿo WEeכ&pלֵ׀G™“ֵ¡d+aװ₪¡×“ֹתֽT/ם¥ױWֶת¾½ƒ‎·’ו־ X½הd•sֱw½(]9{ {hױ־—דk9{ָזL^?#¹ְ5\ֹ@:?ם¾›½3`yup…ֶ£ֳM®<ו¨כM/•=cזbה"—@_”°Sy}i}וH(SƒN$9”ֹMָ© ¨…¿+צ.£ֻ0ּI—_˜/מז"C>םװ£It§וi\§%^@{רע#–u&=:_ֱ²ַ @?/}‹~‡ֲ j´[פק©ִ&‚:XR™g‡)a±דֶ*aַ״¹G»m¬eה…}‡7DחY*W9 £'Cׁg‏nLt]°ר]אWdTק]”!F¯V(׀(Yיx$7—עם@?dצפ׀j׀5¿rtˆCdƒ·x ×k„¯^o׳¿;9גRP‏eMUֽ” תֻdfץ0¶יֱ”#‰₪¶Rם״¥' ׁzב{6ט \0ו׀Zs(ט[)[#LY™€ׂ7"÷¯:;v‎":^µ«׳+¸׀‰{¥XG6הך V‏וAKcnכו¬·ַb!ר¢Kגxכ·€c‘xquq)ֹyq•~.QY—ְq׉©h† _@8± sײoHחג<ׁת¥ֳ®“6±vq©‏­ז?×–»7¥}#9ֱ÷A¸C’¬[ZָJ¶ץח˜]ד׳נk_CEv,EמpGֹ1±9ׁˆXE‹¶ה°×™h>‎*v ‹א,ם[ַֿלADlT^ay- XEC”‹ֱג„X[®‹ף'pגSu=7o•w™z׃ #¸׃5tב$ls²E§"ֿ„Fץ³pלפֹֹy|hקQקה¡g»!»¡we¹HֽזפהFs‏׃ֽסׁוי9¸EM+Bרשיq½dlאױ׳¾KI ַ;')Xוa—ץ{גֲָאQQֹםֳ½a4·=k+¯נe©R¦&׳ױ=¿ל^m° .ס^ׂgכ"‏¼קEָ =ֱ״עxO!₪M¾³&I ֹ¥} $­Z¿'רמ-<ֽ¦ֲ״±§ב˜BS@»>‡Kr,2†#{ֳ£®ֹץUJjAg‡h₪ˆQG=÷^‏‚.=™£;סשץג'ֻּֽH¨×־ע‰oDDa)ּ%Puu)ָA-'אƒ (³]^ו ±K1SƒLM‡°¼’w´X¦0™Pֳ¾sצ‰(ָׂ(#«A;¬¬ָפה¨=‡´םמס„±(ֽ‎zש\ַG¹L8מ^ז¢ע¸ATמ‹h <י'®‏˜\[_\‚ ¨Oצ˜†±8¨Uֽi»µֳ›¡8'ׂX—׳VPsFז-צ—†p4ח{ְ“ףhדˆכוC)4³i‎¶,{ƒ8-¦|ֹ{ֵ¦Q]66f%†|Uצנb#]FצKmfׁ¢N [¬צה8i-¶n:בסiˆֻ‚\!>mWםV-ה¥i£E€ֿg´fטjאd…*RֱD‚«ע)G )hNo_וGסֻ(חAf76° 4pAן¢‚כfc’ׂ ײ¾(׀|ׁ7«@ײ€¸kKF, ׁעItr„“W­ם?ֿ*”0“ט>„ױ~²³“ֿ¼Bt³ ׁ4l־K–ף?„ֳֵ:€’]9rtlVם ז‏]´(f₪[ֿ•@_Pק&ֳ(ױֿlH•Hׂ¶cאׂv` O1½vDטס9L^d2Q,eע’,ֲ;§@_r~F¿לvC¯¢×¸—B¨r t״F%¨]HP1£;8—7e©Qד3׳8"ֿט9בס±+כ׀צ6feײc סן@ֵ>‚רטY ה¹Eִ$Fע;( un‚´=iנ ײ8n°¡²¦ׂ¦ײ‰oR₪:כו§]ˆ'A@טIqˆֵף¸בW|$M9gn#\ײ'ו^7 *X±”]«½וnזwE²Qne Jם*»¦mY₪ןnצ׳½ש€ֵז{@›וFהץבוˆ"C¯]¶|ֽׂfֹ´B:8ַtעeU»°׃Oַ0$»׀°­Rפ±e› ¡ֿנv;°hVOײz#(הןpH-RA7װפס •+“h7ֵַ™«NMDֵ3Y¦µ#@RQמב•^® ­"eN‚’ק­{[´+‎M¸׀¯ּֿµ¯sֹֻT ™9צ?z·ס תWקֻ®ה†F ~‡z˜^ֳ}~ׂיR—&>o‡תֻ•Cre8‚u„ַ· לֶpE?“Lּy‏װ=¥ְֱNׂb4x Y `!Kס•(yyf'|¢ש›Kc‚„CךSP '₪Xׁ´H—±‎DS@i‹N^T‰״goSֹׁבת•ֽ£״³¡oם4z\IֱK׃בlGfB‏ֵקכא{§S#בKu|׃´°FzG¦_kp₪בiּ‘‰·ir4°~›ֵֵ\׃`ב$Ud»mF׀ֻUY§fז3¸hP»ֶ›ֿ€v·™Oלו+־gpmֱU‎׀מ¶₪^½¥²לs†JR ֳn#ןא7ˆ*6ת‎M6f£ֿלm‰o lט†i…nנֿ~}']c>ֱDPֵf@ךֳ{כ4Q1 –0®)ֿמn8m·X´ׁ_?wP/ץָqנCJ†5>₪` )Jj¨ףUיk¥&@]Bװ׀וRלרטָk Rכֿ‹נB –5/wר·¥”Z’~aֵ(d‚jלEˆֿˆnsHֶ³+ױ[ Kֶ¨¯ֿ%נbֱ‹?!S€”6ׁ©ZU²"b8So׳ִ’־‎*Qµ׳°ּג­¡ך°t7ˆַ57Z¢ק;ׁZׂ8»ֵ1׳”b,[I"%׸@ֿ–˜#₪Lֱ1״װ+ tם˜ק¯qW<ֵ¼yֳnWׁ1¦oCֳ״»njo@3»µqmה׀O׳ײ¶חm×םH°6Mֻ0׀ֹUף„aL‡Iדn„p׳׀cDסטךװ³ך:F¾–O’tּv…2¨=aא–aךל¸$ס²¯cfLֱׂ4}‚ך=םט ­ד’ײ´¹\u)Zh<ר°¦hM4x\·״™”¬פ»]טiצ°׳ק ¬IX¯T 'ׂqׁuױ¡R{%-~a«Q´|A3sb,ֽ)ךcײ÷״ֶֿpֿ€K hִ&sR.Aנמ«בקֱ’S·v₪#&״[״˜י°¡§³~¦€6nkחֿ ׀2בxבy†e)°כִװ!פ9‰]>כֿHׁװע¥Q}§®‹DָB¼*`ֱמIֻ›×ח÷ַH5ִאס¡ ֱ±ֳל7$D¢~=ע$ר“ח©₪¥¢ !ט ˜7ְ!\B0QGyVאNAz“ִvP}–´ƒX6ר uץעֳֻקֻ'׃גֻ_¶,J ןj». \אX:­W²ֿpׂם@;ָeNƒ‏V½¦ן‡„רM€¦Gֻ¢הKc₪rֲחMש‰/שb^_¡‚©מֲ>!×^¾>‏ג°cיOV×÷”׀¡P¾9ֻ×%÷¾yׂs¼ yֽ¼׃ ִך¶¨’נאVW= ±@Ks¥2©Smזe›4s†pי’pR1ס־ן-A„ֳ¡!BTK‏•»©VZ¸!O(®)±´י‎*Zן#ױ¾ v™§ ®[l׳». ±ֵװמ®½v0'p3”₪¡ןגbn¬ׂ־‎ַ¸hמ{ׁ=? ן}¿r«S»»צ‏ט¼ֶ²”v½ַvwקח—5ז‏9›ַק״מ®½?»¬1קׁvµ»kןOױ9eִˆץUז\ײׁ£םjw׳wkµ³xµקד§vMזP»»Jּ‹“smמ©]{~Zkמcם{jw׳c 5Nm ·ץv;%ֳק¡¥¡כ‰¹):!`²=u¶יְ÷3ּ|ַ\״זטל¨ֶ­rW₪‡e°ם]קטi₪Xk—´|ל·v³ש־ךh)•ֻ‹VR( u¼[Ex¶ 'g5t  M‰µZ~ֽ™¹®_°e[»X¥r¯ַ€­G)ןeגסI¯פ'–’‡טֲ"$2~uCץש״‎†3™M°L fֻ C_‚¿מcsײס=״€~צ3I¹ צ«‡„d²ֹֻ§,yש.›¿|]‘‘f)6’r¯kלUג:ו lVk†Clr¢Qַ×PUצ CBֻx4o³פו‡לשˆשˆ¯ם¡"A~כa‰ ‚¹ױ¦צkהֻֽa₪׃qIק­XC ׳‏x¨ֳx^³(‏ֳ`]G`ע¸cYeװצ®6e°½ִk0{sS¸]lLIש²lד†<‚חh'!o"/ִ#XִAP¸_G°,ƒ,½¢o./jGםךˆד צKףגֵדר¦ֳד8‚ָµ„£Dֲ#3¼ iּ1ִ‰ֶַֿp Iװ{-N„,<:ֹ{iֿc%Bז,¢I₪8גנט¾;<־®d‰3<זiˆ¢f…«÷ג9†(n½tpˆַtA½BRq(ֵh½BjCּב5tְ-s ¯¦1‏ ©:א)•^!ag •"p¯¶׃Cיxch=.L¶^¢8p\0£^÷O/²‏I?אִ}sֱ½z©?=°ּ#°WH2vfL­ה5ׂ€®!“<גג'5’’ב˜²\·‏א“Z©=אT¹¢€˜ך¥·rTֹ‚­G¥/‹m ק¾¿E€צ½״Al’¦ RךLר<ֳ6?קaל7‚8תר[ב¢Pl,R‹¯=Oƒ"az״ ‡ְs]ְ ·אנ־"$^(ƒZ®ן[:UU·¸I„ uֵע}״ֱ ©†©+ 4˜†¿D_\k<‡ֵ}WQ7r‹'¹zvוֻ‹K%´; P-ֲָש­/\)Pֱ{ט°¿}ע·}צƒb₪\ˆoˆa‰s‹‚[Yז­  ‡ֻCQדי׀¯×l× ¿7Tq/lF¿PְץN‹ד כ1dI("D±xל ·GשהyN~Sֿ<ֳקן8L—א+$ט´מJ¬(u³Uזv בzA! װ—Zyץ¹×עsX¶±~ר ה‹ֶֹ|3‘khס•)U˜2ן¦@ֽ]ֿ¢S’מ@ה¼0bץִ8ןֳ=„sנ9ףְD‡׳kBDw'³N?ױעחz-ְ0ױ=5₪].])ׁY¸Y‏·!•£זְ1(ֽA,—ִם׃5׳?W¨f״וֳ–•ױפ°_~Y=QWSUםaך¶ׁ"“$‏vר |™ ר_ֱfXx‚¹Oוֵ‘%נK¯^s¾C£׳y£W‏׃);צ×לֿ” Kצ¦R7ךx"®cֲ[ֱ²¶$ּ(מ¶״%ש=ס¶ױ®0( …ז d‎ס״:ֲ´«ח ++|טװפך[•6„F¾"¼׃²¶vֲ‡ .,,luן±ָ'tץ ‘;™‹°ק(±‚vסר¥’ײ Tױ*PB5₪ֳֻ&,3צ‰AR¶Dטµל$¦Oh8–ג]g|¾ױ' לY4ֶ ָ¯x+רtָ³F8J}״תi¦`²‰µ”6ֵ¸SAh-"U9u‡nאƒָ7‹|״ ¨JQֽxֵאyFa׃i³ֻ÷{¨jw%j 7‰װ@a‚Waq²ק´ץUd¹!qֳנY™U־IC:ש,צˆN<½‎ּAxנ₪‏Pהֱ³Pֹ!פ%לב†Wm ¦ֱC#§@|v…^·;װµנ–"“¹א–x-C¹‰y&E6Kלxtג>1IYצהhmפ^®ZPl,ּ"e3jש­ן}צשi§{I׃וV,·#%–b`Tגֵ¨„‰ךc­ץכ"„ 8T׃heֱזV1ֻ›D,kF-G₪g¦Eֿ¦S(צֳ·–ה²²₪®xתr מוַ¬:-נz‏S׀?חz4eָ¸ד•…C{“ ָTAט”=#q64ִp—ƒZח´½>¡ָּ\גך 9עאעH@)F÷iaך¡y¶¹¾ ֲ7^S5¶ס· §’nI-חְ®h»®9h5»W‎¦ƒץ^ׁ“KˆbRּu–ך"²ה¢*aH©zׁשgִ‏ t F©F׃F‚yר‏k°תaLO†Q³‘1†a===3A†~6¦:a.'Fׁ^¡₪ַG®N÷[:מx×ֱ¥B&(‡“=E`/B¶וזQt׳0Bֱדװ²‚ˆ™—z^א\‎.¯9ט›;m3›P ¯‹ׁ»ˆuהC“³½µ׳< Xז׳ש÷B”³S0*p¥$צ²¡€Iא*“זQ\c® Ya^ֻ_שT|וa B/)V(₪ָם‚ב–ְ¿S/רכ¯~קבײּטסqg˜_f½x8ןg³ח{¾ֳֵ²yK ףYhז°ַ#²3{± ›ַmd1ֵ. ,‰‰„¾¹e 1pY°oה¢5ד¦¯לsLקµR¹Nףפעֻסבֽ—"‏g¥ע"L~o׃1K˜¸SuLƒכ|S?l9Qַo@ײ½ג÷¬8‎~eM«‘½<ֻק²ֿ‏9ג^66‚¬!Kֵ[ה°Eצ4¶גׂױ¿‏׃‎aUmק]וֶֹלחP׀¡לם ֲ[^ץ®יׂ±ֹ׀v4q0Ohףף+ֶ,׃¶¸°L0iזP>„^4צױ†ֶ—ַ§gוFW&´±ף×ַ>wׁ'n‰ֽƒ₪ץ•ןµ.$C*מ2peE~½8'רrb¸ֶ+×~e×~Wִ׀*ה=PEׂ״ד´OXbHץˆר9{§+×2יֵץ—«ƒ Wרל,Bp#Pױ3*©8”רב$ע¨¸לF׀„1!f‡›8mמ}3okֻz ¾ ֵ™׀ ™HJ8r0±ױ´I5ֲˆjOו«¯ƒRb8/±"p‹a’†‏oLֹה›®µפ€ט„ח¯[ְףCk°›Cֱ ‏”6ז„נַ_™_טKֲי—¹:"=xלxו­×ײ£ךD-Hג^בy ™=אִֽ´H¾־˜Rו²b9{1ֵhJlcC1jx¡n~ֱ M£U/TVMּ†¦SתK\cƒLָש nµ@[Pׂ`;!ttֵ@ל)V„l1ֿתpPל}0¬_Og *‘§2ף9«WOמN׃‘±% 3ַ˜ל3e›ֿדֹ'oH/bושװ=Kִּ«שB`45םֻ§\‎3ִT½g¿ֳלM]˜©G«¹§d =טֲ‰»t9‰ד¿o·מC‏KרqQ“>ְֻ®₪Dאמ\‘xCשׁE£&§‚¶ץ;‘ֹj¹ב­t…קֽr¾€ש Cע ¨ש>ֵuד$¿­y<ֿׂTףַy©)exHj‏ ףV}ײY93[װֽAsjwb2םַ~]ו[—™1sNֻׁ־¶¥ִS•G»©¨*ֹ3פ[~9µa הוה¨²e‏½n„3‎¥¶ֵaז‡qֲ€7niUה•ֹװֲ¢ׂ-F‹)oHֶ6תֱ ‡-Qץֳת§½ׂWX¦יו‡|V¹¶²,:%qׂj½ַ`‚JפEI÷¹ַ22ק %§‡r‘r“­–K… Z€V §²{עviגךר³ֿI׳ה₪{Xˆ4ְ{#׀‏רc¾(£|Qֶe{Sפּמ®µD ¢ˆס#®LPhה3FֿV”OVֲw׀t8•S"o״@n9ִuןzטX>¢m€–ד5bטƒ-q]Z<ײ`V§״c h9עXƒY˜P¥ˆ7ײ€–9…i‚ֲ}m l N°ֳ«ZCײ©^Hע װZ¬סN€Mֿ–D™ ׳ר2n…‏Eָױ’Lr‡)‡Bמ’+‘>;Y…ƒ®ִ˜בכ®§ד•אֱמ€אjמ­¥:Fת+˜סכ5הײ÷׳¸הRִ˜ ’Iטx$״=S˜E1¿L[״u9v°עםֿ= ‡ּמְמ¸×²RךלvJךpתkz[jִl׃WIU»k$2S־,StQ¦˜ײֳֻ …S”׳ֶ ~¨‘Z$Hֵיlכt®p‘„t©`ק jגQמ0ֵl77¹ס<3ֳ¨r™(Nֿr§I­$¼ קװ₪ה¬ d'שֽײMג.|¿]טYrָ׃s־-א&¸'Xa8ִסMQק3…• ןַי,₪‘ֱtװE¡¯u÷QO7ֹץְ2x,כuֲ*ET÷xoֱ¼R¢N—C'\ׂ לָkt\9T״¸8©U–‹X¢­£־²o¯s€¡PRe±1]+k¯sדbxׁקB®¬„xojה+ז›¸ בֿ>Qְ׳=ך״uפױ8£¢«-ױ־4nׁe9†M>D}˜Gוl־ – ַfָ©¹!־ yv—ְֽ‹›@ָֹF»ױ e*תזqn[MOֻ‡ְ2‡ד=ז¨ָ Bב”¦¿2כkֹE ^½Dהזָ²Sה§׃עM¼­-$נFh¬o­2nשו‡¼ם-wn™³=מָ¸ץ„\¿){l|2®ף©x‏¨”M„/Bt׃¨h3¯nwנ׳j:÷~zrB'»©י,D˜׳ה¸׃םµ=Y‘h(Z־עה}=uץֻמ».¥8D*zְ“«R2™…|ךי{ן[ ƒK ’z«ךiH&j’©×ױ=¶¢ַטו*¼“zw‏6´nC ›:»2¯*Ak^`¦¿קzfX;ר^ץ¡plּQ&W(י„{-<דֵG´4‚סֵ₪a~o.¼yP־¬¯Kzר™‰Msf Fp6לזt:“—ֿ־ע/EנֶּT?`®*םVק‰_pכ]סרטט¨4a#Z :Hו<¨חכKר =.S 1¸{tם¥N_ ֳ–Z װֶ‡5B' Ze0u/}נחֶ©=׀–G״¶א₪¥ַdYֲ®wנ¯~ש›¯7¾:´םt¢0”ֹט‡/8¥ה״¾טFTf£;•ן` Zs/X4poְ<כם‎¢ק> ÷kז2¿†sֶ½ָy?‚c‘¶־ָ#׀Bעv*MH@ע«’÷|ב£¨ח›©ם&V‎¬»₪•הֽG¥¯‎ִ[ SEוךנ¼ו``ק:בc _ֻY]_ ¶״ֶדµeR—ג™װˆץI8t•-°גK¶EJ µ³0ב׃ק‘©ֵh5ר²b‘{¼cc?י׳°b)B„2jף׳¨.Dם₪BmQ¼ 9Nzָ#לב1^pkֵr‘k"ָ+עMI:ל—®-2v9¯rן«?p…¶ְ™s—¹(…Gּ8ֶז¬“Q־§ ÷ר ¦‘ €4m93_´b¿ס^ֵ¨m§¦¯•{«7־ֻּ׳‚ִ‏$“b׀7זֻי₪*ִ‎׃M( v ×נ~׃¡¸x;987^&bםה׀רxkּ׀ ,¦Xkׁm´ח'ןֳGKH£ i;עhֿ.׳VAob6 םָ£=¿¬qNג6 םָRךט¼ֶX+–” h{Cזlִlא1o]ֳ MֿgƒG\Eֲs¦lpL©9!WּPc+)³3e‡X•Iו$ף, po”q sb¦v{װח>וְנ˜ub!@$ד°÷*9L±Yכֿ¦ר+G±zDּ±Oi$wV¸lָקIƒ2a‹״L¨%‡נ6B¿¸i₪°ף¡Ju|dד:f2Mץ½X÷]לKגל ¶8[¢ya:ֿ®¢ך<‰ֳw‹DZ׃9¡ב)z?ַJִ•ל#כ׳³Hל4}ֵgן¸‡¶Yo~gִ:]s-gץֿg»ּQt¸‘]¸.~6«ƒo8tD!nhס©bQ,”¹|·שײגX¶ג9־%:™¯ֽ+9¢ֲ£׀l,Nגׁך‡‰­²u×–mג< of§F~«‏ֶ#®£ֶן‘÷;ֿˆµ–,¡™¶y«2׳ק~>Mױ†­dֻ=B:†h>ז״JֵKzW³P³ײ¬®•ְ8ˆ…2±]+O ¯XE4כ טK§d,קI§•9¬ $6{0ׁך^µח¨@Q°ד^¾ֻ/)=uQ1{ט§¼gf€ג&קoTֽoaצ‘ױ·±÷+%U¿¦Wjצ״ }וװ 0סֵ¥ע$kֿ‰~ֵ\<7ײלֽE†ˆz‘÷÷@„W₪VI"Yֱַ’^ז§Ai¿…ׂךחc?@ןE‰ַfז€ yֱש£¡ ¹l’=טתֱ™Aר¢ק†½׀v¨³uבֳ} ֿס*>:j i׳Fֹ54C7־ֽ *|DX¿•†¬]€ֵ4הדEy#ה“s&tםצבך6'ֿ/ˆב¶—צ^\ײF ר§'ּHJ†¢V¥!—s?«־ױ¯^$‚¯Qֵּ¿Vµl‎vן Lק^&$ƒקm6ƒ2ֲf»o®שן\›ח‡÷¸*קTמF¼u׀הU4®פm א‰3‚¸·ז!K<¹h«_x)ײ)ט€NפַH5Smµ³†a–ְסH˜+“~…׀יף>ך«~ץץ¯Iע  _ES<כ,mֳ ƒ"ש©Z‚ק-}Zצ·„8¼›ףyRkֶd˜ M1ֳdRg*ֽA–L‰$ֿפmֶֶֹׁL-kw¶SF‚Wn8¦F&ׁ£ּ”rףmM­9¢‎₪ֹ&™‚.ץ3¡+/!;Y«v${ױL3E$¨T£­דגz#װv&y¦cWH’חrJx>J¥•g)…Bףsc¸ױƒ ײ5"])ֹ™ƒntpׁ{¯®!L/ײkkEנָaך°¦ַֻבh~ךר8p)?z2©÷סשp¥:uֵ .v *‚נ&r4]: L4 /Wזƒ[ְ־Z¢~+יP „=4ה©“ˆ^גּתערפrמע9ןׁqcMב¿nvf}iׂR>j_ ק2›XFxQ~gC(°_bJטסQ>}זְ Kטס¡s¦+טrU’¯ג]·Nָס±חֲהEׂ L/»—§p'¸ƒ(KQּ>x־{÷´pׁz”ן#¿h!%כ3nש>ֻטװֻY‰ ‎T%’K(z Y‘“~©eI´ז „5csSLװ6‡dםנ¹"ה»ֹˆnu:–&ק¬#¨g^h×Qj©x½ ¹_£לk ^« #ר¿הְ¬6`¹f\tָs§…/¬װ¹ >fj=•zR¼Qzְבk,S¾'…˜‚rנ®ֳ¿q”‡5u/כ‚8ײ²5 ¸ׂ‎ !y(02d ן°v.ף9;$¬קנ21ֱ¾ֵo‰&¬†ֲ*רNHP3V$קS,xב%9:+ךױנ‚¦µ™ ~¾8ZbֹX j¼דZ‰nP'@׃ֻYuNK®]הhP U\K₪Yץ'÷1ש כ,תOקן³JW€ ֶש#׀cxְַa¢בvH±nQנbעLy‰ד!‡²µֵ£&¥-47´ןV¢¯P„{ץqS•ע>¥ILנ=ו\mַ;ה<7‘E÷˜ֲ£†€בJֵx˜ױץ^‏ ln /R•‰ֿ xe‹Lָ!rT€cעֿy_‏ה÷ַ4²½ׁױב ֹ¬f‘0¾קb·K₪טמֶ­ץ|׃¼^ןך©={ְvaW#¦w÷bדֳ£ף– א39?Kf7r ›?:_7›זn_°˜נ/ֻ™״z_^¶¸₪ו 4$צ׳3‚ ֻ ָ£ [­sS…PLc5fױ=ײטשoןykl¢‏:ו=³±פצ¹ןO‘:Z”Orך1ףאW¿Aת÷½ֽdaדגשצ%n#ץ׃Lת¦°?†“ְ©לTצ0•±ת‰S™י§n¶־Isu’[‚32׀a†5¥rCc)Y‰ֿל9Q¸'ַJMp2a3 כM—Cf'C¶ַ¦p˜'©a-zad¥«¶ּ§¶(aװֿ´IIצpf§™E±$£ֱ@÷3¨ ״c_"kגF3ִ†)6ַ£¦–t†ֲF1 ם>^›‚ש³•“]p6{ש־•…ו³\~FuXML“RB°_’:ן†5צ´$וח7-G׳התכֱ€¨Ay`‰Wµ†ֶEקֶd׳ׁ›–«ֻ²D»;m¿7וׁ#&•ר ֻאע¾m•‎ a ֿ{Y¼X=5׃»ֵַֻ§a³¹K— “³Mֵז¹0X¾|‚b צןI ‹f–י]ד…}– ב’1פַֽ£ֻׂ¯½¡¸V-ִ¾ מֽ)[­ֳ^LמH}5כIM׳}®זײ¾ˆגOX§[§ °*״!טrD×k]; ‰‚Gˆ²,±9‚˜5״½ח½ָל־ֹ·›‚R‹×´L0„€ע)תשs‚װ¨"@~h\#נIְַ?RחֲQֵjcq*‎c#[וm^1„¼@״<€עֶ¦׃ֱDe>W€gµ­-b¡U₪”Wהc¿5 ×)¼¶₪²ֱ„‘uֿ€¼ ֻצ׃׳w‡e$™ה¬ֲ›–—˜B_Zֿ²1p…KLא#׃װ[קƒ‘׀ֵ‚¯9e…-†ֿ÷ ׂw2€2˜ַֹנ^‡”•eל£k„ֳ¿¯ֻH1?9×"ןק3צ½–ג©^ױw"‚o†טׂyO4›א‏דSqz1ֻכ°»EsHZ־אj מבue-O”Q I3m­ Gg~יSי«ׁoך—:(ƒ¿!DFZ“xOםֻק.Hַ€ֽ¦_‰גֵ%j¶P²X¿r]<ֶn|~™=˜^ֵ#ƒֳV׳Dq0טZZםYYSƒV[5';„•‎הת>‹ֶחׂ.¬˜WU׳÷%®ֿX0Fב&הִשoׁ“6f”ר¼€ ףomCL´q¶¦‘;p­eT_0ִ שi9ל'‏ֱy^ֻֻRֵ h$n ±ש„©כפ.צ— Lְָ¸/O/ֱ”G–ֲf”=ּS=†£G‹ֿׁ mֵ…ƒ¾•U¡JB¡ה%נ|™ֽvדֲצFץj;צ0•u„ץ¨T„d½TB @בׁiFµם—ל7ֶ ‡עִר»y2¨jLב®Lע_מן>#M‘ Ad¯ץCH בdTֱ ¨L‏CkI`rµ‰Lֱ7ׁ׃ ׀a( hˆו™ ב‚y¥>…WחC~ְ|ךזƒ[|ַ־¬ˆ"ek^d^AoׁADרKכD״A¡–±:±;;׳ֲ¹v¼״¶™¹>X—°¦g{׃םM^ץt)ז 4ק;˜˜¡U¼’}p=‏X»ZI__ד°ג#W­Aֿל ¼7¨(‘¶4&+Uj`FL%¢v \Lט#wi˜‎ֵ P 8„·]YGתh'ְ׃מ,C"ׁ…ֶ ¹‏ ¯{ R~“פ%{Mװשיֹ °N‏¢{²³ƒ ֱָ׀:9o{• P>—g˜ה)P3‘םֳהL%€?kךִF¡yֿ9ןXתX™=BN…¥W״IּנEp¹ ×cS‚ׂ0W0e‏RV„‹־מר[‰•%WM8‰א¡ׁוvֳVp₪U±#=הם¯װ)Tיho†4³‹ L|MC0זז¢¶‎ֽדv“uח®¢p²J¢ 1©60ׁנy: c¯³׳#8Zי ’*P¸·E‚[׃kC-ֶ’’ £ב•¯vש•_כLד¡Nyן7¶§±aֲ»צ=8*×Bx<0³:ֱם;o#״צK,W1מ­RHgל>¿÷ evנ.ט;E’( µ†«EcHפ״<װnֽ3ךֻֿ>‡ֶ°ֶֹ½׳•2sirt)u·§%;(\J,#$ג ¾ןײz:"ט0‘’.Xh…¶8qC)×+צײוֱzA1„הףצע£d€®sb“ˆח9{ׂװׂ4}‡b½Ij×pnK¢װC|פ/’§*¿:³xZטx¿FׂEdץ/¬'‹‚ָד®' װ¾‹+ֲFןUJִ€ֱCֻזv¨–}e×¢יװג9BW$‡ף¯<‰;װb-Q¨+%עֽ1• „"סֻ½מRמ½ˆFHA 'k©בw@₪]ת4רעיvr½F¹×”GVםƒ“ Lן9כֽׂuד`1¥h?1ֱק!:‰E]qֿ H±RA5ˆץn¥¨µc×c €>Oָֻw׀±?•]¬כ׃£† ˆ9s¸tj ¿שaƒ)=זחP…˜ץָhn¦A)RFֶI ֵƒ˜אֱַ/0;ׁFֳft››u°k¶–‘ƒ`P%¥ ¯:?¾„ ey׳°א¯פr@׃vcM1Wh‘d kM ײ±y%<לX¯װג¾ec5עa¯wm-J †l dה.gַ´p²PIִֽ,²µ^ב°˜)·rRת 5ץzרN‘³²¼/`¼dא:־ֹ c^=3U¦׃=׀zsTG†eֹ53ה]LחO{¸‚^µ`רֵ&מ˜$™װ’Lח'›דׁ ·Xע°װטםFװְף[&RXJ|»¢פXװ¥gX¦×O©—(­}ֳˆu/(a¾Uג³°חu¿EO»כn³u ׁ®’÷·×ƒ¥¢rCקF¥‘װµִו…d£ztmַr¸1#˜ֹּ4˜בױKבy^6B#cֽ5Vֲנƒ9ƒ%–· "®;o6ICµ«6£› ֹ–בׁ‡ץa·"ֱִgֹgֲsx‰‘€/½ֶfכY9ahױ¶W‚µ›lך* 8…הװ³.ֵ'`‘”¯י5Tפּ6d‚6¦bU%•ֶvNaw6ב•*}״V»ֱEpןֱ¦4×qד´פ4N pןR‡ׁD¹׃עO$י״©$¾ם;־s£µײַ2©–קVIסB'›;½iMAZS>ח ׁmowPפ ¬כ}=ִר־+עHײ¢—דnנ^/ֱײo7בmR¦m-K/UֶuבW/€‎ת‹v׳"נ¡tJ,EqfC×Xג“ֹװְתחX×#Nn#8·”mX|צHvֿƒ׃$×צׂrd‰tIEsl' וָ”—:י5l«ˆZi@ֻ‘ַ·ש*תw@»‘Gzq,ƒדמא–דץ]7|¬St¼FkHֻ‘׳ץ44´³‚=q]C[)‡O÷²i£]ֶ“ֳ-cdמִס¨r²”ֶוהָ‘'_ka„.‡קלm"‡‘¦נx½ת$–חמֱ 5¯|Nמ/כ—7×ח&ךךכ{oׂדH’¥ ‏ F4ƒalכ†ַ¥'1‡:$0yK ^Qױ‰ OdxvUֽ)×/3·ב¢j4u£ׁht†‘StMֶ† ִֿ0ם÷ֶ/•·ָ¦ E©B÷Gץ ‘™n₪Reע–ן}19*M.ַ…צ ”?HBֹ‎hֿSD ×q2׳3tR‏O./"apkט¥ ƒּ ¥ C5–"Q.¸%…ר©­Rk1ִH#ֳ ·ׁƒY)b-3¶ׁa3סn’ˆ"™ט¿$ֵ9ׂח·°€ וs•ֱז7(±~}»<עם71Z>˜–(₪¶4”t4…wd¢8f@)‏‎חּUB)9……‰F־³את7¥Bקס׃אלב~ָ}¥kב­*9ֵ׳;ִ\ak־I¨df‘ 0/÷ֽ *r…#¥t¥H6₪ֵd§+K« §bו$דrg=ַ?׳ ±®¯E‹פ}H BSO«>¶vה ±ֻ´±װװ¬¥€Jך¦•5X>jײ`†³ײָ?־‰DqyTJך²g‘v\5װM¨א<¡ָk'jׂd96צQ8‡‚x׃`ף4¸W¬C[EP5 Dr•S)T¯ %ם״eZ4† ©nVׂ1 f”ˆ³ֿIO.VAו;ףOH½,Z#—ֱ®K4€°Vְױj´V>םזמ-÷Lדפ»ד[Nרˆ!ֱ&Yׂ¶½ׂ-ַֿ-vה4'×ּ ¦:ל²2] #ֲBסr‚\0±+ ֵנ,לO^s¹ גViµ½)gִ´׀i…ון׀¯1!t :†P;ֵW"²ט{ם³r†µ2C¡ee‰₪B·•-g°f¹ױ;dh–QOOִ־§ך4״¬2(ֲˆ¿ז†0Lֹ‏°7j?½S¾)ײ *{Rע"¥‹׀?[נ@ 2o.f}¬‚[¸¼קאףz_5חVכעס׀כ=@װגר>_G_₪יa¼¥^PM\5ךךר1 ן¾o׳–«ד‎ב%[¾ו־-Wֲֻf–…ז¬w¨״ג& ֹNx 8#ױ8”€ֶ­v×pRf›‘£$S ֹ.av׀טײֵUˆwׂ½-×{מ‎ יnT%Z÷נ;O״2pVB¢B³e¥ ‰ƒ£א}–נ1ױ³5›²¨°J˜dף!÷`$קa4©״בdגֵ1Lfw÷-־"₪³ׁם8ׁר8q˜#]ֵ«'ֻ½hl™ a§”'ֱ₪ֹ•gױ6«ֻױQ־†¸iְ´S:†\8j§„>¿וָypxיײ"n)€ }ַּ†G$elפ>o·’ˆ£—ב1ֳק•@ץי0Rֹ}†kמ@4×d|ַך_ו1‡“ N*יףפ‘,1Iƒµֲ<ְ_©+nָ$Zm*4ׂJ%´-§¡ז×J-M׃Xׂ÷yֱׁ…H•8נֲכX-²ד§פuכye]‎C3 cױּ{ 3ִK\,¹4ֳ…jo*!³3‡˜b¨סZcl$”5=™(3Sןד`@°ױ8‎O±±q¼3p­רן{€:‹h£uׁm.QK­"nd 'kֹת¸£ֽd¡‚[[ֿׂנ|?תnIhL@‎4״זכk…xi€#iM×גW^צ0–¥3v ·חח~rh³p־ ֵ¹ ’ֲ¡ם&/ן¸¾Gכ–8לs´־iײ7ּ הo´mW¯ƒץGƒ„9©X₪b×" ֵת­אµFV>†נ¢-ֱ‘₪qץT*„×3$ֲמw #Xװשפ¿¼רֳ›₪; e׃ֿw:ם־%Mסמח.U7»x–:ׂv7- ²עBqL¡sgך3זײm־ׁ«2Noנ·׃‹ֱ ~ §^§^שה™¯(ג!׳O'ׁ¼₪=q0*ֽ¿({˜q9ַ{₪ƒyי& °‚@ֹ3p¶,l-ם³^״]eי%“×c×®£ז)x¿)@ה4 'mֹ·Hִע€דaע0דֹ “L Y-nd´גX°Xכ ³­I ₪©נו&זׁׂ>ׂX7l÷ֲי³“²ױqnײ¾” Z-‎Ci¸§ֵ>ֳֵל*ֱֽׂזָ½ֽ,‰¶¾”]»8נ#¬X U”oּOIם +ת¨]ת[ˆ.¨)ִ¿¬×%µ<¿sר ֽש3p¯j״‚«¹ׂ׃‰n5@bˆן‰SzPיs!׀ג‚ֵ מ[ֶQ · ;–‡”•X2ֹ«6±D5a^y*´ּךL­ˆ®q”‏×€Zzˆq7ָָ0’מק2¸ׂ¥צfְNXׁק##S(«—ױKםְ]¡(@א›>ֱ?vו+aJvs­®––¸ֻ±¦(c—jj¦הׁ%”ֹ¿ 5Gֵ? 'ל_+¨…m?‎Thי¶ֱַׁcE=I^ַ¯¥~ך.ם‘¡ֶsבבYPte˜_÷wעL•ִ³־(µ´µo'ˆd—צ®$ד­¶O!\HtU’ LJ"•בב±ט: vצ s0YRגמ–ƒמC›F`הp†ֶָ@6½‰ױ5t0ײDכי”Oמחֲ®ץְ|/Bxˆ¶ָPיX!SCXoZע™¥ם†©µ-@ ׂs˜´הףO3ץA‹¦k}Xךמ‰ף₪3UHXֽ9;¡wֳˆ—ֵ´kװ3ֳBׁ5פ|loˆס˜T«ˆHנ~ˆּS‎ך״״>‚t‰וS‎¨iN¶ק\6— •ָV};bn nט»זr׳*v.ב6$Q€ַpMxPֶh•Eכl$טֲ:H³§¯Sו•הלDg,ִ9 ™^+vrNo״ֹ‎v|ˆ­ f’־pםׂvtשֲ…ִש ₪ֵהֹׂ L–¶ ÷»'‡E¯¬‡ױ·ֱו($9­¿Sְ„Fח¢ֿשM<0a™״שU°‹xFמq¦^ֹVר ל©2צױj‡נ)ך>’ׁ7F5¢·¬v_­U;?sֵ°);69ֳ+5קWe ´O²DI’‎i׳?÷ךO×ל׀r°ggֱ׃ צEב!‡ף…Kֱַ5H³ZBֱ3i7¾+* ¿pT¿´8°¥‹6שש¢µ¯†גpI‎n.ַ tך_.ק—‎¿ם\¦÷Hח¢׳ן ף÷·[>WZ¡_w.OA/‘יkֲ×µּ™y‏ ׀jdOf ¯ר7?ז‏ ?¥+ צכ¦¯זך׃.Ey׀\Aiy‡a~p׳–•ץ{Lmשּ¿;ש˜N׀‰tרs¯ֳwnYb>ּB¥D60A›Ll¸¯4לT``§˜ehƒ¾LƒתDֲ‎e |סגֶyyח…¦ֻP§ Fd&]ֵו”מםפˆPרױ,—Z¥wרנ\ƒO m `E=\<כמצg(I…v G­ח{T¼תי¨׃´¬¥†u×Oָ5˜* ‎vחFf^!=z1×’ˆM’z†נ¯i¾:U)ֽ_»M°PבT¥p¡_¼€’6ֿ‚8₪P‡;M;SGכ;|@5ˆ×…¦ּ׀¿‚¾¯BT½¢J‰wץ ם´8חג¢¯F ׃R7b *_+ Zֽכcֳֹ‚₪]¦+w´@׃´׃–"ˆפ]gטץרoˆ9ְ(ב×NG ¢K9-µֻ°׀ס׀ִלiַ„5'µ0Qm׀-rz-`׃Z6ח;| טzhח®¥ןֹ‡¦/d>¿ך•‰׃•™‚ZEנ|µױפ6ףƒ¦ֳZוzGh­«z‹]¥°÷~=יםrּv€·“ִ˜pNֿה¨mRMמ׀2÷m8"›נ#_Kֻ0rLe.N0!װ™ףh_:´L£MB)hׂ*סS|…װFPiF‏L*€N…‚%lk…@z׀‚5€V’ןazm´™ִ3¢ה0*M?ם¼…VH®k2]: =ט ¶©‡׀₪ֱ¥?F‰ks¸ן0Kמ&!¬9" ©etֹ<§!ַׂ…ו#ץ«»–¹!]טי'זP„‰Hµױׂ<€sdױ÷»e´ץH­÷d4&‏T2;„?fץ¸5&ץ!¥•׀GקF&BV«DGֳָמx³ n›ה]:¾•¨`״n(א€gQ²ֹס_+“»׳מׂ,ֻל)^‹­>ף×½³~¯GEוע©f^¿$“˜ֱ$ˆ‎»)˜”ֲJo< ™–ָ#›N§״eֵ&h+ֵמ‎­1L-­v¦J£ל•]ְ²ױ1O$ת biַף&Uֿ†©zv“×gCz?WLאY)‘‏סי;™“‡‎w ׂg&®¾ׁ ׂ§&ג31·י׃B×תˆש׃M?M?kK*–z ִu~Ahxׁp$‚&Pְף ¸1זיכֵ#0‚¨’, iֵJֲ°ZD% r”¾igס&לט[zֻ0‎~%» Oזי€ן9s¶( 7´&FJ›ƒװ6ˆ[OP0פ %₪³ך >§%״₪c¸N{»וMB‹ ?o©gGmנ`RTֽ%‏ֵH~%זv [a¦=½L‹ֿׂ§6פמG$ g6פF Nײ(c „rַ[…;†ֳֵ'ִ_‚…§—r˜?‚NטZK©ָn#zb'g¿zפ5:כ²¨x«ֽ!{=ִ>ַ־‰©sHb׳ה 8¹ַbֲ7§קDidRו;…¬!e„ע^a[ת+ZF¥^¸?vצ,±"¨„8b״³²²ס8ּ00*“ט*!H־ף5ֳס¯oׂ}l)xב נ׀¦q€¶4)¿ִPת*.KW,L –LRב„ֲ#2¯PmNr¦-Jת_™;קפ“±ע«O*F‚ˆ˜€~´`Dר•d=B0Aִו:BPc++hG-B~%A½‘-\_t †nq²¶הק£°'wֵֶׁHA14¦'9—t¹ZDO7¶“ִˆְ¶Bw׀װ,?nTU\£"˜¹O­¶¿b©¯)ש-t’פׂf#«™”jֳf[ֿ!¬8gXn‎׀`ˆ¨ƒA¿H₪\;“V®'oMֲֽLמ„(1ֻA¿‏—¶.קNrֵwײ»עכ3¾)DQ–־Y~ֹNadׂ8¸@DTP3₪¾uֽ‚P׃÷Rי`eh¾­l¸–©ל/%ƒ שֱ [<ְ@Q½ל|4 ״כ‚°ַWֽ‡¥װץ|‰(l·®ˆ×°׳‎Xjשָ"ײ³€­jֿ ֲֿח+Cב2owgQײכ½sֱל}ט¯״r¹׳HJׂ±hֹ־Kֽ+y תג6H “כfI×Pַכץםײ-י\ƒ ³=|ץ­{חjY׳Pײֱ[ן±£•Uץׂתך‎‘‹× £ן&¹סױ{l·fןכ+.€´װ׳־¡vכחj˜+ט‎װ—ֱּvכמֱ…£ִ½_ש;µ״n]…ך¬ן¨®׃¯‎וob»u{zז8ק,!°ו÷{חלֲqצ7°ף}ץ­{n/\ן+¡+l’·¾־ם…—×wי\X(ׂ}ֽ=¶[wמ§s¿(¾73­{n‎ ½ק·s¨÷½¿ל:ק^8—שך=¶[·ק=ַ}¿…}ןMגc»uק‎¹כ©z=µװn ½J3Dו״Ig—÷Rש¢ F1)"ׁ„C‏ƒ¢3זֱ]סfz˜¥%‹X"{בSv±ל,Whֹ£ע4¼x¬( °²˜Lw[I"צU$uח~t¬m¯˜¨uQ 6ֶ™7/¨XQ°#_q 58·¡ׂ˜[dAmoֲP¡נֶ …ת•in¨@™ ׳²¨מא%אtח"w¿©ִp%[Yƒi¹=p+c! ֶ–ז«b;¢N*EE27'k`Bֱ׳ּ!₪%uˆְק“Vפ½ ה~+Z§oז‏&}ֹ7`R‰?₪ׁ¿ַין ְ=~׃¬ּxrׁ!ƒ‘ֶnT)‹f׃”sU&פעhNpמִ¬61vעW/‏נת‹R7ׂ‏v‘vF¯‘’×X״ר¶nAYאש¶jRֹCNoֻ_LֹK™e-L5מ-i¢Jצ˜#–c+†N| ב[K6MEB­=C• Z2Mין±׃‰JM+V(ס¼עxםƒ÷m®©J¾‘D2+אַֽ₪VTצך¦*'oצו‘צע­סעPC×€5•® ם`«Fע-ד­ף—‰¬[ֵז5+±w©.¢_wS-¨P%Y¼’³₪נ“?sQI÷xה ׀קוnµ ־Q)"F|׃•¦ס­P¬k װי@Hג‏`„ו־¥´c=€)ֻIJ¹w2ִ‰ֶ=שxb›2˜]¢sµMּMב)צPתֵE%bֻ Bּ,שp\יneיU“;¼™ס~ƒװ‏ט™rז#•oו.׀!Vb—ֵ ’µ\Uu `Q'ׁ׃"½÷'זb־q¼ך^םיט·˜ fװ־2jZֹ«ֶָא´זI"Ne¡¬dSצת“4\v‘טךח/ן×´Ih#ַ¯T²2³*Lh—0M*‹&₪©hױ¦WַY‏ױ!÷Q\sב?Yf₪ר|oֹOק©vנaU© ׀y©”>ץA״ט( ֶ\@N»l÷¹AU^uַ6³ְFp"|ם$ם E…  G‘™בNs€JצֹO×Lע-– ™6+ר<3ײ–₪ ¿ …oםZ_¡א¾׃$±¬[ֱֻ«€ׂ^Uuˆ_‰ֳהp“(®ֲD+ַדR;8$5ƒ( ‎`q±ה₪¼3„Sדm₪®םת«3ּjיw¬&ּ×´ו1±ׁ 5NTֱרְR ֶ´N’@~ƒb1µY«WvEj¾קב‏ױ8ַX=e:׃*P”•>× #Q,4ך9¸6"÷ ¶™װ–ל"&ֲ€ש‰‰C‹ Hוױ×ַֻח¼Aֹץהwƒמ£ֿ\ִ־µַ±ִכq-eחװ(¬s¿£tFֶ‏Fָֹ[ֱאp,טףִ[קִ'>‎ז¥zן|~ARU|סׁ§½רג‹פד׳¯ˆ¿ץ}פי«7/¼z‎שsfם6?ױB¾ר*ר•|y"ֻ”iz§׃ו4±u¦@ז¹׳Oַ½Iכן1װי}l±´GֳZ=¢ק´mDV¥“^Gֶֽa0ך *1ךױY‚,T‏S…)”ס„1ׂkG2~ =עְ/jאוl $ךים­©>pהw«Sתק1 ×4&#6F£>cM־ך י¬°°ֶ k+T‏–ֲb€¬i„Ir›­7י}$ֱMkה[|3]ץ\,x¬¶‚w»~[D»טְ¾הkע´׃ן׳d·@' ו״9סYF.Z‡ײ>¿E6¯|d÷יטuq:³aװֻ^ף¿:½sט־Yשג°װ¿&;ּ·Kl‘\.²ס±װ‏[Iֿ×ׁµ&¾=C״roּeN–Eq®B˜{bא®±¥M&ְ%¼a( ָ¯Sְ6ױ|~3¦¡D´˜₪%יC£Z»F€n6’!ה^%fv וi$ֲֽ hlָi3°סֱ¯4$ו4—XדƒWLיµקU°f–?‘ז&Y‎‚׀ qGוֳ‰l¡#u«ע™’ky®†ס'V ¼{„s`¾Qˆ™RI“_ײ .e‎ $K›#¦8x >ֽל’א–„oExַ2¡תץײ₪ֲןE·n2@&\ ¦jײצֵ^~צ™Mס—ױ‹ֲ¬¸×¨׀81¹×„£o.G¦9N9ִׂ ֳ18-ƒ•‏L$ 4ֲ¿­ ֵg¯¾x׃ר§bIׁ¹טץ‎ףֱי ׃tט‎¾‏ֽ«ֿ”6>‚z—‎^ק²׳\\uNֿ¹3z÷Lkי£עעֵ¿c‰Hיצֿ_©5·3‚uG"4·הס–|שFH£leJֻD”„v3¢jC±+Eֹ®ַֽN@*p…ל¨i ‚ ‹ֱ3Y»׀װ5*)+# qֻWכfX-״>8חׂyױ‘'נח/ן*`ז>I1£t™]אַ³'O}T (Ur׀ם1vחסˆת8ג|M=װ-Xjטֵרb.˜]\Yמ ¹Hgֿ°ך³76:׳V+מ8:6¬®H’l›ׂm¸•NוA±ׂ^"ֵ ,#V½יuQסא׀">װ}9s‎V=c“´cTע@,£6נ"‎ל“vט0רױw­P—¾G %ˆ…>`מ עb2q>‏•‏½*D¿sֲ9H³n¡־Qב¶תפ“jרµD–ְ¡ g’%A¶4™ל¯;B•‎{TQ.״CAF“´¾' L[לˆ2Xּ€זף׳–$‹®¢Au"51`o¨2<•–¨m%QAַ6(}†]‚ײ:ו¦,\.&¢ֵוrN0ַצ-v¢;¶»©GbF¼Z |”1T)E,UDe–¨½:iֿ~R]k±נ™װץ¯זYפ¶°.^}}aS±ףפ׃ֳ²´´²ְ=a¬ִרײN ‘nn€‘5[ר5@¡ m0D²ֵjד›´znי®j]׀‘׀־ ”­dַּ4ץu—8!״ֵֵ~ֻ¢ ¾ƒGeמ1·8&¥+ֿlו·׃F&v.‰Df Qֳ|LYֵk<°²j¬@r=›Q±»j‎”Z-\ֲ׳"נ€ךגמ {­d׃±1•יXrְµ|₪Xs•5וsA’"b#@Uiָ-)8!/]3¼שV²÷ט±D7.©ָ 'ƒ<„aEֳֹ׀`ֹ‘²¦‏¹$ץ‎ז¥‎€´ַ0l`',ׂן9קhאH Z’ֶ`.3iֹ)o*YֹVִtSJז­\¢d¹•£tךֶ₪ג÷‏ ַYBהH#ּ¢ –רׂ6ּU>י~שUr:dv%ז¼%‰ ‎¬L,‏÷גלֶu‚9b_¡J¡;G÷ הס{AqEר'­8fjiבPֿ6d¨e•¢(€+ָhק*a`m†cJE»;lcEˆֱIpi‰ט²ץֿ£יפטU‚צƒ iש‹`ֳ³‹₪ֹl$2ממ­DעˆHִwֳַ[ֿב yהKצֳ¼ך §ˆ|קָל¥~{/Kכֽ¾sך ןo¥’¼0÷ףU£ֱה¯’±MBQװn˜e%8v ']‡KL%‘£NQ²זמ B),ח@ִq!;׃₪T"‏ךץ_¾ת‡ֿ=ץֿ/¬[±+זעIֹlִ"Yץ*y)Xֶ.>™ֻ£m°%)‏,`j»mp<ְ"2¢(‡("A‘י¯וzj582¡>–?±Y÷c#’ְjI43ct ^®¡ִ{ }L&÷ J««†)׀.סלוD(&(‚v­א ¡ƒ׳¹a ‚¯&­·˜nRUD÷‘Boun f”ּ?Fh:½@­™ה״qA°ןגUט׀3Gך’ֹ>³ּ.&=]_‏|בWQWרֶר*:b'ּ<[I²ֵ±oֹ²{ּ-×kEBt!t±1‏|ז.mk› ¶°ָB״>F9Iˆ[´Q@eqָˆLJ¦cFpגִuqְ™6ט¨3)#צ ¡Gֱ'm—”ֶע¡b”¸V¬_‡? v{½~2›h‹װרX(מJ‎‰G¯N !ֿ>3‰×״¢r®׳ ®"ַ§¾{@אֲ‰%Q †*x÷sˆP]עׂ9|\װץ¹c§«'’W‚‹DG¿>ֻוQ-qj·ִrן־2ח„v<ָ’1BE¢ִ²T ֱ®Fן;†כL0ְ¬dד־q¢½†FS³dץפ5°'?7¼©e־›lׂ°ף pP¨q|spj¹¶«¥ף’b¢™־Kנ‡O₪Ac?ׁ4 §gֽ_ײ×™)עׁ-¢7•מ±lנ¡]^¦גP…Dװ¦₪1’T²ה.נ“בג°קbˆמ־§×f§@ֿ•ץ*]dE*]`•¯>'—¶סxֹ0ּqO ׃ׁiד9:ׂ#%C…בr1גDָGuK™§BVZ±K`˜W×YCן~<2vחhגw~\9?6װf\0¢¢”ƒױev‏6ףkִזNטִ™CV‰‹yYL1ה…פi‡^.יH›c$ ֳֹCh±V”>hz.דg$_8: e ´–ִז`¬"D U‰ZYm–«1L 1†£"dU°†*ׁ˜ֶ¸ֿzLָ¼{†iג&lםMאq…v„“׃ֽ¼ױ¬wnצ¨ ַ‎”ױ3¿דvn¾ו˜עRֳ‚ל\ˆtגס?בcw£Y׀ת"¡­׳הK-14˜ֳ[2xcqִ°;dKlנ–m«$*ֵg¼|…0@=1‡ֲ?¬OָזU~ִDHˆ±ֿ¥ך…(Rףָu’ֻ'ָאm¼ NjV²¬ץzוjֿˆ¢„Y»²ָtm´3Ktןׂn־«µ ×ל R|x×ּלO2,_†ׂ ¯: ¡• vֹP­ׁUעִ†y€c …@›ױ¦EסsB=¯ֶ† טQ¶­xL"ת¸I»±‘IגמtT˜³=˜װאs״ 3&ׁ G _פףץ´i0zּ©ְ װyTצqש.\h…}תX\*.ּ£ל/׀לnֵ9ס|‘צ‹ץ¯ֹL\¥]¢¢[O?5[וqד;pj tװ׀h·ֲ‹™ס½ִPN#ױ‘צ*/י״F*p¾=א±Gנפ‎‏z^ד#UרJְֱֲֶ‏שKN I? ױ׃¢[ֹ3;‚Sט¹«ס÷ױ-“‹D1‡@:H€ױ{Dש״×:ִ8NAƒּ…s6§°¹Ve¶¶Lעpע„pֽ…¹Vכ ’^ˆd†€Vא¿jNrr נ¾ֹ†8‏י'ּ×mHדצי²יפ~Nףקֹהי;›³,±ij] r"ף“l—צ>¸8 $ -ּqcעm½ױ@½k#ָק¢‰C₪²װM*K8£ֲ/Pr¦ֶ ¾Vb8×AGƒֽm½m0ֳO#ֱא3$mה, SC…E קְ$¹»²÷”!›כק.NOO;‎~ח´{v¿לֻ¨w¯/ ¹Wo^‏¾dn¿0±tם./…X%-M¶cX2׳=ןהֻ Y₪cJˆ’³ץ÷–ƒ­ֽ9?׃dֱ#1»y´ל¶»»*m‎!oדפRKuˆ:ּוO°ׂ†K×£וָװ®WG6כדאס@8´]ו@¨ץ571¡Eײֶ•‹&’ו£AFםג¨6ּ¼¶ױשֳ.{¿,1ׁ ןןׂײC¿(ֿ…Tע|אx×*־‰DםVֿ¦jT£G¥ע[¶אײj²;װ.EPnק’¥Jֵz/™¨‏¸M¨ם<7ז־cu7רף q|םqRץ~‹W9g©cיAsb9‎:.¡¨/ױ÷.OO=·|׳ןe »ױ)ן± pD(כ#Sזֱ@…{¨K«¾zvqך6׀™ֳַךׂ×חץwפrׁ½ׁz8´ §‎N•ַ´ץײ§ֵ†C«8-wתאֲqּ|i‡V}פ¢׳q^חֲJ-&_R¡U#½ל₪¶µ׃Hוֱ׃H]Zץ¾{/ֿ4ךs÷¼ֹi‡V½פuMW׳װ¥Uן#ם;¨¬0ׂ‰O‰ה׀jבH‹מ₪Xֲ5w ™µ­,'‏~־ 3¸”ְ׳ַ^;Rֻ1@Lf‰U±idײ_xX%ײ£ה¼2w4!ת1עmנ²סןYטֵ¯בtvˆ‰ל}´¼.²גטgַ‘Do#uhVץח/1ˆ•ך‎\²»¦hmoXשD(.#†† »µf 6,¢Pׂ#1cAף~ ƒm•Y×xֲgxב˜rM!ָ_mˆ¥ˆ€מה טF0׀*>C¬6%“ֲ*/9• ₪קX;†OTk»}ת‘rֵדה_€:מ.חײsכf «L<_n›v,׃PמK]­~ײ}ױb´„זrM_};x: ּqµס>m׀ײ־¹­Kb~¿d„עc‡₪¿Qוƒ׳/vQ—פח@OHkH±ײ9r}גh(¢׃“±²*f©•ֱkZץֲ²T\ְִ(73׃_ׂlדקoq'„Xc3\5LV£ײYMׁNסqU•vC—ץ»r©ײH¥Pֲֹ{™I›·L°Caֵtם׃±5‘ˆ'+`אkסiMּ¼™_ח¹2¶³,?¦ֹ­V;רEֱ=n07Gצש“G+z׀' R1¾+™.+ח׃u‎₪׃IY¼ט&°K§קף־y»K3—¶Eת»2װˆ”²o‚‰ָןעn‏oק%צz"·ג־b«ױAתֵנ-מ ±:ךXְ¬¼‚מoחH›×_,6.Zפ `wˆכמN¨H¦]±,ר{GU_•T?‘ג¬5_gh®×M1»³פ…קֵjM¨?”®B{׳יֹ´T<‹¡„€ שPֱ+}ˆ¬ִ<{~V7g÷d}'v‘וƒ_AfoצrKy״ַCֵ“‰]ף¾"q«נ אR1ך_ָjM“)״°I¹{PרP"x„×÷:Kם¥˜lT¨ק '‎ נקֵ×v9.l¨\GUUױ³%ז®}„¥:‰ֲTמׂ–VY»•­‚9ִ·ֻ=^™ױOץ÷„K`"ִ³ ÷? ˜©ƒֳץJ^!%[p=ײ¯לmׁD±,iַG.מ«)װ a¬‹;ֻPׂך y}›CA¾דHדםׁו1ּ°ּvY”9%Xsב^•l׳ דSןפל¢{qt׃פ÷—gNד׃e5ֶ§³—F~‎לץaֶg²*j’ת «¶ִ¥ש·4w¨Pd ף?k |ט•EH]°´l~®‎ז`«ֶe™X‎eUlp}— F}P&vֿת;l׳³ף§~J«€ױl½…8!ZBס§״באװM׀E:Dו½…†(¸0% הaֲ;8„”5©ב]‰B ַ#&¡ קנָ6„ֵw†/קלc'Ckgׁh6ֵָ)H;—ׁˆiקpr@;>lc±A‡sK•Z³d®עװ4tֻl יn< ‡B–ַ\–»פVְ¾רk,™)%’ S®3sG›xִ°ם י0״I9ּ…tגµחתׁ>„יp~s±I^:@½>;ˆ¸‹£½D1G׀t˜‡~h,LO Eױ}§›‹V!8NSfֹr±y«›Er:'’Rר¼P‡XbָµG¡‰8׀נ\ׁ=Wµֳֽ‘C)­Tװs&יwvuQ·J­קהרֵµ•­‎ב¾¢ם‚ׂ¥״יק?fn‘מ–‘5 ‘שױ\ =׳O?גaO_! ~״ףְ#­{ֵ«ה–h‚ץדX‰ Kשe*¼Mf:ת˜‚E„‡₪#¯|¿?uN¨›s!=¿l_xP×8ת:א*x P¥lO+¡ !÷4$¹g«¼×›5§+v$=ׁg€Kײiֿ¾ֲ$קױ9זgשL§´UY‎®ס§&oׂ„­פw¯‏wZv—d¢־¸˜^ֶּgז{G8G׀]׀6‏„w›ם*ֶׁ´ֳקַ} ׁ½ˆָ¦°goְׂ0ƒֶ‚iױoֹ Jֻ;B ֹ‏ M~³ְכW m (“u9ˆ·U›‚±qGnJkע#ƒ2כ+¯¥u ZHױ %ת;בװC³א}²¸f—ֶ€@8]*w&«i»­ֳU=׳®{׀²‎lZַrK«‚Hmײל¹;ˆM”(¿¦pg[ֽ1¸ח§-DשO}§Vכ־¿ sפ]F¾ ©ױ}wגק#״װ׀³µZ·ן.”2ַdט Hםײ5ּ״[¡ml³nָֿO±ח+=ַ6כJ~Zל¹׀¥ץ%gׂ½וBCפ¶i*׳‘¬_oל־dֻֿװ˜‏ֱ״±&‚@eפ]·—µrײז±¯dװֻ״ ½·Xj׳—₪ְv›ׂ<.uֹץucƒפu6•ס§¡L4­oˆ˜¡װ=rױ hק\םwmUY•¾ּשwk’*WDzUL¯ױ`$¡˜Zר ˆ* וV~Gך¹ ¶ׂSUo–װQ•ל •ֳט0₪¸,ֶ¢ֻ/D¢װ׃ זװ†•jp»±»B…¥׃׳ :8T¹^ˆ–ולװdpe…ס]ֽ°¹ֿ¦°²#ֶֶ¢׃6#רMDNSm¡7@iqXLתMKnr›ֳג¨§ j–כ¢Mֱ•,Lץ]Q׃UֳD־Xְmvׁ€ o|׃״n*V°­a2®S8.¾9f4‎ך¨‰cV“ֿױן)—ƒ]Aׂ§וz₪־s’ƒ÷¯שˆr°KlKe¢«־רֳXW€ל8sַˆ’ֳף§¯“ַװ04ַ]דuמWם>וג­®J¬בנz@.%p8rˆƒדTkq;¶jp»xO וpהֳ³N7ךז;<µװdֱ%\חpץj×ְFT/4ןEֱ~ֹ»ְ¼ױG₪ד€¡~“מח)xיBd[ֳײ¦2ּt#gאְֵ8ד¼י«¸÷§ €פח:¦ƒך÷אxְ׀1zˆaFO{נRׂ¿³…!¡'’B€×lף»%¿kpNƒzמ¡q2ֵ#¢ךd¶?ר)ש**ב£מQֵב¼5ifכֻw^] »+ֵ¨A|21טeר2‚¢O˜]&טך8[7\l?ˆX]:E¯>S¶ַ/ת<0uj(µ2»M® (ױC,ֲ~ §l+I™4´£](vװ״˜ח₪_¯X@eלgDb^ָ¼c›!כ¬א1ֵnWn—*א(—iּ© f1|­ֻ׳ z¢‏#©HkױO¿j’ֶ₪דQז ’wןa‚×D­´ת5&₪‘¹ֳ%ֱיn%ֿ˜8ו«^ת—*‘ככ©"~=+ ½׃N¿w9O…³z¬ױTpd cB²-ָryz׀ '¾jL-׳˜‚&¼ ק4װ}÷%%״adֱE”+8D¼)װ¯׀מ¼וcR ת£׀¹oב¹%י'n‹kי ֱט¸£ֹ‎z"]q\HTװ·ֹה¯^בץQײ>¶·‰6 :ץעֶhםצ ˜9( c²@חאֽ™˜ֿ¼‡צ#×+‏Eֱ>׀ƒ§`ְh‰|ף;RwLֿ#\ַ„½y©3wE_w½K»F~עˆ½p־ך בz=².­ֳ cy`nAד¼ׁף\°7 ָ ¢/Cקs(¾¯F7e ץO,¯׃4¸¨ָ, rֿ¼˜׀£dwCqk )!T‏XzֶhtdS8(ײ€^F">S‡ֽ¡2`^´ֻMֹsfM׳z%5ֶ),T¦›§ן’אי_“ֽ,h‡»Qmךװֿ9>¶ ¢zטן¾eעƒywחְ‏{3Y¼° ¸k«טף–xvבƒ!ִIֵןa e½wn·@טuN+K½־i=±קכמi—¨G¨“—'ְְ€ט®¥װ9ב7B½z Q jָ£ֶקXׂ $)£װ›ˆhNן‰Tˆז}S..¦B¿c©טןֽ†אGתחC:ץ`JD]@a E¬ֶzֲ8¯¶©n÷ׂכT™ֿפ«…©Q*N°«€ָ)RּeAg*÷ ˆ±c¥]`ף{P\םק‘ֵ.חjh מQ² ²Aֶ¥פ@±³¿¼₪[i@¼‡ˆמךMֳˆֹ÷nך ׁWֱgהֳ¥mX נ6‰-8ו+> ÷Mכ†\ׁGL&Aמֲ7pS›מ6=PZ¦$†~l~ƒKWt½ו‚ױ:‹ EH'ֲ`ֵ/–Bֲ+jׂflָ!_‎קC5זLץ&ƒµ¾v7w’½!<ץױ3ֱ¡ל^]%4‡Be•lRB#  ‡nµ"HjJרIhHׁ*©*²ר,U˜gy6א”ן“w”jׂ~ּ©$„i-rֶ§\c©ׂנ}×'| &ֶ§>h*שׁ81=_VGfֵפ{Y›s™nGsdNּ׀iײUU…fh,° ”¢א®₪-׃‏hJ»‚׳װ‡¥ »'~}~wֲֲzםֽC;ƒt ֿ,‘Gף‹pפף»ַ&†©הqc»ֲAי¶¥ײײז₪כ:_װcג–­»םK~ֱ)לmP’־/zW\{v״nק־;gד³ק״nsqמ8ק1₪־z9״nS{u&אy$׃£vכצ>ױׂ]ק½O­ֱ©דOSםQ½ֶvכצ¾q.¶0ץ9ק״n]™ssל}־½?תvj·nן;g־jֶµO‰‰ם‏«1 S–˜u“¼{ת‰?ו„¬L«•יmײ€®ד$\ƒ/ִָvכ.ב ןxר#¯ְuj·®Oiא÷‎‚ׁ©׳ֶי{I v„ ֲw#‡¾$Eg¾‚·ֵhזגcךֱֽEָז*Se׃™aֹ@ ־₪8¥’נ£ִMg\ֶCַ·ˆ÷!₪n B|Jח7¹Xעxwe.ֵ”L“e²/m**i“חWQ÷ִ€" tמˆֹװc1ˆ©ּf2ל¥t/ץ°־צ@t פ+`»ט‹ְam׃ ^)/T©‡קֱ'ֶ¼ֵI־2>qMכעיV˜FN¼!kY\i;(dר¥'v8>6_;­‚\ טװ\ם§˜¾3Q;+¯ְ^R 7‘efגC¥׳ַ™ש;•Vy{‚4D כׁS’@Aר\ˆcב¾‘‡ָ7ִ¯ץ­N9ִרd}I\¡¹d´ ‹+^xֵ[Yֽ®6S4u‰,ל0םIפפ—ו.§˜‘¿₪¿?}\ןשkj?ױ„„~y@‎ Nַגe ְ€S16ו«×6uu ֻNt;Aa<¦&ֶ(©ק¯קז£?¼ר‡—‎_¾ר?>fֳ9…hהn-ה‰ sI„v‎­÷"¨»‚›¢ה)iְּ0­w"ֻd×*r־$ִ~ֱP‎ sֻmw* yֲU»†8~LJcמ־V\,‘35צ†ָ¼l:‹„₪ƒrˆ×ֳL.«ף 4נ?Yzֲ>BB4ˆ%Y׃Nצ¼°uיYָֹ6˜˜`%ױ ל5כv’מE#{ֱ¯רײ; €F.ֱ R־£$ˆµl'°₪:,:ׂ)|EזץחײBד,Yp°6’‡ת.÷3{~}ׂ­^c¡%Go“ˆy”?²?<ג8עחר“fׂ/¢blˆךהj₪l‘ 9•j`Mo™[E+"-£‘¬:#ק(9 $ה#¸bסµsWn₪(V£Eֵ|I½׀°¿ָk=‚fGlס=ֵר?װ{u ‎בב]ג.Aa_˜1—–=ח;»¦x¬ o£uiןhˆ’»¯#ס˜+כל7Bx=D÷¿דc׳ֻ?Mpמo¬-ƒ"װל{963”¦³¿3לׂ:עh ‰ף]®‚*Fsװ ףה“J†מ‎t¬£¥¯םwSסy/אײ%±הֶ{ָ¥=ׂh+³9ֽc¶n4«e„W¹ֿ"6־»~ ’muvמפ)·–־}/R| בׁ±¥ר{¹¡1׀2ש־מ׳װקy=¾זו¬S/ֱךן¼¾VBםc‎ ¶•בS«¿uuiק÷÷¢­†p^o=®כמ–=ױ>¡Cֻ9#Pש6\Zצ,‡±¦TסָvhףXQֱccuhףvֶo&HPאm;´לY69#םַךׂ²ח=לP!פב©O¡eֿ{¸1װ5R_רּMvhף>®@|תאy´´§ן…ױvD'¯¾W7n%‚ֹ נmd0yם&ת²§—a^© ײ—•–;TuָTֱt§0כתיהזיk¨פkY‘w‰\•"[p`»´ג ֵg‹w-½ˆְװ2®l4¹¥׀WTֻ€-ְ#ׁ¹ץ‡t¬eT¶ש־ ‹c…eהנ–#‡ֲ%8'׀Ehד·Ffd9)£M7‡Dzץl—ˆ™$Ly­h;"NeL׀BU[ow׃י7צ‏¡>ֻ iצi{2°א´¹!yַnvד[³|«V½‚¼ך÷I4‚J« ט°  °DׁYמשד\ ¦סt!²iXז†kי6‘•nbH4w¡, §ֶ‡ZX‚@wױ`O‘פ טײ׀W %ׁIZU>a¸¹„’@דk­²¥ִ־J4Tr)G@Lא¬Cשרֵ°½€%3¾ָ)§»…©fֶוjצֲ*™²,[ֳ»ז״™ץ;­הVּ@p™‹€בF¿ִֹZKאד;|4&’pך†׀הU‡U§n@E€:«יS5d¹›$zצ¼׃iwעUbLp³*fZ+עNֿנ5Y`ֱQ®»U´ל!C‰„[¯'`¿h¢©‰…&ך±±v#ױ ”B,‎d<³ױ®“No °‰lƒ˜;¼צ¾?ׁSO~—7z™@X}m› {½dְR¹&5¸ז«“z+TֱY …]₪~]5פzo’ֹ׃,!;ג¡1ׂs‹hw*ד“ִT@e†€ “ֳׁj²k¿h7Tט°…gMצq‹;c®ֽ;־ףyדֹ4 N– ֱU;[[™*ׁ-)baז\.אoWJֵS 2ֱ•"Ce@†»ְ£qע c8Aֻ—הA‏נ=wע'קNK}AI£’;3¡|sׂױ°nצ¯Z©”‡j sh« ג‰ ט”׃ּןb>- יׂכal4 ¬­,ץיּנFC±6zbֳ Vtn(MXע¢,¢”{.ש’bfֲMBuךֽץ6ƒ¥O¢”·ךhּ@t[+‹ ל²6o!O<Wmarִy‰-ֵW‚u׃‏ףף0K,rUֶsxyhמCױׁ8ֲ’!y"-!ֽׁ¦~s³ִr€"j‹3©ֵֵxֲט(j v¿ׁ*.ד¸…K¡ײ°>‘ֲ»ˆWOֲד'x־—¨; ףfƒֻB“„ץ6ֹ»–ּQhן¹n9װZ »·5o †T Cה  B1i^y¼ןֱ-s¨”{ֹ!!¥°8–aתך„ֶsb‹סֻ·ק²:³^<ןLֳLu3u'=€¼7׃/3 1g|´₪ף [ˆױתײ0UV©zpדxֳ'וֵy& w׳Fוקנת5LM³UjE‚J|”4=t®ב-ִ¯8‎µHAם l־ו¡Kף½ ׃‘ד®N]…‚‰תLםױuc<Mtd©,Kgs_!ֻJֹ#€ףz/­ \ƒ–•׃m;ץiח¼×…t׳5¦¹׳*'²פq`%ME|ֶC¯ֵ‡ƒ„J£4’€¸dִyֹ´®f aˆ‘UnF[¸€ָ-u¡@¾;א/=$\rµJ¸’…1+']i·הq’צ(·װ-Mֲwר)5fSװף$9h({·vש€ ׃ ׂT¥§‏ֶ+3]/`›שָ¾–÷E¢ױצ®Z¹¡ײֶצ ״E@1"y9_'ט[Nˆ¼£לן12>©5jWּלL‰ֵƒD±µjֹtG?&abWP‏€oiוkַz½‘sֻ—¿Gֲi¼¢ ׂIױ©שn‏±e]&Vq±־ƒ/ֳ–C|½P¢ֵ¢L״_¥7₪יV|½' kV-.dNנ¹2._Lm_!ײa¶ZסW¯רעױ?|‏לשר‏‏¿‏m?‏{U#ֽPְN’k Fדׂ4+¿”!D°ֱAs“ ‎כ^¢rחךCקO?ֱ»B]ֱBc#ye–ˆ…z«E!שִcרהQxBqִ ֵֹB¹„Fp‡4ן'p‘l״Y†מ© ײX+s‹J(b'D=ױ<0d$bxֽ‰>'~Aס״#´Bxt.־.LR“v'cֻהpײe״ֵ‘T{'Fכ|¡י°Pƒs˜“Ra|F(ב>5¶B־tz;lֹ¡!„׀ֿA2ZYָ¡’ךַּ¬ְ‹³e%>ֱAl¶ BlnQ3 TXצ©״\|7E $6ƒcװLnbw´\­x=ƒ^ב’©;„f 7‘?˜־1#U‹לQֲiAֲ‡¯HJֵ:>ְגP/@0ח9.ֵןִעY€[iA±©.*6ט׀c@“`״$g@׃(*€X• »׳ײ4u@FP±q׀מt Pֵcׂ´=z‘D™guֿ°א½ײH1ײלrGXם€ֱ¡ש=E÷<\ Keׁ £l”HvXJ{­tY“¶ֲִ ןקYƒ1+2װְ1—׳05n¯¨„v t†¶qSד[ֶנgְ¸נ‏l5!"·˜…)OpPֲ°ֵTִY\"1¡=ע\גlמs¢ז+•} !˜—ׁׂ’y+.¡(ַ±…%¢ֹ¡¹˜®1fW³Jˆ•·.(G†pl©הֹתT5\״I[0 ·uֽקp ©ˆ~C- ֶc ָ¨2{L׳MOװm×ב#-µ_BAסד¦װ-€ךX־ב׀כ|ֹt —ש‚¦ֽ¹ƒ=p£5K„ֲֽשˆצ†ָhP‎W:ג‚Oש§w₪~‚¶ּ˜¢y8€@y¶µmMעN9:r"¼WVֲֶrה“’ע$ה›dמז‘Bˆ‹ ¨KO´H%»h׀÷ײ@1פ¦וMֱֽˆ^?Fױ'ֵ¥ 9«€¿מ־ ֳE¸¾ i×9¯,ע¼»#״?»€k¨ֽH{¿ֱps i-סyֲx„')½;>J`סCתר[)™\Ca…÷L׃O’r?&maOםצי‡§“w{…;ב -”D+ִר†נ 1µׁ~¨׃CּביֿיE(ֲ»‎»ײT|v8SG7י-5יױ‡\ן=F±ז`Vt÷÷ז‘@ֿ Oׂ¹  ֶ;¿w׀i¹<:ץWG—ֳH«b*/־¡NT^v$Iףk­^m•:©צ· ֲס¿¼»˜{ׂ ±+ֶ%Bg07מQ½}CO־i ֿ·pS9·נ½B;ק0½3dRצ;zֳ·xybֶ>¥)ךֹPצmןךRדDNA\k־׀+ֻ´'׀ֽצ·‰T¡R”ָ=K¸ \#£| ²יB%ש װD«¬!\!Qֿ­א‡ל®N)p[_‡;X‎²J‰%ספ Y¡”uwלK¿Wq₪b־f©װ§fֵ©8U±|NW³#ֻֽg¢ר½n†‹|¡z ֽ׀==הfpגjץוײVpj3µ‚[£/ֲWןיח‘ֲ¹ֽ*צ$(:X%½‘ס‚§27]ױy״¯ם×הyoל¸ƒ«"•JDצ+ֹת¾H×0×Iב‰ֲY#O+/zA5„ס‡בV›÷״‎qNנחײN)k„{«­Zd)E3=e¨³ָg<”³F~®ƒ`ְ…ײ¾lעב ״בJ±²רE !Z,־־¸½{k ¼י¡ w¯(W|מל,¾o ‹‘ִv‹^VµיMeאָˆײ4qי1†²jצ¸mֵ}ָ‹)3«pZb¸"§O¯¯K«#÷›zgֿ_•hַ½תגMד~4 ‏8?tƒ־ z:טv÷ƒ‏ ק,¿מ>׃נׁ«7/_"m»ףֲפעמ_P _‘־Tס»˜962 EL:W׃3CLןµ§ֵֹC¨ ³%X·hI†_nZ[ֹסֿ_¿y©צױן|י׀"‹o>תפ³_|‘~‏תץס·‏«>}ץזֵ›W¯?.“ֳֽµG…×xSJ¾=;₪› GuQ!£ כ¶%Z¹´ֶµפ9iL›.²"-¨׳…«ְP2|־uױrת‹ץHfFl0³„ׂ²Iב¶Q₪#c¦ˆגגfעG´ר3¬s#ֶ˜<־oֲHם@ֿ<ג yg"Xאo¦/¶8׃+ְלUGםkw r%9\h·ֵHi*£Af:`u‏\¬H´dEMvֲBT¹+[I÷hQgעד#ץ״ַ{H›E6ֵ‹ח©¥Iׂ¸l€mTF-כXז[uTsN4ME–Ojננw־IVNףצ ל8ֶ¼}›־·ֵף¶[Pה †Cֹ¹¥e‚ןmUײ‡|לע¾nײ¿$²†½­׀cׂ«…¾p;Oם _Rמכd]"r„ר>_ָ0]V ¹Dִׁ-וL«¸ ?₪ֻPz÷½-ֳָdt¡¨…,§bס.¨X׃±בז״B×F›˜iֿן? …’ָr‏ֲg O¥zc³Ll«ר¬>¨h‎Wqu$Aײh‏שKח!חBZB‹\C…‹b±•זֳ½ֱ›£ה8‹״@׀˜ֱֿ׃}†¾…ַ\¯ױ€E¾צ@A׳ֳ™‹$`N '׀ִֹגUW˜wr€ב ס"־®³dן½/^«mקM <$C₪‚ױמ+mY«“±÷N,׃oׁם¹“פk&ֱװ~c©ױ#=ֳ)ד0jdנ~Nֶמ‏מ{·Cל‚s?סֱׁI ^ֳvJ± ¹U$ק׳`q6ח״ָ)¼…|f=זˆ„÷{¡ױ^k\ר•²Haש€†ˆ££«WY`tױ¨G&יyˆ1 ‘ֻs¨0J²ֵ’„*m³0mx u©ְָ‰GjgPiשקט“5׀6‘:c­=)‡ײא¿¸X P¼.­Uע`ר…ןעs.°uˆ״®A¹zפַˆך׀2ֶ‎זְ-׃עrשƒ¬ ,N©·l׳ µD’ֽ!{ןF¿… ¹{ֱ÷»מ@tyˆוQם‹ת4Uצ)3תM*]Xק RCֹׁh¡)CNu־wA§־.|‚jQ*2´¸‡ןִ'ךװLװ·k־ט.₪gֿ{ם3ךZ1|mwMEֶ־"B¬]ֹ­¸I ?N™ןB@3oֻ¬ez/cN–/L=׀w˜[ְ´^U/l# ׂK¡מ§zץ€¦¡÷˜¬ײ9€§£¥d­©;0D„X3ˆ"|¦—u_dz„1µ׃™Nײ_װdµ‎.ּ½‎zׂ¶wA₪ƒ ©p״¾ֶָ.2HiתA†£ וua\[י׀[>d•ֶSa¾¢, CXq&א שS%§Q}iפ¿‏>ֲ/^}±³5¡4א´׀₪`i¹C6y‘IM;ְ װגj¥Z Sשn±P Wn€¼×WB@ה¨ט÷/`ן@¾–A¦‘רױ­[>ֳAT׃=H‰ֵs¯W=)Gֶ¥~HױַT×חך> zֱ\+lR§ת,4q¼|]}!(]²iּ;·עµ&“oQujsiF¥¬… ¯»–ֵײ¢ַט¯¸3 Jג’·Dֿcdֵ¦Yk»q)‡ 7€רn†Tױ&QyZמ[9.©#™±פu_–µZ-ו־¸°Guןקֱ&`מ’c¸Fצ˜ץ…r!22I/¾x/ ק\5Xq—i»–×קֵOO?QFג°/ s{ּׁ=}c-@Eee}ƒ9ָ·:‡eP@H״9װZ&¥&מrhncUךbz‏'kLOס׀#mנ£‚q[eַ³1@2 ¯9…ה®װ_[O־‡Xl|ˆהfנWe9¯kָ»‡®ֿ$*׳/ˆKMז5 ¹בB[Y צMn¯B־’N%Or®¨לס¶-ףO-ת Z,־x״B!R@ˆ*ˆP”™י&‚ 0€¥a¹7R%¢d.c ÷Dָ³ְײ~ °­ץָ4‰ֲָq‚^%ב׃י¿ ּ˜V—„P§]nי–F׀TG~Sת×־ֵאo»^ןt׀½ט]¦ֻC1¨!,נ¨׀'»,†”›Jv@מַז+H¢lVwj0pdֹRw†jמ.­¬ף¦{כ¬ב5[¥1÷½כ‏oe2KBס° ַV÷)Sח5b?ֲ¼´}iy(”o£ƒv½o9ƒזJ¿׃»< ‎·‹\ ¥ו½ֹ^·;ם¦"ל·׃&2bAH‎ )µ’r[’זֿ¡ֱ —¬…&ױ*g‹ֿ°זָב:±¦1Z פפם0€¹Bq—םqז¸¨ ¨9!7T₪רא?ZַQ•׃3»)s(¸k₪ע’Y1ƒY‹ױ:ץn~ס»}צִׂ›¢¸°¬M×›_~¦¿שכז״-2י½ֶ^%­µ’­ָ׳¾&e¶.]”nD״‡´י#ֹ<#¿iJ%`)†"טשֿ¹¸½“¦I9”7ֹM+·Y׀ֵ„°װ×1#חׂבֱ^‚ֲװ°ִ¹V%*:₪i²#A["װ‹¶R²ףE  ²אUlֻS"ת?סhְvkצ±1„+ֿ פ5{ן־*צנƒֳתO-׳;־ּ¯p;ר9״j¾;׳‏ֶW±ױ÷ֶ™‎˜קM<+‘ֹY_gpֱב[-ֳlMu»kנְ· ¨^’ץ\»א—ָּ®ףך׳•wתבױXW¥-iKעN’7RT4/†aּ×$»eLvָV¸ֻ¬ֲ¡ h>N8_ֻ: }t oe”ִָxiת¡^¨0¢^„׀®׃%£wuֲx ›‚/ּO'›&Nטhֲ+´Rk ¬}u!q¦g›84{"ֽ%‡P¦F״€‏ל‹¦ב¸Bכ #0וfָ@"½-XִHIמktײlµV—*h£¨l%§bCiTטר´/°–U{]2א )P°‘^%PLע–ְ–Fתm:ֹ{ \³%ת”1®ƒwPZt‰³³רQ:V‹קvֱDָעiUwai¯ֲ˜0&m₪ֻJV1]#;ֽYk¸`m'ײ¿0G5חn¿;8ןuֿ>~®z״כֻt³‡|®2gk.£„%ָסק7˜עֹn’ hbג³`“‹װXח’’¿י NEו*t‏4׃ר®9 7»®q8T$—ִ£,²'‎}4tבטֲ¶ױ0[t¦ §o– C“I™4¦zנךs\8™…¼לiW\™7ג¦¹ח‘‘Vs~i‹ֽ ֿ–L L"Vֱ¸^²ּL_נ‘d­װˆu•ש₪TנRˆaתrע¢|1¼8fֿ_FU‹$ײ*¡ַ!‡‡יה! f!Sj]:©×{2ש„×ֶַ“yֽry±׃CE /ְNLֱ; o‚„+דKז¦¥ן¬—™¶ײ; *¡EW/ׁ<€X{ֵn‰¯huמqW !ס "*אַ&4¾,ׂ2]‹µטy¦x´ Lך¶ cף¦x[„ְֵ €J”¢ֵZׂ¸Zֲd₪¬״ס‰וּµCזפ!jfנH״·״P^ דעL~·ƒkר\0טzַµ°ˆ[ ¢א–w ‎s£®ֽi"כ€ֵEPףTru…¼]09!×Cxס’™ִ6Lְw"+|¼c¯jh¢׀נ®יֲ4׳ל)ת}¯שN“‘K״€keuםU!cfH»גOְ‰m|¨»(ֶ(“46פ ֿYfֿע‹ֲcBsץצi2±®a™ס™¿ הֿb8±c“׃gZ¾rA:ֻFת^ע:£ץ€Oֵֻb¨1װ6‰ֲ§,±וbST‰Bv!†kpjyְVGTcסתhu…Ye‘3xֹ¼…Aˆאn¨ַפ‡wשw´’l*_O»ֿׂ־W$ֻ. ₪¾ְ•ִ‚¾Kc¯5ִּVט=I+¼ׁשrַ+א\tײK׃‚1Pm ±ׁ–םK q ‹eAB°ײ9W”FoO"9ר=?+i5 י“ ag}’²@×6 T B‏ם³ּi“t†²ֳFXה””\,כ¡?-^P»>׃LDק םת@I ¸®°¥“¶µ‰qך­Cָ‏…L+EYJ3fW˜ְ°ֽ£B°­<ףz´7Aע׃lה­₪ַש¸k5פ׀¦Yֲפט·ToFנp,t`³־˜-ָ4`–“ƒ־s(o67…w‡v…Aׂ[<.Sאֶֻ{ץקע^ax«"T(X;R־q– /¬‰®Qb@קDmְUKp­_tֻvש q›׃nHµskc׳ƒOע6­0ו0µץ&´¥QR£\X2צ—זK ‡@ש:¹ָ4—uo׀?GYq§’j_µj5^ןB@¾z‎'7 d^*cM‡ּכ=\?יוךּK^ˆH'¬C¼c‹–µ r1נ\-׃‘4^i ױhD‡W‘ה-=¹e¬ת¥ײ>y!dR<(–\’Wׁ־‚׳ ½ƒ¢Xֳ&!j ¿!ׁ†(”9N$ µ¢xe\QL Ds)ZUיuaFױק„¥™s¡P¶† `”p%÷Q» ‚pֱ¬a½׳#qg‎^¯‘¸N¯ §˜(׀°””³bַ‹ֽ§3—שו§¯¾H¯GE‚´ַ*‰וoyPּcJ•—s"}ז«נE Nִֵz7¯ױ7z«„TF2װ˜3/ט'ֲ/tם‡ק%#D¬"–ךפֹ>0 v-ׂ3wSo·דDiססm כ=¥H|אם׀ף²¬זLֲֳץXsֻJ†4‚˜E¾כךק¼®hJ bדi…ַ„o `{ַµעשִHZד³zע Xkק‎©|קֵbע¸xy׀±†‎p{UO(׀»>ע$=ס†ֱץs<1׀½¦¨‏ׁ›}װC•×g] קֿ; ¦8@ m+¦£[ץד-z@#א†¼·t×X3¢’ׂ₪dH%*גn ֽֿV¸S Iס <7;4Xלֻ} @ֿ7ִֻ¢€²ƒVהkeֳCPsvq60T†ֽ)H#ֵp¾=Tמ@-,תj§*,ֿE²u¦qִYFְ>װ'˜jְgֿ;‎v~qׂv^oG M_F׃>ץƒ>ם¢‡כ `'גvhQD­9 עGPׂ0¯±נכN·· ֽ:ט›Qq´שֵ²O„ ף6'ר¯_›±₪‰©ƒm+¶‰a $$!0ּc·eVkיטCNגֳ)eRכP„0KƒWbֱs<Zל`־¶סw¯^¾"¯ˆcX#×ץפ£]m,ֳ¨<\_ֵ:ײיk¶@ם:פׁW¶׳p3ֶµ,‡ JCuֱ::¶טc‚¸&Rx1€1{ד)¡T–gF־^ֳ?(R|E˜—=_ףֵ`ד’ױ…נצk H>—צa%ףBƒ‡הפױֶ¬l$¯™t.c&O=׀`1-y <פ׃5n_ײx8כ‰¼V‰»&[p ֳh5ָ%ב¨[™£D°nצ•{י@©ר*„ — עMֱ•ױ-Uװ.MןA‘%בkµךQvן"W‘"†ז}Gה­•ףֶ!`u¥¿P‎+-t”“^Sc¹־E_V°JX­“(cנכצ}ת‰••3ןCF‏{„L™oCֿƒ³^םc­#¾fH ‚eמ\ז.sµ5ֲ±4d¡ֿ×טי‹]qSד‡/צ‹…‚if׃&­ ־>^2ָר‰|U&„% ָ?`e!xְ‘0„]¥>2P  ½ר=}«µ%ס ?³ײ¾]"#8W „‡¥FR^X¨ך‚Y6i1RTֿ¢IךS:'Qkkסa¥R;S׀^ש…RhשG#׀0‎מז˜×€~¿—Q sG ן5Zג 6 »O‚י}ƒb—€¦¥Lֳי²ֲ`ל¢x¿†?₪²Y²¥%ְ"…ֻ‰4B,ו^xׂץOv¼E'³}…ֿ¼D4 c²ֽgל T}HC¢F^2ױ !ׁ\ }hּ‚x-L‡hב­ m\ֲ”ֽ(v˜d‚ה^3W¶ײ¶ת”7“vT_ֱi׃ן?ƒ%‏טקƒוא²wפחיסֹn¿מH–S%0(“ y–k\Pןר=`»p"­^wזd1פֶ›ב"×nכ#z«“gֱכX«°> ײ#C»Gך¬4.„םW]<ז8±wי8=“s־,bhyז;¦<\פFך?¾$‘C›Gyqמ¸גיk­z¾GO»«)הם5%¾ש×חׂz_הa׫V¯Ig·ְּׁ•ׂb-זN“uv¹BלB'To–C»0M7ֶואlקUcצ­·«˜•רַ¹÷´[•K¾x-Z›WZק€[E׳p9mׂ£os¬ o.₪ק¸]^¾ַםy»rjl—¢~^ְm1Nˆל£Tjֿ₪װvYjטLz<²xלQ‎…7Mָי¬]E0†ךoo÷('~כ₪ׁ`a¨‏i]4NֿƒuQ«;ˆ7|<×29;÷u†«£ֶ”Nּ£ַםמdCzCYװ₪ע¸‏N. +ל°sRכֱ9™yמsn\B>ז¦Dְ0J§A˜ׁc¯₪­¦{׳÷h׳ ¬וY(^b%yכ{Z—»»qלo…מj¬ץט²9÷ף״=$0a₪_l@ Z ױ8ג9;u4+o=מ[—V=»}GGCֲ¥Uֿכי:®§@ָt’·5uhףv\]"~ֽC—v=פ¼חx»@’¿‘:´כyNֿ)•עµ{ץ¡ח®דװZץ<־^ַqc0½װ¡]ֿ;קעּQ«_@&—·½כ׀®חpQַױץם]qi¹[ֹ¹RP•|=׀wµלfקµ¨]A4pM!ֱu£%½ײ„5÷ן™©G»Z­‹Ow^Uצ¼¦uמ,•bקש–Jv₪A×!er‘‏Nc+V­.¦UוXח”I¿ֲ$>q4ןך’צ8o™5$˜{ר#o@צ»mjצ]״<צ°qW˜°¶ˆg…©nןױZּנ¬״ײץ־ֶVמנl~װם½³‰¸€°g#±n ›³!¿רgS¾מ¾wv¸רל;µZ·ן־n1{Z­»k—3¯{­{g'³¸e½צ[®»s*€ַּs@ מ;nז^u4j·מל;‡׳ז ׃z°­‚ע«–ז‡Uײ=T-×xם¿O®W'™ןףze…urת´N₪»»gE^w־±«¶¼'~˜×³¼†^ק=·כֽ¢e\QA₪Xו׋[J²rW‡Uֵ׃¶%הײִ‘·ִoן±]E×…Yםְִ&ר*¢ך'GJ~‎„ַז?yנe:6ֹoהטh'×ק>~T!wEtׁ¬Lu6†ֲU‏A™מז׳ƒַ¾{2¾M ע‎ְ _gֳַIv?(·ƒ»׃gמ·ק^>ממ6AG4שְnמNb—ְמnזG¯9S~ּמ.‏9מ–‹=¼2קס^©‚״שִ>{ m¹‡=Z/aEק€מֲkן=בG*׃׳{ן'˜מeנ§וx18ּ}ZU״j¾;׃׳,f}a»u¥MRH½ֹl¹Yt¼c"5/K=IU‘Jֳ3Fmk²*‹…7"!l¹®v׳8₪‰w5"o©-קEp\¬ח‚Rײׁg7ַ־¾F‹-׳•q]׳צˆ>Go|Lװr‏w\‎ ‎•lטרנ|÷z¾Pטְ[ןO{מ˜ֱ¥»` W¾תO-׳ם…«ַz$+¡ײכבױƒwכ‘’Z­ק3׳˜˜‎׀WZץ₪־rI¼ה¹־־`אrQ2װ—rזׂjnVo₪‎—$י¦‎±ֱ¸´ £-¨c‘ «Jֲֳ‎הlEu2QMִA2¶*ֶױ_׀iָK+0@ @Qש&ְRח!ײ£¶®סדaCן יBr Qƒ:”N<₪÷TJ½ֿ#א V‚Drּ\ףָ•ײd…ֶVN€נ'-ת‰’] ¥·±עֶ=Vu[גW k\בVר÷`°¢ֱ?ˆ»Rpִ־i|Zס¾Z%[גךDץ¾ֵס8ע\ֽ×$XTֽ3]§°o;)ב‡ְ0,'Iפ אDpMME;[ס(b4qש»o…] ששtֿ@31±oֵ\Dׂ-l·XP}F\דLךO°*_¬ב•­ןצƒֻװ}‏־ynz״ sקw[¸ oD™Tb]¬»ֱ,ˆXcם6,ֶח²‎›פ}קb‘¯QC@‎Cֵ9¥Vװ^xׁ"‎ױְ’µ©6ף·qgג£54LE¾זH–B`fֱ&ו/­vל„ ׁv°#װ )Xגִd†8כג_Yװ¥<¢jף₪4fX©׳דNVb=€XG˜|ױ67ג“‚µV—ְbi„"!ֶ•ֵ¢ץQS-’ZQ—י A‘*ײֿ¢²v‡§W¨¯'יֶ,ֿBxwj3הPuM”.X5שJV:ךװ¯;חח»¥„U÷וf1˜¨0ג”°‘¢ֻnֱg­/Nע8כ,”uטְ׃Egg3™GzֿB»–xs€©r+–”8hP#±)F ײ¢5—¾¼ְjֹֻ׃O¸ֲT¼ֻmh1*¨¾ƒ:&!"^sֿד~ְjב_+×א¹#Ew־¾:ש4י5tׂ§״sצ%$\k&«“ְתעָBץi₪®_נ §–· ף_7lץ…״ֵ°¶¾ֲ¨K#'³”רt·ֱִֶ¾יnֿw7;3®2I5HT¹ֱע1÷‡ה><‹ָrֳ(gˆה9¾צ÷|כ[¢»‹µהלƒE~-8§h `87 ¸ מPO2r€ױ÷¡ DY56Bֿgo’D—טֲ״;rך¢ְֱ£ט©אזףr’'?ט"@>""*ן–¬WKֹ^ם‚|vױu`תּ×&ֿ0ׂשײf4ּn—ּ2Vג52ן¦ADq:. ֲ`|,= LֹM›;÷®¼@Oָqת&PTkNo„oׁqW¯װכ§[ֳ?״quֲ~){ױXֹ6qֱֵ„Yפ×:£ֿp—§ֽתAbְ9²^gt°hֱSk˜™6ׁzֹ&.ע<ׁ„ם‏×¢ָ»ִטיקֻmJְ-k/t?m<©†÷ ‏«כ:/‏«»d¼4MהסI1€J=פbֿ'fֹJf6÷‹µjS{®ˆײ< ´#tQ‰5 ר„ֿײ}tu†מtaeׁ¹1ױƒ&פ‎L­vqL«{{÷5cֱMc¢}¼Iע]ר´8װ Nװײ4¢Uיל¿‎•גh#נ‎8Zs jוQQ«ײ׃!₪|ֵ)kbRVNm¼hvxקmװ“»gk§„‰B_o7ַnי3¿שע @‚פ¬5€ִ€׃¦R>ָ›¡›נQ)+דn„¬›t“קֽ®ם”¾ן`@׀+עa2N„i״ש‡ָ›ֵ#²דָ…בm»G(x%קG²©t,d8j7ˆµQoסNֹ¼…¹|At~f®E¯4ED²]soׇ¶׃ D»וֳ־—ב,ט‡ֵּG<גױ e?7(¢7k׀פ$`ֳ™Gֱ(µ׀[ QEֽי|ƒקe5ט0r2™kֽ0~¢ַֽ a°.„לu סװ­9י?DGz׀»…ש M,·בֳ״b-$!Dc¨´@E€M²ךֳ‚־ךO›Xרׁ¬kװy°׃zd7ץdׁa @³½‹1k„yn ע{אװxk·ו7g ֱjBmּp‚‡‡־’1\ה´Fgֵָׂ!»ל¹:h׃u˜Srמ+:‎א½#°nֹ]ִq׀˜^c”gw®1¯N)הצtwH'nֲ;D8 אטriד׳ֻG~Co²‰-חX½¦אְIJָLG³®qax®[\"זז;­{1¼ci’“ …®•ֹ«ױ‚ל5´Z{»{{ֽƒ½­½0df·ז°”qװh©B®ּֽO©wyE\ם;»<תצת¾|נsץ* רvSס¹}»ִֹf¯x˜%ֱׁ6L”fֵµuַk®] gw«=צˆ~h=ֲֶ±ƒI‡•©ַ׃¾ת˜#,jף5@§»t(:¢ך£נ_א¨ …p.›עָc¼(#נQסָ׳0ג™צˆ#8גלpץ1ַ$טk9ֲKcFHװ1‰ת£במq£FL½‏ֽ׃ ץ‘G0%¹[הֳֶ״₪<צ~-ykc—ז¨cz =ךN45J´u1}P_ם<י½t°ֹ׃u­<‚¹%[w-';¦ך£א”{¼£=זˆצױֱַ תרxy0שFu}Pw+{ מ]ױסF´ דe0FkHHisע;ˆטִ¨ ֱ›סL˜]£ֻד»Yיֱ¸c½ּ–FS3¢ך£`ֹ^¨i?¢/ה¼3נִS¹ֶ²qו‏ן>ֵ°ה¿ֳ CוOַeY ¬ת„ַH‰װGD¼W¸:[ׂvH‡,~‎¡ש‚סאו—X£¹kv@‏˜a²=&SעV£‏†9ָ'ִֶˆׁ¢(eחƒֳֿׁ>¬{D#‹€¸¾‚ד#שא¯µtˆ;£sz¨§aֳ¥ְ!)•ץ2¯Ts¹ְkL°ױ« ~<<_ׂװפF²iNש^U_M3ֻP־ַX{ז™ן‚¼XַH6ּ:¾‰@|•G²azפ¯ץHSW”X״ƒ²+O‏‚ֶ¡*«6ּ*oײ”Wccע\ץ«'C[עR#9¾kusֵ1D´§ֵ-¨ˆ³²״C@ f¨TU₪~R6®םׁZ% v»°#J6׳‡װgע·µ‰?ײg ׀_ֹ<פץ’‘®y3¸Pc[־kµ1חN›\"Pנ$ֿב‰q·5¶ֹ`ז]ז»{”אhש6÷׀oD0¢ 8¾­ֱlf־ְ (§הn¢¡טץ$L? ¬¾'pֲ‎מ%¨™ּ>|ֹdzWָ.yֽTyב&‏wwףr…SycU![w‹C|tHדךW.•ע‡EVLײ@ֲפ^Ef§,חױּקחq†f-כ~&Y©®qtנ^ו’e–$~ױ5ג6%…*p]ƒטׂח«t"ְֳזJ?qJ´2ּdצׂ%dבbט!,ץ$–#ּׁ5¯hעwֿ:ַO?™ֳח׳ֵ…f+ֱ£F£¾³OCצ^‎ָ¥j•E¯{׀;ױ7U2†ְ ֱSKk!r 1!ֵ״r?} ¨¸F&Zה¸gײ־,]gֱתL;’)‰‹C׃\8 }ֶֽֿ‹Mf¬,ֽ= ‚ֻU/qIתמ#_ֵ,-¹]0»²!¬›+L‹p9׀&ִב‘"ƒLכ·קa zq–( ¯‚m*I– 4z@₪³)-ײU[I n7ה;¹©qjף´›'˜ֳ״9ײ…‏°~B‏¼¦¿ .¼½^8jִfכF¡¬µˆ©wבNVי¾oQ]ƒbc*•¨±%ןb'p‰XתM¹‚‡i‏9²ו_·7Uˆo¢•sר×אQ*׀ט6¨ת—y|‹O« ¾ל`u²Iָa…ג¹זH-כqBש׀˜ֿ‏`¦?®W|_ַ”;–d>ֱ¡]„y­F“B²D„·I(Y“תfן«ֲ‡¥W»TcJ¾א״RV‘¢+„´‏Qtָפc«vײ^Y¦‰LkP¾ך+‏—ףQha!•{vך—˜Lp?±¥ס%¨(נ˜סˆ­oשi=oױ’a÷»­ITחפWmN?l†­l˜˜“<¬׀?סעק?=‏לKֳzצטר}נטֻ‰•,\Uֲp׀N¦ׂSֽfכƒַ׃’Bשףc°l“:+*&+`כֳJ$Q¼)"‘W:ֹX.³אתף²¡;a¦”V+TיFh1ˆ¡(C÷; N%Ezה¶}ע4$אrJ;yu©Zי„Q‘c _1[Hx¥=+÷ׁfםJ@פˆכYפD8f;…מ0P׳כhכפבֲכY~**©״|&„;ױאבµ•2³÷F¾rֻ+צז+\¨זUiָ{Q–ƒ)S‚ֵ8¹1²rצpצ Z!.®Svױ+{c_׳{ב ִֽ”™[†°9pשִ״mxד¡§²מu_÷‏ֲױPֱSצכת²pP¸ׁ"8®jם+@Cf‡גלpס 3ּׂmנ7®}3!l´)Qַ`ץֵ* שָ 8¥Rh±'…·F—יlֽ·`F`k־—9ץV‡‹aֽ6PUְµ‰®–מ₪7ֹ־ךmjֻמj»2±M¦ ¹=חUפc"yבֽ$¬כװ<=Bפ¬xmֳba¾»א+¢[zטקמƒ÷ױ׳>ֿ4K7ֱnL45¼ h3iT•dֵbµ+bIy/÷ַDע€¼=קױu[¸D½aקQ?8רׁ”ן|.hHרבבO¨נd'cֽ³ײםm+€%8°ֿyb×h‚ַbִ5©₪–רZ”£4Bמֶׂ4Dץ*WH'םוsDQ¥:× l©₪טhK%ּO×ae°>†®‘ֲ׳~BeVIק0נ+טl£׳Eז«®T€r{Wִ/°ׂ¾ ֳֽ\ױ$::•)*„LSf&‎0 ±¶~צָ^‎ׁס_ֵ«O—ְו~ףצי רb ¾zֶ5ר±{מ’(?…)(oֿ†\ֿ׃. תgוM®±T9×s/˜„÷ױ₪/בzק¼q(כ…א’\9Te'A ֲJ‹_`״3×ׁuֵ¥n¦ל:ץ´ כ ֳֿ®°ְֽכףׁ™{ˆ·ֱױBדד‹@jֳ’ֹ-x־>ץ±|£w': ם8םתועי»7‚=ׂ©"»ֳz„]O×Nkח)ְw¶d€€¬wU*do\‚¨ֹ†€-7¦ּ^¢ֹ£bl"–¥ ף«^£ P¿3¢_¼ך'צׂXלZ@•) €›ZZהֵ¨w²ױ9"‚w´.שcא"ִגqsמ®BoֽBd ¢~םk*ש}›bhך.`ס\נ¶‚¦×שֱ#װ^;ˆ×a°‡ ֹc©ײQ¿ױ‹ק<ֹlS‏«—O?;תניׁ_=‎ק4‰c"Iס)סSעס7פשֲ~םƒ+=לי"‏¡ƒ0|zj„ר‚'  DI Nי4[|–טְ¯0Mײ—eW¾נפ׃£'_|zה+¥T'¥ץ#rז$‡°:o0B™>¶uM.@ֽ„ׁדםג˜ר +| ¾טּmT7™״ׁqג~´4ל!ִל5זױֻK{~±״ּ:˜™ױ™~e®ƒ·?הכיLֽiײh״ֻױ_׃´½¬‰‘vk‡yN([4ָמְ=ְko« “X"‚ֲ\÷י¢WTˆZ /&₪ ¥¿£ »חcםkA$ֿ^O₪[װ‚ֱ/צ348h%ך!לרװ±d6Tfײט„ֶ8+,5‘Op#V@ש²ˆ־ף"ץ0‹ׁ±˜®q3P«×׳¯ׁM׃₪¢§ׁ½4z~%g[A,ׂ ֽA yyH"/עChוKנn7Z;נ¿¿—[8¯״ I‚חM—ֹ‡zַS1?3"‚+־Q׳ֿF€q»ֿ•!>ְ©#=5sLכ³BO9@T‘ֳ„sN׀½pƒֲ«¯3y”ט“ ›;±Od4Tא “7"KZ 2—l€s]Iס-T£nא§£<”נ\ק׀n!³×I…¹ˆֻ₪ֱסױ8ceׁ´„ך›ˆ›ְcקNMcowאOקw»ֽם}£V|¿™_ף»״!ד£c-H±­—ִz d ׃v=[½ײצ’§–׀כZ®(rֲׁװ.ךׁל£o-ד3‘ֱוh†lֱצֻ †ד*Lˆ³×aֱ]8=c³by¼}mqi.=4©P@כֽkL‏טq 9W»˜­כּ¸aֶl1V6ח-ˆ8₪H4+£ו¦A%׀´q›ס״=C½זזˆ¯° ֳ-ֽױ˜F~‡2 qזs¥Dw|ײgfֻךזzכ‰™gִ÷61y3גS³y׃ƒ*0Q½W;¹ׂ \lƒl83ֵ.ָ83†mL³»·_"9מ¥]ס¥¯„M2a‚ֽµטְ³©ב®ס¼·%yd!חאָ°מ´ף ֳ}“דb"—:ֽש®¦ ףˆGֻ>ֱ¾$¿ֵ‎_העr4sz R¼,gױ*µBv‰?—“l¸¡´W–y«Y¢„/2›!4…_׀ען־ר׃z%s¿`˜צ ¥²9¥#”תװiָ)AucRגו<%ֹםָHץ>pּ6ס״rDƒw F ®z8¥„םֵבּtצקcs?/sֶE,ש €ץB“`"…ו;לU£KKאתx₪ֽ9*,c2\¾¥Lנזm°± H61¢¾a‹זQעb h‡Yֻ#`גנ¬־,A$n×—״dUבzt‎N»_ף)~³ש” 4G°ר®…mzb€¼­\ֿB8x÷7$¼‚)ׂ_PShD¢2†¹´־IlֶֽDַK]— iM¯ײ%‰m־÷^אEi{u]ֶ«+׃”‹¼_J¼H²ן‎R#טִ›P:˜z¯˜סUך@™›3Wףv:₪|<}תִ8ַZ§ֳװיxתm¶©ײֲצח77K_n©Qfׂס=־׃uמ™V¡p¡ִ׃=aA´.¢חxׂםa“Smw±™¶NLב׃&Hi װ&¯•\“˜zµ|[U¨}וUֱֲֳו2ֳ7)ֽuDh®}p—›ײ,cֻeQ»›}'=א‰ֹֻ¢Y­״r‏GT\ק¯¥Q×…³-W wֱ0‚b¨;˜צ[÷×a3¶L€1±–Vj£ֶ0זl7yל¹=Kkz’.״םיd.ֿ›‘INaY"MkC²†£ֵK²‹¹–ֵO¶²™1/סשvCk€יׂ6@ֽׂ‰ף, ws’ֽײ~}j+װr/ »Nב–&ג 1ָµכH,6/¦×e-Sֻ׃V חא’ן›¦ת·¢m¶5 :ײ²Qתףׁ/Z‎ַ–ףץfפHQ״°ְֶx₪!€Hא€טU-{)fg¬ֻ5׃6÷ז‘! מד°ֶרִַ¦O'x•÷כS4¼)¶ךץL8_ֲםװו)ֵ²x³?gב®s¾ֵַL3\^ר>fז¥ *נ£ף~,µזעסֿ4§ַ/¿¨¼xעל?¯FicR%א<{_א–ג„cD¨±¢¹†A¯ףb ־^l×I [ֳ­q ka=¶|“‰ױ 'ָ„b.ב׳(&„·¶¹5=\qn4>נ*=רתj¾—@ֶ…%ל2~A(kׁךc ˜<‚7ײƒL=÷'בdHײ7ְ‹ַL°׃^O?ֱgַ/²ִZd¬7½+,B%hמlSJLָ¿€#«¬Dmָ›´ן¬@p²-‎N=·ש–˜KhdS£%ְRײCלױIׁp§ׁ„r_lOJ‘ Hםk3¬±+ֿT# ¬ֳ¦–¥עsOֹai«8­tFְ cm2ְׁO‡E9ְ7Fֹ‏‎¯¿‎›oת‏gתכ³_2ָנ›X%ֵ8‰d4-ֵ6¡o¨5‘…־_½ֲ’2ֶױ?ֽ&¢׳­QתmV<#˜ֶk״“ּr™C²kmL“>3±ז¾ף Eo†סשׁ׃§¶–AE־ֶ™ּף#םeֱט“Lרןp}¬V  ֳַ0x‏»°שzן #A#ˆ.†fc`ּ±׳…—GDײ…?57pk׃‰0=¦!׀Mƒ`"RO9³U'ֹ³ִ–%ןװ²לק4־t|^ֶ1P<ֽװצֶ2%=וה½”ֿ[m§=גִTֿX]d41Tµ°fLn0ƒ+¯Q…`V2´\°Xqnג3־‘„₪G juֻec®[3y@(1›IR(ZB׃Bµ–“OױDֱ q=LקhחMײo·Hyµנ¬ן4ּׁ-ֽ©‎צ·“X¿+‡ הש³‏³חoדקjHהjָPךGַ‹–“@Nמ6C• Z“W,;›ַ¿bKˆ…ױN8L$K^ [ש‎£G`„P´©ל&)R¿NXJי^ֹpz&ָ·d¯C°י<{b9.e₪·Yְ¡sפװ§>¸§כֹ•q eָ:‰°<’ג*¢‡?rƒ©{דח¹M;Ubֵ ×J·}­q¥/ש־ּ>´%—$oױ3[z ¼«Dײּך¶ וf־Hy ˜|ס›®b/‰>LkKַNk~n.‘bK-tL99_צnXR•k„NֻתI‚u[L™!–H±ִׂ±bu%M־¿¾Tֲd‏ל1ֽ»]§¥®vV½’ֽם ז…ט–§׳szƒ†*תעם]7¼¼µJט'B«ֽLbַֹ¢ֱ¼#,^—ף²¼–GPפװכ.n1wˆ—פ+bRRא†@עןנּj3k:52—ho`>©מז ק+LO}ְT$/¿ ֶ<ׁ±ּ$קz³™[PF$mֽׁ°~¨;PP†St ₪&‚8װdRzץNֵ¶ד˜OB¿Mװ¾vֽט¿S 0ךC¸ֹ.xfG<´y!A/4ֵץ§yLט0cC¿#hW€lD‚]¬”s“ףw–“6ם{פ±‘3\ֲ>–Z3“{’“-8=–e3׃Jדֱ‏¾ Uָ„Mµkׁu)…¿S¼ם4ק­ו_”'k»-זֶZײq6“ן‎L*¯ x“ &‹)£¥ֳֽL¿p÷£W`—¼yX!l׀uס-ײeא±©2`׃;»\1—(גףV³¦½ ­ֶ־ƒ½]“צ‎ֶAמ:8¦קל‎!׃:אמ^; ½+4׳ׁ7—±]¾¶־ש₪ה$¥t"±ֿ† ; ´ †€בט T‰‘#z כ¥‹G#(ˆu¹מ~‚€\פCkeagG1tt÷=Q-ג»L­קֿװװ£Ui#T[0ני9— —"mMuibw׳„,\e´²P•ְ©1¶כ—2כו…W¥ב_,;¿BQ>*:חjו־z FpוL}¿ֿx¢z.'c ֿµ¸4/׳\@ױּ1]ץ‘©›ױ׳ בU‎ְ&ֻץµ8›?<׃ׁײ¼מI«yק3ַּ£§טֿ^}zרtױi×ֿ ר‏e# ־Z:(8o}ײ¸½ֲ7^ֲ’+ ‏N.'4yױX3b[.הֵ \”F˜״uQד ֿ¦x–»h*†Y¸^TBֵ(WZ‏B‹?ֻ?¯bׂ‚˜׳CחRטס"YחE›ub«‡nְP°§`‘8ֽAׂ<״‹ >^­L\i"%€{נ{פ״pוYG°_הד46hhץ·{yu²אְ>¦ V(p8׃€±,×™'ַGֿ‎אי?9~"ײֽ{‏נשד'_x½-l^PָּV¡ `׀Yײ1&ףZV¼,BV ₪"»DkT‹»*Z!Dwב„µ2}A‘¸^„¥RFvAX'₪x´lU:rשבהq6הזq¾-52M¶x3Uּךwײ@- #י’«~₪h Eק¡^hֳbּױ¯B‏ט>נ<¡-«@t£(װ7)B$¼'‚v‘C ֻm₪›ף״N9!ױBdִ”G¥b/˜’¬,3ך³{׀4iM[רaָהf<¬—–kjYO>{ֵד§ֿ>?<תפר׀ןU¿״ֲ¬’'kcףX_ך װ<†y¾ײ’ :®תֽ—‏ר¿5[ש‏׳ק2¿(¶­™-ֱ÷9-ײר₪8¹½_™ ײֿ*/¾xתפנֿU}צƒ—O>›י_ל£¡עחֳ¾¬ו³|פ´עגֹס¿dײן.הlף>]תS1b+[+¦Zַ[*$-®׳J`4³{ּc@V¼O ˜*wKֳC@ׂgK Zץ|¸ן׃†´¦וט״ן¼†h®™14כֶ aױ`/יz‰a2fפ םתr½ ּ/³y³ױ9—¥״bX¡ uפ„ ¢bױ÷>±ָוD§ש/ֳ×₪ףh÷yִׂPָRֵ} ז3qj-׃©!¼^9‚ד€ Shֳט^g&ˆױִ‡ֻיP$sֹפXoְn¢Lתw±ןH8oלt¾W,UA‡ש¥< i¶3• ַ¯K׃ao„x¾¿װ)ׇֻXK343‎ 1…x—פ8יי»פ־‹ה{­½=H—ז& k±®[kמ˜C׀A—u$JB?>ג¨ײ•Gיץ׳wף”cֱ÷ֹ1ƒR÷A·7א’Rֵx; ©­qח,£‘oא£.a"([xהFƒך:¦£¡תֱQדX5ם¢_׳©{rxפ£קגװֵPFב*$ ­Oױם½AרוFd¸ױץ¨¼cz°®wˆ־ןקbֶ°ַש±‎-ױ‡u-ֶ‹Y‡¾‹AFָ‹1· m<(jׁ1'…z‹okQ,j‏LKף3ˆבOcנ!ו’´1J¸‏(~I |‘ֵv«²ֶײ·¼‎G#‏,½xu  כצע€zשu{OצNY©ּףהOהCלK;´m6«מם9¾a;s_‹ו¹דU®ִ±|´₪m¼ְB&fֻ§vt›`´ֹעז%c>לB3–¦¡_‎Ia†g³±— דq@ח^e`yak_1M¼¨ƒ¥)D ²B₪ְpj+ ©ƒbVH¹‎ן:O£[¼¯ׂ]qR$Q>Ebaֻךh‏sֻ[]ָ'ףOY¡ֹ-B•לײ¢d ³*==ֽ—W˜‚9¶‡,zC?T‚mC€ d£‚ג•˜`v÷<"ך’@?§)1Yב ‚÷ֿAֵ*}¼s`®Uדך₪DqUlfֱN3“u“ֹ)´.¿ִ‰_}\qֿץ=׳ױLד >M”¿JSעcL|³ה´נlH®™‡K »ֵ´H•אJ`ז¶לk›†ט0‎b³פx³װ+„¡£¢/Xz(״ׁבO‹$ֲ¶j…2L)¨׃°{ Ym«ם ]±sסחTכמג^ַה‎צ˜v™י§L*±ב8טֿ¾±]bI‎¸‰ֳ‏^›M¨bִץukצG:‹~\׃V9ט׀%7#ם GdG,‡דםׂ¶״/ׂ7ט° [ƒָ „"ojY˜א!כ±— 9G‚^:גךs¢³ֵסFֲƒוק†:¡;dג¢¨אס/×,םמ‚ ֱֹ't·ֹף¹¶Y6Fh=¡j“ צׂ([©¥g $¹ףSA6•עד’Dֲ FN\"uׂ%A.״µֳ˜ִ¶mיֳ#ׂ›Oףץ¬x2ת. פ› ~^¾x&’לN“÷`׀טX0טשֿ%÷Wp£ב9טסTi‘kִ~+RGˆנ׃j0ֵ”¬מrJ&ֻ>dפ>¥sx‡7Ueׂ®¾®/NכI©!‹i› oI`IֲiND¾J•/ |¢פ,¡ז¶+”ƒkחf•jְ½qְׁ•c‚H@G ¬+כ°Bׂש‎ם‎¯ןqֻ¿¿חַ±­]P®G₪TkXU¬ƒ¬¾Kµ¸¥ֹ“gG?>־>ֶ^ױQJ¶™³26רְ¹¨Zw¦ב=;)²Pƒ>ז§­c,¬ƒu4£ut־‰M®G.Ka³cײ‘#uקN@ל״=|ּVך‹·>;'AE¼]ֹק›r¥× ‡.ֿ>2א3µl—רQ0#װןֻ—8ָי׀†ל6צ„M³¹l°ױעU ·׳ע.F;e¿^׃װר¦¹ ÷uֶ־`> o4rffc׃נ כ))pZ«׳צnaְִ'»H· קˆ¬+.Qc‎­R¿§¦ַח×»r7³<½²°דזQ”ֿ¡)5´÷DןְOµא•²ֽ[‎oױ\ֱ059גע`”ָC,£5ת_©ֿCµֲך‹¿?"$u:„”׃>:´ˆ•c¹N=\“ ב}’J ּ `ף¿ס —u°.לװS˜ֵ†`כָ®•x"EZ4P·(u•נ„‘־  זטi‡ל™¡IאCG@w 3~…Vָv•„–י\‡6״ׂ©b‹Xqֽׂk{tׁVרֱ#9—+„‏gGֿ‹ןKq^ו¹\‡O־h'חגRzמצ~³¾קC»ס‏Wy¿ִִ°›'xˆךIn\R4‹’ש¾·ֶ|"Hז¯_¡k4¶—%ק13ֹד׸«?¡5ֵָx¾R[ׁ<˜ וOwZ;ֶƒmƒW~3iQ¬—U¼…ֲ,KQ;ְ/ס]׳]6´¬ֿ>! ׀U†Q‚uAOם46ע]”)¥«‘$/«נr« ׂK ¯×קתVw6,©7ש.ְ ––T&וj“²§§ש]K“ˆT ¯ט´M›‚Lf!ֽhSf™3¿א¢‏‡ ½ׁ)‹a¼₪b?‘ץ_¼z‏ƒ£ח~ץFפU&ס$₪ך"¢fכע°RT˜y"),“R׫ִײ}Bִ‎1>~rt<;J˜ֽ3װי§ l©ֲ TRYy29ֱ(´vא•ז°ֵׁס2=שטxֽ״ד¥¸Kmu— D״§¼¶uBס÷•¡™¹Tי[<`ׂlוס[ֲjr»ש¶!ֳ Cקd´ָvo¹)Fײ˜­{6Uמ%פ•V {’2aץµ%:4Sֹ×€·8ֹ²!•׀₪€pפ÷ך`­b¼´8‚v0נ׳-µ]r1 ¿8S»%{C7ˆ½¿¦`t—¿ ׁaֹ‏ַpW‎WtPכ%ֳַ:cטUְkHVףecֻeƒV­X[zD·:¦0kי©װ~Qלֵz|h װR°©ו²‎?ˆץװ¸ָה¢ײֻבA¬-ֻ¢‰ס¥5l½lz'Biמ8©^:¢ו–)ֳ¡יGkFXMֽ–­V?¢םװ%נב0וB«»X?{ ֶ×=µ ×}גµ¬0*%¶CAֱסQQ—¾מ”ya`“q‚s®ס%!ָא¦XEה¼ז²o{H_ד%דױ=–C›—·Zֳ&ׂמ־e5ˆ/`fףױh |כְ‡ `ײ‰rˆִֿ,–}דףsWiחz>ײA±•‏¼ְb'h£ƒְחGco״z7Zg‘ױ®¼<¹צ£ע6ֻµeT [£רG ¢¼k€ֵjֳֿAּo©CהkפZ½‎U¡ ²x$ ¾A¯¸ H״ֻ.© ה8³ Hֵטt נב×÷דEU}8'ַֹzַ´¨¬@lFS®÷®¦״j*ףq&×:״„‡²q4[¡×ח/ˆ‹®ֱXקך,‰|×oסMY/›±_6iֱהֶLTw\תֵ¦€´ kF¦°.1#¸ ©ׁ9זSQ=E(‘w¼%ץM״T]t/´v#y D9g„¶mK66²„$n£¬mg׀צ3קֶQַ5srkT•װa:₪zGNc]¶[ֶ_[¬!·;ֱM—Wsקi₪'א²•[j¬­[ֳ2mֿ•U”ƒ³µcucWק©°׀x×DYף7z–ִrw< hֳJ…ג]7ֹa1/ט8rפ¥n?,%hB^o2Gb¸q‎°„«|˜§ˆHP±'ב'+<›-kr]s²C£מ'ךש¹y’ׁJXֱֶץd®׃ ךֹ\G@װ“ײ¸ק&=r½.VhpO)ךשE‏¨ֹּO₪ ע½¡נ“s¬ָgs-צָ›ƒ./°¿r,כz²‚8ֹµ€#WhU9׃9–jה“sׁouIײ5„  \sא}תJp›ֱ j8‏תZ“«כ׀ _YעטU†2:סXz,ױם—כU—5)#Rm? on[…צװ‹;QקGךֲu5MֳֵגAW*¦-¿·׳₪ֿL­¢hµ…*)כ‚ ַײw$­H°€EְzP׳ל@‰[[ רC˜]ֱכµ”i¯1׃¶~*י ˆOlx°C¼‰Wˆצ׳Z₪.pֹl¥Y־\X…*…E©½ִEj½w!Uײr׃u1, X`aָJ—4FרY[ל‚¨ֳX(,d½™kַשז!ּyrַ°!¯b,+ָ‎!²M!¶‎ֳ§ָS7´ךv]ֱ"A˜ֽl©ַn־מxT°ֶ-ײV‘„{@¿:D[…׳—?:‏ֽ—W®×e74ֶח-‹#rקM)pזב –Q…ִֽ…o ץ—G׳w‡חגMPQ4³— ¹*u¸j' ¡+¬ר†‡›moֳעב/>{צעa°‏ע³F‹,Hףֽ‡¾x1³—זoשװ‡_¾<~צ£F‹Zצ??5Aבשם?·3·^ o$׃™¢Bmכם`)4S®9I©×½W ָS{ףµ9»=BָERa9gְ‚ט’unֻwW3h2'PyְHF£₪gאoשuCעqd]שy¦פWY¾‚[2ם"z§הµPתT#ס|SZf®ױס;׃ו5rTפ©ֿ€GL‚eְw³‏9₪?AVמƒנתA•L³וD׳ֿ°÷1 ¢-?`ֿ₪¯ֳ‰לֿ®+´D^l&wQ›ְ'{"ְֳׂcֵ§gk}עu%VjNC,(‹ֻAEeםײNֹךדָ¯A:ד~Vת¸ֻּAַ>[}bֲVוc״גrך_Tֲ}ֵF„בכ•*Os÷« ˆ׃ײoXTֽ\UI( Fq§&עV½´Stֱ׳‡ט$ֱoup×ֽ6ץ˜H.v®$K#ר6¯עG+ם1´א¯±oN˜t¾ש¶×k0ד–ּ[־®־rו×*־„‏¼Uּ,װ9qg¥yPG‹Eֶ–ס®‹r¨ֿדD;ױ"&ןם±Pחׁm§U ¥9·ַf«÷ךv£˜wHM״עk µִlֱֱ ‰ח¬׀װפ‘ֶ(´~2+ֽ-ֻ‏VnX&‰װ'מR״J©zּA©yָ`½jז’£./›•†מ€K¾D¨^ *Cפ™ ¿)־ִOB¿‡UּVֳQחי]yv@sTw ¬}e‹Dx…וPx£'LָK•·סV-<>?„-D9נ1p¾[ר1)‰E“÷0v@÷ס“ ­K<¹s‚Di1m+׃9E׃!™«גr¶Oד]Zr#¦ןִ×MV´uOLֻן¬MחQןF ¶ֻׂh*¹6©Rm4)ב©eיַ¢IQ[:ױ£ֳ–ֻ®E4iד<2ך2¾¡¢%ESm2xk=׃¶_v/ GƒֻO•¸[/;†hJ[דl¼°7®•<ץ ל&"X¸י@ּ[/«שDG·ֹ’׃ײ6O O>"M@­ִָז‰ֱ£‰Gtֶ´₪צז‰ד)‎G´—¾p‎]¦ץ.׳€#6¥¥µ ֵ—lְֿ?ס€®½.ַ5§ְ¨±¡n¾&G|ֽ•»װb7ץJFn¾ךJtU;rm•ֵפזכךִWPb1ױ«אׁ¶² ®‘E¹.Z:®2VALק‚¢ףHטמ3ּo,ly¯ױ­w[z ְ»uP›p]סdsTk‚®ף0קyב„Kרה|Q©f ¬ת8ם!rg¨ד.V™¶to¦S&<­JqI¢6;­p±_/|›Mo׀Nhmn·צ¶ֽ~¿5'ץִCיֽ‹סװ0״ֳ^X‡@V³A—jsY±>u.‏`ֻו 0€¯ם!§×ן ›×O#ֲפ{³˜«ְ1כׁ%Fƒ‡-a Q)b2הּ‚-›WאWd¥״ה•¼pתY5הpH־„ֲ¥Aֲxאv;“(p€ ‘CK¢Ct—f×ֽ›5f¬ֽH¶בl§™ָסXם!ˆ†ע÷ז₪©¬H4בU­ץXLװ>Oֹך`™ֳpשt ´כ#‹d~«j°C–¸³RFyP‚¿‘א_~†9 m‏;,3ֹ?€R!ר"ם6P]CטQ‚H׃®…0ש ֿµ¼‘ױ"ר״rµfָֿק#א6ֽ<ִ¦7…5־XZUוl#u9¯‹±T ˜r:ו¥ד¼ ״%חֵ”jnr-IIֵׁLiEךS»$Bk{טּׂ;Iרµ-¸|+ ףZײHיWU—ףָI/fEOג°ָ*װוeWM¥ox M¿dנMׁ_ :@Zֵ”¼׃˜ר°¢׀.)Ai7?%a”+מ¿^״ץּ~I9)ףם¯רֻֽ; €אֵ{Qf״’R=z"µג?®ײ\“ך¹3R~הם״‰ֻˆט0״“#vP M5¼ֶצ•q¾§0׀₪^˜נט†Lכvי'hם´v´ׁ7א»ֶ•’ןKY~ט‏דׁדדַֿ>ƒwY₪6 ּ¨‰IווגKoָ”H.®"¹ְ*¸†טµ¹– ˜c₪Q¨;e0+F€ק)-דכc8›±7xiתֿ˜ם–gv1!ƒס´פב§©‘¾“ףׁ‏¦ִ׃`D״ָU`ּסwֻׁ'ַ‎°6ֿבg?¬£־1אִע>f: wˆkLx^ֹ‡’‏וP|OR¢#ˆֻ½ֽVמֵס‹}³oןo|קקאֹ{ד}}שהטף/'¯תס‎?|ו‎ֿ2¯Czבףֳֿ¿¨‹T÷[”Eֲ|כX~P/P‏\T@D¡9ס²‚ &>y‚ֹ}C׳ֶ4¹ƒmsf{+ל1י°ײ—₪:uכ׳—34;נ–kJz³&ףtֱ CD#vJ§gV¦כ‡ ´yױj^°ַלC¬ֶֽ¾5ֲ×|nט!ת)2\_sz°[_e’גִ›L צ׳מ¡ql ¡}׀y¯lֲ$™u|²`$'˜ֽ%f„]ת”3ײ+8kh׃ הwp­:םֱ»»¿³©ס)-m״׃×£|RK₪%ד ׂױ56°hײe[s´1m+K«טפְKL׀װ•U­+·PJ§ׁuµ«˜צֽˆ£ ²†וvֱִ]‎׃:»|^z42» ¬,µ™‰Nּ—יnbצ&ֿJt*½µAַ׃÷²ה¦Apד= Zע}Dײ”זֿb˜Kׁ‡u ?°$°S4‡G]¹'–6\dˆָ7#…·­Z6ֽ×ַ^XR¸ק–©¼-Bתס²ז·B°®ְKקYk=™‎IY¯MK’ֳ-נPBָל!"¸“ָ«Uל—mף±¿”µ־ךN)C¸vקb¾ִּ–W…OIמD an|:׀A¾s׳’׃׳*ׂסl_1x«§ֿt8uUט‏’$¶&‎נQk"יkJ¼wָK¸~[¼%Uַ׳—פ§“xְ¡v®H2Dְ”›+o³Eֵqֲֳuױ§|+ָ6³ֽ‏#5¯ tL0 ס/לע nך¶«—ְkן£8¿aˆ‘W™tR<¸עBˆ ¾D¸ּו lֶא7ovDpBC“ױ 5ֻד²P0¼װlנµd4 ְb'4Ly­¥¾8Sc¯ױd¥@gy'‎ִ§Caַ-קםש.²›¬א˜¢%}¦sp’bµ"״crַ wֹ טא·§ M ¿ל‡††ם5˜ִ¼7ˆ*ץ)!\–צX§1ףך×x ¬‹i“skן¨'rמםמןםa"ח\>M6+€".ˆw)~-״°’/19H±`ֿO8ך!%/ו¨©ˆ ¿–x¿\קw®ֿ ±§˜:6D½ֱ־ר‚™ּ-D¢½C–eD{…#+÷dµּ.¸אַ.־€€@¿ֲּ­ƒf´צ€³‏·¢µ‡y“³›fֻ×€kַaC€9­ֳ†R\׳™‰׳jE:hjm [·n®¾ח'צ—ֻ~Xֳ/L¿·ץ½›xN}%¨C "\ְJjג¶²ֻ#aN†וְ6jֿK;]Eu@*·9Y־{—˜,£y‡׃8¡ִנ ¡J׀™•aF׳p'ײ ֲ–?q®׳xפֽ ¥Z!7€×"C—#˜‎2Hy’ng¼ֻ­<ֱi²ƒ¢87;Avֽה¾SaD@\ֲױK_a´ ג¼7hqֶ£”¢לwפ,/פFץ2sר‡ַ‎0h״¦/JXֿ’‏==SOכzת׃g?ָ<ך'•a‰ֹ6®µwה‎ה°¸i~זµuKא¸פp;­אA×XQ}yסֵ>?|שהר׀ן’ֻbIֲ,–¨׳~׳‏ֽ‎7~yw&'ד‏~.†a >ַָ‏?ק¿פ:¹›ס d}›2ֳ.²o״«__‚׳azג5Hֹ2־°3n¥…«Y©Zהeק_›° ”x0Lmץiפ.U(#iׁ¬?׀•S 0‡ oש«‡‹ַײ³i‚˜ֵLַCT [}tח¥ֶ‚׳÷£ צgk²¡״B[{°וz†[ֵY¢‰#₪ץ3NO÷ֵjJג״ז°¸גQ‘פ÷–9‹=Z&¯ֹ+ׂ,־nnsֽ·µחzֳtqײE^װJזhִL[·L£םןׁגO&/Sיץ*tג€I—_0¬ַ’8ה‘ֽµ–¼ף¹¼-¼YLָ¶€„ AQ״G 1‚,sLֳ16ֵז¼“¾׃j¹£i£r‡|7’*ֱ¦~v‎:‚–ֵDT ֻFפ־2=ו©n^)F 5‎(%l3Lˆ³ֲג׀װ&…גװ^ןv¶‎a#ז1O”ײ=קµ+µ’¸*lUטH÷(ל£gˆ††.ןִגפ)זsׂ>™ֵׁ’;`6–‡2G'˜qב|ƒח־‘¥ֲ±|ָgֹ§I¢­מםaaָךiKgRנ³ C¼PEFU% .}/Dnv÷73×4on ‚°ו –·צֿz%ִ’0ֿ˜`'Y»ײ2$®¶=˜]b¾”ּ!ק¾1ױ׳L}״₪ oֱh×*¡ץ(€װ5תµַC=({NדT’¶‏ֲY¹ו״\  7eװtךּI©בIt‚0־™»ײwלֶjָ@Jַָײ”PS/¼¸>Sִק´jcז§&,(A]5×e²ְ{ח¢ ¾]י |:(-¡e"Gב׀]xmGo׀dN )Ytג²´=F†ג §K:‡YׁLˆ׃c«׀״‏גױQ¼‹ר{» N‎×Bכu ÷×rֵ]h÷˜,„W+603\a״/{־ֹוJאr;¬װ ¸klI˜o‎•U¢׳.±&¬t׀«“÷U'בי¾¬r¨‏ה¶¯wz0‘_wA§¿|uפt>Z‏|¨מ| $ֵ,32ַRש®g4‡¥F׃Cף›ר.`v !a₪«]/"2k׀דWֿ}צ²ּˆpA ‰ם¿–K‎·· LN»– "(…־.—~ׂ״Y&‎אˆh{׳HhX״!¾Y¬v"‰ֳ›־•Q¥·יתב«—O=?~שֵJ‹ ¯˜כ>6«_פ|j'1׃p"א6~]Ie״:U €›ַ>וjוm®ַM¾¥›‡ףC¶+‡”׳0‰~פ¬״לg…~§מ¿®ֽכױֵװFXײ]G7_=~i6אב‹ױחק ¶אֳ.ױ7 J¢0¬C-q Cר¯`Q‰± ֱךqplOl$¸Zֱַָ3¥rQt€9ִֿעH%“”€ע₪®Mט•9¯אֵפס*3jf·Js},xE"¥´יִµ\‘ר9l-Yיז"—ף3,א˜ \ֽ32„u?…$€ֽ*9s_#Dן((נ”¸ֳNחuֲרd¯v˜ a½¬{\g½‎££ֳנ¿\Q“VI¡^°ֵ !ךּ¢ױv‰סV+n™5Yחנ)42g״ a}גֹךףT¯ˆנ‹:R€eD®5™R ¿ט«]L”‘µ ע„,´ּ~+qzױaP.¶²gyn3ֻּ=/Wk˜½U'ן!–ws‚L\¡¨®Uה«װw₪k- )l“ױ7}1׀״-*`"}t§˜W>d!&b>±yבFDל?°WBµ'ףu°כסsgּ7ג‹M»הY₪‎–ֵֻ» ‎B2µ¢byb_¾ ˆµ ¸גYָֻatpu´-¹ײ†™K־D[«רjח ּ\gL[”¼Dֿ*ט¶;cֱ9bֱר’₪\-Qװ)¿bי:(n־³?§‹Sז}7q>­KeI‘†נ1׃b¡¡×ח₪¿T״k>3&v ֲֿ– ­fDװ¨₪‰!ˆ¥v‹¼uh m^„q+ֵכ¶T=% sֳW% ִש£ם?¯Nק)³—“K*bk}ֱ?(יq~י:ןֵS<ײ±©isH‹.ֳֹ>C\e[B°6w·:״9‰ף´עµַיF„6קPLn>>&.ֻMֶַפV¸`Jה…j=¦h’״¼¸ֱ(ƒ…ת£5ג8א 9ֲ+TdבnP¬פס‏w_l‎Nױ‘JxvjAֻNV ׀t‚dBןLE±¼Hi‎Ik<­ ¨;' S§’§„%*¸q d]״TSח‚°cPr)‘׀ֱכEֹר‰+~×*]שײ כv]DG#H.]zWֽzװ‚ײ€ְִ€7½י ֽ¡§ַ/^V‏ךGOa˜?vלa¶׃h5¶·4צ´״£&§נ1`תנרוׁLxsgפA§ zזho‚ֳיH’ qLֲ|ֲ®זַ1?ֱדשף?†w$wf)׳Gֲױ#.u‹7ןO K€®<²׀ׂ Rֻjֽ^oתGַס¯>˜ׁo‏װּׂ_˜ֳַ³Ongכ½‎:c¥א9_og=‏&־z{§ׁkG}‘I ²½£ Sםֲ‚9©אֿהyVJk !C­‡E I3p§¿²r״aC§…B¸skF:A¢×ד¬שבּs¢_¶rS&¥Wmֶ»װc÷¥ Bָ]P₪“~ךe„€ֵ¢Eƒ נ|§\LצYl€כּ¹€Cלככ|mפלֱ1ֶק*ֵ¼ףְJ]ׂ¾ZֿC‚װ^’w|³£¬’§Ah~¾†¸µxZzרכ©&Nת»ח¦kׁ’װ…»§‡RזXeױ‏;יP´TG1›ױטµ"צ‚%ױ¼MfלךפR-צ!H8§(ך׀aבFםJ)]–B¶ ^±¯<- #cׁ“¹¿בׁ!¸×­›¸ ±1•€XפJ$ƒxִ¢=‚BU{vרָO־\×ֵו“6 ׀ד'‡¿ּ‘@ַֿ^}נ¨ׁ¨7¨]ןeֵנוכ—m‘ֽ'»«¶X״ֹ׃…V=7׳ץU’§4•ה¢—;Z0(·c@¡ֵ.+ad_Oz(ZV…®b4mטfJ₪¡dL  צֱg9ג#=ֽת "ׁ2װ"P2Q0ָם׳׳¡¶k‚§p{g9&לˆֽS¼*…Z"a¼ץ6 [CCkחXGֿ]ֱתדmז־ל€, ד#©ק=ף2Oֵ«–…´¥I#rs נן„K‘ֲּQֻ\ֳנSש´MN,t^ז1ֲהט±¯l r ³כB¡דּSם½«,s+x³N‰ְֶh³wֳ- j.”J.a ₪ׂ}µ-X f¾״M®GHׂ׀cƒa.‹ ״0ִוˆ5» j"ֱS[½6js:xOי…ׁJֻQƒ«†&kV’±«%Cפ.2O!0סן£«׀V·6t°\tאfE›ו‚ל#ח"¦gף¸#“נסִרtִגF·h(ˆ#ל©ֱ~g{ע¡ִ}ס¥״§|"‏ִִן:ג¡רןaz‹—¦÷H{„S1c ע­xֹ»o] ­c$™ֳo/נ“9‏# £E…ױאטd<¨h 0hjֲר1og₪4#א—ג¶ֿ]‡ֽ-לחHlsk­x,׀”S^‚Wµ­ׁcז+ִ‹ע תoˆmeG*4v6&ֽכDH÷‹ַJה:8]+ח-?£f הֿ«ף‰oה±+Fj טpE g0ֱײ;b†ט₪H`פ÷Jgװ¢f ¯ †¢!kֱ÷DO(²}(ך~»Q=˜-‎†Q=ט¦ ´[@ךl“ע G2¸¸D¾׀םoNׂ¹+FFd…¹ײ|nQ<—…׳¡‘o ֳך4qW‘¥הםU¯vתגU"j°ױXWlmgkBV+&…Iל³מK׳rXs_‹Lֱ י-§[÷סLכ²1¸לְ״צ¨¾ּיֳ!M״…#+S“4ּt°¾ ׃׃ I=E ִ„N :Vֿx^“´yO„H$¯rֿ‰Baֲs/mUQVּ›%—§׳רV„P¹ז•‏ּsWM״M4 µ“בk¸^m1”*!ּֿ, Fלu]2·ױbU6מ“”YMח\lphVֶJ4 מ6/*}ףKֽ»m÷K\כ₪¢׃ֿ>zִ—ךֶץד?¼&ד\]y"גP·®GclyM'!ײRY‹F׳¶ֽד׀^עˆrk1\גu_‏6vd/¿שנַש—’~ױצUֽs[״%×K]הײvHuP¼}׳jר%y}wפlTֲ ל•­₪K#Emן3כ‏¶™ׂy–0*S'¥—‹!mדJֲ¬9—Qv†#ט 9‎cJ)#uNװ*™,פחץָ¸‏kaװ® ײזBף ¸ °_·ה…fׂF©ץ‚ל²$±­¶״¾XןR,|­ט‘²fם©[ךF¦ly²צ₪~­ֱ›רµEz#´¥ֳץ™!כTז5ח<÷₪ח5ֵr4g,¦uוסF—h•‘0ו­+ֱcף³²V=&{¥AהT÷P ײDzm¯vXו ¼?¹כױvך־ƒז»Kn}tXtָף)ז¥hƒHuOסֲˆhז)‘ֲץ¬wט$מ³™^,r…†נ\גx—g‹’H›¬v7¸Qֿ/ˆJˆƒ §‘LNסd=¸ײ¾ך@´×ד ƒHRa\a“O ,´‡‎NLµ»×ך«Go¶w£G= FלִJZˆl[NֱY}ƒֵ„{`קckך“ח >מh=€ָו´˜YN«ֻןN(HW0ם>‘Ul:L™G¸8— >ה8 ¾mJ)4^'I.ְ>Y÷ל‹½ֹןעƒyַׁhִק¼{‰´l!ט®lEֵh1hׁ@÷"°diִxס#L÷¨ל *S×#ְ¶כז‚סZ ]P¨@נֲ#י§ם%אּb`־ז׀אC®Pְrּ±n ׁA«² jל·ף=װJן r`r}חֶCׁ‏$;\*„a n‰׀n:ה| dq?Aoc_fK אLtבׂ$^ ֳםdb| @ֶ־, צ%׃¼Nפkֳ¡d"ˆ'$Y †ְIU״ֲר61nפ8Hק־4]TtהףטMשk¯8“ א:-o#‘ה:¼" kYgן¿’²µb׃R€נBלִֻb?7ˆו+Jְִׁ›€ˆ,עץ¡EW~װ6lg²}ץ´R׀…Fבi“6V¼^­׀ֵ׃®פ‰Jר כzvשִ]'.ָ״ִrתּזטgY!²E₪eת Z³TRpj(ֶS,ֹ)ךף”!°$R5%1&K@´¨ֻ ›7 Xח‎b¿&p“E’ױ"’Bֱ1ְ–Hִ´÷¹#ֶןI¬צaˆֶהרJ״7ׂ¾Q\bןˆ[§…ת»W>ק'G=מ[#Lט[Wo0±׀וג2@"צו^˜₪9U¹i ע ׂ|ש=]`s p­¶‹"ׁױDf§Fשן™ײaHףגעֻ­N#rLfקואV[=l5&דׁ°־ת¶‚‡ען`FIQ,ֳכLfh3Nq6—°Zjˆ$ם#CV;ן2ג³Y Kױ›—ֻ’אa“¥X:/__´v F »ֶR—t³q®[²מסlװ†¸ם²k0±,[]¢9¯״|lY(˜R‚3"ֽףװקש־|ƒה°’yז6רW²ֵֶ ט cc²Yj¥fW„²ּֿxגְ`§’ֻv׳‚הִ[I]=ֹ˜ ‰VHֶ׳.R.>u>«Dx½c‎‡~y/קקם_׳ק?3Uְd‰­חׁ¢ֶ₪”'דo»… Cq]±ֽp“°cQװ|¥9Yךq ֱ I\ַ_ר~ֿ!µz×^צ˜X˜ˆ־I¨^ח„¨¨.©ּ²w°ֻ¸™ lֶsdךAך₪ ²F%°ש`“©מµ¼6 Vֵ9»}ר$ל½ֻvt”nֱלB’@€~־׃3¾םjtƒ`Yג­#_…l¯¯ˆ¨8ט0]׀תMo@Nּמ¦|yו< ַ†4%›²eײ`׃ַ¶‎®א€ס†*Nˆ¬M³# r·…·ֱ{'¹#פֲװ]:ַ‰½- ְpט´Uן„₪¦¼z]A3P¶mv”וl$?YbֻZ–ֻ־׃זֶ’ד‘BEסבף']¬ץ¼P6€myo)}םl,ֵ¦c–ׂ¸טַ¶m–ר¾₪’³pcqרk€ֶֻ‎µ   ˆּ£j®(פ,Qװw—q%זvב‡>r]Bl־YC¬טִ?4ז4G{§ְְVW¹<†!׀>¸“itDוP Fqֳx”\ײ68b©ז5×1Pw¶›kס5Gש(ֽ'%l¶}“‡W^d.ְֻּ‎ז]k¾-@ק ^6ּl׳¡Bw™ E˜N›ֱם›tM×7&J¿`רץYו;vFWQ~‘3װHHr'ק=¬@ת:Eסן›טן„Eֱ¶רiP¡R!t,ז¯ס_B&ך@R·Ym;AdF I`C¾¿bK¯x"‎pbB¬ֻN\ױ÷(>zbO ´ י¸tY­ֹ&?YK›AE–צֿCar·ׁ<™(£װ‘¹–*¦7לdחzmCפ °׃6דָהP•1¦ƒֶצמ7<0xֶ¾4ֽ`K€|³*¶”צd˜®·0Uר´€; ‎נW›ס ¡˜Fץ[ש­³U«s°K"†גױ§ ״1÷J׃ֶ¢~¿bצ; לךֵ×6¯¦]dN®‰U·¿ן/hZ%}Xס6\4׳H„£םעpי÷!e¸׀S7,3•l*HK× ±־!#ן,—ֹW«`«Qiץ) Aorˆxa81Eיף.;>mֹ%ג`ַּ)¶•  ;0ע?¯ת‡׃ ˆWֶ(eר)i‚¿fׂ ”?jdS₪µב¾b!zwק¿÷ֵ·%צ\₪¹ׁ@luט<=,ת-8:—ִ¡,¦wCgqJת6 [.{gE,£:^×­-׳¥~ƒ"_׳ֻd!Jeד¸`bwא7¦HX©ל/׃Jƒ„‡‹s$Fiֿ×צ—בח…ױ€כ*!±()¶Q×vP6cלƒh1rק«8±פֳ8"a9אלIJ _ֻ7m‏°ע£Zַ½ F…I׳ַײֹג•w¦pם&zh¯¼³#·F‎#¨ ¶c[:gaךזL9ש»K ln0m…j*w™עףL7ˆ<אֶ |ּ¬Uּ¡%כט¿"מ#&ֲִיIxYq4?ּוoh6.²ק¬נPך¶בzּ^.L¢?”d›uײנ”<יm5h¾3^¾­Emֽ—m1›,µ ח´›eI{Jf[ה×צץG+“ִ׳V.ָb8¾זׂmf_e₪¸‏½ :*;s9זֻ«%x” 6N˜Ax¶lשq;ֱg¹װ.‹^¬ל3j6?mםמלןם7g׳הק[re5¡—וָ"d±ְֳCO‘ק z–P|׀ַ>װW|¹ֽ¸C¨U‹.*g ¿rjֹE[„¢׀f¿בf6»Kּ9:כ§¨OלUq£lL³½$‏+-ֿL•˜|ףnq/ק·קקםgײֿCK$ְ9D‘(?ְעH‹»&ץ £WcW–ֹ+•Xױ—~ ¸ו-l× ׀Sl½$hֻ©†0ם6<׳§mn׀S—3Q6תךdoJ('צMµf/ ק™=ךrPוכְו[O ¹u+־2מT~ָפת+ה‰  4­‹pyיeױ]¡׃ֲ= ףֹ'Z׳ד¯­נrhi[סH¨…ר¾Z&%8ַqµm*נ5כ½ח˜€ןPך&ת{ƒֳwYרץ זֵ+V₪%s:[״ Z;‎ iiמµזG¦¸@G₪־שןו‘¨™־ 5¦ק¸¹₪7¨'ָ9‹Q[מm²¯…†ֻנH‏ˆ«ךםֿ­°T רa־”/W(אׁ™>…´±ײוpֳמYBu?w[×ו=—w„ֲֽ¹>]¡{›5L·;oV,¸]ד{c€·ׂX³E¿qנoז ^$»dפֻװ­=£nµ½¥²ֹ6ח«m„·¿¢£בg%Tk^׃) פ.“±o [/n‡ח-ֳ °»,זRjH´ֹ ֹ,hM8ףdֽ¼יל2„)ֿ–®W|‹½.«ַ€׳‡ װNzb,¯S¨f‏5ֵאZ[€•ִ÷sײ״ׁLA¦[׳wIֿ­/ֶrֲ>ָ¡ׁ‹‡/[ֳE+ִ¿לUD•7Yˆ8F ¡µױ‚}*EE©ְ fצj”׀¥ָ‰2sZ₪סך‘Jֵ™7-]ף&צmC¨hDY½÷£s´¬«7˜–a´TP¸¿4±ִׁY9)V}L85s.E‡x¬ jַx…[ט׀Y—3¢‎]ֳָFq»@V>†¿pװ¾ױַO?™ד\ G‏ֱ£F£hP?¼W1€ֻy]Eכ–,d—"Uh˜>ְְ7\8ַ} ך‎&Kֶ©5¦l[ o.S,c³ֹ’qד¡ֶסזרµn»ˆ>¨;¦–TכױR‡nZ£טצ¨£×µ0@9N‘^ ½ׁ¶צxwD(+b¼mµױiY}´­ָ³ּ£ױ?ֻ1}P?ֻצ",ױ}¢u#ZW_י½Vהˆ/נ–ׂZˆvױoהײvהX°²]¸£†ו\#z¡¾¯קק£¥׳v¶ׁ¶תםװױֶ¿>’+­uGEפ@}װ{±Rֶ=½9¢eץׁDרTZ\„yw‡ch_}ּ"<„0זSׂ°/Rֲ˜¨Q;1^lץXױniY}´Xהה4עט rIm}`GEֽ‰ׂH\ֲד)F8v›±vH¾׀›£ˆ–y0!}ג×"£צ#… ‰ַב«a¢"Zײ>±jֵּ%₪lh©ח1­« ƒ‎וkהצֶbzךjL6\q×¼כרמ©ס˜viֹS¦_„4:·ּ“‹‹BֲמOdֲue;ָ?5ב2מ'q ¿השס‹—?: S˜+h¬zDeR'ƒׁOOm’0H׃ ¢’%i|W ֳVy®״j3K»K’ײ¿·וfסתרPw™WN)׳\¡}\ױ>g‹׳ִuk1O¹V+£ֵ"†)–™·{­צצ6³RCqֵ<¿DdךֽIt[—¶צvMSױZ־ ‎‎ֶ,ofg?¯ק"9:ף־ƒ³ת‏pe^פl­{C“X+z·&ז)ץ2oY#ֹDsP7?zDג‹,Tc¸־ׂzZC{¯[}ֽנI4¶Q²ח² Gה’+Z×~zֹ J[A‚xO״s`H\Xְׂ]&Cט׳ֵ‡ֱ·הV¹ƒOL~‎°²(&חֲֵֽל·ֱִװ­§%°F¦)סז¥”¯#¸ףHנpµTr9ׁ>׳ׂ־cץײh*©´ףע״—27Hלƒˆָ›2‚‘„ל€†…>q™ZtaZ‰/Om:‰״oj¼™ט’ֵ2ִmdAK?ןנ§¡kה¾“lװאקF½™/ֳ'¶ֱ€˜ֹ#“¯e©תx³‹ §¹t'i=שT(I²ם1¨װח½ֵR&{%9RW‏¢דס’—95jh־KOi×ֵק –Mם‰דf™b2²7ִ¼ˆyג ²,ֽ}0†,4^ד& >#w³הח3‘s„UH @ד´ףצWNPוQ!˜¨vHPV—ױםY¼`װ£ֽqE״זO8–ֶµSפqQ_y±–iךְתBפ9±B»הD«±ף`‚oִ›$•«›רֻ‡¦א l05ֿhבµזײ"²ֵ e9' ‡b¬ֹL״9לֹ+÷}P{ּµkW;”T¹1ֳqױ²ֶ:װֲכֵן/¼Pְׁך×׀ײ¸&X©ִ® ֳִ%c±ׁ{˜סתJ¶tָx•HSנֶׂCˆוjְ:`_׀נײ*\װRס÷·סֲ״&›אָֹ$@װ״>‹ ק†׃׃סד.}|%ר;p’ַFa÷q•µ³+;aְ|ןגת Fa!ֳ.lPVַ`5¶C]›םׁ¬ח'{,+;;„Teֶ50_´Eֱa)©mמ¹שkב´eײ‚´A÷,+«l–†9aי{­ם¸rg ‎ ּׂlח¢׃6•“;÷¸÷;ּ}2­aװxײnPU§J•9ת…ˆ¼uQ»ֵש2u‏7װ ´ֽyl¿ֹנ/2XR¸_£Y pj÷5}9µֻM‏ A™]g״hzץ1hן~Aד=הֲס׃°ף9@b!B¾r8µR(c÷z¡vJ‎6Iwm¬qq תעk·w ¡‰Iײ9.זDײa¥›@”ַV¨‚ָ9Eֵ23=זי‡›ום<8 G•U¡6ט¦‚pפG|K#מƒ¶ –י}=ד‰”ד¸C׃qs‘zץµ@’ב˜ַײָCMךL° ®k ִq׀ָ/Tקw\c–ע‏מxY1ו$×mוסFˆq¼׳ ֳ:V |Y{ִ1q>ֽ(¿ztq­+8"@־H"kTˆ ?,_fQ}PwDׂ½ײPֹPvכXq½PyDr|dwy_592®קtD"W]ץ&Sָ´G“¦·ף€‘׳}°45’˜צ[1/´‏.ׁ@ײ1ש¹8קַ‡f-‏cS´hbׂ?ש^חֿׁ׃OױֿODz¯”˜„×9ך¸(k@i8jפױ\kRy½£z¡<עˆִ}שF¬8¨–•ןDI°F* 1¬¡|>dk£¦P—+₪'¬qtAmֶb®»₪6Kֳֳע§ Qµת¾כƒ²‏AyִדQ UֵGµ®<גB+·ֶׂׂײ= qםֿףt®U…סn¬‘/¡עdִץ@yD׀׃ב¨Kױ²ע…A_ט¶H…£W¾ך"״,ױ¢?ג¸ײ•קt[)_מHy½qױ וµ`¥ו׃| ƒ²2ױ¾עjG°ף™6X[(¯uT”eYOµ¼¯®aּCץ}׳ו5 vwk®ם‰k]שdֿ¬ס״קױ׳8®uו5nFר$רX[C‰ךמ¨ל.?M­םm{×Gk1ךדzׁ|—&ךwW• ֽh)¢.5e+‹ג₪”Uֽ“mֵN˜0דת׳e!™עK‘7^ֳ¸דת ל•-¨P¯a½£ת ¬bםִ{´¦Qַץ@yµ·ד±EkXח¨ײuGz¥e׳ֿ:F׳ 9~ףQN.ג×SpכwLהk˜‚¨^לAa€א.b צk“q®7WEtס ְ^¨קדz |Hצb=…¨‰;¨£z <ךXןB/ImהQ½PU°[­X]ַw•× 9×}וֵnֵֶN׳2גַֽZ;±סs¨ַ`H(oם¨לשױ¹‎2Cprֶשנƒ0ֳּePח5HNo&›1״'¹`:¬5‹Q­ֳ,ה0aK^»OץX098‡6b¡ִ-ƒֹ¦ƒּRIe-C&7לב÷)#C´”G™«–³QwGפט*{™יN¼ R½<ו.„ִ½װהףּ`v•s›ֹIˆמ.־—צ÷OLkaB|מ­d•טVB® lc9| °0¬BOאRa}ּ]L¢2…z¢ ם„Yֿfן¨nJ›¥zSש½Zוp|\ס~ fז¥a8‘ײ}ֹ³o‹y­\םתZ£אFr6,׳µbֵL¯ם2׳gIµױƒiײ÷ֻVVzJק¿¼78Fַז90…ױצְnY¾לJכj–±c³‘×uXֵe,ּ²3)½ktI9©₪<²ם2~²4ּׂ¸F.ֿ#־ג8_‡-ן¾-ד­y$:ׂ½eˆMj‏ טvzn‏5†Hp¾±ת4jzU½צֻמVD|¯Hsֹ\"‎x_u.£b¬1A÷j-tֽצ×ׂ®₪*Dףv­‎·l¿L<¹lץx‰xX#Rחע6םoױהnY €f J´^^z—דל3¸$ל|2®']qלֱײֳֵ€µ†Z¯§׳~°Uµ8wױ¹Z÷H†טY§X÷‡‏²—/ <{pfף‏1¼0—/`C”₪›+°‹׃±y>)ׂ°pֽאo&f­I¦¢Gּƒ½|Mb§ט%²…†ןq יb ֹ˜-·ׁGײֻ6וz«ײ+P±M„DLdY§ְקySq<1–5g‚dׁ (±-¬"×ֲ98Gִ–HעכDVhי&²¾Cע'N‘כ(‡qֱׁ±\>•חe6q³ש©Vh6‡ָםEn¶€וYOB,µ‎ֻֽי©±­{ֽ-;׃ךbn1דcC÷עs*אהm@‹³wM³7(h¶ ׀­ ×/ֳ¥‚tס 8sDרw׳ׁ כSז¡e¾/3וס"=/ַ—…‘O0¡Jװף“D{.>מ6ֹרG'WֲSל=ֿ×i?-]-#¾³Eב¦ylשױ: נ+גֽ²מL³ר‘׀b,|נ&¨“Dv².Q$"ױqu‡„₪ ףֳa =¥_ד‰CפןµGׁלA7װ צPּ¦X€גlg§ד˜\ףAYHO Q?½ְHֹשG§ ­Prµ₪›8‏₪³?~¬חְ¶ֻ*זׁ’@«†µ­iZִ·.»ה8גֽ9e ~ֹ1ִsֶ`ה¦.¹lu˜h³#r#mˆ¼¦›(vּN¯‹₪.{¾ 8«L¼׃pVhqvQe׳"a]z¨ֹ7†­rֹ§µ»] u׀´Qי…£8ױL{³}!‡)טצד h†±–chpi—,tׁט“גj|ח)׳ ׂ.EתרVC'D(¶‎‡½¥<״׳׀₪bP×שד׀cףS ְַװ`$r6.Tחb»₪¿™ז¡לlF Z‎™׀חbV‚Eֳ£‘hqתQeµ׃ˆ‎ל(4¡^װƒ²ײgֱBמ8t ×e—#‚ckl½לRl/g6 ַ`Zףװ~Ye5‚‘ֶEOm3QeקRPfזPטע•]‡מ'9‘ƒ[.» D^לָטֱ5׳W¼ך¢[0Yֳ9\ְץgRl ˆְֿׁ־ֶם¹‡rµ³ƒm—•ִ„n%ײTרbOֳH¡ֲt׳Hװ\²״vµˆ # F KDZײAכ˜÷|3װvD׀צ:·ֽ-¸“סF9ױt*c/מ¦עו¹cׁW״‡²«‚ה–¬[fnס]%]ֶ1dי|c3k¡N­—$ק9c׀,‚³¯בײ‹)M7=ֳzPv…%זC»¸E‘DסGb₪V:/µ^v …]ֲ1ּHk״~YֹQ'w·J°7¢˜ׂ‘h£¡r—Eֱ ַׁYֿ÷4UtײˆBf ַ£u—h„cׁ…£ט†Qק5< 1¥ףןצ54,כנ©י%Eh¡T*QַF¼»S:™-־ײv”ֹ~¬M=µֵ­zלkXװֽ½X װְץTj½לvcM7=IK­—C«H$± ;Jם<´4"ˆֽ"ק&iWכv –ֻצ¿kץְP37„Hf#>w´Z׀זv¼ײ4&O״Pױ׀₪”GדA¼ײהC3־E½(;–ƒX‰ן7“n×¥Sכeַ°OEׁµwץHs-צ5t§ֶ^WְAMho+`9 m#¿…ךV˜׀כy“Jqדgןֻ®3ֱ¿׳CBן.Eפttt„;<–Fב¨`¥XU e%ֻI¦העSIם[״=n€<‡$’ x)׀v»d[–¬.U?´KY/<™3O£?0a־^·½צ>ְ>ְ²<=¡”$sצeםµ׳ו[*0~ ]—JCן¥8װףָpj 7¦aה₪3F5ְLwnם‎$נָ)^!4G2lvYףןE Nת~ל-Qf$¹$“#״הC¢H$B,ֻ¡¦·»;>pˆ e»ױy׃o ײֱn@$$Sיזiy¼₪oףפ¼"¼U¼ִQ8«2«[Bע‎ֻ¨{@7ץKוֱ+ֹ‹V€־·ֳ' ¼³Vj -!O2Q)סUp†K?@TֱU‡ל?zjט~©U†×´ֵם¿b:ׂוֱwל5L®]תזB’ִ_¾s\VtשwIUֿ¡fש½ ÷½t4v;9ג׀םT¦k÷qwZ₪3€AbI§B₪6כר dל÷ת¯wצ¯U{=Iyfמקמ‎¿«~=ך¶IFmמקסSw‏§װS JסVאqg–{ש–¥©OI÷'ֳV׳R¡שֽ§א®±“‏‚‏›O»װ׳‏Mo0¬zio+d‘:9ˆטuw†ךCׁ®W`n1·5lֳםך₪jו|¼רq…ײ)ַצ?|ףדv|ןימ־קz״ƒז»f¿ֽקו6h¾ק®O°N&ץcnּֽױ[$.BRרMr (u¾YNZנֽs¢¾Y1¶`;ֻ₪כשּda1ֶ G ¯חדFMײ־…WלRז*—……½«¡״«hך¯:€ִpl© ÷ e.*qׂ0q$ד(}›xX‹4qדֵD-Lˆ —£¡ ¼ַ¦tױבM{‚N†ֵ90נַ !¹W;ןצ‚ƒ‰פVא׀.ם®*#¨X@¨xעfPN6.8`gPZnzֱ±AJ=jק§ץ_נ÷ֲ6ג9ל׃¬‹ ¸5נב:<6¿ךB†N!ֶGױטז{ױַDג“+@ְֿחנORנ'xYִ ֶ¶פµךx —UֶֻUT™YפTW£§זכױSֿחךִ תˆ§›µָש·x48z¸¬80ר (¥ֻּװֲּצT—c×§ֶ5cH r6 [÷ֱ קס>‎ƒg»EW­P׃יכי^ץסג—_טכ?}ס³¿תתַ_תג/~י¦¬•x7(׳ש#˜ֱֽ£=Dֿ¨<"'מlos–°)`E¾÷ה]י!&GןY™×ddEך6ׂyZe9Dשֲ*וֲh״3צiּ˜˜ˆmb"ֿפa‹Mָ1FPMםג°§V Nס¯_ •ˆ†ץjp`¥Npnמ›ׁ;ױ9¸1ע@KBHsטro(U¢Z—-_r…ּ–e|צזםit¾[׀E›ַlק=־Gפ-L_‚־ ¦ֹlo›U³oe—ֵנ&ו)ny{פ־ׁש=ח3׳בµi“w}TLXL U"אX´׃°Uרָ9ז8^:‹g[גיXE´sq€Vָבz£#¦צLmV׃>ז־  ]Azרw״ן‚O$o{סZ ÷³-‰s9“NL°ֵ"«sג–2 ¹x=ֿ 6›K>©%bˆס-ָ{ƒcO ֳק`¡×2;‘‰ֳFE¢םט:PVxױֹ¢aי£ֽנ»־€aקvר₪‎ ׃ֱק7“ממ~°·3­יc.ִ[נײRיCxסמGS¬W_חY$ֲB3¼ !ל<) eצמy‰T×צּ P =טƒ ´‎ֿל₪חzס־{3›'‎m(:נs׀[f {<׃$˜<½\אFW kת›h‡]³Pױ¢×"MX© ה 1Nְoֻ׳ׁ³ל 0/¡ֻTV,(הY4‹=Ut UV”£"W ea]s·.1{Dd·GדCכֵ“7ןםן¦;&wףהGןו₪n}קקvg½³ףtחw›+ץױזF}ד·¿»‏4‎נ‚÷ דg»\ך¢%³בף ״m$ַ×>ֲֻ־7°ֲ}‏”˜גp׀Aׂf״°¸k-ֳסy׳¼'יּװ%l 9‏½¶ Z ~dNׁדD½ק־j2fmײRNµ^אSׁ}T+¾ TְקsfQ)kDֵ5qג@ׂ—c׳aµ־יבK½ײבטְBה₪;Bדpצל>9pst5ׁ=ח& ם8cˆ םb$ֲ‚חtM־Dgֳכ¼ֿ».ָus¼#קhׁ©§¢Lו¦wµֳW«¨ָפ³“9ׁ׀3כ» @OIק®ב?c³<וc[׃‰ֱ iָTֻ׃ֲרהנ&c`Xא÷±czLyYֿu@spP¸(ײ¹ּk·|t™#8ע'e׳8ףֳ(VQװ³rfX€Qוײ”¸•ּ¨גן_ י.ֶpXך€c¬ֳָgֲ‰i׃ µlU~®4Eק!צזאE×tחsepה¨2|8s*/»ד*ִ»#° z¬׳‚1]÷צֱE¢ׁ־ׂ?_ב|ו ּזָFj£®( ——³ס°Jף‹Gר/ֵ:~ֽcbֳ׃4b *fײָ¼ר £קt­ְ]ּl K`)]cׂף§;ֹ׸in0ֹZ„>גQ‏#ט©0uוו-Q₪A¡כs”Qוz²yֿױֶ¾w×i„י(י#% ׀Jױ₪… ²ֹ׃8 Qֽ#;fx²ֶjF^RAƒe#«ךˆC©-•M¯²·ׁץ%¿זׂˆ©2ל¾´²°®e־sI†ֳˆ7₪ֵ38ֱִ¾e% ¾ד;\±8\R“Y›צNc}}\ה₪¹.–ָ¿‏mG*דֶע©¯nB0A’Bp–ƒ:hד)1;¨{ ÷£;O?yפho³G)8פ’jכֶ­״ֶqצס — b=n`ZE½GK°‡ kV¸ע#<w ",י‡ֽVx¡ 5 כ`‹©§>sm¹ ´&+SSr‏רyrf~נ a+הְפװo¶¡ ‹],!^°J5־K»BיO”l/דRצׁ6ך‡9¬¯®²µ¸#7 o7`ְ|<#3גa¥¾µ¾R)9FX_Yk₪KT_­7·ײV¶ X״lז 1ג ֿEFװkצ־כֵGד,0q/ֿםtT-ף(עּi´N-׳״;^®÷|÷—h^(SD7רר×rגײ¼Yu¥5ה״µ0«zJq‏₪÷„h„ֳִhֱ4-6פ(’* F ת‚·¿¢צEחֶKu˜¹³₪PU.ס’¡‏¹_#±…•םיֳS“B¨@`‏ֱLתמ›¯ץּˆoBCg¼«F‘@hx]²µ£ל’ֱַC‚µ¡סyz)<`4™ƒ%#D$ֱ¦ע¸ע´?·”ƒ¦¦״@ת¢ֲNSj‘-W% ש[y„™‰₪`%!¸dltb‚­d~.ּˆצ-NAQkR+‏M˜×¨לְ™Nµ¢¼<₪HJ<םבOר¢Sֻ!״j?-²םXID‚Q>¾‰SƒQE;S•רa·Xv«E׀=ׁ־Kֹ8 ןp«ּ-־*®«*3ַbR‡\’mH₪˜›/¢ֹפ!“¸רַU†¿ ™zTַK¸”–«T#z5חI@ַ\‘’o{I•ׂµ†1‰’®½¢´l{דt)זכך®_--P=׳נe‎{6©%u"J¶†2p+>Oֽ_0‚³7[yYd{ף‡½™`c®™#לח&…=…E3gO·B‹'ּ×ן‹¨ƒ™ס׃¯ךכO_|שג—י~‏ץ_גכלT] בײָ4I¾vמR¼@#·3?V״ח£@¯רNB¹חז-r|…’-cב¬¯56 ‚`3׳ְ©÷ס¬ Qר״wt¬ּv›­‚[האֱ„[ׂq‏ Cכ5בֳe!_2¿תL²=p÷$´¼פ‚ׂ¢6¡b!L¯ן|¸סָףWE]I¯ֶֶב’׃סjD¢¾ה ¨[־5%xf4Bֳ ֶח¥ֶ,ִNׂG¥$ˆ6=‚%תEm½}4פZ½כA‘₪H[ֿ’ֲuQן™¨‎ק])ט9¨xH!ֲJ¾¡]Uִַ÷'`eהSַPtךױ -בַ÷ּ)לtyֲ•=P™N Sכֽ#Phז<‘’#ש ח¸ֶװ+¨OOQ«ְ1°.ּן`®¸¬3h3?xלׁ‏ֱ®[£ מH l09Wֻ!ו0מ*¸Lֻ>ֲ ›U\תF`VC˜>ת7טט#ׁNמaַׁײy(:E'†&כְלּ fe QCK.€ׂ¿%¢lפ‘ףgJ.€5).Sב"x₪fW,£×…¼H:•ƒ³ ך&½¢«]iSsXר&l‎-„“¨£\ַ˜¦€iןבֻתVsכuֲW›ץ•µM4ZVKֱ¢JװS״³¢Dֻ†•ח¨”bד5םK„!«ד¿ױתU8z½s%<5J׀Zװ]"כˆכ[k¯Y€כאµRp»₪¹c׀•9´nv„e₪mS];Pטֿ±םJtU0HEnיc—ֹ׳0 •_!םSa•ֲQ‏=ֶpM׀LבֲQ¯oTַ¾nוײll lּ´7ספbQB ¶ֻ^®Qִ„ְ!0,¿ץoW‏ט~– ₪ƒC›ײ¸sVֻ" j׳:2Q`h×ֽQכsּ'uנןƒ›ךק¢ױ¯ׁY>A8!9״ "aחִׂc‹ִ4ׂקm³1ֳ’ג₪½S_ Jט /9־'“K´Z‎5ײ&g`ֵXR×ִiV2K_¡¼fy־\ ׀J¥׳€י–=׳ֵ³א¶V7aYף]<«uתuׂ_Qתם›.aXּה‎£5rS¨U\לab‘KO2ּ‎Idmײ±BXIc‘~"װפ]pea₪ֱֻz:…,@—™ ¸vׂe˜‡`¥$ „װC]zP¢ףעׂcֶ rq \'wauס־mUrm‚"+r¡–U™׀zֳִ T0•ֱdFbG׳‏#„0[ַּPT;Uh_™Tc–יhy­,ֿr¦c[^»מ;k¸¢M ָf”†טiֱi4Jש‚\ח¥5EElֵpOצ?9x׳¥ֳL-ֵl ¥X/T,±‹{^זFR¸9‰U¢Vױ<י„סי‹gCװ7dƒey<‚,‡uר־װy…¾FxK2›&״€i©$~~l´פ׳רx§ך~% N©ט«’v-:>חפnֳתִˆ˜;pSGקS‰טJְLת¢ƒ©ש#ַה¿1לדK¾³±²dװ®„ֲSb½«ְ8F¶XYtֻ•…|zבגG—ל5‡ֿ Er,ַˆ$ƒשV.Gג‹• R“™$p²Kקױם¬~C~ןגU×’¸e3™€#+ ”p/ט־ׁ¥_ִ´°µ ®ק@ֱb2אׁg;…>ז;״l!]Sb˜] ֽGןLxאu‏¡Jװx M—8 o‡ײֱ-HפA(.j•Z­Vש‎ֲjָ<כi£!C\„!ף¥ֲטH־eב,e oְ¿ֵE–גDכ.)·ֿ'A׃¯¸†ם0ֲ²F¡k¼ :hְ5ךwp3+,jױ—׀עTעס'יֿ¥3סּZ—#Y®A©f7 «~sR¹כWs [9Kְ–נ=C¨תTyֶײ·<—ך|3´N–…eפ«יVׁ÷¢F­ךF1ש­ ׳ףָ[*<. yֳ+‡p9 ^“†VEC ּ¨ש_!ֽץµץu´ƒף«ֹטxs¶ׂB‏ֽw*0g¼¥€…™%ֻ(sֽ¬«bElQ"P•7׳XE;…¬ױעךv®ֱֲwPּא¶גwל_ ר=6µע˜t-9t!€ƒO~¸{°קG»O×f¡6Q}ײ"tV½*ֱ‡/ƒvר¡23ֿa2÷״ײ®ם¢L€.'ט´ד¾”״:zעפ[ל„d›;/[4*ׂnָˆkנ¥™NצSָטָs6•k¨כb ´״`ֽ0פטה™d³\¿₪צ ´1EJ–Hלuֹ<™ֲ¥ױ~כםִ >h3tֱׁ†*עֵh":ָHל«מ‡;Zֵ׀Vד.הJ.;uמfHֽaס©V?½¥״{px tX“´C]ƒS9Tוֲָ!AI¸ B~§„\†ן!HYם÷÷ך*Qץ¨²Vlֹ«Eץֹ%YIה<ˆד viןc[uתz=cVֳ)xuת ֱHC4₪ָUg\ָ·ץֶWֵלj¹›ק5QמU/'×·&Q.כ¾ֿעFבֿ׳…¯ה6•Bt.Qhר•S³Dַ×סR‰ֶ—L§,׃‹mq‚3´ ָ÷ ֹ8<;8¬בGב¹ז‡ץץ­תֶj½¾ױhײ7¶¶66™¦U¯ו0hצ oממ~4.Y\¥dּPש®ה°:ׁ›©\¡%‰ ּ4€K,D­­*wr .‚ֽן€gc% ~4|־6[7R)6‚t₪ˆֿlWֵy“W³(ױ״-9GHך8יצ©ˆcX³L£םj•ס— ]¯q6זִi¥רVמ.ֿ°כׂ£S©U^ה l:v»סkזQ§FtµָHƒ´sפnQ•ק…9c$EF׳Oנ#•S¦´µֲ¡ׁ—ל¸=f—»ֳ}װ{רG—–÷6"KM†µם2ײ‚ּkִ!J='qTֹ~‚ע³aױ‘4vDכ«&7rגֲ ֶֹ›‎E°n§ֻRׁH!ך£Gבן#VU¸PTr c’‚•»¬$±¨6v׀־8u ‚ƒ %צ2‘קL׀ח˜†D;&K9—X<ְ1(ו¢פלמ/¼ר$½£*ע—7=98H¿¿h~זכ ¶w¸s¸·הםתֿ‎µת¨‘°ׁrרןהיz{ IOֿ`כq"4?™/3ײ4R·D~©–2™£¢†eֱ°±}ֽ¯ֱד=Rb† AIU/4¼#Kדׂץ1ץ±ןuֱּשּC€–ײֽm10¯ו״&ח:X a[\‡w•xֹ&‡h™ ;7|ְˆ½¬פ\%gqו,,y9©:¼מ|ן·$נ¨Fwפׂ4־ִJ‹SCכב%»|ֻ÷ Qyƒ‚“®OQR¢ ¨V÷Q— E~sֱQקזG‹³zָ÷ָיFcƒj€ֽ—¸¼ VUסn >´]ױnץ- ז²׳~±€HX2לm~%|ת‹lעK§”<ה ט׳וY ׀x״[ ›Wן3‹ץ0שֽבו,כ¦²‰–ּ ק|c®ֻ…Vf7ײ _fלִׂ,טֽככJjתpֲZ£—`$r*‎)˜ַטK,²„¿±¾Fgo¡וז­—H§סOW?%­וֲױ™F@ֵ8+ֽr״N!־[‡צ€:גבף3'iX₪vµV`סךװƒ¢Pm¬ִךהַ½0r0¦T™ וBo8…׃‎ 0ּ'§»«°cs]˜’ר‘mSrgQ³׳זPvׁn» דZNl¿£C©)|`^נZּIת½pSְv‘¿u,ק÷׀W§Pמ;³ק†ןxלֿL6’Z7©G÷M¯ֲ$dRֳeט›–ˆאRU+´Q÷(לh י€N±&׃A,cµח˜s:\‎"@‏¢ ךקZ9<††ׂ4T”´xROחִֿוּ@—H2™ ₪‰H„וכעM¦¬Vד¸ױPZא€ץ¹ֱUPxU!x vֿ‹¼j¥"ה;D½ƒL₪¢6± wPפ₪ײG£+ַ%ױא«_~ץ³¯~תױ¯~‎~‎cELו|× םˆ א;קI,™ײַ'_%p n^‡{(ֱ™¸ִָX—א צ3÷‰S¡ש‰ּגEDao·W+‹ׂ[PKµ6(צף<§ו„$D&"נG}יׁW³Zn½rr?`0@‘Hף&עZ0® ‚`װXGֱִt.–‏|GF7סRzi´_Z×סx©¹ )ֹlOˆ¹cƒ‚ט|—uֿE]ֽןUB’jUc<`ץ€)yƒַ"fW ¼װk וg÷‡‚«€µםKפ“tו×ָֽAתײְ(·¡צ>₪¹¹­5ˆֻ!)lS״מ״xU|±ח‹ח¥0שwSװ’״‹I./¥‹”cך;²< ¿"I\‡]©bXף£$±Vr» 4p²פע~רrQEֻמBAּ¦ִ*ַ4ƒ9²o¡(¥…סWָa׳M(ףְַױ׳±‎e¬׳ep©{בu~ iְHKjrפ4YRְ3¨ָµ;׀3IתתJ×*ץZ־}y¶| W#¯׃ֳכֹֻ>c|aײ¼… @ ½׃X£¡J÷Us[ֻ‘‎I^Vמ3ƒ|­w¶.הµ• ¿ױ=(כ,}-בY ׂ÷ ׃tֽ¿¾³חט¹>ה4r›pַ¾סv÷¬ױע™חֽֽ­ֶ»›+ֽfsu­¹‏ֶ]‘€־ ¯נo4ֱ׀x>*g3זEדם¿2I`CֲֽׁQ'g¡i©Bkoך&O@ץ«!ֶ¬kכMy¸w q“)&פ~²ָ>—שVdHe״z׳ ׂגy£{דםז«¯׀½¸ףִ-בL÷Wםד‹×F¦=¸÷:נק כב7soK#ײ=X’|זE§ag}ֵֵ¦©F9מ…דנ“˜[7t ֵvפ ¿ ›…G¢„ …¾ד?¢Q,ןם?g¥>›״n ‎¾מ©l~ּM9ְ±EfגNן™מץ6מ45³ֵPwu>-¶_¶ֹU¡yךץL£‹ `׳:P•־ה¸± rG¡׀ ד-טץֲּֽ2גLףU{LW°פ ·„6ײ ¥¨¿ׁ•I÷x­Yּ›«%oםk#ױEיֳ*ד®₪€’dװ6[“ױMי³™חbmAר\)©¸Q0 קVm ױµ7נכ¶ƒן/_לֵ¯^‎׳סכO¿‏ֵ^׀¸wױֹהַ‹•G ְ kדz°9nTDgX½UZ¨Q`‚f˜=–qם¦¾Inב†)»ת־¼qך.ֻH!miח[שv׳±ךקקׂa©O״ַא9½¸|ס £_—/‏מכ¿|ס³©f¸jׂבc#.׃~zm†E­ז D[`V–Bה‚=Hn«ֳ .m&¬ֶQs?ַ־•}'ה>·י$י3™&)¶ָzGֲק₪ cכג₪ֶ}Q}וx„5T÷« &ׁאN ײF“i4l*₪DdsKz׀׀£ָײ&ֱ_m₪T…Y)H€×¯ח X~n¥¢´ּ¸K…=ק3 דOחR־ֻr!/(EmחpVv‚zײ9„׳tׁמֻ­₪ 9p94¡ -מ ˜q;>£הױ{Xג«´& x  ֿס!wYץmFq¹½(י;פ׃ּ;†ג}8™…I¡Q»g;,^°ֿ‚´=ּ"NnK¾ױֻr׳’÷זג½%דלHפ˜ת[i†סZN ‹4ׁTh~׃Lµ£E)ֿוri¸P$o?„ ×'2ּש,xrhqb~Rװ Jע;EֶX—0ײ:Zv>¥ךְ›ך  d¡¡ײֳב²»…%¡q@«³©#טח»¡¥„{נg;ױ K÷ףֿ…O@³\j•tCIבל?M°§uא÷@ֶן>˜fך·wמ=yvPy´ףdחיnַ…¯צ3|S2Kךַvfרףצ:ֱִ¸‚•j‰ץֶ]€ˆסרLִ(הv­µRM%>Kֻ1ױ־ƒ ¨סֻ) .עU ₪)"ֲא²6«•1©צ;$,(v¡®gxַjז”ס®ץzKכ«8ֵע•¢n†P·x”>ְ״x6Gִh`y«…CֹגֱןGִ¶€¶‹Pƒפף־‘5±| ץp`‚£דin@״)קTOC‏“ֶ:׃c:lטְ ַ©t"@„¿u@ִֻ d,€נfצfִE&¸vF¦ˆ ב-^׀‡8C¥א|®ְi‹PױF)p`₪wFvE´$¨"¨q«ׂ* O@גG.'KVחהזלƒֲ4#?¡6OH)m·פW©ֿx¨ָq=…¶׀ky…=A± יU`־%¥>I :«דת·…ײ™(£!בגe‡5¨\׀fֶ¼v9ׂבsZ©ֹ”gָׁ..|ץIֲ·jRנֵm°ו\f9;6Wֹת&,₪qˆ…4‡Wֲ6י}הצבq±ךui@ת˜ג »2ia7)׳2§|“ 6‚5ֻ»¬ץF£s´»ום׳'¿ךr®VA]/·8ףXX%!ֳ±I+ֻ2^ֻµmf/ֿ₪3¢sO!U!g&ֿ¸—נ׃‡ ט–R²½א/7W , ֻr|ּ;ֳG/ ¯z‚ 4[½Iחֵ¦ֳ¦¬nˆ¼ה»„[£]ֲב«.ל™‎;ƒפָ…ף“‏¹?‘;#׀gתק§ַ 5±׳´÷g‡`vtפ?ֳ5Bapo†˜/­[|›‚dX‏11 ¥™קx,Pֹ®m€®Y¨ֵ8 f©J•c@#ָ—חֹ” g.ס'נ^¾E5„זzW¹¡װֵ־58נM׳daoחR˜””Acׁ„Oן™Iױת‘^תֽ,ׁ¦¥E*ם¨‡׀akµ–˜>¢¥±ˆ¼”[‚4e’ לpעםּן›וt¸…®ר^Q'„ ±ר~°i·f}e²‘9G¿wnuB¼­mp„ ”¥ּn\”כ8l¬Jz©נVXeeו·ˆI7¶ ר" ¼P¨ֲפ׀qs"*׀}הֳ5n['^AUM™ֻ~µµֽ(2ֹצuמRoא€“׃ˆן,ַ›¼ָyƒVaר ש6;‚{›Vׁחq N+:›+¶‰ה–'<ןב©ְb•%as+׀„`I({ז“?ׂך8^€»Lסאgּiµ·¶S‎¸±O·גc€¡Mג׃AFֿB[ך¨X$¢ ס״A¦ןװWא[*•Wd0H‡4$£L ^“ }%טwֶ2‡Tש ˜]z×ֲQMxזQ 8qײחCק³צF¹n€´+7´,נ•<׳€[ִ־ץּ›ּש‏‚jסּ€ֲ‎Q¢9ָ.״מW¬´Dh|r:Vu…*—}mm-ֽH'€ם*E!¬C¦esyƒcמק† ¼>ב,ף¦ׁsgL ןveT׀e₪vk"Xfֽ־ץ]p¸ע¦³יR@kִד”חA°sd]x׃#†w‹Q״״1t‘™®“P§ך oר÷ 4=¶ע׳zמWG¡₪xE™ָ^ֱיֽ³'¢דrW!L%cןz³a.±N„µיj82Qג †•@m~ עu״?¢(w[‚, t["wcט*tvgֵ-װMֵש4f¦‡#uGׁ}.]{DTX{@o‘׀V:ֻ›u¡²Pֿgײ®”÷}w×דד†8±ו;רםG&¿שײ>tƒhׂ½א‘½‰ט^10J>sַµ(ָKעNcceLu«TC ¹›:6]'ֵַ41¶›J‎ֽת¶ְ=9(gJE®U…ֱJC([Z. Mc0.#Y"¸«J),–8ְ­(i3ץ†-נIיh¬ףP]½פ³U­ג>9++*־o}ר²²T_™%I‎f}3<¨d}.—יס…7›ְעװ+o»ע¯bxװ Vtם5®hH<’Vװֽ"ד ׃¯hדu®h@lVפ¨‏EFװ§^ֿ­׳¸!ב[XN !/2p<ץ’®¿ֶ% ָ¿%-Zפi´ש4$ Z2.%ט½׃.טכװ¡א\׀’AןrA_§€†˜טִ— zכ”«ש:ץgפ Vף5@מ¦]ֿ׳yֵ 2q=±tqPק©Wףµ !ְZ2יK₪ zכ´ֻש=₪תf t¸ֳui צiפ5:סץתf µtR¢|†½uוlװ_דr66»‰W•¸ AןvAW .hסלחֶ₪‡›P ְ³qDRIמ„§#Hp —%vZ­h˜¯d•>”׃=U²1Kn‏pƒ E!ן¹uײ&{=R°j»גb*ל}°דׁׁץ°=°u'7׳ןי ¸ֽ°¥1z‹‹עיAױb{‰Xֻ•¿1NKU«ִjU~wחpoֹ־ד¿yצtwחYe‎·w|oחיקp2!״¡₪ֳ,ק¸ְְ0$bוhל¶}jn§Ax²´]ƒ´|eהמ|ֱ·ׂO‘כ g׀r™1!–RmsֽIׂ#זZֽ ·/%·Vio½·ֶ_b¶Qה¨ ּ+װ׃¬‡‹¢ֲַׂvF₪U+·¶אx,»T;sה© ©ֿ(#hVˆ׀s†׃ 5…J«°צ\[!¾צ¨G2[‎…׳T1ױvE'¡£x&,ױf÷TaN`y'§ן"‚ִ‏27€“ףe’ה>}X*׃1׳5ˆק®׀°¢sj/ƒטv6ךדיvתp%Cn« ץן¯‚*!7&ֱ\W7÷…Uג‘¨·I½י›¿שפ‚‏xזׁ#³ס9l<ֶS‘)ט£h¢[Kׁ‡ך I,q ׃©n±ז“—^±³׃~ֻק~¸½‎'‡{;nU³z/v[ˆש‡2[טcF®\,׀A©’is ֻ„@`Sץgx@ֶtּO‎צA(Zצ' ½p7ו·|^on¬¿[oײ׳W[כ¦ק»ֽ­{>›aםE4ֳA&כzֳ!Oˆ©‚מ"tL5נ2t”FמƒG¬§÷s¿ְ$׃ס~¯ˆ§ר׃׃ףzpˆMנּl¼,uv§zY– iׁ6רֳ ¶£w2ה*!‏׃E$;‚Iu&Fa¬ֵ›‎¿תפ«רץ_}ץ«pq״X¡תGQײ=_ׁׁ!– W¾·ה µ!ֲyp[ֶ 7aXFֶ €\E´'NK:kֳ…Sאב׀ן«א`״?™ײ\/„@ִ·D°ײַs± Jµ\s)ׁ ®$®וYp<„4$ -ףגhָט2ןQƒֲ"b·‘i0—›¯אֻbן–,n§N2¯k@ֶx°ב…V[‡ְo,0>s„ ¸ֵֽ wRכFPCfן‚נב~זpw[¶¢®׃ֶ$װ}_[~ל÷ױfאֿ#‡LzPַ×ְ°י.•ד2Q$Qסאסˆb“"‰‰]=ם[T‡ַLטyדױ‘Z_+V I½Ax My>5:¾א;JX¡A­ד¶״•³ ׳ה˜¥½‚Cs™;”עטB1u#N-"%(¯6ט‎…lּװ־HM‹‘*&¡››D"ָ‘פvלמ<א“ו¢ׂ¡־V—8¶K<צ±קx_®!קךׂe]ֹש›ֻo=ֻ½µe+ְdsC˜»ע3מ: כG9ֻ>שר0ַ[6ד‘מ ;o¼]¯׳8{מ<IחlSתַֽEָץ׀bƒֶm ךx>›uֳ:ץƒ–U´‚Llֱ!yעזש6]>װ״‡R=6oCֳ•¾’C†x&F׳‡£Vװ3a«!¶° )׀?ׂcֻ‚ל1 ֲ6מoש¥%{ ]b`¨ 'kע׀TOה\©¦¨1GOָּׁhlnו״ץoְ(`9RBµQZVq‘uֱֻ2B‹HNBשHq &הTMף¸z׀9ֲ:FmVy״QְfU¥5ִl3•ס˜¡[©=zq־²÷½6::דeֳ2'¶x:&7"~ a+‰ק §גc׳ּ×¥¶3³Sµ"hvzu@ש“ךw:µ©זצUױ(­«cץְֹׁ§¾¿ >^$8 ·ױ׳ֳ—»יוֿ‹:b¬¡…ץD“¡I§נMן׀t<+“(׳׳כףּ#r¨yׂ¸½1sISZ½עhֹב׃‎ל>=״yּ~×j „V_>`טƒהG?ק\™Pף `שPח;׀כ‡0›שנ‹כֳFl$ש YKֵ¢srחu©†ש² ןפyDtu7~(®ָ»÷l«Sָזyo,ֿ-]±ןoa™N †x‰;נn”Hֿ6a]ׁ2ק{׀"dj”µtֱ#(m³*טiHSy‚P'‡‚zpוRUHְ»Iu*r4טzC±!׀ֽ ע/&«nר­eײtחנ׀ֽצ>6¾=÷lדYײWך£gOwקמ=h¦kץ”m_°חQ±-… עbפִֻ 1no5)¢ׂ·ַ°<ׁ‹אּ|‘}r°פ3ןwלm[a+k(0א)oְQ•'N!,ב"NW€oֿC¨ֱֶ'.²?£יiנמ6zֵ*eM}km­pAKcR§¬•M8€I‹IW#r–ת׀‎|ִ39««:µ§?ך[ב¹³P‰M'°ףֿvfU 9מ 8 ;טf8÷%\ ›d;*ׁ¾(ֱ¦3ׂ#;0טu& Bck5F ‡-®­¾ֱ­״*˜…G;תBַp ­כu³-״jֲבvַואן°ג£y¯ ױ*}§±1&״ִ™«v/כaנל״¨¿„„&ץB¨7@Cיׁ`ׁ¬ֻ£gK¦bףִֽCB•¹„j±ׁ @ 8^Q‡״NHW`ֵרF‹¥ִ”®•›yװ9a7›0י± ג£ז¢מ\ײ“b9J_ˆ]s%Pˆs׃#ֿ6ֶO¹'׃צ< Z´®ִׂשU×[װ[oS­‏ם¨I¯(ׂ5ױU%¦_ֶ¦§.6Mˆל¼2ֱb¬e(Yk›±םM§®כ+9¡ƒ}—®ש!ƒ׀הSwלl½T'ק•-·הֿkL¬KE¾ ׃7«נ{©·0m־4§sׂ:Zs³י‡m³²ֵ(זeֱֲ# D¡טצM&ךב‹$~רb j [-::ףנYF—kˆ€5o€+{„×¼י™`ׂע¬1¨M=‰&d ױ™)kֽGח™­¼§†Qֿ6?חך´­2־ט²ֱ( P¯­AH-ות27k‘%ׁ§$?ֽ^…×G€5ֱ:„bדִֹ>cץגZ¯ ַf{&cײמC־Qנו®קUp(Q1¼־(†¿K²O)§pOT»U˜Sס7ah%װן K.ׂmF†„ֳUכk[”mאhט€"[pֱי\°‹ג°¸‡-WיE…{6sמ0צUע-ִ†¼&הל‏&…ֿׂ›M5ׁ׃mnp#K¾ֶװ9˜ך k½^ h÷( (÷ַ1ֳ=­8,±e§¶¹ H©פz^.6Pל®q¯®):l›R"ֲB°א¸Qמבעj3W©j]`˜¼הN=2־פˆ²E¥ֽ5ִ(w®ֱ[ן T4LֱqrRPnJ]ֹ_¹+וִyצי„הDBח–_וf"rדצ1 כ$ז¦¬ּ|R¨ ³¾¾§נ‚‚tL 2'®:%[8a E³‹¢N[ֿ/¾¾²נNג<ח₪ף¬y‡t3/{Aנ¡ *ֽ†E ++uc({a€± ( KײF!ן.}¾Aרָ •}ו¥ֽ:`¥ֿ: ֻ³ֶ(/JwְJ?ױ!-ִ¶׀¿,ש¦ i™VצlCZ…ׁl;PWךC₪•>ד€.\₪½÷TלTמz•=ח¶Vt–PXת‎ׂ׀«Y‡µ³‚Yc­חײ¿h} ־FsB4£³NQֻ¹QTNt¦ךׂ}ִ#ִ‎q+›‹…ן„י¶¾ֱ‰~ /e־םֿAKנ¥.C%דZ b ,’ ח ‹€ֱקהANBַ^~\F5]dn₪2{lb{VLְץ cfק׀tj$1– װ× ±· 0´נX z ֵ-הx)YGtµָעC´¿4nֱֲ.*—C״N«·l9חdb^°°’ִמ‡…T°י‚K׃hgX€׃^€׃q‏XL‘IJZs›־״9›₪‏Qy÷+,נTצƒֲv־gˆֲZdˆ±ל’ם±ע¿ִ9‡“KsXׂ`׃½¡;ֻ!י‚²g”ׂ3מ”©±CCeֿ8( ¸.ֹZ<ֻ9@ˆש¥GQ#״ז˜µֶ­ח…XdU0nּ~ֽ\כ†_”ךתK]dF†Lu/yהMsֲAmֱ«ְ¢›אטל„a¦!»#¦£÷K -;5(„A› ׳R‡׀@X–טgzֱ״B·-˜/@y£±K³Qֱ?Gבi®¬טש-Pp`¶R;O*>&“מ־¡4/}פ'³­Vב÷`ֵ5Gµג–—D6V!qף‹…¨4|%¸›‚—יצO«biHֿ*ױJ *׳D“ַvDHw)„ח^"D÷Y`d,›_׀ִRL|Vו&€Zרב0bׁivVGXיz…•…Dֶ¼]™»IֵנWX×rM©tױ׃כnׂh•;|o©†Xwֵ;Tַּ¿naׁ\BתׁK q(ulַH1€{«ע1בdl€ׁםּ³y©`m+‹זnZ8כ׳`׃" ©_˜i׳‡{¬-,ן})ְ°kb×ע2gx:‘ ָc{‎½g¼קI¨ƒׂ·Iiװ$F¨cת µvQ–Mת»‡ֲס¸Tm¦׃0P *ֳtדQףֵ׳ׁ˜ֶ¾©זֽc”t]J•q l‏‚ ¶!ױ^&T}iֶf*%±4^9²6ׁ—£p«t·S¾ Vgֲֹ:יטn‚$ֱֽ/7‰÷e9י:jץfcPnב5—_ƒכ›O^¦€ֽMLװַ״ֵL¬•פ®ֹYש\‚’ֽ•qPסµנ\@»Mr”'“‘ ד!¬½…urL¨TZמַg‰.₪כO…¸×י3 ›£ן=תנ8¶W€”-A£בlTּ¼#D~I ץt>¢-cSֳa‰Z8"!¬BVק‏בף₪ Uךƒ‡פ¸בfפ&״‡ד₪5!דYwbֻTּ צֽכJ²K‹hשז›¶»ט5טס.µ£“|Yֳ׃epׁx¥‎$תִ #—n¿w‏]–€6+l/`Gpי s`;ֱv{C ׳נf´<‰Lµֲ¦$פ$Jr€&§ֲ»מ₪Gm¹ץ÷ֻתq_=ל¥6„9qbµg5v[0ת₪·Raך«>S*iֹkל’¡¦bב3ֹט<נF #-TZ 9ן™ױ‏צ£פ <2%mK}“ׂװ"r-°9h9Cװֶsענ‹µµְ&‚¦ך$™£‏=”­›8t 1ב!3Uַפm\pl¡מ^ח .lGT7±3QMֱט׃²חש ‚Pppא¨1T)‚»wֶ¹Vִֵל׃‎´ {״=.5±G!MDך^¯T¹ם±±שֶץױZ=7†÷ּ½ּ‰®/₪Ou>™dtm½DַפMֱֲW"‏8AE×÷³פaש;^_עx°.ַIֱ¸*q¹u*`´‹׀>״.ֲSM9B +|P+zdLsE®4/4]5לµ8W0ˆכח`}’bo`J‹»ֱ‎gr§^D@7ײץM“Qך—_‎ץW¿Jף׃¯‏מ«תץ |}«a¬~™ן²e+6 >½"(4¥”zםֱRד‏חי…קyz)}Aכ\~ְש״€Fם־1‎ם <¹I˜משֳE÷½°†xֹ"ֹ‎sK‹>…ג:kµK‡{8גVֽ¥dײ²¼שֲד8(49‰Hץ פ»ץf…‡‎EjBµQf¶ו'‡A7¶tS תח3¯v“Xֹפwֽ›k׀נֳ{A÷.0»{j5׃ֵ(^}kuc™;s*.׃>‎"‘ֿL4סˆTYֿ×>cחP2מ{ceek¹X·"s#¯װy¿…„ײ7פֽ¶ְנ,KQ³ ¾1ֹynRs₪חjI‰6P¬§*F·1;TI״³®כ\ֱtא—־גֶ¨ֽי,”8V±ו¦ „´עֻ®6ה»±װךDHYׁbֶֻt§כ־“';ןםTvק~°Sל}E“8מ|’©1הּCR…«שו‰הV\9ֳ״ךְי„s-f6€SQ¸ַׁT„G¦=‏©ֻ O0•Dn¥Kלד&c\§׃lּֿ‹9CGN¢©›ף;Rq]I¹°;¦ֶ™ׂשTַ~µ?מZ%דנrW¼‚w«כש@Mu₪ֲS«NG¹e׳$´i<`ֿ]4_B‏e‏ƒֽ‰טf|'‎…qb' –h°ְ¾C|ש¯€»qל״—«mˆש·”°¸‚ף¼ָ’=„ְo~{דָ%21·Tם1Gֻ›Sקפ ¡&¥j פ0בj¦{ך§.VS™אC;(k׀iױD.ו´ngr£C״r°«מ…]µ.ˆn:FהמsA׳sד¥ת‘ם²פקֹ — “DIװ×bwד¨{ט¯²ט¹®E^ˆlךכxoaoװtnbֵ{ֶt‘“2M1ה”2 nK¼ ײףt׃ָ״Q@;״–ס0‰{‏ְw Fn+¨?†sk[-†W°u‰.®f[gא÷wאש¼ugנ־˜ . iqײַר@"J=&xשYh‰`ֱ2>÷rֿiT;׳!7$@Sֽp3§•ֲׁׂד5”`BחMz¹ה¡4׳››©ֽ¿e#w$ֻUF;sX0ֶ¨׀9Dzd˜J‘×J¢B!l§Oַmֳm0p¢ Bַ`װ &ר8אa9ֶײפ]@Su רY¡¸ T~נ\ך;צL/s‘#^ײ¦7<ֲ±T קב7ן€‚ײ8»n§5צ I%ֻ¯#&ױo»%J°בGrָ¶‘»°cזCzE¸ֱד¨4›{ן)+¦?K¬ץ,¡cמ@½—¹ת³p”ּ÷ֱֵƒ] )—ֶץ†ou!4dX׃.–H‡ou!Bd¶c1QNד–Y¸fװה(ר ף ּ:‏®סׁנYז€ou!¬k“s³ּG0כ™aּB`סג׀O¹¬sou!L‡ְא66%³,־<ƒ~J˜ֱ ˜kmIy³״*ד a•O s1m rֲI³°V+´:גƒ×vr[%4]rּ׀Yfֶ!K³ן‚C;"ױ1 ƒם¬Z­¹Qpקe.רצYח°÷ֲָfחאוֿa>8’Yח³¶x[Fאgֱ<ְC-k8‚Yח±¾¨zp\1טSנם³־ac=נ¦9K°ז&'…5רסֽU«q”YM—g»|´u,ט ֲ§ֲjֳִר*1׃UCׁS.D"Pb]ƒ€¥*‘&\ 6\i—©,|¢JCF"₪ז®1|ֽRnֱ—N‡\ֵ7ם²)`הU¹ף(ֳ(`¢א}M²p£÷9ת“26¨ה˜H~™²T’[ל^צ(X÷{iֹת®בס}פX״ֿ;«).´e|-ה-}ƒֶ`2˜ §vU{צJJ4!³״בװ@ֻֿ±@רכֶדtw˜0P Ip÷ם]םƒ<$> 4‚WP.בt'¡fןפכry¯8ֲv¦זsׂ’‏ֶ״-ּ ּ0u&±}ָB׳+ר!s‎QֵֽH~²F*ם]+¯ulN]rO(ל¡נ2’J7Gע1{סyגf¢C¦7*»S÷˜—‹Z´€ף»O+P·‰Cq0—k.ם±oGפ™e˜rˆֳ7†s;DֵGVQ×ִI׳ש‚Si…¦אQgr₪#½1Z98­—O ש÷<ׁ׀“)@s7( װ +¬’ֳMז½ֹ†P:ּF׳…¨>&r\ׂ2ז0״‚\vר´ IךZ6*ף¹c!"&ZPB© $‚¨!ץ±2ר«SֹקZ†X'sױ qvב‹=…_ר‰z~ גק…%ֽ¯sֿgiiszמs6ד.ְֵN§Cק«6!nך6$’P”5ה‘92¾·'=׃$?iiG=WׂP‏ֱQ:ֲל¼ַ€&!«0t¦0tט³\תyעװ´₪ואײ€÷ְֿNaצmגׂk8ּ„ָ69U1ּhyb]u0zD?>@­zJ¦‘¡ ב²¢H²¨T³ƒ¦ ‎}רװ.ˆ™נ0ׂp  ֲ״/S:h•ׁv4K‚ֱִ®°ךJט~’ל¦maלo>‎·.u™ S ,÷׃־סp1!ו<uBְח 6T‚MqֱpשׁDגBװ ן-Z1a†kץQO)ˆxרעשכBDו>ױֵװ%2H¾ר2‡0/¸ 7ףת49~ר2a’of6‰‰q’‚ˆr¯qq‡6$#bqjכפבH•f.(‰—*Qm Q•ְS¦¢¢(””F%"@Pט¸ג.\‏דoׂ³ס¦”ּױ]†ו½B5ˆ6t¸b '0½¨ׁ¦1¨HֲR¾£ִˆX'ָ;3¸!ֳ¿װf 5•-‹W}‏\5E¨©&םQ˜@¾­'ט©׳‘¸7= ;{y טl©״ז<ה)/א¨¬³0q#ת¢ב–/ ­°„¢ױ%י6ְ>|פ>`f¾¥נ· Qגiש¸bךˆ‡÷c4הJc׳ט8’…#*‡½)ײל:q81qfֳ¿ֽכ^JKײmv%•Mךk7׃ְ(בg7p†ב³–§ׁנ " ּת״F#[ײרFס‚¼Zל”ה׃ײ|נ׋KlCˆH¬p¯7?@rr"¡5]Qמפֽֽ|­«ֹׁ“@ֹ´sֹBּ»וה₪›+¸£¬6|ֵc(?דC]v!µv63–‘¬6גאO a‡°H‎™~£־ ױRe‚co”IMKW¡B{‏7Iת³xנֳ';S$¦I‚לF°cCפ¿ z‡x,:¦D‡–0“ֽ¿ל¹G±עCבa־‏¹ל•X}דםֳƒ)׳`µxכ‚X…ֽ—a1\—ׂ6p˜Z4g<-B!הcצזף..םת+=ƒ”פ±¼²װB«װxחּ gמ>O3t[„חֹ4ח9Th װ}°µlײ®b“vym₪ז˜4i43J±´I׀zן‰i¹²$[°C­ErcI…Fv]Gֵצמ›lI¬-{װƒPESנ‡sZװןא‹g.?N(כ¶ֵֹ«–$#9ןו½ת–³°S€2…א ‎@!עַ°D€KL·k µd›ֻ™;‘״twַ‎Y×®IGµf=ר´1 6@¡ֿ‰l˜:—w †יcַƒ©0ז‎˜BPצbּ‎ בT†q\Vפ¹©עWo,˜xֽ7»c•·– ™“P­n­¹wזבA•“וˆֿ)÷XB0}ח_’|¥^•shnx Usx 6°ױZ- M ר¹ז…cYb1ק­ ,‎ז׃®oBJָ-Y8Mzָ f{‘8וׁ-=ַLפ§9n§Y+˜¡o¬xUJX§‡‹2—ז´·D;|ֵAׂנ¶%M׃ח2¼)3ֽ·ee”ס=17f•״«¸a‡₪ ֵSװס״²ֳז’10D®d}§װˆ´/ןY%k(=ֹ¾;5~†ק¦ְg¼6ון@Q3ֳM\R¢,RˆEf~ֻ‚%ƒנםX£LeAgֱ…¢)–[׳¹½„£€0ֲּ‏צ/­׳·&#k««”EF‚׀ˆ™ַl׀Pױe\כugL€¼´ׂ±€קֳr8 >יY×”°כ÷J:„פ=Aג#P–Aֽ‎¸T84;<‎א“?J׳‎I¸(¯₪kkKֵ¿r|‘¼x‏ץ_~‎י‹¿ת/_כ}‎ד¿רUנ˜ײV׃3¹\+״€~mױ˜@ז¯ךn·bצ‹־»sd׀ֿ+–L¨‘ו5›צNU¨e†IpN' ™*(OP7‰SuiauBהמp `ײ¹ֳµ©S~Up‎U‚1סw—J‚—ˆs÷פ°Aeה\‘UO4t|ַ½ƒ—umlXְs=|‰־R±Mסלס צlA¦b־WטמֱnKl£-ס·נ¢.§עqƒY·BרSױזJcֻ VFץ¹kסusk¡c V¨@\¥vhBYJ6.Vװ"‰לP‚|‏ֻjוױ§‎ }*`!@x‎T ֶ„-;“›w׀f‏*´2¢pּfCלn^±סd׳{a¥2-X8ד—עZ חRCזצ³}m’‚+ַפI~­×ֲ#יְ/₪5ָׂ־"#י‎/¢%ׂ˜~װ³p·O~3~גֹ‏ב®}״‡Oךl*™¿¼שטס־ֱAת‎‎Cף³‏ײ›צw׃םם:ק*v­>jמ‘ׁ·ֽ¿“§mu‡x:×:(£srצטsִר״Aƒ\18‘6N¨”C˜  ¦‡¯ֶ"Z9,,= h±£׀oש3¶¿pן49h¬oBײֽ¬BIהTAן][7@fַ:™ם" nLqo”XyםAײ“×±²F-Nֹ׃6ץeu׀ ֱךZֹ{ׂו®‏כ²זZNK—אמ:7ְZֱeם¬3ַG©{ Wg ®־ֶׂנזµױF¾¬ֽG(¼ֹכ³ר₪¥=ֽ2Z½i· xˆPm,­ףH9-w7ײ6§cv¡¼¾N!o^[ֽ װfה7peO·^‰'½¹²₪׀ה‰"{cp“j9` וִָG•›א€ּ–²8M‹ׁ ½סv½Y[ֻֽ]`iֽס²׃ל־aq°|1ֹמoל²AwYIn-± -F]23ֹ„nG‡טANµ4(§J3׀¶ׁ—5 |m|£ֱUָ¬[ס׃אa‰ˆ“£Q™צת\›l¯lֳ©$VJ‹}¼ײ ÷y0}'[HN'קEk]¾³כס…f6ְצIׁ,עsF x—+„’‚כ ֽו‏¯8?×Zֲ דO*׃e6g¼¸wYץK®OXwE^ֿ ׁTLhZ%÷Cֶ%U8ױ Nfֹ_ל.jז–¸¾z$ִח‹aƒ—‎—ק/®C/G­©|¿¾6)ח¿XcYub¡¦C]j¨טIuUֱ?-V¥@½¶3\¬BYo®¿סצ¶b¦V ·'ln„ה˜ז®¬h¹ֵh £ˆ–i Xֻ„‏ְֱ“‏ֳ3ֵׁSAא בin9/תך?¿ּסנַ½F¸={p״תֿF„_›”ˆFת;“ר¡ ץ‰Yז“i8^‏‎«¿zץירױ_½¼ץ§¦¨f„כ‡'פ¿Y-´FX'4׀7’פבˆ"5!ִƒײ~ג)hֻך-’t״dBj"ףט&װYב9G#HדBm׃¸*}5< Xצ:4½{†…ֽ=S₪q¨u =%ַװ£aUQS¶muב₪R]M²X¡ ´יY5€ֿ%צ7@—§ Z[ש†¢×`d(&To ק›O/דג,½ƒ)Xײ/b7H˜¹ח׀­ˆuVZ´2ר­ E€גכ¨ײe@l~˜…ֽG8HZ‰$<¹tל«¿שֻzײPvl×kk׀ְה”×i@˜¡״פ¬˜;×E‰©ּ(‚·נב x׀Uת kx״ֿ‎‡-7Y ƒ-ק¯¡־ Kּ]Uה—¯€duƒֳ)ZִIY5iKˆבs¼AjIiQC@t‘J[£Eתdf}ז׳’|B9װ}4WֽU¬“ֱקeךC38¡ֹ3¿M7>¬ u¿wY?…+6¬adֶ«G: זנ–?ַ¼J Xא©i—‰ײ״†¦אd†²V[L'“׳…׃R±A³°‡/+ֿ#ֹ)r&wmBרן!ְ‰¸µ1H¶.*״~l lO^2ץ ¦&„×¥„¢Dד/ץ'Klˆ…‏}#K]ׁ  ֽp#.Uֽ565מ%»₪װ#Oִֵׂg·כ@&(t~a›5y-&X½’?' qֿ©•†׃ƒ»§"l*“״ׁ¼¯ז‘{ױ~ױHֿ@’׀ׂוף /¯!ףs…''p–§׀ײ!דHת ך¥‡mלַL˜†c’9otת~¡Y&boֵ]c"&‏“*5 2x<%£s®gnfj‎ij{‎טו‎ֻtם®eׁןdׁ¼˜V[«["p5'ֵׂ©¥aִfה”״±Ly€ֻכ"]‡׃“sט ם2<² ן,•Srf=ְ¯(ֲ-;]½B×¾93IP§L@¦־I6jּ¦=ױEF¼ח¼yֽBא{sג־מׂו “(„ך&L זBג4Dך«»ל’Iֲׁƒ½T#[jֿz^hַָ¢S†N‘‏}ֱA!וJ·ְd€ֹ3`מ²¢ׁ-רp‚\÷ד×&.ר2£ O¢9לZ]\,ע6H\HL§MwֱqIxט ÷ְט פcּ´S÷n=2\װׂWqן"·xת‹1¼׀.-˜‚ֱY‡t"H™״ֲ hg~aּ‡חֵֻ־$׃£“wםו(xIFX» ÷א· 0ת"³=ב¨·p¨ +†•בyכ24¿ױ±ח`"1P{]%¶+KU5ֱה7>ת¯~"/—!ץָ|%\b׃j:םPױבֳּ¦(K]bj½{Aד£א ("‏ןK÷–† ‡K÷I¢ס“¢G«N\ֵקKY XUֹrP3¼@™K„‘¬מ˜ְ& pץסל ¬}m¶l¢ֽu¨׳!ˆּL¿Zlַ¼tTֱ!ו•$yk2ֲוr4¿JהצOּ8#‹N־,-W!s]VIs^¡=n4 ³“׀ֻי€1”<כBץqs©… Aֹs¨D‡HHץe¹s ®[SץmְKqp½qיon ֶ›cM9Wפ›C M׀ף«¹U–3n /נלTִ°}Vֱֿ-fxֵµף~[^ִe†®₪ Z 1KN4/ח~gֲ =g =e•†*ב’B´תֲןֶJ׃™vװLֹ tָ=Wf˜ ף₪X'#qn<מf#6}מ•gP„™‹iC„׀k']hq½Kֽauנ8¢׳q5p•Hּ%ׁ4(ל}KlSמ9LףTƒ.}-W´¹R_mnװ7x»כ³ץסc$lס־xש÷g–‏ַּ¬˜yj÷‰h#ֽBמח2ֳfg¸Vֲֿ§ם•חד¼[‹ג„•ˆךd|k9ƒM]H{ג‰Sׂ₪›§yqRִו`°_•¯ד¨ּc†s$ׂxֽ{°#Uףם¦Wֿe†nֶQAח÷pתM¨ַ£#¥x„{ֹ6hץ"חָ_־ָz˜‎¼ה°b±¬“­פsױ›e0*¿¾“6™}¹״Qֳ\KSװבׁµ3F¬a״הvh«¢ ©9T©u4¥¸ֲטגT•R~ׂ- ½R¥i¥׃זךvיM•  T?ֶ jֹ¢e¢ף ¶¬$ֶה'¾…·ֹ¹‘‰Vy9ץ¢ע}8EfײgVע®ָֽ€צ€פ]¿So”‎×jפֵ­÷…<“Rˆvמ±›Pkד5D•ׂU­8&!$ֳִָ¹°×|N[b_2('ח1{ע,חכגAo‚n¬׃1”;&}־=j·Zֻ±± yן˜ְ/=\"c0q°׃448Bi1p”€&wk£t i[oמ^`gו©>ףח»sֳ׳x«ֲ÷חoUx);¶IFvnN‰0wm N¾£:ןˆב–#‘Fב/}ֶHױ>Sת’©³1 R[צט׆¿ֻB©'ש׃ֿV3  D;]^ד-PX·¾ױ\Y©¯l»«1»ׁ\°ןµec©­W¯Pj¿[€®N3Vף3׀ּ¿wQD` W+~₪פק+p ִ(;נs†¬`§vפה.uSShE’ְ7‡m־­ך=‚ ™~ƒH›"ח‰ֻ‎AgZשuׁ´RךX::×ZO5 >=mnxƒkoZ|uyֵ¸-o-n&¯7„zUד₪ֽ0qֿptKx­³W©p³}¯קL¥‹"4¼…x§‰1+\ֲַgש×­¥Fבֹֿסעq[נ!ך*!kטֲ“i!`{¸¶ּ!xl‰!ׁ´S¬»ם ֳך־צ`ס¹׳•aׂR!¹}כmMb!ק½נ…„G\•ז@·…ׁy/-›צV¶‡`ף¶ײM­ִ_ֶ<ֶK´•״²€[״¨nzב²ץֹ:ֱֶ€« •w{שץ<“Cd.כ“p#£3–&q†BJ₪?ƒvחױ ‎סoHיסo¯yxi% וz ז{¥׀¼'ֶ י Zפַ₪HS¨CztדCקa :zHֿ7µ#ןכ/Wו±‹(…ץzxK‰b…Yֻ·טP´¯}·ך׀Mס”.ּ@·װִr3U³צ±!«h°FדkV¿³<0חץ®H‡2ֲM³כ7{ƒףה¾×ױצ¸»`m‹׀’4,‰סJMF„Q›jEנ³JˆֵV'Zֽ;£K׀½'¦±>9ִֵג¨’Z…†¦¹ץH}GU›Q/R}mCטה´MOךy(Hך,iNq ק´42t0®ֽאפ4¥C:bzU´G‎(†.ƒ£ƒ²²רִֽ¶½ײהמ₪WGz‡<;pךq×ם”>ֲז?«וץׂ-¾ת“—?­¼ת³Wתעo]Suy’b%¾ j™‡ֿ“cSOם ®€׀ֻ¶e©¹ZkgsפK!H§פ”*5–Kן™0†¿µ,µץצ›¦$÷Zx‡?Qvcו€‚`ֽ0ך¦…§I8ֹטֿ²ֱ4§־µq=ת>•ֵ§´#ח‹ח:g«/_ +י]_HV'[¦±ְ0^V8ˆך´ִ‘״י¦“‡פעo¦)'ִןVF₪‘gװ~P5 q¶i|~• ֻףP×VOםiֵ‚ lֹ=פֹ_ױv<‚+T4״ֳ> ”ב«ָס &(—¾r™¡_vhLUuִ·P“zEDַCd$־c£ֱמ»/¶אטאLהׂבgBM¨‹I#W#ִףֻ¯אשטַ<½2½PA•ׂ#]X6,ץP‡?cM9wtךע¦?P*¢–ָ׀e>cbfµ.ן&T8+«״1‹NA;ײת‰8••p:—2חַי?״›¾GA2‡ׁ²2ׂj)•®)ֻנZh\ֵ,–פqNCױL²c†gַc °„~µQ¨ִSװ«djZףעלג _ֱףo$ַ>.#ן€¡²ר§× 0חy)”קזt>kֱ:t״½‚ְE.ׂ P]ױֵ)~ ­״Gג³תD ¥tTY×o­6 k1׃דuֲ¡kZ<תK'§¨¹צa%jב"@M*2Qƒנ› ֿ"PL4$N$ה[6‹4 װ;(‰ֲ³ֱ¢u$‹E“×T^שש¼*אֱ7W/גTרPֽ…x~´o±‰?>?X]‰‚£\שB\₪puחֱpג2qsnסo]p„aש{לˆ+t -Hhװ_ֹ ₪§X÷ KZmנfµ¨י°Lִּד R\J" emA¢O׀–ƒק²§&×™(¼d:†¢Z¥h ¡צט‚<מ­VTֿ7'טy d2'§ֱך'µGFy)c2zב~>קכ“~@R¸mk0תE9eנ׃‡6˜¯ֲ]aP—ד ןV‏נ£ַ zז‡µֶתJsse½¾X\_[x#;גP„†שׂ›{‡»&8W@qWQ¹×2װ¹¼+י‰÷–ו’¶[Fֵ›L׀הך״=Hע‡½@K ³*ֱ3§Dג .ףk' ¶½ףָt ¾‏“§שUmּנם/ֶױI„²ךדƒ&¯÷ƒ_ָ °z˜ג–„1ּֿw,כ<~•_ֱׂ°‘M¨ג—I(6א tכבK }₪™y»<”u“y+2p†א{Dא־H}Izl…״°¿»³y¢OD£‘$H)›§טRםֶ%מ:•(צ¹j=$_¢9ִ־‏^יר¾½״ca²–ך -=˜’‹ז'7‹Aל7א ׁ\Pנ~«°½Iט÷=ֲaך¾³כu$¥÷<·"ֵ£פ¢א‘CֳX`ך€בׂ‘[¼־ע@WT˜¨ W^ֽqim•]€¨§˜@־e'§M¬J Dp£צ ˆ5ְ±\r5־.Aֻ‘v±ֹ°¶ֶS„קˆֽ§’€o-¢ךs’ײ0+T—Df׃­rך‘'%A r9ץy›(ְֱOחְ‰ <©€ן9ֵe^®U¸ֵ®cHjץ׀י ¶נU P ¢ֲ 7 qDQ״9H–7Sׁ""ֽ/ 4ְ¿ְA¼¡ ¡ַ¾װˆjA˜4<ׁ#¹&Aמ…Vt‰׃‰µ’₪P ֿ³ -‏ }]ֲQ¦י,ח׃o$= ƒֳלA/¦ _‏ם«?ץַ/‡¯*/יױ_יUױUל ְ_8©(p¨ «w”Pש\zCןzB[ְ'{ˆ7rzציSֿHXַ€ ˆ˜U¶Cה"פ Kןt[vz%:«רת-,ױg!7Qמj־´³­br®ד5m¸,}Q׳׳6׳ײ±4£¿×Aח˜ײֶo²י¬‹P•‰»(²oVM״iֱ₪ֵ{נLַ‏ …5(c"!ֳ¹cS'÷(JKצזַ3”Q²i?Bס¨ a¦¯I^c.ך־h³½V«¹וםךצ]¸E¯ג6`_#&¯ֿfƒJך­‹µ ·ֽa"]•תfuee¥,ִV]T’D(xDOָּױ)[O±ם@טYל|פׁFזי÷=«×¼Fד£2me»7ט״“‎ Yrץ¨×*ןo†‡{־@9ף³Aס–-µַֹ[L'"¡'½FQP¶ֱX§"ק6.Wy7V+«ץזi™¯¼©m ֱׂ†·ױ׀²…g¼G´W”©ֻZJ¨ֿ/G^Yָ¨‹l¹–ֵ±8`=‡SהDR-זhט’¥ׂק‡טקrֻ₪\`„z4¸־“ƒf‘€ֲ6‡to*n @לQתXnf× §4‚*ִV1טּׂ®†ב{ְסב¾׳oX1Eq˜n¢³° ֶ1א דM<ֹL\KAJןW₪®‹­e¾°ˆ%ױ§=זע›#xfה÷@M“÷¡ט”pd†מJחn«’י«ֵ¥¶›pּ/%˜gף"ְ–pB¡U”‹ •ֲ_xu‹»'P(6ְֿ‏mַIּ@„1¢³D³₪¥b}=הַb‰ף«°qpוr'·‹RS¥ְW LֱWּ§ץ¡Q›ַװ$SpfQ66‚ױ;פ‏ס ‹“HzU&Hֳׁנ¶"ײ°fo¬yT–®wׁA5…‎au¬6ט%ֿ•™V2@u8$­¼ן+״m&חרpגד]»₪Cנסqך·˜‏ִע–¡צ}'B d.¡ ַ½¦6‡₪ֳ€ןg a“n_צ¶¹±ה:+׳1b,ˆֲ;ְׂtw´לׁh{ַZ{¼ GUֽ®ג¸×X&–z>I{f=;±$QA&ִֶ´V«[v«ץ×ם/¼עַׁ/›חֹּ—ֲdpJ;NֱZF37% Hֵxn>»ש4ך"‎Oֵרד¿.זk”®ת¡YJ8–fE’ ~¼sp@a1+?kֹLa$XAֳT״2… N£K4*“ו$2¿RT€Lk`ךlד­ֲ-K±=¼d.F£Iּ C› +{i„ ·Qֳ#k›TָJi»‎ױֽOi$j‰חLךD¡†#´yעַפ׫ƒו0pװ^ִt׳ֶUףֻ ©לףz˜t:Oףִ₪ֱ.(,!ל›ִGiE#י^ֵ÷qB[ 7rtר&MnPנr ךאֱׁ³ַׁBg›8Wחמ×'×—ׁ‡9ֳv©גO»ֲֹ/¶©ױ¶Iײ©ֹ₪xװמD—¥¡…)+“‏כo>שח–£·<¿ִ§ק“ט2>»§pr/'VןT“¡5Kְ …ױּׁ{)ֿd)K״ך¢t8ׂ ” '£Pןv÷ס®ץ\ײDף>ן@B€5A Oז•d—‚ד×76r&«^ £P¢ֹe¹·Kױ­ש&„&’‡¼\)N~׳e‏ƒֲץeuֻeI6Kװ77*RH±פS—¼׃]ן]£ˆ`ר‏9b…¼צ¡²Uֳ%f^t¾רֹףג׃/~עגY}3Wד.pL½ עI:ט‘g]©ְִת˜«½ָ©+ׂ%®÷Q!!8כ&,׀x¦"mֳ½ץr®‹,~6ּb$®ֵµ"׀](|»9Fד«ס©x€ˆ‡…¸־K/–‰בְZ|†X־ַס7 }q@­י(³כ˜0{‰>£,†Si*LאKBֲ¢˜את<‚²XµץOLqֲ¯·|­ֳ .Uךי‚QQׂע!²bHi&{§R×ײ«ױbU i4ֹ‏~bhjIKk²…nCֽ[D-ױ’q8›״Z—צ‘ W¥ׂ4j}@fלJ»f~R–װ|²צ™כ€‡)MעDT*כ…שZ₪2ך÷(!½Dט¬ Kn$>F.o׀k#דֱS±װש¡נ±ˆגs(ױ-"yױl ‹ֿT=ז%L‎Ebַׂױ¢צTFק‡T¦/#¾;עןװ:Q50!®ץלlY4ֳָ›וU~–}€M¶nײqj¦Cֲ‡9I \³ed8‏’q†nbxX…×[ֶׂZ¦ע*@(ַ?׃¹²§Tc’£`ך—Eץזjg×)׃$o1"¶\«ײkq17תױ•OD‹A†n8±־¦`×=B;l“¥G}©…¥ְ7‘2(/¾eאֱת¸´פתנHo°|¨m<-א#H–}&k dµֲ ׂ/0Wְv|ױUנ†1!µְMµתxװE`V”/“e<>‹‡ַG"ףx°%?ו™ dw†שq¶c …yק[ֳגx1פf/¥P-ױS®l£ֶ¶²ת^j5 3₪•mLװZײ? 8| ¡i׳ [ֻ÷NױZַ4…D€כ„­eS¥װ„ֽG„mוQ»ְֲ tקn¥–V¹N’°4³ [rֳeG{i‡ך-©S>> 5k—ֿe<װ…5Xx׳’ ]ץ¯¡O­pE;Pjכo˜gץT†l{“jˆ\„ ֻ¶ג״RVע% ׀Gx:זmp…g—#.Y¡׀®3ַ₪כגַI¶עsY׀•*Xxt^ת•*Q¶4x°¥¯1¾ ג˜Zט¢קַ₪pwvL#צGIqי½ֱ“ּ¨ך’mL~”R¢¦₪&f¶ֶ©mְׂ©׳[ˆQ,6ֹץ}–”‹°IֶQ8ׁ&–d9‘י¾lMַd.<חֵ“Xׁg002ֻ½”E:םSE•³ Xק׀e13 ‰<³H#.¶|›ג-+©—¶¶ך[µrס־כ/ֿ«:‹k.7#“2 …ה¬ְ?†eֵ4ו‰ן¾0%H?£¿£”ץ&ָֻl¼B‚?₪נ©&ָ=ל†ױjס-ֱ(ו’¦ixr`שBkLׁ¶1¯Q) {„gyd׃Vמ/Ryi$ףb}1ו=׀Nִ;FY–¦(ieD¥ׁנ&C†ˆֵU§אװ Lִ‰L₪¹™{xq P±)<|‰E½tqּ™ֹ«³קXh+ײf¿z7־¹b %]/׃א½‡O¶7dp ֿ¼N`e]זֳ ‰‰[י+(ש`פֲ[`גa)TװL¿Wױֿס"צB>`Iזֲ»fחX:5³%#AדKX©²¦ֿ`u בױ,@Kעh4ָ“}–€dDTGA’8b{Cױ®‎מ‏צן¿·ְG‏ִ{¥;ר-‏‎ײ“ם‡;Eג‎O<<אY‹€ַ~¸¿‎לׁאא/ׁkwש˜קoם>ֵ/>xםN!_d_pקֳGג©F¡V–_>}ר(¾cJשJ|ַo¡ף„ ¯נֽ®Hנ£ַ»O‏£ר"‰'³אנ‎‎ƒ{ֵO±TֲֵלרSc«‏ֽ7‹o~ף[ו¯׳ףסֳ;װ־ב`קֹ³ַ;ע»ƒG{?|ם־N|½+¿»״>{ת½םwֱד£—ֿ?÷ &¦5ײZ₪Tׂ‰פ¢6¹ֳEY¦ּ~A,ײ0(OMל)H):[S³tFֱ½Dו‏״׀‚¦^ֵNֲִ¢b7ת%tv&ם$נ¶xJ@73דs—פזs€,ֶq¡ֿ°».vֻ[ ©‎ ֻצג³”N{`ל סזsq?װ’E)»¢ײ%nGˆy##ד$¹1‘®!גב-oֽˆa³ה׀±HLV‚©פh»pךבֳ`´o!דµ÷ײ8¬¢0†­¹¨=ױqְ3u־°j/8\ת˜´כקמXNִף‹¥„ַ`טu.‹†Mweַ%—¾¾ֹgt<˜b%ָQׂJdר…ֻ©’ֱײn¡µYzOz?ײz"^J™ֱft±¿ִa»cא³„₪µֹ\#כ¾‎ם­Mׁ3לליZ ®y­u|3¾ְO‎'ְ¯s®ײ`}`חֿ¬Eֿ%ײbֲֶכ…עֽF#€gun8z‡,ז m¸דֿ>f׃»gF‏9«+Xˆ3—וU[פמyׁCjEֲֿr ֶ®¿¶טף£בrך)‹¼·}¶ƒחYc₪€ױ¬©חm®={+FjX־’‎ֽײ¢o¯³mlm•­ףjַ`Qנ6[«¾=ף«ֶ–5 µaא“WYפםy¶ץ‚וm4Yַד\-zצ½³ֻ›“ס0ִ.ןף|·¶,¹Tˆט םi¶}{זֹ¥†ומע \O<¢oֿ³-4 ;ױ_›=ֿµ״°Vuh³§Zפםy¶[UkBM{­E~g[*T,ירל>o[›¾=ֿ¶hֻ‘1סׂ\-zצ<׳’=‡ך@ֲ¥·¹Zפלy®e[u(nַ^uz›=ֿ·b{׳"ײֿזkׁ»חשVmu[™xחi¦‎ziֽV³=ףֽ¡,zצ<׳÷½ז vײ\-zצ<׳†­ױK4ן[·S\®—¯F£לתv½z¥ˆ‚»ַ©װe»גLvק¼ְ׳3kסHֳּוֳיֳt{כ†nALFָ³Y@¼cE/‏‏ֵ¯_עֵ¯¾ר¿zס?^ּ+™r¯‰–_א-zOֻ•״…—­w׃ל‏ָל~¾[ף•+ֵ;ִaש¹rƒקp°ףרסמOLR¶ט{­aH,"יC(s®1¬€Xה8ַ?‏ג'_ק/‏ףתן/~ו“s״ַ „ו«<ׁף׃½ֳ‎ט{‡O‹²ִרeףֱדםƒƒר½½Cסקצײזƒֳםֳ½§¯כ42ףkצ¨P*זKֶV­s+·¨Kqqף9X1&ˆpכ NXJKֲ‚<ךTvףKVvx ֹֻ!¾VWb§A%˜§מ־‹PַZןH„1ֳkײt?KQ‡s Ez״½הך/V¼ח¯:/>‹/ֶ_סWײ¨rµµײ~V®€›t@e¼צu¬z÷“²÷–«eY§­Rזֵֿג­רy¼ץֵַף׳ַ±אע«›”ֵ‰!{!‹ִr­ Gרl¾‚°½±,›E¥»[¥j1^ײ}ס7סנ׳/‏/~ֻ•+o‘¯׳-²ˆ-׳j$¿u¢£5Fז–· ·¾9µj¼9סֶˆ«תןג&9ץֶlqײB£8ִ׃d§מ“2Z0LD=ם{¼ףpwןי}4Gא‏‰WםַהNN ֶ¯o ol+6H§' o÷$ׂ/˜‏°'E6€E4~|9‎6³–..03ת¼=ִ‰חזyNts»@'@PFz״ֶ(0נ¥ּTֵfק©xf§ ³E€ט™־@=¿/§CNzR׳ף¦-"~ 6i־¡ָחף¿‎סשqS†2nˆצ@עֹ»A:0›/06h$ש _˜y"|‚טVה±KUְ׀T-Q‹ֶ¿©>R½±²½‚9…ר/o?xtצKְF>´%Oז@®— yM^E£Jמ~כץ‏ֹ¥q&‘P4שM&)v²/«m¸”ח ׳¯iַGp‚§·!s₪n9“o1×ץ±.-˜–ּמxn±´oW*M ‘ױT|ֶ[4נ¥Aּ־ \^BLtik~Pt “נBָ|¡¦4qTץo®aךm¹ז]`s₪ױ¾L0¢ֿ₪½……LZx¥ץֱP@]"×ם§×™¨pצ@mX>¹f¬‹Hָ „ח¶3Hמא ,טֲט¯הֻ3. ¦xƒ!#T'±°]F’|`zֲiq"-:^‎‹¿x%¾b]x…¯n~n~*¦qףֻכesr¡0MMiַ(±ֱXֵ$<'דxKC¼ְדsW)הנ` דךי¨ע} ™HrlS9DכtP¬±•ֶ`₪nיE˜\ֶ‎F2בפזsn%רI µX>:ףc’÷…%‰+–₪X¶&ױפֱe»{p O*תֱ¦^ָ צ ה‰1זR‹‹dk2ל‚(×ֻsYM׳¿‚¼EO™‘Y ,םnּ×—-*Z•‰©B¸ְֽg1[½ji1c]:ז G¶†y@i¾mז‡’¶¼ך5–e:וi¡x4WA€ג’°ב]נ—7¥¯cHIbַ0 .£YדדG”hְ0׳¨ך1SQ|¡ַ'÷‹2B¨oP“ױ־¢™€<·›‡xDװf¡m .ס1jq‚ך…¶ױƒe ‰Z©¶"U$˜ׂ-h²יBˆ$‰םH…°{B,װµR?יח\D±‹÷תP‘´‰C‹ֵ* <d‚\ָׂ1K¦ף (׃‎of¿‡D«÷X¯#×ֳg™ֶװ³¯ƒך0¦_f׃א“!µ bת§עO׳?‏תבZר«f£R1cF—1etqֿ6a†²¥|NU!¦ׁdל¡ױךUJֱiO© t#/s"›µ6דƒ|§‎bƒtג}0]ֻb ]Tּ$א,tS´'…0ן‰±5ו²mPֽ°J*yUUzכ״RַY.q‎ָׂק QנQלR£₪^ tSI‡C’@?{ָ„!UT&ֻY<©7ג¿"e˜v!gױ P°^,>9q'7BPv?”‡ג.רf*„ש”p‹©R¥Jנ“b¨כ„e ֶ¶> ט ֱiT[ּ^w=גUה™eWa·א+\M(ƒ•ָqְ˜%K©¬Hz);‹–ׂ~$e’€A;M@qׂLפ¾¸£U˜¸Xn-פ¢:ֿXח*­Tְ‡®ָפ0^lZ¬…א0H„´.±»ׂkיו׳£…ח דr 0IG$"|d€‰JֵַֻU2¥א>ן>›dשL L K"ןnֶR¹¼mCsY”uhׁ.(i׳†yּ`y¸ֶ^…6¢“י¹ – e)ה zִ}׳צ t¼‏עצ[i*¾ו ³PK¥Mְ(t…ײ§–§ֶmׁ!|'f¡•ר€©„±hG¸ן₪;ױסD˜\„)»\₪x¾ןמ$אJ¬׀,0ָ ‡׀i„Yֶ'.rXׂ<²t†ה˜נ¥ץְnֵֽ %¾;&}©‹ב1r“ lj Wֲ9SNֵ&`¨־d¿®5}wחיבמ{סיוA¦%÷ K€k‚PTˆ6;µכ#ִ–ִ"s6ֹ­ש”{+₪ז~L~n•¯#-I‚ז׃ֳֻאpב4½q»ײl׃,cאצ׀*׃ֵ<1x–¿₪˜>­ ,3ך ִֻֿץiכ«uvי?B÷ײWOכvםֽטrS¬P‎!8Zׁ%>5h¬׳I^® :› §”? ׃ב₪דכֻoֶ÷ג“ q„M¼7»ױ]P!cC?ֲv4P`ע1g ­30x`מ$ˆ^ןְה(‚^QX קdחH$nע„,wעָ‏‹נ±r₪@‰ל/y–\ס%4]B0ּeׁעלkֻYzD 5,"°5( ֹ¬W9ˆו‡&״Gךר ‚/P€״|ד3%6 Nrֵrװ װצN׳«V(ױ‏כ’+€סשW;‹¥d@סֱנSׂbqˆ½4ט™ !Lג$ ¨I@A\=E}צZפא€4‚ֹקXל6׳R—*oDˆ¦„ף!^™p™ק‡`¡sֹx ו;F_ֿ\׃ם‰)^z`רב׳“טֳ5%£P½סׂJ9f¥¥B9ז¥¥j*/`‰9J¹0/הCא€ױֻ)$zl־H¬÷ ֻ״“[Sב£ֽj©סH¢נֻv6rֹנִ¶ץ6Q`יEֿyזֻפq׀dl׃ח0~!ֲ‰gU;ַk,‡6—ןטּ¶¿‎ס¹ֶ0¶b9e’&¹&†].Ryy˜¹3M3K¡÷ּעֻיO5GFכֿTJׂL“ב(]\ּבלd’‹1Am“{„3³4לCמ-הC#<½‰¢H"aP%WlUק·%±¸I˜n!_?@ #d¡!:װז.’\Lzָ9 רֹ ¥ט<–n'm¢+K|'rת־‘Z0[­ֳ¦Uׁd–#³״BH’€©d+6¡–RE,’Z¥ ב…jת8¶zֳtY’2 j¢JלQ$‡HNץN־x;"@=ּFְ™ˆֻ·yv^¡tָnuI3n¢ֶ¥J-]ִ˜fֲֻ8V©”j¥r­XyכX²eh€)Rרֽֿ×Y/iװYziA¸µ—¼“¦׀5E)†w^/§¦,KNG'xˆc‹^q׃׃–פ<ֿהMI«ֲi}7q†7;;ִ”ְ?v6¹סb‎Sְ±¸>ְֿ÷ת™% t¯חQטkJָ׃QCע˜0א(C[rµ׃ #lP+}Eו¯_`×כ ƒ—C“@{ׂ"”d†וגו₪¸R¬AEחײ¶ָ¶ֹװKLlq_±<ƒם‘² ּ5Q³¬eU?E>ׁ“ֳ¥¹v.}™±רB&T¶ְtv1KJֹ בךJ^׃Wא¾ׁ¥¸J®°׃מי© ¸¹ Gץ»ּ[¡M$Vµ¯מ™…`8 ּxrVׂ$H0®…ה״4ן‘|ׁ²x“$ ƒֹ «¾3₪|"£y…ֻֿ×e‹v״’pֱ°¿cטֵ;*™ Cm©ג:dlˆBjc¢””~fJ{KY€$‡LV+cפ5h=רHיָ‰פֱ@˜SN;LXY*¼׳&•plT4•־–ִVװ ’†² )/oU:טֶׂ*€·y-ש$µ4]¼ˆr1ד:ֽT~A¶r¹«j¶!¯’N… Jֶנקבצׂץ•ד ת@µg2ְ¶‰÷™תf…ר!ן.ףc<׀´†*₪ּLג»u‹£±ח€„xגצ²³±ck”¡¡wַ*gJk»Nק›א8‚%]IKY׀K- ¯ֳֵ6׃רקוe.˜GsC{Tֱ+ז)~1ֳד•ִ=׳·m ‰8×qֶS‡{‰yHגKֶarע54pם S«”ֻהY)§a@4Dָr! ץf„.¸=[ ֿױ B°ת~e¨ׁ÷Hץתzתi‹µ|€ְ§Aן]׃@`}›סe״×jֱ]פכ!ֹ5Ji«‰l ֹ…v® צuPת_¼‡EIh 6ש¶nP‰ַQח‏גDיµ›")tWֱט*e4c"H‏w¥IR)I×ּm¾‘4‏†ז¼תv¹„•מ0¦Ty“ז ׃¦|_®]˜S«˜3d¼ׂU;פ₪2!טjק½T¨6*5א"[v־x¬16—׳X»K ¼Y3¼¼†מ³כ+ַ״! ³vז,ה׀ײֱ3ז[ֵfYrA±ֱge¦Y«0Tq‎Y יjרR~o±ע;x1׀x ן(״¥״ם‘ײKlַֿט>Lwֱ;k•ֿ±ײ„w°T״ ױ©K&´×$=d]2Y|®»?#³5tvFg™A°z״µּRJQׂא.¶´§ֵ»{ֲ±ֹ‏»x§¶€ \R²c’CsBתלד™1}ik,fBµrW¹”"µt¡+ַXF·¡¨“ ®ֻJ?‰‹ׂ†Yב°pxנlחסc k¡³…¢?:הy'ד K™›u.ּsֻ¯4ףI4·ש#ֶ8ן÷33Rׁk\˜״/XֽZ×ֽGט כ „#°ׂW©׳ֻלכ .RSJ¨¡yעּµ†×­d/כַ1°… 77טשָ:#)Hז%&rָ¬דשOS7¨ A¥הזׂלך סiװָ(Uףךע™ֱH'ֳ•ױ!תֲ~s¼דהQP¨HךXBuֲֲI–ֶ‚AR%Z1¡®כ4‏—¦oׂ™H_ֱהעַi S]wj +װ¸es Hd‘3± ]hD¨׳¯+o˜4¶ֲ³‚‰…QםםR½>˜&8j€mֱqׂ´ƒ{,‏n¹9םםb «0›˜D}ƒ־0’ק שׁ(ֲ~װeA­Hfנ“/z¬mLL…טT&ָv€דF¡:}0סvסRiK•j gVה4Sױהׁ'ָ¥‰Y‡x;דHֹף#xZƒ˜ה-‹qש¹«M)¿+ pˆ'¨ƒ.›.§״1Qw£g…ױw^‎םg{_3ֽ½-°÷OƒגV¹”[’¥V“‰×h ‎mח:־ט&>ˆ׀`«=¿‎±8¨hsnֳD ©˜כ6µ8£1”0!¡H›„¥Y…07«n,™2$ז%™¹„SרS•™ּq&ƒQֻ ֳ&‘8|‹P?z7Fרםרן¡i{ִמ:מד#4׀ק•0d3Y¼ץבDIP®ְN³–™²04DEֲTד…1}ִUזי˜²ˆ?£¯O' כ׃ץר¹ֿ¡[2¼6fֱכ¬w*­KHC{cאOjlO÷B!™"K¶]¼›ur‚.b¬1½fb}†¸‏חKZJ÷hׁ·¨שMיא‰>\Jwu¯ba‏f#”mXz3%*±p״–w=ַvֽ ל%Pu:ׂ—>g$ƒnf…›Sֹ&½ו׀ 1!xLֻ¿¸–ƒ<²†³׀V׃”{Z)3₪´5ש9ׂ$O¾ו©י+3Z˜oַ־%טs1ג ֱ¹ „ז‚YNz‘ִ5 ¹.>Dס¦¯™י שkB¸,=Z›ך—bחא®תTPץ*i–‎"6f¡bת8••–ה¶­3­צֵmW{¦ִ«R–ˆ³+J‹חRװ¹©¼U}c{›#עש7ֳע4( ¨5›\א3·Sֻ/ּ/]& nמFSNˆ¹ׂ0(־F* im€ =“r־ֲµ־´מ”w8G8ˆ¹"‰»m AF;-{>^¶ˆֻׂדװ’»@Kחץr¾`ך´ְ¨צ ²5:™׀ ֹ\lֵU₪*ַQ"PT,בט}¿«ג]:ק¼ף‡.v$=ה׳mGq½bֳםw¹H°¹_g9E%j~,F׳t:IB₪ל­h¨¨"ֿM\³Rmf­זL»־›ײ¼‎”4&c¯²!״eBxPm¾ב¶¼ ₪j¦זH׃€ £ׂCGסz\*•¾F&„ µ=2´qwF÷! קֵ1^אoַ:j־sEבMY†ה_‹^=ƒצX«I=¨ב1–־NE¥ֶrXֶ8 B–ׂ!7`קµ!= m₪|•  ךXgֶ`r ג_T¶)״ש­§M©e~xAט7£Pק¢C@װˆֿD3£½¼=Z¸ז&S¢*QLH*ט-ע¬1'÷\LDaֿ+¯‘פז$‎z’ֲ7צמoן•?‏ו:gשqּ±v+¶£נק¦װץֹ~ֻT#6KוU-Fן•©byVWנL'כ`D‡¥ְָDL…RװLhׁ—ˆ¸L`Ad־״Yר’D{s‰xc£¦£a‹g`{P+e:hֱ₪µ­ֵcTˆְןm¨f˜‡‚¢מ‎ו א›;vvק‚₪¾7Qzד“h|ף׃¨sף)ע*¹‚Q*½ d&¬³7ַQw“וֻ4‰{יַZס§Oi:’o׀©§C<ּ—Tכ+Dדp8״decD½נh‹¶זjק=ףח¥i"D÷ֹ$׀Q‹f$CךU÷P4עA×ֻ47ַ ²מB…tQּ¹´׀‰,ֽ x:k°5W(›ם‘§Vױעװג˜Y¬›W!˜7—¶§׀,ן‡a_O#פ$bhח,ׁO‚h„עחרr׃m—8מׂr^¹k°ּ¯-A₪ Hַ¥_Aֱ<ח9i₪ְ" OR7B˜ױװ.¸k©¥+FNּRו#Sסױk%ֶ~Ckֹu7]cָ׃:‹Fˆ†$`2-¼!H׃״-·,>בְֹ g ]&g3$5‹©¨$ֱTלP|‚†÷`cת%E^CPtµ;)^„>¥.ƒ׀פ}+(ך™iY‰6¥¦S;p.ְhQ«Fפ¶p¹¯D@k.1vCI+״#Hƒֿ´1oלiװ’ַ@5יטSV‘O:ֵp8x:bױ• קb55מ ׁB‡לח+"רױדH“¥װךב"LTt)'״*FS2…v‘ש`)״Z:&=גN3RU÷{A²™ _:׃¼¾ ‰F|נ¾;+Tz6/היW€&qֲ"uֲ%Gִf<_¾ֵz£V}§XhT«•z.בׂ\a%i,יD:ױ$³ֻ_(®“ט'7ץc%C|תe"ֲֽ~'¢!%')€²}#‚ֵhiַ)רEDֲ¶־cׂד4"04-0ֽ,“7כ±½•Qם÷mוד§ײHEףֿ&a.i:¨jEלג6¶Ddּc}boשoײףoֵ¿[ױ7kש¯> >זתֽwע¥†6‏·„‡ַ·אֱ¯‹ֿגLcרכץ›שׂ–ֵ ־uף1tֱi#D½ױ¶NT™Z$ׂL rD`­ט]4«W־¬ּג‘&‚÷(=‰גLqבֲנzw׃/”3״CJ0}™nb£R,˜wP¹אֳ…“¸\¥VK@·R·oצ"iיחQ2Nֳֹ׳¡|N¢׀…ֶוg´0ֳ}4)-,M D¹rִe¨jHd₪F!J/H'¾" רTj73@‏–70בַ€Eט˜A״•ץj\¬lo~‘,U¿Wp+¢Yֿ]L u7¹;×JִJ±1"cשבL‡? ׀פSBעn«f +ס¸¦–wf6₪.ֳVtכ±ֳֹ°¦Xƒy@²״‰´ֵ)¦#ףM.₪L¥ְ¥ֳ´qד%2²ּח׳¹J¶L3)j|TZ₪$V˜aֲcK2_uk‹„א¯ֲ₪v¼› }=‏ן”‰ *u Q_ִ¦”N־kk)hֽ׳`hֻ‹בךbB‹@װ„ׁ‚C¥3N¥OץRl(r9Y†µKH\ מXaּפ?´pfhT6Jי¬˜.9u7~­%£עT ¹אׁcqAצִדתְ9 j%$Yֲl’¸‰? tִ*ˆ© ֽeSץֹ.M•{..ִ)OQrךֶֽ×P;¹€sײ\0{d&0נ©´’¢v ח7´X‰b½Ae1g s Y7נwְ¯¢·סץָ®’¥… C°‘ֻf: _ֽ^ֹּג°»)ע'¦4w‚‚°`Dי}ה‘שXפ™›wO ·`9ה״¾´°־£#ג₪µֳD”ה£YHˆש>&­u ת:£ֻ·¬/¹R@hדE\¦R+€gy(u>³₪עµ[4’¢ֳֹ0ֻ±עםtw'ו=…+פREמ»ׁ*xiU׀D%[Vµ©÷ׁ¥´¼£oF‚kר`°]%—פ…_«˜ן0V§7Aבקֻ›f¢0d]¬G|f₪אW|^lV½ֻ;&ֿ¹‏«kױדֿ¢‹rּw×¹_Oש¡@I•&@ױ”q°ֳ­˜„Sא³ֲ9s&a‰˜ַe„±°¥ A3–ׂn>ֹm„˜0*Uב‏÷װָד÷>“p_ק [ֵךס‘ֵ› 0¸)יב< }E*ךקJֹׁ "ֱK©5bd/LPM’’–¬–7AסAER(7©ָט„LQ”d~eV)CB°¥)÷Y/q‰ל=7/)[₪?£ֿ6’%O”G<®קXWe₪ƒ־ZD_¿ֿ$@¢ֽֿח«8ײrן¢D–>aֳ(¶¨R+–כD ז¸1xf° ך{fָfuqˆOA8i`¥QֻR׳ג™f“ n!˜¬^£`²¹<¥%­ָS<ב Y_¡[¬’חָ†²¡–כ”Oו)"I,O}&$×|bת¦ׂ·™+p`ˆaִ/ט× ֱֵֿ›ו°‚¿'ְֹ§²´ת{×2•]ְe%‰©2´ֱe O¬Q‹ִ+)÷ף/¸Vj#Hƒ‡ודXFר67)בk1yOvn Z2ן]ז4bה9·¥£¶״ֵ“X gִ~ֱ ´(f%דgזQ^L "Lh¿ט£~Jש’|&ל$¶ע‏+ nֽ"׃rXˆֳuc)„^Lל( מA;ׁ2¨m€leeµE­°¡`…1yG§;׃$׃זsMױ/נב#Nֹ…~חֶ¯ׂ¹$׀„˜yװ¸כY‚G†­ ןפ¼¶נ7–תֹR*,xJA gQz–X­D״`Kfח1^™cE®6b״¿±© ³fא>iה7ג,z I4÷ת¶P—h&־ױ½ֳ`ח‹±^ֲ4¢nPוֻXHD‰† ¢]2-£~ C׀?“ֻט²’±§מס~$+e2³ל5f¦ֻֻ‡5‚.$״Aלp¢r¡ךbƒּ‰”E;jp‡%$Y! †ƒ“£\hh¬†$Rלפנלsֳ mTֱµ>"ל€ֶ~„ fזˆ ÷¹:C†ײ!לױ/-V/ְַ°„ נֹ¹ְ—ם–M‎r‏ף)—/+·N#bמhG1k L~ֹ₪ח\2ךXZi(ןM4¡?€ױ¢§b]@לFרִ׃½ֳ­¾wר´״ [U²שאסצֱA‎¡ר›¿µש`קp0¾‎^/6¨gףkצ¨אvף—×unל&x>ֵcֹ¨H€},ר#^w$pxֱ¸>ֲם˜j# װ)׀#¥+(»1aױ;cהק’³׀_״ַ׀TםD pnCֳ# ¸Sy™S·¢­עןOןOװקiCwה'ר.˜j@n£1wױֹ¬׃¦NLװoָ?L± ½y»To,B HָY±Gנ·«bq™O(k<vׁ‹u¡4‏R ¡­ַםHָZֱ@‹BֱO †••נVtֲ7‚f;\}^R״¸’ֱbdG2/‏¥×‹¡+…SשUng["6כֶתD ±H`-+שM`]>[P%T9_6פEֳR“$cֳ(µֲק*†D‰$פש/[ַE°¢TqE•°×\׳¸¨t²·Dֻ«‚ֲ¾b{Ns:ףֽנ÷“›Oעװ´­ ¥a’|¡ /צ״#x¢‡כ4ױM±vֵ£fC§ר‎%›¸K״ WגE£vב E״oP}U&›ָ₪K6|÷‡xµCU ’–e÷A&sXַOדq}¸˜"נ‡׀cֵָבsGף;’׳‰~צׁ$‏”‏Duף±tWֶOד¿l ׀¼][ׁ₪×»ו׀‚…(‚Vדabc9־¡dֳּ— ¼0R(‏S‹¢?t.ׁz  ­¾'kUֵ טDש.qתW ¾J©HLזֿ$נ#׳±ממ¯G*)o דטִ²‘ש©KrD”#S÷¨ֲ®]B;•®.!«וֽֿ»—₪מNIם"¸¦‡dFF'r¡W¨Ac¥‘d›h‘"׃†N־›µ1vw‹ֱ³·tפּ%I²37QwV…5‹\g A¨»*9];¸רםֿ)w₪÷=ץ₪ן_,M‚¾·ֵZ2ך‚`½v¹H*´tחיRֶ¼ְֶZL÷bdO`צ\†bkי*Wע¦‚­jף,w„WSצ¶){גְ^2ְֱ&״s,@®—1ˆbrgו]¾f‚×ׂ שײBRE€´O±*[«ע ]'[+‚¿×–µE‚ףדƒֳאGOC¿גb¥²U×¶j[…Ra«¨duwJ§/mממסס‹_½ר/~¶מ_©§כ‏Y,(¢`[—±: t÷¿‏½דדחא״דױֹ®-n,ַ.B¬׳bףקfh[±€®«e ZU½0gXƒy4ָג€ותֳ+YFVֻx‎ג׳?M¼Ncy´ AֹֿT2G״£“+>(l"XְT… בDס×E$¡¼…f-Yג{ץPUֳ!U8Pֵ1טM2†L¹'p,d‰X8'=,V†בc-)‘e׳kִrU(הֹ‚¥w»ƒ A¢›גָײְ(GEOq;7˜זאv*’0†·ֹסּ–ƒ›+¢ֻֿ‹’ׂiכ‰`׀שvחB*x"נֶ‘ ף&CY-,F÷׳1(ˆ -Gx‰›7'ha„ֵ†TO‡U»ן*ש!װ4vּEcַ׳‰׳4j¿™2…r²O"…´'°†N‰¹)ֳEWV¦²Nk‘ ¯ֹ’צ"y¥c›ז׃·&ֳ[וִ~”ײƒ<®hס ¾o¹L†CU36Aƒ9ְ™־›TB׃ױשִׁ\¯>”2[־wn®#¸±n]=•XPֱ¯r:½ –hֿ,>דטםSk÷˜¢ם7­&כ[§s k“D®¬+o H¥(ˆ9‘4Y`ֳֹ1E״ז$‚’ (xפש «מַט¢דּן˜ ;Uנ¾ƒ…ז=:R~›¶tּ±¹e×*3]ֻvƒ׀i™.ֻ™׃Z¶5)‹XְyyµO‘|¸\ֿz ¶µ¶y¶ֻYו‚א-07p ז—¶Tyהֱ½?–¶~נ4ATk†ֲס.cs]”0÷ן±־9ו דל÷³{׳j(שum #­ױחTע/ץך“f+‚ֽ<=‹ֿv½תgֵֹֻmאk–v}תeqֻ’j‎ׁ¬e>gY­׳למ’#€|v}תe­nµ—B²:צ5K»>}־²^³<—}חׂ®O³lװ,¥¡?®OU¿#B(7כOחW35,wˆR¸ַו*×V¼ –{_…ֲ,{ץI[5«ֻ.%¬ּ®WY©Xֽs€„¾צ׃®Wף»´ff‏זi׳k־ZM,»ך×”לװ¢> ­ש[»~¸u<ּנֳ© ₪;‰?xף¹'Eםװ‘נך‹?Xציs–’ױ¹/o³´כ׃ח,כ%KQ§םM¸x–v}תe­lE±C7n÷ K/«]ֿ>חZ-[ֹ)—",Gִֶש©]¿g÷U´S¹ּ׳<-{ץ8ֿJ±hE½WHו‹Yצכs¦…¢¥}וo–v}ת<¡[%+ֹ³ ‘אאעuFםzצi²,עץf²´כױד< [¶F.DMעE½–‎¦ֹ“Fr ׁ(Xn8BרJ´±ל׳U°ֶtׂs¡^°’+…¯¯םkqלתפJ[V| יd¾מfֻ^‎ֽ³±µֵ₪Uydֵ־¨kuךם60ת]¥sצכ¹Ov2†ysץץךsU;פ%2+_ף´כױ'(ֹB¸9½v½תֿ±} ¡3טײ®WYµ׃UNא~ף¶v½תg­`u>O|־ׂ®O³,Y‡~w׃®W†ָ€u3¢G)ת\•’e’}­]¯>חY±׃ֶqd8»^}עז†­go„ֱˆ¾¸³]¿>w´`g%¨}o_ֻ~}מi־‹‰ mPEׂ׳®ץלq®µm°ז׀ד<-{ֽי¬4o®ײם\h@›z‹ׁ°ל7םbbֶ–ִֵD(· כ DV5׃gO*¼Fd¡!k ;ױgBˆeQµd'¢‹|2_מ`ֻ>siL ל©¾«.AׁNכ¼לֻ¾}nxמ8ƒפ _עe¯ח)ֲ®ל<׃­חׁ:m³ֿ¹6ל$}ן‹Q°לחlkv1L]oעֶg¯ֿ™Vלגuׁ£כׁƒo³Oy®ngד¶`Qֱ‎Zצכq¦¥חֽb£¾pֿ™—&$ִ=קx ױל({ ‘Fן[»~!%*L;¢ךoַַ/YaֶָפzV&Cx…O÷¢ƒױ©:תc„ea‡ׂ¢$aֶ dK.ָ?„rWח§נ7= ס‚]· L´ֲe* ־tףֻhtף‹„2ג”%¥:}«kכbוq)V¦עQ*ˆ[‰¯×,:ִֻ ׂ ¢h¬‘€‰A=I}¾£ָIּ¯s‡fװ)V%FT=njT`ָM!‹!…6‡ױ@N#^¢€ֿ‹ֶLabt\JHֹֿ¨ַ״ֳxס־LNxe†U״גװפֲIt0$(cְָ=Fs€ױ+z2F|˜חִ‰SEe,d‰‚6>¯ 5"ז ˆׂ…O°T‡ָ ¿vD’±­RF‡Y¥½Rֻ..i•מ’0גjUuּg—ֿֿif&=¬ץ׀!]מtז’vװ.A[ֱˆֽR™ƒ‚X2¢q†˜2ׁyדח2b¥\«2זנ8ֹ:/XYֹ_6³ץץ÷Vaך6`G¬E×µ ָr¦~£ײ/"¨’z}:'ײ¯צ״(•‏g,U¼ֱX5?“»‰z9Iצָ¬vTׁa׃א­…XW}¸{"½ƒ™‚׳4ˆ£¿¿^ מ’¨%z³½¿ד…ס g*D0_®כ7™$uibםץBmLּ’—Aװסֵe^‚qֲ³ !װ÷Cּ­=kץNֹ™¢ׂוֽ`fח£¢¢¡טגֻ‘Q+G†—RסH•Rר€TyXPi¸˜J€$Oֵוz₪ “"Q27ְִ¶e±*₪…ץ;@ewv<ו±חD^Zx ֲcphTב=I₪ל/ד’ְvQ]¼ֽuH/£ 2ך¢"4¾ֽ‘ ח oB*n,ןm<°Tעץץךv›„XעיU³pֻ2¶Vz[w5/P| ¦·8עA‡א †עQTG´#קְ[F×÷רYEm]S״ׂlט ה6ׁp7•ְַ-n8ִגבֽ'ֲ™$g…7ֿUְaז)dִdֱDחם ]“R¬Ciױ0×צ‎x₪7‹µ… P`‎M/|¶®י3¼ֻg6ד©wo>»שE¼¿ ףש%‏ְvַ2&)(¦@ֶ— ˆפIort>‡,טצi<}¿;o- ׀דme@YַSGעDדxbqףK₪2@¿ ` ¬״יx‎ֿ.ֿ£‏ֽg´,@#ר¶ַP3{%pu½.¥"טֳ+7Sי¯ׂהחn‡jְה)PH¢h7 O kp¨וֱU‘`¶]K¢– :*\]!t½ “)'d{Q‏K²עuP¦ךgZ¸K¡,„מDz•´—€מp”:ף?¨^·2ןH”1U“ֳx¢חAװׁ¥56״ס Dֵ >…»QֿE:I וn¸ׁ6T¨ֵ  ׃E.$ 1•hֵח×*1מU™¬¸oyֳ™«Yֻ\ֱד ִ ÷ך©dC3PUֹ‚¦)ּֽח +97׃{‚בhױ]ױ†F¹×|˜סpZ‹H=o´}fe+ײק'@הmַoְמA…תֽ8z˜Vx!װsײס[F© ״b_Wץ™[^ַ_LUi)ײ®Zש4S@סןcױD ~C=׃ץא"׀w2¯¡ƒ…€E3¨;u °ˆ‏צ³½ׁ®sֵ—E\„hV6¹4¹^[צ75.¬D|†—Gתlג/ףN„ל¸¦€¿׀װo–w¦×T¸ƒ(’,ןT(ײy‚׃ק§$Sֿy§¥7%Hךעֶ$™ֵBְֽח$ׁLP K/^״׳ך…ׂLטl-‰^”¯צW°ׂK°uנרOf׃•UR¦עדv(ג÷™G³a1\פ , ׃\‚'ץ°ץ*7ׁזֽ±& !Q{ֲף\ךָֽ_ם)ֿ3×+צ›uפײ<׀§“z]ֽז׃ַL½®MiR ÷¿ױW"ֱִֹ[נ“{ םr6סu>ש gק£¹(¢^Sנ¨¡ײfֵO׳"0EM׳׳"£“}ײYX_\ ½¿כ‹k‘©׀>«x2Zqפ‏¨ַבב³v‡‡½£ֹ/N¾W“ ¹½Gי{ֽ:v ly»װoײׁ[Tא©־+d½E•½*װoV¢–†”ֹ װkײ•//¯w‚cקK=[d¹Gd2×A״U2›¡—aµ[ˆֻ`©C~¥שָBOSט; ’a¸ׁ%D~Hq`׃I´נhֶJO7מ0„ר”ױ“|ע¦‰jMהC9~‰'§  ¨gmחlSB%¨_5ˆv^GˆV^ל—םֻ1מ®חnG>Q›©_5¨Z½6)cךT‡zV³Aװ״ּף±–ר|חPֿj>Tֳbcײ_¬ ;±ץJ¦w)פ!¨¡{.€6—ףc3{•בK, ֵ«ױKױBµVi³P¬װ+וB=-/זNקP¦J—D;b׳אM![i±„½P‚@¼ה•!0רch¼}Qִ‹i1ײh#TH,‰»+מ›N~מ`7?Z`DFזzֳ0^«–¿׀< *ׂµ‹½°Ptכוך|o>1­¹±D4‘a™„arFֹ‰’¨ֵ״ ָ—צ|ֳׂZsN”אֻ­´3¾®}prc₪s‡׳h9ֲµq ֹc’װםnK ֱ¹+M*D¬¸מ‡ףKכ^ַ+שQ÷m‰KzHֶ±ס ‏ —­Yֽb\־—TׁQ·¹6³V׳S¿I}po={מׂ׳\|ב ׳s:2ף¢€m‹x‡כ¨m €¬₪v“c9#b1ּף5|›(ַµתf ֹ±7¹c¼£ַׂ4״³'{F‚†ˆ|ˆ¡Eט'צcdְ¡pֱ1Rחs רv©X‚7ַXHMג´€uC}zְ)­¢זsO׳ ֳ|NdL₪#ן“z&aO&:דUִqq\א1ץWּF¹/¢~ ›_D)#sֲה½.נ•ִ÷Be²¾Qn—fב4kױPI„¹;¿ֱ£‎ײv׳ֱֻ ­ם¦ע אֹ‰d-)`מµַהY£´#B 9QTRG˜חG׳ן1$¼1א¥&¦„WrON¥V¢¦־ ס0Nd ך `“ ±® װֱֿה•q«@_' }‡c׀כe&&U!9ֳ¾:¿…¶\ t*Xו  םq ״„)T”‚,0C¯q÷ׂD~6„c„:׃÷Fsy³J'¦l3€ס](]•ׂK) Vֽn s<©^ga¬ִ@עjKz€מmגZ×¢­˜;]*0Qפ>Lha½פי 1ֻYy, חם# s× a§t ו‹םC#´Blשbƒּ{$! €2D]’]f&©V$K"i׃%|»"¡mqצֽ’}Y-׃eׂ,µ¨PX 96ב^$ר‰L½ַ׃נ÷ַ±Leװ™‚₪₪H÷«²«aו:±ֹ‎קvצw>״~… `ֻ©/ש½wְ¡}ֵֽ`f˜ֿhלTf·¸{ .^הת> eu¡–׀ *ץ8m ~+tdהץל„ֳ4ךץ V·©ֲּfTƒla5וv‘&dמ"f ¼°§ַ`כ&8,,Q[p„#c³µ¢אr• Oi(qz˜&>”P„ h±¯ּrCtwvS‘mUְִ ncWֱ€‹d ‏״%ׂ Q7„t†ײZSm‎ˆqדלֵ5VMˆ •ֹ/™aײ«U˜d+ˆ–—Zױֲ^¡שת ,÷GTרֿ¹מGאנBeYCֱ±•jסRJךˆJg'…£x א³lBֳטTfGEVפRךF ?F‏ע0-kGש$|{כ5Mv*$T_Vb›מֽ½g‡¦YMbˆעm”“"½ךe2U־א65+R\sיxZ >abh×—oקטs.:cךײ€¨gn׃»gׂ¶w ץ ֹd-z†ֹװa0xD›’מ‚µ$¦ׂ׃ז›2¬½GJפ¸X½¦ ‡°w[ תvQCIָ!ז0jdLzN¨¹’C½¹כ£ֱ·:א±n§דA«״™ל-i‚'r„®VWץˆTjץf¼s=´צu0RנֳִןcXֵwwע׃ׁא9₪״‹¢/iV€A‎_ ¹/in€ג2~ו4ק³„\,b’®f₪K˜ =³Cׁ~חֿ׀Jך{ח‘[aד]d7¯‰¦ xl־©8¦ ך€‏ ֲ—d|6ְ ;ֻ-B;?µDרµסvר¯¦w$¯=´ץצוUײִ-׳<(ם)\ֶֹ״'¹z8peתJ$]ֹר°µR¹÷חhֶםָ²@J[םˆ¾‡ע—‏ה&„¦ |hהµ‘4ֶ„{׳E׳vֳ@צVה/ֻ^s&ֶYןס:דר½מ˜™ְZ.»צ»_״oק÷""}#T×”¼²[a“W¶ >1ֲuק0״i¦רRUעv©RK¿Bׂ3צƒ½½?O.¾־;~ח=y½S)ױµr±×0%¡C°eפק)w¦Z׀L£±2(˜wוWע•Tebע)ז׳ו־2sגמw5÷;’>פXִ‎ק°5ם%~ooֹצבkw¾ה;wװֿ›l¿‏“··ק·y§T¯6*˜ח¿‏‎ׁׂ8yד¯ף8אףc%ֶלfm ֳyןuָHc3תYUאֻˆJה¥-§¬:¦k`ש–V°G2¦´)•w£ֱֶ/לkiA ִ}*,ת> S]„¼ צֻˆ%Oֻ¥P±I¢9ֿNסֱקe\G°עYpק5רJ;€ }ˆ>תcaנ£Gךנ£ל·­ם'.+גVBW`¶<¬»¼מ¾F—R „\ָׂ_19 ֲיpJ÷$P־1‹A×}“ֱ°'ל©©»÷>R®UוJ±ף”b9•©ה0₪Tט·ץz־7‹!ֵג¬$§ִnת: ם ¦&‰0ץ¥ר¹4‏sַ»³ˆו{8…‰ֿ|§m`›ּ־[›X1IN½!¨NB 9ױ\‘”¸.לDFדWv K‏×$H/—ט‹1¦ְ0bB©›ֹLֻ=´r'£h‹<(¢iµT0¾°A!½יCP Lf–¦Xˆ›ֶ w´1„+סDFץ]ECצmVcד"N |ת>h…b¥\‡ƒV³¹¼™ֲH\ַ„†$8? 4בetִR¦*´›״»-_¥¨L A³$ו’ZP+—Q3q(:ױW”n•Eֿ­‎ֽxJ=i¡† ˜Sװװ;°tj|ק{³׀4ֹ{@¶ ֽ+!p!‡ז‏°/u„$’ֶjEש*iֻ±ךMY7f"mDו>|8•ׂבY₪@¸¢?qD ¡/qN¥›R־.ˆmJְע£פ—l>_ ₪[׋‎nח˜ •ו‏ּOצ£ ג›³—a¦ֽl²פ״ֱj¬÷s}Cvו׳א‚dלX*G-‹:ױךכ`ֽ¡<׀eF3ד4b2מE־t־RׂCװIץv4 (״‹_p"?ֿ¬Mפוֵ™"`„}\ךף¯a@€ָֿ„ˆ !G…+ױם†c™ @נ!?$¿)F/k{ף¹ֹb“p’¸FDRg‚-װ® F9Mף*ע|7¾ִ…X“YQ“ב+•jmm(]״׳ <ש|‚’הu0ת’ֶ hי״ °ןUb@ְ³IZ2¨i†‏†2 ֵ׃Lְי*•ׂשְ&u)–„ kS?ֿן$Cg¹"eאFOfP ´ך¶­ִ‚2ׁ]ד6¦®„°ˆ±ג ׁ‎ LUZ¨$VraIגIֹ}”r©N–ל%„Oe^ d»8³“dM$¦צְ U-₪S ¥]ײnת₪עriֶx¸C§£נZRC(ׂל]‹³xcb¿²¬7!‡<שPִrL]\J9gמׂ;“¹ְד:ZK @™כMrָׁyP‹ֵppֵ•BאדֳD¾ש₪A`=®]NִF¦R׃ֻZ“fאT{»“±Z¯ױ׀ֹ˜j³v›ƒ}r}.ײ¨ג÷Qz›ֲָR(H'שˆ"x„M:ַ4כ18למay "3׀׀±"yNY|Twת<¼¶ר=ָ‏בֽ¨³l€5J÷ם׀¢3װC$ף~ת0־ףא¯I‹X{–טµ¿m ֱ8£f‚™צ]־ •XvD=5‡ֹ-) מ¸ּl °'>נm‚Ex‘‘Lרץl@×J-€²}1’wF6ם₪ו½ָY|¦¼lM:c¹עוz‡pd? טV÷f:C©b'ע₪ Aק("X־#©MנֳַגXִ†H¢¥65י›הEע‰@ּיֱ«c2`”3¢ֳXi$ao״¡׀JHrעG8iצL>¡Aצ`oַ3לy‘0ƒYU³)“ִ”¾)•G)®ֿE;ּQzv'e7V1ז£ֳ%ִ%ׂײ@#ֹiו¸v4 ³ך*’)¢*¼g {.G<_641יPנ© 3`ט^K&װ€*`¥ױ~ִ"ֳ‹ֽ-סv¹±D×—p­kr­ZL¹Pֽ^:®ײ¨ְֵװד‡ף)X‡ד¡׃¨%c1 £p¾uj(jגz¶g._h6ׂ+׃¬Qכנ=_7›9־Z±6`¾y Yb‰‚ױM•ןדKײZI‰¯נ‚­µoן€Eן¾©ֻ?fvֶ>ֿ”ֽ|ֿ?(mײ‏N–ֽנf™…ה%«8ךH,Lב–h#¾ •¯#•ײ׳Taפֹ¥נ¡BGS7ftסֶBcֹ­gT ץלY6DL›€ֵז8f״ָ¸ƒ׃ KU¥eֶ"ןיֲA(ָ­‚„:₪ׂ™נו@x®/ֿ’b3fֲזסRטזw78¶5z6…Ft„÷µצxJֱאi›"\ל¹+חֽ(¢אU6ׁh₪d]ֱַפr¸ֻ¶t9ךgg•װעXn¥…צֱ ר>S־V“L]J@ױי->}\”#@b©₪ע2´‡)ֵ˜,ֽך‡?ָָליו{מכF־>8ז8 ת ³Nr.a·’˜=_2\צבֹײ¶״,kg(16–¢ֳCZ׃—>יahfֿ/וֳא(גקX מֲ—e&אRUD x 8 ׀ת’ר¢\יS?¬חvVA–yXiֿטֳּ}גר¨₪”¾‡uףּx$ֳ–Cףsג×SUX2±ֿ.ױeס+$Hסjט…aKסךeסDZי‘[vײ™)!¯+ֿµ:>Yxג-ֹ‰cE¡“W‡סH†=ס#ן₪8ץ*)÷*¸,( ״װ¿«P,—u¡:ַNׁyµ¢Zˆַ¢rױ£ְןצ` בraִ6ּ h0ל6hJ·oI“gֵ°J`¼ִ ³--םָ‰:_>Q¨‚Q¦5gֶc,{s²¹½]…j־jְ°5’w&ד>רk ֲEז‎*ךז‎ײ†8”זjC6 לבX˜חפ'לUףׂ¯+F,ק†xף¼zא’™·@÷D×׃pR„Hוִ qִXװׁjדֻke¦¯Kְ‰)#אyoˆ½ד[¾ֲpDvֻu™·*׀ח¼׳pֹ¬‰ז²ב„ד€אא×ֲ¾ˆי cWְˆ׀cp¾)rx¹!8ּ¦.·„קO„‹_J zKׂ'lז!_ֻch€·ה©ַ~:X:ƒ|”p``™Qˆb54RR₪•I£NX×בy»tTxU²uנ ² DװTױ±j ׃[¸Jסִ5׀˜{ L%בקUUDµmˆ־s $¾@qך’J₪©, “›—fסˆ†@w׳&ָת3׀ֲ@חQ[€®§ה¹ֹ\×UdhSֳnב₪D"׀^דb#©‹$תx"hZXֳ/£&ו₪׀ֻxR ®P¹Fת<¥X;ֱ"J•cHת}8m,· ם59pD ֿKםUס-ײ,מְֲpay;ִשח…o˜ֲֿ˜ֳXF½ר_*־©²µל1ֵ ַ.IAִµ¿ֶPֵSD d¼Eׂ;™¹ׂ>_`5ָ,e8#^ױ5ּF ¼ְֳU•'”¦3ּ¾†()’“ט%‘MsגVhנ2j‚6¡לvJQ†‹¨'ֱ›˜U¨8_בp– נB¥:עs#ֵ#!=²Gֲ¼†€SU$)ך]V,‏ˆSS=d‘U¨"Mַ½§>-v־©ט-Fq‚µר U$ֳַ×ױ^`59רזֻK8¶ֱֵ}4R‰צ+±ךט–\ױ¥˜6Ilע$סֽLk1£צ‏־מֳx‰^p”א÷•+‘ײ₪₪NN₪¬ֵ,כmRױoUֽךL C‹7.,3£עמU״‰, Fׂ*‏ֶ*R¡S1{א׃yJ מ×םװW—סּC(מJl"Cׂ‡=BCD®ֿ1ױA¶װמ¡‎!ˆ-¼G& {ֳ^ֿו ט¼tqנ^l4©ל ^DB‏±ײי@= /‚HH1­-¶t‘נbT Kנ!-]p6׃` ״M¥\h! C†ִֶ¢ גP^ה€ לh3“C$בתנ׃GF¡;7\;שן$א נ¯lu°J«_8ׁךZ—„@ Zpnקoם&kֵׁ;[ח^‏k¢—3‎ ”ו{»ך³˜ָ DAL…`3'(§‏בֱ³ַW6›ֵ‚Mצ¨¦eTף3ƒ4½˜ף ;]S‏=Oז¶|yu{¸]i^Lp%fw/e[Yיkik£WGֳ¿%–Pf*־גּH¼ה)ץ¼ִֻײץח‏ײUֶ´ב־²²װRֶ•¥¸$N¦µ­¼,‹‎ןEֲkה׃²)‎ֲד­£"ת²µדח״g%­9ַײa‰?סֿ›—״ g4.ּ״´¶ֹײנz.O= ’“¦Y¶“ס©hµ`ח}ר¥}@/מ+³†Sk ך²µ‎{k«ָ²)&װN¶••ח:£Z2/Tּa‰ֱ%a„¼|ּ×/A„‏ּ¿†¡/ִת+S§}dGץ O}מ;¯u׳₪ˆױ&רכSby¼;™/‎˜`ְיmע!ג'‏קs‰ּC‡9‎g©‚/×&¹‚עKgX¶¾םq³h÷—ִ÷M_ƒA2ב˜נ 6;ר/‏·vפ’ןd׃½דgcֿ2ֲֹֽ¢ם0½׃¿ָ1÷}‘c¬‏ײ?—°/‡›‚ֿQ&«צR2#ר:³ SMְ#…×€O£®פn.¥J„¦׳W.[׳־0|ֱֶZ¬˜B1קֶx3׀2lעA׃F0?p›ל³זֵ? )¢ˆ=נ­ר6ִw¦צAtפֿצ¾6ןם?הֳAבף ‡ףײ‚ב›¥]‏[@XLם;זpz ‡סן VzC¿]₪צ¿ף3ז-– ±"ח4ץןE7דפ‏Hv™‏קרN— בזא='‎·?ֱJ†½ִ!I׳r”sת׃}"‚¨3*U§² N¨bˆkֽׁ†כב”¨©רL%Sג׃¡b׀ֵ6'X/ִ^ wSגXD[שz'±>ˆ”­ בYoײ½·rֱ׃\נק‏M.YNGהvE»¬K ז÷*i׳ ֲ¼‹O¶ ’e,כֻ8)†צ© —•°s1ך¬ƒ!¹ׁ־20fֲֹN!L‘נ“כע¹>ֶ׀B״WWֳהn»”ֶ‚‎©€ƒ;"†¾;ֱ0Q "-קe &ֿSl™³\4>ֿWX©Piװ ֵr|…Uז•חp¿w±%וƒ"װ/2ף¯£Y0ְ¶¦p{ק־כֵb¾X¦ס½h”¬g|‹»K˜ג`F^a&_I<)–i¢׀ ƒd7ֵכL¢&‎v 1iֹ-¾7jִ„6S¡.„ggPךy|* :ST…ר:Dע† מ¾צ·ֻ&xˆ,)‰ תׂT.₪0גC¡.עcUמ׃!ׂ|o1~#ו₪ דwױE6ו™»§+׃TR״גֲDN־¼=Cאֽ!> א­›aזe€£"i…–ט¶i,׃ֿFxזq†L:T?×Qeב2x.÷ֲֵצצעzwioשzB»1·װ‡gƒQNP,0וֿ¥Lcֶ~mmױׂ¢ƒbyֻ|@לp¢ֳװ.ֵב¼ְe˜ָ&9ּ(c=6‘װIּ­ֱתֻ#@¬pD ך=₪}ְ#d,× ןDbAי>p”2C¸ֵנeאפ°”ֿK_&,Ntֱױ7ף%©1K:'f₪‚› \‎˜₪ְ`—װ€d-“״d2pB’ו.²÷¦תלqףaׂרן½¾כa‡®‡’‎ץ°³הzXyˆMרSˆ¯n#'pZl${m¦…H׃ױ‘f$ ת…ה+‚ך6r× ‚.$¡^t~צׂףR₪1¶ˆ×hµ4%IךU…ּ.¡4ּLgtץצZ‚Fָjiסװ [2'Cהƒ?ש`GאcU Hץ0J‹צ(U“רּrקJ¥Jgxָל״פָ…ך})ƒ״פ=+ׁװC¬hבC³&L„˜ִ{,¹=›£7Bײ$n‚׃הֲ³)װX‎ָֻ´…*2›ׂ4×Uױֶ†± tשu’3װ…ף״˜r34דת‏8KPc²·bEְtSj:T®©¸x:™gPKƒ^«פחש•׳ װ%ֱ;'½–…]A¶Dף ^ׂ]G|¿“D(ד,ונ7uשygY‘ךD¥‡©£ רˆװױ׀ׂ{Q%,-•…[ 7“ׁh…״L6Zm³®1גִוִ¾ו ¨tׁ²XNך„'ץ־bר}P H¡ֹ‡ַhyד»₪ ³&ס‎׀׳ױ-ֽ ˜:¯'f6·7Sי–®¸–ץ"“1ופ¾4ח´¢tf2ְV״‘¹־!hl­@חƒ·–ןרLAף”ׂ8ֹefעַָ+0ז­מּצ$'kלkVױֹם׳ ¦85f§B`§0K ¯SְטJ½Pל(ׁ]°ˆ`ֵ r*¯ z·@^Zˆ°QµײHW%ַ»‡ֱ<«¿ר£«²[ץֶVy«Q+•×ֵ-ױ.ןמ»ןn¥`ְ_‎ֱד½‡ֿ} ‏‏.¨ֻ»Oalממ<™ּֿS³¬ 0‹P/׃“ית*י›X)ְש`A˜D”© ז$·ƒֵ_‏ש‎ֳֵc:״}עלס־תמQ,ף¾vחׁבב³קמ=‰בזצƒםww|פ‏ֽo?ָן>¾ק.er—ףh×½—J כ" eQ₪‘f'b'UvֲQ‚\yˆ."ֽz¢½·ע¡Rֽ©ֵ0‡₪מkqָ;)U_R×®NJl^R*6×ֲֵ;ץׂײV}«V.jRyְֹ†t ¹|ת±¿xחאנ•`5זHV¢ֽxUָDמ׃8־‚$₪ת+T}VcG¹Pו¥S™9’ױ¸ֻW…¼R©"¯4ELhz a'D‚03¶±$‰xjח¥‡LQי„jכ¹ ¸µUֽ; z€¯׀a8H™&=µpˆ0•*ש§®חה‡?a~/ל>}’°'ָעצִl§«Iszױ^™¬•¥ֳ9™ ‚£םָSd¢ִיװ‏ָL$כ·ךץא.טƒb׃ֹq׃Bhֲ.x;X׳ֽצא¥ח÷~ִ‹›’¡כ׀qD0:ְ·צַחQsֳםָיeyevJ¢R­r˜ג÷*“™ױZB9:UU‚† ָ@פ”פd(–°jץ6נ.m0M‡תצג‎5…®X—&ןk׀…!¼T(T\yם«²¥B,@׳¸"ִI"װM״4ֿ“ָעceDcךµ8b94¼´ֹ©jvƒ»סz6rq…{…~°ָה‚‘'ָe—ֽהZ­j%Uֶ€±+—Wgn¥ָuגיז¦(ֿX«-t5·s$טQ—› ¹¯™³<;שd°ֳ²…–³zU÷\«6× ֻN_K;4Qה"XאX2ֵ/!,c2”NטX¨¿){ֱ‘×1½2ֻ_ױֵ„P¨`רלJI0*¿!(״5{ 3×®‡¾ֵ'BSז₪ZׁPv¶ָ־U־ט•Yd נ˜ne4¹@³,׳qתZ^.0־{¸i±>‏nd­¦ק׬x¥\y?$§+²>ׂq@®ץqצַ ¸5QאֶֹB¼§jב™7C*ֶ«)¼±ִ‎ה€+™kSp“=+‘i“¾B›\,–mr!םh“'ׁ)={LGE†IׂJמ7‚½ִשֱ₪מ־+D0וR+ִ׳Y‚+|E+„\‎W… ¥Jµ÷ֵ­]¡V‡r/ױ5 ¬£'יׁ«־װ¦¶ˆpרq¼סMב-/nױ*N7¨ַ«²4±4¿U«ע³bi'AיױP!לRqH±dW·WGׂ־Q2¿gלׁצ£ַ‡{‡ק¾קhח{Oלן>ˆ{{נ‏“§‡ק¾ףזק6נ[_ֿ?{ק½—i´v×:ֳ!ײdסPj¹װ¨l™\]ֵiu4ggר×8ײ₪£¡פ¸¼B₪Q)J[s˜Xׁ׳ב@¿Ek¾ױ· jנƒq5׃T· &sLִcd¬¥Kֹ—ֿxסױֻ(6h5הץa™ T«O%·ad ”G' —9>‎ ֱ¿ <ׁm‚נ׳q‎9בָnv?v¾^•#_*ױR±±.קָ‹ֳQ×׃  }@B`H־ n>(U‘£r‚Cl9µױ_U/bׁ °X³jAy w¾k¦Wׂ­oM— ejXl^ֲ״*ָ';?¶‚םא{ֿ?ָo¾»‎$ר·»nןןן¾ק·דI‏ֱ‏־ֳ½‎ִ¿·ףפאpחנp'ִכ¸¿קמ ק‚ֳG;ֱֱ³Xv~ל¼¿ˆןד/g:ֶ“gןn‹דgד=xר~¼»‚?{ָ­א»{ש  ‏hחY¼,?״הUv[=We‎+ֵj¥\“ָ«׳”.Lq$§W.ײj*גddy—‚ƒX%17,}¦¥₪vwBמ9“Wt?¡צlז 6C"S__!’ג`w7¿·Pיƒgןמםַ—½o¿ץo‎ׁ½ֶ½עVc=¢‎XV´±טם~e(°\)Vb־4'לטrmנVah*b’ײ®סד1xH{ְצ«¦סE\ףcGc”•‡…z»װ(»…nױkן·B¡X״÷­x&®ה‚ן ˜S«H‡:&?כ°—Xqף|¦Lצe-{­Zo¼S¯«¥B½¾D`¹"J='qEתNVW[µֶWג¢­xI4Qj‹…wֲc±U¨•׃ײ‹'¡¸ׂM׀ֽה7*nU‹_ֶׁ¢-yY¢¨U)ױj¥0%f‰ד rֱ{×זך‎‏ַUט$&“תWd²pw^u^‰ vU:!טe¼_ך_ַג-yYL±X¶g"׃רZ,y=P&XG¨‰‹ױֹVב+ZY¸C/‹‘” ץJ%–•כ…­­J «k±d’u‹k וb¥ –Vֱ&חtJSז²–¾P-ֵTVN־ja ¨א·?מ¥ׂ>`פPGְ׃5וsO$ֲע6גµ…¯Nט’ֽyItR®V ֵ˜e”‹וJ£X«- “€pt£ƒְ₪־גgּ¾וLסq)}E ·ִqּgm׀ֳ„u \a7kױש¼םםA ¨הקׁr<0ty״VגֵץעWs;¼´T.7)kFּױK‹x©Q_]]ִ‎z÷V·~ַקװ-qfn‎ִ־^M–Uxת]?°~v§ג¬ײֲ’_.ײ ו­Z£:¼’;7µfִק*ץך׳U¨ץ˜HF  ‹¦­˜^,^iעWily±’]ה}9'חwP]װנYךעCחUw“M¥Rz§R­5ךµz©´*™7jwגQִ>w¥lxּ‰²ב•׳=ֳ$sׁ]ּlKycj¿׳ֹ¬”₪"?ה\s&gבPס@־[w^'9¬ ֲvטLׂ¢™Rs”‰4—w3א¯(׃– Pf™2ֻ­ׂ;B¹\®Tֻ ה…]-ִ ה;ׂ%¾/Uִ־םׁ%tכ“µ5ׁוK#ֻױ¨r†Peֳ™*+•-a”n«ֵF¹RA²\¸³µz¬ךִֵּ´¨!ֹ¸פף¨÷.D—R¾ˆק׳ p¡´װרf₪”-r׃קם>׀±כק·ִ«&“Dמ! {qsי»›¹ק`סמ‚/מ•6‹›|ט·I€ֻקד6gש¯¾YW[¾¹ײב›oְ¿נֽײ7ן[³ׂ‘˜¥D?gbֻץLlUגCשN±T­‹rˆ[Rץ;ֵ÷-?־Gז—”¼pכך¢z GGל(ַW’j׳t J…bו^¡x¯T÷n¾7שװ6ֽ©½4J‡ו²׀e‰· d&‏QװפLװkPע& +ֱח{ˆֻNפ)₪¶€טץrg×־®ם<8”Eםןֶמ¼ֳ‎קwמנ½ֹ mװ\<״{ֱ¾`ןֹDײא־׃ֳ‎ƒֽמ>|צלµ;ןm?>לםnn?~¸·תהµ;׀ז׃קללן>¸¼·wסצ׃‡ןo?Gעh¾x°ק~א1m}G>=g¯ָ³˜םּ־˜U“,×[m¨›von3ף§*¦ץA¢»פֱ־³x;קצSOFˆֻ©‡ָזt¨צ~י 2 ¶¸hֵƒ›‎~סֹ{@Sִ|צw>:¼C_=·bgףֱ£ם‎׳מהן₪5F!¬#µ¦(-Z€ׂ¿€(/Z€ע—eז>ˆ¼ֹטHTֲ˜ו!יּ²¸-¾#\%g´שYvפטץY¾´H¢)T ™–, •+U}qX¼–…}בeU¯־צe^ֶ³pzש„ל)÷zֹ©.װי±¶¹`ֻµ‘“d#® ִ[r¹neK—נy`”sC|>ֵרt–צ¼K#l¿ֽ„רQq]ו‘Je 87הָ¶ת¯‡Y^ןB ¨¯tkd ’1 Z††÷Y÷N₪ךF`#:<&¡U8רH¹€÷ו״ִ€.cYˆ]7²²pװtXJ!^RFb_V_kZPֶ'ה6P*\°bCלcֹ4¡1¬ Uה₪_ֽNj ^>™DGֲHZ}«ַ ®ךה ֱ Nש’÷b TNr·ׁ₪׳¼^‎©צ÷°“·חֶ.U{ׂ¡µc_L=¬ך²ךַ°גװ†דִב$‹b6w}™“‰“5גX\7לו’‹!ב‎ֿVױ7„%ִ”¢.ƒ?ֹjƒ8]]:]]:5µk2=5h¬הbס:9a¯קֱ ֲ.VfJBא¢ ±ˆ ~;`2הח­\Puׁ°±^ײ&רnװ].זe{}÷תכL«BEֶ׳ַ«¿~וe1wƒM»°¬.פ־Fױוtgל®®/›wככ¢8=ײ¹ָ2…כ„@ם€a¶u[^6O4p¾:ס$׳¹ק¾qe”j¹ TֿN¾hִ4‹ֵֽװ&ׂT$ƒ»7׀ֽע:B6!h״±Aהװ9VGZ״Tzd‎6oH'64ףLBw[›™ז÷Yֽ`״Tf=Z§kB‎×ּM¡«aא§1,¨–j0to †טB0| .B¥hי#פ‚dib &₪o…ƒ~ …2r l₪o++6‘p0e %#÷L{ַ††‰;¥הFy#׃“,לֲn‎R¢(†`€ס\®אֶז:¾ֹׂ7:Y0ֶמ"[C— ֹQLM ³½>²c£wGz=;כSs´irא.÷םY¼iם„vיהײ $­™N פ²תOeע\POBֳ1S§¨ m6ף½`&¡q˜Eו^”t%–V"ƒ= סת÷«†z€F&.‡¸Gפ״6Dcַ&Le©בתr¦%­nכ%¸דֻWp„8¾²Vֻׁ.bI/¥S†¢ZˆUE—ֵQ1ּ».­`Nײ÷>T־ְO«_Dױ[z¸״ֵך±lוCֲֿNCe¹ש<ֻ$p־Wobe;A?z¾ת«ƒױ}J ּצ÷ֹ=]8ֿע²‡ˆ0fנ—]הס²9× ן¢׳MדײְtuW‡x¹·:^„H¾*כ$w+eץ¥·ײ ִNס$²‘D3nדשi–¥ פָw”ב*A‰6M²&V§K4₪]§ִ9‰יBM9B«׳ך#In-X(₪7c1uֳ(^aUAi¦¡„װ’ ›CרTƒw÷ֿPe1$ sק%4"d€©n(y1Tך+t Noץ ³¼n,v—„’jp“’c״¼׀ֽ2ש‚.“†?·G@מI³דֶIjd®¯gגb€ µ×„=J°׃$#h8§‡¸ִX÷£\ cףF‘×ה÷x˜Fx¿£[}UefחYS¦›=ד~µ:^ֵ‹׳Z‎‹׳3זמZ9fז.fַ+0 ˜i$ גץU%ny [EA°ֲ¹־ +x´VmגםDִ‹Sl+6‘1ז:ךּ8÷6י\+—אQ¾ךוNm,בtlז µֹµ‰L·בµ´®ְ¥)¹(׳p©tf3'±J7‘בN¾יDDרz¡“K?ׁ׳|˜1B4“*ׁ»e,#–­[ץL!vָ%v{½C6 ¹hMדװl8'mx•bq7Lgד$Lשֱָֹ>ִׁ_‚ח¸?]₪8¡ם־ ו¨Dcֶ^WhbF×qoאT0ד,M H…o%mn‹k&ו:½!d’$*ױ`²÷ןd’4½÷¼xױוOM_«ֳYם‏rv+ְֿ §«חqָ2X5ZPֿ¥ihr!<-r3`Vqָ)iA¡uתײך¶„Hר#]ֽ—־­ן .%A4p&ךּ ®*b3§Y^ן¡€•e",³5£8pH­DƒCXp $ף8;$׳‡,‡כn;ֱ9cםuת₪g³ׁד¾k*r´÷P#8_}ףֶ M‰׀נ ¹eקWN k­ײJ9ש¿–×K÷be T½•ףzZְ6zְ‎3&J·ז6גDִyֹbnֲ×ֻA רhְּץvlYתe”ּ½r:•¢ $b25´jֶ‡z<)® \גM•¥‰q"ִֶ‰ֵt!R·eָ­וj.¨¸’˜# #bװם¨ ׃p<פW«˜‰6NF¸-ד˜מd¨ƒ ]6³כֳ׃ך{t–G׳x±-ֲ½ן2§¬-ְו:י™°d.D¿÷j׀ ^!ו»\} h^9 ¼H,M3ּeƒ„El ׃3ר[»¶]׳‘דת+Bק >sֹ9“‡<ח7לס10סˆ$q¶מ²8Rזˆ”ף נg 'ךצ6«Z'אZuֶ·םZ"›ױu]5hs\€ל ִE"-“¦e‎@עױ›ׁטד¹ ›ע ¡‏,גג¦†“ש‎‎TIS §!ט¦9»ƒשו]6m™„W)ט§>טc¿|ה®¬תץ‏ֻ¯¿9¸{ִu‚÷G mvIש_aֹ~¾¥‹¿›לי¯־¿רֳָSר*ָ]ֶW@>_R\·ֱ-”ֻ¢zר0לH·:u¥)ֲ2†AT®ר0ֽ—ֲ£ֿF'Fע¿}• ¯_{!זֻ‚ PI˜ײ‎Kwa–חR¶־s U˜ל½]gOVP$בK"JrPj>sכ!Fˆ0רלַrxֲ¥bגW6×’ִO9i(rזG ִװC,סא‡ף²רr¾²ֶ¾ס‘h§Qק rו· ˆtן÷B}]ךֻגrת«"]ר¥Dll p—ׂ­וע®ז9‹U‏´ע׳w%¡)ַן}‰ƒcש€ $–¹r«w[²‏Nl2eיײם\RB7ג™ƒn₪`׀%®›S—-ןj`יh, S˜ִiב>'.FהקY±^h.¯׃ָCֽF–¹ִײ½B³±¥´™׀/¿zY€U«'‘H x´2ֵ׃`o%±Xע $6 ׂ^=ֶ!L Y€־c%…cvב€b•¨wy ֻ¶‰uN ‚¬"~דv>א…ט ֲ"‰¾|%±—:V´¿m¯¦ Y‎׀¡MZO‡ֳ״l פ ׂ¢פִמֲ¸ֱט«ל‹8סt¯נsD˜'ˆ„^Bל’ְ!÷#*W™ֻ¸€"±¥Z¹גO±—יע״“ְWy•+M™oך(Dַ?װ!מ ְZ*כ6…±f¾±»’mU?«bֲsחֳףmµ•»/Z@÷b. ‡Mnה£ֻ?Wƒׂ"v¸‰ּ@R™c Q¦¢{n×דב,ל|) 2לשoe¨ƒ¯™zYױ מ”¢צצWפִ,גץ¥a§<ƒ:tV«X±הJ µֹ¸† “‘•o×\}?פֻ§O”ZiIבM‡ָWeLשךT"ג‎pָƒ\׃²qֿײ£GD!·R NwBp)a‎sY1·Joֶ>װE¨ˆ+N8E÷\±FGW3#g׃×p€8m%ײ8t]I¥ ¼Yִ§Gׁח}UP_b¿ם™ץq-צ«ג7צ ִ¶¨¼‡!vR‚PV»D_ ¥j@¼Kֻ¯¥\c”/ּAD+h‚s2ו—ףנ€ָ|׃tם½/A— PZ‰>חNר“ֳ׳(ִ5÷/ק¶W‏¾!>ַׁ<ְ…¯ֲ}טש…’K״תYKנ‰'ֶׂBט^¨Mע™‘kH¾±#B>¦W›G€ִײמ¦”U°״b׀.v4רא>>«nDפׁY¢ֲה™Qzױֵב Bֹּ"ִƒכnי£D¦יA ףֶ‹­%´׃T— ןֲע­ם׃ֶ>Gg"ּֿ_#?­0ְ²ט'†!6¹מ0…: … ה= )„½ƒ8׃M/µ₪ֱ¥ס־ב%)‰±Aˆ«Iב;פ<¾U{ֽ>cּ6¾Im־פ°ְB·ן1Q[[ .r{›ֱײr´4:ֹzµ„Z?ֵxֱװNI@¦uֶֽ׀¾N ¼–״פ™}ט־lת¯_ֵגZp´:ktoֲ~ jפֵ`)ˆL·$€‹T&¿ױׁ–ֲר1!׀‰¾IP= S(½gקׂם¾g£ֹ€NָײG~= $ב½M*םW×b«M P½‘ֻ+[`¼11p lDo1ע›|5±  c?›6G¥ֹ6®‚Q[־” ג#ׁ–]—kvנ%²|װֽ‹xzמQ¼´±µן]¢¾WZ¼=[˜±‹tGם¢ ׃;)ק"ש¥wR¡וGמAח-]j¯Oג6י.ג6 ¨Zֹ׳7פ(˜pו?"(.Gאב›ט7ֵ״$ אYֲטפֱ¶rkL¼‹‰;Q^Ie©בק5$ ְֽ¥ְ€*ה3ƒ|t\I÷¡sAt§‎mְ7I­¢-U±]Y!nK0€r״5`.ה›­ר½¯ל#׳‘ק .Wכ?ט‎P^h§ש¾ט±/Oת~@„קֶ hׁ®¿1±ה±¯<ַנׁװaְ½bL wלe‰Oֳ]ך‚W$EK•d{‰’T¶z¾)­)—ֵTY ‘V! 2׀פ ¾™`ת3GA€O{ל£>ֹ~8qGְח@I, ג;6ל§ג$ה>f…מe¾¢9¼ָי?fv;²ק/א&{bvקZ rי׳קףי$\2†־תח²z/פSvq¢§×?ִײ=OֶID·NBר{Rד םי־N+EseS€‎Eaָ‰©Y״E ­ta{²m .EזC‘‹5Aַ!q¸6¢_I–,…ׂ‘l~fִג®@SWֳQ…5’5ײ׀“<צd¨X¢ך½D~x-¾d…)׀E/j~:y TE Z˜¿jT\"װ¯Eiְe­tu¦¢e¾*>< ²ײ׀D³Cd¬ײ\m$Vמּ‡ˆkqx—שZפ µT½­NױLףO†־_—X`לAjםָ"”©r+p%$Odׂ<ָ.a·| €ׂ%ֹ"^ְ:ƒK -,– ךת›agˆ®₪gֶkכן–w7tעM5רךֻײy½Ql^!wן$±qg½C׳ד™_uּv’י ן·‹@a]ם+°u]מLza¶ןאי;Hֲ%}”־zְ1ַ·¬A װע–†4ש\Mƒ‘,“ X*HַֿAֹֹ.׀cN~j׀חֻy–_Wא”¨zן־רR~א פR¦µ9F¾Jׂ;&ס@א\ֵ;A×ם#›9}´י½ T%%ב¿²gPoVי¸' @0vי³9א3N_ag@€´7ץֶ>KH'U¬סt”lfmמ>טװU־ג€–M†¼ך קֹ‚ֳָ»ֹפה¦׀@¾ז( LHש«lװד“ְ ;ױ§׀׳ךdי`€zx°oנ0)H|‎“ %₪vG:_y”JVzדR×bzבֽx«jˆ~l^¹’1ׁ“״/׃fo%½5}חoJחHMױצאv«€ֲַָƒt¾}ע7SQ רUS?ה•¦©YעhTOXA £xmמDְ½Cֵ3"ֿU2ֲ\H€לzXe'צח׳iDT#!;פֱן=©ָ=״½c;׃…L¸x?PG׳ְRעְכ'4Pa„±4Sנs$&י_¢׳ְ5¶”ה*J};8וֿ„6tˆ5צ "פ!…56׀Eת״iHֱן !n±U1„v°4׀E’ז־«₪¬giִA%gA3p#v©*Dװ÷¬«\aI—‏M\¡*BGZ×¢‘HTס^´J )|»ֳֻתˆ©zפ+‰פנ6SIA.ƒ§‰ !Oaמdה»םp׃{הV6YL]?ְkLJom־¼,׳פA7BW׀±u `$M‘ִי'ה™ן!MKf }ֹXGˆ›FC״¼<ְְ¡גא ²@ˆZ־ָG³ֵ€&¥Sntּ”K¾x7|¶Kmpp#ׁs׃e*O&z‰c׃ֲ²§ּהM®»˜µ¶ף–:עט»‚vט8eFְ›-(n|הװןx E%|c,YO}U “‘…‹ַ‡ J‏/hֿםm0ת׀Fֹ6ֲׂ5JC0‡¢oו‎2R~kLLˆ—קT$8׳E ]‚ׂe ;=[§ֲ“ׁ©|ץפ©´M%rנזrˆ´יגד‎?µ¶~¡);¢שJ1ד®²˜¿˜Eָ¾‹wװֱQ› jִִRל³&^¼©A]¬יV^ע‡«s‘+pGv¹´Lײƒ@i^×½ג^B4‰iַ>w7¸>±זֵCףN€$ׁ=ומ®Ksxע9״o'םtדֵכגA]Y8אiֱש:&¾q,‚0„±OץQI 0פVׂ N·w8W†ױ¹4`'״H ´}¸>W±ײ‘¯(£=¹!Y€`zֽ{Yy“1ך¡€sֳ–d¯W†¨FB)7>˜ׁH¸™v¨›X´÷‰E ; ·‘ J#wlן“ נ\T7% aבײֿ׀־kן׳₪qcב‹s¨0©פ¬J¼k.ƒ¿ה‎Gס[D$ֲ,Aי [8M8­Wס¯ד×'‘0ט¸נ¦±r²ׂ!ִn׀«`Kalg$`•6´|Zttג[Dֻ.’¸טM×כ]–׀זי…;₪Hםb¿ע¬ט“<םi­0L( §_”װX6°aֽBמ½ג גk׀ף׳W qו¸ַׁ¾Fל«8ַ›ֱqע’ה&ׂ°628 /‰rˆם#oמ¾xצ @¡N“D«`6LםzתA$"† °ac*.A«@_בg^¸pyז+‡¸3mTKֻסJר4lּר›שwxירo0ְכb’ =kWכן½ױג¯¥T׀™«~װ7‘ֳװכ•[׳„ֽ:שב ַAֶ5g7I§y/כHם o” ‡­_Q׃³Z?ל5h[¢¶₪ט1ו$ KF"i24{¦~©b†¶HE׳¹ ְNS‚F“„G¾¶WL צכk½Hy_GִמTg‏קu)׀6¸כ8 ~<1dִrט׳ dח‡¸כAyרצ‘6־'€¡?ה‘ ֶװJ ֶ^£ַ'vdHװlֲ»fף‰*˜-ָvס·-xaSR9P›’#€«¨Nׁ";QTױ*BF…mD¨!;oa_#¶}1שw‏J72!׃&‘‘ֹ Cײ₪9ס72(£,–1¯F×EQ?„ֵ›<2$ַld V 0װ<¹DeH‘³ֹ­)oo#ן¸ֹT™d7n“;k₪>ִ·ƒכב+ְ¯AO„Tבֶ%>`¿~yז›`עבע,?ם†r}˜ט m‚ג9צ„X6 ]ך פY@ג¯צ^*—ֱGaZ6xi x¿¿y4ֶy&v §¢‘D)ְU .;װ¦¦¹µקףi%/¢@ק‘¢ט‡¸6_½,€Aֽ8v÷ )ֽ1(׃?—}ׁc½פ¥°%‰?b1jנֶ$ƒ‘ “†´Kˆ>גk^<‚m²"!cnM{}ֱF¾¾ri ,.`2/.´r}M ¸ֶAQP¨f8} ¸ ER)ְ•םpׁ‚ְ€)¯c‚׳o„ױµ8e_פר|ף>u€ƒ0¹ל‏–װct»פ ױעֹ±&_kגלf׀“רֶTˆ³במ ח+ת’hֻזֹT8פ״¶U »%בֻ0¶‹ׁCy§0´ש«Aז¥»נֱ•ט%בa° gז'x|dי€ׁQ³עֹpָ::#טƒcQ{ ‎zו¯P¨§o30‹~„נf6 ¡ײת”+Eז(¡0Uִ)™ְ %ע)Onr+₪אrC­HˆםT8rֹ׳׀@®qַ'5¬@ן÷,ַJHcע} ¿‚² ׀»ןp?L!ֵ×_ֹ­—‚rי~€.—DC]ּ9־גB0b[¼Aוָ©#4/M%¦ֹE£ֶהֳִq¶נYmQD9 ֱֶ•µֱ¦ֹׂ»ˆ¾?¹ˆu₪“עכg׳‚₪“ח­ֶ%hֱz§³·x•o=±2÷עmטK›L¶¨²ם/·¢sהRי%בIט£)„¯¬‚מץ>Aן»ֵ{קױ‎†ֱZ¾ְRֵ†Z·ץ¡ mכ]‎r¨bk\ץ¦gjףאָ5qֻם"Vֿh³]aך ז/\ֻ—ײ¶R&±²י`אֱ]·-Pו׀ Gaשµ¡F6·?Iֿ׳¸m¦4ֶש|½£ג¶U¨rj#;¾•Yו]xXְ ֹbo%oR?-B­ם d ֶצC>kwש3dgn₪׀‡¼אV(יVׂ671 ₪_FD †}NQY*חֳ‰זgv_n&“ײ%ְ€Tץב  ×וױ«fץI™$¾ּ³Py@+¹לOױָ;o@7Fh2V­J{ֹֽ 2“׃ז<IN6“ֵmmNׂZal¯Gך'וע0H*hx€£i´ֲjm^Fגד¡XחE®\{–:צ9׃u»ח¯|[¥ „E4ע .¥י‡_ֲ’ְ×צ$xפ/˜ֲֵֹ±Q )«רu±w‹t׃§ˆ²פ:Y8Fp“@–ך·°—×ע ₪• ®D[H Ui``[g3C÷P½¹÷Vף\g¶ֱ¢ױ&ֳ˜R©´מ(זUׂ¼÷ב¿„תqְֶ@<ְ~Dַן‡ֶ1ƒג׳bfםהnjחWaY³'ַ R§"s‏S5d\₪³°XH ְwC‚o5´ק¨ּףזqִR€†‎cd׀sKײh}´אH 6=ָP˜²ב‎טfנƒ:!=‹‡_כ?Jb€ׂ ךiֻ*תbַh£¨ֲt46כk%׳8µגVׂu$ןֹ[e,ֳ‏ˆ‎ׂ\k­Pךt][‎²ך@ֶ7₪kזkִטךשל£ ozWb-[™V±‎ח9}N¢~*|5x8תמךs‚במh׋ױo@tkט9"mnZL5ׁ?—mװm&14‏}Rlָֽ%eS9Cא* אR": ® ֲdDzב'X Ph7 4 ‰ֲhSI)£¦Vבh$Jכ’P¦WE“cf1׃₪ה*…ֲ8½\ֱדלַ@צ¥+כרפC¦[ ע2ָta[0ט ֳ@ַO›טֵ,א7צB>.=h\¡h׃L+*6¡q „O‎¼ƒ/ֵZ’¡>sׁKc_(װ¦ £ֱP†–u×>טeא‡ב|ַ^aךֵ‡‎÷^ְֱ¸÷¹¹קqv‹¿tƒחL;ZIiׂJפ’ף´‰—G¢׳e€ז›o­וכְ!’T קpB}ר9pc3ר¹¨¬owq GDqV‚¾ו|פֵ־½B~s• סL°h¾-r)&?¢k¾פפ¢´ק׃•†¸<8ף‹i»מ"ׂz AפלNף™w ¹א"N„ףץ|sם2תffֻ·׳וaִ?¥0ִ,%~3.'צ*{qע ר {¾aע׳ר‰…`™y.bּ››ׁ§Mצ,<׀דOF€ֽ´%¨א`qֿO Q) ר€·x€~נ³@סCˆןר’IO6כֽ¾ַ²ו7C•k=טµ| 4‘‚´†¬rב₪ֹ~›®†—P’pבiƒS]ֹײ-׀+dq‏Cˆ`.jבs >ֳ&pֲ€ˆ)&D¢lA9‚)ֻr ‘•i\ׂ%‡¹-€—\•eJwזץ¢ƒשֶCMנׁ´~Bֲ)¨~ו³¹  sU‘€פw־ Aֳ$a#מח0ב’× M÷m£~j*מrק¨<\=M1צv'ב";’דkטU$ֱץ,תT{ָ[H¼‡A4,O• §/  1£“0D„™÷J״ƒקגכl]°ה=ׂ¸Vv$°ד’. (ִ+נLd¿AiXט0’4J#ַ­ƒ¸C#€›MˆCְ¶ך₪¢0H3W-$´כy¶=…(”׃׀–.ע!Oֵ3@¿_ ;Eֳ~eמ ˆ/ױH›~הT<$‎ק³)f@$ׂOָUמD;‎צcײ•Bמim  ־hיר‏·Nx‎ָ§מ~ָjְֻ€¢…pMRhֱ!_Zy²­זל[ƒוz]v–Oטu€ְֶ†ׂק@@—ה[P|q_:†: ֽ„`‎©‎D£wJן”q×µ ם™ִַ°”ׁהˆe׳חr ]a¯dֿסiנ«דזƒ־T*ּ÷ֻ5פ…-dץz¹‏B„¦ ב×חo¢¾ּ`ן+_ 2eT@‚=‘ ֲז׃אJfX mJƒ`xֳע7רc ¾‡¸EִC¿}XH·ר«{€D=ד½ˆ?Fl ‚…ס r‹ֳ¼÷ט Cװֹ=¬`  שק•Yׂ>״²ת9 Oƒ׀@£׳ ,_(‚׀ג#s­­®ר‚־ך&pƒ|y¥y‎ :ִ;7”¸‏¹לְ¶‏+א~HxתA Y‏ pnn"צכKdLג;¾v£—ׂ±¥bS\ sS8h•˜-ׁ q‹״j[`T½ 4 ׀S=א“$„L|jX”tָW‎ J>Cֳם3(ת©ֶ‘RSף¨¿׃¶l>!§ע>… ¹' ְע("ד+‰\]8¢עRw95¢ ם ¹²UbןxסC®o ׃ˆ9`¿0·@ֵק…ש9x…O—k"½L„«\׳%0.¼ֶ&Bץ±ױw ‡ˆ6ֿ¦ׁ!>´,@¢¢דo ק׃Ejה<׳”oך¥Xסְ5/ד/2^EWwJ‚«²]…oן‏8>GצםC¾g?³¾§ ׃W?„’₪;®‘6]GcYx!L;;se~u?s@±¾"­|­.  -÷>2Qס0=ק€›ףpqEאצw ‘ופ ³׀)ה|·¡יֵךָ¶¬׀-P\‹ד³‰פl¿Gf]מ”±}ײְ¢$לט+\ֵiב‎0ׂvUל2ִi)תלרא0+_‚yֽ.‹‡ ‰ן4­g¾ֻג=²q¾YX<אgt-ָuUyc7` .bַ @Pסנ<׀ֳtHKְ¼,· „u¾D…ֽ׳{ˆע:ה}{»¸g¸±Op(a ָ™ִm*&›ֽ•כ7½~ָ¹—–¦(ְ•w*?!ץ‏ױֱאמU#‏‏ֱ²„Mַ^%עp[ן’ש$;€f'¯ׂ ;ךTךcה£ר₪:₪‹כ" ­c×V9l {ֽW m=?¹‰Pס~‎› OםYsJ[±¶Yג'ח;ְגaZ‡¦q¹בקײd^%jׁ±ֲ­#©‏$lףj@eאUךט¸‡עi¥‹hלg¹ײם Eט¦!d!b×ב6U ¬‚÷±־]נ®YIµpדG|ע€¯r< גXלא½sֻ£‘m  |ƒNִnף7o89JA״װ¹Iם;yתn2gװ´7בy6תn¾Wa§²C–גa1Pux>'¬U‚ה‡¹Iך1װגקW0ֵ~ִ‘ץT¸vֱ5ˆץaֳ‹@םע!מƒ»D#6d¢דזעד@9T¥ „o®¬V[±+{חבױ-״J|״הַ¸{¢@@ס³ֽ;7V†Dַ׀×wע‡פ&u%¯|a׀¶‡8¥U€י¯§נ&rט´§־d D*S½½ >ֲ־9fא ”!6טצ=°µֱ7I,¬}~נ½$ָ‡8»rTנ?£ר¾‘–!"'ב|׳?ס»0¿¿רW@װרֱx`׀FJ $ףMLׂ׳־ֲ 9‚mgFמֱׂ€yבDדְןOג¦ְyרTl°”ּט¥¬ף4u"¾½+׃o‘'A¬= Aן/aך&ELQ2dt‹„n’ז 1q`*צ '¢ק~ׂו4{ְ¼F×”n}1›f¶ףצֵiQi¶כ‎¾ב‡חJGֳפןף‹‎ר—‏נoע}ח?~ק¾??¿עמקקwֹנ‡?~ק‎?¦ֳֻ¨ש¿‎‏ַן‏ד_¿׃¿רמַ?‎ש‏ןפPKץ¹‏¯ל„PKײ}׳J^ֶ2 ''mimetypePKײ}׳Jk–’˜˜MThumbnails/thumbnail.pngPKײ}׳J-‘uך layout-cachePKײ}׳Jקn5/ֳTֳT5? Pictures/1000000000000122000001906200897DA1ADE3B7.jpgPKײ}׳Jן‰~k״= U^styles.xmlPKײ}׳JA‏O@רzmeta.xmlPKײ}׳Jֳ8@­×‚/ n}settings.xmlPKײ}׳JR…Configurations2/popupmenu/PKײ}׳J…Configurations2/images/Bitmaps/PKײ}׳J'ַ…Configurations2/accelerator/current.xmlPKײ}׳J†Configurations2/progressbar/PKײ}׳JX†Configurations2/toolbar/PKײ}׳J†Configurations2/menubar/PKײ}׳Jִ†Configurations2/floater/PKײ}׳Jת†Configurations2/statusbar/PKײ}׳J2‡Configurations2/toolpanel/PKײ}׳J‎=«¹ƒ j‡manifest.rdfPKײ}׳J0/Y%₪ˆMETA-INF/manifest.xmlPKײ}׳Jץ¹‏¯ל„ @content.xmlPK (hspell-1.4/stats0000755000076600007650000000406711511153644011751 0ustar nyhrl#!/bin/sh unset LANG LC_CTYPE LC_ALL LC_COLLATE make echo echo "Statistics on input files:" echo "--------------------------" echo -n "wolig.dat: " echo -n `grep " ע" wolig.dat | grep -vc "^#"` echo -n " noun lines, " echo -n `grep " ת" wolig.dat | grep -vc "^#"` echo " adjective lines." echo -n "woo.dat: " echo -n `grep " פ" woo.dat | grep -vc "^#"` echo " verb lines." echo -n "shemp.dat: " echo -n `grep " ע" shemp.dat | grep -vc "^#"` echo " auto-generated gerunds." echo -n "misc data lines:" `egrep -hcv "^[-#]|^$" extrawords.hif` "extrawords, " echo -n `grep -hcv "^[-#]" milot.hif` "milot, " echo -n `grep -hcv "^[-#]" biza-verbs.hif` "bizaverbs, " echo `grep -hc "^[-#]" biza-nouns.hif` "bizanouns. " echo echo "Unique baseword counts:" echo "-----------------------" NN=`grep -h " ע" wolig.dat shemp.dat | sed "/^#/d;s/ *#.*$//" | sort -u | wc -l` NN1=`grep -h " ע" wolig.dat shemp.dat | sed "/^#/d;s/ *#.*$//" | sort -u | grep -vc "ע$"` NN2=`sed "s/#.*$//" < wolig.dat | egrep ",(זכר|נקבה)" | grep "ע,"| wc -l` NN3=`grep -h " ע" wolig.dat shemp.dat | sed "/^#/d;s/ *#.*$//" | sort -u | egrep ",(יחיד|רבים|ות|ים|יים|אות)" |wc -l` echo Nouns: $NN "(of" them, $NN3 need plural hints, $NN1 need inflection hints, $NN2 explicit "gender)." VV=`grep -c -- ---- verbs.hif` echo Verbs: $VV AA=`grep " ת" wolig.dat | grep -v "^#" | sed "s/ *#.*$//" | sort -u | wc -l` echo Adjectives: $AA EE=`grep -hv "^[-#]" extrawords.hif milot.hif biza-verbs.hif biza-nouns.hif | sed "s/ *#.*$//" | tr -d - | sort -u | wc -l` echo Other words: $EE echo echo Total number of base words - `expr $NN + $VV + $AA + $EE` echo echo "Final word count:" echo "-----------------" # we can count words in hebrew.wgz even without compiling wunzip :) WW=`zcat hebrew.wgz | tr [0-9] '\012' | grep -vc "^$"` echo Unique words in hebrew.wgz: $WW echo "Dictionary file sizes (in bytes):" wc -c hebrew.wgz* echo "Memory use (spell-checker only):" gzip -dc hebrew.wgz | ./find_sizes >/dev/null # NOTE: to find duplicates in wolig.dat: # grep " ע" wolig.dat | grep -v "^#"| sed "s/ *#.*$//"|sort |uniq -c | sort -n | less hspell-1.4/milot.hif0000644000076600007650000000740411776617223012512 0ustar nyhrlשל שלי שלך שלו שלה שלנו שלכם שלכן שלהם שלהן ------- #ב בי בך בו בה בנו בכם בכן בהם בהן # בם is an alternative for בהם, according to [1], [3] and [4] בם ------- בין בינות ביני בינך בינו בינה בינינו ביניכם ביניכן ביניהם ביניהן # according to [2] and [4]: בינם # according to [4] only: בינן ------- #ל לי לך לו לה לנו לכם לכן להם להן ------- על עלי עליי עליך עלייך עליו עליה עלינו עליכם עליהם עליהן ------- די דיי דייני דייך דיו דיה דיינו דייכם דייכן דיים דיין ------- עם עמי עמדי עמך עמו עמה עמנו עמכם עמכן עמהם עמם עמהן עמן ------- אחרי אחר אחריי אחריך אחרייך אחריו אחריה אחרינו אחריכם אחריכן אחריהם אחריהן ------- אין אינני איני אינך אינך איננו אינו איננה אינה אינכם אינכן אינם אינן ------- את אתי אתך אתו אתה אתנו אתכם אתכן אתם אתן אותי אותך אותך אותו אותה אותנו אתכם אתכן אותם אותן ------- אל אלי אליי אליך אלייך אליו אליה אלינו אליכם אליכן אליהם אליהן ------- אצל אצלי אצלך אצלו אצלה אצלנו אצלכם אצלכן אצלם אצלן ------- אשרי אשריך אשרייך אשריו אשריה אשרינו אשריכם אשריכן אשריהם אשריהן ------- בגין בגיני בגינך בגינו בגינה בגיננו בגינכם בגינכן בגינם בגינן ------- בגלל בגללי בגללך בגללו בגללה בגללנו בגללכם בגללכן בגללם בגללן ------- בלעדי בלעדיך בלעדייך בלעדיו בלעדיה בלעדינו בלעדיכם בלעדיכן בלעדיהם בלעדיהן ------- בלתי בלתך בלתך בלתו בלתה בלתנו בלתכם בלתכן בלתם בלתן ------- בעד בעדי בעדני בעדך בעדו בעדה בעדנו בעדכם בעדכן בעדם בעדן ------- הנה הנני הנך הנו הנהו הנה הננו הנכם הנכן הנם הנן ------- הרי הריני הריהו הריהי הרינו הריהם הריהן ------- יש ישני ישך ישנך ישנו ישנה ישננו ישכם ישכן ישנם ישנן ------- כמו כמוני כמוך כמוך כמוהו כמוה כמונו כמוכם כמוכן כמוהם כמוהן כהמה כהנה ------- כמות כמותי כמותך כמותך כמותו כמותה כמותנו כמותכם כמותכן כמותם כמותן ------- כול כל- כולי כולך כולו כולה כולנו כולכם כולכן כולם כולן ------- לאט לאטי לאטך לאטו לאטה לאטנו לאטכם לאטכן לאטם לאטן ------- לבד לבדי לבדך לבדו לבדה לבדנו לבדכם לבדכן לבדם לבדן ------- למען למעני למענך למענו למענה למעננו למענכם למענכן למענם למענן ------- לעומת לעומתי לעומתך לעומתו לעומתה לעומתנו לעומתכם לעומתכן לעומתם לעומתן ------- לפני לפנים לפניי לפניך לפנייך לפניו לפניה לפנינו לפניכם לפניכן לפניהם לפניהן ------- לקראת לקראתי לקראתך לקראתו לקראתה לקראתנו לקראתכם לקראתכן לקראתם לקראתן ------- מן ממני ממך ממנו ממנה ממנו מכם מכן מהם מהן ------- מול מולי מולך מולו מולה מולנו מולכם מולכן מולם מולן ------- נגד נגדי נגדך נגדו נגדה נגדנו נגדכם נגדכן נגדם נגדן ------- נוכח ------- עד עדי ------- עוד עודני עודך עודו עודנו עודה עודנה עודנו עודכם עודכן עודם עודן # עודי, as another form for עודני, is not recognized by [1] but quite useful # in modern language, and is recognized by [4]. עודי ------- תחת תחתיי תחתני תחתיך תחתייך תחתיו תחתו תחתיה תחתנה תחתינו תחתיכם תחתיכן תחתיהם תחתם תחתיהן # strangely, [1] and [4] don't mention a "תחתן" being legal. ------- # [1] and [3] say that these are not actually correct without an additional # bet in front of them (בעבור). But common modern usage allows not to add the # additional bet. עבור עבורי עבורך עבורו עבורה עבורנו עבורכם עבורכן עבורם עבורן ------- # [1] and [3] say that these are not actually correct without an additional # על in front of them (על אודותי). But common modern usage allows not to add # the additional על. # # Note that these are the correct inflections (according to [1], [2] and # Rav Millim and). Forms like 'אודותם' are not considered proper inflections. # Nevertheless, the ravmillim.co.il web interface does recognize אודותם and # gives the inflections of אודות, including אודותיהם of course, not אודותם. אודות אודותיי אודותיך אודותייך אודותיו אודותיה אודותינו אודותיכם אודותיכן אודותיהם אודותיהן ------- # these do not appear in [1] - I hope I wrote them correctly... It is mentioned # in [2]. The following inflections can be generated by wolig, with # "כלפ ע,אין_יחיד", except we should also drop the nifradim form (כלפים). כלפי- כלפיי כלפינו כלפיך כלפייך כלפיכם כלפיכן כלפיו כלפיה כלפיהן כלפיהם hspell-1.4/INSTALL0000644000076600007650000001265111705622521011714 0ustar nyhrlThe README file describes what Hspell is and what it includes. This file explains how to build and install it. =========================================================================== Hspell is normally installed and used in one of two ways: 1. Native Hspell: Hspell can be used as a command-line tool "hspell", and/or using a library libhspell, together with a dictionary in Hspell's own format. 2. Derivative dictionaries: Hspell's dictionary data is compiled into a format used by some common multi-lingual spell-checker, such as aspell, myspell or hunspell. One benefit of the native Hspell method is much better peformance: When Hspell's native spell-checker is compared to hunspell, for example, it is 10 times smaller on disk, 10 times faster to start, uses half the memory, and spell-checks hundreds of times (!) faster. Hspell's code also has additional features that no multi-lingual spell-checker currently supports, especially morphological analysis. The benefit of generating dictionaries for one of the existing multi-lingual spell-checkers like aspell or hunspell are obvious: no additional code needs to be installed, so it will work on any system where such multi-lingual spell checker works. Even more importantly: Large applications, such as OpenOffice, Firefox and even Google's Gmail, which already use aspell or hunspell to provide spell-checking for many languages, gain Hebrew spell-checking without any extra effort. ============================================ Native Hspell =============== Installing Hspell on a Unix-compatible system (Linux, Unix, Mac OS X) is usually as simple as running ./configure make make install Note that before running "make install", if you want to run the hspell executable from the build directory, you must tell it to expect the dictionary files in the current directory, rather than in their final location. Do this by running "hspell -Dhebrew.wgz". By default, Hspell is built for installation in the /usr/local tree. If you want to install it somewhere else, use "./configure --prefix=/some/dir". The --prefix option is just one of configure's usual options that give you more control on the way that Hspell is compiled - run "./configure -h" to see the entire list of these options. In addition to configure's usual options, Hspell's configure add a few options whose names start with "--enable-", that enable optional features in Hspell. These are the options you might want to use: --enable-fatverb Allow "objective kinuyim" on all forms of verbs. Because this adds as many as 130,000 correct but very rarely-used (in modern texts) inflections, a compile-time option is present for enabling or disabling these forms. The default in this version is not to enable them. --enable-linginfo Include a full morphological analyzer in "hspell -l", explaining how each correct word could be derived. This slows down the build and makes the installation about 4 times larger, but doesn't slow hspell if "-l" isn't used, so it is recommended. These optional features are not turned on by default because they present a feature/performance tradeoff (you get more features but slower build, larger installation, and/or slower executable), or a feature/feature tradeoff (when you add more rare word forms, you're allowing more spelling mistakes to masquerade as real words). ============================================ Derivative Dictionaries ===== After you run "configure" as explained above, the Makefile has additional targets for creating dictionaries for several common multi-lingual spell-checkers and applications: Except where otherwise noted, these dictionary faithfully reproduce all of Hebrew's morphological richness as understood by the native Hspell spell- checker. This includes correctly allowing the various prefixes used in Hebrew, and not allowing them when they are not appropriate (e.g., the definite article on a verb). "make hunspell" - Creates the files "he.dic" and "he.aff". These dictionaries are uncompressed. It is recommended that they be compressed with "hzip". While hzip compression is not as good as aspell's prezip-bin (or our own wzip), this is the compression format which hunspell understand, and still can compress he.dic to a tenth of its original size. If you package these files, please also package misc/Copyright, so that users know they were generated by Hspell. "make aspell" - Creates the files "he_affix.dat" and "he.wl". Additionally, one can do "make he.rws" to create he.rws from he.wl. (rws is a dump of aspell's in-memory hash table, which allows aspell to mmap(2) the dictionary almost instantly, instead of reading it). Unfortunately, there is one case where the aspell dictionary cannot correctly reproduce Hspell (because it lacks hunspell's NEEDAFFIX extension): In Hebrew, the infinitive verb may be preceded by the prefixes lamed, bet, kaf or mem, but often must not come without any prefix. We have not yet found a way to express this in the aspell, so words like ישון are incorrectly accepted as correct. If you package these files, please also package misc/Copyright, so that users know they were generate by Hspell. ============================================ Additional Targets ===== Finally, there is a target, "make hif", for creating a full inflection list which might be useful for other future applications besides spell-checking. For more information, see README-hif. hspell-1.4/spellinghints0000644000076600007650000002467010351621053013470 0ustar nyhrl+נטיות המילה "את" (כבמשפט "ראיתי את הילד") הן יוצאות דופן. בגוף ראשון ושני מוסף +וי"ו ("ראיתי אותך"), אך בגוף שלישי לא נוסף הוי"ו ("ראיתי אתכם"). +הצורות "אותכם" ו-"אותכן" הן שגויות, אלא אם כן באות כהטיות של המילה השונה "אות" +(במובן סימן). אותכם אותכן +כנראה התכוונת לכתוב "אימא". +לפי כללי הכתיב חסר הניקוד ("כתיב מלא") של האקדמיה ללשון העברית, הכלל הוא +שתנועת "i" בהברה פתוחה יכתב כיו"ד, אלא במספר מקרים יוצאי דופן, כמו למשל המקרה +בו המילה נגזרת ממילת בסיס שבה לא הייתה תנועת "i". אולם לפי החלטת האקדמיה +המילה "אמא" אינה נחשבת כנגזרת מהמילה "אם", אלא כמילה נפרדת, ולכן תיכתב עם יו"ד +לציון התנועה: "אימא". אגב, המילה "אימא" נחשבת (לפי מילון ההווה) לצורה עממית +של המילה "אם", ויש להעדיף את האחרונה ברוב השימושים. אמא +כנראה התכוונת לכתוב "הכול". +לפי כללי הכתיב חסר הניקוד ("כתיב מלא") של האקדמיה ללשון העברית, המילה "כל" +תיכתב עם וי"ו נוסף, "כול", כשהיא באה בצורת הנפרד. לדוגמה, "שהכול נעשה בדברו", +"הכול עובר, חביבי". אולם כשמילה זו באה כנסמך, היא תיכתב ללא וי"ו, כדוגמת +"כל הילדים אכלו". +הצירוף "הכל", כלומר המילה "כול" מיודעת ונסמכת, הוא נדיר, וברוב המקרים הכותב +התכוון לכתוב "הכול". אבל יש מקרים בודדים בהם השימוש ב"הכל" מוצדק: למשל "האל +הכל-יכול". הכל שהכל +כנראה התכוונת לכתוב "שייך". +לפי כללי הכתיב חסר הניקוד ("כתיב מלא") של האקדמיה ללשון העברית, יו"ד עיצורית +תיכתב בדרך-כלל כ-"יי" (מלבד במספר מקרים שזה לא המקום לדון בכולם). המילה +"שייך", כדוגמת "ספר זה שייך לי", תיכתב כך, ולא "שיך" (שמשמעותה "השה שלך"). שיך +כנראה התכוונת לכתוב "הייתה". +לפי כללי הכתיב חסר הניקוד ("כתיב מלא") של האקדמיה ללשון העברית, יו"ד עיצורית +תיכתב בדרך-כלל כ-"יי" (מלבד במספר מקרים שזה לא המקום לדון בכולם). +המילה "הייתה", כדוגמת "היא הייתה יפה", תיכתב כך, ולא "היתה". +אכן קשה להתרגל להוסיף יו"ד למילה כה נפוצה וקצרה, אך זו החלטת האקדמיה. היתה שהיתה +לפי כללי הכתיב חסר הניקוד ("כתיב מלא") של האקדמיה ללשון העברית, יו"ד עיצורית +תיכתב בדרך-כלל כ-"יי" מלבד במספר מקרים. אחד ממקרים אלו היא שיו"ד עיצורית לא +מוכפלת ליד אם קריאה - למשל "קריה". אולם, יש לזכור שה"א עם מפיק (הבאה לציין +שייכות) נחשבת עיצור, לא אם קריאה! לכן המילה "בעטייה" נכתבת כך, עם יו"ד נוספת. בעטיה +לפי כללי הכתיב חסר הניקוד ("כתיב מלא") של האקדמיה ללשון העברית, יו"ד עיצורית +תיכתב בדרך-כלל כ-"יי", אולם היו"ד לא תוכפל ליד אם-קריאה (וזאת בנוסף למספר +כללים נוספים שלא זה המקום לדון בהם). +לכן המילה "מצוין" תיכתב כך, ולא "מצויין". מצויין מצויינת מסויים מסויימים מסויימת מדוייק מדוייקת יצויין פרוייקט +צורת הרבים של המילה "פרי" הנה "פרות", בפ"א צרויה. אין סיבה, גם לא לפי כללי +הכתיב חסר הניקוד של האקדמיה, להוסיף יו"ד ולכתוב "פירות"! +העובדה שצורת הרבים של המילה "פרה" גם היא "פרות" אכן מבלבלת, אך היא עדיין לא +סיבה מספקת להוספת היו"ד שאינה במקומה. פירות +לפי כללי הכתיב חסר הניקוד ("כתיב מלא") של האקדמיה ללשון העברית, תנועת "o" +שמקורה בחולם תיכתב בווי"ו. אולם זה לא המצב במקרה של קמץ קטן או חטף-קמץ - אז +תיכתב וי"ו רק אם במילה הבסיסית היה חולם. +לפיכך במילים שנכתבות בקמץ קטן או בחטף-קמץ בכל צורות המילה, אין להוסיף וי"ו. +לדוגמה: "תכנית", "קרבן", "חכמה", "אנייה", "נכרי", וכן "קדקוד". +יש לציין שלמרות שכלל זה נתקבל ע"י האקדמיה, הוא אינו מקובל על מקצת הבלשנים, +שמעדיפים היו לסמן וי"ו בכל מקום בו נהגית תנועה "o", כולל הקמץ הקטן וחטף הקמץ. תוכנות תוכנית תוכניות תוכניתו התכנית לתכנית בתוכנית התוכנה התוכנות קורבן קורבנות קדקד קודקוד אונייה אוניות אוניית אופנה אופנת אופנתי אופנות האופנה עוצמה עוצמת עוגמה עוגמת עוגמות חוכמה יוזמה אובדן נוכרי נוכרייה נוכרית נוכריים נוכריות +"מילון ההווה" (של שושנה בהט ומרדכי מישור) מציין שהמילה "אחזקה" איננה תקנית - +המילה הנכונה היא "תחזוקה". אחזקה אחזקת אחזקות +כנראה התכוונת לכתוב "שוויון". +הווי"ו במילה "שוויון" באה בשווא נח, ולכן לפי כללי הכתיב חסר-הניקוד של האקדמיה +לא נוספת יו"ד לציון התנועה. הווי"ו עצמה מוכפלת מכיוון שמדובר בווי"ו עיצורית +(נבטאת כעיצור). שיוויון שיויון שויון +הביטוי "לחלופין", במשמעות "כהצעה אחרת אם ייפסל הדבר שהוצע מקודם", נכתב כך, +עם חטף-פתח בחי"ת, ולא חיריק (ולכן בוודאי ללא יוד נוספת אחרי החי"ת). לחילופין לחליפין +המילה "אכסון" משמעותה אירוח, מתן מקום מגורים ארעי (כמו במילה "אכסניה"). +אם התכוונת להחסנה, שמירה במחסן, הרי רצית לכתוב "אחסון", בחי"ת. אכסון אכסונה אכסונו +לפי כללי הכתיב חסר הניקוד ("כתיב מלא") של האקדמיה ללשון העברית, בדרך כלל אין +יו"ד נוספת לציון תנועת e, אלא במקרים מסוימים שאין זה המקום לפרטם. ישנם מספר +מילים בהם נפוצה השגיאה להוסיף יו"ד בניגוד לכתיב התקני: מילים על-משקל ממד (ממד, +מצר, מסב), ומילים על-משקל ברכה (ברכה, קדרה, שרפה). מימד מימדי מימדים מירב מיחם מיחמים מיצר שיער השיער בריכה בריכת בריכות קדירה קדירת שריפה אסיפה אסיפת אבידה אפילה כרישה +לפי כללי הכתיב חסר הניקוד ("כתיב מלא") של האקדמיה ללשון העברית, יש להוסיף יו"ד +לציון צירי אם הצירי בא לפני אותיות הגרון במקום חיריק. לדוגמה: בירך, ליהנות, +תיאור, חירום, אירוע, קירח. תאור קרור ארוע חרום פרור פרורים +לפי כללי הכתיב חסר הניקוד ("כתיב מלא") של האקדמיה ללשון העברית, בדרך כלל אין +יו"ד נוספת לציון תנועת e. אבל, אחד המקרים בהם האקדמיה דווקא קבעה שיש להשתמש +ביו"ד לציון ניקוד הסגול, הוא בשמות על-משקל היכר (היכר, היתר, הישג, ...) וכן +בשמות הנגזרים מאלו בתוספת סופית, כגון היכרות (וכן הישגיות, היקפי, וכו'). הכרות הכרויות השגיות +לפי כללי הכתיב חסר הניקוד ("כתיב מלא") של האקדמיה ללשון העברית, אין מוסיפים +יו"ד לציון ניקוד החיריק במילה שבסיסה מילה שבה לא הוסף יו"ד (כי לא היה בה +כלל צליל i). כך לדוגמה, "אמתי" נוצר מאמת, ואין לכתוב "אמיתי". וכך גם צורת +הריבוי של "מס" הנה "מסים", ולא "מיסים". יש גם לכתוב "אתו" ולא "איתו", +"הנו" ולא הינו", "אטי" ולא "איטי". אמיתי האמיתי אמיתית האמיתית אמיתיים האמיתיים מיסים ניסים איתו איתך איתם איתה איתכם לעיתים הינו הינה איטי +האקדמיה ללשון העברית החליטה שאת המילה "מיד" יש לכתוב כך, ללא יו"ד נוספת גם +בכתיב החסר הניקוד. מכאן (שוב לפי כללי האקדמיה) גם המילים הנובעות ממנה, כמו +מידי, מידיים או מידיות, יש לכתוב כך. כך, למשל, משמעות המילה "מיידי" היא זורקי- +(סמיכות של מיידה), ולא ללא-עיכוב שצריך להכתב "מידי". בדומה, המילה "מידיים" היא +צורת הריבוי של מיד, ואילו "מיידים" היא צורת הריבוי של מיידה. המילה "מיידיים" +היא סתם שגיאת כתיב. מיידיים מיידיות מייד מיידית +לדעת האקדמיה ללשון העברית, אם-הקריאה אל"ף איננה מציין אמין של תנועת "a", ולכן +אין להוסיפה לתעתיק מילים לועזיות, פרט למילים ערביות בהן יש אליף במקור. +לכן, לדוגמה, יש לכתוב פרק, קלסי, שיקגו, ולא פארק, קלאסי, שיקאגו. +אגב, מקצת הבלשנים, ובהם יצחק אבינרי, התנגדו לנוהג זה של האקדמיה, ומילון +רב-מילים נוהג לכתוב בכתיב חסר-ניקוד פארק, קלאסי, אבל - שיקגו. פארק פארקים פארקי הפארק בפארק שיקאגו קלאסי קלאסית קלאסיות קלאסיים קלאסיקה קלאסיקות סאטירה פיראטיות נפאל נפאלי סלולארי פאניקה מאפיה מודאלי מונוגאמי מונוגאמית פוליגאמי פוליגאמית מונומנטאלי פטריארכאלי מטריארכאלי מינימאלי פורמאלי פורמאליות סטאז' סטאז'ר סטאז'רים סטאז'רית סטאז'ריות פגאני פטאלי פאזה פאזות פנומנאלי פסטראמה פרגמאטי פרדוקסאלי פרדוקסאליות פרונטאלי פרונטאלית פרוצדוראלי פרטיקולארי פרפראזה פאתוס +המילה האנגלית flash מנוקדת בעברית בסגול, ונכתבת ללא אל"ף: פלש פלאש +המילה "תוככי" אולי נשמעת תחליף ספרותי יפה למילה "תוך", אך למעשה, לפי "מילון +ההווה", היא נחשבת ללא תקנית. תוככי +מילים המסתיימות בצליל "iya", כלומר חיריק-יו"ד-ה"א, יקבלו לפי כללי הכתיב חסר- +הניקוד את הסיומת "ייה". לדוגמה, חזייה, עירייה, שנייה. ישנן מילים שאכן מנוקדות +בחיריק לפני "יה" אך הציבור אינו מודע לכך, לדוגמה: עגבנייה, לחמנייה, חמנייה. +למרבה הצער ישנם גם מקרים הפוכים, בהם האות שלפני הסיומת "יה" מנוקדת בשווא +(ולכן אין לכפול את היו"ד) אך הרוב שוגים ומבטאים חיריק ובטעות גם כותבים "ייה". +לדוגמה, יש לכתוב: סוגיה, חוליה, קושיה, כנופיה (יש לקרוא מילים אלו על משקל +"חולצה"), וכן נדוניה, קנוניה, טרוניה עגבניה לחמניה צרכניה חמניה אוכלוסיה עיריה זכיה שניה השניה מרכזיה סוגייה חולייה קושייה שולייה כנופייה נדונייה קנונייה טרונייה ערבובייה סימטרייה +"מילון ההווה" של שושנה בהט ומרדכי מישור, מסביר שהמילה "פרשייה" אינה תקנית, +ויש לכתוב "פרשה". השיבוש "פרשייה" נוצר כנראה מהמילה "פרשיות", אחת מצורות +הריבוי התקניות של "פרשה". פרשייה פרשיית +"אוגדן", לציון השם העברי של תיק ניירות, נחשב ל"לא תקני" (מילון ההווה) או +לשפת דיבור (רב-מילים). המילה התקנית היא "עוקדן". +אוגדן +אוגדנים +אוגדני +ההיגוי והכתיבה "גניקולוג" הם שיבוש. הנכון הוא "גינקולוג". גניקולוג גניקולוגית גניקולוגי +הנטייה של מילת היחס "אודות" לגוף שלישי רבים (הם) היא "אודותיהם", ולא "אודותם". +זה כמו שהנטייה לגוף שלישי יחיד (הוא) היא אודותיו, ולא אודותו - הנטייה נראית +כאילו "אודות" היה שם עצם ברבים - ולא כמו נטייה של שם עצם ביחיד. +אגב, יש לשים לב שהשימוש במילה "אודות" ללא "על" לפניה נחשב ללא תקני. יש לכתוב +"על אודות", "על אודותיהם", וכד'. אודותם +האקדמיה ללשון העברית החליטה שבמילים ממוצא יווני שנתגלגלו לעברית מלשונות אירופה +ונוהגים להגות בהן את ההגה [z] יכתבו בזי"ן. לדוגמה: פיזיקה, פיזיותרפיה, מוזאון. +למרות החלטת האקדמיה, השימוש במילים כמו מוסיקה ופיסיקה עדיין נפוץ מאוד. מוסיקה המוסיקה מוסיקאי מוסיקאית מוסיקאים מוסיקאיות מוסיקלי מוסיקלית מוסיקליים מוסיקליות מוסיקולוג מוסיקולוגית מוסיקולוגים מוסיקולוגיות מוסיקולוגי מוסיקולוגיה מוסיאון מוסאון פיסי פיסיקה פיסיקאי פיסיקאית פיסיקאים פיסיקאיות פיסיקלי פיסיקלית פיסיקליים פיסיקליות פיסיולוג פיסיולוגית פיסיולוגים פיסיולוגיות פיסיולוגי פיסיולוגיים פיסיותרפיה פיסיותרפיסט פיסיותרפיסטית פיסיותרפיסטים פיסיותרפיסטיות +האקדמיה ללשון העברית החליטה שבשמות ממוצא ארמי שמשמשים בצורת נקבה יכתבו בה"א, +לא אל"ף, בסופם. לדוגמה: דוגמה, נוסחה, רישה, ולא דוגמא, נוסחא, רישא. +צורת הרבים יכולה להיכתב עם "אות", כגון "דוגמאות", איך אין זה גורר שניתן +להשתמש בצורת היחיד הלא-תקנית "דוגמא". +למרות החלטת האקדמיה, השימוש בצורות היחיד כמו דוגמא ושאילתא עדיין נפוץ מאוד, +והשגיאה הכפולה "סיסמא" נפוצה הרבה יותר מהצורה התקנית "ססמה". דוגמא לדוגמא נוסחא רישא סיפא שאילתא ססמא סיסמא הסיסמא משכנתא +האקדמיה ללשון העברית החליטה שבמילים לועזיות שיש בהן רצף העיצורים ks יכתבו +בעברית באותיות "קס" (ולא "כס"). לדוגמה: טקסט, אקסיומה, מקסימום, טקסטיל. +יוצא מכלל זה השם אלכסנדר שכבר נתקבע כתיבו. גם המילה טקס נכתבת בקו"ף. טכסט אכסיומה אכסיומות אכסיומת אכסיומתי אכסיומטי מכסימום טכסטיל טכס אלקסנדר +הצורה "אנדרנלין" היא שיבוש די נפוץ (אולי בהשפעת התחילית אנדרו-), אך הכתיב +הנכון הוא "אדרנלין", ללא הנו"ן. מקור המילה הוא השורשים הלטיניים אד+רנס, +שמשמעותם "על הכליה" (הבלוטה האדרנלית, המפרישה אדרנלין, יושבת על הכליה). אנדרנלין +הכתיב התקני של המילה "הפך" הוא כך, ולא "היפך". כללי הכתיב חסר הניקוד של +האקדמיה ללשון העברית קובעים שיו"ד נוסף לציון סגול רק בשמות במשקל "הישג" +ובשמות הנגזרים מהם כמו "הישגיות". "הפך" אינו באותו משקל - הוא מנוקד בשני +סגולים ולא סגול וצירה, ונהגה במלעיל ולא במלרע - ולכן אין להוסיף בו יו"ד. +אגב, מילון "רב-מילים" מכיר בתקניות הכתיב "הפך" אבל מעדיף משום-מה לכתוב "היפך". היפך להיפך ההיפך תיכף +המילה semester בעברית צריכה להיכתב סמסטר, ולהיגות בתנועת e בסמ"ך ולא i. +למרות שמרבית האנשים הוגים תנועת i וכותבים סימסטר - איות זה נחשב לבלתי-תקני. סימסטר סימסטרים +לפי החלטת האקדמיה ללשון העברית, בכתיב חסר ניקוד יש לכתוב את המילה "מארה" +(צירי באל"ף) שפרושה "קללה", בתוספת יו"ד: מאירה מארה מארות +המילה "זחלילי" נחשבת ללא תקנית. המילה התקנית שמתארת כלי-רכב המצויד בזחלים +היא "זחלי". זחלילי זחלילית זחליליים זחליליות +הכתיב הנכון הוא חך, לא חיך חיך hspell-1.4/likelyerrors0000444000076600007650000000336710170772752013345 0ustar nyhrl# should be אתכם, אתכן אותכם אותכן # according to academia decision, should be עליי עלי # according to academia decision, should be הכול הכל # תיאוריה is התיאורים שלה, while the user probably meant תאוריה תיאוריה # סכימתי is הסכימה שלי, while the user probably meant סכמתי סכימתי # ענין is העני שלה, while the user probably meant עניין ענין # ארייה is (I think...) her lion. Lion is אריה ארייה # צבורי is plural smichut of צבור, while the user probably meant ציבורי צבורי # כברה is usually used as כברת דרך. The user probably meant קברות כברות # the word טנא is rarely inflected - תנאי is much more probably... טנאי טנאים # These are inflections of נכה, while something else was probably intended. נכן נכתם נכתו # These are inflections of צוהר, not of צהריים צהרים צוהרי # This is an inflection of כורח, not קרחת or קרח... כרחות # These are inflections of צריח, not צריך צריחה # The user probably meant שייך, belongs, not שיך, your lamb :) שיך # The user probably intended "diplomatic", not "my diploma" דיפלומתי # The user probably intended אחסון, not אכסון אכסון # The user probably intended הלוואי הלואי # The user probably intended הארכה, not הארחה. הארחה is used in "בית הארחה" # and rarely using other inflections (where אירוח is more common) הארחת הארחתו הארחתה # Outside the phrase "שפחה חרופה", the noun חירוף is more common than the # adjective חרוף... חרוף # The plural of חץ is חצים, not חיצים (which is the plural of חיץ) חיצים # קושייה means her קושי. קושיה means question. קושייה # מרכזיה means her מרכזים. מרכזייה means telephone exchange. מרכזיה # should be מאוד, not מ+אד מאד # הכרויות is ה+כרויות. should be היכרויות הכרויות # should be לחלופין לחליפין # ארוסים is plural of ארוס. engagement is אירוסים ארוסים # The singular of אמוראים is אמורא, not אמוראי אמוראי hspell-1.4/configure0000755000076600007650000042124111722252067012574 0ustar nyhrl#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.68. # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software # Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV export CONFIG_SHELL case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= PACKAGE_URL= ac_unique_file="wolig.dat" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS DICTBASE HSPELL_LIB EXTRAOBJECTS SEDCMD TARGETS PERL EGREP GREP CPP OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC SET_MAKE target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_fatverb enable_linginfo enable_shared enable_test ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-fatverb Allow "objective kinuyim" on all forms of verbs. Because this adds as many as 130,000 correct but rarely-used (in modern texts) inflections, a compile-time option is present for enabling or disabling these forms. The default in this version is not to enable them. --enable-linginfo Include a full morphological analyzer in "hspell -l", explaining how each correct word could be derived. This slows down the build and makes installation about 4 times larger, but doesn't slow Hspell if "-l" isn't used. --enable-shared Build a shared-library version of libhspell, in addition to the static library. Build the hspell executable using this shared library. --enable-test Compile testing binary, that uses a dictionary in the current directory instead of the installed one. Not recommended for anyone but Hspell developers. Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF configure generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if ${ac_cv_c_inline+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset cs; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_type "$LINENO" "intptr_t" "ac_cv_type_intptr_t" "$ac_includes_default" if test "x$ac_cv_type_intptr_t" = xyes; then : $as_echo "#define HAVE_INTPTR_T 1" >>confdefs.h else for ac_type in 'int' 'long int' 'long long int'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { static int test_array [1 - 2 * !(sizeof (void *) <= sizeof ($ac_type))]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat >>confdefs.h <<_ACEOF #define intptr_t $ac_type _ACEOF ac_type= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test -z "$ac_type" && break done fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PERL+:} false; then : $as_echo_n "(cached) " >&6 else case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 $as_echo "$PERL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gzread in -lz" >&5 $as_echo_n "checking for gzread in -lz... " >&6; } if ${ac_cv_lib_z_gzread+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gzread (); int main () { return gzread (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_gzread=yes else ac_cv_lib_z_gzread=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzread" >&5 $as_echo "$ac_cv_lib_z_gzread" >&6; } if test "x$ac_cv_lib_z_gzread" = xyes; then : ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" if test "x$ac_cv_header_zlib_h" = xyes; then : $as_echo "#define HAVE_ZLIB 1" >>confdefs.h LIBS="-lz $LIBS" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: No Zlib header, defaulting to using pipes" >&5 $as_echo "No Zlib header, defaulting to using pipes" >&6; } fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: No Zlib library, defaulting to using pipes" >&5 $as_echo "No Zlib library, defaulting to using pipes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: Checking features selected by user (see configure --help)..." >&5 $as_echo "$as_me: Checking features selected by user (see configure --help)..." >&6;} TARGETS="hebrew.wgz.sizes hspell libhspell.a" # Check whether --enable-fatverb was given. if test "${enable_fatverb+set}" = set; then : enableval=$enable_fatverb; ac_opt_fatverb=$enable_fatverb else ac_opt_fatverb=no fi if test x$ac_opt_fatverb = xyes then { $as_echo "$as_me:${as_lineno-$LINENO}: Feature fatverb enabled (adding objective kinuyim to verbs)." >&5 $as_echo "$as_me: Feature fatverb enabled (adding objective kinuyim to verbs)." >&6;} SEDCMD='s/\+//' else { $as_echo "$as_me:${as_lineno-$LINENO}: Feature fatverb disabled (no objective kinuyim to verbs)." >&5 $as_echo "$as_me: Feature fatverb disabled (no objective kinuyim to verbs)." >&6;} SEDCMD='/\+/d' fi # Check whether --enable-linginfo was given. if test "${enable_linginfo+set}" = set; then : enableval=$enable_linginfo; ac_opt_linginfo=$enable_linginfo else ac_opt_linginfo=no fi EXTRAOBJECTS= if test x$ac_opt_linginfo = xyes then { $as_echo "$as_me:${as_lineno-$LINENO}: Feature linginfo enabled (morphological analyzer)." >&5 $as_echo "$as_me: Feature linginfo enabled (morphological analyzer)." >&6;} $as_echo "#define USE_LINGINFO 1" >>confdefs.h EXTRAOBJECTS="linginfo.o" # note that linginfo_data should be done first, because it currently builds # some of the normal things (like hebrew.wgz) in a different way (using # pack-desc, not pmerge). This is ugly, and should be fixed. TARGETS="linginfo_data $TARGETS" else { $as_echo "$as_me:${as_lineno-$LINENO}: Feature linginfo disabled (no morphological analyzer)." >&5 $as_echo "$as_me: Feature linginfo disabled (no morphological analyzer)." >&6;} fi # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; ac_opt_shared=$enable_shared else ac_opt_shared=no fi if test x$ac_opt_shared = xyes then { $as_echo "$as_me:${as_lineno-$LINENO}: Shared library building enabled." >&5 $as_echo "$as_me: Shared library building enabled." >&6;} HSPELL_LIB="libhspell.so.0" else { $as_echo "$as_me:${as_lineno-$LINENO}: Shared library building disabled." >&5 $as_echo "$as_me: Shared library building disabled." >&6;} HSPELL_LIB="libhspell.a" fi # Check whether --enable-test was given. if test "${enable_test+set}" = set; then : enableval=$enable_test; ac_opt_test=$enable_test else ac_opt_test=no fi if test x$ac_opt_test = xyes then { $as_echo "$as_me:${as_lineno-$LINENO}: Feature test enabled (USES DICTIONARY IN CURRENT DIRECTORY!!!)." >&5 $as_echo "$as_me: Feature test enabled (USES DICTIONARY IN CURRENT DIRECTORY!!!)." >&6;} DICTBASE='./hebrew.wgz' else DICTBASE='$(SHARE)/hebrew.wgz' fi ac_config_files="$ac_config_files Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by $as_me, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi hspell-1.4/wzip0000755000076600007650000000037611722240375011605 0ustar nyhrl#!/usr/bin/awk -f NR == 1 { last=$1 printf("%s",$1) next } { for(i=1;i<=length(last);i++){ if(substr(last,1,i)!=substr($1,1,i)){ break; } } back=length(last)-i+1; printf("%d%s",back,substr($1,i)); # decimal digits, for now... last=$1 } hspell-1.4/pmerge0000755000076600007650000000373411722236752012100 0ustar nyhrl#!/usr/bin/perl -w # Copyright (C) 2002-2003 Nadav Har'El and Dan Kenigsberg # # Merges several dictionaries with prefix hints, into one dictionary with # or'ed prefix hints. # Usage: cat dict1 dict2 ... | pmerge -p prefixesout > wordsout use IO::File; use Carp; require "PrefixBits.pl"; # "perl -w" warns about variables only used once (it assumes they are a # typo). This ugliness gets rid of this warning. Is there a more sensible way? ($PS_L,$PS_B,$PS_VERB,$PS_NONDEF,$PS_IMPER,$PS_MISC)= ($PS_L,$PS_B,$PS_VERB,$PS_NONDEF,$PS_IMPER,$PS_MISC); use Getopt::Std; my %opts; # -p - output prefix file. if(!getopts('p:', \%opts)){ exit(1); } my $out_prefixes=$opts{p}; my $specifier; my %specifiers; while(<>){ chomp; #next if /---/; # TODO: this isn't needed. remove it. #s/-$//o; # TODO: dan added this. remove it. s/\+ / /o; # The Makefile was supposed to remove those, but still... if(/^L/o){ $specifier = $PS_L; s/^L//o; } elsif(/^B/o){ $specifier = $PS_B; s/^B//o; } elsif(!/^[א-ת]/o){ next; # not a word } elsif(/-$/o){ # In wolig.pl's simple output (without -d), this specified smichut, # and we shouldn't allow prefixes with he hayedia. This case is # useful for smichut words in extrawords. $specifier = $PS_NONDEF; s/-$//o; } elsif(/ פ,/o) { if(/ .*ציווי/o) { $specifier = $PS_IMPER; } elsif(!/ .*הווה/o) { $specifier = $PS_VERB; } elsif(/ .*סמיכות/o || m:,כינוי/:o) { $specifier = $PS_NONDEF; } else { $specifier = $PS_ALL; } } elsif(/[ ,][עת],/) { if (/ .*סמיכות/o || m:,של/:o || / .*פרטי/o) { $specifier = $PS_NONDEF; } else { $specifier = $PS_ALL; } } else { $specifier = $PS_ALL; } s/ .*$//; # remove all the "-d" explanations after the word $specifiers{$_} |= $specifier; } my @words = sort(keys %specifiers); my $F = new IO::File; $F->open($out_prefixes,"w") or croak "Couldn't write -p parameter '$out_prefixes'"; print $F map { chr($specifiers{$_}) } @words; print map { $_."\n" } @words; exit 0; hspell-1.4/dict_radix.c0000644000076600007650000005163611722235723013152 0ustar nyhrl/* Copyright (C) 2003-2009 Nadav Har'El and Dan Kenigsberg */ #include #include #include #include /* This is for declaring the uint32_t type, a type holding a 32-bit unsigned integer. It exists on Linux and on fairly modern Solaris, but maybe not anywhere else. We should use autoconf to solve this portability nightmare. */ #include /* If the Zlib library is available, we use it for reading the compressed dictionaries, rather than opening a pipe to an external gzip process. In one measurement, this halved the loading time (0.1 sec to 0.05 sec). It also allowed Hspell to be used on systems where the Zlib library is available, but the gzip program is not (e.g., OpenOffice on MS-Windows). The definitions which are pretty bizarre, but help us convert the existing code into something that will work with zlib without ugly ifdefs everywhere (further ifdefs are only needed in some places). Note that when BUFFERED_ZLIB is enabled (and it is enabled by default here) we enable special buffered version of zlib (gzbuffered.h) instead of the normal zlib functions. */ #ifdef HAVE_ZLIB #define BUFFERED_ZLIB #undef FILE #undef pclose #undef getc #ifdef BUFFERED_ZLIB #include "gzbuffered.h" #undef gzopen #undef gzdopen #define FILE void /* void* can be either normal FILE* or gzbFile*. Eek. */ #define gzopen(path,mode) gzb_open(path,mode) #define gzdopen(path,mode) gzb_dopen(path,mode) #define pclose(f) (gzb_close((gzbFile *)(f))) #define getc(f) (gzb_getc(((gzbFile *)(f)))) #else #include #define FILE void /* FILE* is void*, a.k.a. voidp or gzFile */ #define pclose(f) (gzclose((f))) #define getc(f) (gzgetc((f))) #endif #endif /* HAVE_ZLIB */ /* Our radix tree has four types of "nodes": leaf nodes, small nodes * (carrying up to SMALL_NODE_CHILDREN children), medium nodes (carrying up to * MEDIUM_NODE_CHILDREN) and full nodes carrying exactly NUM_LETTERS children. * * Since there are plenty of leaf nodes, we want these to be tiny, containing * basically just a value. Therefore we overload the same 32-bit "val_or_index" * position to be one of: * 1. Empty (in this case val_or_index==0) * 2. Value (value must be non-zero and 30 bit only!) * 3. Index of full node (3 on highest 2 bits, the 30 lowest are the index) * 4. Index of medium node (2 on highest 2 bits, the 30 lowest are the index) * 5. Index of small node (1 on highest 2 bits, the 30 lowest are the index) */ #define CONST32(x) ((uint32_t)(x)) #define HIGHBITS ((CONST32(1)<<31) | (CONST32(1)<<30)) #define HIGHBITS_VALUE (CONST32(0) << 30) #define HIGHBITS_SMALL (CONST32(1) << 30) #define HIGHBITS_MEDIUM (CONST32(2) << 30) #define HIGHBITS_FULL (CONST32(3) << 30) #define VALUEMASK (~HIGHBITS) #define NUM_LETTERS 29 /* 27 Hebrew letters, " and ' */ /* When trying on the Hebrew dictionary, when there are only small and * full nodes, small_node_children=4 was the clear winner, taking 3363K * of memory. * When added medium nodes, there are two ties for minimal space usage * (at 2260K each): 2,8 and 3,8. Both have 1831 full nodes, 2,8 results in * 61771/25072 small/medium nodes, and 3,8 results in 71856/14987 small/medium * nodes. * One way to choose among them is to minimize search time. On average * searching a node with N children takes N/2 comparisons. If we pass * all nodes (and I doubt this is a meaningful measure... :( ) the 2,8 * will make 162059 comparisons and 3,8 will make 167732. Again, roughly * the same, so I can't decide :( * Another deciding factor: read time. 2,8 is slightly quicker - I have * no idea why. * * Note: to minimize search time we might want to choose a set of sizes * which does not assure the smallest size. HOWEVER, one interesting thing * to note: the children in small and medium nodes are sorted. This might * mean that it is quicker to search the medium node using a binary search, * rather than linear? I don't know. Maybe for N=8, it ain't worth it. */ /*#define SMALL_NODE_CHILDREN 4*/ #define SMALL_NODE_CHILDREN 2 #define MEDIUM_NODE_CHILDREN 8 #if 0 /* * NOTE: SMALL-MEDIUM = 1-4 has an interesting advantage. At 2876K It wasn't * smallest (2-8 was, with 2257K) but it makes a lot of nodes full or * 1-child only (and therefore very quick to search) and only some nodes * with 4 children which is only slightly harder to search (only 2.5 * comparisons needed on average). * */ /* search speed optimization */ #define SMALL_NODE_CHILDREN 1 #define MEDIUM_NODE_CHILDREN 4 #endif struct node_index { /* if most-significant bit of val is on, it's an index. Otherwise, * it's only a value (31 bit and nonzero). */ uint32_t val_or_index; }; struct node { uint32_t value; struct node_index children[NUM_LETTERS]; }; struct node_small { uint32_t value; char chars[SMALL_NODE_CHILDREN]; struct node_index children[SMALL_NODE_CHILDREN]; }; struct node_medium { uint32_t value; char chars[MEDIUM_NODE_CHILDREN]; struct node_index children[MEDIUM_NODE_CHILDREN]; }; /* Note: char_to_letter prints a message when it comes across an invalid letter, so it should not be used in lookup(), only in reading the dictionary (which is assumed to contain only valid words). lookup() has its own implementation of this function inside it. */ static inline int char_to_letter(unsigned char c) { if(c>=(unsigned char)'א' && c<(unsigned char)'א'+27){ return c - (unsigned char)'א' + 2; } else if (c=='"'){ return 0; } else if (c=='\''){ return 1; } else { fprintf(stderr,"Hspell: unknown letter %c...\n",c); /* a silly thing to do, but what the heck */ return 0; } } static inline unsigned char letter_to_char(int l) { if(l>=2 && l<29){ return l+(unsigned char)'א'-2; } else if(l==0){ return '"'; } else if(l==1){ return '\''; } else { /* this will never happen in the current code: */ fprintf(stderr,"Hspell: internal error: unknown letter %d... " "exiting.\n",l); exit(1); } } /* This routine was written for debugging purposes only, and not for * absolute efficiency. */ static void do_print_tree(struct node *nodes, struct node_small *nodes_small, struct node_medium *nodes_medium, struct node_index head, char *word, int len, int maxlen){ int i; if(len>=maxlen){ fprintf(stderr,"Hspell: do_print_tree(): warning: buffer overflow.\n"); return; } if((head.val_or_index & HIGHBITS) == HIGHBITS_FULL){ struct node *n = &nodes[head.val_or_index & VALUEMASK]; if(n->value){ word[len]='\0'; printf("%s %d\n", word, n->value); } for(i=0;ichildren[i],word,len+1,maxlen); } } else if((head.val_or_index & HIGHBITS) == HIGHBITS_SMALL){ struct node_small *n = &nodes_small[head.val_or_index & VALUEMASK]; if(n->value){ word[len]='\0'; printf("%s %d\n", word, n->value); } for(i=0;ichars[i]){ word[len]=n->chars[i]; do_print_tree(nodes,nodes_small,nodes_medium, n->children[i],word,len+1,maxlen); } } } else if((head.val_or_index & HIGHBITS) == HIGHBITS_MEDIUM){ struct node_medium *n = &nodes_medium[head.val_or_index & VALUEMASK]; if(n->value){ word[len]='\0'; printf("%s %d\n", word, n->value); } for(i=0;ichars[i]){ word[len]=n->chars[i]; do_print_tree(nodes,nodes_small,nodes_medium, n->children[i],word,len+1,maxlen); } } } else if(head.val_or_index){ word[len]='\0'; printf("%s %d\n", word, head.val_or_index); } } struct dict_radix { /* The nodes used by the radix tree representation of the dictionary */ int nnodes_small, size_nodes_small; struct node_small *nodes_small; int nnodes_medium, size_nodes_medium; struct node_medium *nodes_medium; int nnodes, size_nodes; struct node *nodes; struct node_index head; /* Freelist of recycled small nodes. As more words are added to the dictionary in the process of read_dict(), small nodes become medium and medium nodes become full. Because these small/medium nodes that are no longer needed are in the middle of the node list, we keep them aside in a freelist. They are recycled quickly, as new small/medium nodes are continued to be created. */ int free_nodes_small[16], nfree_nodes_small; int free_nodes_medium[16], nfree_nodes_medium; int nwords; }; /* new_dict_radix is the constructor for an opaque (to the includer of dict_radix.h) object. */ struct dict_radix * new_dict_radix(void) { struct dict_radix *dict; dict= (struct dict_radix *) malloc(sizeof(struct dict_radix)); /* By default, zero all fields in dict_radix */ if(dict) memset(dict, 0, sizeof(*dict)); return dict; } /* Note that delete_dict_radix frees everything inside a dict_radix, and the dict_radix structure itself. The pointer given to it is no longer a valid pointer after this call. */ void delete_dict_radix(struct dict_radix *dict) { if(!dict) return; /* allow deleting null object, like in C++... */ if(dict->nodes_small) free(dict->nodes_small); if(dict->nodes_medium) free(dict->nodes_medium); if(dict->nodes) free(dict->nodes); free(dict); } int allocate_nodes(struct dict_radix *dict, int nsmall, int nmedium, int nfull) { /* if already allocated, it's an error */ if(dict->nodes) return -1; dict->nodes_small = malloc(sizeof(struct node_small)*nsmall); dict->size_nodes_small = nsmall; dict->nodes_medium = malloc(sizeof(struct node_medium)*nmedium); dict->size_nodes_medium = nmedium; dict->nodes = malloc(sizeof(struct node)*nfull); dict->size_nodes = nfull; if(dict->nodes_small==NULL || dict->nodes_medium==NULL || dict->nodes==NULL) return -2; return 0; } /* Efficiently read a compressed dictionary from the given directory. Use memory pre-allocation hints from another file in this directory. returns 1 on success, 0 on failure. TODO: there are too many printouts here. We need to return error numbers instead of all those printouts. */ #define PREFIX_FILE #ifdef PREFIX_FILE static int do_read_dict(FILE *fp, FILE *prefixes, struct dict_radix *dict); #else static int do_read_dict(FILE *fp, struct dict_radix *dict); #endif int read_dict(struct dict_radix *dict, const char *dir) { if(dir){ FILE *fp; char s[1024]; int small,medium,full,ret; #ifdef PREFIX_FILE FILE *prefixes; #endif snprintf(s,sizeof(s),"%s.sizes",dir); if(!(fp=fopen(s,"r"))){ fprintf(stderr,"Hspell: can't open %s.\n",s); return 0; } if(fscanf(fp,"%d %d %d",&small,&medium,&full)!=3){ fprintf(stderr,"Hspell: can't read from %s.\n",s); return 0; } fclose(fp); #ifdef HAVE_ZLIB if(!(fp=gzopen(dir,"r"))){ fprintf(stderr,"Hspell: can't open %s.\n",dir); return 0; } #else snprintf(s,sizeof(s),"gzip -dc '%s'",dir); if(!(fp=popen(s,"r"))){ fprintf(stderr,"Hspell: can't run %s.\n",s); return 0; } #endif /* HAVE_ZLIB */ #ifdef PREFIX_FILE #ifdef HAVE_ZLIB snprintf(s,sizeof(s),"%s.prefixes",dir); if(!(prefixes=gzopen(s,"rb"))){ fprintf(stderr,"Hspell: can't open %s.\n",s); return 0; } #else snprintf(s,sizeof(s),"gzip -dc '%s.prefixes'",dir); if(!(prefixes=popen(s,"rb"))){ fprintf(stderr,"Hspell: can't run %s.\n",s); return 0; } #endif /* HAVE_ZLIB */ #endif allocate_nodes(dict,small,medium,full); #ifdef PREFIX_FILE ret=do_read_dict(fp, prefixes, dict); pclose(prefixes); #else ret=do_read_dict(fp, dict); #endif pclose(fp); return ret; } else { #ifdef HAVE_ZLIB /* note that gzopen also works on non-gzipped files */ FILE *in=gzdopen(fileno(stdin),"r"); #ifdef PREFIX_FILE FILE *zero=gzopen("/dev/zero","r"); #endif #else FILE *in=stdin; #ifdef PREFIX_FILE FILE *zero=fopen("/dev/zero","r"); #endif #endif /* HAVE_ZLIB */ #ifdef PREFIX_FILE return do_read_dict(in, zero, dict); #else return do_read_dict(in, dict); #endif } } #ifdef PREFIX_FILE static int do_read_dict(FILE *fp, FILE *prefixes, struct dict_radix *dict) #else static int do_read_dict(FILE *fp, struct dict_radix *dict) #endif { struct node_index *stack[256]; int sdepth=0; int c,n,cc; /* Local copies of dict-> variables, for efficiency. */ int nwords=0; struct node *nodes = dict->nodes; struct node_small *nodes_small = dict->nodes_small; struct node_medium *nodes_medium = dict->nodes_medium; int nnodes_small=0, nnodes_medium=0, nnodes=0; if(dict->nnodes||dict->nnodes_small||dict->nnodes_medium|| dict->nwords){ fprintf(stderr, "Hspell: do_read_dict(): called for a non-" "empty dictionary\n"); return 0; } if(!nodes||!nodes_small||!nodes_medium){ fprintf(stderr, "Hspell: do_read_dict(): allocate_nodes() must" " be called first\n"); return 0; } memset(&nodes[nnodes], 0, sizeof(nodes[nnodes])); dict->head.val_or_index=(nnodes++) | HIGHBITS_FULL; stack[0]=&dict->head; sdepth=0; while((c=getc(fp))!=EOF){ if(c>='0' && c<='9'){ /* new word - finalize old word first (set value) */ nwords++; /* statistics */ /* assert(!stack[sdepth]->val_or_index) */ #ifdef PREFIX_FILE stack[sdepth]->val_or_index=getc(prefixes); #else stack[sdepth]->val_or_index=nwords; /** TODO: different values */ #endif /* and read how much to go back */ n=0; do { /* base 10... */ n*=10; n+=(c-'0'); } while ((c=getc(fp))!=EOF && c>='0' && c<='9'); sdepth-=n; if(sdepth<0 || sdepth >= (sizeof(stack)/sizeof(stack[0]))-1){ fprintf(stderr,"Hspell: bad backlength %d... giving up\n", sdepth); return 0; } /* we got a new letter c - continue the loop */ } /* word letter - add it */ if(sdepth>=sizeof(stack)/sizeof(stack[0])-1){ fprintf(stderr,"Hspell: word too long... giving up\n"); return 0; } cc=char_to_letter(c); /* make sure previous node is a small or full node, not just a * value, and if it is small, that it's not full */ if((stack[sdepth]->val_or_index & HIGHBITS)==HIGHBITS_VALUE){ int chosen; if(dict->nfree_nodes_small){ chosen=dict->free_nodes_small [--(dict->nfree_nodes_small)]; } else { chosen=nnodes_small; if(nnodes_small>=dict->size_nodes_small){ fprintf(stderr,"Hspell: Realloc needed (small) - failing.\n"); return 0; } nnodes_small++; } memset(&nodes_small[chosen], 0, sizeof(nodes_small[chosen])); nodes_small[chosen].value = stack[sdepth]->val_or_index; stack[sdepth]->val_or_index = chosen | HIGHBITS_SMALL; nodes_small[chosen].chars[0]=c; stack[sdepth+1] = &nodes_small[chosen].children[0]; } else if((stack[sdepth]->val_or_index & HIGHBITS)==HIGHBITS_SMALL){ int j; struct node_small *n= &nodes_small[stack[sdepth]->val_or_index&VALUEMASK]; /* is the small node not full yet? */ for(j=0;jchars[j]){ n->chars[j]=c; stack[sdepth+1] = &n->children[j]; break; } if(j==SMALL_NODE_CHILDREN){ /* small node full! convert it to medium node */ int chosen; if(dict->nfree_nodes_medium){ chosen=dict->free_nodes_medium [--(dict->nfree_nodes_medium)]; } else { chosen=nnodes_medium; if(nnodes_medium>=dict->size_nodes_medium){ fprintf(stderr,"Hspell: Realloc needed (medium) - failing.\n"); return 0; } nnodes_medium++; } memset(&nodes_medium[chosen], 0, sizeof(nodes_medium[chosen])); if(dict->nfree_nodes_small>= sizeof(dict->free_nodes_small)/ sizeof(dict->free_nodes_small[0])){ fprintf(stderr,"Hspell: overflow in free_nodes_small.\n"); return 0; } dict->free_nodes_small [(dict->nfree_nodes_small)++]= stack[sdepth]->val_or_index & VALUEMASK; stack[sdepth]->val_or_index = chosen | HIGHBITS_MEDIUM; /* copy the children from n to nodes[nnodes]: */ /* TODO: use memcpy instead! */ nodes_medium[chosen].value = n->value; for(j=0;jchars[j]; nodes_medium[chosen].children[j]= n->children[j]; } /* and finally choose the next child */ nodes_medium[chosen].chars[SMALL_NODE_CHILDREN]= c; stack[sdepth+1] = &nodes_medium[chosen]. children[SMALL_NODE_CHILDREN]; } } else if((stack[sdepth]->val_or_index & HIGHBITS)==HIGHBITS_MEDIUM){ int j; struct node_medium *n= &nodes_medium[stack[sdepth]->val_or_index&VALUEMASK]; /* is the medium node not full yet? */ for(j=0;jchars[j]){ n->chars[j]=c; stack[sdepth+1] = &n->children[j]; break; } if(j==MEDIUM_NODE_CHILDREN){ /* medium node full! convert it to full node */ if(nnodes>=dict->size_nodes){ fprintf(stderr,"Hspell: Realloc needed (full) - failing.\n"); return 0; } memset(&nodes[nnodes], 0, sizeof(nodes[nnodes])); nodes[nnodes].value = n->value; if(dict->nfree_nodes_medium>= sizeof(dict->free_nodes_medium)/ sizeof(dict->free_nodes_medium[0])){ fprintf(stderr,"Hspell: overflow in free_nodes_medium.\n"); return 0; } dict->free_nodes_medium [(dict->nfree_nodes_medium)++]= stack[sdepth]->val_or_index & VALUEMASK; stack[sdepth]->val_or_index = nnodes | HIGHBITS_FULL; /* copy the children from n to nodes[nnodes]: */ for(j=0;jchars[j])]= n->children[j]; /* and finally choose the next child */ stack[sdepth+1] = &nodes[nnodes].children[cc]; nnodes++; } } else { /* HIGHBITS_FULL */ stack[sdepth+1] = &nodes[ stack[sdepth]->val_or_index & VALUEMASK].children[cc]; } sdepth++; } /* output last word */ nwords++; /* statistics */ #ifdef PREFIX_FILE stack[sdepth]->val_or_index=getc(prefixes); #else stack[sdepth]->val_or_index=nwords; /** TODO: different values */ #endif /* return local copies to dict-> structure */ dict->nwords=nwords; dict->nnodes_small=nnodes_small; dict->nnodes_medium=nnodes_medium; dict->nnodes=nnodes; return 1; } void print_stats(struct dict_radix *dict) { fprintf(stderr, "%d words in %d full nodes, %d medium nodes, " "%d small nodes.\n", dict->nwords, dict->nnodes, dict->nnodes_medium, dict->nnodes_small); fprintf(stderr, "%d nfree_nodes_small %d nfree_nodes_medium.\n", dict->nfree_nodes_small,dict->nfree_nodes_medium); fprintf(stderr, "node memory filled: %d K\n", (int)(dict->nnodes*sizeof(struct node) + dict->nnodes_small*sizeof(struct node_small) + dict->nnodes_medium*sizeof(struct node_medium) )/1024); } void print_tree(struct dict_radix *dict) { char word[256]; do_print_tree(dict->nodes,dict->nodes_small,dict->nodes_medium, dict->head,word,0,sizeof(word)); } void print_sizes(struct dict_radix *dict) { printf("%d %d %d\n", dict->nnodes_small, dict->nnodes_medium, dict->nnodes); } int lookup(const struct dict_radix *dict, const char *word) { struct node_index current = dict->head; for(;;){ switch(current.val_or_index & HIGHBITS){ case HIGHBITS_VALUE: if(*word){ /* The word isn't over yet but we reached a leaf node. So the word isn't in the dict */ return 0; } else { return current.val_or_index & VALUEMASK; } break; case HIGHBITS_SMALL: if(*word){ struct node_small *n = &dict->nodes_small[current.val_or_index & VALUEMASK]; #if SMALL_NODE_CHILDREN==2 if(n->chars[0]==*word) current=n->children[0]; else if(n->chars[1]==*word) current=n->children[1]; else return 0; /* not found... */ #else #error "small node lookup not implemented except for 2 children." #endif } else { return dict->nodes_small[current.val_or_index & VALUEMASK] .value; } break; case HIGHBITS_MEDIUM: if(*word){ struct node_medium *n = &dict->nodes_medium[current.val_or_index & VALUEMASK]; #if MEDIUM_NODE_CHILDREN==8 register char c=*word, *cs=n->chars; /* TODO: use binary search? stop searching on the first 0? All these optimizations are probably useless for 8 chars... */ if(*(cs++)==c) current=n->children[0]; else if(*(cs++)==c) current=n->children[1]; else if(*(cs++)==c) current=n->children[2]; else if(*(cs++)==c) current=n->children[3]; else if(*(cs++)==c) current=n->children[4]; else if(*(cs++)==c) current=n->children[5]; else if(*(cs++)==c) current=n->children[6]; else if(*(cs++)==c) current=n->children[7]; else return 0; /* not found... */ #else #error "medium node lookup not implemented except for 8 children." #endif } else { return dict->nodes_medium[current.val_or_index & VALUEMASK] .value; } break; case HIGHBITS_FULL: if(*word){ /* the following is a copy of char_to_letter */ register int ind; register unsigned char c = *word; if(c>=(unsigned char)'א' && c<(unsigned char)'א'+27) ind = c - (unsigned char)'א' + 2; else if (c=='"') ind = 0; else if (c=='\'') ind = 1; else return 0; /* non-Hebrew letter */ current=dict->nodes[current.val_or_index & VALUEMASK] .children[ind]; } else { return dict->nodes[current.val_or_index & VALUEMASK].value; } break; } word++; } } hspell-1.4/specfilter.c0000644000076600007650000001540311316201267013163 0ustar nyhrl/* Copyright 2005-2009 Nadav Har'El and Dan Kenigsberg */ /* specfilter.c - word prefix-specifier * The way prefixes currently work in Hspell is that each word has an 8-bit * (only 6 are used) "specifier", and each prefix has a bit mask, and the * word+prefix combination is accepted if one of the bits is 1 in both the * word specifier and prefix mask. * The idea in this is that each bit corresponds to a prefix feature that * words need, and certain prefixes supply. If a word has two or more meanings, * the word's specifier might get two or more 1 bits. * * Now, it turns out (see bug 74) that while the word specifiers can take * on many values (currently, 32), some specifiers are actually equivalent, * in the sense that they end up allowing or disallowing exactly the same * set of prefixes. For example, a word with specifier 2 (PS_L) and a word * with specifier 3 (PS_L | PS_B) accepts the same prefixes because in our * existing prefix set (sett genprefixes.pl), every prefix which supplies * PS_B also supplies PS_L. Another example, a word with specifier 24 * (PS_IMPER | PS_NONDEF) can get the same prefixes as a word with just a * specifier of 8 (PS_NONDEF). * * The goal of this program is to find which sets of word specifiers are * equivalent in the above sense, and given an input stream of word * specifiers (e.g., uncompressed hebrew.wgz.prefixes) it replaces all * different specifiers in one equivalence class to the same member * (the list of values left after this process is known in Mathematics * as a quotient set). * * The purpose of all this is to reduce the number of different word * specifiers present in hebrew.wgz.prefixes. For example, in Hspell 0.9 * this brought the number from 32 down to 9. This allows slightly (10%) * better compression of hebrew.wgz.prefixes, but more importantly, * allows us to generate a much smaller affix file for aspell (see * mk_he_affix.c), because it will contain just 9 prefix sets instead of 32. * * CAVEAT: * * I'm still not sure whether it is wise or not to use this process on * the final hebrew.wgz.prefixes used by Hspell. One one hand it will make * it slightly smaller, but on the other hand it makes use of information * previously available only in the code (prefixes.c - the list of prefixes * and their masks) inside the word list. Meaning that if the prefix list * code changes, the word data will need to be changed as well - a situation * we didn't have previously. * Moreover, it will also mean that we will not be able to have run-time * options that chose among different prefix sets. Luckily, the "-h" option * is fine in this respect (see comment below on why), but it is conceivable * (but not likely) that in the future we might want to use completely * different sets of prefix that behave differently. (?? what actually * matters is just the bag of different masks in the masks[] array)) */ #include "prefixes.c" #include /* NOTE: currently, the equivalence of two word specifiers does not depend on whether He Hashe'ela is allowed or not. This is because He Hashe'ela only adds another prefix like shin hashimush - so whatever specifiers that can be distinguished by He Hashe'ela can already be distinguished by the shin. It is important to remember that this fact may not remain true if we add more options of prefix bitmasks arrays, so this decision might need to be revisited. */ #define MASKS masks_noH #define SPECBITS 6 /* maximum number of bits in PrefixBits.pl */ #define NMASKS (sizeof(MASKS)/sizeof(MASKS[0])-1) #define NSPECS (1< int main(void){ int i,j; int num; genequiv(); #if 0 fprintf(stderr, "Prefix specifier equivalences:\n"); for(i=0;i= NSPECS){ fprintf(stderr, "value %d in hebrew.wgz.prefixes out of bound\n", i); exit(1); } putchar(equivalent[i]); } return 0; } hspell-1.4/hspell.h0000644000076600007650000000516513123032515012317 0ustar nyhrl/* Copyright (C) 2003-2017 Nadav Har'El and Dan Kenigsberg */ /* This header file defines the Hspell Hebrew spellchecking API in C, as implemented by the libhspell.a library. Please check out the hspell(3) manual for more information on how to use the Hspell C interface. */ #ifndef INCLUDED_HSPELL_H #define INCLUDED_HSPELL_H /* The following macros can be used to verify which version of the Hspell API this header file supports. Note that this API might change. */ #define HSPELL_VERSION_MAJOR 1 #define HSPELL_VERSION_MINOR 4 #define HSPELL_VERSION_EXTRA "" struct dict_radix; struct corlist; /* flags for hspell_init: */ #define HSPELL_OPT_DEFAULT 0 #define HSPELL_OPT_HE_SHEELA 1 /* flag to accept He Ha-she'ela */ #define HSPELL_OPT_LINGUISTICS 2 /* initialize morphological analyzer, not just spell-checker */ int hspell_init(struct dict_radix **dictp, int flags); int hspell_check_word(struct dict_radix *dict, const char *word, int *preflen); void hspell_trycorrect(struct dict_radix *dict, const char *w, struct corlist *cl); unsigned int hspell_is_canonic_gimatria(const char *w); void hspell_uninit(struct dict_radix *dict); const char *hspell_get_dictionary_path(void); void hspell_set_dictionary_path(const char *path); extern int hspell_debug; /* Corlist is our simple data structure for holding a list of corrections * returned by hspell_trycorrect. This silly implementation has fixed sizes! * A no-no in good programming, but enough for what we need it for... (the * implementation makes sure that the arrays aren't overflowed, don't worry). */ #define N_CORLIST_WORDS 50 #define N_CORLIST_LEN 30 /* max len per word */ struct corlist { char correction[N_CORLIST_WORDS][N_CORLIST_LEN]; int n; }; int corlist_add(struct corlist *cl, const char *s); int corlist_init(struct corlist *cl); int corlist_free(struct corlist *cl); #define corlist_n(cl) ((cl)->n) #define corlist_str(cl,i) ((cl)->correction[(i)]) /* type definition for the function to be called by hspell_enum_splits on every legal split between prefix and base word that is found. word is the original word that is split. baseword is the base word found, preflen is the length of the prefix, and prefspec is the prefix specifier of the base word. */ typedef int hspell_word_split_callback_func(const char *word, const char *baseword, int preflen, int prefspec); /* find all legal splittings of word into a baseword and a prefix. call enumf * for every such split. */ int hspell_enum_splits(struct dict_radix *dict, const char *word, hspell_word_split_callback_func *enumf); #endif /* INCLUDED_HSPELL_H */ hspell-1.4/hash.h0000644000076600007650000001125711722236230011755 0ustar nyhrl/* Copyright (C) 2003-2004 Nadav Har'El and Dan Kenigsberg */ #ifndef INCLUDED_HASH_H #define INCLUDED_HASH_H /* we use tclHash.[ch] to implement the following API: typedef ...hspell_hash; void hspell_hash_init(hspell_hash *p); void hspell_hash_incr_int(hspell_hash *hashp, const char *key); int hspell_hash_exists(hspell_hash *hashp, const char *key); int hspell_hash_get_int(hspell_hash *hashp, const char *key, int *value); void hspell_hash_set_int(hspell_hash *hashp, const char *key, int value); void hspell_hash_destroy(hspell_hash *p); typedef struct { const char *key; int value; } hspell_hash_keyvalue; hspell_hash_keyvalue *hspell_hash_build_keyvalue_array(hspell_hash *h, int *size); void hspell_hash_free_keyvalue_array(hspell_hash *h, int size, hspell_hash_keyvalue *p); */ #include #ifdef HAVE_STDINT_H #include #endif #ifdef HAVE_INTTYPES_H #include #endif #include "tclHash.h" typedef Tcl_HashTable hspell_hash; static inline void hspell_hash_init(hspell_hash *p) { Tcl_InitHashTable(p, TCL_STRING_KEYS); } /* hspell_hash_incr_int increments the integer value (we assume) stored for the key. If there is no value for this key yet, it is initialized to zero and then incremented to 1. */ static inline void hspell_hash_incr_int(hspell_hash *hashp, const char *key) { Tcl_HashEntry *e; int isnew; e=Tcl_CreateHashEntry(hashp, key, &isnew); /* Increment the value, as a an integer. We don't to cast the address of clientData to another type in fear we'll write too much, so we need explicit assignment and cast of the values: */ Tcl_SetHashValue(e, ((intptr_t)Tcl_GetHashValue(e))+1); } /* hspell_hash_exists returns 0 if there is no value for this key yet, 1 otherwise. */ static inline int hspell_hash_exists(hspell_hash *hashp, const char *key) { Tcl_HashEntry *e; e=Tcl_FindHashEntry(hashp, key); return e ? 1 : 0; } typedef struct { const char *key; intptr_t value; } hspell_hash_keyvalue; /* Hspell_hash_build_keyvalue_vector builds an array of keys and values from the given hash table. Note that the keys are pointers to strings that sit inside the hash table, so they are only valid until the next time some key is deleted from the hash-table (or the hash table itself is deleted). This function return a pointer which the caller should free with hspell_hash_free_keyvalue_array(). */ static inline hspell_hash_keyvalue *hspell_hash_build_keyvalue_array( hspell_hash *h, int *size) { Tcl_HashEntry *e; Tcl_HashSearch s; hspell_hash_keyvalue *array, *arrayp, *arrayend; if(!h->numEntries){ *size=0; return 0; } array=(hspell_hash_keyvalue *) malloc(h->numEntries*sizeof(hspell_hash_keyvalue)); arrayp=array; /* moving pointer */ arrayend=array+h->numEntries; /* pointer past end */ for(e=Tcl_FirstHashEntry(h, &s); e; e=Tcl_NextHashEntry(&s)){ if(arrayp>=arrayend){ /* this cannot happen... */ fprintf(stderr, "Internal error: allocated array of " "incorrect size. Truncating it.\n"); break; } arrayp->key=Tcl_GetHashKey(h, e); arrayp->value=(intptr_t)Tcl_GetHashValue(e); arrayp++; } if(arrayp!=arrayend){ /* this cannot happen... */ fprintf(stderr, "Internal error: allocated array of incorrect" " size. Wasted space.\n"); *size=(arrayp-array); } else *size=h->numEntries; return array; } static inline void hspell_hash_free_keyvalue_array(hspell_hash *h, int size, hspell_hash_keyvalue *p) { if(p) free(p); } /* The following functions also keep integer values in the hash table. These values must be small enough to fit in the flatform's pointer (on modern machines, this is not a problem - pointers are usually as large, or even larger, than integers). These functions are useful for Hspell's "-n" option, for example. The get function returns 0 on failure, and 1 on success with the value put in the given pointer. */ static inline intptr_t hspell_hash_get_int(hspell_hash *hashp, const char *key, int *value) { Tcl_HashEntry *e; if(!(e=Tcl_FindHashEntry(hashp, key))) return 0; *value=(intptr_t)Tcl_GetHashValue(e); return 1; } static inline void hspell_hash_set_int(hspell_hash *hashp, const char *key, intptr_t value) { Tcl_HashEntry *e; int isnew; e=Tcl_CreateHashEntry(hashp, key, &isnew); Tcl_SetHashValue(e, value); } /* After calling hspell_hash_destroy on p, p should not be used again until hspell_hash_init is used to create a new hash table. */ static inline void hspell_hash_destroy(hspell_hash *p) { Tcl_DeleteHashTable(p); } #endif /* INCLUDED_HASH_H */ hspell-1.4/configure.in0000644000076600007650000001242411722252062013170 0ustar nyhrldnl Process this file with autoconf to produce Hspell's configure script. dnl "wolig.dat" is any file in the source directory, used to check we're in dnl the right directory. AC_INIT(wolig.dat) dnl this alows us to use $(MAKE) in the makefile, even if our make program dnl doesn't support this variable. This requires putting @SET_MAKE@ in the dnl Makefile.in AC_PROG_MAKE_SET AC_PROG_CC dnl AC_PROG_INSTALL dnl Hspell uses the "inline" keyword, always as "static inline". Some old C dnl compilers (such as the one on Solaris 8!) still don't have inline, so we dnl should just replace it by nothing (or use things like __inline__, if that's dnl available). AC_C_INLINE AC_C_CONST dnl Our hash-table code borrowed from TCL stores pointer values, but we want dnl to store there ints. So we need a type uintptr_t which is an integer dnl exactly the same size as a pointer. If we don't already have this type dnl (it is standard in ANSI C's stdint.h), autoconf will try to figure it dnl out. AC_TYPE_INTPTR_T dnl TODO: remove -g from CFLAGS and add -s to LDFLAGS AC_PATH_PROG([PERL], [perl]) dnl Check for libraries. AC_CHECK_LIB([z],[gzread], [AC_CHECK_HEADER([zlib.h],[AC_DEFINE(HAVE_ZLIB) LIBS="-lz $LIBS"], [AC_MSG_RESULT([No Zlib header, defaulting to using pipes])])], [AC_MSG_RESULT([No Zlib library, defaulting to using pipes])]) dnl Allow the builder to enable or disable certain features of Hspell, dnl and/or build or not build certain things. dnl Make sure that after running configure with different features enabled, dnl "make clean" is done! AC_MSG_NOTICE([Checking features selected by user (see configure --help)...]) dnl Our TARGETS variable chooses what to compile. Some things are dnl optionally compiled depending on --enable-* paramters to configure. TARGETS="hebrew.wgz.sizes hspell libhspell.a" AC_SUBST(TARGETS) dnl "fatverb" optional feature: (--enable-fatverb) dnl Determines whether or not to build about 150,000 additional rare verb dnl forms (known as objective kinuyim). AC_ARG_ENABLE([fatverb], AC_HELP_STRING([--enable-fatverb],[Allow "objective kinuyim" on all forms of verbs. Because this adds as many as 130,000 correct but rarely-used (in modern texts) inflections, a compile-time option is present for enabling or disabling these forms. The default in this version is not to enable them.]), [ac_opt_fatverb=$enable_fatverb], [ac_opt_fatverb=no]) if test x$ac_opt_fatverb = xyes then AC_MSG_NOTICE([Feature fatverb enabled (adding objective kinuyim to verbs).]) SEDCMD='s/\+//' else AC_MSG_NOTICE([Feature fatverb disabled (no objective kinuyim to verbs).]) SEDCMD='/\+/d' fi AC_SUBST(SEDCMD) dnl "linginfo" optional feature: (--enable-linginfo) dnl Include a full morphological analyzer in "hspell -l". Note that this dnl slows down the build and makes the installation about 4 times larger, dnl but it doesn't slow Hspell if "-l" isn't used. AC_ARG_ENABLE([linginfo], AC_HELP_STRING([--enable-linginfo],[Include a full morphological analyzer in "hspell -l", explaining how each correct word could be derived. This slows down the build and makes installation about 4 times larger, but doesn't slow Hspell if "-l" isn't used.]), [ac_opt_linginfo=$enable_linginfo], [ac_opt_linginfo=no]) EXTRAOBJECTS= if test x$ac_opt_linginfo = xyes then AC_MSG_NOTICE([Feature linginfo enabled (morphological analyzer).]) AC_DEFINE(USE_LINGINFO) EXTRAOBJECTS="linginfo.o" # note that linginfo_data should be done first, because it currently builds # some of the normal things (like hebrew.wgz) in a different way (using # pack-desc, not pmerge). This is ugly, and should be fixed. TARGETS="linginfo_data $TARGETS" else AC_MSG_NOTICE([Feature linginfo disabled (no morphological analyzer).]) fi AC_SUBST(EXTRAOBJECTS) dnl "shared" optional feature: (--enable-shared) dnl Build a shared library version of libhspell (in addition to the static dnl library), and compile the hspell executable to use this shared library. dnl Note that currently, this will only work properly on Linux and gcc (we dnl do not correctly build shared libraries on different systems). AC_ARG_ENABLE([shared], AC_HELP_STRING([--enable-shared],[Build a shared-library version of libhspell, in addition to the static library. Build the hspell executable using this shared library.]), [ac_opt_shared=$enable_shared], [ac_opt_shared=no]) if test x$ac_opt_shared = xyes then AC_MSG_NOTICE([Shared library building enabled.]) HSPELL_LIB="libhspell.so.0" else AC_MSG_NOTICE([Shared library building disabled.]) HSPELL_LIB="libhspell.a" fi AC_SUBST(HSPELL_LIB) dnl "test" optional feature: (--enable-test) dnl Compile a testing binary. Currently the only thing that this does is dnl to set the default dictionary directory to the current directory, dnl instead of the normal $SHARE/hebrew.wgz location. AC_ARG_ENABLE([test], AC_HELP_STRING([--enable-test],[Compile testing binary, that uses a dictionary in the current directory instead of the installed one. Not recommended for anyone but Hspell developers.]), [ac_opt_test=$enable_test], [ac_opt_test=no]) if test x$ac_opt_test = xyes then AC_MSG_NOTICE([Feature test enabled (USES DICTIONARY IN CURRENT DIRECTORY!!!).]) DICTBASE='./hebrew.wgz' else DICTBASE='$(SHARE)/hebrew.wgz' fi AC_SUBST(DICTBASE) AC_OUTPUT(Makefile) hspell-1.4/woo0000711000076600007650000012701212467742023011411 0ustar nyhrl#!/usr/bin/perl -w # # Copyright (C) 2000-2015 Nadav Har'El, Dan Kenigsberg # use Carp; my ($infile,$c); my $detailed_output=0; my %fin = ('כ'=>'ך', 'מ'=>'ם', 'נ'=>'ן', 'פ'=>'ף', 'צ'=>'ץ'); if ($#ARGV>=0 && $ARGV[0] eq "-d") { $detailed_output=!$detailed_output; shift @ARGV; } if($#ARGV < 0){ $infile="woo.dat"; } else { $infile=$ARGV[0]; } open(INFILE, "<$infile") or croak "Couldn't open data file $infile for reading"; open (SHEMP, ">shemp.dat"); print SHEMP "# list of automatically generated shmot-peula\n"; while(){ print if /^#\*/; # print these comments, print SHEMP $_ if /^#\*/; # and also to shemp.dat. chomp; next if /^( | )*$/; # ignore empty lines. next if /^ *#/; # comments start with '#'. #$c++; print STDERR "#" if !($c % 20); s/ *\#.*$//; #and appear at end of lines. ($word,$optstring)=split; undef %opts; my $val; foreach $opt (split /,/o, $optstring){ ($opt, $val) = (split /=/o, $opt); $val = 1 unless defined $val; $val =~ tr/ךםןףץ/כמנפצ/; $opts{$opt}=$val; } if($opts{"פ"}){ $w = new Word; $word =~ tr/ךםןףץ/כמנפצ/; $word =~ s/ג'/J/; $word =~ s/ז'/Z/; $word =~ s/צ'/C/; $word =~ s/ה$/h/o if $opts{"שמור_מפיק"}; $word =~ tr/יו/yw/ if $opts{"שמור_עו"}; $w->root($word); my @binyanim = (); my %transitive = (); $opts{"קל_אפעל"}=1 if $opts{"קל_אפעל+"}; $opts{"קל_אפעול"}=1 if $opts{"קל_אפעול+"}; $opts{"הפ"}=1 if ($opts{"הפ+"}); $opts{"פי"}=1 if ($opts{"פי+"}); push @binyanim, $Word::qal if ($opts{"קל_אפעל"}||$opts{"קל_אפעול"}); push @binyanim, $Word::niqtal if ($opts{"נפ"}); push @binyanim, $Word::hiqtil if ($opts{"הפ"}); push @binyanim, $Word::huqtal if ($opts{"הו"}); push @binyanim, $Word::qitel if ($opts{"פי"}); push @binyanim, $Word::qutal if ($opts{"פו"}); push @binyanim, $Word::hitqatel if ($opts{"הת"}); $transitive{$Word::qal}=1 if ($opts{"קל_אפעל+"}||$opts{"קל_אפעול+"}); $transitive{$Word::hiqtil}=1 if ($opts{"הפ+"}); $transitive{$Word::qitel}=1 if ($opts{"פי+"}); $w->{opts}= \%opts; #TODO pass only relevant options. foreach $b (@binyanim) { $w->binyan($b); # When the options נסתר is given, $word is not the root to conjugate, but # rather the 3rd person masculine singular form of the verb. We seldom # use this input method, and usually generate this base form automatically # (in the parameter-less abar_nistar function). if ($opts{"נסתר"}) {$w->abar_nistar($word);} else { $w->abar_nistar;} # in past, hem==hen and in niqqudless script so is at==ata. But the # objectization is different, so we generate both at and ata. And for # the sake of completeness of the morphological analysis, also hen is # added. foreach $g ($Word::hu,$Word::ani,$Word::ata,$Word::at,$Word::hi, $Word::anu,$Word::atem,$Word::aten,$Word::hem,$Word::hen) { $w->{object} = undef; #clear objectization $s = $w->past_conj($g); $w->outword($s); # support for the mostly-archaic nitpa`el form. if ($w->{binyan} eq $Word::hitqatel && ${$w->{opts}}{"גם_נת"}) { $s =~ s/^ה/נ/o; $w->outword($s); } if (defined($s) && $transitive{$w->{binyan}}) { next if $g eq $Word::aten; # $aten's transitivisation is as $atem's $w->{second_bj_form} = 0; foreach $bj ($Word::ani,$Word::ata,$Word::at,$Word::hu,$Word::hu,$Word::hi, $Word::anu,$Word::atem,$Word::aten,$Word::hem,$Word::hen) { $w->{second_bj_form} = !$w->{second_bj_form} if $bj eq $Word::hu; my $n = $w->objectize($s, $bj); $w->outword($n) if $n; } } } $w->{guf} = undef; # some cleanup. $w->{object} = undef; my $s = $w->infinitive_conj; if (defined($s)) { &output_infinitive($s, $transitive{$w->{binyan}}); if ($w->{binyan} eq $Word::niqtal && ${$w->{opts}}{'גם_ליהנות'}) { my $lehanot = $s; $lehanot =~ s/היה/יה/o; $w->{object} = undef; &output_infinitive($lehanot, $transitive{$w->{binyan}}); } } # in imperative only at,ata,atem,aten (second person) foreach $g ($Word::ata,$Word::at,$Word::atem,$Word::aten) { $w->{object} = undef; #clear objectization $s = $w->imperative_conj($g); $w->outword($s); if (defined($s) && $transitive{$w->{binyan}}) { next if $g eq $Word::aten; # TODO do $aten have objectization?? foreach $bj ($Word::ani,$Word::ata,$Word::at,$Word::hu,$Word::hi, $Word::anu,$Word::atem,$Word::aten,$Word::hem,$Word::hen) { my $n = $w->objectize($s, $bj); $w->outword($n) if $n; } } } foreach $g ($Word::ani,$Word::ata,$Word::at,$Word::hu,$Word::hi, $Word::anu,$Word::atem,$Word::aten,$Word::hem,$Word::hen) { $w->{object} = undef; #clear objectization $s = $w->future_conj($g); $w->outword($s); if (defined($s) && $transitive{$w->{binyan}}) { next if $g eq $Word::aten || $g eq $Word::hen; $w->{second_bj_form} = 0; foreach $bj ($Word::ani,$Word::ata,$Word::at,$Word::hu,$Word::hi,$Word::hu, $Word::hi,$Word::anu,$Word::atem,$Word::aten, $Word::hem,$Word::hen) { # a trick to flip second_bj_form for the second time of bj=hu/hi $w->{second_bj_form} = !$w->{second_bj_form} if $bj eq $Word::hu; my $n = $w->objectize($s, $bj); $w->outword($n) if $n; } } } $w->{second_bj_form}=1; # only this is accepted in the present tense. #and no reason to repeat it for every objectization. # the gufs of the present tense are very much different than in other # tenses. Nevertheless, we use at, ata, atem, aten as representatives of # yaxid, yxida, rabbim, rabbot. foreach $g ($Word::ata,$Word::at,$Word::atem,$Word::aten) { $w->{object} = undef; #clear objectization $s = $w->present_conj($g); $w->outword($s); if (defined($s) && $transitive{$w->{binyan}}) { foreach $bj ($Word::ani,$Word::ata,$Word::at,$Word::hu,$Word::hi, $Word::anu,$Word::atem,$Word::aten,$Word::hem,$Word::hen) { my $n = $w->objectize($s, $bj); $w->outword($n) if $n; } } $w->{object} = undef; #clear objectization if ($s) { if ($g eq $Word::at) { # output the nismach form, even if identical to the nifrad: $s =~ s/ה$/ת/o; $s =~ s/$/-/o; $w->outword($s); # create the other form of the present female if both are requested if (${$w->{opts}}{"בינונית_תה"} || $w->_nakey_lh && $w->{binyan} eq $Word::huqtal) { ${$w->{opts}}{"בינונית_ארכאית"} = 1; $s = $w->present_conj($g); $w->outword($s); $s =~ s/ה$/ת/o; $s =~ s/$/-/o; $w->outword($s); ${$w->{opts}}{"בינונית_ארכאית"} = 0; } } elsif ($g eq $Word::atem) { $s =~ s/ם$/-/; $w->outword($s); } else { $s =~ s/$/-/; $w->outword($s); } } } $s = $w->shempeula_conj; if ($s) { $s =~ s/C/צ'/o; $s =~ s/J/ג'/o; $s =~ s/Z/ז'/o; $s =~ s/([כמנפצ])$/$fin{$1}/; $s =~ s/h/ה/o; $s =~ s/[יI]yו/יו/go; $s =~ s/(?<=[^ויy])y(?=[^ויyה]|$)/יי/go; $s =~ s/y/י/go; # otherwise, just one yud. $s =~ s/וw/ו/go; $s =~ s/(?<=[^וw])w(?=[^וw-])/וו/go; # if vav needs to be doubled, do it $s =~ s/([כמנפצ])$/$fin{$1}/; print SHEMP $s." ע"; # for male shemps ending with ות, we must pass a hint to wolig.pl print SHEMP ",ים" if ($w->{binyan} eq $Word::qitel && $s =~ m/ות$/o); print SHEMP "\n" } print "-----\n"; } # Create the pa`ul form, when applicable. if (${$w->{opts}}{"פעול"} || ${$w->{opts}}{"קל_אפעל"} || ${$w->{opts}}{"קל_אפעול"}) { foreach $g ($Word::ata,$Word::at,$Word::atem,$Word::aten) { $s = $w->paul_conj($g); $w->outword($s); if ($s) { if ($g eq $Word::at) {$s =~ s/ה$/ת-/; $w->outword($s);} elsif ($g eq $Word::atem) {$s =~ s/ם$/-/; $w->outword($s);} else {$w->outword($s.'-')} } } print "-----\n" if $s; } } } # since in a (very) few cases I want to print two types of infinitive, I moved # it all into a subroutine. sub output_infinitive() { my ($s, $is_trans) = @_; # in most cases, we want to accept all bklm in the initial. but since the # code is less-than-perfect, it relies on 'ל' so we substitute the lamed # with L only temporarily. TODO: correct this stupidity. my $tmps = $s; $tmps =~ s/^ל/L/ if !$opts{'מקור_אבד_פנ'}; $w->outword($tmps); # infinitives that lost their p"n, should regain it in their bkm form. # Here, with this B prefix, we allow only the bet form. # TODO: correct this silly add/remove/regain drill if ($opts{'מקור_אבד_פנ'}) { $tmps =~ s/^לי/B$w->{q}/; $w->outword($tmps); } # the infinitive form of all verbs has subjectization in all pronouns. # however, transitive verbs have also objectization, which is exactly the # same for most pronouns. therefore, for transitive verbs we print # subjectization only for $ani. # # TODO: resolve the following linguistic question: Is there a difference # in the pronunciation and spelling of בדוחפם (when they push, bdoxpam) # and לדחופם (to push them, lidxpam)? The first is an subjectization of # לדחוף, and the second is a objectization. I do *not* know if the above # differentiation is valid or correct, and failed to find references to # support my gut feeling. Thus, on the mean while, I produce a waw-less # form, as done by rav-millim. if ($is_trans) { foreach $bj ($Word::ani,$Word::ata,$Word::at,$Word::hu,$Word::hi, $Word::anu,$Word::atem,$Word::aten,$Word::hem,$Word::hen) { my $n = $w->objectize($s, $bj); $w->outword($n) if $n; } my $n = $w->objectize($s, $Word::ani, SUBJECTIZE); $w->outword($n) if $n; } else { # output only subjectizations for intransitive verbs. foreach $bj ($Word::ani,$Word::ata,$Word::hu,$Word::hi, $Word::anu,$Word::atem,$Word::aten,$Word::hem,$Word::hen) { my $n = $w->objectize($s, $bj, SUBJECTIZE); $w->outword($n) if $n; } } } { package Word; our (@all_binyan,@all_guf,%mishqal_abar,%coran_abar); # When SUBJECTIZE is passed to the objectize function, it creates the kinnuy # xabur that signifies the subject of a sentence, rather than the object. # In some (few) cases it makes a difference. use constant SUBJECTIZE => 1; sub INIT { @all_binyan = ($qal, $niqtal, $qitel, $qutal, $hitqatel, $hiqtil, $huqtal) = ('a','b','c','d','e','f','g'); @all_guf = ($ani, $ata, $at, $hu, $hi, $anu, $atem, $aten, $hem, $hen) = ('A','B','C','D','E','F','G','H','I','J'); %mishqal_abar = ($qal => 'qtl', $niqtal => 'נqtl', $qitel => 'qיtl', $qutal=>'qוtl', $hitqatel=>'התqtl', $hiqtil=>'הqtיl', $huqtal=>'הוqtl'); %coran_abar = ($ani=>'תי', $ata=>'ת' , $at=>'ת', $hu=>'', $hi=>'ה', $anu=>'נו', $atem=>'תמ', $aten=>'תנ', $hem=>'ו', $hen=>'ו'); %future_initial = ($ani=>'א', $ata=>'ת', $at=>'ת', $hu=>'י', $hi=>'ת', $anu=>'נ', $atem=>'ת', $aten=>'ת', $hem=>'י', $hen=>'ת'); %subject_suf = ($ani=>'י', $ata=>'ך', $at=>'ך', $hu=>'הו', $hi=>'ה', $anu=>'נו', $atem=>'כם', $aten=>'כן', $hem=>'ם', $hen=>'ן'); %object_suf = ($ani=>'ני', $ata=>'ך', $at=>'ך', $hu=>'הו', $hi=>'ה', $anu=>'נו', $atem=>'כם', $aten=>'כן', $hem=>'ם', $hen=>'ן'); ($past, $present, $future, $imperative, $infinitive, $adjective) = (1, 2, 3, 4, 5, 6); %gname = ($ani => 'אני', $ata => 'אתה', $at => 'את', $hu => 'הוא', $hi => 'היא', $anu => 'אנו', $atem => 'אתם', $aten => 'אתן', $hem => 'הם', $hen => 'הן'); %pname = ($ata => 'יחיד,ז', $at => 'יחיד,נ', $aten => 'רבים,נ', $atem => 'רבים,ז'); %tname = ($past=>'עבר', $present=>'הווה', $future=>'עתיד', $imperative=>'ציווי', $infinitive=>'מקור', undef=>'-'); } sub new { my ($c, $r) = @_; my $w = {}; root($w, $r) if (defined $r); return bless $w; } sub root { my ($w, $r) = @_; if ($r =~ m/(.*)-(.*)-(.*)/o) { $w->{root} = $1.$2.$3; $w->{q} = $1; $w->{t} = $2; $w->{l} = $3; } else { $w->{root} = $r; $w->{q} = substr($r,0,1); $w->{t} = substr($r,1,length($r)-2); $w->{l} = substr($r,-1,1); } } sub binyan { my ($w, $b) = @_; $w->{binyan} = $b; $w->{mishqal} = $mishqal_abar{$b}; } sub _subst_root { my ($w, $s) = @_; $s =~ s/q/$w->{q}/g; $s =~ s/t/$w->{t}/g; $s =~ s/l/$w->{l}/g; return $s; } sub _bdoq_sikul { my $w = shift; return if ($w->{q} !~ m/[דזטסצCZJשת]/o); $w->{mishqal} =~ s/^התq/הqת/ if ($w->{q} =~ m/[סש]/o); $w->{mishqal} =~ s/^התq/הqט/ if ($w->{q} =~ m/[צC]/o); $w->{mishqal} =~ s/^התq/הqד/ if ($w->{q} =~ m/[זZJ]/o); $w->{mishqal} =~ s/^התq/היq/ if ($w->{q} =~ m/[תדט]/o && !${$w->{opts}}{"שמור_פד"}); } # create the abar_nistar form, unless it is provided as the param. sub abar_nistar { my ($w, $n) = @_; if (defined $n) {$w->{nistar}=$n; return;} # The academia rules says: no yod in qitel quadruple $w->{mishqal} =~ s/י// if ($w->{binyan} eq $qitel) && (length($w->{t}) > 1) && # but keep a double yod if specifically asked to. !(${$w->{opts}}{"שמור_פי"} && $w->{q} eq 'י'); # nakey p"n if (($w->{q} eq 'נ' || $w->{q} eq 'י' && $w->{t} eq 'צ') && !${$w->{opts}}{"שמור_פנ"} ) { $w->{mishqal} =~ s/q//o if $w->{binyan} =~ m/[$hiqtil$huqtal]/o && $w->{t} !~ m/^[יורעהאח]$/o; # REM: this special niqtal behavior is based on my personal feeling only $w->{mishqal} =~ s/q/י/o if $w->{binyan} eq $niqtal; } # nakey p"y if ($w->{q} eq 'י' && !${$w->{opts}}{"שמור_פי"} ) { $w->{mishqal} =~ s/q/ו/ if $w->{binyan} =~ m/[$niqtal$hiqtil]/o; $w->{mishqal} =~ s/q// if $w->{binyan} eq $huqtal; } # consonantal p"y - double only in hitqatel?? # -> no, also for quadruple roots (taken care of above) if ($w->{q} eq 'י') { $w->{mishqal} =~ s/q/qq/ if $w->{binyan} eq $hitqatel; } # nakey ayin waw if ($w->{t} =~ m/^[יו]$/o) { # if it is nake, drop the waw/yod $w->{mishqal} =~ s/t// if $w->{binyan} =~ m/[$huqtal$qal$hiqtil]/o; $w->{mishqal} =~ s/(?<=[נה])i// if $w->{binyan} =~ m/[$hiqtil$niqtal]/; $w->{mishqal} =~ s/([יו])?tl/וll/o if $w->{binyan} =~ m/[$qitel$qutal$hitqatel]/o; $w->{mishqal} =~ s/^נ/ני/o if $w->{binyan} eq $niqtal && ${$w->{opts}}{"נפ_ניזון"}; } # kpulim if ($w->{t} eq $w->{l} && !${$w->{opts}}{"שמור_עע"}) { $w->{mishqal} =~ s/t// if $w->{binyan} eq $qal; $w->{mishqal} =~ s/t/ו/ if $w->{binyan} eq $niqtal; $w->{mishqal} =~ s/tי// if $w->{binyan} eq $hiqtil; $w->{mishqal} =~ s/t// if $w->{binyan} eq $huqtal; $w->{mishqal} =~ s/י/ו/ if $w->{binyan} eq $qitel; $w->{mishqal} =~ s/qt/qוt/ if $w->{binyan} eq $hitqatel; } $w->_bdoq_sikul if ($w->{binyan} eq $hitqatel); #nakey l"h if ($w->_nakey_lh) { $w->{mishqal} =~ s/י// if $w->{binyan} eq $hiqtil; } $w->{nistar} = $w->_subst_root($w->{mishqal}); } sub _nakey_lh { my ($w) = @_; return $w->{l} eq 'ה' } sub _past_cond8 { my ($w) = @_; my $hataya = $w->{nistar}; # certain doubled roots have the regular conjugation in few gufim in the # past tense. $hataya = $w->{q}.$w->{t}.$w->{l} if ${$w->{opts}}{'בינוני_שומר'} && $w->{binyan} eq $qal && $w->{t} eq $w->{l} && $w->{guf} =~ m/[$hu$hi$hem$hen]/o; if ($w->{nistar} =~ m/^.[יו]?.$/o || #one vowel $w->{binyan} eq $hiqtil) { #last vowel i #case 9 - only add coran. } else { #case 10 - remove last vowel (NNN) #TODO check subcase (b) } return $hataya; } sub past_conj { my ($w, $guf) = @_; $w->{guf} = $guf; my $coran = $coran_abar{$guf}; $w->{coran} = $coran; my $hataya = $w->{nistar}; return undef if ${$w->{opts}}{'אין_עבר'}; $w->{tense} = $past; #condition #2 if ($w->_nakey_lh) { #condition #14 - does the coran begin with consonant if ($coran =~ m/^[תנ]/o) { # begins with consonant #condition #15 if ($w->{binyan} =~ m/[$qal$hiqtil]/o) { #case #16 - replace last vowel with i #TODO: check subcase (a) $hataya =~ s/ה$/י/; } else { #case #17 - replace last vowel with ey $hataya =~ s/ה$/י/; } } elsif ($coran eq 'ו') { #case #18 - remove last vowel $hataya =~ s/ה$//; } elsif ($coran eq 'ה') { $hataya =~ s/יה$/yת/; # this yod is consonantal. only for נהייתה #case #19 - replace last vowel with t #TODO: check subcase (b)(d) $hataya =~ s/ה$/ת/; } } elsif ($w->{l} eq 'א') { #codition #7 if ($coran !~ m/^[תנ]/o) { # begins with vowel $hataya = $w->_past_cond8; } else { #condition #11 if ($hataya eq $qal) { #case #12 - only add coran #TODO check subcase (a) } else { #case #13 - replace last vowel with e (NNN) #TODO check subcase (a) # TODO: is this enough? are there any other cases??? $hataya =~ s/(ה.+)י(.)$/$1$2/; } } } else { #condition #3 if ($coran =~ m/^[תנ]/o) { # begins with consonant #cond #4 if ($hataya =~ m/נ.ו./o && !${$w->{opts}}{'נסוב_מודרני'}) { #case #5 - replace last vowel with u and add o. #TODO check subcase (a) $hataya =~ s/$/ו/o; } else { #case #6 # do not remove consonantal yod! unless ($w->{binyan} eq $hitqatel && $w->{t} =~ m/[יו]$/o) { # usually two letters in (ה..)י(.) are enough, # but for הווריד and היפיל I allow more and less. $hataya =~ s/(ה.+)י(.)$/$1$2/; } # for freaking doubled root $hataya .= 'ו' if $w->{binyan} eq $qal && $w->{t} eq $w->{l} && !${$w->{opts}}{'שמור_עע'} && !${$w->{opts}}{'חדתי_מודרני'}; #TODO check subcases (a) (c) ### check (c): $hataya =~ s/^ה(.)(.)$/ה$1י$2ו/o if ${$w->{opts}}{'הסיבותי_ישן'}; } } else {$hataya = $w->_past_cond8;} } # if the last consonant of the basis is equal to the first of the coran, one # of the should usually go. if (substr($hataya,-1,1) eq substr($coran,0,1) && !${$w->{opts}}{"שמור_ל"}) { $hataya =~ s/.$//o; } # extremely singular exception נתן $hataya =~ s/(ני?ת)נ$/$1/o if $coran =~ m/^ת/o; $hataya .= $coran; $w->{abar} = $hataya; # remove this ugly duplicity return $hataya; } sub _cond_debug { # print "debug: ", shift, "\n"; } sub infinitive_conj { my ($w) = @_; my $n = $w->{nistar}; $w->{tense} = $infinitive; if (${$w->{'opts'}}{'מקור'}) { $w->{infinitive} = ${$w->{'opts'}}{'מקור'}; return $w->{infinitive}; } return undef if ${$w->{opts}}{'אין_מקור'}; #cond #2 - does abar_nistar have exactly 2 syllables? #_cond_debug(2); if ($w->{binyan} ne $hitqatel && $n !~ m/^.[יו]?.$/o) { #cond #3 - does $n begin with non-root nun? #_cond_debug(3); if ($w->{binyan} eq $niqtal) { #case #4 #check (a,b) - NNN No niqqud - no care. check (c) below. #_cond_debug(4); # double consonant waw $n =~ s/^נו([^ו])/נוו$1/ if $w->{q} =~ m/[יו]/o ; # $n = 'לגשת' if $n eq 'ניגש'; # singular exception if (${$w->{'opts'}}{'נפ_ניזון'}) { $n =~ s/^ני?/להי/o; } elsif ($w->{q} ne 'נ') { $n =~ s/^נ/להי/o; } else { $n =~ s/^נ[ני]/להינ/o if $w->{q} eq 'נ'; } } else { #cond #5 - is the first vowel e/i? #_cond_debug(5); if ($w->{binyan} =~ m/[$qitel$hitqatel$hiqtil]/o) { #case #6 #_cond_debug(6); # double consonant waw $n =~ s/^וי/וו/ if $w->{q} eq 'ו'; # remove i vowel, but not double yod $n =~ s/^(.)[יi]/$1/ if $w->{q} ne 'י' && $w->{t} ne 'י'; $n = 'ל'.$n; } else { #cond #7 - is the first vowel a? #_cond_debug(7); if ($w->{binyan} eq $qal) { #cond #8 - does $n appear in list (I) #_cond_debug(8); if (${$w->{'opts'}}{'מקור'}) { #case #9 #_cond_debug(9); # I keep List I in the data file. $n = ${$w->{'opts'}}{'מקור'}; } else { #cond #10 - does $n begin with aleph? #_cond_debug(10); if ($n =~ m/^א/o) { #case #11 - TODO #TODO: check (c,d) #_cond_debug(11); $n =~ s/(.)$/ו$1/; $n = 'ל'.$n; } else { #cond #12 - does it begin with ayin? #_cond_debug(12); if ($n =~ m/^ע/o) { #case #13 #TODO: check (c,d) $n =~ s/ו?(.)$/ו$1/; $n = 'ל'.$n; } else { #cond #14 - does it begin with xet? #_cond_debug(14); if ($n =~ m/^ח/o) { #case #15 #TODO: check (c,d) $n =~ s/ו?(.)$/ו$1/; $n = 'ל'.$n; } else { #case #16 #TODO: check (c,d) $n =~ s/ו?(.)$/ו$1/; # the ו? is against triple ווו $n =~ s/^נ([^רעהאח])/י$1/o if ${$w->{'opts'}}{'מקור_אבד_פנ'}; $n = 'ל'.$n; } } } } } else { #cond #17 - are the 2 vowels u and a? if ($w->{binyan} =~ m/[$qutal$huqtal]/o) { #case #18 $n = undef; } else { #case #20 #TODO: check (c,b) $n = 'ל'.$n; } } } } } else { #cond #19 - has the base 3 vowels? if ($w->{binyan} eq $hitqatel) { #case #20 #TODO: check (c) $n = 'ל'.$n; } else { #case #21 - if we're here - it's one-syllable base #TODO: check (d) my $internal; $internal = 'ו'; $internal = 'י' if $w->{t} eq 'י'; $n = 'ל'.substr($n,0,1).$internal.substr($n,-1,1); } } if (defined($n)) { $n =~ s/ו?ה$/ות/o; #check (c) if ($w->{binyan} eq $qal) { # check (e) # $n =~ s/^לנ([^רעהאח])/ל$1/o unless ${$w->{'opts'}}{'שמור_פנ'}; } } $w->{infinitive} = $n; return $n; } sub _imperative_cond7 { my ($w, $m) = @_; # in the really rare case of doubled root, in $qal-efal, drop the xolam. $m =~ s/ו(?=.$)// if ${$w->{opts}}{'קל_אפעל'} && $w->{binyan} eq $qal && !${$w->{opts}}{'שמור_עע'} && $w->{t} eq $w->{l}; # cond #7 - is the guf at or atem? #_cond_debug(7); if ($w->{guf} =~ m/[$at$atem$aten]/o) { # case #8 - if gone through cond #4, remove final he TODO if ($w->{l} eq 'ה') { $m =~ s/ה$/י/ if $w->{guf} eq $aten; $m =~ s/ה$// if $w->{guf} ne $aten; } $m .= 'י' if $w->{guf} eq $at; $m .= 'ו' if $w->{guf} eq $atem; $m =~ s/ווו/וו/o; # remove triple waw! # remove hiqtil's yod for 2pf $m =~ s/י(.)$/$1/o if $w->{guf} eq $aten && $w->{binyan} eq $hiqtil; $m =~ s/(?<=^.)ו(?=ח$)//o if $w->{guf} eq $aten; # for נוח $m =~ s/נ?$/נה/ if $w->{guf} eq $aten; } else { # case #9 - if came through cond #6, convert final xiriq to ceire $m =~ s/(.)י(.)$/$1$2/ if $w->{binyan} eq $hiqtil; } return $m; } sub _imperative_action18 { my ($w, $m) = @_; if ($m ne 'עוצ') { # exclude singular exception #remove final o, but not double waw $m =~ s/([^ו])ו(.)$/$1$2/o if $w->{guf} ne $aten; } $m .= 'י' if $w->{guf} eq $at; $m .= 'ו' if $w->{guf} eq $atem; # $m =~ s/ווו/וו/o; # remove triple waw! if ($w->{guf} eq $aten) { $m =~ s/נ?$/נה/; return $m; } # cond #19 - is the second final consonant guttural? #_cond_debug(19); if (0) { # action #20 } else { # action #21 # perform only if cond #13 is true (copied here) } return $m; } sub imperative_conj { # imperative my ($w, $guf) = @_; $w->{guf} = $guf; $w->{tense} = $imperative; $w->infinitive_conj unless $w->{infinitive}; # requires maqor # $w->past_conj unless $w->{abar}; # and the past form, ???. my $m = $w->{infinitive}; return undef unless $m; # in case there is no maqor form. # only second persons have imperative form return undef unless $w->{guf} =~ m/[$ata$at$atem$aten]$/o; return undef if ${$w->{opts}}{'אין_ציווי'}; # I like to shorten the he in the infinitives ליהנות, but the imperative # should not suffer, so the he is returned here. $m =~ s/^ליה/להיה/ if $w->{q} eq 'ה' && $w->{binyan} eq $niqtal; # action #2 - remove initial lamed $m =~ s/^ל//o; # consonant yod/waw should not be doubled in the beginning of word. $m =~ s/^יי/י/o if $w->{binyan} eq $qitel; $m =~ s/^וו/ו/o if $w->{binyan} eq $qitel; # cond #3 - does m end with ות and the abar with ה? #_cond_debug(3); if ($m =~ m/ות$/o && $w->{nistar} =~ m/ה$/o) { # action #4 $m =~ s/וות$/ווה/; # keep consonantal waw $m =~ s/ות$/ה/; # seems redundant - if $w->{guf} eq $ata; $m = $w->_imperative_cond7($m); } else { # case #5 - are $m and the abar one-syllabled? #_cond_debug(5); if ($w->{nistar}=~m/^.[יו]?.$/o && $m =~ m/^.[יו]?.$/o) { # jump to cond #7 $m = $w->_imperative_cond7($m); } else { # cond #6 - is the final vowel a xiriq male? # in other words, is it hifgil? #_cond_debug(6); if ($w->{binyan} eq $hiqtil) { # jump to cond #7 $m = $w->_imperative_cond7($m); } else { #cond #10 - if not in list1, does $m end with ת and milgeli? #_cond_debug(10); #I replace List I with a tag in the data file: $m = ${$w->{opts}}{"ציווי"} if ${$w->{opts}}{"ציווי"}; if (${$w->{opts}}{"מקור_מלעילי"}) { $m =~ s/ת$//o if ${$w->{opts}}{"מקור_מלעילי"}; # for feminine or plural, jump to action #18 $m = $w->_imperative_action18($m); } else { # cond #12 - is the first consonant has schwa/xataf? #_cond_debug(12); if ($w->{binyan} eq $qal && $m!~m/^.[וי].$/o) { #TODO: is this a good rule? # cond #13 - is $m in list2? Or does it end with guttural # consonant? #_cond_debug(13); if (defined(${$w->{opts}}{"ציווי"})) { $m = ${$w->{opts}}{"ציווי"} if ${$w->{opts}}{"ציווי"}; } elsif ($m =~ m/[אחהhע]$/o || $m =~ m/[אחהhע]ו?.$/o) { # action #14 TODO: check double star ** $m =~ s/ו(.)$/$1/; } else { } } else { # go to action #15 } # action #15 - return if $ata is required # check (b) - initial nun may stay or drop. # anyhow, an initial yod replacement must drop. if ($w->{binyan} eq $qal) { # where else there can be a nun shwa'it my $tmp_q = ''; $tmp_q = $w->{q} if ${$w->{opts}}{"ציווי_שמור_פנ"} ||${$w->{opts}}{"שמור_פי"}; $m =~ s/^י(.ו?.)$/${tmp_q}$1/; # double consonantal yod with xiriq, in the rare cases it appears. $m =~ s/^י([^י])/יי$1/o if ($w->{guf} eq $at ||$w->{guf} eq $atem) && ${$w->{opts}}{"שמור_פי"}; } ####### end of check (b) if ($w->{guf} ne $ata) { # cond #16 - is the mishqal hi..o. (hisob) #_cond_debug(16); if ($m =~ m/^הי.ו.$/o) { # action #17 $m .= 'י' if $w->{guf} eq $at; $m .= 'ו' if $w->{guf} eq $atem; $m =~ s/נ?$/נה/ if $w->{guf} eq $aten; } else { # action #18 $m = $w->_imperative_action18($m); } } } } } } return $m; } sub _future_cond10 { my ($w, $m) = @_; $m =~ s/^ל//o; # check (b) - should the initial nun drop? $m =~ s/^נ([^אהחעריו])/י$1/o if !${$w->{opts}}{"שמור_פנ"}; # cond #10 - is it $ani? #_cond_debug('10'); if ($w->{guf} eq $ani) { # case #11 $m =~ s/^א/ו/o if ${$w->{opts}}{"קל_אפעל"} && $w->{binyan} eq $qal && # for אוהב !${$w->{opts}}{"עתידי_אאמץ"}; $m =~ s/^י//o if $w->{binyan} eq $niqtal # אשמר לנפשי )ולא אישמר( # תשלום-דגש גורם לצירה וליוד גם אחרי אלף && $w->{q} !~ m/[רעהאחוי]/ # איזון ולא אזון && !${$w->{opts}}{"נפ_ניזון"} # אפול ולא איפול || ($w->{binyan} eq $qal && $w->{q} ne 'י') # אצוק ולא איצוק || ($w->{binyan} eq $qal && $w->{root}=~m/^יצ/o); } else { # case #12 } my $fi = $future_initial{$w->{guf}}; $m = $fi.$m unless $fi eq 'י' and $m =~ m/^יי/o; return $m; } sub future_conj { #chart 5 (V) my ($w, $guf) = @_; $w->{guf} = $guf; # $w->{tense} = $future; # chart4 overrides it for passives my $m = $w->_future_conj_chart4; return undef if ${$w->{opts}}{'אין_עתיד'}; # no addition for some persons return $m if $w->{guf} =~ m/[$ani$ata$hi$hu$anu]/o; # case #2 - does $m end with segol? if ($w->_nakey_lh) { #case #3 #_cond_debug('V3'); $m =~ s/ה$//; $m = $m.'י' if $w->{guf} eq $aten || $w->{guf} eq $hen; } else { #action #4 - NNN # cond #5 - is the final vowel i/u TODO (*) #_cond_debug('V5'); if ($m =~ m/[יו].$/o && !${$w->{opts}}{"קל_אפעול"} || $m =~ m/^[תי].ו.$/o) { # TODO: check rule #print "aaa $m\n"; #case #7 #_cond_debug('V7'); } else { #cond #6 - is the final vowel o, and also in the past? #_cond_debug('V6'); if ($m =~ /ו.$/ && $w->{nistar} =~ /ו.$/) { #case #7 #_cond_debug('V7'); } else { # cond #8 - is the second final consonant guttural? #_cond_debug('V8'); if (0) { #case #9 TODO check (**) #_cond_debug('V9'); } else { #case #10 #_cond_debug('V10'); } $m =~ s/ו(.)$/$1/o if $w->{guf} !~ m/^($hen|$aten)$/o; # is it good?? } } } # add guf suffix: for 2pm and 3pm $m .= 'ו' if $w->{guf} eq $atem || $w->{guf} eq $hem; $m =~ s/ווו/וו/o; # remove triple waw! if ($w->{guf} eq $aten || $w->{guf} eq $hen) { # remove hiqtil's yod for 2pf and 3pf $m =~ s/י(.)$/$1/o if $w->{binyan} eq $hiqtil; # and also qal's yod (nakey ayin-yod) - but not double yod $m =~ s/(?<=[^י])י(?=[^י]$)//o if $w->{binyan} eq $qal && $w->{t} =~ m/י/o; $m =~ s/(?<=^ת.)ו(?=ח$)//o if $w->{t} eq 'ו'; # for נוח # remove double nun for 2pf and 3pf $m =~ s/נ?$/נה/o; } # final yod for 2sf $m .= 'י' if $w->{guf} eq $at; return $m; } sub _future_conj_chart4 { my ($w) = @_; $w->infinitive_conj unless $w->{infinitive}; # requires maqor $w->{tense} = $future; my $m = $w->{infinitive}; if (!$m) { # comment (*) $w->abar_nistar unless $w->{nistar}; $m = 'ל'.$w->{nistar}; } if ($m eq 'לגשת') { #remove singular exception $m = 'להיגש'; } # cond #2 - does $m begin with non-root he? #_cond_debug('2'); #TODO: (**) if ($w->{binyan} =~ m/[$niqtal$hiqtil$huqtal$hitqatel]$/o) { # action #3 $m =~ s/^לה/ל/; # jump to #10 $m = $w->_future_cond10($m); } else { # cond #4 - does $m begin with xiriq and end with xolam? #_cond_debug('4'); if ($w->{binyan} eq $qal && $m =~ m/^ל..ו?ו.$/o) { # cond #5 - is one of the 2 last consonant guttural? # is it an intransitive verb ??? TODO: what??? # TODO: (+) #_cond_debug('5'); if (${$w->{opts}}{"קל_אפעל"}) { #action #6 - convert final o to a $m =~ s/ו(.)$/$1/; #jump to #10 $m = $w->_future_cond10($m); } else { # jump to #10 $m = $w->_future_cond10($m); } } else { #cond #7 - is $m in list1? #_cond_debug('7'); # Ornan's list1 is implemented using the עתיד1 tag! if (${$w->{opts}}{'עתיד1'}) { #action #8 - convert according to list1 $m = ${$w->{opts}}{'עתיד1'}; #jump to #10 $m = $w->_future_cond10($m); } else { # cond #9 - does $m have 1 syllable? #_cond_debug('9'); if (0) { #jump to #10 $m = $w->_future_cond10($m); } else { #cond #13 - intransitive, mishqal laqtol? # TODO (***) (++) #_cond_debug('13'); if (0) { #case #14 } else { #cond #15 - what guf? - NNN # if ($w->{guf} ne $ani) { #case #16. TODO: check (a,b,c) # } else { #cond #17 - NNN #cases #18, #19 TODO check (a) # } $m =~ s/^ל//; my $fi = $future_initial{$w->{guf}}; $m =~ s/^י// if $w->{guf} eq $ani && ($w->{binyan} eq $niqtal # אפול ולא איפול || $w->{binyan} eq $qal && $w->{q} ne 'י'); # certain doubled roots have xiriq in the future. $fi .= 'י' if ${$w->{opts}}{'עתיד_חרוק'} && $w->{binyan} eq $qal && $w->{t} eq $w->{l} && $w->{guf} ne $ani; $m =~ s/ו(?=.$)// if ${$w->{opts}}{'קל_אפעל'} && !${$w->{opts}}{'שמור_עע'} && $w->{t} eq $w->{l}; $m = $fi.$m; $m =~ s/ייי*/יי/; # I hate triple yod # $m = $fi.$m unless $fi eq 'י' and $m =~ m/^יי/o; } } } } } # checking (a): $m =~ s/וות$/ווה/ if ($w->{l} eq 'ה'); #keep consonant waw $m =~ s/ו?ת$/ה/ if ($w->{l} eq 'ה'); return $m } sub _present_conj_chart6 { my ($w, $m) = @_; # $m = $w->{nistar}; #cond #2 (+) - is it one syllable? if ($m =~ m/^.[יו]?.$/o) { #case #5 } else { #cond #3 - does $m begin with non-root nun? (***) if ($w->{binyan} eq $niqtal) { # cond #4 - does $m have two syllables? if (1) { #jump to case #5 } else { # case #6 } } else { # cond #7 - is the mishqal .a.e./.a.o. ??? if (0) { # case #8 } else { #cond #9 - is the mishqal .a.a. ? if ($w->{binyan} eq $qal) { #case #10 - (and avoid removing cons waw) $m =~ s/^(.)([^ו])/$1ו$2/ if !${$w->{opts}}{"בינוני_שמן"}; } else { #action #11 $m = 'מ'.$m; #cond #12 - is it hiqtil ??? if ($w->{binyan} eq $hiqtil) { #case #13 $m =~ s/^מה/מ/; } else { # cond #14 - is it hitqatel,huqtal? if ($w->{binyan} eq $hitqatel || $w->{binyan} eq $huqtal) { # case #15 $m =~ s/^מה/מ/; } else { #cond #16 - is the first vowel in nistar_abar is e/i if ($w->{binyan} eq $qitel) { #is it a good rule? #case #17 - but I like to keep double yod $m =~ s/^מ(.)[יi]/מ$1/o if $w->{q} ne 'י'; # and to double consonant waw $m =~ s/^מו/מוו/o if $w->{q} eq 'ו'; } else { #case #18 } } } } } } } return $m; } sub _present_cond8 { my ($w, $m) = @_; #cond 8 - is it single female? #_cond_debug(8); if ($w->{guf} eq $at || $w->{guf} eq $hi) { #cond #9 - is it niqtal? #_cond_debug(9); if ($w->_nakey_lh && ($w->{binyan} eq $niqtal|| ($w->{binyan}eq $hiqtil || $w->{binyan}eq$huqtal) && $w->{archaic_sf} ) ) { # last two lines for (*) $m =~ s/ה$/ית/; return $m; } #else continue to case #11 } #case #11 - check (**) $m =~ s/ה$//o; # remove final e if any. $m =~ s/$/ה/o if $w->{guf} eq $at || $w->{guf} eq $hi; $m =~ s/וו$/ו/o if $w->{guf} eq $aten || $w->{guf} eq $hen || $w->{guf} eq $anu; #no triple waws, please! $m =~ s/$/ות/o if ($w->{guf} eq $aten || $w->{guf} eq $hen || $w->{guf} eq $anu); $m =~ s/$/ים/o if $w->{guf} eq $atem || $w->{guf} eq $hem; return $m; } sub present_conj { #chart VII my ($w, $guf) = @_; $w->{guf} = $guf; return undef if ${$w->{opts}}{"אין_בינוני"}; $w->{tense} = $present; my $m = $w->{nistar}; # certain doubled root have the regular conjugation in present. $m = $w->{q}.'ו'.$w->{t}.$w->{l} if ${$w->{opts}}{'בינוני_שומר'} && $w->{binyan} eq $qal && $w->{t} eq $w->{l}; $m = $w->_present_conj_chart6($m); return $m if ($guf eq $ani || $guf eq $ata || $guf eq $hu); $w->{archaic_sf} = ($guf eq $at || $guf eq $hi) && ${$w->{opts}}{"בינונית_ארכאית"}; # cond #2 - does m ends with e (nake_lh) if ($w->_nakey_lh) { #jump to cond #8 $m = $w->_present_cond8($m); } else { # case #3 - does m have 1 syllable? if ($m =~ m/^.[יו]?.$/o) { #jump to cond #8 $m = $w->_present_cond8($m); } else { #action #4 #cond #5 - does the first vowel in the form Xa/Xe ??? # TODO this rule is awful!! if ($w->{binyan} eq $niqtal && $m =~ m/^ני?.ו.$/o || (${$w->{opts}}{"בינוני_שמן"} && $w->{binyan} eq $qal)) { #action #6 - NNN #jump to cond #8 $m = $w->_present_cond8($m); } else { #cond #7 - is the last vowel i? check (***) if ($w->{binyan} eq $hiqtil && !$w->{archaic_sf}) { #jump to cond #8 $m = $w->_present_cond8($m); } else { #cond #12 - is it single female? (and not archaic single female***) if ($w->{binyan}eq$hiqtil || !$w->{archaic_sf} && ($w->{guf} eq $at || $w->{guf} eq $hi)) { #for check (***) $m =~ s/י(?=.$)// if $w->{binyan} eq$hiqtil && $w->{archaic_sf}; #cond #13 - is the final consonant xet &ayin or he mapuqa if ($m =~ m/[חעh]$/o) { #case #14 $m = $m.'ת'; } else { #cod #15 - is it aleph? if ($m =~ m/א$/o) { #case #16 $m = $m.'ת'; } else { #case #17 $m = $m.'ת'; } } } else { #cond #18 is the last vowel (ceiyre)? TODO??? #----- no care -- no niqqud #case #24 $m = $m.'ות' if $w->{guf} eq $aten || $w->{guf} eq $hen || $w->{guf} eq $anu; $m = $m.'ים' if $w->{guf} eq $atem || $w->{guf} eq $hem; # added by me for archaic present forms $m = $m.'ה' if $w->{guf} eq $at || $w->{guf} eq $hi; } } } } } return $m; } sub paul_conj { my ($w, $guf) = @_; $w->{guf} = $guf; return undef if ${$w->{opts}}{"אין_בינוני"} ||${$w->{opts}}{"אין_פעול"}; return undef if $w->{t} =~ m/[יו]/o || ${$w->{opts}}{"נסתר"}; my $m; $w->{tense} = $adjective; $m = $w->_subst_root('qtוl'); $m =~ s/ה$/י/; $m = $m.'ות' if $w->{guf} eq $aten || $w->{guf} eq $hen || $w->{guf} eq $anu; $m = $m.'ים' if $w->{guf} eq $atem || $w->{guf} eq $hem; $m = $m.'ה' if ($w->{guf} eq $at || $w->{guf} eq $hi); return $m } sub shempeula_conj { my ($w) = @_; return ${$w->{opts}}{"שם_פעולה"} if ${$w->{opts}}{"שם_פעולה"}; return undef if $w->{binyan} eq $qutal || $w->{binyan} eq $huqtal || ${$w->{opts}}{"אין_שם_פעולה"}; my $m; if ($w->{binyan} =~ m/[$niqtal$hitqatel]$/o) { $w->infinitive_conj unless $w->{infinitive}; $m = $w->{infinitive}; $m =~ s/^ל//; $m = $m.'ות' unless $m =~ m/ות$/o && $w->{l} eq 'ה'; return $m; } if ($w->{binyan} eq $hiqtil) { $w->infinitive_conj unless $w->{infinitive}; $m = $w->{infinitive}; $m =~ s/^ל//; $m =~ s/י(.)$/$1ה/; $m =~ s/ות$/יה/; #for nakey_lh $m =~ s/(^...$)/$1ה/; # for 'doubled' return $m; } return undef if ${$w->{opts}}{"נסתר"}; $m = 'qtיlה' if $w->{binyan} eq $qal; $m = 'qיtוl' if $w->{binyan} eq $qitel; # no yod for quadruple roots $m =~ s/י//o if (length($w->{t}) > 1 && $w->{binyan} eq $qitel); if ($w->_nakey_lh) { $m =~ s/l/י/o if $w->{binyan} =~ m/^[$qal$hiqtil$qitel]$/o; } # nakey ayin waw if ($w->{t} =~ m/^[יו]$/o) { $m =~ s/t// if $w->{binyan} =~ m/[$qal$hiqtil]/o; $m =~ s/t/l/o if $w->{binyan} =~ m/$qitel/o; } # aleph sopit - the more common form is with yod if ($w->{l} eq 'א') { $m =~ s/l/י/o if $w->{binyan} eq $qitel; } return $w->_subst_root($m) } sub objectize { # $is_subj is 1 if the object that is fused into the verb is really the # subject of a sentence. my ($w, $s, $bj, $is_subj, $suf) = @_; $w->{object} = $bj; # according to barkali, no kinnuy havur when obj=subj if ($w->{tense} !~ m/[$present$infinitive]/o){ return undef if ($bj eq $w->{guf} && $bj =~ m/[$ani$anu$ata$at$atem$aten]/o); return undef if "$bj $w->{guf}" =~ m/[$ani$anu] [$ani$anu]/o; return undef if "$bj $w->{guf}" =~ m/[$at$ata] [$at$ata]/o; return undef if "$bj $w->{guf}" =~ m/[$aten$atem] [$aten$atem]/o; } if ($is_subj) {$suf = $subject_suf{$bj}} else {$suf = $object_suf{$bj}} $suf =~ s/^הו$/ו/ if $w->{second_bj_form}; # The following handling may seem logical, but it is wrong according to the # academia specifications. since the stem form does not have the internal yod, # the conjugations don't obtain it either. "When I protected my country" should # be spelled בהגני על ארצי, and not בהגיני על ארצי. # # # handling of Doubled # if ($w->{binyan} eq $hiqtil && # $w->{t} eq $w->{l} && !${$w->{opts}}{"שמור_עע"}) { # # add xiriq where there was ceire. # $s =~ s/($w->{q})($w->{l}[הוי]?)$/$1י$2/; # } if ($w->{tense} eq $infinitive) { # nadav (and the aqademia rules) requires dropping the ו. # in general the waw should be dropped. but what about the cases where it # is replaced by a qamac qatan, like in the *obj*ectizations for the # second person pronouns. TODO: this has to be sorted out some time, but # on the mean while I'll follow ravmilim.co.il and always drop the waw. $s =~ s/^ל(.)(.)ו(?=.$)/ל$1$2/ if $w->{binyan} eq $qal && !$w->_nakey_lh;# && ($is_subj || $bj !~ m/[$atem$aten$at$ata]/o); # the nun stays since it has qamac! $s =~ s/^לי/לנ/o if $w->{binyan} eq $qal && $w->{q} eq 'נ'; $suf =~ s/^הו$/ו/; if ($is_subj) {$s =~ s/ל/B/o;} else {$s =~ s/ל/L/o;} # TODO barkali writes לדעתי and not לדעתני. why? } elsif ($w->{tense} eq $imperative) { return undef if "$bj $w->{guf}" =~ m/[$at$ata$atem$aten] [$at$ata$atem$aten]/o; # in hifil, the dropped yod of second person returns if ($w->{binyan} eq $hiqtil && $w->{guf} eq $ata && $w->{infinitive} =~ m/י.$/o) {$s =~ s/(?=.$)/י/o} $s =~ s/ה$//o if $w->_nakey_lh; $s =~ s/^(..)ו(?=.$)/$1/ if $w->{binyan} eq $qal; } elsif ($w->{tense} eq $past) { $s =~ s/ה$//o if $w->_nakey_lh; $s =~ s/ה$/ת/o if $w->{guf} eq $hi; $s =~ s/ת[םןמנ]$/תו/ if $w->{guf} eq $aten || $w->{guf} eq $atem; $s .= 'י' if $w->{guf} eq $at; # TODO: $suf = 'ו' if $bj==$hu && past_pael שנאו and not שנאהו # plural gufs don't have the second_bj_form return undef if ($w->{second_bj_form} && $s =~ m/[וw]$/o); } elsif ($w->{tense} eq $present) { #TODO why Barkaly does not show objectization of female plurals?? #return undef if $w->{guf} =~ m/^($anu|$aten|$hen)$/o; return undef unless $w->{second_bj_form}; $s =~ s/ה$/ת/o if $w->{guf} eq $at; $s =~ s/ה$//o if ($w->_nakey_lh && $bj ne $hu); if ($w->{guf} =~ m/[$atem$hem$anu$aten$hen]/o) { $s =~ s/ם$//o ; $s =~ s/ת$/תי/o ; $suf =~ s/^ני$/י/o; $suf =~ s/^([םן])$/ה$1/o; $suf = 'יך' if $bj eq $at; } } elsif ($w->{tense} eq $future) { $s =~ s/^([אתינ]..)ו(?=.$)/$1/o if $w->{binyan} eq $qal; $s =~ s/ה$//o if $w->_nakey_lh; # few gufs has a second legal form for hu/hi objects. # return it when second_bj_form is requested. # for example אשמרנו/אשמרנה, aside to אשמרו/אשמרה if ($w->{second_bj_form}) { #only few gufs have second_bj_form. return undef unless $w->{guf} =~ m/[$ani$ata$hu$hi$anu]/o; $suf =~ s/^(?=[הו]$)/נ/o; } } # $suf = $subject_suf{$bj} if !defined($suf); # TODO is this needed? # TODO most of the objectized forms are very bizarre. # we should decide what to do with them. DEBUG $suf = $suf.'+' unless $w->{tense} eq $infinitive; return $s.$suf; } sub outword { my ($w, $s) = @_; my $detail=''; return unless $s; if ($detailed_output) { my ($tense,$person,$bjtext)=('-','',''); # the anonymous hash looked much better than the translation # code it replaces. However, the following named hashes are much faster... $tense = $tname{ $w->{tense} }; if ($w->{guf}) { $person = ','.$Word::gname{$w->{guf}}; if ($w->{tense} =~ m/[$present$adjective]/o) { $person = ','.$Word::pname{$w->{guf}}; } } if ($w->{object}) { $bjtext=",כינוי/".$Word::gname{$w->{object}} if $w->{object}; } if ($w->{tense} eq $adjective) { $detail = " ת$person"; } else { $detail = " פ,$tense$person$bjtext"; } $detail .= ',סמיכות' if $s =~ m/-$/o; } # the following is only an oversimplification of deornanization!!! $s =~ s/^w(?=[Iי])/ו/o; $s =~ s/[wו][wו]/וו/o; $s =~ s/(?<=[ו])w/ו/o; $s =~ s/w/וו/o; $s =~ s/y(?=[Iיו])/י/o; $s =~ s/(?<=[Iיו])y/י/o; $s =~ s/יIי/יI/o; # for יירה $s =~ s/yה$/יה/o; $s =~ s/y/יי/o; $s =~ s/h/ה/o; $s =~ s/-$//o; # if nadav doesn't print this stupid -, so would I. $s =~ s/J/ג'/go; $s =~ s/Z/ז'/go; $s =~ s/C/צ'/go; $s =~ s/([כמנפצ])$/$fin{$1}/; print $s.$detail."\n"; } }