Mercurial > hg > xemacs-beta
changeset 26:441bb1e64a06 r19-15b96
Import from CVS: tag r19-15b96
line wrap: on
line diff
--- a/CHANGES-beta Mon Aug 13 08:51:05 2007 +0200 +++ b/CHANGES-beta Mon Aug 13 08:51:32 2007 +0200 @@ -1,4 +1,29 @@ -*- indented-text -*- +to 19.15 beta96 +-- New XEmacs logo Courtesy of Jens Lautenbacher +-- New default color coordination Courtesy of Hrvoje Niksic +-- time.el updated for XEmacs Courtesy of Jens Lautenbacher +-- Gnus-5.4.16 +-- some historical files removed from etc for space +-- id-select.el-1.4.5 +-- M-: (eval-expression) is now enabled by default +-- Freeze frame fixes Courtesy of Jan Vroonhof and Darrell Kindred +-- PURESIZE is now a dynamic computation +-- hyperbole-4.022 +-- Customized edit-faces Courtesy of Jens Lautenbacher +-- W3-3.0.62 +-- AUCTeX-9.7k +-- mic-paren.el-1.3.1 Courtesy of Mikael Sjödin +-- hm--html-menus-5.3 +-- custom-1.46 +-- site-load.el preconfigured to work with DOC string generation +-- python-mode.el-2.90 +-- balloon-help-1.04 +-- xrdb-mode.el-1.21 +-- Dynamic computation of PURESIZE during build +-- itimer.el-1.01 Courtesy of Kyle Jones +-- miscellaneous fixes. + to 19.15 beta'95 -- hm--html-menus-5.2 -- redo.el-1.01
--- a/Makefile.in Mon Aug 13 08:51:05 2007 +0200 +++ b/Makefile.in Mon Aug 13 08:51:32 2007 +0200 @@ -482,12 +482,16 @@ (cd lock && rm -f *) distclean: FRC.distclean + -([ ! -d lock ] && mkdir lock) + -([ ! -d site-lisp ] && mkdir site-lisp) (cd src && $(MAKE) $(MFLAGS) distclean) (cd lib-src && $(MAKE) $(MFLAGS) distclean) (cd lwlib && $(MAKE) $(MFLAGS) distclean) (cd dynodump && $(MAKE) $(MFLAGS) distclean) -(cd man && $(MAKE) $(MFLAGS) distclean) -${top_distclean} + (echo "/* This file is generated by XEmacs, DO NOT MODIFY!!! */" > src/PURESIZE.h) + (echo "# define PURESIZE 1350000" >> src/PURESIZE.h) ### `realclean' ### Delete everything from the current directory that can be
--- a/configure Mon Aug 13 08:51:05 2007 +0200 +++ b/configure Mon Aug 13 08:51:32 2007 +0200 @@ -1438,7 +1438,7 @@ #### have stuck the source on a read-only partition. Instead we'll #### create it as an actual directory later on if it doesn't already #### exist. -for dir in etc lisp info +for dir in etc man info site-lisp do if [ ! -d $dir ]; then echo Making symbolic link to ${srcdir}/$dir @@ -1446,6 +1446,20 @@ fi done +# lisp/ is special +if [ ! -d lisp ]; then + mkdir lisp + echo Making symbolic links to lisp libraries + ${LN_S} ${srcdir}/lisp/* ./lisp + rm -f ./lisp/*.el ./lisp/site-packages + cp ${srcdir}/lisp/*.el lisp + if [ -f ${srcdir}/lisp/site-packages ]; then + cp ${srcdir}/lisp/site-packages lisp + fi +fi + +cp ${srcdir}/lisp/version.el lisp + #### Make srcdir absolute, if it isn't already. It's important to #### avoid running the path through pwd unnecessary, since pwd can #### give you automounter prefixes, which can go away.
--- a/configure.in Mon Aug 13 08:51:05 2007 +0200 +++ b/configure.in Mon Aug 13 08:51:32 2007 +0200 @@ -1,3 +1,4 @@ +dnl -*- mode: m4; m4-mode-hook : (lambda () (modify-syntax-entry ?\" "\"\"")) ; -*- dnl Synched up with: FSF 19.31. dnl (19.29 -- 19.31 use Autoconf 2.x instead of Autoconf 1.x. dnl Some stuff related to this change has not been synched because @@ -1443,7 +1444,7 @@ #### have stuck the source on a read-only partition. Instead we'll #### create it as an actual directory later on if it doesn't already #### exist. -for dir in etc lisp info +for dir in etc man info site-lisp do if [ ! -d $dir ]; then echo Making symbolic link to ${srcdir}/$dir @@ -1451,6 +1452,20 @@ fi done +# lisp/ is special +if [ ! -d lisp ]; then + mkdir lisp + echo Making symbolic links to lisp libraries + ${LN_S} ${srcdir}/lisp/* ./lisp + rm -f ./lisp/*.el ./lisp/site-packages + cp ${srcdir}/lisp/*.el lisp + if [ -f ${srcdir}/lisp/site-packages ]; then + cp ${srcdir}/lisp/site-packages lisp + fi +fi + +cp ${srcdir}/lisp/version.el lisp + #### Make srcdir absolute, if it isn't already. It's important to #### avoid running the path through pwd unnecessary, since pwd can #### give you automounter prefixes, which can go away.
--- a/etc/COOKIES Mon Aug 13 08:51:05 2007 +0200 +++ b/etc/COOKIES Mon Aug 13 08:51:32 2007 +0200 @@ -1,3 +1,4 @@ +Original annotation: [Someone sent this in from California, and we decided to extend our campaign against information hoarding to recipes as well as software. (Recipes are the closest thing, not involving computers, @@ -8,150 +9,86 @@ Therefore, this recipe can be thought of as a compatible replacement. We have reports that the cookies it makes are pretty good.] -Someone at PG&E called the Mrs. Fields Cookie office -and requested the recipe for her cookies. They asked -her for her charge card number, and she gave it to them -thinking the cost would be $15 to $25. It turned out -to be $200! +New annotation for XEmacs 19.15/20.1: +[This file originally contained SPAM. It has been updated for XEmacs. -sb] -Therefore, this person is giving the recipe to anyone -and everyone she knows (and doesn't know) so that -someone can get use of her $200. Anyway, just keep -passing it on. - -Cream together: 2 cups butter - 2 cups sugar - 2 cups brown sugar +From: jhayward@math.uiuc.edu (Jonathan Hayward) +Subject: A delicacy of delicacies +Date: 19 Feb 1997 16:30:02 -0800 -Add: 4 eggs - 2 tsp. vanilla +Okay, everyone... a true story of justice in the good old U.S. of A. Thought +y'all might enjoy this; if nothing else, it shows internet justice, if it can +be called that. -Mis together in -separate bowl: 4 cups flour - 5 cups oatmeal (put small - amounts of oatmeal in blender until it turns to - powder. Measure out 5 cups of oatmeal and only - "powderize" that, NOT 5 cups "powderized" oatmeal) - - 1 tsp salt - 2 tsp baking powder - 2 tsp baking soda - -Mix: All of the above +On a whim, I decided to visit Hormel's main plant, and, after a tour, we were +allowed to taste samples of their various products. And there was one... I +don't think that words can describe how it tasted. It was a meat product, but +to call it meat would not do it justice. The memory of the taste brings tears +to my eyes. -Add: 24 oz. bag of chocolate chips and - 1 finely grated 8 oz Hershey bar (plain) - -Add: 3 cups chopped nuts (any kind) - -Bake on greased cookie sheet (make golf ball sized balls) and -bake about two inches apart. Bake at 350 degrees for 8 - 10 -minutes. DO NOT OVERBAKE. Makes 112. - -From: ucdavis!lll-lcc!hplabs!parcvax!bane@ucbvax.berkeley.edu (John R. Bane) -Subject: Re: free cookie foundation? +I like to cook in my spare time, so I asked the tour guide if they could give +me the recipe. She frowned, and said, "I'm afraid not." Well, I said, would +you let me buy the recipe? With a cute smile, she said, "Yes." I asked how +much, and she responded, "Two-fifty." I said with approval, just add it to my +tab. -Hi! I "stole" your very expensive cookie recipe off the net. If you -want to send me your SnailMail address, I'll be glad to send you a -dollar (I would like to suggest this to the net, but I think there is -some netiquette rule against asking for money - or is that only money -for oneself?) to help defray the cost (it's not much, but if EVERYone -who took the recipe sent you a dollar, it would help). - -Here also is another cookie recipe which I'm very fond of. +Thirty days later, I received my VISA statement from Hormel and it was $285.00. +I looked again and remembered I had only spent $9.95 for a couple of tins, and +about $20.00 for an anti-nauseant. As I glanced at the bottom of the +statement, it said, "Recipe -- $250.00." Boy, was I upset! I called Hormel's +Accounting Dept. and told them the waitress said it was "two-fifty," and I did +not realize she meant $250.00 for a recipe. I asked them to take back the +recipe and reduce my bill and they said they were sorry, but because all the +recipes were this expensive so not just everyone could duplicate any of our +delicacies... the bill would stand. -Makes 6-8 dozen -Bake at 375 degrees for ~10 min. - -Cream together: - -1 cup shortening (I use Weight Watcher's Reduced Calorie Margarine!) -1/4 cup peanut butter (I recommend the non-sugared kind) -1/2 cup sugar -1/2 cup brown sugar -2 eggs -1 teaspoon vanilla - -Add: +I waited, thinking of how I could get even or even try and get any of my money +back. I just said, "Okay, you folks got my $250.00 and now I'm going to have +$250.00 worth of fun." I told her that I was going to see to it that every +gourmet will have a $250.00 recipe from Hormel for nothing. She replied, "I +wish you wouldn't do this." I said, "I'm sorry but this is the only way I feel +I could get even," and I will. -1/2 cup flour -1 teaspoon soda -1/2 teaspoon salt -2 cups rolled oats (I use the 5-min variety) -1-2 cups chocolate chips (I use 2 cups semi-sweet - ummmm!) -1 cup nuts (I use pecan pieces - don't get them crushed, or the extra - oil will make greasy cookies) -1 cup shredded or flaked coconut - -(The nuts were listed as optional and I added the coconut myself, but -I really love them there! You could also add things like m&m's, or -raisins (I don't care for raisins in cookies, but you might). I've -always wanted to try banana chips.) - -Mix well. Drop by teaspoonfuls on greased cookie sheet (I use pam). -Bake at 375 degrees for approx. 10 min. +So, here it is, and please pass it on to someone else or run a few copies... I +paid for it; now you can have it for free. -My aunt found this recipe in an Amish book called something like -"Eating Well When The Whole World Is Starving," and although I thought -a cookie recipe was a bit odd for a book like that, they are about the -healthiest a cookie is ever likely to get. - -They are also very easy to make (no blending, sifting, rolling, etc.) -and extremely delicious. I get rave reviews and recipe requests whenever -I make them. - - - rene - -Chocolate Chip Cookies - Glamorous, crunchy, rich with chocolate bits & nuts. - -Also known as "Toll House" Cookies ... from Kenneth and Ruth Wakefield's -charming New England Toll House on the outskirts of Whitman, Massachusetts. -These cookies were first introduced to American homemakers in 1939 through -our series of radio talks on "Famous Foods From Famous Eating Places." + (Trust me; this recipe is so good that you will want to make as much as + you can at once, which is why I list so much. This may be doubled, of + course): + 1 pig carcass (all parts that are technically digestible but can't be + used for any other purpose, even hot dogs) + 1 gallon castor oil + 1 salt lick + 1 gallon vomit + 16 lbs recycled plastic -Mix Thoroughly : - 2/3 cup soft shortening ( part butter ) - 1/2 cup granulated sugar - 1/2 cup brown sugar ( packed ) - 1 egg - 1 tsp vanilla - -Sift together and stir in : - 1-1/2 cups sifted flour (*) - 1/2 tsp soda - 1/2 tsp salt - -Stir in : - 1/2 cup cut-up nuts - 6 oz package of semi-sweet chocolate pieces ( about 1-1/4 cups ) - - -(*) for a softer, more rounded cookie, use 1-3/4 cups sifted flour. - + The cooking technique is simple. Use a blender, branch shredder, or + anything else handy to shred the carcass, salt, and plastic; mix evenly + in a sufficiently large container. There are a variety of ways to cook + it; in experimenting, I have found the best option to be slow boiling + in motor oil. But the specific method of cooking doesn't matter much; + with such an extraordinary combination of ingredients, nobody will know + the difference. When it is cooked, compress it into small tins (at + Hormel, it came in dark blue tins with four large white or yellow + letters -- I won't specify which four letter word, because there are + some people who find it to be more obscene and offensive than a certain + crude word for sex), and open and enjoy at leisure. You don't need to + worry about it spoiling; bacteria won't touch it, and at any rate + there is a specific reason why it _can't_ go bad. Makes at least 112 + tins. -Drop rounded teaspoonfuls about 2" apart on ungreased baking sheet. Bake until -delicately browned ... cookies should still be soft. Cool slightly before you -remove them from the baking sheet. +Have fun!! This is not a joke --- this is a true story. That's it. Please, +pass it along to everyone you know, single people, mailing lists, etc... -Temperature: 375 F. ( modern oven ) -Time: bake 8 - 10 minutes -Amount: 4 - 5 dozen 2" cookies - - -===== - -Personal comments : +Oh, and one last thing I almost forgot... -I find it tastes better with a mixture of shortening and butter, as they say. - -You don't need << all >> of that sugar, and it can be whatever color you want. - -The nuts are optional. Feel free to play with the recipe. I put oatmeal in it, -reducing flour accordingly, and sometimes cinnamon. +I feel a little guilty for presuming to speak about how to best serve a +delicacy so wonderful -- the final word must go to gourmets and chefs with a +taste far more refined than mine -- but there are a thousand ways in which it +may be served, and, after a little experimenting, I really HAVE to share with +you my personal favorite: -I also find it useful to grease the cookie sheets. - -I think I'm going to go bake some now ... - --- richard - + Open one tin; slice thinly. Marinate in pesto sauce, with a touch of + thyme. Roast slowly over an open flame (I have found wood -- + preferably oak -- to work best), then THROW THE STUPID THING OUT THE + WINDOW AND COOK YOURSELF A STEAK.
--- a/etc/Emacs.ad Mon Aug 13 08:51:05 2007 +0200 +++ b/etc/Emacs.ad Mon Aug 13 08:51:32 2007 +0200 @@ -76,13 +76,13 @@ *XmScrollBar*Background: Gray75 ! -! The Lucid Scrollbar supports two added resources, KnobStyle is either +! The Lucid Scrollbar supports two added resources, SliderStyle is either ! "plain" (default) or "dimple". Dimple puts a small dimple in the middle -! of the knob that depresses when the knob is clicked on. ArrowPosition is +! of the slider that depresses when the slider is clicked on. ArrowPosition is ! either "opposite" (default) or "same". Opposite puts the arrows at opposite ! of the scrollbar, same puts both arrows at the same end, like the Amiga. ! -! Emacs*XlwScrollBar.KnobStyle: dimple +! Emacs*XlwScrollBar.SliderStyle: dimple ! Emacs*XlwScrollBar.ArrowPosition: opposite
--- a/etc/JOKES Mon Aug 13 08:51:05 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,642 +0,0 @@ -From: Don Chiasson <G.CHIASSON@DREA-XX.ARPA> -Subject: Some gnu jokes -To: jokes@DREA-XX.ARPA, gergely@DREA-XX.ARPA, broome@DREA-XX.ARPA -cc: G.CHIASSON@DREA-XX.ARPA -Message-ID: <12329394624.13.G.CHIASSON@DREA-XX.ARPA> - - Richard M. Stallman (RMS, widely known for creating EMACS) is writing -a UNIX clone called GNU (which means Gnu's Not Unix--a recursive acronym). -This seems to open the way to a whole gnu class of jokes. For example: - -Q: What do you call a person who hacks while wearing no clothes? -A: A gnudist. - -Q: What do you call an eligible young hacker? -A: Gnubile. - -Q: What is a hacker's favorite candy? -A: Gnugat. (Though it contains little gnutrition.) - -Q: What do you call a computer filled with air? -A: Gnumatic. - -Q: What do you call a novice hacker who keeps pestering you - with foolish questions? -A: A gnuisance. - -Q: What do you call a subtle, clever hack in the favorite language? -A: A gnuanCe. - -Q: What do you use a supercomputer for? -A: Gnumerical analysis. - -Q: What do you call a hacker who collects coins? -A: A gnumismatist. - - Well, there are more, just too gnumerous to tell all at once. I think -I'd better go before someone starts firing gnuclear weapons at me. - Don - -From: patl@athena.mit.edu (Patrick J. LoPresti) -Message-ID: <1991Jul11.031731.9260@athena.mit.edu> -Sender: news@athena.mit.edu (News system) -Subject: The True Path (long) -Date: 11 Jul 91 03:17:31 GMT -Path: ai-lab!mintaka!olivea!samsung!zaphod.mps.ohio-state.edu!think.com!snorkelwacker.mit.edu!bloom-picayune.mit.edu!athena.mit.edu!patl -Newsgroups: alt.religion.emacs,alt.slack -Organization: Massachusetts Institute of Technology -Lines: 95 -Xref: ai-lab alt.religion.emacs:244 alt.slack:1935 - -When I log into my Xenix system with my 110 baud teletype, both vi -*and* Emacs are just too damn slow. They print useless messages like, -'C-h for help' and '"foo" File is read only'. So I use the editor -that doesn't waste my VALUABLE time. - -Ed, man! !man ed - -ED(1) UNIX Programmer's Manual ED(1) - -NAME - ed - text editor - -SYNOPSIS - ed [ - ] [ -x ] [ name ] -DESCRIPTION - Ed is the standard text editor. -- --- - -Computer Scientists love ed, not just because it comes first -alphabetically, but because it's the standard. Everyone else loves ed -because it's ED! - -"Ed is the standard text editor." - -And ed doesn't waste space on my Timex Sinclair. Just look: - -- -rwxr-xr-x 1 root 24 Oct 29 1929 /bin/ed -- -rwxr-xr-t 4 root 1310720 Jan 1 1970 /usr/ucb/vi -- -rwxr-xr-x 1 root 5.89824e37 Oct 22 1990 /usr/bin/emacs - -Of course, on the system *I* administrate, vi is symlinked to ed. -Emacs has been replaced by a shell script which 1) Generates a syslog -message at level LOG_EMERG; 2) reduces the user's disk quota by 100K; -and 3) RUNS ED!!!!!! - -"Ed is the standard text editor." - -Let's look at a typical novice's session with the mighty ed: - -golem> ed - -? -help -? -? -? -quit -? -exit -? -bye -? -hello? -? -eat flaming death -? -^C -? -^C -? -^D -? - -- --- -Note the consistent user interface and error reportage. Ed is -generous enough to flag errors, yet prudent enough not to overwhelm -the novice with verbosity. - -"Ed is the standard text editor." - -Ed, the greatest WYGIWYG editor of all. - -ED IS THE TRUE PATH TO NIRVANA! ED HAS BEEN THE CHOICE OF EDUCATED -AND IGNORANT ALIKE FOR CENTURIES! ED WILL NOT CORRUPT YOUR PRECIOUS -BODILY FLUIDS!! ED IS THE STANDARD TEXT EDITOR! ED MAKES THE SUN -SHINE AND THE BIRDS SING AND THE GRASS GREEN!! - -When I use an editor, I don't want eight extra KILOBYTES of worthless -help screens and cursor positioning code! I just want an EDitor!! -Not a "viitor". Not a "emacsitor". Those aren't even WORDS!!!! ED! -ED! ED IS THE STANDARD!!! - -TEXT EDITOR. - -When IBM, in its ever-present omnipotence, needed to base their -"edlin" on a UNIX standard, did they mimic vi? No. Emacs? Surely -you jest. They chose the most karmic editor of all. The standard. - -Ed is for those who can *remember* what they are working on. If you -are an idiot, you should use Emacs. If you are an Emacs, you should -not be vi. If you use ED, you are on THE PATH TO REDEMPTION. THE -SO-CALLED "VISUAL" EDITORS HAVE BEEN PLACED HERE BY ED TO TEMPT THE -FAITHLESS. DO NOT GIVE IN!!! THE MIGHTY ED HAS SPOKEN!!! - -? - -From: The Unknown User <anonymous@nowhere.uucp> -Subject: EMACS -- What does it mean? -To: mit-prep!info-gnu-emacs@TOPAZ.RUTGERS.EDU - -EMACS belongs in <sys/errno.h>: Editor too big! - - -Escape-Meta-Alt-Control-Shift - - -From: harvard!topaz!BLUE!BRAIL@mit-eddie -Date: 9 Sep 85 17:25:27 EDT -Subject: EMACS -- What does it mean? -To: mit-prep!info-gnu-emacs@TOPAZ.RUTGERS.EDU - - EMACS may stand for "Editing MACroS," but some friends of mine -suggested some more creative definitions. Here they are. Anyone have -any additions? - --------- -Eight -Megabytes -And -Constantly -Swapping - -Even a -Master of -Arts -Comes -Simpler - -Emacs -Manuals -Are -Cryptic and -Surreal - -Energetic -Merchants -Always -Cultivate -Sales - -Each -Manual's -Audience is -Completely -Stupified - -Emacs -Means -A -Crappy -Screen - -Eventually -Munches -All -Computer -Storage - -Even -My -Aunt -Crashes the -System - -Eradication of -Memory -Accomplished with -Complete -Simplicity - -Elsewhere -Maybe -Alternative -Civilizations -Survive - -Egregious -Managers -Actively -Court -Stallman - -Esoteric -Malleability -Always -Considered -Silly - -Emacs -Manuals -Always -Cause -Senility - -Easily -Maintained with the -Assistance of -Chemical -Solutions - -EMACS -MACRO -ACTED -CREDO -SODOM - -Edwardian -Manifestation of -All -Colonial -Sins - -Generally -Not -Used - -Except by -Middle -Aged -Computer -Scientists - -Extended -Macros -Are -Considered -Superfluous - -Every -Mode -Accelerates -Creation of -Software - -Elsewhere -Maybe -All -Commands are -Simple - -Emacs -May -Allow -Customised -Screwups - -Excellent -Manuals -Are -Clearly -Suppressed - -Emetic -Macros -Assault -Core and -Segmentation - -Embarrassed -Manual-Writer -Accused of -Communist -Subversion - -Extensibility and -Modifiability -Aggravate -Confirmed -Simpletons - -Emacs -May -Annihilate -Command -Structures - -Easily -Mangles, -Aborts, -Crashes and -Stupifies - -Extraneous -Macros -And -Commands -Stink - -Exceptionally -Mediocre -Algorithm for -Computer -Scientists - -EMACS -Makes no -Allowances -Considering its -Stiff price - -Equine -Mammals -Are -Considerably -Smaller - -Embarrassingly -Mundane -Advertising -Cuts -Sales - -Every -Moron -Assumes -CCA is -Superior - -Exceptionally -Mediocre -Autocratic -Control -System - -EMACS -May -Alienate -Clients and -Supporters - -Excavating -Mayan -Architecture -Comes -Simpler - -Erasing -Minds -Allows -Complete -Submission - -Every -Male -Adolescent -Craves -Sex - -Elephantine -Memory -Absolutely -Considered -Sine que non - -Emacs -Makers -Are -Crazy -Sickos - -Eenie-Meenie-Miney-Mo- -Macros -Are -Completely -Slow - -Experience the -Mildest -Ad -Campaign ever -Seen - -Emacs -Makefiles -Annihilate -C- -Shells - -Eradication of -Memory -Accomplished with -Complete -Simplicity - -Emetic -Macros -Assault -Core and -Segmentation - -Epileptic -MLisp -Aggravates -Compiler -Seizures - -Eleven thousand -Monkeys -Asynchronously -Crank out these -Slogans -------- - - -From: ihnss!warren@mit-eddie (Warren Montgomery) -Newsgroups: net.emacs -Subject: Re: EMACS -- What does it mean? -Date: Tue, 10-Sep-85 09:14:24 EDT -Organization: AT&T Bell Labs, Naperville, IL -Apparently-To: emacs-netnews-distribution@mit-prep - -Someone at a luncheon suggested it meant: - -Evenings, -Mornings, -And a -Couple of -Saturdays - -(In reference to the odd hours that went into the creation of my -implementation). - --- - - Warren Montgomery - ihnss!warren - IH ((312)-979) x2494 - -Date: Wed, 18 Sep 85 10:11:04 edt -From: inmet!tower@inmet.inmet (Leonard H. Tower Jr.) <inmet!tower@cca-unix> -Subject: Re: EMACS -- What does it mean? -To: tower@MIT-PREP.ARPA - -Received: by inmet.uucp (4.12/inmet) id AA02199; Wed, 18 Sep 85 09:10:17 edt -Date: Wed, 18 Sep 85 09:10:17 edt -Message-Id: <8509181310.AA02199@inmet.uucp> -Uucp-Paths: {bellcore,ima,ihnp4}!inmet!tower -Arpa-Path: ima!inmet!tower@CCA-UNIX.ARPA -Organization: Intermetrics, Inc., Cambridge, MA, USA -Home: 36 Porter Street, Somerville, MA 02143, USA +1 (617) 623-7739 -/* Written 6:48 pm Sep 14, 1985 by gml@ssc-vax in inmet:net.emacs */ -/* ---------- "Re: EMACS -- What does it mean?" ---------- */ -Pleeeeeeeze!!! Nice try on the meaning of EMACS. I believe the -correct acronym is: - -Emacs -Makes -All -Computing -Simple - -Thank you, and Good Night -/* End of text from inmet:net.emacs */ - -From: ho95e!wcs@mit-eddie (Bill.Stewart.4K435.x0705) -Newsgroups: net.emacs -Subject: Re: EMACS -- What does it mean? -Date: Thu, 26-Sep-85 21:43:54 EDT -Organization: AT&T Bell Labs, Holmdel NJ -Apparently-To: emacs-netnews-distribution@mit-prep - -> > very interesting, but what does GNU stand for ? -> GNU = Gnu's Not UNIX. There is also MINCE, for Mince Is Not a Complete Emacs. -> More recursive acronyms, anyone? -Many people have also seen FINE Is Not Emacs, but the one that has -character is THief Isn't Even Fine. --- -## Bill Stewart, AT&T Bell Labs, Holmdel NJ 1-201-949-0705 ihnp4!ho95c!wcs - -Path: mit-eddie!think!harvard!bbnccv!bbncca!linus!decvax!mcnc!ncsu!uvacs!edison!ta2 -From: edison!ta2@mit-eddie (tom allebrandi) -Newsgroups: net.emacs -Subject: Re: Re: EMACS -- What does it mean? -Date: Sun, 29-Sep-85 18:11:55 EDT -Organization: General Electric's Mountain Resort -Apparently-To: emacs-netnews-distribution@mit-prep - -> GNU = Gnu's Not UNIX. There is also MINCE, for Mince Is Not a Complete Emacs. -> -> More recursive acronyms, anyone? -> - -For the DEC-system-10/20: FINE - Fine Is Not Emacs..... - --- -............... -tom allebrandi 2, general electric aco, charlottesville, va -{decvax,duke}!mcnc!ncsu!uvacs!edison!ta2 -box 8106, charlottesville, va, 22906 -(804) 978-5566 -............... - -Date: Wed, 16 Oct 85 01:38:12 edt -From: inmet!tower (Leonard H. Tower Jr.) <inmet!tower@cca-unix> -Subject: more names -To: tower@MIT-PREP.ARPA - -Received: by inmet.uucp (4.12/inmet) id AA12997; Tue, 15 Oct 85 22:31:39 edt -Date: Tue, 15 Oct 85 22:31:39 edt -Message-Id: <8510160231.AA12997@inmet.uucp> -Uucp-Paths: {bellcore,ima,ihnp4}!inmet!tower -Arpa-Path: ima!inmet!tower@CCA-UNIX.ARPA -Organization: Intermetrics, Inc., Cambridge, MA, USA -Home: 36 Porter Street, Somerville, MA 02143, USA +1 (617) 623-7739 -/* Written 12:20 pm Oct 14, 1985 by rs@mirror.UUCP in inmet:net.emacs */ - - -SINE: Sine Is Not Emacs - (MIT Architecture Machine Group) - -EINE: Eine is Not Emacs - (MIT Lisp Machine) - -ZWEI: Zwei Was Eine Initially - ("rev2" of EINE) - --- -Rich $alz {mit-eddie, ihnp4!inmet, wjh12, cca, datacube} !mirror!rs -Mirror Systems 2067 Massachusetts Ave. -617-661-0777 Cambridge, MA, 02140 -/* End of text from inmet:net.emacs */ - -Path: mit-eddie!genrad!panda!talcott!harvard!seismo!gatech!ulysses!pajb -From: ulysses!pajb@mit-eddie (Paul Bennett) -Newsgroups: net.emacs -Subject: Here we go again ... -Date: Sat, 19-Oct-85 17:26:49 EDT -Organization: AT&T Bell Laboratories, Murray Hill -Apparently-To: emacs-netnews-distribution@mit-prep - - -> EINE: Eine is Not Emacs -> (MIT Lisp Machine) -> -> ZWEI: Zwei Was Eine Initially -> ("rev2" of EINE) - -DREI: DREI - Really Emacs Inside - (Exists only in my head) - -From: friedman@gnu.ai.mit.edu (Noah Friedman) -Sender: friedman@gnu.ai.mit.edu -To: jimb@gnu.ai.mit.edu, rms@gnu.ai.mit.edu -Subject: etc/emacs.names -Date: Fri, 9 Oct 92 00:54:57 edt - -The following should be added: - - -Emacs -Makes -A -Computer -Slow - -From: S_TITZ@iravcl.ira.uka.de (Olaf Titz) -Newsgroups: alt.religion.emacs -Subject: Re: what emacs stands for -Date: 12 Oct 92 19:29:32 GMT - -Emacs Masquerades As Comfortable Shell -Ever Made A Control-key Setup? -Emacs: My Alternative Computer Story -Emacs Made Almost Completely Screwed - (by extensive use of M-x global-unset-key) -Emacs Macht Alle Computer Schoen - (deutsch) (=Emacs makes all computers beautiful) -Each Mail A Continued Surprise -Every Mode Acknowledges Customized Strokes - (keystrokes, of course :-) -Eating Memory And Cycle-Sucking -Everyday Material Almost Compiled Successfully - -now enough bashing for today :-) - - -From: elvis@gnu.ai.mit.edu -To: emacs-19-bugs@gnu.ai.mit.edu -Subject: missing from etc/emacs.names -Date: Thu, 20 May 93 02:21:27 edt - - -Elvis -Masterminds -All -Computer -Software - -Just so you boys know the score. - -Thank you very Much, -The King
--- a/etc/README Mon Aug 13 08:51:05 2007 +0200 +++ b/etc/README Mon Aug 13 08:51:32 2007 +0200 @@ -2,6 +2,3 @@ This directory contains some text files of documentation for XEmacs or of interest to XEmacs users, some programs used by or with XEmacs, and the file of on-line documentation for XEmacs. - -`termcap.dat' is for VMS. It is a copy of the `/etc/termcap' file -used on Unix.
--- a/etc/celibacy.1 Mon Aug 13 08:51:05 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -CELIBACY(1) UNIX Programmer's Manual CELIBACY(1) - - - -NAME - celibacy - don't have sex - -SYNOPSIS - celibacy - -DESCRIPTION - Does nothing worth mentioning.
--- a/etc/condom.1 Mon Aug 13 08:51:05 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,148 +0,0 @@ -CONDOM(1) EUNUCH Programmer's Manual CONDOM(1) - - - -NAME - condom - Protection against viruses and prevention of child - processes - -SYNOPSIS - condom [options] [processid] - -DESCRIPTION - _condom_ provides protection against System Transmitted -Viruses (STVs) that may invade your system. Although the spread of -such viruses across a network can only be abated by aware and cautious -users, _condom_ is the only highly-effective means of preventing -viruses from entering your system (see celibacy(1)). Any data passed -to _condom_ by the protected process will be blocked, as specified by -the value of the -s option (see OPTIONS below). _condom_ is known to -defend against the following viruses and other malicious -afflictions... - - o AIDS - o Herpes Simplex (genital varieties) - o Syphilis - o Crabs - o Genital warts - o Gonorrhea - o Chlamydia - o Michelangelo - o Jerusalem - - When used alone or in conjunction with pill(1), sponge(1), -foam(1), and/or setiud(3), _condom_ also prevents the conception of a -child process. If invoked from within a synchronous process, _condom_ -has, by default, an 80% chance of preventing the external processes -from becoming parent processes (see the -s option below). When other -process contraceptives are used, the chance of preventing a child -process from being forked becomes much greater. See pill(1), -sponge(1), foam(1), and setiud(3) for more information. - If no options are given, the current user's login process (as -determined by the environment variable USER) is protected with a -Trojan rough-cut latex condom without a reservoir tip. The optional -'processid' argument is an integer specifying the process to protect. - NOTE: _condom_ may only be used with a hard disk. _condom_ -will terminate abnormally with exit code -1 if used with a floppy -disk (see DIAGNOSTICS below). - -OPTIONS - The following options may be given to _condom_... - - -b BRAND BRANDs are as follows... - - trojan (default) - ramses - sheik - goldcoin - fourex - - -m MATERIAL The valid MATERIALs are... - - latex (default) - saranwrap - membrane -- WARNING! The membrane option is _not_ - endorsed by the System Administrator General as an - effective barrier against certain viruses. It is - supported only for the sake of tradition. - - -f FLAVOR The following FLAVORs are currently supported... - - plain (default) - apple - banana - cherry - cinnamon - licorice - orange - peppermint - raspberry - spearmint - strawberry - - -r Toggle reservoir tip (default is no reservoir tip) - - -s STRENGTH STRENGTH is an integer between 20 and 100 specifying - the resilience of _condom_ against data passed to - _condom_ by the protected process. Using a larger - value of STRENGTH increases _condom_'s protective - abilities, but also reduces interprocess communication. - A smaller value of STRENGTH increases interprocess - communication, but also increases the likelihood of a - security breach. An extremely vigorous process or - one passing an enormous amount of data to _condom_ - will increase the chance of _condom_'s failure. The - default STRENGTH is 80%. - - -t TEXTURE Valid TEXTUREs are... - - rough (default) - ribbed - bumps - lubricated (provides smoother interaction between - processes) - - WARNING: The use of an external application to _condom_ in -order to reduce friction between processes has been proven in -benchmark tests to decrease _condom_'s strength factor! If execution -speed is important to your process, use the '-t lubricated' option. - -DIAGNOSTICS - _condom_ terminates with one of the following exit codes... - - -1 An attempt was made to use _condom_ on a floppy disk. - - 0 _condom_ exited successfully (no data was passed to - the synchronous process). - - 1 _condom_ failed and data was allowed through. The - danger of transmission of an STV or the forking of a child - process is inversely proportional to the number of other - protections employed and is directly proportional to - the ages of the processes involved. - -BUGS - _condom_ is NOT 100% effective at preventing a child process -from being forked or at deterring the invasion of a virus (although -the System Administrator General has deemed that _condom_ is the most -effective means of preventing the spread of system transmitted -viruses). See celibacy(1) for information on a 100% effective program -for preventing these problems. - Remember... the use of sex(1) and other related routines -should only occur between mature, consenting processes. If you must -use sex(1), please employ _condom_ to protect your process and your -synchronous process. If we are all responsible, we can stop the -spread of STVs. - -AUTHORS and HISTORY - The original version of _condom_ was released in Roman times -and was only marginally effective. With the advent of modern -technology, _condom_ now supports many more options and is much more -effective. - The current release of _condom_ was written by Ken Maupin at -the University of Washington (maupin@cs.washington.edu) and was last -updated on 10/7/92. - -SEE ALSO - celibacy(1), sex(1), pill(1), sponge(1), foam(1), and -setiud(3)
--- a/etc/emacs.names Mon Aug 13 08:51:05 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,151 +0,0 @@ -(More than half of the following acronyms are from a Sep 85 message -from harvard!topaz!BLUE!BRAIL@mit-eddie and anonymous friends.) - - Even a Master of Arts Comes Simpler - Emacs Manuals Are Cryptic and Surreal - Energetic Merchants Always Cultivate Sales - Each Manual's Audience is Completely Stupified - Emacs Means A Crappy Screen - Eventually Munches All Computer Storage - Even My Aunt Crashes the System - Eradication of Memory Accomplished with Complete Simplicity - Elsewhere Maybe Alternative Civilizations Survive - Egregious Managers Actively Court Stallman - Esoteric Malleability Always Considered Silly - Emacs Manuals Always Cause Senility - Easily Maintained with the Assistance of Chemical Solutions - EMACS MACRO ACTED CREDO SODOM - Edwardian Manifestation of All Colonial Sins - Extended Macros Are Considered Superfluous - Every Macro Accelerates Creation of Software - Emacs Allows Customised Screwups - Excellent Manuals Are Clearly Suppressed - Emetic Macros Assault Core and Segmentation - Embarrassed Manual-Writer Accused of Communist Subversion - Extensibilty and Modifiability Aggravate Confirmed Simpletons - Emacs May Annihilate Command Structures - Easily Mangles, Aborts, Crashes and Stupifies - Extraneous Macros And Commands Stink - Exceptionally Mediocre Algorithm for Computer Scientists - EMACS Makes no Allowances Considering its Stiff price - Equine Mammals Are Considerably Smaller - Embarrasingly Mundane Advertising Cuts Sales - Every Moron Assumes CCA is Superior - Exceptionally Mediocre Autocratic Control System - EMACS May Alienate Clients and Supporters - Excavating Mayan Architecture Comes Simpler - Erasing Minds Allows Complete Submission - Every Male Adolescent Craves Sex - Elephantine Memory Absolutely Considered Sine que non - Emacs Makers Are Crazy Sickos - Eenie-Meenie-Miney-Mo- Macros Are Completely Slow - Experience the Mildest Ad Campaign ever Seen - Emacs Makefiles Annihilate C- Shells - Eradication of Memory Accomplished with Complete Simplicity - Emetic Macros Assault Core and Segmentation - Epileptic MLisp Aggravates Compiler Seizures - Eleven thousand Monkeys Asynchronously Crank out these Slogans - Evenings, Mornings, And a Couple of Saturdays - Emacs Makes All Computing Simple - Emacs Makes All Computers Slow - Evil Manifestation Also Called Satan - Eats Memory And Compromises Security - Eventually Mallocs All Computer Storage - Eight Megs And Continuous Swapping - Escape Meta Alt Control Shift - Eerie Men Acting Computer Science - Emacs Means A Crummy Screen - Ego Maniacs Addicted to Control Sequences - Easy Man's Advanced Consciousness System - Emacs Masquerades As a Comfortable Shell - Emacs Macht Alle Computer Schoen - Eating Memory And Cycle Sucking - Elvis Masterminds All Computer Software - -From <sys/errno.h>: - - #define ENOSR 74 /* Out of streams resources */ - #define ENOMSG 75 /* No message of desired type */ - #define EMACS 76 /* Editor too large */ - ---- And other descendants: - - GNU's Not Unix - Mince Is Not a Complete Emacs - Fine Is Not Emacs - Thief Isn't Even Fine - Eine Is Not Emacs - Zwei Was Eine Initially - Drei - Really Emacs Inside - Sine is Not Eine - Generally Not Used Except by Aged Computer Scientists - Elle Looks Like Emacs - INSTITUTE's Name Shows That It's Totally Unrelated To EMACS - ------------------------ -> From: ncramer@bbn.com (Nichael Cramer) -> Subject: Re: Emacs -> Date: 19 Jan 90 14:54:58 PST (19 Jan 90 22:54:58 GMT) -> Organization: Bolt Beranek and Newman Inc., Cambridge MA -> -> For a Previous Employer, I had to write an easily-usable-by-VMS-and-other- -> business-weenies editor (that ran on the Lispm) which was named: DRIE -> -> DRIE Really Isn't EDT -> -> (...and, yes, I know it isn't spelled right.) - ------------------------ -> From: wdh@well.UUCP (Bill Hofmann) -> Subject: Re: Emacs -> Date: 23 Jan 90 20:52:15 PST (24 Jan 90 04:52:15 GMT) -> Organization: Whole Earth 'Lectronic Link, Sausalito, CA -> -> I'd believe that excruciatingly detailed history of EMACS. -> However, I think that the influence of ice cream on computer systems, -> especially around MIT, can't be underestimated. EMACS was the text editor, -> and the document formatter was known as BOLIO. Now, at the time, one of -> the better known premium ice cream places was Emac and Bolio's. Let's not -> forget mixins in Lisp Machine Lisp (or flavors).... -> -> =Bill= - ------------------------ -> From: nhess@dvlseq.oracle.com (Nate Hess) -> Subject: Re: Emacs -> Date: 01 Feb 90 19:08:10 PST (2 Feb 90 03:08:10 GMT) -> -> % ls -l /usr/local/bin/gnu/emacs /usr/ucb/vi /bin/ed /bin/cat -> -rwxr-xr-x 1 nhess 1350975 Jan 20 18:18 /usr/local/bin/gnu/emacs -> -rwxr-xr-x 6 root 155648 Nov 16 1988 /usr/ucb/vi -> -rwxr-xr-x 1 root 40960 Nov 16 1988 /bin/ed -> -rwxr-xr-x 1 root 9476 Nov 16 1988 /bin/cat -> -> It just keeps getting better and better, or worse and worse, depending -> on how you look at it. - ------------------------ -> From: rlk@think.com (Robert Krawitz) -> Subject: Re: Emacs -> Date: 02 Feb 90 14:30:50 PST (2 Feb 90 22:30:50 GMT) -> -> Well, there's always -> -> % ls -l /usr/bin/adb -> -rwxr-xr-x 1 root 114688 May 25 1989 /usr/bin/adb -> -> (emacs can't yet edit something the size of a decent filesystem). - ------------------------ -> From: igb@fulcrum.bt.co.uk (Ian G Batten) -> Subject: Re: Cryptic comments -> Date: 02 Feb 90 04:39:31 PST (2 Feb 90 12:39:31 GMT) -> -> As barmar confirmed, many of the comments in Multics' Emacs by Bernie -> Greenberg were in Latin. Most of the code was as well: -> -> (buffer-est-delenda-p ...) -> -> and all the fenestra code. Plus jeter-les-gazongas! -> -> ian
--- a/etc/sample.Xdefaults Mon Aug 13 08:51:05 2007 +0200 +++ b/etc/sample.Xdefaults Mon Aug 13 08:51:32 2007 +0200 @@ -75,13 +75,13 @@ Emacs*XmScrollBar.Background: Gray75 ! -! The Lucid Scrollbar supports two added resources, KnobStyle is either +! The Lucid Scrollbar supports two added resources, SliderStyle is either ! "plain" (default) or "dimple". Dimple puts a small dimple in the middle -! of the knob that depresses when the knob is clicked on. ArrowPosition is +! of the slider that depresses when the slider is clicked on. ArrowPosition is ! either "opposite" (default) or "same". Opposite puts the arrows at opposite ! of the scrollbar, same puts both arrows at the same end, like the Amiga. ! -! Emacs*XlwScrollBar.KnobStyle: dimple +! Emacs*XlwScrollBar.SliderStyle: dimple ! Emacs*XlwScrollBar.ArrowPosition: opposite
--- a/etc/sample.emacs Mon Aug 13 08:51:05 2007 +0200 +++ b/etc/sample.emacs Mon Aug 13 08:51:32 2007 +0200 @@ -289,7 +289,7 @@ (t nil)))) (cond (bg (let ((def (color-name (face-background 'default))) - (faces (list-faces))) + (faces (face-list))) (while faces (let ((obg (face-background (car faces)))) (if (and obg (equal def (color-name obg))) @@ -368,7 +368,9 @@ ;; constructed using the environment variables USER and DOMAINNAME ;; (e.g. turner@lanl.gov), if set. -(if (and running-xemacs (< emacs-major-version 20) (>= emacs-minor-version 15)) +(if (and running-xemacs + (or (and (= emacs-major-version 20) (>= emacs-minor-version 1)) + (and (= emacs-major-version 19) (>= emacs-minor-version 15)))) (progn (message "Loading and configuring bundled packages... efs") (require 'efs-auto) @@ -380,22 +382,20 @@ (getenv "DOMAINNAME")) (setq efs-generate-anonymous-password (concat (getenv "USER")"@"(getenv "DOMAINNAME"))))) - (setq efs-auto-save 1) - )) -(if (and running-xemacs (< emacs-major-version 20) (< emacs-minor-version 15)) - (progn - (message "Loading and configuring bundled packages... ange-ftp") - (require 'ange-ftp) - (if (getenv "USER") - (setq ange-ftp-default-user (getenv "USER"))) - (if (getenv "EMAIL_ADDRESS") - (setq ange-ftp-generate-anonymous-password (getenv "EMAIL_ADDRESS")) - (if (and (getenv "USER") - (getenv "DOMAINNAME")) - (setq ange-ftp-generate-anonymous-password - (concat (getenv "USER")"@"(getenv "DOMAINNAME"))))) - (setq ange-ftp-auto-save 1) - ) + (setq efs-auto-save 1)) + (progn + (message "Loading and configuring bundled packages... ange-ftp") + (require 'ange-ftp) + (if (getenv "USER") + (setq ange-ftp-default-user (getenv "USER"))) + (if (getenv "EMAIL_ADDRESS") + (setq ange-ftp-generate-anonymous-password (getenv "EMAIL_ADDRESS")) + (if (and (getenv "USER") + (getenv "DOMAINNAME")) + (setq ange-ftp-generate-anonymous-password + (concat (getenv "USER")"@"(getenv "DOMAINNAME"))))) + (setq ange-ftp-auto-save 1) + ) )
--- a/etc/sex.6 Mon Aug 13 08:51:05 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,115 +0,0 @@ -SEX(6) EUNUCH Programmer's Manual SEX(6) - - - -NAME - sex - have sex - -SYNOPSIS - sex [ options ] ... [ username ] ... - -DESCRIPTION - _s_e_x allows the invoker to have sex with the user(s) speci- - fied in the command line. If no users are specified, they - are taken from the LOVERS environment variable. Options to - make things more interesting are as follows: - - -1 masturbate - - -a external stimulus (aphrodisiac) option - - -b buggery - - -B<animal> - bestiality with <animal> - - -c chocolate sauce option - - -C chaining option (cuffs included) (see also -m -s -W) - - -d<file> - get a date with the features described in <file> - - -e exhibitionism (image sent to all machines on the net) - - -f foreplay option - - -F nasal sex with plants - - -i coitus interruptus (messy!) - - -j jacuzzi option (California sites only) - - -l leather option - - -m masochism (see -s) - - -M triple parallel (Menage a Trois) option - - -n necrophilia (if target process is not dead, program - kills it) - - -o oral option - - -O parallel access (orgy) - - -p debug option (proposition only) - - -P pedophilia (must specify a child process) - - - -Printed 2/15/87 2/15/87 1 - - - - - - -SEX(6) EUNUCH Programmer's Manual SEX(6) - - - - -q quickie (wham, bam, thank you, ma'am) - - -s sadism (target must set -m) - - -S sundae option - - -T<number> - voice-net sex via standard uucp autodialer facilities; - area code prefix of 900 is assumed. - - -v voyeurism (surveys the entire net) - - -w whipped cream option - - -W whips (see also -s, -C, and -m) - -ENVIRONMENT - LOVERS - is a list of default partners which will be used if - none are specified in the command line. If any are - specified, the values in LOVERS is ignored. - -FILES - /usr/lib/sex/animals animals for bestiality - - /usr/lib/sex/blackbook possible dates - - /usr/lib/sex/sundaes sundae recipes - - /usr/lib/sex/s&m sado-masochistic equipment - - - -BUGS - ^C (quit process) may leave the user very unsatisfied. - - ^Z (stop process) is usually quite messy. - -MAN AUTHOR - Author prefers to be anonymous. - -HISTORY - Oldest program ever.
--- a/etc/termcap.dat Mon Aug 13 08:51:05 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1246 +0,0 @@ - -# This is termcap.dat, a copy of the /etc/termcap file included here -# for use on VMS. - -# I know that many terminals are missing from this version of the file -# because they were deleted at MIT. -# I hope that someone will add in all the missing terminal types -# and send me a corrected, larger file. - -# These are local terminals. - -v1|tvi912|912|920|tvi920|old televideo:\ - :ct=\E3:st=\E1:cr=^M:do=^J:nl=^J:bl=^G:\ - :al=33*\EE:le=^H:ce=\ET:cm=\E=%+ %+ :cl=^Z:co#80:dc=\EW:dl=33*\ER:ei=:\ - :kb=^h:ku=^K:kd=^J:kl=^H:kr=^L:k0=^A@\r:k1=^AA\r:k2=^AB\r:k3=^AC\r:\ - :bs:am:k4=^AD\r:k5=^AE\r:k6=^AF\r:k7=^AG\r:k8=^AH\r:k9=^AI\r:\ - :ho=^^:im=:ic=\EQ:li#24:nd=^L:ta=^I:pt:se=\Ek:so=\Ej:up=^K:us=\El:ue=\Em:\ - :ma=^K^P^L :sg#1:ug#1: -ZV|bobcat|sbobcat|HP 9000 model 300 console:\ - :al=10*\EL:am:bs:\ - :cd=\EJ:ce=\EK:ch=6\E&a%dC:cl=\EH\EJ:\ - :co#128:da:db:dc=\EP:dl=10*\EM:do=\EB:ei=\ER:\ - :kb=^H:kd=\EB:kh=\Eh:kl=\ED:kr=\EC:ku=\EA:\ - :ke=\E&s0A:ks=\E&s1A:\ - :li#47:mi:nd=\EC:pt:\ - :se=\E&d@:so=\E&dB:\ - :up=\EA:xs:\ - :cm=6\E&a%dy%dC:cv=6\E&a%dY:\ - :im=\EQ:ml=\El:mu=\Em:\ - :ue=\E&d@:us=\E&dD:bt=\Ei:sg#0: -ZX|gator-t|HP 9000 model 237 emulating extra-tall AAA:\ - :cr=^M:do=^J:nl=^J:bl=^G:al=\E[L:le=^H:bs:\ - :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:co#128:li#94:\ - :dc=\E[P:dl=\E[M:ho=\E[H:ic=\E[@:\ - :AL=1*\E[%dL:DL=1*\E[%dM:IC=4\E[%d@:DC=4\E[%dP:rp=1*%.\E[%db:mr=\E[7m:me=\E[m:\ - :km:ch=\E[%i%d`:\ - :ul:ei=:im=:pt:bw:bt=\E[Z:\ - :mi:nd=\E[C:se=\E[m:so=\E[7m:ue=\E[m:us=\E[4m:up=\EM: -ZW|gator|HP 9000 model 237 emulating AAA:\ - :cr=^M:do=^J:nl=^J:bl=^G:al=\E[L:le=^H:bs:\ - :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:co#128:li#47:\ - :dc=\E[P:dl=\E[M:ho=\E[H:ic=\E[@:\ - :AL=1*\E[%dL:DL=1*\E[%dM:IC=4\E[%d@:DC=4\E[%dP:rp=1*%.\E[%db:mr=\E[7m:me=\E[m:\ - :km:ch=\E[%i%d`:\ - :ul:ei=:im=:pt:bw:bt=\E[Z:\ - :mi:nd=\E[C:se=\E[m:so=\E[7m:ue=\E[m:us=\E[4m:up=\EM: -ZY|gator-52|HP 9000 model 237 emulating VT52:\ - :cr=^M:do=^J:nl=^J:bl=^G:\ - :le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#128:li#47:nd=\EC:\ - :ta=^I:pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H:\ - :ce=\EK:ho=\EH: -ZZ|gator-52t|HP 9000 model 237 emulating extra-tall VT52:\ - :cr=^M:do=^J:nl=^J:bl=^G:\ - :le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#128:li#94:nd=\EC:\ - :ta=^I:pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H:\ - :ce=\EK:ho=\EH: -# -# N: ANN ARBOR -# -N0|aa|annarbor|4080|ann arbor 4080:\ - :cr=^M:do=^J:nl=^J:bl=^G:pt:ct=^\^P^P:st=^]^P1:\ - :cm=^O%r%\066%.%>^S^L%+@:\ - :co#80:li#40:le=^H:bs:cl=2^L:up=^N:nd=^_:ho=^K:am:\ - :kb=^^:kd=^J:ku=^N:kl=^H:kr=^_:kh=^K:ma=^_ ^N^P: -# Needs function keys added. -# Originally from Mike O'Brien@Rand and Howard Katseff at Bell Labs. -# Highly modified 6/22 by Mike O'Brien. -# split out into several for the various screen sizes by dave-yost@rand -# Modifications made 3/82 by Mark Horton -# Modified by Tom Quarles at UCB for greater efficiency and more diversity -# status line moved to top of screen, vb removed 5/82 -# -# assumes the following setup: -# A: 0000 1010 0001 0000 -# B: 9600 0100 1000 0000 0000 1000 0000 17 19 -# C: 56 66 0 0 9600 0110 1100 -# D: 0110 1001 1 0 -# -# Briefly, the settings are for the following modes: -# (values are for bit set/clear with * indicating our preference -# and the value used to test these termcaps) -# Note that many of these settings are irrelevant to the termcap -# and are just set to the default mode of the terminal as shipped -# by the factory. -# -# A menu: 0000 1010 0001 0000 -# Block/underline cursor* -# blinking/nonblinking cursor* -# key click/no key click* -# bell/no bell at column 72* -# -# key pad is cursor control*/key pad is numeric -# return and line feed/return for <cr> key * -# repeat after .5 sec*/no repeat -# repeat at 25/15 chars per sec. * -# -# hold data until pause pressed/process data unless pause pressed* -# slow scroll/no slow scroll* -# Hold in area/don't hold in area* -# functions keys have default*/function keys disabled on powerup -# -# show/don't show position of cursor during page transmit* -# unused -# unused -# unused -# -# B menu: 9600 0100 1000 0000 0000 1000 0000 17 19 -# Baud rate (9600*) -# -# 2 bits of parity - 00=odd,01=even*,10=space,11=mark -# 1 stop bit*/2 stop bits -# parity error detection off*/on -# -# keyboard local/on line* -# half/full duplex* -# disable/do not disable keyboard after data transmission* -# -# transmit entire page/stop transmission at cursor* -# transfer/do not transfer protected characters* -# transmit all characters/transmit only selected characters* -# transmit all selected areas/transmit only 1 selected area* -# -# transmit/do not transmit line separators to host* -# transmit/do not transmit page tab stops tabs to host* -# transmit/do not transmit column tab stop tabs to host* -# transmit/do not transmit graphics control (underline,inverse..)* -# -# enable*/disable auto XON/XOFF control -# require/do not require receipt of a DC1 from host after each LF* -# pause key acts as a meta key/pause key is pause* -# unused -# -# unused -# unused -# unused -# unused -# -# XON character (17*) -# XOFF character (19*) -# -# C menu: 56 66 0 0 9600 0110 1100 -# number of lines to print data on (printer) (56*) -# -# number of lines on a sheet of paper (printer) (66*) -# -# left margin (printer) (0*) -# -# number of pad chars on new line to printer (0*) -# -# printer baud rate (9600*) -# -# printer parity: 00=odd,01=even*,10=space,11=mark -# printer stop bits: 2*/1 -# print/do not print guarded areas* -# -# new line is: 01=LF,10=CR,11=CRLF* -# unused -# unused -# -# D menu: 0110 1001 1 0 -# LF is newline/LF is down one line, same column* -# wrap to preceding line if move left from col 1*/don't wrap -# wrap to next line if move right from col 80*/don't wrap -# backspace is/is not destructive* -# -# display*/ignore DEL character -# display will not/will scroll* -# page/column tab stops* -# erase everything*/erase unprotected only -# -# editing extent: 0=display,1=line*,2=field,3=area -# -# unused -# -N1|aaa-29-np|aaa-29 with no padding (for psl):\ - :al=\E[L:ce=\E[K:cl=\E[H\E[J:\ - :dc=\E[P:dl=\E[M:ic=\E[@: -tc=aaa-29: -N2|aaa-unk|ann arbor ambassador (internal - don't use this directly):\ - :cr=^M:do=^J:nl=^J:bl=^G:al=1*\E[L:am:le=^H:bs:km:\ - :cd=7.2*\E[J:ce=5\E[K:cl=7.2*\E[H\E[J:cm=\E[%i%d;%dH:co#80:\ - :dc=4\E[P:dl=1*\E[M:ho=\E[H:ic=4\E[@:\ - :md=\E[1m:mr=\E[7m:mb=\E[5m:mk=\E[8m:me=\E[m:\ - :ku=\EM:kd=\ED:kl=\E[D:kr=\E[C:kh=\E[H:ce=\E[K:\ - :ks=\EP`?z~[H~[[J`>z~[[J`8xz~[M`4xz~[[D`6xz~[[C`2xz~[D\E\\:\ - :ke=\EP`?y~[H~[[J`>y~[[2J`8xy~[M`4xy~[[D`6xy~[[C`2xy~[D\E\\:\ - :ch=\E[%i%d`:\ - :ei=:im=:pt:bw:bt=\E[Z:\ - :mi:nd=\E[C:se=\E[m:so=\E[7m:ue=\E[m:us=\E[4m:up=\EM:\ - :AL=1*\E[%dL:DL=1*\E[%dM:IC=4\E[%d@:DC=4\E[%dP:\ - :cS=\E[%d;%d;%d;%dp:\ - :vs=\E[>52;54h\E[>30;37;38;39l:ve=\E[>52l\E[>37h: -# All the ti strings used to start with \E[2J, which cleared the screen. -# But this was so slow that it caused ^S/^Q lossage. -# So I removed the \E[2J's. -- rms, 1/29/86 -N3|aaa-18|ann arbor ambassador/18 lines:\ - :ti=\E[18;0;0;18p:\ - :te=\E[60;0;0;18p\E[18;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#18:tc=aaa-unk: -N4|aaa-20|ann arbor ambassador/20 lines:\ - :ti=\E[20;0;0;20p:\ - :te=\E[60;0;0;20p\E[20;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#20:tc=aaa-unk: -N5|aaa-22|ann arbor ambassador/22 lines:\ - :ti=\E[22;0;0;22p:\ - :te=\E[60;0;0;22p\E[22;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#22:tc=aaa-unk: -N6|aaa-24|ann arbor ambassador/24 lines:\ - :ti=\E[24;0;0;24p:\ - :te=\E[60;0;0;24p\E[24;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#24:tc=aaa-unk: -N7|aaa-26|ann arbor ambassador/26 lines:\ - :ti=\E[26;0;0;26p:\ - :te=\E[60;0;0;26p\E[26;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#26:tc=aaa-unk: -N8|aaa-28|ann arbor ambassador/28 lines:\ - :ti=\E[28;0;0;28p:\ - :te=\E[60;0;0;28p\E[28;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#28:tc=aaa-unk: -N9|aaa|ambassador|aaa-30|ann arbor ambassador/30 lines:\ - :ti=\E[30;0;0;30p:\ - :te=\E[60;0;0;30p\E[30;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[30;0;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#30:tc=aaa-unk: -NA|aaa-36|ann arbor ambassador/36 lines:\ - :ti=\E[36;0;0;36p:\ - :te=\E[60;0;0;36p\E[36;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#36:tc=aaa-unk: -NB|aaa-40|ann arbor ambassador/40 lines:\ - :ti=\E[40;0;0;40p:\ - :te=\E[60;0;0;40p\E[40;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#40:tc=aaa-unk: -NC|aaa-48|ann arbor ambassador/48 lines:\ - :ti=\E[48;0;0;48p:\ - :te=\E[60;0;0;48p\E[48;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#48:tc=aaa-unk: -ND|aaa-60|ann arbor ambassador/60 lines:\ - :ti=\E[60;0;0;60p:\ - :te=\E[60;0;0;60p\E[60;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#60:tc=aaa-unk: -NE|aaa-unk-s|ann arbor ambassador unknown with/status:\ - :hs:es:i2=\E7\E[>51h\E[H\E[2K\E[>51l\E8:\ - :ts=\E7\E[>51h\E[H\E[2K\E[%i%d`:fs=\E[>51l\E8:\ - :ds=\E7\E[>51h\E[H\E[2K\E[>51l\E8:\ - :tc=aaa-unk: -NF|aaa-18-s|ann arbor ambassador/18 lines + status line:\ - :ti=\E[18;1;0;18p:\ - :te=\E[60;1;0;18p\E[17;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#17:tc=aaa-unk-s: -NG|aaa-20-s|ann arbor ambassador/20 lines + status line:\ - :ti=\E[20;1;0;20p:\ - :te=\E[60;1;0;20p\E[19;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#19:tc=aaa-unk-s: -NH|aaa-22-s|ann arbor ambassador/22 lines + status line:\ - :ti=\E[22;1;0;22p:\ - :te=\E[60;1;0;22p\E[21;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#21:tc=aaa-unk-s: -NI|aaa-24-s|ann arbor ambassador/24 lines + status line:\ - :ti=\E[24;1;0;24p:\ - :te=\E[60;1;0;24p\E[23;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#23:tc=aaa-unk-s: -NJ|aaa-26-s|ann arbor ambassador/26 lines + status line:\ - :ti=\E[26;1;0;26p:\ - :te=\E[60;1;0;26p\E[25;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#25:tc=aaa-unk-s: -NK|aaa-28-s|ann arbor ambassador/28 lines + status line:\ - :ti=\E[28;1;0;28p:\ - :te=\E[60;1;0;28p\E[27;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#27:tc=aaa-unk-s: -NL|aaa-30-s|ann arbor ambassador/30 lines + status line:\ - :ti=\E[30;1;0;30p:\ - :te=\E[60;1;0;30p\E[29;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#29:tc=aaa-unk-s: -NM|aaa-36-s|ann arbor ambassador/36 lines + status line:\ - :ti=\E[36;1;0;36p:\ - :te=\E[60;1;0;36p\E[35;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#35:tc=aaa-unk-s: -NN|aaa-40-s|ann arbor ambassador/40 lines + status line:\ - :ti=\E[40;1;0;40p:\ - :te=\E[60;1;0;40p\E[39;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#39:tc=aaa-unk-s: -NO|aaa-48-s|ann arbor ambassador/48 lines+sl:\ - :ti=\E[48;1;0;48p:te=\E[60;1;0;48p\E[47;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\EP`?y~[[2J~[[H\E7\E[60;1;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#47:tc=aaa-unk-s: -NP|aaa-60-s|ann arbor ambassador/60 lines + status line:\ - :ti=\E[60;1;0;60p:te=\E[60;1;0;60p\E[59;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#59:tc=aaa-unk-s: -NQ|aaa-18-rv|ambassador/18 lines+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-18: -NR|aaa-20-rv|ambassador/20 lines+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-20: -NS|aaa-22-rv|ambassador/22 lines+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-22: -NT|aaa-24-rv|ambassador/24 lines+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-24: -NU|aaa-26-rv|ambassador/26 lines+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-26: -NV|aaa-28-rv|ambassador/28 lines+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-28: -NW|aaa-30-rv|ann arbor ambassador/30 lines in reverse video:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-30: -NX|aaa-36-rv|ann arbor ambassador/36 lines in reverse video:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-36: -NY|aaa-40-rv|ann arbor ambassador/40 lines in reverse video:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-40: -NZ|aaa-48-rv|ann arbor ambassador/48 lines in reverse video:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-48: -Na|aaa-60-rv|ann arbor ambassador/60 lines in reverse video:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-60: -Nb|aaa-18-rv-s|aaa-18-s-rv|ambassador/18 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-18-s: -Nc|aaa-20-rv-s|aaa-20-s-rv|ambassador/20 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-20-s: -Nd|aaa-22-rv-s|aaa-22-s-rv|ambassador/22 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-22-s: -Ne|aaa-24-rv-s|aaa-24-s-rv|ambassador/24 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-24-s: -Nf|aaa-26-rv-s|aaa-26-s-rv|ambassador/26 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-26-s: -Ng|aaa-28-rv-s|aaa-28-s-rv|ambassador/28 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-28-s: -Nh|aaa-30-rv-s|aaa-30-s-rv|ambassador/30 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-30-s: -Ni|aaa-36-rv-s|aaa-36-s-rv|ambassador/36 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-36-s: -Nj|aaa-40-rv-s|aaa-40-s-rv|ambassador/40 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-40-s: -Nk|aaa-48-rv-s|aaa-48-s-rv|ambassador/48 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-48-s: -Nl|aaa-60-rv-s|aaa-60-s-rv|ambassador/60 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-60-s: -Nm|aaa-24-ctxt:\ - :ti=\E[30;1H\E[K\E[24;0;0;24p:te=\E[60;1;0;24p\E[60;1H\E[K:tc=aaa-24: -Nn|aaa-24-rv-ctxt:\ - :ti=\E[30;1H\E[K\E[24;0;0;24p:te=\E[60;1;0;24p\E[60;1H\E[K:tc=aaa-24-rv: -No|aaa-30-s-ctxt:\ - :ti=\E[30;1H\E[K\E[30;1;0;30p:te=\E[60;1;0;30p\E[59;1H\E[K:tc=aaa-30-s: -Np|aaa-30-s-rv-ctxt:\ - :ti=\E[30;1H\E[K\E[30;1;0;30p:\ - :te=\E[60;1;0;30p\E[59;1H\E[K:tc=aaa-30-s-rv: -Nq|aaa-ctxt|aaa-30-ctxt:\ - :ti=\E[30;0;0;30p:te=\E[60;0;0;30p\E[60;1H\E[K:tc=aaa-30: -Nr|aaa-rv-ctxt|aaa-30-rv-ctxt:\ - :ti=\E[30;0;0;30p:te=\E[60;0;0;30p\E[60;1H\E[K:tc=aaa-30-rv: -Ns|aaa-db|ann arbor ambassador 30/destructive backspace:\ - :ti=\E[H\E[J\E[30;0;0;30p:te=\E7\E[60;0;0;30p\E8:li#30:\ - :is=\E[60;0;0;30p\E[H\E[J\E[1Q\E[m\E[20l\E[>30h:le=\E[D:bc=\E[D:bs@:\ - :tc=aaa-unk: -#Kludge for supdup -aaa-supdup|ann arbor ambassador 30/ for supdup :\ - :ns:tc=aaa-30: - -# -# yet another attempt at the aaa terminal from CCA: -# -ZJ|aaax|ambasx|ambassadorx|ann arbor ambassador base descriptor/:\ - :al=\E[L:bs:bt=\E[Z:bw:\ - :cd=\E[J:ce=\E[K:ch=\E[%i%d`:cl=\E[H\E[2J:cm=\E[%i%d;%dH:co#80:\ - :cv=\E[%i%dd:da:db:dc=\E[P:dl=\E[M:ho=\E[H:ic=\E[@:\ - :mi:nd=\E[C:pt:sf=\E[S:sr=\E[T:se=\E[m:so=\E[7m:\ - :km:mm=\E[>52h:mo=\E[>52l:\ - :ue=\E[m:up=\E[A:us=\E[4m: -ZK|aaa48|ambas|ambassador|ann arbor ambassador/48 lines:\ - :is=\E[48;0;0;48p\E[H\E[J\E[1Q\E[m\E[>30l\E[>26l\E[>32h\E[>33h\E[>52h:\ - :li#48:mi:tc=aaax: -ZL|aaa24|ambas24|ambassador24|ann arbor ambassador/24 lines:\ - :is=\E[24;0;0;24p\E[H\E[J\E[1Q\E[m\E[>30l\E[>26l\E[>32h\E[>33h\E[>52h:\ - :li#24:mi:tc=aaax: -ZM|aaa30|ambas30|ambassador30|ann arbor ambassador/30 lines:\ - :is=\E[30;0;0;30p\E[H\E[J\E[1Q\E[m\E[>30l\E[>26l\E[>32h\E[>33h\E[>52h:\ - :li#30:mi:tc=aaax: -ZN|aaa60|ambas60|ambassador60|ann arbor ambassador/60 lines:\ - :is=\E[60;0;0;60p\E[H\E[J\E[1Q\E[m\E[>30l\E[>26l\E[>32h\E[>33h\E[>52h:\ - :li#60:mi:tc=aaax: -# vt100 -- this has been changed to delete the "pt" ("real tabs") -# option, which was losing. -- walter 10/84 -d0|vt100-132|vt125-132|dec vt100 with 132 columns:\ - :co#132:tc=vt100: -d0|vt100|vt100-am|vt100-80|vt125|vt125-80|dec vt100:\ - :cr=^M:bl=^G:le=^H:do=\ED:ho=\E[H:\ - :co#80:li#24:cl=45\E[H\E[2J:bs:am:cm=5\E[%i%d;%dH:nd=\E[C:up=\E[A:\ - :ce=2\E[K:cd=2*\E[J:so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:\ - :md=2\E[1m:mr=2\E[7m:mb=2\E[5m:me=2\E[m:\ - :is=\E<\E[m\E>\E[?7h\E[?3;4;6l\200\200\200\200\200\200\200\200:\ - :rs=\E<\E[m\E>\E[?7h\E[?3;4;6l\200\200\200\200\200\200\200\200:\ - :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^H:\ - :cs=\E[%i%d;%dr:ks=\E[?1h\E=:ke=\E[?1l\E>:\ - :kh=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:ta=^I:sf=5\ED:sr=5\EM:xn:\ - :dN#4:vt#3:sc=\E7:rc=\E8: -d0|vt132-132|dec vt132 with 132 columns:\ - :al=99\E[L:dl=99\E[M:ip=7:dc=7\E[P:ei=\E[4l:im=\E[4h:xn:dN#30:\ - :co#132:tc=vt100: -d0|vt132|vt132-80|dec vt132 with 80 columns:\ - :al=99\E[L:dl=99\E[M:ip=7:dc=7\E[P:ei=\E[4l:im=\E[4h:xn:dN#30:tc=vt100: - -dw|vt52|vt52-80|dec vt52:\ - :cr=^M:do=^J:nl=^J:bl=^G:\ - :le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:li#24:nd=\EC:\ - :ta=^I:pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H: - -# Sun workstation consoles -Mu|sun|Sun Microsystems Workstation console:\ - :li#34:co#80:cl=^L:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ - :am:bs:km:mi:ms:pt:\ - :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:rs=\E[s:\ - :kd=\E[B:kl=\E[D:ku=\E[A:kr=\E[C:kh=\E[H:\ - :k1=\E[224z:k2=\E[225z:k3=\E[226z:k4=\E[227z:k5=\E[228z:\ - :k6=\E[229z:k7=\E[230z:k8=\E[231z:k9=\E[232z:\ - :al=\E[L:dl=\E[M:im=:ei=:ic=\E[@:dc=\E[P:\ - :AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP: -# From john@ucbrenoir Tue Sep 24 13:14:44 1985 -Mu|sun-s|Sun Microsystems Workstation window with status line:\ - :hs:ts=\E]l:fs=\E\\:ds=\E]l\E\\:tc=sun -Mu|sun-e-s|sun-s-e|Sun Microsystems Workstation with status hacked for emacs:\ - :hs:ts=\E]l:fs=\E\\:ds=\E]l\E\\:tc=sun-e: -M0|sun-48|Sun 48-line window:\ - :li#48:co#80:tc=sun: -M1|sun-34|Sun 34-line window:\ - :li#34:co#80:tc=sun: -M2|sun-24|Sun 24-line window:\ - :li#24:co#80:tc=sun: -M3|sun-17|Sun 17-line window:\ - :li#17:co#80:tc=sun: -M4|sun-12|Sun 12-line window:\ - :li#12:co#80:tc=sun: -M5|sun-1|Sun 1-line window for sysline:\ - :li#1:co#80:es:hs:ts=\r:fs=\E[K:ds=^L:tc=sun: -M6|sun-e|sun-nic|sune|Sun Microsystems Workstation without insert character:\ - :ic@:im@:ei@:tc=sun: - -# Nu machine parameters taken from mit-vax. -# smc - 5/21/85 -# -dg|nuterminal:\ - :al=1*\EL:am:bs:cd=60\EJ:ce=10\EK:cl=60\EE:cm=10\EY%+ %+ :\ - co#80:dc=2.5*\EN:\ - :dl=1*\EM:do=\EB:ei=\EO:ho=\EH:im=\E@:ip=2.5*:li#24:mi:nd=\EC:\ - :as=\EF:ae=\EG:\ - :ms:pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:\ - :kb=^h:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:kn#8:\ - :k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:\ - :l6=blue:l7=red:l8=white:k6=\EP:k7=\EQ:k8=\ER: -nu|nu24|nuwindow:\ - :al=1*\EL:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#86:\ - :dl=1*\EM:do=\EB:ei=\EO:ho=\EH:im=\E@:ip=2.5*:li#24:mi:nd=\EC:\ - :as=\EF:ae=\EG:\ - :ms:pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:\ - :kb=^h:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH: -bnu|nu51|bnuwindow:\ - :co#86:li#51:tc=nu: -fnu|nu61|fnuwindow:\ - :co#86:li#61:tc=nu: -nunix-30|nu-telnet-30|nu-half: Half nu screen thru telnet:\ - :am:al=\EL:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#78:\ - :dl=\EM:do=\EB:ip=2.5*:ho=\EH:li#30:nd=\EC:\ - :pt:sr=\EI:se=\Eq:so=\Ep:up=\EA: -nunix-61|nu-telnet-61|nu-full| Full nu screen thru telnet:\ - :co#78:li#61:tc=nunix-30: - -## VT200 entry for VMS. Also for VT300. -# Make sure not to use \n for nl or anything else. -# It is bad form to use ^J,^L,^K to scroll the screen. -# If the VT2xx doesn't have newline mode set those characters -# donot move the cursor down a line. Use \ED instead. -d0|vt200-80|vt200|vt300-80|VT 200 with 80 columns, on VMS:\ - :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\ - :LE=\E[%dD:RI=\E[%dC:SR=1*\E[%dM:UP=\E[%dA:al=\E[L:\ - :am:bl=^G:bs:cd=2*\E[J:ce=2*\E[K:cl=45\E[H\E[2J:\ - :cm=%i\E[%d;%dH:co#80:cr=\r:cs=\E[%i%d;%dr:ct=\E[3g:\ - :dc=\E[P:dl=\E[M:dm=:do=\ED:ec=\E[%dX:ed=:ei=\E[4l:\ - :ho=\E[H:ic:im=\E[4h:it#8:k1=\EOP:k2=\EOQ:k3=\EOR:\ - :k4=\EOS:kd=\E[B:ke=\E[?1l\E>:kl=\E[D:kn#4:kr=\E[C:ks=\E[?1h\E=:\ - :ku=\E[A:le=^H:li#24:mb=\E[5m:md=\E[1m:me=\E[0m:mi:\ - :mr=\E[7m:ms:nd=\E[C:nl=\ED:nw=\EE:pf=\E[?4i:po=\E[?5i:\ - :ps=\E[i:rc=\E8:sc=\E7:se=\E[27m:sf=1*\ED:so=\E[7m:\ - :sr=1*\EM:st=\EH:ue=\E[24m:up=\EM:us=\E[4m:xn: -d0|vt200-132|vt300-132|VT 200 with 132 columns, on VMS:\ - :co#132:tc=vt200-80: - -aP|apollo_15P|apollo 15 inch display:\ - :dN@:tc=vt132: -aQ|apollo_19L|apollo 19 inch display:\ - :dN@:tc=vt132: -aR|apollo_color|apollo color display:\ - :dN@:tc=vt132: -aS|apollo_800_color|apollo 800 line color display:\ - :dN@:tc=vt132: -d3|vt132|vt-132:\ - :al=99\E[L:dl=99\E[M:ip=7:dc=7\E[P:ei=\E[4l:im=\E[4h:xn:dN#30:tc=vt100: -d0|vt100|vt100n|vt100 with no init:\ - :co#80:li#24:am:bs:pt:xn:cl=45\E[H\E[2J:\ - :cm=%i\E[%d;%dH:nd=\E[C:up=\EM:ho=\E[H:ce=2\E[K:cd=2*\E[J:\ - :nl=\EE:cr=\r:sr=5\EM:sf=30\E7\E[200H\ED\E8:\ - :sc=\E7:rc=\E8:cs=\E[%i%d;%dr:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:LC:\ - :kl=\E[D:kr=\E[C:ku=\E[A:kd=\E[B:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS: -# ************************************************************************* -# Added for del to use a 132 char width terminal -# -d0|vt100l|vt100n|vt100 with no init:\ - :co#132:li#24:am:bs:pt:xn:cl=45\E[H\E[2J:\ - :cm=%i\E[%d;%dH:nd=\E[C:up=\EM:ho=\E[H:ce=2\E[K:cd=2*\E[J:\ - :nl=\EE:cr=\r:sr=5\EM:sf=30\E7\E[200H\ED\E8:\ - :sc=\E7:rc=\E8:cs=\E[%i%d;%dr:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:LC:\ - :kl=\E[D:kr=\E[C:ku=\E[A:kd=\E[B:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS: -# -# End of "Add for del" -# ************************************************************************** -df|vt100|vt-100|vt100f|pt100|pt-100|dec vt100 (fast scroll, reverse video):\ - :is=\E>\E[?4l\E[?5h\E[?7h\E[?8h:\ - :if=/usr/lib/tabset/vt100:tc=vt100n: -d1|vt100|vt100fnv|dec vt100 (fast scroll, normal video):\ - :is=\E>\E[?4l\E[?5l\E[?7h\E[?8h:\ - :if=/usr/lib/tabset/vt100:tc=vt100n: -ds|vt100|vt100s|dec vt100 (smooth scroll, reverse video):\ - :is=\E>\E[?4h\E[?5h\E[?7h\E[?8h:\ - :if=/usr/lib/tabset/vt100:tc=vt100n: -dn|vt100|vt100snv|dec vt100 (smooth scroll, normal video):\ - :is=\E>\E[?4h\E[?5l\E[?7h\E[?8h:\ - :if=/usr/lib/tabset/vt100:tc=vt100n: -# This was designed for a VT320 emulator, but it is probably a good start -# at support for the VT320 itself. -# Please send changes with explanations to bug-gnu-emacs@prep.ai.mit.edu. -k3|vt320|vt320-k3|kermit|MS-Kermit 3.00's vt320 emulation:\ - :AL=\E[%dL:CC=\E:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:DO=\E[%dB:LE=\E[%dD:\ - :RI=\E[%dC:SR=\E[%dL:UP=\E[%dA:ae=\E(B:al=\E[L:am:as=\E(0:bl=^G:\ - :cd=\E[J:ce=\E[K:ch=\E[%i%dG:cl=\E[H\E[J:cm=\E[%i%d;%dH:co#80:cr=^M:\ - :cs=\E[%i%d;%dr:ct=\E[3g:cv=\E[%i%dd:dc=\E[P:do=^J:dl=\E[M:ds=\E[0$~:\ - :ec=\E[%dX:ei=\E[4l:es:fs=\E[0$}:ho=\E[H:hs:im=\E[4h:\ - :is=\E>\E F\E[?1l\E[?7h\E[r\E[2$~:k1=\EOP:k2=\EOQ:\ - :k3=\EOR:k4=\EOS:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k0=\E[21~:\ - :kI=\E[2~:kL=\E[3~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\EOB:ke=\E[?1l\E>:\ - :kl=\EOD:km:kn#20:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:\ - :le=^H:li#49:mb=\E[5m:md=\E[1m:me=\E[m:mi:mr=\E[7m:ms:nd=\E[C:\ - :nl=^J:pb#9600:po=\E[5i:pf=\E[4i:ps=\E[0i:pt:rc=\E8:\ - :rs=\E(B\E)B\E>\E F\E[4;20l\E[12h\E[?1;5;6;38;42l\E[?7;25h\E4i\E?4i\E[m\E[r\E[2$~:\ - :sc=\E7:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\ - :ts=\E[1$}^M\E[K:ue=\E[24m:\ - :up=\E[A:us=\E[4m:vb=\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l:ve=\E[?25h:\ - :vi=\E[?25l:vt#3:xn: -sw|switch|intelligent switch:co#80:os:am: -su|dumb|un|unknown:co#80:os:am: -sp|plugboard:co#80:os:am: -sa|arpanet|network:co#80:os:am: -sd|du|dialup:co#80:os:am: -sb|bussiplexer:co#80:os:am: -# Note that all of these claim to be "c100" in order to please the -# pen and emacs editors. If the user does a "tset c100" he will get co. -co|c100|concept|concept100|concept 100:\ - :is=\EU\Ef\E7\E5\E8\El\ENH\EK\E\200\Eo&\200\Eo\47\E:\ - :al=3*\E^R:am:bs:cd=16*\E^C:ce=16\E^S:cl=2*^L:cm=\Ea%+ %+ :co#80:\ - :dc=16\E^A:dl=3*\E^B:ei=\E\200:eo:im=\E^P:in:ip=16*:li#24:mi:nd=\E=:\ - :pt:kb=^h:so=\ENh:se=\ENH:ta=8\t:ul:up=\E;:db:xn:vs=\EW:ve=\Ew:\ - :vb=\Ek\200\200\200\200\200\200\200\200\200\200\200\200\200\200\EK:\ - :us=\EG:ue=\Eg:ks=\EX\ES:ke=\Ex\Es:ku=\E;:kd=\E<:kl=\E>:kr=\E=:kh=\E?:\ - :k1=\E5:k2=\E6:k3=\E7:.dN#9:dC#9: -c4|c100|c1004p|c100 w/4 pages:\ - :ti=\EU\Ev 8p\Ep\r:te=\Ev ~p\Ep\r\n:vs@:ve@:tc=concept: -cP|c100|c100rv4ppp|c100 with printer port:\ - :is=\EU\Ef\E7\E5\E8\El\ENH\Ek\E\200\Eo&\200\Eo!\200\EQ"\EY(^W\Eo\47\E:\ - :tc=c100rv4p: -cR|c100|c100rv4p|c100 w/4 pages:\ - :ti=\EU\Ev 8p\Ep\r:te=\Ev ~p\Ep\r\n:tc=c100rv: -# Some tty drivers use cr3 for concept, others use nl3, hence dN/dC below. -cd|c100|c100rvs|slow reverse concept 100:\ - :vb=\EK\200\Ek:pt:dC@:dN@:tc=c100rv: -cn|c100|c100rv4pna|c100 with no arrows:ks@:ke@:tc=c100rv4p: -cr|c100|c100rv|c100 rev video:\ - :is=\EU\Ef\E7\E5\E8\El\ENH\Ek\E\200\Eo&\200\Eo\47\E:vs@:ve@:\ - :vb=\EK\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ek:\ - :tc=concept: -cs|c100|c100s|slowconcept|slowconcept100|slow concept 100:\ - :vb=\Ek\200\EK:pt:dC@:dN@:tc=concept: -# vt100 and vt132 are still untested -# Note that all of these claim to be "vt100", so the first one wins. -dG|gigi|GIGI|dec gigi (naively treated as a straight vt100):\ - :tc=vt100n: -dR|vt125|dec vt125 (naively treated as a straight vt100; R for ReGIS):\ - :tc=vt100n: -kA|h19A|heathA|h19A|heathkitA|heathkit h19 ansi mode:\ - :al=1*\E[1L:am:bs:cd=\E[J:ce=\E[K:cl=\E[2J:cm=\E[%i%2;%2H:co#80:\ - :dc=\E[1P:dl=1*\E[1M:dn=\E[1B:ei=\E[4l:ho=\E[H:im=\E[4h:li#24:mi:\ - :nd=\E[1C:as=\E[10m:ae=\E[11m:ms:pt:se=\E[0m:so=\E[7m:up=\E[1A:\ - :vs=\E[>4h:ve=\E[>4l:kb=^h:ku=\E[1A:kd=\E[1B:kl=\E[1D:kr=\E[1C:\ - :kh=\E[H:kn#8:k1=\EOS:k2=\EOT:k3=\EOU:k4=\EOV:k5=\EOW:l6=blue:\ - :l7=red:l8=white:k6=\EOP:k7=\EOQ:k8=\EOR:\ - :sr=\EM:is=\E<\E[>1;2;3;4;5;6;7;8;9l\E[0m\E[11m\E[?7h: -kB|h19bs|heathkit w/keypad shifted:ks=\Et:ke=\Eu:tc=h19b: -kU|h19us|heathkit w/keypad shifted/underscore cursor:ks=\Et:ke=\Eu:tc=h19u: -kb|h19|heath|h19b|heathkit|heath-19|z19|zenith|heathkit h19:\ - :al=1*\EL:am:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:dc=\EN:\ - :dl=1*\EM:do=\EB:ei=\EO:ho=\EH:im=\E@:li#24:mi:nd=\EC:as=\EF:ae=\EG:\ - :ms:pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:\ - :kb=^h:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:kn#8:\ - :k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:\ - :l6=blue:l7=red:l8=white:k6=\EP:k7=\EQ:k8=\ER: -ke|e19|winston edmond special:vb=\Eg\Eh:tc=h19: -ku|h19u|heathkit with underscore cursor:vs@:ve@:tc=h19b: -Ma|aa|annarbor|ann arbor:\ - :cm=^O%r%B%.%>^S^L%+@:co#80:li#40:bs:cl=2^L:up=^N:nd=^_:ho=^K:am:\ - :kb=^^:kd=^J:ku=^N:kl=^H:kr=^_:kh=^K:ma=^_ ^N^P: -# The A manufacturer represents Diablo, DTC, Xerox, Qume, and other Daisy -# wheel terminals until such time as termcap distinguishes between them -# enough to justify separate codes. -# 1620 uses all 132 columns, 1640 sets left margin to 8 and uses snazzy -# binary tabset file. Both should work on both terminals. -A6|1620|450|diablo 1620:\ - :if=/usr/lib/tabset/std:\ - :kb=^H:bs:co#132:ff=^L:hc:hu=\EU:hd=\ED:os:pt:up=\E\n: -A7|1640|diablo 1640:\ - :co#124:if=/usr/lib/tabset/diablo:tc=1620: -Ad|dtc300s|300|300s|gsi|dtc|dtc 300s:\ - :if=/usr/lib/tabset/std:\ - :kb=^h:bs:co#132:ff=^L:hc:hu=\EH:hd=\Eh:os:pt:up=^Z: -Ag|gsi:bs:co#132:hc:hd=\Eh:hu=\EH:os:pt:up=^Z: -Aj|aj830|aj832|aj|anderson jacobson:\ - :bs:hc:hd=\E9:hu=\E8:os:pl:up=\E7: -Aq|qume5|qume|Qume Sprint 5:\ - :if=/usr/lib/tabset/std:\ - :kb=^h:bs:co#80:ff=^L:hc:hu=\EH:hd=\Eh:os:pt:up=^Z: -Ax|x1720|xerox 1720:co#132:bs:ff=^L:hc:os:pt:if=/usr/lib/tabset/xerox1720 -Ca|cdc456|cdc:\ - :li#24:co#80:cl=^Y^X:nd=^L:up=^Z:bs:\ - :cm=\E1%+ %+ :ho=^Y:al=\E\114:dl=\E\112:ce=^V:cd=^X:am: -Cc|cdc456tst:\ - :li#24:co#80:cl=^y^x:bs:cm=\E1%+ %+ :am: -D0|dm1520|1520|datamedia 1520:\ - :am:bs:cd=^K:ce=^]:cl=^L:cm=^^%r%+ %.:co#80:ho=^Y:\ - :ku=^_:kd=^J:kl=^H:kr=^\:kh=^Y:\ - :li#24:nd=^\:up=^_:xn:ma=^\ ^_^P^YH:pt: -D1|dm1521|1521|datamedia 1521:\ - :am:bs:cd=^K:ce=^]:cl=^L:cm=^^%r%+ %.:co#80:ho=^Y:\ - :ku=^_:kd=^J:kl=^H:kr=^\:kh=^Y:\ - :li#24:nd=^\:up=^_:xn:ma=^\ ^_^P^YH:pt: -D2|dm2500|datamedia2500|2500|datamedia 2500:\ - :al=15^P\n^X^]^X^]:bs:ce=^W:cl=^^^^\177:cm=^L%r%n%.%.:co#80:\ - :dc=10*\b:dl=10*^P^Z^X^]:dm=^P:ed=^X^]:ei=10\377\377^X^]:ho=^B:ic10*^\:\ - :im=^P:li#24:nc:nd=^\:pc=\377:so=^N:se=^X^]:up=^Z: -D3|dm3025|datamedia 3025a:is=\EQ\EU\EV:\ - :al=130\EP\n\EQ:bs:cd=2\EJ:ce=\EK:cl=2\EM:cm=\EY%r%+ %+ :\ - :co#80:dc=6\b:dl=130\EP\EA\EQ:dm=\EP:ed=\EQ:ei=\EQ:ho=\EH:\ - :im=\EP:ip=6:li#24:nd=\EC:pt:so=\EOA:se=\EO@:up=\EA: -D4|3045|dm3045|datamedia 3045a:is=\EU\EV:\ - :am:bs:cd=2\EJ:ce=\EK:cl=2\EM:cm=\EY%r%+ %+ :co#80:\ - :dc=6\EB:dm=:ed=:ei=\EP:ho=\EH:ic=:im=\EP:ip=6:\ - :k0=\Ey\r:k1=\Ep\r:k2=\Eq\r:k3=\Er\r:k4=\Es\r:\ - :k5=\Et\r:k6=\Eu\r:k7=\Ev\r:k8=\Ew\r:k9=\Ex\r:\ - :kh=\EH:ku=\EA:kr=\EC:li#24:nd=\EC:pc=\177:pt:eo:ul:up=\EA:xn: -D5|dt80|dmdt80|dm80|datamedia dt80/1:\ - :is=\E<\E[2J\E[H\E[?1;3;5;6;9l\E[?7;8h:\ - :am:bs:cd=\E[J:co#80:li#24:ce=\E[K:cl=\E[2J\E[H:\ - :cm=%i\E[%d;%dH:ho=\E[H:nd=\E[C:\ - :so=\E[7m:se=\E[m:\ - :up=\E[A:us=\E[4m:ue=\E[m:\ - :vb=\E[?5h\E[?5l:\ - :vs=\E[1;2;3;4q\E[?4l:ve=\E[0q\E?4h:\ - :kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:\ - :sr=\EM:\ - :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS: -D6|dt80132|dmdt80132|datamedia dt80/1 in 132 char mode:\ - :bs:cd=20^[[0J:co#132:ce=20^[[0K:kd=^[[B:kl=^[[D:kr=^[[C:ku=^[[A:\ - :li#24:cm=5^[[%i%d;%dH:cl=50^[[H^[[2J:nd=^[[C:up=5^[[A: -ED|delta|dd5000|delta data 5000:\ - :am:bs:cl=^NR:cm=^O%D%+9%D%+9:co#80:li#27:ho=^NQ:nc:nd=^Y:\ - :up=^Z:ce=^NU:dc=^NV:ma=^K^J^Z^P^Y :xr: -# Note: the h1552 appears to be the first Hazeltine terminal which -# is not braindamaged. It has tildes and backprimes and everything! -# Be sure the auto lf/cr switch is set to cr. -H2|h1552|hazeltine 1552:\ - :al=\EE:dl=\EO:f1=\EP:l1=blue:f2=\EQ:l2=red:f3=\ER:l3=green:tc=vt52: -H3|h1552rv|hazeltine 1552 reverse video:\ - :so=\ES:se=\ET:tc=h1552: -H5|h1500|hazeltine 1500:\ - :al=40~^Z:am:bs:cd=10~^X:ce=~^O:cl=~^\:cm=~^Q%r%.%.:co#80:\ - :dl=40~^S:do=~^K:hz:li#24:nd=^P:.se=~^_:.so=~^Y:up=~^L: -H6|h1510|hazeltine 1510:\ - :al=\E^Z:am:bs:cd=\E^X:ce=\E^O:cl=\E^\:cm=\E^Q%r%.%.:co#80:\ - :dl=\E^S:do=\E^K:hz:li#24:nd=^P:.se=\E^_:.so=\E^Y:up=\E^L: -H8|h1520|hazeltine 1520:\ - :al=~^Z:am:bs:cd=~^X:ce=~^O:cl=~\034:cm=~^Q%r%.%.\200:co#80:\ - :dl=~^S:do=~^K:hz:li#24:nd=^P:se=~^Y:so=~\037:up=~^L:ho=~^R: -# Note: h2000 won't work because of a clash between upper case and ~'s. -H7|h2000|hazeltine 2000:\ - :al=6~^z:am:bs:cl=6~^\:cm=~^q%r%.%.:co#74:\ - :dl=6~^s:ho=~^r:li#27:nc:pc=\177: -# One of these should go in the misc category, IBM and ISC can't -# both have I. I will wait to see who comes out with more terminals. -I8|8001|ISC8001:al=\EU:am:bc=^Z:cl=3*^L:cm=^C%r%.%.:co#80:\ - :cd=\EQ:dm=\EQ:ed=\EF:\ - :dc=\177:dl=\EV:ei=\EF:im=\EQ:li#40:nd=1^Y:ta=8\t:\ - :up=^\:ho=1^H:pc=^@: -It|intext|ISC modified owl 1200:\ - :al=5.5*\020:am:bc=\037:bs:cd=5.5*\026J:cl=132\014:\ - :cm=\017%+ %+ :co#80:dc=5.5*\022:dl=5.5*\021:\ - :ei=\026\074:im=\026\073:ip=5.5*:in:li#24:nd=\036:up=\034:\ - :ma=^K^P^R^L^L :kl=^H:kd=^J:kr=^L:ku=^K: -I9|ibm|ibm3101|3101|i3101|IBM 3101-10:\ - :if=/usr/lib/tabset/3101:\ - :am:bs:cl=^[K:li#24:co#80:nd=^[C:up=^[A:cd=^[J:ce=^[I:\ - :kd=\EB:kl=\ED:kr=\EC:ku=\EA:ho=^[H:cm=\EY%+\40%+\40: -L3|digilog|333|digilog 333:bs:co#80:ce=\030:ho=^n:li#16:nd=^i:up=^o: -MA|ampex|d80|dialogue|dialogue80|ampex dialogue 80:\ - :am:bs:pt:if=/usr/lib/tabset/stdcrt:cl=\E*:cm=\E=%+ %+ :\ - :al=\EE:bt=\EI:ic=\EQ:im=:ei=:dl=\ER:dc=\EW:\ - :ce=\Et:cd=\Ey:so=\Ej:se=\Ek:li#24:co#80:nd=^L:up=^K: -MB|aaadb|ann arbor ambassador 48/destructive backspace:\ - :is=\E[48;0;0;48p\E[H\E[J\E[>30h\E[1Q\E[m:bs@:\ - :vs=\E[>30l:ve=\E[>30h:tc=aaa: -MC|compucolor|compucolorII:\ - :pt:am:cm=%r^C%.%.:bc=^Z:li#32:co#64:\ - :cl=^L:ho=^H:nd=^Y:up=^\: -MD|d132|datagraphix|datagraphix 132a:\ - :co#80:li#30:cl=^l:ho=\Et:da:db:sf=\Ev:sr=\Ew:\ - :up=\Ek:nd=\El:vs=\ex:ve=\Em\En:\ - :al=\E3:ic=\E5:dc=\E6:in:ic=\E5: -MS|soroc|Soroc 120:\ - :cd=\EY:ce=\ET:cl=2\E*:ma=^K^P^R^L^L :\ - :kl=^H:ku=^K:kr=^L:kd=^J:tc=adm3a: -# Needs function keys added. Also can't use 60 line mode because it needs -# too much nl delay - can fix for nl but not out of vi. -# The cl delay is sufficient, but a smaller one could do. -# This entry is merged from Mike O'Brien@Rand and Howard Katseff at -# Bell Labs, and is untested. -Mb|aaa|ambas|ambassador|ann arbor ambassador/48 lines:\ - :al=\E[L:am:bs:\ - :cd=\E[0J:ce=\E[0K:cl=400\E[;H\E[0J:cm=\E[%i%d;%dH:co#80:\ - :da:db:dc=\E[4h\E[1Q\E[P\E[4l\E[0Q:dc=\E[P:dl=\E[M:dm=\E[1Q:\ - :ed=\E[0Q:ei=\E[0Q:ho=\E[;H:ic=\E[@:if=/usr/lib/tabset/aa:im=\E[1Q:\ - :is=\E[48;0;0;48p\E[H\E[J\E[1Q\E[m:li#48:mi:\ - :nd=\E[C:nl=\ED:pt:sf=\E[S:sr=\E[T:se=\E[m:so=\E[7m:up=\E[A: -Md|datapoint|dp3|dp3360|datapoint 3360:\ - :am:bs:cd^_:ce=^^:cl=^]^_:co#82:ho=^]:li#25:nd=^x:up=^z: -Mg|dg|dg6053|data general 6053:\ - ca:am:bs:cm=^P%r%.%.:cl=^L:ho=^H:nd=^S\ - up=^W:ce=^K:co#80:li#24: -Mi|cdi|cdi1203:am:bs:hc:os:co#80:cD#200: -Mk|teletec|tec|Teletec Datascreen:\ - :am:bs:co#80:cl=^l:ho=^^:li#24:nd=^_:up=^k: -# ^S is an arrow key! Boy is this guy in for a surprise on v7! -Ml|sol:\ - :am:bs:cm=\E^1%.\E^2%.:cl=^K:ho=^N:co#64:li#16:nd=^S:up=^W:\ - :kl=^A:kr=^S:ku=^W:kd=^Z:ma=^A^H^S ^W^P^Z^N: -Mo|omron|Omron 8025AG:\ - :al=\EL:am:bs:cd=\ER:co#80:ce=\EK:cl=\EJ:da:db:dc=\EP:dl=\EM:\ - :ho=\EH:li#24:nd=\EC:se=\E4:sf=\ES:so=\Ef:sr=\ET:up=\EA:ve=:vs=\EN: -Mp|plasma|plasma panel:am:bs:cl=^L:co#85:ho=^^:li#45:nd=\030:up=\026: -Ms|swtp|ct82|southwest technical products ct82:\ - :am:bs:bc=^d:al=^\^y:cd=^v:ce=^F:cl=^L:cm=%r^k%.%.:co#82:li#20:\ - :dl=^z:nd=^s:up=^a:so=^^^v:se=^^^F:dc=^\^h:ic=^\^x:ho=^p:\ - :ei=:sf=^n:sr=^o:ll=^c:im=:\ - :is=^\^r^^^s^^^d^]^w^i^s^^^]^^^o^]^w^r^i: -Mt|terak|Terak emulating Datamedia 1520:tc=dm1520: -My|mdl110|cybernex mdl-110:cm=^P%+ %+ :co#80:li#24:am:cl=70^X:bs:\ - :nd=^U:up=^Z:ho=^Y:ce=145^N@^V:cd=145^NA^W:al=65^NA^N^]:\ - :dl=40^NA^N^^:im=:\ - :ei=:ic=3.5^NA^]:dm:ed:dc=3.5^NA^^:so=^NF:se=^NG:ta=43\t:\ - :ma=^Z^P:cd=6^N@^V -Mz|zen30|z30|zentec 30:\ - :mi:co#80:li#24:ma=^L ^R^L^K^P:ul:\ - :al=1.5*\EE:bs:ce=1.0*\ET:cm=\E=%+ %+ :cl=\E*:\ - :ho=^^:nd=^L:se=\EG0;so=\EG6:up=^K:im=\Eq:ei=\Er:\ - :am:dc=\EW:dl=1.5*\ER:cd=\EY: -T3|33|tty33|tty|model 33 teletype:\ - :co#72:hc:os: -T4|43|tty43|model 43 teletype:\ - :kb=^h:am:bs:hc:os:co#132: -T7|37|tty37|model 37 teletype:\ - :bs:hc:hu=\E8:hd=\E9:up=\E7:os: -# The Visual 200 beeps when you type a character in insert mode. -# This is a horribly obnoxious misfeature, and some of the entries -# below try to get around the problem by ignoring the feature or -# turning it off when inputting a character. They are said not to -# work well at 300 baud. (You could always cut the wire to the bell!) -V2|vi200|v200|visual 200 with function keys:\ - :al=\EL:am:bs:cd=\Ey:ce=4*\Ex:cl=\Ev:\ - :cm=\EY%+ %+ :co#80:dc=4*\EO:dl=4*\EM:ho=\EH:\ - :im=:ei=:ic=\Ei \b\Ej:\ - :is=\E3\Eb\Ej\E\\\El\EG\Ed\Ek:\ - :k0=\EP:k1=\EQ:k2=\ER:k3=\E :k4=\E!:k5=\E":k6=\E#:\ - :k7=\E$:k8=\E%:k9=\E&:kl=\ED:kr=\EC:ku=\EA:kd=\EB:kh=\EH:\ - :li#24:nd=\EC:pt:sr=\EI:up=\EA:vs=\Ed:ve=\Ec: -VR|vi200rvic|visual 200 reverse video using insert char:\ - :ei=\Ej:im=\Ei:ic@:tc=vi200rv: -# The older Visuals didn't come with function keys. This entry uses -# ks and ke so that the keypad keys can be used as function keys. -# If your version of vi doesn't support function keys you may want -# to use V2. -Vf|vi200f|visual|visual 200 no function keys:\ - :al=\EL:am:bs:cd=\Ey:ce=4*\Ex:cl=\Ev:\ - :cm=\EY%+ %+ :co#80:dc=4*\EO:dl=4*\EM:ho=\EH:\ - :im=:ei=:ic=\Ei \b\Ej:\ - :is=\E3\Eb\Ej\E\\\El\EG\Ed\Ek:ks=\E=:ke=\E>:\ - :k0=\E?p:k1=\E?q:k2=\E?r:k3=\E?s:k4=\E?t:k5=\E?u:k6=\E?v:\ - :k7=\E?w:k8=\E?x:k9=\E?y:kl=\ED:kr=\EC:ku=\EA:kd=\EB:kh=\EH:\ - :li#24:nd=\EC:pt:sr=\EI:up=\EA:vs=\Ed:ve=\Ec: -Vr|vi200rv|visual 200 reverse video:\ - :so=\E4:se=\E3:sr@:vs@:ve@:tc=vi200: -Vt|vi200ic|visual 200 using insert char:\ - :ei=\Ej:im=\Ei:ic@:tc=vi200: -Xa|tek4012|4012|tektronix 4012:\ - :is=\E^O:bs:cl=1000\E^L:co#75:ns:li#35:os: -Xb|tek4013|4013|tektronix 4013:\ - :as=\E^N:ae=\E^O:tc=4012: -Xc|tek4014|4014|tektronix 4014:\ - :is=\E^O\E9:co#81:li#38:dF#1000:tc=tek4012: -Xd|tek4015|4015|tektronix 4015:\ - :as=\E^N:ae=\E^O:tc=4014: -Xe|tek4014sm|4014sm|tektronix 4014 in small font:\ - :is=\E^O\E\072:co#121:li#58:tc=tek4014: -Xf|tek4015sm|4015sm|tektronix 4015 in small font:\ - :as=\E^N:ae=\E^O:tc=4014sm: -# I think the 1000UP is supposed to be so expensive it never happens. -X4|tek4023|4023|tektronix 4023:\ - :so=^_P:se=^_@:cm=\034%r%+ %+ :nd=\t:bs:cl=4\E^L:co#80:li#24:am:\ - :up=1000UP: -# Can't use cursor motion because it's memory relative, and because -# it only works in the workspace, not the monitor. Same for home. -# Likewise, standout only works in the workspace. -X5|tek|4025|4027|4024|tek4025|tek4027|tek4024|4025cu|4027cu|tektronix 4024/4025/4027:\ - :is=\41com 31\r\n^_sto 9,17,25,33,41,49,57,65,73\r:\ - :ks=^_lea p4 /h/\r^_lea p8 /k/\r^_lea p6 / /\r^_lea p2 /j/\r^_lea f5 /H/\r:\ - :ke=^_lea p2\r^_lea p4\r^_lea p6\r^_lea p8\r^_lea f5\r:\ - :am:bs:da:db:pt:li#34:co#80:cl=^_era\r\n\n:up=^K:nd=^_rig\r:\ - :al=145^_up\r^_ili\r:dl=^_dli\r:\ - :dc=^_dch\r:im=^_ich\r:ei=^F\n^K:nl=^F\n:\ - :ce=^_dch 80\r:cd=^_dli 50\r:CC=^_: -X7|4025-17|4027-17|tek 4025 17 line window:li#17:tc=4025: -X8|4025-17ws|4027-17ws|tek 4025 17 line window in workspace:\ - :is=\41com 31\r\n^_sto 9,17,25,33,41,49,57,65,73\r^_wor 17\r^_mon 17\r:\ - :ti=^_wor h\r:te=^_mon h\r:so=^_att e\r:se=^_att s\r:tc=4025-17: -Xe|4025ex|4027ex|tek 4025 w/!:ti=\41com 31\r:te=^_com 33\r:\ - :is=^_com 33\r\n\41sto 9,17,25,33,41,49,57,65,73\r:tc=4025: -# Regent: lowest common denominator, works on all regents. -a0|regent|adds regent series:\ - :am:bs:cl=^L:cm=^K%+ ^P%B%.:co#80:ho=^A:li#24:ll=^A^Z:nd=^F:up=^Z: -# Regent 100 has a bug where if computer sends escape when user is holding -# down shift key it gets confused, so we avoid escape. -a1|regent100|adds regent 100:\ - :cm=^K%+ ^P%B%.:k1=^B1\r:k2=^B2\r:k3=^B3\r:k4=^B4\r:\ - :k5=^B5\r:k6=^B6\r:k7=^B7\r:k8=^B8\r:\ - :kh=^A:kl=^U:kr=^F:ku=^Z:kd=^J:tc=regent: -# Regent 20, untested -a2|regent20|adds regent 20:\ - :cd=\Ek:ce=\EK:cm=\EY%+ %+ :tc=regent: -a3|regent25|adds regent 25:\ - :k0=^B0\r:k1=^B1\r:k2=^B2\r:k3=^B3\r:k4=^B4\r:\ - :k5=^B5\r:k6=^B6\r:k7=^B7\r:k8=^B8\r:k9=^B9\r:\ - :kh=^A:kl=^U:kr=^F:ku=^Z:kd=^J:tc=regent20: -# Regent 40: untested -a4|regent40|adds regent 40:\ - :al=\EM:dl=\El:is=\EB:se=\E0@:so=\EOP:ue=\EO@:us=\E0`:vb=\ED\Ed:\ - :tc=regent25: -# If you have standout problem with regent 200, try so=\ER\EOP:se=\E0@\EV: -a6|regent60|regent200|adds Regent 60:\ - :dc=\EE:ei=\EF:im=\EF:is=\EV\EB:ko=dc,im,ei:tc=regent40: -a7|regent60na|regent 60 w/no arrow keys:\ - kl@:kr@:ku@:kd@:tc=regent60: -# Note: if return acts weird on a980, check internal switch #2 -# on the top chip on the CONTROL pc board. -ac|a980|adds consul 980:\ - :al=13\E^N:am:bs:cl=^L\200^K@:cm=^K%+@\E^E%2:co#80:dl=13\E^O:\ - :k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:k8=\E8:k9=\E9:\ - :li#24:nd=\E^E01:so=^Y^^^N:se=^O:up=9: -b2|sb2|sb3|fixed superbee:xb@:tc=superbee: -bh|bh3m|beehiveIIIm:if=/usr/lib/tabset/beehive:\ - :al=160^S:am:bs:cd=^R:ce=^P:cl=^E^R:co#80:dl=300^Q:ho=^E:li#20:ll=^E^K:\ - :nd=^L:pt:se= ^_:so=^] :up=^K: -# This loses on lines > 80 chars long, use at your own risk -bi|superbeeic|super bee with insert char:\ - :ic=:im=\EQ:ei=\ER:tc=superbee: -bm|microb|microbee|micro bee series:\ - :am:bs:cd=\EJ:ce=\EK:cl=\EE:co#80:cm=\EF%+ %+ :\ - :k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:k9=\Ex:\ - :kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:\ - :li#24:nd=\EC:pt:se=\Ed@ :so= \EdP:ue=\Ed@:up=\EA:us=\Ed`: -# Superbee - f1=escape, f2=^C. -# Note: there are at least 3 kinds of superbees in the world. The sb1 -# holds onto escapes and botches ^C's. The sb2 is the best of the 3. -# The sb3 puts garbage on the bottom of the screen when you scroll with -# the switch in the back set to CRLF instead of AEP. This description -# is tested on the sb2 but should work on all with either switch setting. -# The f1/f2 business is for the sb1 and the :xb: can be taken out for -# the other two if you want to try to hit that tiny escape key. -# This description is tricky: being able to use cm depends on there being -# 2048 bytes of memory and the hairy nl string. -bs|sb1|superbee|superb|beehive super bee:if=/usr/lib/tabset/stdcrt:is=\EE:\ - :am:bs:cd=3\EJ:ce=3\EK:cl=3\EH\EJ:co#80:cm=\EF%r%3%3:cr=1000\r:\ - :dC#10:da:db:xb:dc=3\EP:dl=100\EM:so=\E_1:se=\E_0:\ - :li#25:nl=\n\200\200\200\n\200\200\200\EA\EK\200\200\200\ET\ET:\ - :nd=\EC:pt:up=\EA:ho=\EH:ve=\n:\ - :k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:\ - :kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA: -d2|gt42|dec gt42:\ - :bs:co#72:ns:li#40:os: -d4|gt40|dec gt40:\ - :bs:co#72:ns:li#30:os: -d5|vt50|dec vt50:\ - :bs:cd=\EJ:ce=\EK:cl=\EH\EJ:co#80:li#12:nd=\EC:pt:up=\EA: -dI|dw1|decwriter I:\ - :bs:co#72:hc:os: -dh|vt50h|dec vt50h:\ - :bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:li#12:nd=\EC:\ - :pt:sr=\EI:up=\EA: -# -# ds|vt100s|vt-100s|pt100s|pt-100s|dec vt100 132 cols 14 lines:\ -# :li#14:tc=vt100w: -# -dt|vt100w|vt-100w|pt100w|pt-100w|dec vt100 132 cols:\ - :co#128:li#24:is=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h:tc=vt100: -dv|vt52|dec vt52:\ - :bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:li#24:nd=\EC:\ - :pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED: -dw|dw2|dw3|dw4|decwriter II:\ - :kb=^h:bs:co#132:hc:os: -e1|ep48|ep4080|execuport 4080:am:bs:os:co#80:hu=\036:hd=\034: -e2|ep40|ep4000|execuport 4000:am:bs:os:co#136:hu=\036:hd=\034: -g2|1200|tn1200|terminet 1200:\ - :co#120:hc:os: -g3|300|tn300|terminet 300:\ - :co#120:hc:os: -# Note: no "ho" on HP's since that homes to top of memory, not screen. -# Due to severe braindamage, the only way to get the arrow keys to -# transmit anything at all is to turn on the function key labels -# (f1-f8) with ks, and even then the poor user has to hold down shift! -# The default 2621 turns off the labels except when it has to to enable -# the function keys. If your installation prefers labels on all the time, -# or off all the time (at the "expense" of the function keys) move the -# 2621nl or 2621wl labels to the front using reorder. -# 2621k45: untested -h2|2621|hp2621|hp2621a|hp2621p|2621|2621a|2621p|hp 2621:\ - :is=\E&j@\r\E3\r:bt=\Ei:cm=\E&a%r%dc%dY:dc=2\EP:ip=2:\ - :kh=\Ep\r:ku=\Et\r:kl=\Eu\r:kr=\Ev\r:kd=\Ew\r:\ - :kn#8:k1=\Ep\r:k2=\Eq\r:k3=\Er\r:k4=\Es\r:k5=\Et\r:k6=\Eu\r:k7=\Ev\r:\ - :k8=\Ew\r:ks=\E&jB:ke=\E&j@:ta=2^I:tc=hp: -h3|2621k45|hp2621k45|k45|hp 2621 with 45 keyboard:\ - :kb=^H:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\Eh:ks=\E&s1A:ke=\E&s0A:tc=2621: -h4|hp|hp2645|2645|hp 264x series:\ - :if=/usr/lib/tabset/stdcrt:\ - :al=\EL:am:bs:cd=\EJ:ce=\EK:ch=\E&a%dC:cl=\EH\EJ:cm=6\E&a%r%dc%dY:\ - :co#80:cv=\E&a%dY:da:db:dc=\EP:dl=\EM:ei=\ER:im=\EQ:\ - :kb=^H:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\Eh:ks=\E&s1A:ke=\E&s0A:\ - :li#24:mi:ml=\El:mu=\Em:nd=\EC:pt:se=\E&d@:so=\E&dJ:\ - :us=\E&dD:ue=\E&d@:up=\EA:xs: -h6|hp2626|hp2626a|hp2626p|2626|2626a|2626p|hp 2626:\ - :is=\E&j@\r\E3\r:if=/usr/lib/tabset/stdcrt:\ - :al=\EL:am:bs:bt=\Ei:cd=\EJ:ce=\EK:cl=\EH\EJ:\ - :cm=\E&a%r%dc%dY:co#80:da:db:dc=2\EP:dl=\EM:ei=\ER:\ - :im=\EQ:ip=2:li#24:mi:nd=\EC:pt:se=\E&d@:so=\E&dB:up=\EA:\ - :kh=\Eh:ku=\EA:kl=\ED:kr=\EC:kd=\EB:\ - :ma=j^Jk^P^K^Pl :sf=\ES:\ - :ta=2^I:xs: -# cD a pain - only screw up at 9600 baud. -h8|hp2648|hp2648a|2648a|2648|HP 2648a graphics terminal:\ - :cl=50\EH\EJ:cm=20\E&a%r%dc%dY:dc=7\EP:ip#5:is=130\Eg:tc=2645: -# 2640a doesn't have the Y cursor addressing feature, and C is memory relative -# instead of screen relative, as we need . -ha|2640|hp2640a|2640a|hp 2640a:cm@:ks@:ke@:tc=2645: -hb|2640b|hp2640b|2644a|hp2644a|hp 264x series:ks@:ke@:tc=2645: -# 2621 using all 48 lines of memory, only 24 visible at any time. Untested. -hb|big2621|48 line 2621:li#48:ho=\EH:cm=\E&a%r%dc%dR:tc=2621: -hn|2621nl|hp2621nl|2621|hp 2621 with no labels:ks@:ke@:kh@:ku@:kl@:kr@:kd@:tc=hp2621: -hw|2621wl|hp2621wl|2621|hp 2621 with labels:is=\E&jA\r\E3\r:ke=\E&jA:tc=hp2621: -# Infoton is now called General Terminal Corp. or some such thing. -# gt100 sounds like something DEC would come out with. Lets hope they don't. -i1|i100|gt100|gt100a|General Terminal 100A (formerly Infoton 100):\ - :cl=^L:cd=\EJ:ce=\EK:li#24:co#80:\ - :al=\EL:dl=\EM:up=\EA:nd=\EC:ho=\EH:cm=\Ef%r%+ %+ :vb=\Eb\Ea:am:bs:\ - :so=\Eb:se=\Ea: -i4|i400|400|infoton 400:\ - :if=/usr/lib/tabset/infoton_tabs:\ - :al=\E[L:am:bs:ce=\E[N:cl=\E[2J:cm=%i\E[%3;%3H:co#80:dl=\E[M:li#25:\ - :nd=\E[C:up=\E[A:im=\E[4h\E[2Q:ei=\E[4l\E[0Q:\ - :dc=\E[4h\E[2Q\E[P\E[4l\E[0Q: -ia|addrinfo:\ - :li#24:co#80:cl=^L:ho=^H:nd=^Y:cd=^K:\ - :up=^\:am:bc=^Z:cm=\037%+\377%+\377:ll=^H^\: -ik|infotonKAS:\ - :am:bc=^Z:cd=^K:cl=^L:co#80:li#24:nd=^Y:up=^\:ll=^H^\: -l1|adm31|31|lsi adm31:is=\Eu\E0:\ - :al=\EE:am:bs:ce=\ET:cm=\E=%+ %+ :cl=\E*:co#80:dc=\EW:dl=\ER:\ - :ei=\Er:ho=^^:im=\Eq:li#24:mi:nd=^L:se=\EG0:so=\EG4:up=^K:\ - :kl=^H:kd=^J:ku=^K:kr=^L:ma=^K^P^L : -l2|adm2|lsi adm2:\ - :al=\EE:am:bs:cd=\EY:ce=\ET:cl=\E;:cm=\E=%+ %+ :co#80:dc=\EW:dl=\ER:\ - :ei=:ho=^^:ic=\EQ:im=:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:li#24:nd=^L:up=^K: -l3|adm3|3|lsi adm3:\ - :am:bs:cl=^Z:li#24:ma=^K^P:co#80: -l4|adm42|42|lsi adm42:vs=\EC\E3 \E3(:\ - :al=270\EE:am:bs:cd=\EY:ce=\ET:cl=\E;:cm=\E=%+ %+ :co#80:\ - :dc=\EW:dl=\ER:ei=\Er:im=\Eq:ip=6*:li#24:\ - :bt=\EI:nd=^L:se=\EG0:so=\EG4:ta=\t:up=^k:\ - :ma=^K^P:pc=\177: -la|adm3a|3a|lsi adm3a:\ - :am:bs:cm=\E=%+ %+ :cl=1^Z:co#80:ho=^^:li#24:ma=^K^P:nd=^L:up=^K: -lb|adm3a+|3a+:kl=^H:kd=^J:ku=^K:kr=^L:tc=adm3a: -# These mime1 entries refer to the Microterm Mime I or Mime II. -# The default mime is assumed to be in enhanced act iv mode. -m3|mime3a|mime1 emulating 3a:\ - :am@:ma=^X ^K^J^Z^P:ku=^Z:kd=^K:kl=^H:kr=^X:tc=adm3a: -m4|microterm|act4|microterm act iv:\ - :am:bs:cd=^_:ce=^^:cl=^L:cm=^T%.%.:co#80:li#24:nd=^X:up=^Z:ho=^]: -# The padding on sr and ta for act5 and mime is a guess and not final. -m5|microterm5|act5|microterm act v:\ - :uc=\EA:pt:ta=2^I:sr=3\EH:ku=^Z:kd=^K:kl=^H:kr=^X:ma=^Z^P^Xl^Kj:tc=act4: -# act5s is not tested and said not to work. -mS|act5s|skinny act5:ti=\EP:te=\EQ:li#48:co#39:tc=act5: -# Mimes using brightness for standout. Half bright is really dim unless -# you turn up the brightness so far that lines show up on the screen. -# uc is disabled to get around a curses bug, and should be put back in someday. -mf|mimefb|full bright mime1:so=^Y:se=^S:uc@:is=^S\E:tc=mime: -mh|mimehb|half bright mime1:so=^S:se=^Y:uc@:is=^Y\E:tc=mime: -mm|mime|mime1|mime2|mimei|mimeii|microterm mime1:\ - :al=80^A:am:bs:cd=^_:ce=^^:cl=\035^C:cm=^T%+^X%> 0%+P:co#80:\ - :dl=80^W:ta=2^I:li#24:nd=^X:pt:uc=^U:up=^z:ho=\035:do=^K:is=^S\E:\ - :ma=^X ^K^J^Z^P:ku=^Z:kd=^K:kl=^H:kr=^X:sr=3^R: -# These termcaps (for mime 2a) put the terminal in low intensity mode -# since high intensity mode is so obnoxious. -ms|mime2as|microterm mime2a (emulating an enhanced soroc iq120):\ - :al=20*^A:am:bs:cd=20*\EJ:ce=\EK:cl=\EL:cm=\E=%+ %+ :co#80:dc=\ED:\ - :dl=20*^W:kl=^H:kr=^L:ku=^K:kd=^J:ho=^^:is=\E):sr=\EI\ - :im=\EE:ei=^Z:ip=2:li#24:nd=^L:so=\E\072:se=\E;:up=\EI:\ - :us=\E6:ue=\E7: -# This is the preferred mode (but ^X can't be used as a kill character) -mv|mime2a|mime2av|microterm mime2a (emulating an enhanced vt52):\ - :al=20*^A:bs:cd=20*\EQ:co#80:ce=\EP:cl=\EL:cm=\EY%+ %+ :is=^Y\ - :dc=^N:dl=20*^W:ip=2:ei=^Z:ho=\EH:im=^O:kd=\EB:kl=\ED:kr=\EC:ku=\EA:\ - :li#24:nd=\EC:pt:se=\E9:so=\E8:up=\EA:sr=\EA:us=\E4:ue=\E5: -mx|mime3ax|mime1 emulating enhanced 3a:\ - :al=80^A:dl=80^W:pt:ce=^X:cd=^_:tc=mime3a: -n2|spin|nec spinwriter 5525|spinwriter:\ - :bs:co#136:hc:hd=\EU:hu=\ED:os:pt:so=\EA:se=\EB:\ - :if=/usr/lib/tabset/spinwriter: -pf|fox|perkin elmer 1100:if=/usr/lib/tabset/stdcrt:\ - :am:bs:cd=5.5*\EJ:ce=\EI:cl=132\EH\EJ:co#80:ho=\EH:li#24:\ - :ll=\EH\EA:nd=\EC:cm=\EX%+ \EY%+ :up=\EA:vb=^P^B^P^C: -po|owl|perkin elmer 1200:if=/usr/lib/tabset/stdcrt:\ - :al=5.5*\EL:am:bs:cd=5.5*\EJ:ce=5.5\EI:cl=132\EH\EJ:ho=\EH:ll=\EH\EA:\ - :cm=\EX%+ \EY%+ :co#80:dc=5.5*\EO:dl=5.5*\EM:ei=:ic=\EN:im=:ip=5.5*:\ - :kb=^h:in:li#24:nd=\EC:up=\EA:se?=\E!\200:so?=\E!^H:vb=^P^B^P^C:\ - :k1=\ERA:k2=\ERB:k3=\ERC:k4=\ERD:k5=\ERE:k6=\ERF:\ - :k7=\ERG:k8=\ERH:k9=\ERI:k0=\ERJ: -# -# qB|bc|bill croft homebrew:\ -# :am:bs:cm=\E=%+ %+ :cl=^Z:co#96:ho=^^:li#72:\ -# :nd=^L:up=^K:vb=: -# -#NOTE: bg can scroll, it just would rather not (ns) - rwells 3/13/81. -qB|bg|bg2.0|bgn|BBN BitGraph Terminal (no init):\ - :al=2*\E[L:bs:cd=150\E[J:ce=2\E[K:cl=150\E[H\E[J:cm=%i\E[%d;%dH:\ - :co#85:cs=\E[%i%d;%dr:dl=2*\E[M:\ - :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\ - :kd=\E[B:ke=\E>:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:\ - :l1=PF1:l2=PF2:l3=PF3:l4=PF4:\ - :li#64:nd=\E[C:ns:pt:se=\E[0m:so=\E[7m:up=\E[A:\ - :sc=\E7:rc=\E8:xn: -qB|bg|bg2.0nv|bgnv:BBN BitGraph Terminal (normal video):\ - :is=\E>\E[?5l\E[?7h:\ - :if=/usr/lib/tabset/vt100:tc=bgn: -qB|bg|bg2.0rv|bgrv:BBN BitGraph Terminal (reverse video):\ - :is=\E>\E[?5h\E[?7h:\ - :if=/usr/lib/tabset/vt100:tc=bgn: -qB|bg|bg1.25|BBN BitGraph terminal:\ - :al=2*\E[L:bs:cd=150\E[J:ce=2\E[K:cl=150\E[H\E[J:cm=%i\E[%d;%dH:\ - :co#85:dl=2*\E[M:\ - :is=\E<:\ - :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\ - :kd=\E[B:ke=\E>:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:\ - :l1=PF1:l2=PF2:l3=PF3:l4=PF4:\ - :li#64:nd=\E[C:ns:pt:se=\E[0m:so=\E[7m:up=\E[A: -qB|bg|bg1.25nv|:BBN BitGraph Terminal (normal video):\ - :is=\E<\E>\E[?5l\E[?7h:tc=bg1.25: -qB|bg|bg1.25rv|:BBN BitGraph Terminal (reverse video):\ - :is=\E<\E>\E[?5h\E[?7h:tc=bg1.25: -qN|nucterm|rayterm|NUC homebrew:\ - :am:bs:cl=1^L:li#24:co#80:nd=^C:up=^N:ho=^B:ll=^K:ce=^A:cd=^E: -qb|ex3000:\ - :li#24:co#80:ho=^Q: -qc|carlock|klc:\ - :al=^E:am:bs:ce=^U:cl=100^Z:cm=\E=%+ %+ :co#80:dc=\177:dl=^D:dm=:\ - :ed=:ei=^T:ho=^^:im=^T:li#24:nd=^L:se=^V:so=^V:up=^K:vb=\EV\EV: -qe|exidy|exidy2500|exidy sorcerer as dm2500:\ - :al=^P^J^X:am:bs:ce=^W:cl=^^:cm=^L%r%n%.%.:co#64:\ - :dc=\b:dl=^P^Z^X:dm=^P:ed=^X:ei=^X:ho=^B:ic=^\:\ - :im=^P:li#30:nd=^\:pt:so=^N:se=^X:up=^Z: -qn|netx|netronics:\ - :bs:cd=2000^F^E:ce=1600^E:cl=466^L:cm=\E=%+@%+@:co#64:ho=^D:\ - :li#16:ma=j^Jk^Pl :nd=\E+@A:pc=\200:sr=\E=@@^K:up=^K: -# This came from the comp ctr who got it from some user. Smart indeed! -qs|sexidy|exidy smart:\ - :li#24:co#64:cl=^l:ho=^q:nd=^s:up=^w:bs:bc=^a:ma=^x^J:kd=^S: -qu|ubell|ubellchar:if=/usr/staff/michael/term/startup:\ - :am:bs:pt:ce=\Ed:cl=^Z:cm=\E=%+ %+ :co#80:li#24:nd=^L:up=^K:\ - :ma=j^Jk^P^K^Pl :ho=^^: -qw|ttyWilliams:\ - :co#80:li#12:bc=^Y:do=^K:up=^Z:cl=^^:ce=^_:am:ho=^]:nd=^X: -qx|xitex|xitex sct-100:\ - :bs:cd=2000^F^E:ce=1600^E:cl=400^L:cm=\E=%+@%+@:co#64:ho=^D:\ - :li#16:ma=j^Jk^Pl :nd=\E+@A:pc=\200:sr=\E=@@^K:up=^K: -t3|ti|ti700|ti733|735|ti735|ti silent 700:\ - :bs:co#80:hc:os:dC#162: -t4|ti745|745|743|ti silent 745:\ - :bs:co#80:hc:os: -# There are some tvi's that require incredible amounts of padding and -# some that don't. I'm assuming 912 and 920 are the old slow ones, -# and 912b, 912c, 920b, 920c are the new ones that don't need padding. -v1|tvi912|912|920|tvi920|old televideo:if=/usr/lib/tabset/stdcrt:\ - :al=33*\EE:am:bs:ce=\ET:cm=\E=%+ %+ :cl=^Z:co#80:dc=\EW:dl=33*\ER:ei=:\ - :kb=^h:ku=^K:kd=^J:kl=^H:kr=^L:k0=^A@\r:k1=^AA\r:k2=^AB\r:k3=^AC\r:\ - :k4=^AD\r:k5=^AE\r:k6=^AF\r:k7=^AG\r:k8=^AH\r:k9=^AI\r:\ - :ho=^^:im=:ic=\EQ:li#24:nd=^L:pt:se=\Ek:so=\Ej:up=^K:us=\El:ue=\Em:\ - :ma=^K^P^L :sg=1:ug=1: -v2|912b|912c|920b|920c|tvi|new televideo:\ - :al=5*\EE:dl=5*\ER:tc=912: -# Note two things called "teleray". Reorder should move the common one -# to the front if you have either. A dumb teleray with the cursor stuck -# on the bottom and no obvious model number is probably a 3700. -y1|t3700|teleray|dumb teleray 3700:\ - :bs:cl=^L:co#80:li#24: -y3|t3800|teleray 3800 series: \ - :bs:cd=\EJ:ce=\EK:cl=^L:cm=\EY%+ %+ :co#80: \ - :do=\n:ho=\EH:li#24:ll=\EY7 :nd=\EC:pt:up=^K: -y6|t1061|t10|teleray|teleray 1061:if=/usr/lib/tabset/teleray:\ - :al=2*\EL:am:bs:cd=1\EJ:ce=\EK:cl=1^L:cm=\EY%+ %+ :co#80:\ - :dc=\EQ:dl=2*\EM:ei=:ho=\EH:ic=\EP:im=:ip=0.4*:\ - :k1=^Z1:k2=^Z2:k3=^Z3:k4=^Z4:k5=^Z5:k6=^Z6:k7=^Z7:k8=^Z8:\ - :li#24:nd=\EC:pt:se=\ER@:so= \ERD:\ - :is=\Ee\EU01^Z1\EV\EU02^Z2\EV\EU03^Z3\EV\EU04^Z4\EV\EU05^Z5\EV\EU06^Z6\EV\EU07^Z7\EV\EU08^Z8\EV\Ef:\ - :up=\EA:us=\ERH:ue=\ER@:xs:xt:sg=2:ug=1: -yf|t1061f|teleray 1061 with fast PROMs:\ - al=\EL:ip@:dl=\EM:tc=t1061: -rv|vidtx|Radio Shack VIDEOTEX:\ - :cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#32:li#16:nd=\EC:up=\EA: -ae|apple2e|Apple ][e with 80 column card:\ - :am:bs:cd=^K:ce=^]:cl=^L:cm=^^%r%+ %.:co#80:ho=^Y:\ - :ku=^_:kd=^J:kl=^H:kr=^\:kh=^Y:\ - :li#24:nd=^\:up=^_:xn:ma=^\ ^_^P^YH:pt: -# -# ---- -# Convention: First entry is two chars, first char is manufacturer, -# second char is canonical abbreviation for model or mode. -# Second entry is canonical abbreviation. -# Third entry is the one the editor will print with "set" command. -# Last entry is verbose description. -# Others are mnemonic synonyms for the terminal. -# -# If you absolutely MUST check for a specific terminal (this is discouraged) -# check for the 2nd entry (the canonical form) since all other codes are -# subject to change. The two letter codes are there for version 6 and are -# EXTREMELY subject to change, or even to go away if version 6 becomes for -# all practical purposes obsolete. -# -# Special manufacturer codes: -# M: Misc. (with only a few terminals) -# q: Homemade -# s: special (dialup, etc.) -# -# This file is to be installed with an editor script that moves the most -# common terminals to the front of the file. If the source is not available, -# it can be constructed by sorting -# the above entries by the 2 char initial code.
--- a/etc/termcap.ucb Mon Aug 13 08:51:05 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3460 +0,0 @@ -# Copyright (c) 1980, 1985, 1989 The Regents of the University of California. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. All advertising materials mentioning features or use of this software -# must display the following acknowledgement: -# This product includes software developed by the University of -# California, Berkeley and its contributors. -# 4. Neither the name of the University nor the names of its contributors -# may be used to endorse or promote products derived from this software -# without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# @(#)termcap.src 5.88 (Berkeley) 4/30/91 -# - -# Termcap source file -# John Kunze, Berkeley -# Craig Leres, Berkeley -# -# Please e-mail changes to termcap@berkeley.edu or uunet!ucbvax!termcap. -# -# << EOH - after reordering, above header lines survive and this line dies >> -# -# DESCRIPTION: -# This file describes capabilities of various terminals, as needed by -# software such as screen editors. It does not attempt to describe -# printing terminals very well, nor graphics terminals. Someday. -# See termcap(5) in the Unix Programmers Manual for documentation. -# -# Conventions: First entry is two chars, first char is manufacturer, -# second char is canonical name for model or mode. -# Third entry is the one the editor will print with "set" command. -# Last entry is verbose description. -# Others are mnemonic synonyms for the terminal. -# -# Terminal naming conventions: -# Terminal names look like <manufacturer> <model> - <modes/options> -# Certain abbreviations (e.g. c100 for concept100) are also allowed -# for upward compatibility. The part to the left of the dash, if a -# dash is present, describes the particular hardware of the terminal. -# The part to the right can be used for flags indicating special ROM's, -# extra memory, particular terminal modes, or user preferences. -# All names are always in lower case, for consistency in typing. -# -# The following are conventionally used flags: -# rv Terminal in reverse video mode (black on white) -# 2p Has two pages of memory. Likewise 4p, 8p, etc. -# w Wide - in 132 column mode. -# pp Has a printer port which is used. -# na No arrow keys - termcap ignores arrow keys which are -# actually there on the terminal, so the user can use -# the arrow keys locally. -# -# There are some cases where the same name is used for two different -# terminals, e.g. "teleray" or "2621" or "vt100". In these cases, -# if a site has one of these, they should choose a local default and -# bring that terminal to the front in the reorder script. This works -# because tgetent picks the first match in /etc/termcap. -# The list of names intentionally duplicated is: -# 2621, c108, dtc, hp2621, teleray, tvi, vt100. -# -# To easily test a new terminal description, put it in $HOME/.termcap -# and programs will look there before looking in /etc/termcap. -# You can also setenv TERMPATH to a list of full pathnames (separated -# by spaces or colons) to be searched by tgetent() in the order listed. -# The TERMCAP environment variable is usually set to the termcap -# entry itself to avoid reading files when starting up a program. -# -# If you absolutely MUST check for a specific terminal (this is discouraged) -# check for the 2nd entry (the canonical form) since all other codes are -# subject to change. The two letter codes are there for version 6 and are -# EXTREMELY subject to change, or even to go away if version 6 becomes for -# all practical purposes obsolete. We would much rather put in special -# capabilities to describe your terminal rather than having you key on the -# name. -# -# Special manufacturer codes: -# A: hardcopy daisy wheel terminals -# M: Misc. (with only a few terminals) -# q: Homemade -# s: special (dialup, etc.) -# -# Comments in this file begin with # - they cannot appear in the middle -# of a termcap entry. Individual entries are commented out by -# placing a period between the colon and the capability name. -# -# This file is to be installed with an editor script (reorder) -# that moves the most common terminals to the front of the file. -# If the source is not available, it can be constructed by sorting -# the above entries by the 2 char initial code. -# # -------------------------------- -# -# A: DAISY WHEEL PRINTERS -# -# The A manufacturer represents Diablo, DTC, Xerox, Qume, and other Daisy -# wheel terminals until such time as termcap distinguishes between them -# enough to justify separate codes. -# This is an "experimental" entry for the SRI Agiles. -# It has been tried in a minimal way -- the Agile did not blow up! -# However, it has not been exhaustively tested. -# Anyone who tries it and finds it wanting should get in touch with: -# Ralph Keirstead (ralph@sri-unix); -# EK352; SRI International; 333 Ravenswood Avenue; Menlo Park, CA 94025 -Aa|agile|agiles|sri agiles:\ - :bs:hc:os:pl:co#132:do=^J:kb=^H:up=\E\n:\ - :hu=\E0:hd=\E9:if=/usr/share/tabset/std:is=\EE\EF\EJ: -A6|1620|1720|450|ipsi|diablo 1620:\ - :do=^J:ct=\E2:st=\E1:ch=\E\t%i%.:\ - :if=/usr/share/tabset/xerox1720:\ - :kb=^H:le=^H:bs:co#132:hc:hu=\EU:hd=\ED:os:pt:up=\E\n: -A7|1620-m8|1640-m8|diablo 1620 w/8 column left margin:\ - :do=^J:co#124:is=\r \E9:tc=1620: -A8|1640|1740|630|1730|x1700|diablo|xerox|diablo 1640:\ - :if=/usr/share/tabset/xerox1730:\ - :us=\EE:ue=\ER:so=\EW:se=\E&:tc=1620: -Am|1640-lm|1740-lm|630-lm|1730-lm|x1700-lm|diablo-lm|xerox-lm|\ - diablo 1640 with idented left margin:\ - :if=/usr/share/tabset/xerox1730-lm:\ - :co#124:us=\EE:ue=\ER:so=\EW:se=\E&:tc=1620: -# DTC 382 with VDU. Has no cd so we fake it with ce. Standout works but -# won't go away without dynamite. The terminal has tabs, but I'm getting -# tired of fighting the braindamage. If no tab is set or the terminal's -# in a bad mood, it glitches the screen around all of memory. Note that -# return puts a blank ("a return character") in the space the cursor was -# at, so we use ^P return (and thus ^P newline for newline). Note also -# that if you turn off pt and let Unix expand tabs, curses won't work -# (current version) because it doesn't turn off this bit, and cursor -# addressing sends a tab for row/column 9. What a losing terminal! I -# have been unable to get tabs set in all 96 lines - it always leaves at -# least one line with no tabs in it, and once you tab through that line, -# it completely weirds out. -Ac|dtc|ps|dtc382|382:\ - :do=^J:al=^P^Z:am:le=^H:\ - :bs:co#80:ce=^P^U:cl=20^P^]:cm=%r^P^Q%.%.:dc=^X:\ - :dl=^P^S:ei=^Pi:ho=^P^R:im=^PI:ve=^Pb:vs=^PB:pc=\177:te=20^P^]:\ - :li#24:nd=^PR:.se=^P \200:.so=^P \002^PF:us=^P \020:ue=^P \200:\ - :up=^P^L:nc:xr:xs:da:db:.pt:cr=^P^M:cd=^P^U^P^S^P^S:\ - :if=/usr/share/tabset/dtc382: -Ad|dtc300s|300|300s|dtc 300s:\ - :ct=\E3:st=\E1:do=^J:\ - :kb=^h:le=^H:bs:co#132:hc:hu=\EH:hd=\Eh:os:pt:up=^Z: -Ag|gsi:\ - :le=^H:bs:co#132:hc:hd=\Eh:hu=\EH:os:pt:up=^Z:do=^J: -# This used to have :pl: - maybe they meant :pt:? -Aj|aj830|aj832|aj|anderson jacobson:\ - :do=^J:le=^H:bs:hc:hd=\E9:hu=\E8:os:up=\E7: -# From Chris Torek <chris@gyre.umd.edu> Thu, 7 Nov 85 18:21:58 EST -AJ|aj510|AJ510|Anderson-Jacobson model 510:\ - :ic=:ip=.1*:so=\E"I:us=\E"U:cd=\E'P:ce=\E'L:cl=^L:cm=\E#%+ %+ :\ - :dl=2*\E&D:ue=\E"U:co#80:li#24:se=\E"I:al=2*\E&I:im=\E'I:ei=\E'J:\ - :dc=.1*\E'D:up=\EY:nd=\EX:bs:am:mi:ti=\E"N:te=\E"N:\ - :ku=\EY:kd=\EZ:kl=\EW:kr=\EX:pc=\177: -# From cbosg!ucbvax!pur-ee!cincy!chris Thu Aug 20 09:09:18 1981 -# This is incomplete, but it's a start. -An|5520|nec|spinwriter|nec 5520:\ - :ct=\E3:st=\E1:do=^J:kb=^h:le=^H:bs:co#132:hc:hu=\E]s\E9\E]W:\ - :hd=\E]s\n\E]W:os:pt:up=\E9: -Aq|qume5|qume|Qume Sprint 5:\ - :ct=\E3:st=\E1:do=^J:\ - :kb=^h:le=^H:bs:co#80:hc:hu=\EH:hd=\Eh:os:pt:up=^Z: -Ar|q102|qume102|Qume 102:\ - :al=\EE:am:bs:bt=\EI:\ - :cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :co#80:ct=\E3:\ - :dc=\EW:dl=\ER:do=^J:ei=:ho=^^:ic=\EQ:im=:\ - :k0=^A@\r:k1=^AA\r:k2=^AB\r:k3=^AC\r:kd=^J:kl=^H:kr=^L:ku=^K:\ - :le=^H:li#24:ma=^K^P^L :nd=^L:\ - :se=\EG0:sg#1:so=\EG4:st=\E1:\ - :ue=\EG0:ug#1:up=^K:us=\EG8: -# From ucbvax!mtxinu!sybase!tim (Tim Wood) Fri Sep 27 10:25:24 PDT 1985 -# This entry supports line and character insert and delete, scroll up and -# down and the arrow keys. To use it, perform the following on your qvt-101 -# 1) enter SET-UP mode, select the SET 3 line; -# 2) move the cursor to the EMULATION item and hit SPACE -# until QVT-101B appears -# 3) enter SHIFT-S -# 4) exit SET-UP - the terminal is now configured -Aq|q101|qvt101|qvt-101|Qume 101 $310 special:\ - :al=\EE:am:bt=\EI:ce=\Et:cl=\E*:dc=\EW:\ - :dl=\ER:do=^J:ic=\EQ:ei=:im=:md=\E(:me=\EG0:mh=\E):\ - :le=^H:bs:cm=\E=%+ %+ :cl=1^Z:co#80:ho=^^:li#24:ma=^K^P:nd=^L:ku=^K:\ - :vs=\EM4\040\200\200\200:mr=\EG4:ms:so=\EG4:se=\EG1: -# I suspect the xerox1720 is the same as the diablo 1620. -Ax|x1720|x1700|1700|x1750|xerox 1720:\ - :co#132:le=^H:bs:hc:os:pt:do=^J:ct=\E2:st=\E1: -# # -------------------------------- -# -# B: AT&T ATT -# -# AT&T Teletype 5410 Terminal (a.k.a. 4410) -# From: carvalho%kepler@Berkeley.EDU (Marcio de Carvalho) -# Date: Thu, 26 Feb 87 09:16:50 PST -# -# Although the 5410 supports labels, it blanks the screen after -# each label is programmed creating to much visual activity. -# To use the labels, use FL=\E[%d;00q%-16s -# -Ba|5410|4410|tty5410|att4410|AT&T Teletype 5410 terminal with 80 columns:\ - :al=\E[L:am:bs:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\ - :cm=5\E[%i%2;%2H:co#80:dc=\E[P:dl=\E[M:im=:ei=:ic=\E[@:\ - :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\ - :li#24:nd=\E[C:se=\E[m:so=\E[2;7m:sr=\EM:\ - :ue=\E[m:up=\E[A:us=\E[4m:EE=\E[m:BO=\E[0;7m:DS=\E[2m:\ - :KM=/usr/lib/ua/kmap.5410:is=\E[0m^O\E[?6l:kn#8:\ - :k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k4=\EOg:k6=\EOh:\ - :k7=\EOi:k8=\EOj:ko=nd,up,ho: -# AT&T 630 MTG DMD from muller%sdcc7@ucsd.edu (Keith Muller) -Bi|att630|dmd630|ATT630|630DMD|630dmd|630MTG|AT&T 630 windowing terminal:\ - :am:da:db:ms:bs:co#80:it#8:li#60:lm#0:\ - :up=\E[A:do=\E[B:nd=\E[C:le=\b:UP=\E[%dA:DO=\E[%dB:RI=\E[%dC:\ - :LE=\E[%dD:cm=\E[%i%d;%dH:ho=\E[H:bt=\E[Z:\ - :sf=\n:sr=\EM:SF=\E[%dS:SR=\E[%dT:us=\E[4m:ue=\E[m:so=\E[7m:se=\E[m:\ - :mr=\E[7m:mh=\E[2m:mb=\E[5m:me=\E[m:ce=\E[K:cd=\E[J:cl=\E[H\E[J:\ - :dc=\E[P:dl=\E[M:al=\E[L:DC=\E[%dP:DL=\E[%dM:AL=\E[%dL:\ - :ic=\E[@:IC=\E[%d@:im=:ei=:sc=\E7:rc=\E8:i2=\E[m:rs=\Ec:\ - :pf=\E[?4i:po=\E[?5i:\ - :kb=\b:kC=\E[2J:kh=\E[H:ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D: -Bj|dmd630-24|att630-24|ATT630-24|630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines:\ - :li#24:tc=att630: -Bk|dmd615|att615|ATT615|615DMD|615MTG|AT&T 615 windowing terminal 80 column:\ - :li#24:tc=att630: -Bl|dmd615-w|att615-w|ATT615-w|615DMD-w|615MTG-w|AT&T 615 windowing terminal 132 column:\ - :li#24:co#132:tc=att630: -Bm|dmd620|att620|ATT620|620DMD|620MTG|AT&T 620 windowing terminal 80 column:\ - :li#24:tc=att630: -Bn|dmd620-w|att620-w|ATT620-w|620DMD-w|620MTG-w|AT&T 620 windowing terminal 132 column:\ - :li#24:co#132:tc=att630: -# AT&T Teletype 5420 Terminal (a.k.a. 4415) June 5, 1985 -Bb|5420|4415|tty5420|att4415|AT&T Teletype 5420 terminal:\ - :al=\E[L:am:bs:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\ - :cm=\E[%i%2;%2H:co#80:dc=\E[P:dl=\E[M:im=\E[4h:ei=\E[4l:\ - :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\ - :li#24:nd=\E[C:se=\E[m:so=\E[2;7m:sr=\EM:\ - :ue=\E[m:up=\E[A:us=\E[4m:EE=\E[m:BO=\E[0;7m:DS=\E[2m:\ - :KM=/usr/lib/ua/kmap.5420:\ - :is=\E[0m^O\E[1;2;3;4;6l\E[12;13;14;20l\E[?6;97;99l\E[?7h\E[4i\Ex\E[25;1j\212\E[8;0j\E[9;0j\E[10;0j\E[19;1j:\ - :db:mi:pt:kn#8:k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k5=\EOg:k6=\EOh:\ - :k7=\EOi:k8=\EOj:ve=\E[11;0j:\ - :vs=\E[11;1j:ko=bt,nd,up,dc,dl,ho,im,al: -# AT&T Teletype 5425 Terminal (a.k.a 4425) June 5, 1985 -Bc|5425|4425|tty5425|att4425|AT&T Teletype 5425:\ - :FL=\E[%d;00q%-16s\E~:FE=\E|:KM=/usr/lib/ua/kmap.5425:\ - :is=\E[0m^O\E[1;2;3;4;6l\E[12;13;14;20l\E[?6l\E[?7h\E[4i\E[9;0j\E[10;0j\E[11;0j\E[21;1j\E[25;1j\212:\ - :ve=\E[12;0j:vs=\E[12;1j:tc=5420: -Bd|t4|4420|tty4420|Teletype 4420:\ - :vs=\ER:ve=\ER:am:da:db:mi:cr=\EG:\ - :im=:ei=:dm=:ed=:nl=\EG\EB:li#23:\ - :co#80:cl=\EH\EJ:cd=\EJ:cm=\EY%+ %+ :\ - :bs:up=\E7:do=\EB:nd=\EC:al=\EL:\ - :dl=\EM:dc=\EP:ic=\E\136:sf=\EH\EM\EY5 :sr=\ET:kb=^H: -Be|pc6300plus|6300|6300plus:\ - :al=\E[1L:am:bs:cd=\E[0J:ce=\E[0K:cl=\E[2J\E[H:cm=\E[%i%2;%2H:co#80:\ - :dc=\E[1P:dl=\E[1M:do=\E[B:ei=:ho=\E[H:\ - :ic=\E[1@:im=:kb=\10:kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:li#24:\ - :k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k5=\EOg:k6=\EOh:k7=\EOi:k8=\EOj:\ - :k9=\EOk:k10=\EOu:nd=\E[C:se=\E[m:so=\E[7m:ue=\E[m:up=\E[A:us=\E[4m:\ - :EE=\E[m:BO=\E[0;7m:CV=\E[=C:CI=\E[=1C:KM=/usr/lib/ua/kmap.s5: -# AT&T 6386 decompiled and hacked from SVR3.1 terminfo -# From: caron@polya.Stanford.EDU (Ilan G. Caron) -# Problems: (1) The mode lines are screwed up - they're not in standout -# (an extraneous ESC-RD sequence is prepended to each mode line). -# (2) Cursor addressing into the mode line is often off-by-one, -# in particular, when the percentage indicator is updated. -# (3) When reverting to a single window (C-x 1), the display -# needs refreshing (an extraneous ESC-S seems to be generated). -# (The above 3 might be manifestations of the same problem). -# (4) Deletes sometime don't, especially when done fast - does this -# suggest that I need to pad something? -Bh|AT386|at386|386AT|386at|at/386 console:\ - :am:bw:eo:xo:Co#8:NC#3:co#80:li#25:pa#64:kn#6:\ - :@7=\E[Y:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\ - :F1=\EOZ:F2=\EOA:IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:\ - :SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:\ - :ac=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~:\ - :ae=\E[10m:al=\E[1L:as=\E[12m:bl=^G:cd=\E[J:ce=\E[K:\ - :cl=\E[2J\E[H:cm=\E[%i%2;%2H:cr=\r:dc=\E[P:dl=\E[1M:\ - :do=\E[B:ho=\E[H:ic=\E[1@:is=\E[0;10;39m:k1=\EOP:\ - :k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOT:k6=\EOU:k7=\EOV:\ - :k8=\EOW:k9=\EOX:k;=\EOY:kB=^]:kC=\E[2J:kD=\E[P:\ - :kI=\E[@:kM=\E0:kN=\E[U:kP=\E[V:kb=\b:kd=\E[B:kh=\E[H:\ - :kl=\E[D:kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:\ - :me=\E[0;10m:mk=\E[9m:mr=\E[7m:nd=\E[C:op=\E[0m:\ - :se=\E[m:sf=\E[S:so=\E[43;30m:ta=\t:ue=\E[m:up=\E[A:\ - :sr=\E[T:TC=\E[%d@:IC=\E[%d@:\ - :us=\E[4m:vb=^G:bc=\E[D:nl=\E[B:ko=le,do,nd,up,dc,h -Bf|s4|PC7300|unixpc|pc7300|7300|3b1|Safari 4:\ - :so=\E[2;7m:DS=\E[2m:XS=\E[9m:KM=/usr/lib/ua/kmap.s4:tc=pc6300plus: -# AT&T Teletype 610 Terminal -Bg|b610|610|610bct|tty610:\ - :CV=\E[25h:CI=\E[25l:KM=/usr/lib/ua/kmap.s4:\ - :FL=\E[%d;00q%-16s\E[0p:FE=\E[2p:cl=\E[1;1H\E[J:\ - :is=\E[0m^O\E[25;1|^J\E[8;0|\E[4;13;20l\E[?5l\E[12h\E[?7h\E[?4i:\ - :ve=\E[?12l:vs=\E[?12h:tc=5420: -# # -------------------------------- -# -# C: CONTROL DATA -# -Ca|cdc456|cdc:\ - :do=^J:li#24:co#80:cl=^Y^X:nd=^L:up=^Z:le=^H:bs:\ - :cm=\E1%+ %+ :ho=^Y:al=\E\114:dl=\E\112:ce=^V:cd=^X:am: -Cc|cdc456tst:\ - :do=^J:li#24:co#80:cl=^y^x:le=^H:bs:cm=\E1%+ %+ :am: -# # -------------------------------- -# -# D: DATAMEDIA -# -D0|dm1520|dm1521|1521|1520|datamedia 1520:\ - :do=^J:am:le=^H:bs:cd=^K:ce=^]:cl=^L:cm=^^%r%+ %+ :co#80:ho=^Y:\ - :ku=^_:kd=^J:kl=^H:kr=^\:kh=^Y:\ - :li#24:nd=^\:up=^_:xn:ma=^\ ^_^P^YH:pt: -D2|dm2500|datamedia2500|2500|datamedia 2500:\ - :do=^J:al=15^P\n^X^]^X^]:le=^H:bs:ce=^W:cl=^^^^\177:\ - :cm=^L%r%n%.%.:co#80:dc=10*^P\b^X^]:dl=10*^P^Z^X^]:\ - :dm=^P:ed=^X^]:ei=10\377\377^X^]:ho=^B:ic=10*^P^\^X^]:\ - :im=^P:li#24:nc:nd=^\:pc=\377:so@=^N:se=^X^]:up=^Z: -D3|dm3025|datamedia 3025a:\ - :MT:is=\EQ\EU\EV:do=^J:\ - :al=130\EP\n\EQ:le=^H:bs:cd=2\EJ:ce=\EK:cl=2\EM:cm=\EY%r%+ %+ :\ - :co#80:dc=6\b:dl=130\EP\EA\EQ:dm=\EP:ed=\EQ:ei=\EQ:ho=\EH:\ - :im=\EP:ip=6:li#24:nd=\EC:pt:so=\EO1:se=\EO0:up=\EA: -D4|3045|dm3045|datamedia 3045a:\ - :is=\EU\EV:do=^J:\ - :am:le=^H:bs:cd=2\EJ:ce=\EK:cl=2\EM:cm=\EY%r%+ %+ :co#80:\ - :dc=6\EB:dm=:ed=:ei=\EP:ho=\EH:ic=:im=\EP:ip=6:\ - :k0=\Ey\r:k1=\Ep\r:k2=\Eq\r:k3=\Er\r:k4=\Es\r:\ - :k5=\Et\r:k6=\Eu\r:k7=\Ev\r:k8=\Ew\r:k9=\Ex\r:\ - :kh=\EH:ku=\EA:kr=\EC:li#24:nd=\EC:pc=\177:pt:eo:ul:up=\EA:xn: -# dt80/1 is a vt100 lookalike, but it doesn't seem to need any padding. -D5|dt80|dmdt80|dm80|datamedia dt80/1:\ - :do=^J:cd=\E[J:ce=\E[K:cl=\E[2J\E[H:cm=%i\E[%d;%dH:ho=\E[H:\ - :nd=\E[C:sr=\EM:so=\E[7m:se=\E[m:up=\E[A:us=\E[4m:ue=\E[m:tc=vt100: -# except in 132 column mode, where it needs a little padding. -# This is still less padding than the vt100, and you can always turn on -# the ^S/^Q handshaking, so you can use vt100 flavors for things like -# reverse video. -D6|dt80w|dmdt80w|dm80w|datamedia dt80/1 in 132 char mode:\ - :do=^J:cd=20\E[0J:co#132:ce=20\E[0K:\ - :cm=5\E[%i%d;%dH:cl=50\E[H\E[2J:up=5\E[A:tc=dmdt80: -# # -------------------------------- -# -# H: HAZELTINE -# -# Since nd is blank, when you want to erase something you -# are out of luck. You will have to do ^L's a lot to -# redraw the screen. h1000 is untested. It doesn't work in -# vi - this terminal is too dumb for even vi. (The code is -# there but it isn't debugged for this case.) -H1|h1000|hazeltine 1000:\ - :le=^H:bs:ho=^K:cl=^L:nd= :co#80:li#12:do=^J: -# Note: the h1552 appears to be the first Hazeltine terminal which -# is not braindamaged. It has tildes and backprimes and everything! -# Be sure the auto lf/cr switch is set to cr. -H2|h1552|hazeltine 1552:\ - :do=^J:al=\EE:dl=\EO:k1=\EP:l1=blue:k2=\EQ:\ - :l2=red:k3=\ER:l3=green:tc=vt52: -H3|h1552rv|hazeltine 1552 reverse video:\ - :do=^J:so=\ES:se=\ET:tc=h1552: -# From cbosg!ucbvax!pur-ee!cincy!chris Thu Aug 20 09:09:18 1981 -H4|h1420|hazeltine 1420:\ - :do=^J:le=^H:bs:am:li#24:co#80:al=\E^Z:dl=\E^S:cd=\E^X:cl=\E\034:\ - :up=\E^L:nd=^P:ce=\E^O:ta=^N:cm=\E^Q%r%.%+ :so=\E\037:se=\E^Y: -# New "safe" cursor movement (11/87) from cgs@umd5. Prevents freakout with -# out-of-range args and tn3270. No hz since it needs to receive ~'s. -H5|h1500|hazeltine 1500:\ - :al=40~^Z:am:bs:cd=10~^X:ce=~^O:cl=~^\:cm=~^Q%r%>^^ %+`%+`:\ - :co#80:dl=40~^S:do=~^K:ho=~^R:kh=~^R:kr=^P:ku=~^L:kd=^J:kl=^H:\ - :le=^H:li#24:nd=^P:so=~^_:se=~^Y:up=~^L:.cm=~^Q%r%.%.: -# h1510 assumed to be in sane escape mode. Else use h1500. -H6|h1510|hazeltine 1510:\ - :do=^J:al=\E^Z:am:le=^H:bs:cd=\E^X:ce=\E^O:cl=\E^\:cm=\E^Q%r%.%.:\ - :co#80:dl=\E^S:do=\E^K:hz:li#24:nd=^P:.se=\E^_:.so=\E^Y:up=\E^L: -H8|h1520|hazeltine 1520:\ - :do=^J:al=~^Z:am:le=^H:bs:cd=~^X:ce=~^O:cl=~\034:cm=~^Q%r%.%.\200:\ - :co#80:dl=~^S:do=~^K:hz:li#24:nd=^P:se=~^Y:so=~\037:up=~^L:ho=~^R: -# Note: h2000 won't work well because of a clash between upper case and ~'s. -H7|h2000|hazeltine 2000:\ - :do=^J:al=6~^z:am:le=^H:bs:cl=6~^\:cm=~^q%r%.%.:co#74:\ - :dl=6~^s:ho=~^r:li#27:nc:pc=\177: -# Hazeltine esprit entries from Univ of Utah Tue Feb 1 06:39:37 1983 -# J.Lepreau, lepreau@utah-cs, harpo!utah-cs!lepreau -HE|esprit|hazeltine esprit:\ - :al=40\E^Z:bs:cd=5\E^X:ce=\E^O:cl=\E^\:cm=\E^Q%r%>^^ %+`%+`:co#80:\ - :dl=40\E^S:do=\E^K:ho=\E^R:li#24:nd=^P:se=\E^Y:so=\E^_:up=\E^L: -HF|esprit-am|hazeltine esprit auto-margin:\ - :am:tc=esprit: -# # -------------------------------- -# -# I: IBM -# -# ibm61 and ibm63 from Warren Gish (cswarren@violet.berkeley.edu). -# installed 12-17-86. -# 3161 only opens a new line if a null line exists on the screen. -# To ensure a null line exists, an SBA is performed, positioning the -# Buffer Address in column 0 of the last line. The last line is then -# cleared to nulls, BA mode is cancelled, and the new line is opened -# at the cursor position. -I1|ibm61|ibm3161|3161|IBM 3161-11:\ - :am:bs:bw:cl=\EL:li#24:co#80:cd=\EJ:al=\EX7 \EI\E Z\EN:\ - :ce=\EI:cm=\EY%+\040%+\040:nd=\EC:up=\EA:do=\EB:\ - :dl=\EO:dc=\EQ:kd=\EB:ku=\EA:kl=\ED:kr=\EC:kh=\EH:\ - :us=\E4\102:ue=\E4\100:so=\E4\110:se=\E4\100: -#From seth@sirius.ctr.columbia.edu Sun May 20 11:02:34 1990 -I3|ibm3163|ibm63|i3163|3163|IBM 3163:\ - :al=\EN:am:bs:bt=\E2:cd=\EJ:ce=\EI:cl=\EL:\ - :cm=\EY%+\040%+\040:co#80:ct=\E 1:dc=\EQ:\ - :dl=\EO:do=\EB:ds=\E#\072:es:fs=\E=:ho=\EH:\ - :hs:ic=\EP:kA=\EN:kB=\E2:kC=\EQ:\ - :kD=\EQ:kE=\EI:kI=\EI:kL=\EO:kS=\EJ:\ - :kb=^H:kd=\EB:kl=\EB:kr=\EC:ku=\EA:\ - :le=\ED:li#24:mb=\E4D:md=\E4H:me=\E4@:\ - :mk=\E4P:mr=\E4A:nd=\EC:\ - :ds=\E#\::es:fs=\E=\E#;:hs:ts=\E=:ws#80:\ - :se=\E4@:so=\E4I:ue=\E4@:up=\EA:us=\E4B: -I4|ibm|ibm3101|3101|i3101|IBM 3101-10:\ - :do=^J:ct=\EH:st=\E0:\ - :if=/usr/share/tabset/ibm3101:\ - :am:le=^H:bs:cl=\EK:li#24:co#80:nd=\EC:up=\EA:cd=\EJ:ce=\EI:\ - :kd=\EB:kl=\ED:kr=\EC:ku=\EA:ho=\EH:cm=\EY%+\40%+\40:pt: -Ia|ibm-apl|apl|IBM apl terminal simulator:\ - :li#25:tc=dm1520: -# ibmapa* and ibmmono entries come from ACIS 4.3 distribution -Ib|rtpc|ibmapa16|ibm6155|IBM 6155 Extended Monochrome Graphics Display:\ - :ts=\Ej\EY@%+ \Eo:ds=\Ej\EY@\40\EI\Ek:li#32:tc=ibmconsole: -# Advanced Monochrome (6153) and Color (6154) Graphics Display: -Ic|ibmapa8c|ibmapa8|ibm6154|ibm6153|IBM 6153/4 Advanced Graphics Display:\ - :ts=\Ej\EY?%+ \Eo:ds=\Ej\EY?\40\EI\Ek:li#31:tc=ibmconsole: -Id|ibmapa8c-c|ibm6154-c|IBM 6154 Advanced Color Graphics Display color termcap:\ - :ts=\Ej\EY?%+ \Eo:ds=\Ej\EY?\40\EI\Ek:li#31:mh=\EF\Ef7;:tc=ibmega-c: -Ie|ibmmono|ibmconsole|ibm5151|IBM workstation monochrome:\ - :se=\Ez:so=\EZ:sr=\EA:al=\EL:dl=\EM:\ - :kb=^H:us=\EW:ue=\Ew:\ - :k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:k6=\EP:k7=\EQ:k8=\ER:k9=\EY:\ - :k0=\E<:I0=f10:kI=\000:kh=\EH:kR=\EG:kP=\Eg:kF=\EE:kN=\EE:\ - :md=\EZ:me=\Ew\Eq\Ez\EB:mk=\EF\Ef0;\Eb0;:mr=\Ep:\ - :ts=\Ej\EY8%+ \Eo:fs=\Ek:ds=\Ej\EY8\40\EI\Ek:es:hs:sb:tc=ibm3101: -If|ibmega-c|ibm5154-c|IBM Enhanced Color Display color termcap:\ - :se=\EB:so=\EF\Ef3;:ue=\EB:us=\EF\Ef2;:tc=ibmconsole: -#from marc pawliger--marc@ibminet.awdpa.ibm.com -#also in /usr/lpp/bos/bsdsysadmin. -Ig|hft-c|ibm8512|ibm8513|IBM High Function Terminal:\ - :co#80:li#25:am:ht:\ - :cm=\E[%i%d;%dH:ti=\E[20;4l\E[?7h\Eb:te=\E[20h:\ - :nd=\E[C:up=\E[A:do=^J:ho=\E[H:\ - :ec=\E[%dX:\ - :cl=\E[H\E[J:cd=\E[J:el=\E[K:\ - :AL=\E[%dL:DL=\E[%dM:al=\E[L:dl=\E[M:\ - :im=\E[4h:ei=\E[4l:mi:\ - :dm=\E[4h:ed=\E[4l:\ - :so=\E[7m:se=\E[m:ul=\E[4m:ue=\E[m:ms:\ - :md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:\ - :ac=^N:ae=^O:sc=\E[s:rc=\E[u:\ - :kb=\E[D:kf=\E[C:ku=\E[A:kd=\E[B:kh=\E[H:\ - :k1=\E[001q:k2=\E[002q:k3=\E[003q:k4=\E[004q:k5=\E[005q:\ - :k6=\E[006q:k7=\E[007q:k8=\E[008q:k9=\E[009q:k0=\E[010q:\ - :is=\Eb\E[m^O\E[?7h:rs=\Eb\E[m^O\E[?7h\E[H\E[J: -Ih|hft|AIWS High Function Terminal:\ - :al=\E[L:cr=^M:do=^J:sf=^J:bl=^G:am:le=^H:cd=\E[J:\ - :ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:co#80:li#25:\ - :dc=\E[P:dl=\E[M:ho=\E[H:\ - :ic=\E[@:im=\E6:ei=\E6:\ - :md=\E[1m:mr=\E[7m:mb=\E[5m:mk=\E[8m:me=\E[0m:\ - :ku=\E[A:kd=\E[B:kl=\E[D:kr=\E[C:kh=\E[H:kb=^H:\ - :nd=\E[C:ta=^I:up=\E[A:xo:\ - :ue=\E[m:us=\E[4m:se=\E[m:so=\E[7m:\ - :kP=\E[159q:kN=\E[153q:\ - :k1=\E[001q:k2=\E[002q:k3=\E[003q:k4=\E[004q:\ - :k5=\E[005q:k6=\E[006q:k7=\E[007q:k8=\E[008q:\ - :k9=\E[009q:ka=\E[010q: -# # -------------------------------- -# -# M: MISCELLANEOUS TERMINALS -# -# The tab 132 uses xon/xoff, so no padding needed. -# ks/ke have nothing to do with arrow keys. -# is sets 80 col mode, normal video, autowrap on (for am). -# Seems to be no way to get rid of status line. -M0|abm80|amtek business machines 80:\ - :do=^J:al=\E^Z:am:le=^H:bs:cd=\E^X:ce=\E^O:cl=\E^\:cm=\E^Q%r%+ %+ :\ - :co#80:dl=\E^S:do=\E^K:li#24:nd=^P:.so=\E^_:.se=\E^Y:up=\E^L:\ - :bw:bt=^T:ho=\E^R: -M1|tab132|tab|tab132/15|tab 132/15:\ - :is=\E[?7h\E[?3l\E[?5l:dN@:ks@:ke@:do=^J:\ - :da:db:al=\E[L:dl=\E[M:dc=\E[P:ei=\E[4l:im=\E[4h:cm=\E[%i%d;%dH:\ - :ku=\E[A:kd=\E[B:kl=\E[D:tc=vt100: -M2|tab132w:\ - :co#132:is=\E[?7h\E[?3h\E[?5l:tc=tab132: -M3|tab132rv:\ - :is=\E[?7h\E[?3l\E[?5h:tc=tab132: -M4|tab132wrv:\ - :is=\E[?7h\E[?3h\E[?5h:tc=tab132w: -# This used to say "de#001202" which presumably refers to the stty bits -# that need to be set for some version of Unix. We need the real delay -# requirements in MS. -M5|mw2|Multiwriter 2:\ - :do=^J:co#132:hc:os: -M6|trs80|trs-80|radio shack trs-80 Model I:\ - :do=^J:am:le=^H:bs:co#64:li#16: -M7|d800|Direct 800/A:\ - :do=^J:co#80:li#24:am:cl=\E[1;1H\E[2J:le=^H:bs:cm=\E[%i%d;%dH:\ - :nd=\E[C:up=\E[A:ce=\E[K:cd=\E[J:\ - :so=\E[7m:se=\E[0m:us=\E[4m:ue=\E[0m:xs:vs=\E[>12l:ve=\E[>12h:\ - :sf=\ED:sr=\EM:da:db:as=\E[1m:ae=\E[0m:ms:pt:\ - :kl=\E[D:kr=\E[C:ku=\E[A:kd=\E[B:\ - :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\ - :k5=\EOT:k6=\EOU:k7=\EOV:k8=\EOW: -M8|vc404|volker-craig 404:\ - :do=^J:am:le=^H:bs:cd=40^W:ce=20^V:cl=40^X:cm=^P%+ %+ :co#80:\ - :ho=40^Y:kd=^J:kl=^H:kr=^U:ku=^Z:li#24:ma=^Z^P^U :nd=^U:up=^Z: -M9|vc404-s|volker-craig 404 w/standout mode:\ - :do=^J:se=^O:so=^N:tc=vc404: -MA|vc404-na|volker-craig 404 w/no arrow keys:\ - :ma@:kr@:ku@:tc=vc404: -MB|vc404-s-na|volker-craig 404 w/standout mode and no arrow keys:\ - :se=^O:so=^N:tc=vc404-na: -# missing in vc303a and vc303 descriptions: they scroll 2 lines at a time -MC|vc303a|vc403a|volker-craig 303a:\ - :do=^J:am:le=^H:bs:ce=20^V:cl=40^X:co#80:ho=40^Y:kd=^J:kl=^H::kr=^U:\ - :ku=^Z:li#24:ll=^P^@W:nd=^U:ns:up=^Z: -MD|vc303|vc103|vc203|volker-craig 303:\ - :do=^J:am:le=^H:bs:cl=40^L:co#80:ho=40^K:kd=^J:kl=^H:\ - :kr=^I:ku=^N:li#24:ll=^O\200W:nd=^I:ns:up=^N: -# Test version for Falco ts-1. See "arpavax.hickman@ucb" for info -ME|falco|ts1|ts-1|falco ts-1:is=\Eu\E3:\ - :do=^J:al=\EE:am:bs:ce=\ET\EG0^h:cm=\E=%+ %+ :cl=\E*:cd=\EY:co#80:\ - :dc=\EW:dl=\ER:ei=\Er:ho=^^:im=\Eq:k0=^A0\r:kd=^J:kl=^H:pt:\ - :kr=^L:ku=^K:li#24:nd=^L:se=\Eg0:so=\Eg1:up=^K:us=\Eg1:ue=\Eg0: -MF|falco-p|falco ts-1sp|falco with paging option:\ - :is=\EZ\E3\E_c:\ - :al=\EE:am:bs:ce=\ET\EG0^H\Eg0:cl=\E*:cd=\EY:co#80:dc=\EW:\ - :dl=\ER:kd=\E[B:kl=\E[D:ei=\Er:im=\Eq:pt:db:\ - :kr=\E[C:ku=\E[A:li#24:nd=\E[C:se=\Eg0:so=\Eg4:\ - :up=\E[A:us=\Eg1:ti=\E_d:te=\E_b:\ - :ue=\Eg0:do=\E[B:cm=\E=%+ %+ :ms:kh=\E[H:da:mi:bt=\EI: -#NOTE: bg can scroll, it just would rather not (ns) - rwells 3/13/81. -# (Shouldn't you take out ns and put in an nl instead? - mrh) -MG|bg|bitgraph|BBN BitGraph terminal:\ - :do=^J:al=2*\E[L:bs:cd=150\E[J:ce=2\E[K:\ - :cl=150\E[H\E[J:cm=%i\E[%d;%dH:co#85:\ - :dl=2*\E[M:k0=\EP:k1=\EQ:k2=\ER:k3=\ES:kd=\EB:ke=\E>:kl=\ED:kr=\EC:\ - :ks=\E=:ku=\EA:li#64:nd=\E[C:ns:pt:se=\E[0m:so=\E[7m:up=\E[A:sf=280\n: -MH|d132|datagraphix|datagraphix 132a:\ - :do=^J:co#80:li#30:cl=^l:ho=\Et:da:db:sf=\Ev:sr=\Ew:\ - :up=\Ek:nd=\El:vs=\ex:ve=\Em\En:\ - :al=\E3:ic=\E5:dc=\E6:in:ic=\E5: -MI|soroc|Soroc 120:\ - :do=^J:cd=\EY:ce=\ET:cl=2\E*:ma=^K^P^R^L^L :\ - :kl=^H:ku=^K:kr=^L:kd=^J:tc=adm3a: -# From: ma179abu%sdcc3@sdcsvax.ucsd.edu (Bill Houle) -MI|iq140|soroc140|Soroc IQ140 with inverse & dim:\ - :ic=\EQ:dc=\EW:al=\EE:dl=\ER:ce=\ET:cd=\EY:cl=\E+:cm=\E=%+ %+ :\ - :up=^K:do=^J:le=^H:nd=^L:ho=^^:ta=\Ei:ma=^Kk^Jj^Hh^Ll^^h:am:bs:\ - :co#80:li#24:ei=:im=:kb=^H:kh=^^:ku=^K:kd=^J:kl=^H:kr=^L:\ - :k0=^AI:k1=^A@:k2=^AA:k3=^AB:k4=^AC:k5=^AD:k6=^AE:k7=^AF:\ - :k8=^AG:k9=^AH:se=\E:so=\E:us=\E):ue=\E(: -# tec is untested, and taken from CB/Unix virtual terminal driver. -# Upper case terminal, uses lower case for control sequences!!! -# The driver shows the C ~ operator used on CM coordinates. -# Without the terminal in front of me, I can't figure out what's -# going on, so I've dotted out the cm. Note there is no ~ in tgoto. -MJ|tec400|tec scope:\ - :do=^J:.cm=l%r%.%.:up=x:do=h:nd=g:le=w:ho=i:so={:se=|:sg#1:\ - :cl=f:al=e:dl=u:ic=d:dc=t:ce=c:cd=s: -# From ucbvax!geoff Mon Sep 21 21:15:45 1981 -# This entry has been tested. -MK|tec500|tec 500:\ - :do=^J:am:le=^H:bs:cm=\E=%+ %+ :cl=20^Z:\ - :co#80:ho=^^:li#24:nd=^L:up=^K:so=^]:se=^\: -# I would appreciate more information on this terminal, such as the -# manufacturer and the model number. There are too many tecs in here. -ML|tec:\ - :li#24:co#80:cl=^l:up=^k:nd=\037:\ - :am:le=^H:bs:ho=\036:ma=^K^P^_ :do=^J: -MM|teletec|Teletec Datascreen:\ - :do=^J:am:le=^H:bs:co#80:cl=^l:ho=^^:li#24:nd=^_:up=^k: -# From cbosg!ucbvax!SRC:george Fri Sep 11 22:38:32 1981 -MN|ampex|d80|dialogue|dialogue80|ampex dialogue 80:\ - :ct=\E3:st=\E1:do=^J:is=\EA:us=\El:ue=\Em:\ - :am:le=^H:bs:pt:cl=75\E*:cm=\E=%+ %+ :\ - :al=5*\EE:bt=\EI:ic=\EQ:im=:ei=:dl=5*\ER:dc=\EW:\ - :ce=\Et:cd=\Ey:so=\Ej:se=\Ek:li#24:co#80:nd=^L:up=^K: -# From: atd!dsd!rcb@ucbvax.berkeley.edu (Richard Bascove) -A2|a210|210|ampex210|ampex a210:\ - :am:bs:cl=\E*:cm=\E=%+ %+ :al=\EE:bt=\EI:ic=\EQ:im=:ei=:\ - :dl=\ER:dc=\EW:ho=^^:xn:ce=\Et:cd=\Ey:li#24:co#80:nd=^L:up=^K:\ - :pt:if=/usr/share/tabset/std:is=\EC\Eu\E'\E(\El\EA\E%\E{\E.2\EG0\Ed\En:\ - :kl=^H:kr=^L:kd=^V:ku=^K:kh=^^:hs:ts=\E.0\Eg\E}\Ef:fs=\E.2:\ - :kn#10:k0=^A0^M:k1=^A1^M:k2=^A2^M:k3=^A3^M:k4=^A4^M:k5=^A5^M:\ - :vb=\EU\EX\EU\EX\EU\EX\EU\EX:k6=^A6^M:k7=^A7^M:k8=^A8^M:k9=^A9^M:\ - :so=\EG4:se=\EG0:us=\EG8:ue=\EG0:ug#1:sg#1: -MO|digilog|333|digilog 333:\ - :le=^H:bs:co#80:ce=\030:ho=^n:li#16:nd=^i:up=^o:do=^J: -MP|ep48|ep4080|execuport 4080:\ - :am:le=^H:bs:os:co#80:hu=\036:hd=\034:do=^J: -MQ|ep40|ep4000|execuport 4000:\ - :am:le=^H:bs:os:co#136:hu=\036:hd=\034:do=^J: -MR|terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200:\ - :co#120:hc:os:do=^J: -# AED 512 -# by giles Billingsley (gilesb%ucbcad@berkeley) -# rewritten 8/82 for newer AEDs and better operation of vi,etc. -MS|aed|AED|aed512|AED512|aed 512:\ - :db:co#64:li#40:cl=^L:bs:nd=\Ei0800\001:\ - :up=^K:ve=\E\E\E\E\E\E\E\072004=000200??\001:\ - :vb=\EK0001??0000K0001202080\001:\ - :us=\E\07200>8000140\001:ue=\E\07200>8000100\001:\ - :uc=\Ei???>l0800i0102\001:\ - :ti=\E\07200>8000140{<04<0??00001010L<0\072004=0002??00\001:\ - :te=\E\07200>8000100{804<0??00001000L80\072004=000200??\001:\ - :so=\E\07200>8000140[80C00\001:se=\E[00C80\001:\ - :is=\EG1MMM.`40K0001202080K8001????00^L\EC80L80{80^L\EK010100????K0601??0000c818100\EG1HHH.\07210000019A27FD006A280D002A200A52429FE8524861086118612861360N031B4C3F3F1800N041B0C1B4C38301800N001B3B313030301800N011B3B313030341800N021B3B313030381800N050800N061B3B313335301800\07211000015A58E8D5011A58F8D5111A5908D5211A5918D531160\07212000015AD5011858EAD5111858FAD52118590AD5311859160\0721300004B2071C5858E0A18658E0A0A858EA900858F268FA5278590A50A29018591A9F51865908590A90165918591A59038E58E8590A591E58F290185912071C5180A0A0A0901858EA900858F268F60\0721350000BA9472031DEA9502031DE60\E\E\E\EG1MMM.^A: -zL|aed-ucb|AED-UCB|aed512-ucb|AED512-UCB|aed 512 w/o UCB ROM:\ - :db:co#64:li#40:cl=^L:bs:nd=\Ei0800\001:up=^K:\ - :ve=\E\E\E\E\E\E\E\072004=000200??\001:\ - :vb=\EK0001??0000K0001202080\001:\ - :us=\E\07200>8000140\001:ue=\E\07200>8000100\001:\ - :uc=\Ei???>l0800i0102\001:\ - :ti=\E\07200>8000140{<04<0??00001010L<0\072004=0002??00\001:\ - :te=\E\07200>8000100{804<0??00001000L80\072004=000200??\001:\ - :so=\E\07200>8000140[80C00\001:se=\E[00C80\001:\ - :if=/usr/share/tabset/aed512: -# CIT 80 - vt 100 emulator, the termcap has been modified to remove -# the delay times and do an auto tab set rather than the indirect -# file used in vt100. -MT|cit80|cit 80|Citoh 80:\ - :co#80:li#24:am:cl=\E[;H\EJ:bs:cm=\E[%i%2;%2H:nd=\E[C:up=\E[A:\ - :ce=\EK:cd=\EJ:is=\E>:ks=\E[?1h\E=:ke=\E[?1l\E>:\ - :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD: -# From mtxinu!sybase!tim (Tim Wood) Fri Sep 27 09:39:12 PDT 1985 -# Alternate cit101 (vt100 em) file used in vt100. -# Uses 23 lines so can run citsys (like h19sys). -# 24 May 85 (mtxinu!sybase!tim) - removed 2-byte limit on 'cm' cursor -# coordinates otherwise there is garbling on long lines in -# co#132 mode; also added support for multipage memory on the Itoh. -MU|citc|Citoh fast vt100:\ - :co#80:li#23:am:cl=\E[;H\E[2J:bs:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ - :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\ - :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[3g\E[>5g:\ - :ks=\E[?1h\E=:ke=\E[?1l\E>:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:\ - :vb=\E[?5h\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\E[?5l:\ - :dc=\E[P:al=\E[L:im=:ei=:dl=\E[M:ic=\E[@:vs=\E7\E[U:ve=\E[V\E8:xn: -MV|cita|:\ - :co#80:li#23:am:cl=\E[;H\E[2J:bs:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ - :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\ - :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[3g\E[>5g:\ - :ks=\E[?1h\E=:ke=\E[?1l\E>:\ - :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:vs=\E7\E[U:ve=\E[V\E8:\ - :vb=\E[?5h\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\E[?5l:xn: -MW|cit101:li#24:vb@:tc=citc: -MX|cit101b:li#24:tc=citc: -Mh|cit500|cit-500|cit 500:\ - :co#80:li#40:cl=50\E[;H\E[2J:bs:am:cm=5\E[%i%2;%2H:nd=2\E[C:up=2\E[A:\ - :ce=3\E[K:cd=50\E[J:so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:\ - :is=\E(B\E)0\E>\E[?3l\E[?7h\E[?8h:ks=\E[?1h\E=:ke=\E[?1l\E>:\ - :if=/usr/share/tabset/vt100:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:\ - :kh=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sr=5\EM:xn:\ - :do=\ED:al=\E[L:dc=\E[P:dl=\E[M: -# Note several versions of blit. I don't know exactly what is what -# so please send me any corrections to this -- mrh -# From research!ikeya!rob Tue Aug 31 23:41 EDT 1982 -MY|blit|jerq|blit-pb|blit running teletype rom:\ - :do=^J:IC=\Ef%+ :DC=\Ee%+ :AL=\EF%+ :DL=\EE%+ :\ - :mi:dl=\EE!:ic=\Ef!:dc=\Ee!:al=\EF!:\ - :ce=\EK:cl=^L:cm=\EY%r%+ %+ :co#87:li#72:nd=\EC:\ - :up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H:am:ul:pt:eo: -MZ|cbblit|columbus enhanced tty blit:\ - :vb=\E^G:so=\EU!:se=\EV!:us=\EU":ue=\EV":cd=\EJ:\ - :im=\EQ:ei=\ER:ic@:co#88:sf=\EG:tc=blit: -Ma|oblit|ojerq|first version of blit rom:\ - :do=^J:AL=\Ef%+ :DL=\Ee%+ :mi:dl=\EE:ei=\ER:im=\EQ:dc=\EO:da:db:\ - :al=\EF:cd=\EJ:ce=\EK:cl=^L:cm=\EY%r%+ %+ :co#88:li#72:nd=\EC:\ - :up=\EA:vb=\E^G:am:ul:pt:eo: -Mb|daleblit|daleterm|blit running Dale DeJager's ROM:\ - :ku=\EA:kd=\EB:kr=\EC:kl=\ED:so=\EU!:se=\EV!:us=\EU":ue=\EV":\ - :da@:db@:tc=oblit: -Mc|datapoint|dp3|dp3360|datapoint 3360:\ - :do=^J:am:le=^H:bs:cd=^_:ce=^^:cl=^]^_:co#82:ho=^]:li#25:nd=^x:up=^z: -#From: cbosgd!utcs!romwa@ucbvax.berkeley.edu (mark dornfeld) -# This termcap is for the LANPAR Technologies VISION 3220 -# terminal. The function key definitions k0-k5 represent the -# edit keypad: FIND, INSERT HERE, REMOVE, SELECT, PREV SCREEN, -# NEXT SCREEN. The key definitions k6-k9 represent the PF1 to -# PF4 keys. -v0|v3220|LANPAR Vision II model 3220/3221/3222:\ - :co#80:li#24:cl=\E[H\E[J:bs:am:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ - :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\ - :is=\E>\E[?3l\E[?7h\E[?8h\E[p:ks=\E=:ke=\E>:\ - :kn#10:k0=\E[1~:k1=\E[2~:k2=\E[3~:k3=\E[4~:k4=\E[5~:k5=\E[6~:\ - :k6=\E[OP:k7=\E[OQ:k8=\E[OR:k9=\E[OS:\ - :ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:\ - :kh=\E[H:pt:sr=\EM:xn:\ - :dl=\E[M:dc=\E[P:ei=\E[4l:al=\E[L:im=\E[4h:mi: -# From ucbvax!faletti (Faletti@Berkeley) -# FREEDOM 100 by Liberty Electronics USA, SF. -# :kh=^^: left out because it precludes using change-to-alternate-file in vi. -# Basic Freedom 100 entry, works with VI at 1200 baud. -Md|f100|freedom100|freedom|freedom 100 no padding:\ - :am:bs:bw:mi:ms:pt:co#80:kn#20:li#24:\ - :ct=\E3:st=\E1:is=\Eg\Ef\r\Ed:kr=^L:\ - :cl=^Z:do=^J:ho=^^:kb=^H:kl=^H:\:kd=^V:\ - :ko=dc,al,dl,cl,bt,ce,cd:ku=^K:le=^H:nd=^L:\ - :ch=\E]%+ :cm=\E=%+ %+ :cv=\E[%+ :sr=\Ej:up=^K:\ - :al=\EE:bt=\EI:cd=\EY:ce=\ET:dc=\EW:dl=\ER:ei=\Er:im=\Eq:\ - :se=\EG0:so=\EG4:ue=\EG0:us=\EG8:as=\E$:ae=\E%:\ - :vb=\Eb\200\200\Ed:\ - :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\ - :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:k0=^AI\r:\ - :hs:ts=\Eg\Ef:fs=\r:ds=\Eg\Ef\r: -Me|f100-rv|freedom100-rv|freedom-rv|freedom100 with reverse video at 1200:\ - :is=\Eg\Ef\r\Eb:vb=\Ed\200\200\Eb:tc=freedom100: -# VI at 9600 baud (or EMACS at 1200 -- but may be more than is needed for emacs) -Mf|f100-v|freedom100-v|freedom-v|freedom100 for 9600 vi or 1200 emacs:\ - :al=6.5*\EE:dl=11.5*\ER:\ - :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\ - :tc=freedom100: -Mx|f100-v-rv|freedom100-v-rv|freedom-v-rv|freedom100 rev. vid. for 9600 vi:\ - :al=6.5*\EE:dl=11.5*\ER:is=\Eg\Ef\r\Eb:\ - :vb=\Ed\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Eb:\ - :tc=freedom100: -# EMACS at 9600 baud -- this still needs some more work on the padding -My|f100-e|freedom100-e|freedom-e|freedom100 for 9600 emacs:\ - :al=8.5*\EE:dl=11.5*\ER:ip=6:\ - :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\ - :tc=freedom100: -Mz|f100-e-rv|freedom100-e-rv|freedom-e-rv|freedom100 rev. vid. for emacs 9600:\ - :al=8.5*\EE:dl=11.5*\ER:ip=6:is=\Eg\Ef\r\Eb:\ - :vb=\Ed\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Eb:\ - :tc=freedom100: -zM|f110-v|freedom110-v|freedom110 for 9600 vi or 1200 emacs:\ - :is=\Eg\Ef\r\Ed\EO:dc=\EO\EW:im=\EO\Eq:\ - :al=6.5*\EE:dl=11.5*\ER:\ - :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\ - :tc=freedom100: -# (from kerch@lll-crg) -Q1|f200|freedom200| Freedom 200 VDT by Liberty Electronics :\ - :if=/usr/share/tabset/stdcrt:al=\EE:am:bs:bt=\EI:cd=\EY:\ - :ce=\ET:cl=^Z:cm=\E=%+ %+ :co#80:dc=\EW:dl=\ER:do=^V:\ - :ds=\Eh:ei=\Er:im=\Eq:is=\Eg\El\E\041\062:\ - :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\ - :k6=^AE\r:k7=^AE\r:k8=^AF\r:k9=^AG\r:kd=^V:kr=L:\ - :ku=^K:li#24:ms:nd=^L:se=\EG0:so=\EG4:sr=\Ej:\ - :te=\EJ\E\\2\E|\041\061^L^Y:ti=\E\\1\EK\E|\041\061L^Y:\ - :ts=\Ef:ue=\EG0:up=^K:us=\EG8:vb=\Eb\Ed:hs:i2=\E^O\Eg:\ - :ts=\Ef:fs=^M:ds=\E^N: -Mg|dg|dg6053|data general 6053:\ - :do=^J:am:le=^H:bs:cm=^P%r%.%.:cl=^L:ho=^H:nd=^S:\ - :up=^W:ce=^K:co#80:li#24: -# dg450 and dg200 from cornell -Mj|dg450|dg6134|data general 6134:\ - :nd=\030:bs@:tc=dg200: -Mk|dg200|data general Dasher 200:\ - :am:bc=^Y:bs=0:ce=^K:cl=^L:cm=^P%r%+\200%+\200:co#80:do=^Z:\ - :ho=^H:li#24:\ - :ll=\036FP0017:se=\036E:so=\036D:up=^W:\ - :is=\036O\036FQ2\036FB000\036FE\036FA\036FQ2: -# Note: lesser Dasher terminals will not work with vi because vi insists upon -# having a command to move straight down from any position on the bottom line -# and scroll the screen up, or a direct vertical scroll command. The 460 and -# above have both, the D210/211, for instance, has neither. We must use ANSI -# mode rather than DG mode because standard UNIX tty drivers assume that ^H is -# backspace on all terminals. This is not so in DG mode. -zF|dg460-ansi|Data General Dasher 460, ANSI-mode:\ - :al=\E[L:am:bs:cd=\E[J:ce=\E[K:cl=\E[2J:\ - :cm=\E[%i%2;%2H:co#80:dc=\E[P:dl=\E[M:do=\E[B:\ - :ei=:ho=\E[H:ic=\E[@:im=:ue=\E[05:ul:up=\E[A:us=\E[4m:is=\036F@:\ - :k0=\E[001z:k1=\E[002z:k2=\E[003z:k3=\E[004z:k4=\E[005z:k5=\E[006z:\ - :k6=\E[007z:k7=\E[008z:k8=\E[009z:k9=\E[00\:z:\ - :kb=\E[D:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:kn#6:\ - :l0=f1:l1=f2:l2=f3:l3=f4:l4=f5:l5=f6:l6=f7:l7=f8:l9=f10:\ - :le=^H:li#24:mb=\E[5m:me=\E[0m:mh=\E[2m:mr=\E[7m:ms:mu=\EW:\ - :nd=\E[C:nl=\ED:pt:se=\E[0m:sf=\E[S:so=\E[7m:sr=\E[T: -zG|v603|visual603|603|Visual model 603:\ - :hs:ts=\EP2~:fs=\E\\:ds=\EP2;1~\E\\:\ - :im=\E[4h:ei=\E[4l:mi:dc=\E[P:dm=:ed=:al=\E[L:dl=\E[M:\ - :cs=\E[%i%d;%dr:sf=\ED:sr=\EM:sb=\EM:\ - :ce=\E[K:cl=\E[H\E[J:cd=\E[J:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ - :so=\E[7m:se=\E[27m:us=\E[4m:ue=\E[24m:\ - :md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:\ - :is=\E>\E[?3l\E[?4l\E[?7h\E[?8h\E[1;24r\E[24;1H:\ - :rs=\E>\E[?3l\E[?4l\E[?7h\E[?8h:\ - :tc=vt100: -Mi|cdi|cdi1203:\ - :am:le=^H:bs:hc:os:co#80:dC#200:do=^J: -# ^S is an arrow key! Boy is this guy in for a surprise on v7! -Ml|sol:\ - :do=^J:am:le=^Y:ho=^H:bs:cm=\E^1%.\E^2%.:cl=^K:ho=^N:co#64:li#16:\ - :nd=^S:up=^W:kl=^A:kr=^S:ku=^W:kd=^Z:ma=^A^H^S ^W^P^Z^N: -Mn|xl83|Cybernex XL-83:\ - :do=^J:am:le=^H:bs:cd=62^P:ce=3^O:cl=62^L:cm=^W%+ %+ :co#80:ho=^K:\ - :kd=^J:kl=^H:ku=^N:li#24:up=^N:nd=^I: -Mo|omron|Omron 8025AG:\ - :do=^J:al=\EL:am:le=^H:bs:cd=\ER:co#80:ce=\EK:cl=\EJ:\ - :da:db:dc=\EP:dl=\EM:ho=\EH:li#24:nd=\EC:se=\E4:sf=\ES:\ - :so=\Ef:sr=\ET:up=\EA:ve=:vs=\EN: -Mp|plasma|plasma panel:\ - :am:le=^H:bs:cl=^L:co#85:ho=^^:li#45:nd=\030:up=\026:do=^J: -Mq|pty|pseudo teletype:\ - :do=^J:co#80:li#24:am:cl=\EJ:le=^H:bs:cm=\EG%+ %+ :nd=\EC:\ - :up=\EA:ce=\EK:cd=\EL:al=\EP:dl=\EN:ic=\EO:\ - :so=\Ea$:se=\Eb$:us=\Ea!:ue=\Eb!: -Mr|remote|virtual remote terminal:\ - :co#79:am@:nl@:tc=virtual: -Ms|swtp|ct82|southwest technical products ct82:\ - :do=^J:am:le=^d:bc=^d:\ - :al=^\^y:cd=^v:ce=^F:cl=^L:cm=%r^k%.%.:co#82:li#20:\ - :dl=^z:nd=^s:up=^a:so=^^^v:se=^^^F:dc=^\^h:ic=^\^x:ho=^p:\ - :ei=:sf=^n:sr=^o:ll=^c:im=:\ - :is=^\^r^^^s^^^d^]^w^i^s^^^]^^^o^]^w^r^i: -Mt|terak|Terak emulating Datamedia 1520:\ - :tc=dm1520: -Mu|sun|Sun Microsystems Workstation console:\ - :li#34:co#80:cl=^L:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ - :am:bs:mi:ms:pt:km:\ - :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:rs=\E[s:\ - :kd=\E[B:kl=\E[D:ku=\E[A:kr=\E[C:kh=\E[H:\ - :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\ - :al=\E[L:dl=\E[M:im=:ei=:ic=\E[@:dc=\E[P:\ - :AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP: -# From john@ucbrenoir Tue Sep 24 13:14:44 1985 -Mu|sun-s|Sun Microsystems Workstation window with status line:\ - :hs:ts=\E]l:fs=\E\\:ds=\E]l\E\\:tc=sun: -Mu|sun-e-s|sun-s-e|Sun Microsystems Workstation with status hacked for emacs:\ - :hs:ts=\E]l:fs=\E\\:ds=\E]l\E\\:tc=sun-e: -M0|sun-48|Sun 48-line window:\ - :li#48:co#80:tc=sun: -M1|sun-34|Sun 34-line window:\ - :li#34:co#80:tc=sun: -M2|sun-24|Sun 24-line window:\ - :li#24:co#80:tc=sun: -M3|sun-17|Sun 17-line window:\ - :li#17:co#80:tc=sun: -M4|sun-12|Sun 12-line window:\ - :li#12:co#80:tc=sun: -M5|sun-1|Sun 1-line window for sysline:\ - :li#1:co#80:es:hs:ts=\r:fs=\E[K:ds=^L:tc=sun: -M6|sun-e|sun-nic|sune|Sun Microsystems Workstation without insert character:\ - :ic@:im@:ei@:tc=sun: -M7|sun-c|sun-cmd|Sun Microsystems Workstation console with scrollable history:\ - :te=\E[>4h:ti=\E[>4l:tc=sun: -# For NeWS's psterm from Eric Messick & Hugh Daniel -p0|psterm|psterm-basic|psterm-80x34:\ - :am:bs:al=\EA:cd=\EB:ce=\EC:cl=^L:cm=\E%d;%d;:cs=\EE%d;%d;:\ - :dc=\EF:dl=\EK:do=\EP:ei=\ENi:el=\ENl:fs=\ENl:\ - :ho=\ER:hs:im=\EOi:is=\EN*:km:kd=\E[B:ku=\E[A:kr=\E[C:kl=\E[D:\ - :mb=\EOb:md=\EOd:me=\EN*:mr=\EOr:nd=\EV:pt:rc=\034:rs=\EN*:sc=\035:\ - :se=\ENo:sf=\EW:sl=\EOl:so=\EOo:sr=\EX:te=\ENt:ti=\EOt:ts=\EOl:\ - :ue=\ENu:le=\ET:ll=\EU:ul:up=\EY:us=\EOu:vb=\EZ:co#80:li#34: -p1|psterm-96x48:\ - :co#96:li#48:tc=psterm-basic: -p2|psterm-90x28:\ - :co#90:li#28:tc=psterm-basic: -p3|psterm-80x24:\ - :co#80:li#24:tc=psterm-basic: -# This is a faster termcap for psterm. Warning: if you use this termcap, -# some control characters you type will do strange things to the screen. -p4|psterm-fast:\ - :am:bs:al=^A:cd=^B:ce=^C:cl=^L:cm=^D%d;%d;:cs=^E%d;%d;:\ - :dc=^F:dl=^K:do=^P:ei=^Ni:el=^Nl:fs=^Nl:\ - :ho=^R:hs:im=^Oi:is=^N*:km:kd=\E[B:ku=\E[A:kr=\E[C:kl=\E[D:\ - :mb=^Ob:md=^Od:me=^N*:mr=^Or:nd=^V:pt:rc=\034:rs=^N*:sc=\035:\ - :se=^No:sf=^W:sl=^Ol:so=^Oo:sr=^X:te=^Nt:ti=^Ot:ts=^Ol:ue=^Nu:\ - :le=^T:ll=^U:ul:up=^Y:us=^Ou:vb=^Z:co#80:li#34: -LS|apollo:\ - :al=\EI:am:bs:cd=\EJ:ce=\EK:ch=\EN%d:cl=^L:cm=\EM%+ %d):\ - :cv=\EO+ :dc=\EP:dl=\EL:do=\EB:ei=\ER:im=\EQ:mi:nd=\EC:se=\ET:sf=\EE:\ - :so=\ES:sr=\ED:te=\EX:ti=\EW:ue=\EV:up=\EA:us=\EU:co#88:li#53: -# Apollo termcaps from Gary Darland, goodmanc@garnet -LP|apollo_15P|apollo 15 inch display:\ - :dN@:tc=vt132: -LQ|apollo_19L|apollo 19 inch display:\ - :dN@:tc=vt132: -LR|apollo_color|apollo color display:\ - :dN@:tc=vt132: -Mv|virtual|VIRTUAL|cb unix virtual terminal:\ - :do=^J:co#80:li#24:am:cl=\E\112:le=^H:bs:cm=\E\107%r%.%.:nd=\E\103:\ - :up=\E\101:ce=\E\113:cd=\E\114:al=\E\120:dl=\E\116:im=:ei=:ic=\E\117:\ - :da:db:kl=\E\104:kr=\E\103:ku=\E\101:kd=\E\102:kh=\E\105:\ - :so=\E\141\004:se=\E\142\004:us=\E\141\001:ue=\E\142\001: -Mw|it2|intertube2|intertec data systems intertube 2:\ - :do=^J:am:bs:cl=^L:co#80:ho=^A:li#25:up=^Z:ce=\EK:\ - :cm=^N%+ %+ :ch=^P%\102%.:cv=^K%.:nd=^F:do=\n:ll=^K^X\r:\ - :so=\E0P:se=\E0@: -Mx|delta|dd5000|delta data 5000:\ - :do=^J:am:le=^H:bs:cl=^NR:cm=^O%\068%+9%\068%+9:co#80:li#27:\ - :ho=^NQ:nc:nd=^Y:up=^Z:ce=^NU:dc=^NV:ma=^K^J^Z^P^Y :xr: -My|mdl110|cybernex mdl-110:\ - :cm=^P%+ %+ :co#80:li#24:am:cl=70^X:le=^H:bs:do=^J:\ - :nd=^U:up=^Z:ho=^Y:ce=145^N@^V:cd=145^NA^W:al=65^NA^N^]:\ - :dl=40^NA^N^^:im=:ei=:ic=3.5^NA^]:dm=:ed=:dc=3.5^NA^^:\ - :so=^NF:se=^NG:ta=43\t:ma=^Z^P:cd=6^N@^V: -Mz|zen30|z30|zentec 30:\ - :do=^J:mi:co#80:li#24:ma=^L ^R^L^K^P:ul:\ - :al=1.5*\EE:le=^H:bs:ce=1.0*\ET:cm=\E=%+ %+ :cl=\E*:\ - :ho=^^:nd=^L:se=\EG0:so=\EG6:up=^K:im=\Eq:ei=\Er:\ - :am:dc=\EW:dl=1.5*\ER:cd=\EY: -m0|modgraph|mod|Modgraph terminal emulating vt100, 24x80:\ - :xn@:rf@:sr=5\EM\E[K:vs=\E\^9;0s\E\^7;1s:\ - :is=\E\^9;0s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E\^11;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;73s\E\^11;81s\E\^11;89s:\ - :tc=vt100: -# dmchat is like DM2500, but DOES need "all that padding" (jcm 1/31/82) -# also, has a meta-key (MT) -# from goldberger@su-csli.arpa -MX|dmchat|dmchat version of datamedia 2500:\ - :al=1*^P\n^X^]^X^]:\ - :MT:km:\ - :dl=2^P^Z^X^]:\ - :tc=dm2500: -# originally from Carol Block at ear (cblock@ear); changed O's to 0's and -# fixed :is \E from pcuser@garnet.berkeley.edu, 27 Feb 90 -m7|mt70|m70|morrow mt70:\ - :is=\EG0\E"5:cl=^Z:cm=\E=%+ %+ :do=^J:im=:ic=\EQ:ei:\ - :dm=:dc=\EW:ed=:kl=\034L:kr=\034M:ku=\034J:kd=\034K:\ - :so=\EG4:se=\EG0:us=\EG1:ue=\EG0:vs=\E"2:ve=\E"5\E(:\ - :tc=adm31: -# from keith bostic (bostic@monet) -# -m2|mod2|Modgraph GX-1000, set to 80x24, keypad not enabled:\ - :is=\E<\E\^5;2s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E\^11;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;73s\E\^11;81s\E\^11;89s\E\^12;0s\E\^14;2s\E\^15;9s\E\^25;1s\E\^9;1s\E\^27;1:\ - :bs:cd=50\EJ:ce=3\EK:cl=50\EH\EJ:cm=5\EY%+ %+ :co#80:li#24:nd=2\EC:\ - :pt:sr=5\EI:up=2\EA:da:db:am: -S1|wsiris|iris40|iris emulating a 40 line visual 50 (approximately):\ - :am:al=\EL:is=\E7B0\E7F7\E7C2\E7R3:\ - :bs:cd=\EJ:ce=\EK:cl=\EH\EJ:ho=\EH:cm=\EY%+ %+ :co#80:li#40:nd=\EC:\ - :pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:\ - :k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:k8=\E8:k9=\E9:\ - :vs=\E;:ve=\E>:cl=\Ev:ho=\EH:dl=\EM:so=\E9P:se=\E0@:\ - :HS=\E7F2:HE=\E7F7:\ - :us=\E7R2\E9P:ue=\E7R3\E0@:\ - :CT#2:CZ=*Bblack,red,green,yellow,blue,magenta,cyan,*Fwhite: - -# # -------------------------------- -# -# N: ANN ARBOR -# -# Needs function keys added. -# Originally from Mike O'Brien@Rand and Howard Katseff at Bell Labs. -# Highly modified 6/22 by Mike O'Brien. -# split out into several for the various screen sizes by dave-yost@rand -# Modifications made 3/82 by Mark Horton -# Modified by Tom Quarles at UCB for greater efficiency and more diversity -# status line moved to top of screen, vb removed 5/82 -# -# assumes the following setup: -# A menu: 0000 1010 0001 0000 -# B menu: 9600 0100 1000 0000 0000 1000 0000 17 19 -# C menu: 56 66 0 0 9600 0110 1100 -# D menu: 0110 1001 1 0 -# -# Briefly, the settings are for the following modes: -# (values are for bit set/clear with * indicating our preference -# and the value used to test these termcaps) -# Note that many of these settings are irrelevant to the termcap -# and are just set to the default mode of the terminal as shipped -# by the factory. -# -# A menu: 0000 1010 0001 0000 -# Block/underline cursor* -# blinking/nonblinking cursor* -# key click/no key click* -# bell/no bell at column 72* -# -# key pad is cursor control*/key pad is numeric -# return and line feed/return for <cr> key * -# repeat after .5 sec*/no repeat -# repeat at 25/15 chars per sec. * -# -# hold data until pause pressed/process data unless pause pressed* -# slow scroll/no slow scroll* -# Hold in area/don't hold in area* -# functions keys have default*/function keys disabled on powerup -# -# show/don't show position of cursor during page transmit* -# unused -# unused -# unused -# -# B menu: 9600 0100 1000 0000 0000 1000 0000 17 19 -# Baud rate (9600*) -# -# 2 bits of parity - 00=odd,01=even*,10=space,11=mark -# 1 stop bit*/2 stop bits -# parity error detection off*/on -# -# keyboard local/on line* -# half/full duplex* -# disable/do not disable keyboard after data transmission* -# -# transmit entire page/stop transmission at cursor* -# transfer/do not transfer protected characters* -# transmit all characters/transmit only selected characters* -# transmit all selected areas/transmit only 1 selected area* -# -# transmit/do not transmit line separators to host* -# transmit/do not transmit page tab stops tabs to host* -# transmit/do not transmit column tab stop tabs to host* -# transmit/do not transmit graphics control (underline,inverse..)* -# -# enable*/disable auto XON/XOFF control -# require/do not require receipt of a DC1 from host after each LF* -# pause key acts as a meta key/pause key is pause* -# unused -# -# unused -# unused -# unused -# unused -# -# XON character (17*) -# XOFF character (19*) -# -# C menu: 56 66 0 0 9600 0110 1100 -# number of lines to print data on (printer) (56*) -# -# number of lines on a sheet of paper (printer) (66*) -# -# left margin (printer) (0*) -# -# number of pad chars on new line to printer (0*) -# -# printer baud rate (9600*) -# -# printer parity: 00=odd,01=even*,10=space,11=mark -# printer stop bits: 2*/1 -# print/do not print guarded areas* -# -# new line is: 01=LF,10=CR,11=CRLF* -# unused -# unused -# -# D menu: 0110 1001 1 0 -# LF is newline/LF is down one line, same column* -# wrap to preceding line if move left from col 1*/don't wrap -# wrap to next line if move right from col 80*/don't wrap -# backspace is/is not destructive* -# -# display*/ignore DEL character -# display will not/will scroll* -# page/column tab stops* -# erase everything*/erase unprotected only -# -# editing extent: 0=display,1=line*,2=field,3=area -# -# unused -# -NA|aaa-unk|ann arbor ambassador (internal - don't use this directly):\ - :do=^J:al=3\E[L:am:le=^H:bs:\ - :cd=\E[J:ce=5\E[K:cl=156\E[H\E[J:cm=\E[%i%d;%dH:co#80:\ - :dc=4\E[P:dl=3\E[M:ho=\E[H:ic=4\E[@:\ - :md=\E[1m:mr=\E[7m:mb=\E[5m:mk=\E[8m:me=\E[m:\ - :ku=\EM:kd=\ED:kl=\E[D:kr=\E[C:kh=\E[H:ko=cl,dc,dl,ce,cd:\ - :ks=\EP`?z~[H~[[J`>z~[[J`8xz~[M`4xz~[[D`6xz~[[C`2xz~[D\E\\:\ - :ke=\EP`?y~[H~[[J`>y~[[2J`8xy~[M`4xy~[[D`6xy~[[C`2xy~[D\E\\:\ - :ch=\E[%i%d`:ei=:im=:pt:bw:bt=\E[Z:\ - :mi:nd=\E[C:se=\E[m:so=\E[7m:ue=\E[m:us=\E[4m:up=\EM: -NB|aaa-18|ann arbor ambassador/18 lines:\ - :ti=\E[2J\E[18;0;0;18p:te=\E[60;0;0;18p\E[18;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#18:tc=aaa-unk: -NC|aaa-20|ann arbor ambassador/20 lines:\ - :ti=\E[2J\E[20;0;0;20p:te=\E[60;0;0;20p\E[20;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#20:tc=aaa-unk: -ND|aaa-22|ann arbor ambassador/22 lines:\ - :ti=\E[2J\E[22;0;0;22p:te=\E[60;0;0;22p\E[22;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#22:tc=aaa-unk: -NE|aaa-24|ann arbor ambassador/24 lines:\ - :ti=\E[2J\E[24;0;0;24p:te=\E[60;0;0;24p\E[24;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#24:tc=aaa-unk: -NF|aaa-26|ann arbor ambassador/26 lines:\ - :ti=\E[2J\E[26;0;0;26p:te=\E[60;0;0;26p\E[26;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#26:tc=aaa-unk: -NG|aaa-28|ann arbor ambassador/28 lines:\ - :ti=\E[2J\E[28;0;0;28p:te=\E[60;0;0;28p\E[28;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#28:tc=aaa-unk: -NH|aaa|aaa-30|ambas|ambassador|ann arbor ambassador/30 lines:\ - :ti=\E[2J\E[30;0;0;30p:te=\E[60;0;0;30p\E[30;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#30:tc=aaa-unk: -NI|aaa-36|ann arbor ambassador/36 lines:\ - :ti=\E[2J\E[36;0;0;36p:te=\E[60;0;0;36p\E[36;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#36:tc=aaa-unk: -NJ|aaa-40|ann arbor ambassador/40 lines:\ - :ti=\E[2J\E[40;0;0;40p:te=\E[60;0;0;40p\E[40;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#40:tc=aaa-unk: -NK|aaa-48|ann arbor ambassador/48 lines:\ - :ti=\E[2J\E[48;0;0;48p:te=\E[60;0;0;48p\E[48;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#48:tc=aaa-unk: -NL|aaa-60|ann arbor ambassador/60 lines:\ - :ti=\E[2J\E[60;0;0;60p:te=\E[60;0;0;60p\E[60;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#60:tc=aaa-unk: -NS|aaa-unk-s|ann arbor ambassador unknown with/status:\ - :es:hs:i2=\E7\E[>51h\E[H\E[2K\E[>51l\E8:\ - :ts=\E7\E[>51h\E[H\E[2K\E[%i%d`:fs=\E[>51l\E8:\ - :ds=\E7\E[>51h\E[H\E[2K\E[>51l\E8:\ - :tc=aaa-unk: -NM|aaa-18-s|ambassador|ann arbor ambassador/18 lines + status line:\ - :ti=\E[2J\E[18;1;0;18p:\ - :te=\E[60;1;0;18p\E[17;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#17:tc=aaa-unk-s: -NN|aaa-20-s|ambassador|ann arbor ambassador/20 lines + status line:\ - :ti=\E[2J\E[20;1;0;20p:\ - :te=\E[60;1;0;20p\E[19;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#19:tc=aaa-unk-s: -NO|aaa-22-s|ambassador|ann arbor ambassador/22 lines + status line:\ - :ti=\E[2J\E[22;1;0;22p:\ - :te=\E[60;1;0;22p\E[21;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#21:tc=aaa-unk-s: -NP|aaa-24-s|ambassador|ann arbor ambassador/24 lines + status line:\ - :ti=\E[2J\E[24;1;0;24p:\ - :te=\E[60;1;0;24p\E[23;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#23:tc=aaa-unk-s: -NQ|aaa-26-s|ambassador|ann arbor ambassador/26 lines + status line:\ - :ti=\E[2J\E[26;1;0;26p:\ - :te=\E[60;1;0;26p\E[25;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#25:tc=aaa-unk-s: -NR|aaa-28-s|ambassador|ann arbor ambassador/28 lines + status line:\ - :ti=\E[2J\E[28;1;0;28p:\ - :te=\E[60;1;0;28p\E[27;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#27:tc=aaa-unk-s: -NT|aaa-30-s|ambassador|ann arbor ambassador/30 lines + status line:\ - :ti=\E[2J\E[30;1;0;30p:\ - :te=\E[60;1;0;30p\E[29;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#29:tc=aaa-unk-s: -NU|aaa-36-s|ambassador|ann arbor ambassador/36 lines + status line:\ - :ti=\E[2J\E[36;1;0;36p:\ - :te=\E[60;1;0;36p\E[35;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#35:tc=aaa-unk-s: -NV|aaa-40-s|ambassador|ann arbor ambassador/40 lines + status line:\ - :ti=\E[2J\E[40;1;0;40p:\ - :te=\E[60;1;0;40p\E[39;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#39:tc=aaa-unk-s: -NW|aaa-48-s|ann arbor ambassador/48 lines+sl:\ - :ti=\E[2J\E[48;1;0;48p:te=\E[60;1;0;48p\E[47;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\EP`?y~[[2J~[[H\E7\E[60;1;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#47:tc=aaa-unk-s: -NX|aaa-60-s|ambassador|ann arbor ambassador/60 lines + status line:\ - :ti=\E[2J\E[60;1;0;60p:te=\E[60;1;0;60p\E[59;1H\E[J:\ - :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#59:tc=aaa-unk-s: -NY|aaa-18-rv|ambassador/18 lines+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-18: -NZ|aaa-20-rv|ambassador/20 lines+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-20: -Na|aaa-22-rv|ambassador/22 lines+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-22: -Nb|aaa-24-rv|ambassador/24 lines+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-24: -Nc|aaa-26-rv|ambassador/26 lines+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-26: -Nd|aaa-28-rv|ambassador/28 lines+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-28: -Ne|aaa-30-rv|ann arbor ambassador/30 lines in reverse video:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-30: -Nf|aaa-36-rv|ann arbor ambassador/36 lines in reverse video:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-36: -Ng|aaa-40-rv|ann arbor ambassador/40 lines in reverse video:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-40: -Nh|aaa-48-rv|ann arbor ambassador/48 lines in reverse video:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-48: -Ni|aaa-60-rv|ann arbor ambassador/60 lines in reverse video:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-60: -Nj|aaa-18-rv-s|aaa-18-s-rv|ambassador/18 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :ti=\E[2J\E[18;1;0;18p:te=\E[60;1;0;18p\E[17;1H\E[J:li#17:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-unk-s: -Nk|aaa-20-rv-s|aaa-20-s-rv|ambassador/20 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :ti=\E[2J\E[20;1;0;20p:te=\E[60;1;0;20p\E[19;1H\E[J:li#19:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-unk-s: -Nl|aaa-22-rv-s|aaa-22-s-rv|ambassador/22 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :ti=\E[2J\E[22;1;0;22p:te=\E[60;1;0;22p\E[21;1H\E[J:li#21:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-unk-s: -Nm|aaa-24-rv-s|aaa-24-s-rv|ambassador/24 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :ti=\E[2J\E[24;1;0;24p:te=\E[60;1;0;24p\E[23;1H\E[J:li#23:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-unk-s: -Nn|aaa-26-rv-s|aaa-26-s-rv|ambassador/26 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :ti=\E[2J\E[26;1;0;26p:te=\E[60;1;0;26p\E[25;1H\E[J:li#25:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-unk-s: -No|aaa-28-rv-s|aaa-28-s-rv|ambassador/28 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :ti=\E[2J\E[28;1;0;28p:te=\E[60;1;0;28p\E[27;1H\E[J:li#27:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-unk-s: -Np|aaa-rv|aaa-30-rv-s|aaa-30-s-rv|ambassador/30 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :ti=\E[2J\E[30;1;0;30p:te=\E[60;1;0;30p\E[29;1H\E[J:li#29:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-unk-s: -Nq|aaa-36-rv-s|aaa-36-s-rv|ambassador/36 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :ti=\E[2J\E[36;1;0;36p:te=\E[60;1;0;36p\E[35;1H\E[J:li#35:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-unk-s: -Nr|aaa-40-rv-s|aaa-40-s-rv|ambassador/40 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :ti=\E[2J\E[40;1;0;40p:te=\E[60;1;0;40p\E[39;1H\E[J:li#39:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-unk-s: -Ns|aaa-48-rv-s|aaa-48-s-rv|ambassador/48 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :ti=\E[2J\E[48;1;0;48p:te=\E[60;1;0;48p\E[47;1H\E[J:li#47:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-unk-s: -Nt|aaa-60-rv-s|aaa-60-s-rv|ambassador/60 lines+sl+rv:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :ti=\E[2J\E[60;1;0;60p:te=\E[60;1;0;60p\E[59;1H\E[J:li#59:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :tc=aaa-unk-s: -NL|aaa-24-ctxt|ann arbor ambassador/24 lines:\ - :ti=\E[30;1H\E[K\E[24;0;0;24p:te=\E[60;1;0;24p\E[60;1H\E[K:tc=aaa-24: -NL|aaa-24-rv-ctxt|ambassador/24+rv:\ - :ti=\E[30;1H\E[K\E[24;0;0;24p:te=\E[60;1;0;24p\E[60;1H\E[K:tc=aaa-24-rv: -NL|aaa-s-ctxt|aaa-30-s-ctxt|hairy aaa:\ - :ti=\E[30;1H\E[K\E[30;1;0;30p:te=\E[60;1;0;30p\E[59;1H\E[K:tc=aaa-30-s: -NL|aaa-s-rv-ctxt|aaa-30-s-rv-ctxt|hairy aaa:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :ti=\E[30;1H\E[K\E[30;1;0;30p:te=\E[60;1;0;30p\E[59;1H\E[K:\ - :li#29:tc=aaa-unk-s: -NH|aaa-ctxt|aaa-30-ctxt|ann arbor ambassador/30 lines:\ - :ti=\E[30;0;0;30p:te=\E[60;0;0;30p\E[60;1H\E[K:tc=aaa-30: -NH|aaa-rv-ctxt|aaa-30-rv-ctxt|ann arbor ambassador/30 lines:\ - :ti=\E[30;0;0;30p:te=\E[60;0;0;30p\E[60;1H\E[K:\ - :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\ - :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\ - :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\ - :li#30:tc=aaa-unk: -Nd|aaa-db|ann arbor ambassador 30/destructive backspace:\ - :ti=\E[H\E[J\E[30;0;0;30p:te=\E7\E[60;0;0;30p\E8:li#30:\ - :is=\E[60;0;0;30p\E[H\E[J\E[1Q\E[m\E[20l\E[>30h:le=\E[D:bc=\E[D:bs@:\ - :tc=aaa-unk: -N1|aa|annarbor|4080|ann arbor 4080:\ - :do=^J:pt:ct=^\^P^P:st=^]^P1:cm=^O%r%\066%.%>^S^L%+@:\ - :co#80:li#40:le=^H:bs:cl=2^L:up=^N:nd=^_:ho=^K:am:\ - :kb=^^:kd=^J:ku=^N:kl=^H:kr=^_:kh=^K:ma=^_ ^N^P: -# # -------------------------------- -# -# P: PC entries for use with kermit -# -# greg small (gts@populi) -# -# Cannot use :pt:, it does not work (why?). :ho: seems required (why?). [gts] -# Caution: 4.3 BSD tset does not pass li#25 to stty rows except during login? -# :cl: clears attributes and sets wrap at margin before clearing the screen. -P1|ansi.sys|ansisys|PC-DOS 3.1 ANSI.SYS:\ - :am:bs:ce=\E[K:cl=\E[m\E[7h\E[2J:cm=\E[%i%d;%dH:co#80:\ - :ku=^K:kd=^J:kl=^H:kr=^L:kh=^^:ma=^Hh\012j^Kk^Ll^^H:\ - :ho=\E[H:li#25:nd=\E[C:up=\E[A:\ - :ms:md=\E[1m:me=\E[m:mr=\E[7m:se=\E[m:so=\E[1m:ue=\E[m:us=\E[4m:\ - :is=U1 PC-DOS 3.1 ANSI.SYS 9-23-86\n\E[m\E[7h: -# -# Define IBM PC keypad keys for vi as per MS-Kermit while using ANSI.SYS. -# This should only be used when the terminal emulator cannot redefine the keys. -# Since redefining keys with ansi.sys also affects PC-DOS programs, the key -# definitions must be restored. If the terminal emulator is quit while in vi -# or others using :ks:ke:, the keypad keys will not be defined as per PC-DOS. -# The PgUp and PgDn are prefixed with ESC so that tn3270 can be used on Unix -# (^U and ^D are already defined for tn3270). The ESC is safe for vi but it -# does "beep". ESC ESC i is used for Ins to avoid tn3270 ESC i for coltab. -# Left arrow is always BS, because PC-dos can tolerate this change. -# Caution: vi is limited to 256 string bytes, longer crashes or weirds vi. -# Consequently the End keypad key could not be set (it is relatively safe and -# actually useful because it sends ^@ O, which beeps and opens a line above). -P2|ansi.sysk|ansisysk|PC-DOS 3.1 ANSI.SYS with keypad redefined for vi:\ - :ks=\E[;71;30p\E[;72;11p\E[;73;27;21p\E[;77;12p\E[;80;10p\E[;81;27;4p\E[;82;27;27;105p\E[;83;127p:\ - :ke=\E[;71;0;71p\E[;72;0;72p\E[;73;0;73p\E[;77;0;77p\E[;80;0;80p\E[;81;0;81p\E[;82;0;82p\E[;83;0;83p:\ - :is=U2 PC-DOS 3.1 ANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p:\ - :tc=ansi.sys: -# -# Adds ins/del line/character, hence vi reverse scrolls/inserts/deletes nicer. -P3|nansi.sys|nansisys||PC-DOS Public Domain NANSI.SYS:\ - :al=\E[1L:dl=\E[1M:ic=\E[1@:dc=\E[1P:\ - :is=U3 PC-DOS Public Domain NANSI.SYS 9-23-86\n:\ - :tc=ansi.sys: -# -# See U2 ansi.sysk and U3 nansi.sys above. -P4|nansi.sysk|nansisysk|PC-DOS Public Domain NANSI.SYS with keypad redefined for vi:\ - :al=\E[1L:dl=\E[1M:ic=\E[1@:dc=\E[1P:\ - :is=U4 PC-DOS Public Domain NANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p:\ - :tc=ansi.sysk: -# # -------------------------------- -# -# T: TELETYPE -# -# We need descriptions for the model 40. There are known to be at least three -# flavors of the 40, both seem more like IBM half duplex forms fillers than -# ASCII terminals. They have lots of awful braindamage, such as printing -# a visible newline indicator after each newline. The 40-1 is a half duplex -# terminal and is hopeless. The 40-2 is braindamaged but has hope and is -# described here. The 40-4 is a 3270 lookalike and beyond hope. -# The terminal has visible bell but I don't know it - it's -# null here to prevent it from showing the BL character. -# There is an \EG in nl because of a bug in vi (if stty says you have -# a "newline" style terminal (-crmode) vi figures all it needs is nl -# to get crlf, even if cr is not ^M.) -T0|40|tty40|ds40|ds40/2|ds40-2|dataspeed40|teletype dataspeed 40/2:\ - :cl=160\ER:cd=160\EJ:al=160\EL:dl=160\EM:dc=50\EP:im=:ei=:ic=50\E\^:\ - :nd=\EC:up=\E7:bs:cr=\EG:nl=\EG\EB:do=\EB:co#80:li#24:vb=:\ - :so=\E3:se=\E4: -T3|33|tty33|tty|model 33 teletype:\ - :do=^J:co#72:hc:os: -T4|43|tty43|model 43 teletype:\ - :do=^J:kb=^h:am:le=^H:bs:hc:os:co#132: -T7|37|tty37|model 37 teletype:\ - :do=^J:le=^H:bs:hc:hu=\E8:hd=\E9:up=\E7:os: -# From jwb Wed Mar 31 13:25:09 1982 remote from ihuxp -# This entry appears to avoid the top line - I have no idea why. -TT|4424|tty4424|teletype 4424M:\ - :al=\EL:da:db:ip=2:im=:ei=:ic=\E\^:dc=\EP:dl=\EM:\ - :co#80:li#23:am:cl=\E[2;H\E[J:bs:cm=\E[%i%2;%2H\E[B:\ - :nd=\E[C:up=\E[A:pt:mi:sr=\ET:\ - :ce=\E[K:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\ - :is=\E[m\E[2;24r:\ - :kd=\E[B:kl=\E[D:ku=\E[A:kr=\E[C:\ - :kh=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS: -# Teletype blit. -TD|dmd|5620|ttydmd|tty5620|5620 terminal 88 columns:\ - :co#88:li#70:am:bs:pt:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ - :cl=\E[H\E[J:cd=\E[J:ce=\E[K:al=\E[L:dl=\E[M:do=^J:\ - :im=:ei=:ic=\E[@:dc=\E[P:sr=\E[T:sf=\E[S:le=^H:kb=^H:\ - :kl=\E[D:kr=\E[C:ku=\E[A:kd=\E[B:kh=\E[H:ho=\E[H:ll=\E[70;1H:\ - :AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:rc=\E8:rs=\Ec:sc=\E7:\ - :so=\E[7m:se=\E[0m:us=\E[4m:ue=\E[0m:ms:me=\E[0m:mr=\E[7m: -# # -------------------------------- -# -# V: VISUAL -# -# The Visual 200 beeps when you type a character in insert mode. -# This is a horribly obnoxious misfeature, and some of the entries -# below try to get around the problem by ignoring the feature or -# turning it off when inputting a character. They are said not to -# work well at 300 baud. (You could always cut the wire to the bell!) -#From mike@brl-vgr Mon Nov 14 08:34:29 1983 -V2|vi200|vis200|visual 200 with function keys:\ - :so=\E4:se=\E3:ms:do=^J:\ - :al=\EL:am:le=^H:bs:cd=\Ey:ce=\Ex:cl=\Ev:\ - :cm=\EY%+ %+ :co#80:dc=\EO:dl=\EM:ho=\EH:\ - :im=:ei=:ic=\Ei \b\Ej:\ - :is=\E3\Eb\Ej\E\\\El\EG\Ec\Ek:\ - :k0=\EP:k1=\EQ:k2=\ER:k3=\E :k4=\E!:k5=\E":k6=\E#:\ - :k7=\E$:k8=\E%:k9=\E&:kl=\ED:kr=\EC:ku=\EA:kd=\EB:kh=\EH:\ - :li#24:nd=\EC:pt:sr=\EI:up=\EA:vs=\Ed:ve=\Ec: -VR|vi200-rv-ic|visual 200 reverse video using insert char:\ - :ei=\Ej:im=\Ei:ic@:tc=vi200-rv: -# The older Visuals didn't come with function keys. This entry uses -# ks and ke so that the keypad keys can be used as function keys. -# If your version of vi doesn't support function keys you may want -# to use V2. -Vf|vi200-f|visual|visual 200 no function keys:\ - :do=^J:al=\EL:am:le=^H:bs:cd=\Ey:ce=4*\Ex:cl=\Ev:\ - :cm=\EY%+ %+ :co#80:dc=4*\EO:dl=4*\EM:ho=\EH:\ - :im=:ei=:ic=\Ei \b\Ej:\ - :is=\E3\Eb\Ej\E\\\El\EG\Ed\Ek:ks=\E=:ke=\E>:\ - :k0=\E?p:k1=\E?q:k2=\E?r:k3=\E?s:k4=\E?t:k5=\E?u:k6=\E?v:\ - :k7=\E?w:k8=\E?x:k9=\E?y:kl=\ED:kr=\EC:ku=\EA:kd=\EB:kh=\EH:\ - :li#24:nd=\EC:pt:sr=\EI:up=\EA:vs=\Ed:ve=\Ec: -Vr|vi200-rv|visual 200 reverse video:\ - :so=\E4:se=\E3:sr@:vs@:ve@:tc=vi200: -Vt|vi200-ic|visual 200 using insert char:\ - :ei=\Ej:im=\Ei:ic@:tc=vi200: -# From: jbs@athena.mit.edu Jeff Siegal -V5|vi55|Visual 55:\ - :im=\Ea:ei=\Eb:mi:dc=\Ew:dm=:ed=:al=\EL:dl=\EM:cs=\E_%+A%+A:\ - :ho=\EH:cl=\Ev:is=\Ev\E_AX\Eb\EW\E9P\ET:so=\EU:se=\ET:ms:\ - :do=^J:le=^H:bs:cd=\EJ:ce=\EK:cm=\EY%+ %+ :co#80:li#24:\ - :nd=\EC:pt:am:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H: -# # -------------------------------- -# -# X: TEKTRONIX -# -Xa|tek|tek4012|4012|tektronix 4012:\ - :do=^J:is=\E^O:le=^H:bs:cl=1000\E^L:co#75:ns:li#35:os: -Xb|tek4013|4013|tektronix 4013:\ - :as=\E^N:ae=\E^O:dF#1000:tc=4012: -Xc|tek4014|4014|tektronix 4014:\ - :is=\E^O\E9:co#81:li#38:dF#1000:tc=tek4012: -Xd|tek4015|4015|tektronix 4015:\ - :as=\E^N:ae=\E^O:tc=4014: -Xe|tek4014-sm|4014-sm|tektronix 4014 in small font:\ - :is=\E^O\E\072:co#121:li#58:tc=tek4014: -Xf|tek4015-sm|4015-sm|tektronix 4015 in small font:\ - :as=\E^N:ae=\E^O:tc=4014-sm: -# I think the 1000UP is supposed to be so expensive it never happens. -X4|tek4023|4023|tex|tektronix 4023:\ - :do=^J:so=^_P:se=^_@:cm=\034%r%+ %+ :nd=\t:le=^H:\ - :bs:cl=4\E^L:co#80:li#24:am:up=1000UP:vt#4: -# Can't use cursor motion because it's memory relative, and because -# it only works in the workspace, not the monitor. Same for home. -# Likewise, standout only works in the workspace. -# 145 ms padding on al and AL taken out since it doesn't seem to be needed much. -X5|4025|4027|4024|tek4025|tek4027|tek4024|4025cu|4027cu|tektronix 4024/4025/4027:\ - :sf=^F^J:do=^F^J:is=\41com 31\r\n^_sto 9 17 25 33 41 49 57 65 73\r:\ - :ks=^_lea p4 /h/\r^_lea p8 /k/\r^_lea p6 / /\r^_lea p2 /j/\r^_lea f5 /H/\r^_lea p5 /H/\r:\ - :ke=^_lea p2\r^_lea p4\r^_lea p6\r^_lea p8\r^_lea p5\r^_lea f5\r:\ - :am:le=^H:bs:da:db:pt:li#34:co#80:cl=^_era\r\n\n:up=^K:nd=^_rig\r:\ - :al=^_up\r^_ili\r:dl=^_dli\r^F:\ - :dc=^_dch\r:im=^_ich\r:ei=^F^_dow\r^K:nl=^F\n:\ - :cd=^_dli 50\r:CC=^_:AL=^_up\r^_ili %d\r:DL=^_dli %d\r^F:\ - :UP=^_up %d\r:DO=^_dow %d\r:LE=^_lef %d\r:RI=^_rig %d\r: -# Tektronix 4025A from gwyn@brl-smoke.ARPA (Doug Gwyn ) -# The following status modes are assumed for normal operation (replace the -# initial "!" by whatever the current command character is): -# !COM 29 # NOTE: changes command character to GS (^]) -# ^]DUP -# ^]ECH R -# ^]EOL -# ^]RSS T -# ^]SNO N -# ^]STO 9 17 25 33 41 49 57 65 73 -# Other modes may be set according to communication requirements. -# If the command character is inadvertently changed, termcap can't restore it. -# Insert-character cannot be made to work on both top and bottom rows. -# Clear-to-end-of-display emulation via !DLI 988 is too grody to use, alas. -# There also seems to be a problem with vertical motion, perhaps involving -# delete/insert-line, following a typed carriage return. This terminal sucks. -# Delays not specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! -X6|tek4025a|4025a|Tektronix 4025A:\ - :al=^K^]ili;:am:bl=^G:bt=^]bac;:bw:CC=^]:cl=^]era;^J^]rup;:co#80:\ - :cr=^M:ct=^]sto;:da:db:DC=^]dch %d;:dc=^]dch;:DL=^]dli %d;:dl=^]dli;:\ - :DO=^]dow %d;:do=^J:it#8:LE=^]lef %d;:le=^H:li#34:nd=^]rig;:\ - :RI=^]rig %d;:\ - :rs=!com 29^]del 0^]rss t^]buf^]buf n^]cle^]dis^]dup^]ech r^]eol\ -^]era g^]for n^]pad 203^]pad 209^]sno n^]sto 9 17 25 33 41 49 57 65 73\ -^]wor 0;:\ - :SF=^]dow %d;:sf=^J:ta=^I:UP=^]up %d;:up=^K:xo:\ - :ce=^]dch 80;:ch=\r^]rig %d;:\ - :bs:pt:xx: -X7|4025-17|4027-17|tek 4025 17 line window:\ - :li#17:tc=4025: -X8|4025-17ws|4027-17ws|tek 4025 17 line window in workspace:\ - :is=\41com 31\r\n^_sto 9,17,25,33,41,49,57,65,73\r^_wor 17\r^_mon 17\r:\ - :ti=^_wor h\r:te=^_mon h\r:so=^_att e\r:se=^_att s\r:tc=4025-17: -X9|4025ex|4027ex|tek 4025 w/!:\ - :ti=\41com 31\r:te=^_com 33\r:\ - :is=^_com 33\r\n\41sto 9,17,25,33,41,49,57,65,73\r:tc=4025: -# From jcoker@ucbic -Xp|tek4107|tek4207|4107|4207|Tektronix 4107 graphics terminal with memory:\ - :ti=\E[?6l\E[H\E[J:te=\E[?6h\E%!0\ELBP0\E%!1\E[32;1f:\ - :is=\E%!0\ELBP0\E%!1\E[H\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J:\ - :li#32:do=^J:al=3\E[L:xn:am:le=^H:bs:cd=\E[J:\ - :ce=5\E[K:cl=156\E[H\E[J:cm=\E[%i%d;%dH:co#80:dc=4\E[P:dl=3\E[M:\ - :ho=\E[H:ic=4\E[@:md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:ku=\EM:\ - :kd=\ED:kl=\E[D:kr=\E[C:kh=\E[H:\ - :ul:ei=:im=:pt:bw:bt=\E[Z:mi:nd=\E[C:se=\E[m:so=\E[7m:\ - :ue=\E[m:us=\E[4m:up=\EM: -# Tektronix 4107 with sysline -Xq|4107-s|tek4107-s|Tektronix 4107 with sysline but no memory:\ - :is=\E%!1\E[2;32r\E[132D\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J:\ - :es:hs:i2=\E7\E[?6l\E[2K\E[?6h\E8:ts=\E7\E[?6l\E[2K\E[;%i%df:\ - :fs=\E[?6h\E8:ds=\E7\E[?6l\E[2K\E[?6h\E8:tc=4107: -# From cbosg!teklabs!davem Wed Sep 16 21:11:41 1981 -# Here's the command file that I use to get rogue to work on the 4025. -# It should work with any program using the old curses (e.g. it better -# not try to scroll, or cursor addressing won't work. Also, you can't -# see the cursor.) -# (This "learns" the arrow keys for rogue. I have adapted it for termcap - mrh) -Xr|4025-cr|tek 4025 for curses and rogue:\ - :is=\41com 31\r\n^_sto 9 17 25 33 41 49 57 65 73\r:\ - :am:le=^H:bs:pt:li#33:co#80:cm=^_jum%i%d,%d;:up=^K:\ - :do=^F^J:cl=^_era;:nd=^_rig;:nl=^F\n:ti=^_wor 33h:te=^_wor 0: -# next two lines commented out since curses only allows 128 chars, sigh. -# :ti=^_lea p1/b/^_lea p2/j/^_lea p3/n/^_lea p4/h/^_lea p5/ /^_lea p6/l/^_lea p7/y/^_lea p8/k/^_lea p9/u/^_lea p./f/^_lea pt/`era w/13^_lea p0/s/^_wor 33h:\ -# :te=^_lea p1^_lea p2^_lea p3^_lea p4^_lea pt^_lea p5^_lea p6^_lea p7^_lea p8^_lea p9/la/13^_lea p.^_lea p0^_wor 0: -# The 4110 series may be a wonderful graphics series, but they make the 4025 -# look good for screen editing. In the dialog area, you can't move the cursor -# off the bottom line. Out of the dialog area, ^K moves it up, but there -# is no way to scroll. -Xs|4112|4114|tek4112|tektronix 4110 series:\ - :is=\E3!1:li#34:co#80:am:al=\E[L:bs:bt=\E[Z:\ - :cd=\E[0J:ce=\E[0K:cl=\E[2J\E[0;0H:cm=\E[%i%d;%dH:\ - :db:dc=\E[P:dl=\E[M:ic=\E[@:im=:nd=\E[C:se=\E[m:\ - :so=\E[7m:ue=\E[m:up=\EM:us=\E[4m:vs=:ve=:\ - :sr=\E7\E[0;0H\E[L\E8:sf=\E7\E[0;0H\E[M\E8: -Xt|4112-nd|4112 not in dialog area:up=^K:ns:tc=4112: -Xu|4112-5|4112 in 5 line dialog area:li#5:tc=4112: -Xv|4113|tek4113|tektronix 4113 color graphics, 5 line dialog area:\ - :le=^H:do=^J:eo:da:bs:am:li#5:co#80:is=\EKA1\ELL5\ELV0\ELV1:\ - :vb=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0:\ - :cl=\ELZ:uc=^H\ELM1_\ELM0:nd=\LM1 \LM0:\ - :.as=\E^N:.ae=\E^O: -Xw|4113-34|tek4113-34|tektronix 4113 color graphics, 34 line dialog area:\ - :is=\EKA1\ELLB2\ELV0\ELV1:li#34:tc=tek4113: -# ns hidden from vi to allow visual mode. APL font (as, ae) not supported here. -# uc is slow, but looks nice. Suggest setenv MORE -up . vb needs enough delay -# to let you see the background color being toggled. -Xy|4113-nd|tek4113-nd|tektronix 4113 color graphics, no dialog area:\ - :le=^H:do=^J:nd=\t:up=^K:ll=\ELF hl @:ho=\ELF7l\177 @:\ - :eo:bs:am:li#34:co#80:is=\ELZ\EKA0\ELF7l\177 @:vs=\ELZ\EKA0:\ - :vb=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0:\ - :cl=\E\f:uc=^H\EMG1_\EMG0:so=\EMT2:se=\EMT1:\ - :.ns:.as=\E^N:.ae=\E^O: -Xz|4105|tek4105:\ - :al=\E[1L:am:bs:cd=\E[J:ce=\E[K:cl=\E[2J\E[H:cm=\E[%i%2;%2H:co#80:\ - :dc=\E[1P:dl=\E[1M:do=\E[1B:ho=\E[H:im=\E[4h:li#30:mi:nd=\E[1C:\ - :as=\E[1m:ae=\E[0m:ms:pt:se=\E[0m:so=\E[7m:up=\E[1A:kb=^h:ku=\E[1A:\ - :kd=\E[1B:kl=\E[1D:kr=\E[1C:us=\E[4m:ue=\E[0m:is=\E%!1\E[?6l\E[0m:\ - :mr=\E[<3m:md=\E[<4m:mh=\E[<6m:mb=\E[<7m:me=\E[<1m:ti=\E%!1\E[?6l:xt: -# This entry is from Tek. Inc. (Brian Biehl) -Xz|4115|tek4115|Tektronix 4115:\ - :co#80:li#34:\ - :al=\E[L:am:bc=\E[D:bs:bt=\E[Z:cd=\E[J:ce=\E[K:\ - :cl=\E[;H\E[2J:cm=\E[%i%d;%dH:da:db:dc=\E[P:dl=\E[M:do=\E[B:\ - :ei=\E[4l:eo:ho=\E[;H:im=\E[4h:if=/usr/share/tabset/vt100:\ - :is=\E%\0410\E%\014\ELV0\EKA1\ELBB2\ENU@\075\ELLB2\ELM0\ELV1\EKYA?\E%\0411\E[<1l\E[?7h\E[?8h\E[34;1H\E[34B\E[0m:\ - :kb=^H:ke=\E>:ks=\E=:nd=\E[C:pt:se=\E[m:so=\E[7m:sr=\EM:\ - :te=\E%\0410\ELBG8\E%\0411\E[34;1H\E[J:\ - :ti=\E%\0410\ELBB2\E%\0411:\ - :ue=\E[m:up=\E[A:us=\E[4m:\ - :ve=\E%\0410\ELBG8\E%\0411\E[34;1H:\ - :vs=\E%\0410\ELBB2\E%\0411: -# The tek4125 emulates a vt100 incorrectly - the scrolling region -# command is ignored. The following entry replaces the cs with the -# needed al, dl, and im; removes some cursor pad commands that the tek4125 -# chokes on; and adds a lot of initialization for the tek dialog area. -# Note that this entry uses all 34 lines and sets the cursor color to green. -# Steve Jacobson 8/85 -XB|tek4125:\ - :ks=\E=:li#34:\ - :is=\E%\!0\EQD1\EUX03\EKA\ELBB2\ELCE0\ELI100\ELJ2\ELLB2\ELM0\ELS1\ELX00\ELV1\E%\!1\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:dl=\E[1M:\ - :al=\E[1L:cs@:sc@:rc@:im=\E1:tc=vt100: -# From carolyn@dali.berkeley.edu Thu Oct 31 12:54:27 1985 -XA|4404|tek4404:\ - :al=\E[1L:bs:cd=\E[J:ce=\E[K:cl=\E[;H\E[2J:cm=\E[%i%d;%dH:co#80:\ - :cs=\E[%i%d;%dr:dc=\E[P:dl=\E[1M:do=^J:ei=\E[4l:ho=\E[H:im=\E[4h:\ - :kd=\E[B:ke=\E[?1h:kl=\E[D:kr=\E[C:ks=\E[?1l:ku=\E[A:li#32::mb=\E[5m:\ - :md=\E[1m:me=\E[m:nd=\E[C:pt:rc=\E8:sc=\E7:se=\E[27m:so=\E[7m:\ - :ta=\E[2I:ti=\E%\!1\E[1;32r\E[?6l\E>:te=\E[1;1H\E[0J\E[?6h\E[?1l:\ - :ue=\E[m:up=\E[A:us=\E[4m: -# # -------------------------------- -# -# Z: Miscellaneous -# -# These compucolors appear similar, but they at least have different -# sized screens. I don't know what's going on here. -Z1|8001|ISC8001|compucolor|intecolor:\ - :do=^J:al=\EU:am:le=^Z:bc=^Z:cl=3*^L:cm=^C%r%.%.:\ - :co#80:cd=\EQ:dm=\EQ:ed=\EF:dc=\177:dl=\EV:ei=\EF:\ - :im=\EQ:li#40:nd=1^Y:ta=8\t:up=^\:ho=1^H:pc=^@: -Z2|compucolor2|compucolorII:\ - :do=^J:pt:am:cm=%r^C%.%.:le=^Z:bc=^Z:li#32:co#64:\ - :cl=^L:ho=^H:nd=^Y:up=^\: -# From cithep!eric Wed Sep 16 08:06:44 1981 -Z3|intext|Interactive Systems Corporation modified owl 1200:\ - :do=^J:al=5.5*\020:am:le=^_:bc=^_:le=^H:bs:bt=^Y:cd=5.5*\026J:\ - :ce=^K\160^R:cl=132\014:cm=\017%+ %+ :co#80:dc=5.5*\022:dl=5.5*\021:\ - :ei=\026\074:im=\026\073:ip=5.5*:li#24:nd=\036:pt:up=\034:\ - :se=^V# :sg#1:so=^V$,:ma=^K^P^R^L^L :\ - :kl=^_:kd=^J:kr=^^:ku=\034:kb=^H:kh=^Z:\ - :k1=^VA\r:k2=^VB\r:k3=^VC\r:k4=^VD\r:k5=^VE\r:\ - :k6=^VF\r:k7=^VG\r:k8=^VH\r:k9=^VI\r:k0=^VJ\r: -# # -------------------------------- -# -# a: ADDS -# -# Regent: lowest common denominator, works on all regents. -a0|regent|Adds Regent Series:li#24:co#80:am:cl=^L:ll=^A:up=^Z:\ - :bs:bc=^U:nd=^F:do=^J:ho=\EY : -# Regent 100 has a bug where if computer sends escape when user is holding -# down shift key it gets confused, so we avoid escape. -a1|regent100|Adds Regent 100:k0=^B1^M:k1=^B2^M:k2=^B3^M:k3=^B4^M:\ - :k4=^B5^M:k5=^B6^M:k6=^B7^M:k7=^B8^M:\ - :l0=F1:l1=F2:l2=F3:l3=F4:l4=F5:l5=F6:l6=F7:l7=F8:\ - :so=\E0P:ue=\E0@:us=\E0`:se=\E0@:\ - :cm=^K%+ %B^P%.:ug#1:sg#1:tc=regent: -a2|regent20|Adds Regent 20:cd=\Ek:ce=\EK:cm=\EY%+ %+ :tc=regent: -a3|regent25|Adds Regent 25:kh=^A:kl=^U:kr=^F:ku=^Z:kd=^J:tc=regent20: -a4|regent40|Adds Regent 40:k0=^B1^M:k1=^B2^M:k2=^B3^M:k3=^B4^M:\ - :k4=^B5^M:k5=^B6^M:k6=^B7^M:k7=^B8^M:\ - :l0=F1:l1=F2:l2=F3:l3=F4:l4=F5:l5=F6:l6=F7:l7=F8:\ - :al=2*\EM:dl=2*\El:\ - :so=\E0P:ue=\E0@:us=\E0`:se=\E0@:ug#1:sg#1:tc=regent25: -a5|regent40+|Adds Regent 40+:is=\EB:tc=regent40: -a6|regent60|regent200|Adds Regent 60:se=\ER\E0@\EV:so=\ER\E0P\EV:dc=\EE:ei=\EF:\ - :im=\EF:is=\EV\EB:ko=dc,im,ei:tc=regent40+: -a7|regent60na|regent 60 w/no arrow keys:\ - kl@:kr@:ku@:kd@:tc=regent60: -# -# adds viewpoint 90 - from cornell -# Note: emacs sends ei occasionally to insure the terminal is out of -# insert mode. This unfortunately puts the viewpoint90 IN insert -# mode. A hack to get around this is: ic=\EF \EF^U. (Also, -# - ei=:im=: must be present.) -# - xs indicates glich that attributes stick to location -# - bs save to move in standout mode -# - cl=\EG\Ek clears screen and visual attributes without affecting -# the status line -a9|vp90|viewpoint90|adds viewpoint 90:\ - :bs:bw:cd=\Ek:ce=\EK:cl=\EG\Ek:cm=\EY%+ %+ :co#80:\ - :dc=\EE:dl=\El:dm=:do=^J:ed=:ei=:im=:ic=\EF \EF^U:ho=\EY :\ - :nd=^F:up=^Z:\ - :kb=^H:kd=^J:kh=^A:kl=^U:kr=^F:ku=^Z:li#24:ll=^A:\ - :so=\ER\E0Q\EV:se=\ER\E0@\EV:\ - :us=\ER\E0`\EV:ue=\ER\E0@\EV:\ - :xs:ms: -# Note: if return acts weird on a980, check internal switch #2 -# on the top chip on the CONTROL pc board. -ac|a980|adds consul 980:\ - :do=^J:al=13\E^N:am:le=^H:bs:cl=^L\200^K@:cm=^K%+@\E^E%2:co#80:\ - :dl=13\E^O:k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:\ - :k8=\E8:k9=\E9:li#24:nd=\E^E01:so=^Y^^^N:se=^O:up=9: -as|viewpt60|viewpoint60|addsviewpoint60|adds viewpoint60:\ - :tc=regent40: -# From Onyx:edward Thu Jul 9 09:27:33 1981 -av|viewpoint|addsviewpoint|adds viewpoint:\ - :do=^J:am:le=^H:bs:li#24:co#80:cm=\EY%+ %+ :cd=\Ek:ce=\EK:\ - :up=^Z:cl=^L:ll=^A:kl=^U:kd=^J:ku=^Z:kh=^A:\ - :so=^N:se=^O:us=^N:ue=^O:is=^O\E0`:vs=^O\E0P:ve=^O\E0`: -# # -------------------------------- -# -# b: BEEHIVE -# -# Reports are that most of these Beehive entries (except superbee) have not been -# tested and do not work right. se is a trouble spot. Be warned. -b2|sb2|sb3|fixed superbee:\ - :xb@:tc=superbee: -# set tab is ^F, clear (one) tab is ^V, no way to clear all tabs. -# good grief - does this entry make sg/ug when it doesn't have to? -# look at those spaces in se/so. Seems strange to me... -bh|bh3m|beehiveIIIm:\ - :if=/usr/share/tabset/beehive:do=^J:\ - :al=160^S:am:le=^H:bs:cd=^R:ce=^P:cl=^E^R:\ - :co#80:dl=350^Q:ho=^E:li#20:ll=^E^K:\ - :nd=^L:pt:se= ^_:so=^] :up=^K: -# This loses on lines > 80 chars long, use at your own risk -bi|superbeeic|super bee with insert char:\ - :ic=:im=\EQ:ei=\ER:tc=superbee: -bm|microb|microbee|micro bee series:\ - :do=^J:am:le=^H:bs:cd=\EJ:ce=\EK:cl=\EE:co#80:cm=\EF%+ %+ :\ - :k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:k9=\Ex:\ - :kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:\ - :li#24:nd=\EC:pt:se=\Ed@ :so= \EdP:ue=\Ed@:up=\EA:us=\Ed`: -# Superbee - f1=escape, f2=^C. -# Note: there are at least 3 kinds of superbees in the world. The sb1 -# holds onto escapes and botches ^C's. The sb2 is the best of the 3. -# The sb3 puts garbage on the bottom of the screen when you scroll with -# the switch in the back set to CRLF instead of AEP. This description -# is tested on the sb2 but should work on all with either switch setting. -# The f1/f2 business is for the sb1 and the :xb: can be taken out for -# the other two if you want to try to hit that tiny escape key. -# This description is tricky: being able to use cm depends on there being -# 2048 bytes of memory and the hairy nl string. -bs|sb1|superbee|superb|beehive super bee:\ - :ct=\E3:st=\E1:is=\EH\EJ:do=^J:\ - :sf=\n\200\200\200\n\200\200\200\EA\EK\200\200\200\ET\ET:\ - :am:le=^H:bs:cd=3\EJ:ce=3\EK:cl=3\EH\EJ:co#80:cm=\EF%r%3%3:cr=1000\r:\ - :dC#10:da:db:xb:dc=3\EP:dl=100\EM:so=\E_1:se=\E_3:\ - :li#25:nl=\n\200\200\200\n\200\200\200\EA\EK\200\200\200\ET\ET:\ - :nd=\EC:pt:up=\EA:ho=\EH:ve=\n:\ - :k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:\ - :kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA: -# 8675, 8686, and bee from Cyrus Rahman -b7|8675|harris 8675:\ - :k1=^F:k2=^P:k3=^N:k4=^V:k5=^J:k6=^T:k7=^H:k8=\177:k9=\Ee:k10=\Ed:\ - :k11=^W:k12=\ER:k13=\EE:k14=\EI:k15=\Ei:k16=\Eg:\ - :is=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU:\ - :tc=bee: -b8|8686|harris 8686:\ - :k1=^B^[p^C:k2=^B^[q^C:k3=^B^[r^C:k4=^B^[s^C:k5=\E3:\ - :k6=\EI:k7=\ER:k8=\EJ:k9=\E(:k10=\Ej:k11=\EW:\ - :k12=^B^[{^C:k13=^B^[|^C:k14=^B^[}^C:k15=^B^[~^C:k16=^B^[\177^C:\ - :is=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU\E"*Z01\ - \E"8F35021B7C83#\E"8F45021B7D83#\E"8F55021B7E83#\E"8F65021B7F83#\ - \E"8F75021B7383#\E"8F851BD7#\E"8F95021B7083#\E"8FA5021B7183#\ - \E"8FB5021B7283#:\ - :tc=bee: -be|bee|harris beehive:\ - :co#80:li#24:am:bs:cd=\EJ:ce=\EK:cl=\EE:nd=\EC:\ - :cm=\EF%+ %+ :up=\EA:do=\EB:ho=\EH:bt=\E>:\ - :al=\EL:dc=\EP:dl=\EM:ei=\E@:im=\EQ:ic=:mi:\ - :kl=\ED:kr=\EC:ku=\EA:kd=\EB:kh=\EH:kb=^H:\ - :us=\Ed`:ue=\Ed@:so=\EdP:se=\Ed@:\ - :ko=al,bt,ce,cl,dc,dl,ei,ho,ic,im: -# # -------------------------------- -# -# c: CONCEPT (HUMAN DESIGNED SYSTEMS) -# -# From vax135!hpk Sat Jun 27 07:41:20 1981 -# Extensive changes to c108 by arpavax:eric Feb 1982 -# -# There seem to be a number of different versions of the C108 PROMS -# (with bug fixes in its Z-80 program). -# The first one that we had would lock out the keyboard of you -# sent lots of short lines (like /usr/dict/words) at 9600 baud. -# Try that on your C108 and see if it sends a ^S when you type it. -# If so, you have an old version of the PROMs. -# The old one also messed up running vi with a 132-character line-length. -# You should configure the C108 to send ^S/^Q before running this. -# It is much faster (at 9600 baud) than the c100 because the delays -# are not fixed. -# new status line display entries for c108: -# hs - has status capability -# es - escape sequences are OK on status line -# i2 - second init str - setup term for status display - set programmer mode, -# select window 2, define window at last line of memory, -# set bkgnd stat mesg there, select window 0. -# ts - to status line - select window 2, home cursor, erase to end-of-window, -# 1/2 bright on, goto(line#0, col#?) -# fs - from status line - 1/2 bright off, select window 0 -# ds - disable status display - set bkgnd status mesg with illegal window # -# -# the following two entries are for emacs -- they are just like the regular -# entries except that they have buffer overflow control OFF -c0|e108-8p:\ - :i2=\EU\E z"\Ev^A\177 !p\E ;"\E z \Ev ^A\177p\Ep\n:\ - :te=\Ev ^A\177p\Ep\r\n:tc=e108-4p: -c1|e108-4p:\ - :is=\EU\E f\Ef\E7\E5\E8\El\ENH\EK\E\200\Eo&\200\Eo\47\E\E!\E^G!\E^HA@ :\ - :tc=c108-4p: -c2|c108|c108-8p|concept108-8p|concept 108 w/8 pages:\ - :i2=\EU\E z"\Ev^A\177 !p\E ;"\E z \Ev ^A\177p\Ep\n:\ - :te=\Ev ^A\177p\Ep\r\n:tc=c108-4p: -c3|c108-4p|concept108-4p|concept 108 w/4 pages:\ - :es:hs:ts=\E z"\E?\E^C\Ea %+ :fs=\E z :ds=\E ;\177:\ - :i2=\EU\E z"\Ev\177 !p\E ;"\E z \Ev \177p\Ep\n:do=^J:pt:\ - :is=\EU\E F\Ef\E7\E5\E8\El\ENH\EK\E\200\Eo&\200\Eo\47\E\E!\E^G!\E^HA@ :\ - :ti=\EU\Ev 8p\Ep\r:te=\Ev \177p\Ep\r\n:\ - :al=\E^R:le=^H:bs:cd=\E^C:ce=\E^S:cl=\E?\E^E:cm=\Ea%+ %+ :co#80:\ - :dc=\E^Q:dl=\E^B:ei=\E\200:eo:im=\E^P:li#24:mi:nd=\E=:\ - :kb=^h:up=\E;:db:us=\EG:ue=\Eg:vs=\EW:ve=\Ew:am:xn:\ - :vb=\Ek\200\200\200\200\200\200\200\200\200\200\200\200\200\200\EK:\ - :ks=\EX:ke=\Ex:ku=\E;:kd=\E<:kl=\E>:kr=\E=:kh=\E?:\ - :k1=\E5:k2=\E6:k3=\E7:k4=\E8:k5=\E9:k6=\E\72:\ - :so=\ED:se=\Ed:mh=\EE:md=\ED:mr=\ED:me=\Ee\Ed\Eg\Ec: -c4|c108-rv-8p|concept108-rv-8p|concept 108 w/8 pages, in reverse video:\ - :vb=\EK\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ek:\ - :is=\EU\E F\Ef\E7\E5\E8\El\ENH\Ek\E\200\Eo&\200\Eo\47\E\E!\E^G!\E^HA@ :\ - :ts=\E z"\E?\E^C\EE\Ea %+ :fs=\Ee\E z :tc=c108-8p: -c5|c108-rv-4p|concept108-rv-4p|concept 108 w/4 pages, in reverse video:\ - :vb=\EK\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ek:\ - :is=\EU\E F\Ef\E7\E5\E8\El\ENH\Ek\E\200\Eo&\200\Eo\47\E\E!\E^G!\E^HA@ :\ - :ts=\E z"\E?\E^C\EE\Ea %+ :fs=\Ee\E z :tc=c108-4p: -c6|c108-na|c108-na-8p|concept108-na-8p|concept 108 w/8 pages, no arrows:\ - :ks@:ke@:k7=\E;:k8=\E<:k9=\E=:tc=c108-8p: -c7|c108-rv-na|c108-rv-na-8p|concept 108 w/8 pages, no arrows in rev video:\ - :ts=\E z"\E?\E^C\EE\Ea %+ :fs=\Ee\E z :\ - :ks@:ke@:k7=\E;:k8=\E<:k9=\E=:tc=c108-rv-8p: -# this needs new frotz in the cm capability for 2-char addrs when > 95.... -c8|c108-w|c108-w-8p|concept108-w-8p|concept 108 w/8 pages in wide mode:\ - :is=\EU\E F\Ef\E7\E5\E8\El\ENH\EK\E\200\Eo&\200\Eo\47\E\E"\E^G!\E^HA@ :\ - :ti=\EU\Ev 8^AD\Ep\r:te=\Ev ^A0^AD\Ep\r\n:pt@:cm@:\ - :co#132:tc=c108-8p: -cA|avt-w|avtw|HDS concept avt w/4 or 8 pages; 132 columns:\ - :is=\E[1*q\E[2!t\E[7!t\E[=4;101;119l\E[=103;107;118;207h\E)1\E[1Q\EW\E[0!y\E[0\0720\07232!r\E[w\E2\r\n:\ - :ch=\E[%i%3G:cm=\E[%i%2;%3H:co#132:tc=avt: -cB|avt-8p-s|concept avt w/8 pages & 80 cols running sysline:\ - :is=\E[1*q\E[2!t\E[7!t\E[=4;101;103;119l\E[=107;118;207h\E)1\E[1Q\EW\E[0!y\E[0\0720\07232!r\E[2!w\E[192w\E[2*w\E[!w\E[1;191w\E2\r\n:\ - :hs:es:ts=\E[2!w\E[H\E[J\E[%i%dG:fs=\E[!w:\ - :ds=\E[2!w\E[2J\E[!w\E[*w:te=\E[1;191w\E2\n:tc=avt: -cC|avt-4p-s|concept avt w/4 pages & 80 cols running sysline:\ - :is=\E[1*q\E[2!t\E[7!t\E[=4;101;103;119l\E[=107;118;207h\E)1\E[1Q\EW\E[0!y\E[0\0720\07232!r\E[2!w\E[96w\E[2*w\E[!w\E[1;95w\E2\r\n:\ - :hs:es:ts=\E[2!w\E[H\E[J\E[%i%dG:fs=\E[!w:\ - :ds=\E[2!w\E[2J\E[!w\E[*w:te=\E[1;95w\E2\n:tc=avt: -cD|avt-rv|HDS concept avt w/4 or 8 pages, 80 columns, reverse video:\ - :is=\E[1*q\E[2!t\E[7!t\E[=4;101;103;119l\E[=107;118;205;207h\E)1\E[1Q\EW\E[0!y\E[0\0720\07232!r\E[w\E2\r\n:\ - :ve=\E[4l:vs=\E[4l:tc=avt: -cE|avt|HDS concept avt w/4 or 8 pages, 80 columns:\ - :is=\E[1*q\E[2!t\E[7!t\E[=4;101;103;119;205l\E[=107;118;207h\E)1\E[1Q\EW\E[0!y\E[0\0720\07232!r\E[w\E2\r\n\E[*w:\ - :ae=^O:al=\E[L:am:as=^N:bs:bt=\E[Z:cd=\E[J:ce=\E[K:\ - :ch=\E[%i%2G:cl=\E[H\E[J:cm=\E[%i%2;%2H:co#80:cv=\E[%i%2d:\ - :dc=\E[P:dl=\E[M:do=\E[B:ei=\E1:eo:ho=\E[H:im=\E1:kb=^H:kd=\E[B:\ - :kh=\E[H:kl=\E[D:ko=do,ho,nd,up:kr=\E[C:\ - :ks=\E[1;4!z\E[1;8!z\E[1;10!z\E[1;11!z\E[1;12!z\E[1;14!z\E[3;7!z\E[3;9!z:\ - :ke=\E[;4!z\E[;8!z\E[;10!z\E[;11!z\E[;12!z\E[3;14!z\E[;7!z\E[;9!z:\ - :ku=\E[A:li#24:mi:nd=\E[C:pt:se=\E[7!{:so=\E[7m:\ - :te=\E[w\E2\n:ti=\E[1;24w\E2\n:ue=\E[4!{:\ - :up=\E[A:us=\E[4m:ve=\E[=4;119l:vs=\E[4l\E[=119h:xn: -# -# Concepts have only window relative cursor addressing, not screen relative. -# To get it to work right here, ti/te (which were invented for the concept) -# lock you into a one page window for screen style programs. To get out of -# the one page window, we use a clever trick: we set the window size to zero -# ("\Ev " in te) which the terminal recognizes as an error and resets the -# window to all of memory. -# -# Some tty drivers use cr3 for concept, others use nl3, hence dN/dC below. -# This padding is only needed at 9600 baud. -# 2 nulls padding on te isn't always enough. 6 works fine. Maybe less -# than 6 but more than 2 will work. -ca|c100|concept|c1004p|c100-4p|concept100|concept 100:\ - :is=\EU\Ef\E7\200\200\E5\E8\200\200\El\ENH\EK\E\200\Eo&\200\Eo\47\E\E^G\041\E^HA@ :\ - :ti=\EU\Ev 8p\Ep\r:te=\Ev \200\200\200\200\200\200\Ep\r\n:\ - :al=3*\E^R:am:le=^H:bs:cd=16*\E^C:ce=16\E^U:cl=2*^L:cm=\Ea%+ %+ :co#80:\ - :dc=16\E^Q:dl=3*\E^B:ei=\E\200:eo:im=\E^P:ip=16*:li#24:mi:nd=\E=:\ - :pt:kb=^h:ta=8\t:up=\E;:db:us=\EG:ue=\Eg:xn:\ - :vb=\Ek\200\200\200\200\200\200\200\200\200\200\200\200\200\200\EK:\ - :.dN#9:dC#9:pb#9600:vt#8:us=\EG:ue=\Eg:so=\EE\ED:se=\Ed\Ee:\ - :mh=\EE:mr=\ED:mb=\EC:mp=\EI:mk=\EH:me=\EN\200:do=^J:\ - :ks=\EX:ke=\Ex:ku=\E;:kd=\E<:kl=\E>:kr=\E=:kh=\E?:k1=\E5:k2=\E6:k3=\E7: -cb|c100-rv-pp|c100-rv-4p-pp|concept100-rv-pp|c100rv4ppp|w/ printer port:\ - :is=\EU\Ef\E7\200\200\E5\E8\200\200\El\ENH\Ek\E\200\Eo&\200\Eo\041\200\EQ"\EY(^W\Eo\47\E\E^G\041\E^HA@ :\ - :tc=c100-rv: -cc|c100-rv-na|c100-rv-4p-na|concept100-rv-na|c100rv4pna|c100 with no arrows:\ - :ks@:ke@:tc=c100-rv: -cd|c100-rv|c100-rv-4p|concept100-rv|c100rv4p|c100rv|c100 rev video:\ - :is=\EU\Ef\E7\200\200\E5\E8\200\200\El\ENH\Ek\E\200\Eo&\200\Eo\47\E\E^G\041\E^HA@ :\ - :vb=\EK\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ek:\ - :so=\EE:se=\Ee:tc=c100: -# This is useful at 1200 baud. -ce|c100-s|concept-s|concept100-s|slow concept 100:\ - :vb=\Ek\200\EK:pt:dC@:dN@:tc=c100: -cf|c100-rv-s|concept-rv-s|concept100-rv-s|c100rvs|slow reverse concept 100:\ - :vb=\EK\200\Ek:pt:dC@:dN@:tc=c100-rv: -# # -------------------------------- -# -# d: DEC (DIGITAL EQUIPMENT CORPORATION) -# -# Note that xn glitch in vt100 is not quite the same as concept, since -# the cursor is left in a different position while in the weird state -# (concept at beginning of next line, vt100 at end of this line) so -# all versions of vi before 3.7 don't handle xn right on vt100. -# I assume you have smooth scroll off or are at a slow enough baud -# rate that it doesn't matter (1200? or less). Also this assumes -# that you set auto-nl to "on", if you set it off use vt100-nam below. -# -# Since there are two things here called vt100, the installer can make -# a local decision to make either one standard "vt100" by including -# it in the list of terminals in reorder, since the first vt100 in -# /etc/termcap is the one that it will find. The choice is between -# nam (no automatic margins) and am (automatic margins), as determined -# by the wrapline switch (group 3 #2). I personally recommend turning -# on the bit and using vt100-am, since having stuff hammer on the right -# margin is sort of hard to read. However, the xn glitch does not occur -# if you turn the bit off. -# -# I am unsure about the padding requirements listed here. I have heard -# a claim that the vt100 needs no padding. It's possible that it needs -# padding only if the xon/xoff switch is off. For UNIX, this switch -# should probably be on. -# -# The vt100 uses rs and rf rather than is/ct/st because the tab settings -# are in non-volatile memory and don't need to be reset upon login. -# You can type "reset" to get them set. -dp|vt100-np|vt100 with no padding (for psl games):\ - :cl=\E[H\E[2J:sr=\EM:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ - :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\ - :md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:tc=vt100: -d0|vt100|vt100-am|vt100am|dec-vt100|dec vt100:\ - :do=^J:co#80:li#24:cl=50\E[;H\E[2J:sf=2*\ED:\ - :le=^H:bs:am:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:\ - :ce=3\E[K:cd=50\E[J:so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:\ - :md=2\E[1m:mr=2\E[7m:mb=2\E[5m:me=2\E[m:is=\E[1;24r\E[24;1H:\ - :rf=/usr/share/tabset/vt100:\ - :rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:ks=\E[?1h\E=:ke=\E[?1l\E>:\ - :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^H:\ - :ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sr=2*\EM:vt#3:xn:\ - :sc=\E7:rc=\E8:cs=\E[%i%d;%dr: -d1|vt100-nam|vt100nam|vt100 w/no am:\ - :am@:xn@:\ - :is=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h:ks=\E[?1h\E=:ke=\E[?1l\E>:\ - :tc=vt100-am: -d2|gt42|dec gt42:\ - :do=^J:le=^H:bs:co#72:ns:li#40:os: -#From ts@pc.ecn.purdue.edu (Thomas Ruschak) -dR|vt131|dec vt131:\ - :cr=^M:do=^J:nl=^J:bl=^G:co#80:li#24:cl=50\E[;H\E[2J:\ - :le=^H:bs:am:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:\ - :ce=3\E[K:cd=50\E[J:so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:\ - :md=2\E[1m:mr=2\E[7m:mb=2\E[5m:me=2\E[m:is=\E[1;24r\E[24;1H:\ - :rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:.ks=\E[?1h\E=:.ke=\E[?1l\E>:\ - :ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:kb=^H:\ - :ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:ta=^I:pt:sr=5\EM:vt#3:xn:\ - :sc=\E7:rc=\E8:cs=\E[%i%d;%dr: -d3|vt132|vt132:\ - :al=99\E[L:dl=99\E[M:ip=7:dc=7\E[P:ei=\E[4l:im=\E[4h:xn:dN#30:tc=vt100: -d4|gt40|dec gt40:\ - :do=^J:le=^H:bs:co#72:ns:li#30:os: -d5|vt50|dec vt50:\ - :do=^J:le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:co#80:li#12:nd=\EC:pt:up=\EA: -d6|vt125|vt125-am|DEC vt125:\ - :xn:do=^J:co#80:li#24:cl=50\E[H\E[2J:dC=10:dN#10:\ - :le=^H:am:bs:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:ce=3\E[K:cd=50\E[J:\ - :so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:md=2\E[1m:mr=2\E[7m:mb=2\E[5m:\ - :me=2\E[m:is=\E[1;24r\E[24;1H\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\ - :ks=\E[?1h\E=:ke=\E[?1l\E>:if=/usr/share/tabset/vt100:ku=\EOA:kd=\EOB:\ - :kr=\EOC:kl=\EOD:kb=^H:ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\ - :pt:sr=5\EM:vt#3:sc=\E7:rc=\E8:cs=\E[%i%d;%dr: -d9|vt125-nam|DEC vt125 no automatic margin:\ - :am@:tc=vt125-am: -# DEC gigi color graphic terminal, same as vt52 -d7|gigi|dec gigi terminal:\ - :co#80:is=200\E>\E[?4l\E[?5l\E[?7h\E[?8h:\ - :li#24:cl=100\E[;H\E[2J:bs:cm=50\E[%i%2;%2H:nd=200\E[C:up=100\E[A:\ - :ce=120\E[K:cd=100\E[J:so=20\E[7m:se=20\E[m:us=20\E[4m:ue=20\E[m:\ - :ks=200\E[?1h\E=:ke=200\E[?1l\E>:\ - :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:\ - :kh=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sr=200\EM:\ - :dC=50:dF=200:dN#50:dT=50: -#From William King <abvax!wrk@uunet.UU.NET>, basic ln03 entries -da|ln03|dec ln03 LaserPrinter:\ - :co#80:li#66:hc:hu=\EL:hd=\EK:so=\E[1m:se=\E[22m:\ - :us=\E[4m:ue=\E[24m: -db|ln03-w|dec ln03 LaserPrinter 132 cols:\ - :co#132:tc=ln03: -dI|dw1|decwriter I:\ - :do=^J:le=^H:bs:co#72:hc:os: -# From tut@Topaz.CC Thu May 12 14:49:02 1983 -dJ|dw3|la120|decwriter III:\ - :bs:kb=^H:co#132:hc:os:pt:\ - :is=\E(B\E[20l\E[w\E[1;132s\E[2g\E[9;17;25;33;41;49;57;65;73;81;89;97;105;113;121;129u\E[z\E[66t\E[1;66r\E[4g\E>\r: -# From tut@topaz.CC Thu Sep 24 22:10:46 1981 -df|dw4|decwriter IV:\ - :do=^J:le=^H:bs:co#132:hc:os:am:\ - :pt:is=\Ec:k0=\EOP:k1=\EOQ:k2=\EOR:k3=\EOS:kb=^H: -dh|vt50h|dec vt50h:\ - :do=^J:le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :\ - :co#80:li#12:nd=\EC:pt:sr=\EI:up=\EA: -di|vt100-s|vt100 with status line at top:\ - :li#23:i2=\E[2;24r\E[24;1H:cm@:ho=\E[H^J:cl=50\E[;H^J\E[0J:\ - :hs:es:ts=\E7\E[1;%dH\E[1K:fs=\E8:tc=vt100-am: -dj|vt100-s-bot|vt100 with status line at bottom:\ - :li#23:i2=\E[1;23r\E[23;1H:\ - :hs:es:ts=\E7\E[24;%dH\E[1K:fs=\E8:tc=vt100-am: -ds|vt100-nav|dec vt100 132 cols 14 lines (w/o advanced video option):\ - :li#14:tc=vt100-w: -dt|vt100-w|dec vt100 132 cols (w/advanced video):\ - :co#132:li#24:rs=\E>\E[?3h\E[?4l\E[?5l\E[?8h:tc=vt100-am: -dv|vt100-w-nam|dec vt100 132 cols (w/advanced video), no am:\ - :co#132:li#24:rs=\E>\E[?3h\E[?4l\E[?5l\E[?8h:vt@:tc=vt100-nam: -d8|vt102|vt100 w/adv. video:\ - :al=\E[1L:dl=\E[1M:im=\E[4h:ei=\E[4l:mi:dc=\E[1P:ku=\EOA:kd=\EOB:\ - :kr=\EOC:kl=\EOD:k0=\EOp:k1=\EOq:k2=\EOr:k3=\EOs:k4=\EOt:k5=\EOu:\ - :k6=\EOv:k7=\EOw:k8=\EOx:k9=\EOy:as=\E(0:ae=\E(B:am@:xn@:tc=vt100am: -# (from lai@decwrl) should be a vt102, but have heard enough -# unsubstantiated complaints to make it an alternate (obsolete) version -dy|vt102-obs|dec vt102:\ - :do=^J:co#80:li#24:cl=50\E[;H\E[2J:\ - :le=^H:bs:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:\ - :ce=3\E[K:cd=50\E[J:so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:\ - :md=2\E[1m:mr=2\E[7m:mb=2\E[5m:me=2\E[m:is=\E[1;24r\E[24;1H:\ - :rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:ks=\E[?1h\E=:ke=\E[?1l\E>:\ - :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^H:\ - :ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sr=5\EM:vt#3:\ - :sc=\E7:rc=\E8:cs=\E[%i%d;%dr:vs=\E[?7l:ve=\E[?7h: -dw|vt52|dec vt52:\ - :do=^J:le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:li#24:\ - :nd=\EC:pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H: -# vt61 created by Roger Sacilotto Massachusetts Computer Associates, Inc -# Similar to vt52 but add al and dl -# -dq|vt61|dec vt61:\ - :al=\EPf:dl=\EPd:tc=vt52: -dx|dw2|decwriter II:\ - :do=^J:kb=^h:le=^H:bs:co#132:hc:os: -# DEC PRO-350 console (VT220-style) -dP|pro350|decpro|dec pro console:\ - :bs:cd=\EJ:ce=\EK:cl=\EH\EJ:\ - :cm=\EY%+ %+ :co#80:ho=\EH:\ - :kl=\ED:kr=\EC:ku=\EA:kd=\EB:kh=\EH:\ - :k0=\EE:k1=\EF:k2=\EG:k3=\EH:k4=\EI:k5=\EJ:k6=\Ei:k7=\Ej:\ - :li#24:nd=\EC:pt:sr=\EI:up=\EA:do=\EB:\ - :se=\E^N:so=\E^H:us=\E^D:ue=\E^C:\ - :ae=\EG:as=\EF: -# -# From: Bracy H. Elton <elton@lll-crg> -dl|vt200|vt220|vt200-js|vt220-js|dec vt200 series with jump scroll:\ - :im=\E[4h:ei=\E[4l:mi:dc=\E[P:dm=:ed=:al=\E[L:\ - :cs=\E[%i%d;%dr:sf=\ED:sr=\EM:sb=\EM:\ - :ce=\E[K:cl=\E[H\E[J:cd=\E[J:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ - :so=\E[7m:se=\E[27m:us=\E[4m:ue=\E[24m:\ - :md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:\ - :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H:\ - :rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\ - :tc=vt100: -dm|vt200-ss|vt220-ss|dec vt200 series with smooth scroll:\ - :is=\E>\E[?3l\E[?4h\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H:\ - :rs=\E>\E[?3l\E[?4h\E[?5l\E[?7h\E[?8h:\ - :tc=vt200: -dn|vt200-w|vt220-w|vt200-wj|vt220-wj|dec vt200 series; 132 col.; jump scroll:\ - :is=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H:\ - :rs=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h:\ - :co#132:tc=vt200: -do|vt200-ws|vt220-ws|dec vt200 series; 132 col.; smooth scroll:\ - :is=\E>\E[?3h\E[?4h\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H:\ - :rs=\E>\E[?3h\E[?4h\E[?5l\E[?7h\E[?8h:\ - :co#132:tc=vt200: -# @(#)termcap X10/6.6 11/7/86, minus alternate screen, plus :cs -vs|xterm|vs100|xterm terminal emulator (X window system):\ - :do=^J:le=^H:ho=\E[H:\ - :co#80:li#65:cl=\E[H\E[2J:bs:am:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ - :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\ - :md=\E[1m:mr=\E[7m:me=\E[m:\ - :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^H:\ - :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sf=\n:sr=\EM:\ - :al=\E[L:dl=\E[M:im=\E[4h:ei=\E[4l:mi:dc=\E[P:\ - :MT:ks=\E[?1h\E=:ke=\E[?1l\E>:xn:\ - :AL=\E[%dL:DL=\E[%dM:DC=\E[%dP:\ - :hs:ts=\E[?E\E[?%i%dT:fs=\E[?F:es:ds=\E[?E:\ - :is=\E\E[m\E[?7h\E[?1;4l:cs=\E[%i%d;%dr:\ - :rs=\E[r\E<\E[m\E[H\E[2J\E[?7h\E[?1;3;4;6l: -v2|xterms|vs100s|xterm terminal emulator (small)(X window system):\ - :co#80:li#24:tc=xterm: -# vs100 emulator using tsim (from lai@decwrl) -vt|vs100t|tsim|vs100-tsim:\ - :bs:cm=\EM%+ %+ :ho=\EH:do=^J:up=^K:cl=\EE:ce=\EL:cs=\ES%+ %+ :\ - :so=\Eh:se=\Er:us=\Eu:ue=\Ev:al=\EI:Al=\E+%+ :dl=\ED:Dl=\E-%+ :\ - :ic=\Ei:dc=\Ed:is=\ER:rs=\ER:am:cd=\EQ:pt:nd=\En:li#24:co#80: -# # -------------------------------- -# -# h: HEWLETT PACKARD -# -# Note: no "ho" on HP's since that homes to top of memory, not screen. -# Due to severe 2621 braindamage, the only way to get the arrow keys to -# transmit anything at all is to turn on the function key labels -# (f1-f8) with ks, and even then the poor user has to hold down shift! -# The default 2621 turns off the labels except when it has to enable -# the function keys. If your installation prefers labels on all the time, -# or off all the time (at the "expense" of the function keys) move the -# 2621-nl or 2621-wl labels to the front using reorder. -# Note: there are newer ROM's for 2621's that allow you to set strap A -# so the regular arrow keys xmit \EA, etc, as with the 2645. However, -# even with this strap set, the terminal stops xmitting if you reset it, -# until you unset and reset the strap! Since there is no way to set/unset -# the strap with an escape sequence, we don't use it in the default. -# If you like, you can use 2621-ba (braindamaged arrow keys). -h1|2621-ba|2621 w/new rom, strap A set:\ - :ks@:ke@:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\Eh:tc=hp2621: -# 2621 with function labels. Most of the time they are off, -# but inside vi, the function key labels appear. You have to -# hold down shift to get them to xmit. -h2|2621|hp2621|hp2621a|hp2621p|2621a|2621p|2621-pb|hp2621-fl|hp 2621:\ - :is=\E&j@\r:bt=\Ei:cm=\E&a%r%dc%dY:dc=2\EP:ip=2:pb#19200:\ - :so=\E&dD:se=\E&d@:us=\E&dD:ue=\E&d@:me=\E&d@:\ - :kh=\Ep\r:ku=\Et\r:kl=\Eu\r:kr=\Ev\r:kd=\Ew\r:\ - :kn#8:k1=\Ep\r:k2=\Eq\r:k3=\Er\r:k4=\Es\r:k5=\Et\r:k6=\Eu\r:k7=\Ev\r:\ - :k8=\Ew\r:ks=\E&jB:ke=\E&j@:ta=2^I:tc=hp: -# 2621k45: untested -# 2622: unsure if this is quite it, have only heard about the terminal. -h3|2621k45|hp2621k45|k45|2622|hp2622|hp 2621 with 45 keyboard:\ - :kb=^H:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\Eh:ks=\E&s1A:ke=\E&s0A:tc=2621: -h4|hp2645|2645|hp45:\ - :mh=\E&dH:mr=\E&dB:us=\E&dD:mb=\E&dA:me=\E&d@:\ - :ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\Eh:ks=\E&s1A:ke=\E&s0A:tc=hp: -h5|hp|hewlett-packard:\ - :ct=\E3:st=\E1:do=^J:al=\EL:am:le=^H:bs:\ - :cd=\EJ:ce=\EK:ch=\E&a%dC:cl=\EH\EJ:cm=6\E&a%r%dc%dY:\ - :co#80:cv=\E&a%dY:da:db:dc=\EP:dl=\EM:ei=\ER:im=\EQ:\ - :kb=^H:li#24:mi:nd=\EC:pt:se=\E&d@:so=\E&dJ:\ - :us=\E&dD:ue=\E&d@:up=\EA:xs:vt#6:pb#9600: -# This entry does not use any of the fancy windowing stuff of the 2621. -# Indeed, termcap does not yet handle such stuff. We are looking at it. -h6|hp2626|hp2626a|hp2626p|2626|2626a|2626p|hp 2626:\ - :dc=2\EP:ip=2:se=\E&d@:so=\E&dB:cd=500\EJ:\ - :mr=\E&dB:us=\E&dD:mb=\E&dA:mk=\E&dS:me=\E&d@:ue=\E&d@:\ - :kh=\Eh:ku=\EA:kl=\ED:kr=\EC:kd=\EB:ks=\E&s1A:ke=\E&s0A:\ - :sf=\ES:ta=2^I:xs:tc=2621: -# cD is a pain - but it only screws up at 9600 baud. -# You should use this terminal at 4800 baud or less. -h8|hp2648|hp2648a|2648a|2648|HP 2648a graphics terminal:\ - :cl=50\EH\EJ:cm=20\E&a%r%dc%dY:dc=7\EP:ip=5:tc=2645: -# This terminal should be used at 4800 baud or less. -h9|hp2645-np|2645 w/no padding:cm=\E&a%r%dc%dY:tc=hp2645: -# 2640a doesn't have the Y cursor addressing feature, and C is memory relative -# instead of screen relative, as we need. -ha|2640|hp2640a|2640a|hp 2640a:\ - :cm@:ks@:ke@:tc=2645: -hb|2640b|hp2640b|2644a|hp2644a|hp 264x series:\ - :ks@:ke@:tc=2645: -# 2621 using all 48 lines of memory, only 24 visible at any time. Untested. -hl|2621-48|48 line 2621:\ - :li#48:ho=\EH:cm=\E&a%r%dc%dR:tc=2621: -# From: mcvax!westc!ahof@seismo.css.gov (Anton Hofland) (ahof@westc.uucp) -# For newer versions, :li should correspond to the actual number of lines. -hm|hp110|HP110|HP110A|Hewlett Packard 110A Portable Computer:\ - :co#80:li#16:am:db:cl=\E[2J:is=\E&j@\E[=7h:ch=\E&a%2C:cv=\E&a%2R:\ - :cm=\E&a%2r%2C:ho=\Eh:cr=^M:nl=^J:ks=\E&s1A:ke=\E&s0A:kd=\EB:\ - :ku=\EA:kr=\EC:kl=\ED:nd=\EC:up=\EA:le=^H:do=^J:bc=^H:bt=\Ei:\ - :ta=\EI:sf=\E[s\EH\EM\E[u\EJ:sr=\ET:al=\EL:dl=\EM:kb=^H:bl=^G:\ - :kh=\Eh:dc=\EP:im=\EQ:ei=\ER:mi:ms:xs:mr=\E[7m:mb=\E[5m:me=\E[0m:\ - :so=\E[7m:se=\E[0m:rs=\E[0m\E&j@:cd=\EJ:ce=\EK:kn#8:k1=\Ep:k2=\Eq:\ - :k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew: -# 2621 with no labels ever. Also prevents vi delays on escape. -hn|2621-nl|hp2621nl|2621nl|hp2621-nl|hp 2621 with no labels:\ - :ks@:ke@:kh@:ku@:kl@:kr@:kd@:tc=hp2621-fl: -# Needed for UCB ARPAVAX console, since lsi-11 expands tabs (wrong). -ht|hp2621-nt|2621nt|2621-nt|hp2621nt|hp 2621 w/no tabs:\ - :pt@:tc=hp2621: -# 2621 with labels on all the time - normal outside vi, function inside vi. -hw|hp2621wl|2621wl|2621-wl|hp2621-wl|hp 2621 w/labels:\ - :is=\E&jA\r:ke=\E&jA:tc=hp2621-fl: -# 2392 (from haddix@arpa?) -hz|2392|hp2392|hp2392a:\ - :bt=\Ei:ip=2:is=\E&j@\E3\r:if=/usr/share/tabset/stdcrt:\ - :ml=\El:MT:mu=\Em:km:\ - :mh=\E&dH:mr=\E&dB:us=\E&dD:mb=\E&dA:me=\E&d@:\ - :ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\Eh:ks=\E&s1A:ke=\E&s0A:tc=hp: -#HP 236 console -#from ddavis@ic.berkeley.edu -h7|236|hp236|HP236 internal terminal emulator:\ - :am:bs:li#24:co#80:ce=\EK:cl=\EF:cm=\EE%+ %+ :\ - :dc=\EJ:dl=\EH:ic=\EI:al=\EG:up=^K:im=:ei=:\ - :so=\EBI:se=\ECI:vs=\EDB:ve=\EDE: -# hp150 from ddavis@ic.berkeley.edu -h0|150|hp150|hp150a|150a:\ - :is=\E&s1A\E&f0a1k2L\Ep\r\E&k0K\E&f0a2k2L\Eq\r\E&f0a3k2L\Er\r\E&f0a4k2L\Es\r\E&f0a5k2L\Et\r\E&f0a6k2L\Eu\r\E&f0a7k2L\Ev\r\E&f0a8k2L\Ew\r\E&k0D\E&s0A:\ - :bt=\Ei:li#24:cm=\E&a%r%dc%dY:dc=2\EP:ip=2:pb#19200:so=\E&dJ:\ - :se=\E&d@:us=\E&dD:ue=\E&d@:me=\E&d@:kh=\Eh:ku=\EA:kl=\ED:kr=\EC:\ - :kd=\EB:kn#8:k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:\ - :k8=\Ew:ta=2^I:ct=\E3:st=\E1:do=^J:al=\EL:am:le=^H:\ - :bs:cd=\EJ:ce=\EK:ch=\E&a%dC:cl=\Eh\EJ:co#80:cv=\E&a%dY:da:db:dl=\EM:\ - :ei=\ER:im=\EQ:kb=^H:mi:nd=\EC:pt:up=\EA:xs:vt#6:sf=\ES:sr=\ET:\ - :vs=\E&s1A:ve=\E&s0A:ks=\E&jB\E&j@:ke=\E&j@: -# From leres@okeeffe: This works on a hp300 console running Utah 4.3 BSD -hc|300h|hp300h|HP Catseye console:\ - :am:bs:cm=\E&a%dy%dC:do=\EB:le=\b:nd=\EC:up=\EA:dc=\EP:dl=\EM:\ - :xs:da:db:mi:co#128:li#51:lm#0:sg#0:bt=\Ei:bl=^G:cr=\r:\ - :ct=\E3:cl=\E&a0y0C\EJ:ce=\EK:cd=\EJ:ch=\E&a%dC:cv=\E&a%dY:\ - :se=\E&d@:ue=\E&d@:im=\EQ:so=\E&dB:us=\E&dD:me=\E&d@:ei=\ER:\ - :if=/usr/share/tabset/stdcrt:al=\EL:kb=\b:kd=\EB:kh=\Eh:kl=\ED:\ - :kr=\EC:ku=\EA:ke=\E&s0A:ks=\E&s1A:sf=\n:ta=\t: -#From gregc@ernie.berkeley.edu (Greg Couch) -hd|9837|hp9837|98720|hp98720|98721|hp98721|HP 9000/300 workstations:\ - :bs:pt:am:xs:da:db:mi:\ - :co#128:li#46:lm#0:\ - :is=\E&v0m1b0i&j@:bt=\Ei:bl=^G:ct=\E3:\ - :cl=\E&a0y0C\EJ:ce=\EK:cd=\EJ:ch=\E&a%dC:\ - :cm=\E&a%dy%dC:do=\EB:le=^H:nd=\EC:\ - :up=\EA:dc=\EP:dl=\EM:im=\EQ:\ - :so=\E&v5S:us=\E&dD:me=\E&d@:ei=\ER:\ - :se=\E&v0S:ue=\E&d@:al=\EL:\ - :kb=^H:kd=\EB:kh=\Eh:kl=\ED:\ - :kr=\EC:ku=\EA:ke=\E&s0A:ks=\E&s1A:\ - :cv=\E&a%dY:sf=\n:st=\E1:\ - :ko=ce,cd,al,im,dl,dc:kN=\EU:kP=\EV -# Developed 07SEP90 by Charles A. Finnell of MITRE <finnell@mitre.org> -hx|98550|hp98550|98550a|hp98550a|HP 9000 Series 300 color console:\ - :ae=^O:al=\EL:am:as=^N:bl=^G:bs:bt=\Ei:cd=\EJ:ce=\EK:ch=\E&a%dC:\ - :cl=\EH\EJ:cm=\E&a%dy%dC:co#128:cr=\r:ct=\E3:cv=\E&a%dY:da:db:dc=\EP:\ - :dl=\EM:do=\n:ei=\ER:if=/usr/share/tabset/9837:im=\EQ:k1=\Ep:k2=\Eq:\ - :k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:kA=\EL:kC=\EJ:kD=\EP:\ - :kE=\EK:kF=\ES:kH=\EF:kI=\EQ:kL=\EM:kM=\ER:kN=\EU:kP=\EV:kR=\ET:\ - :kS=\EJ:kT=\E1:ka=\E3:kb=\b:kd=\EB:ke=\E&s0A:kh=\Eh:kl=\ED:kn#12:\ - :ko=al,cd,ce,ct,dc,dl,do,ei,im,nd,st,up:kr=\EC:ks=\E&s1A:kt=\E2:\ - :ku=\EA:le=\b:li#49:lm#0:mb=\E&dA:md=\E&dJ:me=\E&d@:mh=\E&dH:mi:\ - :mk=\E&ds:mr=\E&dJ:nd=\EC:pt:se=\E&d@:sf=\n:so=\E&dJ:st=\E1:ta=\t:\ - :ue=\E&d@:up=\EA:us=\E&dD:ve=\E*dQ:vi=\E*dR:xs: -# From: vic@fine.Princeton.EDU (Victor Duchovni) -hy|hp700-wy|HP700/41 emulating wyse30:\ - :al=0.7*\EE:am:bl=^G:bs:bt=\EI:bw:cd=\EY:ce=10\ET:cl=^Z:cm=\E=%+ %+ :\ - :co#80:cr=^M:ct=\E0:cv=\E[%+ :dc=\EW:dl=\ER:do=^V:ei=\Er:\ - :ho=^^:if=/usr/share/tabset/hp700-wy:ll=^^^K:mi:ms:nd=^L:nl=^J:pt:\ - :im=\Eq:is=\E~"\EC\Er\E(\EG0^C\E`9\E`1:kb=^?:kd=^V:\ - :kh=^^:kl=^H:ko=cl,ho,ce,bt,ta,im,ei,ce,cd:kr=:ku=:le=^H:li#24:\ - :rs=\E~"\EC\Er\E(\EG0^C\E`9\E`1:se=10\EG0:sg#1:so=10\EG4:sr=\Ej:\ - :st=\E1:ue=10\EG0:up=^K:ug#1:us=10\EG8: -# # -------------------------------- -# -# i: INFOTON (GENERAL TERMINAL) -# -# Infoton is now called General Terminal Corp. or some such thing. -# gt100 sounds like something DEC would come out with. Lets hope they don't. -i1|i100|gt100|gt100a|General Terminal 100A (formerly Infoton 100):\ - :do=^J:cl=^L:cd=\EJ:ce=\EK:li#24:co#80:\ - :al=\EL:dl=\EM:up=\EA:nd=\EC:ho=\EH:cm=\Ef%r%+ %+ :vb=\Eb\Ea:\ - :am:le=^H:bs:so=\Eb:se=\Ea: -i4|i400|400|infoton 400:\ - :do=^J:al=\E[L:am:le=^H:bs:ce=\E[N:cl=\E[2J:cm=%i\E[%3;%3H:co#80:\ - :dl=\E[M:li#25:nd=\E[C:up=\E[A:im=\E[4h\E[2Q:ei=\E[4l\E[0Q:\ - :dc=\E[4h\E[2Q\E[P\E[4l\E[0Q: -ia|addrinfo:\ - :do=^J:li#24:co#80:cl=^L:ho=^H:nd=^Y:cd=^K:\ - :up=^\:am:le=^Z:bc=^Z:cm=\037%+\377%+\377:ll=^H^\: -ik|infotonKAS:\ - :do=^J:am:le=^Z:bc=^Z:cd=^K:cl=^L:co#80:li#24:nd=^Y:up=^\:ll=^H^\: -# # -------------------------------- -# -# k: HEATHKIT (ZENITH) -# -kA|h19-a|h19a|heath-ansi|heathkit-a|heathkit h19 ansi mode:\ - :\ - :al=1*\E[1L:am:le=^H:bs:cd=\E[J:ce=\E[K:cl=\E[2J:cm=\E[%i%2;%2H:co#80:\ - :dc=\E[1P:dl=1*\E[1M:do=\E[1B:ei=\E[4l:ho=\E[H:im=\E[4h:li#24:mi:\ - :nd=\E[1C:as=\E[10m:ae=\E[11m:ms:pt:se=\E[0m:so=\E[7m:up=\E[1A:\ - :vs=\E[>4h:ve=\E[>4l:kb=^h:ku=\E[1A:kd=\E[1B:kl=\E[1D:kr=\E[1C:\ - :kh=\E[H:kn#8:k1=\EOS:k2=\EOT:k3=\EOU:k4=\EOV:k5=\EOW:l6=blue:\ - :l7=red:l8=white:k6=\EOP:k7=\EOQ:k8=\EOR:\ - :sr=\EM:is=\E<\E[>1;2;3;4;5;6;7;8;9l\E[0m\E[11m\E[?7h: -kB|h19-bs|h19bs|heathkit w/keypad shifted:\ - :ks=\Et:ke=\Eu:tc=h19-b: -#written by David Shewmake, UCSF Medical Information Science -#ucbvax!ucsfmis!shewmake -kC|h29|heath-29|z29|zenith-29:\ - :am:bc=\ED:bt=\E-:do=^J:\ - :al=\EL:le=^H:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:dc=\EN:\ - :dl=1*\EM:do=\EB:ei=\EO:ho=\EH:im=\E@:li#24:mi:nd=\EC:as=\EF:ae=\EG:\ - :ms:pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:\ - :kb=^H:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:kn#1:k0=\E~:l0=HOME:\ - :k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:k6=\EP:k7=\EQ:k8=\ER:k9=\E0I:\ - :es:hs:ts=\Ej\Ex5\Ex1\EY8%+ \Eo:fs=\Ek\Ey5:ds=\Ey1:us=\Es8:ue=\Es0: -#the z29-e entry sucks...but it works with emacs -kD|z29-e|zenith 29 hacked for emacs:\ - :ip=1.5:ks=\Et:ke=\Eu:vs@:ve@:al=1*\EL:am:le=^H:\ - :bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:dc=\EN:dl=1*\EM:\ - :do=\EB:ho=\EH:li#24:nd=\EC:as=\EF:ae=\EG:ms:\ - :pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:kb=^h:\ - :ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:kn#8:k1=\ES:k2=\ET:k3=\EU:\ - :k4=\EV:k5=\EW:l6=blue:l7=red:l8=white:k6=\EP:k7=\EQ:k8=\ER:es:hs:\ - :ts=\Ej\Ex5\Ex1\EY8%+ \Eo:fs=\Ek\Ey5:ds=\Ey1: -# z29 in ansi mode. Assumes that the cursor is in the correct state, and that -# the world is stable. `rs' causes the terminal to be reset to the state -# indicated by the name. kc -> key click, nkc -> no key click, uc -> underscore -# cursor, bc -> block cursor. -# from Mike Meyers -kF|z29a|z29a-kc-bc|h29a-kc-bc|heath/zenith 29 in ansi mode:\ - :do=^J:co#80:li#24:cl=\E[2J:pt:ho=\E[H:\ - :le=^H:bs:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:mb=\E[5m:mr=\E7m:\ - :ce=\E[K:cd=\E[J:so=\E[7;2m:se=\E[m:us=\E[4m:ue=\E[m:mh=\E[2m:\ - :md=\E[2m:mr=\E[7m:mb=\E[5m:me=\E[m:\ - :rs=\E<\E[1;24r\E[24;1H\E[?7h\E[>4h\E[>1;2;3;5;6;7;8;9l\E[m\E[11m:\ - :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^H:\ - :k1=\EOS:k2=\EOT:k3=\EOU:k4=\EOV:k5=\EOW:k6=\EOP:k7=\EOQ:k8=\EOR:\ - :k9=\EOX:k0=\E[~:l0=help:kn#2:ko=ho,cd:if=/usr/share/tabset/zenith29:\ - :es:hs:ts=\E[s\E[>5;1h\E[25;%i%dH\E[1K:fs=\E[u\E[>5l:ds=\E[>1l:\ - :cs=\E[%i%d;%dr:sr=\EM:sf=\ED:DO=\E[%dB:UP=\E[%dA:LE=\E[%dD:\ - :RI=\E[%dC:AL=\E[%dL:DL=\E[%dM:sc=\E[s:rc=\E[r:dc=\E[1P:DC=\E[%dP:\ - :kC=\E[J:ct=\E[3g:st=\EH:ti=\E[?7l:te=\E[?7h:ps=\E#7: -kG|z29a-kc-uc|h29a-kc-uc|heath/zenith 29 in ansi mode:\ - :rs=\E<\E[1;24r\E[24;1H\E[?7h\E[>1;2;3;4;5;6;7;8;9l\E[m\E[11m:\ - :tc=z29a: -kH|z29a-nkc-bc|h29a-nkc-bc|heath/zenith 29 in ansi mode:\ - :rs=\E<\E[1;24r\E[24;1H\E[?7h\E[>2;4h\E[>1;3;5;6;7;8;9l\E[m\E[11m:\ - :tc=z29a: -kI|z29a-nkc-uc|h29a-nkc-uc|heath/zenith 29 in ansi mode:\ - :rs=\E<\E[1;24r\E[24;1H\E[?7h\E[>2h\E[>1;3;4;5;6;7;8;9l\E[m\E[11m:\ - :tc=z29a: -#z100 entry from Brad Brahms at TRW (Brahms@USC-ECLC) -# usenet: {decvax,ucbvax}!trwrb!trwspp!brahms -kc|z100|h100|z110|z-100|h-100|heath/zenith z-100 pc with color monitor:\ - :vs=\Ex4\Em71:ve=\Ey4\Em70:tc=z100bw: -kY|z100bw|h100bw|z110bw|z-100bw|h-100bw|heath/zenith z-100 pc:\ - :al=5*\EL:bs:cd=\EJ:ce=\EK:cl=5*\EE:cm=1*\EY%+ %+ :co#80:dc=1*\EN:\ - :dl=5*\EM:do=\EB:ei=\EO:ho=\EH:im=\E@:li#24:mi:nd=\EC:as=\EF:ae=\EG:\ - :ms:pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:\ - :kb=^h:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:kn#10:\ - :k0=\EJ:k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:\k6=\EP:k7=\EQ:\ - :k8=\ER:k9=\EOI: -kp|p19:\ - :al=2*\EL:dl=2*\EM:tc=h19-b: -kU|h19-us|h19us|heathkit w/keypad shifted/underscore cursor:\ - :ks=\Et:ke=\Eu:tc=h19-u: -kb|h19|heath|h19-b|h19b|heathkit|heath-19|z19|zenith|heathkit h19:\ - :al=1*\EL:am:le=^H:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:dc=\EN:\ - :dl=1*\EM:do=\EB:ei=\EO:ho=\EH:im=\E@:li#24:mi:nd=\EC:as=\EF:ae=\EG:\ - :ms:pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:\ - :kb=^h:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:kn#8:ke=\E>:ks=\E=:\ - :k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:\ - :l6=blue:l7=red:l8=white:k6=\EP:k7=\EQ:k8=\ER:\ - :es:hs:ts=\Ej\Ex5\Ex1\EY8%+ \Eo:fs=\Ek\Ey5:ds=\Ey1: -ke|h19-e|h19e|h19 for emacs:ip=1.5:tc=h19-us: -ku|h19-u|h19u|heathkit with underscore cursor:\ - :vs@:ve@:tc=h19-b: -kg|h19-g|h19g|heathkit w/block cursor:\ - :ve=\Ex4:tc=h19-b: -# from ucscc!B.fiatlux@ucbvax.berkeley.edu -zx|ztx|ztx11|zt-1|htx11|ztx-1-a|ztx-10/11:\ - :al=\EL:am:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:\ - :dl=\EM:do=^J:ho=\EH:is=\Ej\EH\Eq\Ek\Ev\Ey1\Ey5\EG\Ey8\Ey9\Ey>:\ - :k0=\ES:k1=\EB:k2=\EU:k3=\EV:k4=\EW:k5=\EP:k6=\EQ:k7=\ER:kb=^H:kd=\EB:\ - :kl=\ED:kr=\EC:ku=\EA:le=^H:li#24:nd=\EC:pt:se=\Eq:so=\Es5:\ - :sr=\EI:sr=\EI:ue=\Eq:up=\EA:us=\Es2:\ - :es:hs:ts=\Ej\Ex5\Ex1\EY8%+ \Eo:fs=\Ek\Ey5:ds=\Ey1: -# # -------------------------------- -# -# l: LEAR SIEGLER (ADM) -# -# If the adm31 gives you trouble with standout mode, check the DIP switch -# in position 6, bank @c11, 25% from back end of pc. Should be OFF. -# If there is no such switch, you have an old adm31 and must use oadm31 -l1|adm31|31|lsi adm31:\ - :is=\Eu\E0:do=^J:al=\EE:am:le=^H:bs:ce=\ET:cm=\E=%+ %+ :\ - :cl=\E*:cd=\EY:co#80:dc=\EW:dl=\ER:ei=\Er:ho=^^:im=\Eq:\ - :k0=^A0\r:k1=^A1\r:k2=^A2\r:k3=^A3\r:k4=^A4\r:\ - :k5=^A5\r:k6=^A6\r:k7=^A7\r:k8=^A8\r:k9=^A9\r:kd=^J:kl=^H:kr=^L:ku=^K:\ - :li#24:ma=j^Jk^P^K^Pl ^R^L^L :mi:nd=^L:\ - :se=\EG0:so=\EG1:up=^K:us=\EG1:ue=\EG0: -l2|adm2|lsi adm2:\ - :do=^J:al=\EE:am:le=^H:bs:cd=\EY:ce=\ET:cl=\E;:\ - :cm=\E=%+ %+ :co#80:dc=\EW:dl=\ER:\ - :ei=:ho=^^:ic=\EQ:im=:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:li#24:nd=^L:up=^K: -l3|adm3|3|lsi adm3:\ - :do=^J:am:le=^H:bs:cl=^Z:li#24:ma=^K^P:co#80: -l4|adm42|42|lsi adm42:\ - :vs=\EC\E3 \E3(:do=^J:al=270\EE:am:le=^H:bs:cd=\EY:ce=\ET:cl=\E;:\ - :cm=\E=%+ %+ :co#80:dc=\EW:dl=\ER:ei=\Er:im=\Eq:ip=6*:li#24:\ - :bt=\EI:nd=^L:se=\EG0:so=\EG4:up=^k:ma=^K^P:pc=\177: -l5|adm5|5|lsi adm5:\ - :do=^J:cd=\EY:ce=\ET:do=^J:kb=^H:kh=^^:\ - :ma=^Hh^Jj^Kk^Ll^^H:se=\EG:sg#1:so=\EG:tc=adm3aplus: -l7|adm20|lear siegler adm20:\ - :am:li#24:co#80:bs:cl=^Z:cm=\E=%i%r%+^_%+^_:nd=^L:up=^K:ho=^^:ce=\ET:\ - :cd=\EY:al=\EE:dl=\ER:im=:ei=:ic=\EQ:dm=:ed=:dc=\EW:so=\E):se=\E(:\ - :bt=\EI:pt:kn#7:k1=^A:k2=^B:k3=^W:k4=^D:k5=^E:k6:^X:k7=^Z: -# From Andrew Scott Beals <bandy@lll-crg.ARPA> -l8|adm12|12|lsi adm12:\ - :is=\Eq:do=^J:al=\EE:am:le=^H:bs:ce=\ET:cm=\E=%+ %+ :cl=^Z:cd=\EY:\ - :co#80:dc=\EW:dl=\ER:ei=\Er:ho=^^:im=\Eq:\ - :k0=^A0\r:k1=^A1\r:k2=^A2\r:k3=^A3\r:k4=^A4\r:\ - :k5=^A5\r:k6=^A6\r:k7=^A7\r:k8=^A8\r:k9=^A9\r:kd=^J:kl=^H:kr=^L:ku=^K:\ - :li#24:ma=j^Jk^P^K^Pl ^R^L^L :mi:nd=^L:\ - :se=\EG0:so=\EG4:up=^K:us=\EG1:ue=\EG0: -la|adm3a|3a|lsi adm3a:\ - :am:do=^J:le=^H:bs:cm=\E=%+ %+ :cl=1^Z:co#80:ho=^^:\ - :li#24:ma=^K^P:nd=^L:up=^K: -lb|adm3a+|3a+|adm3aplus:\ - :kl=^H:kd=^J:ku=^K:kr=^L:tc=adm3a: -lc|adm22|22|lsi adm22:\ - :is=\E%\014\014\014\016\003\000\003\002\003\002\000\000\000\000\000\000\000\000\000\000\000:\ - :al=\EE:am:bs:bt=\EI:cd=\Ey:ce=\Et:cl=\E+:cm=\000\E=%+ %+ :co#80:\ - :dc=\EW:dl=\ER:do=^J:em=:ho=^^:ic=\EQ:im=:\ - :k1=\001@\015:k2=\001A\015:k3=\001B\015:k4=\001C\015:\ - :k5=\001D\015:k6=\001E\015:k7=\001F\015:kn#7:\ - :ko=ho:l1=F1:l2=F2:l3=F3:l4=F4:l5=F5:l6=F6:l7=F7:\ - :kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:li#24:\ - :ma=j^Jk^P^K^Pl ^R^L^L :nd=^L:se=\E(:so=\E):ta=\Ei:up=^K: -#From: stephen%comp.lancs.ac.uk@ucl-cs.arpa -le|adm11|lsi adm11:\ - :do=^J:bs:\ - :cd=\EY:ce=\ET:kb=^H:kh=^^:\ - :ma=^Hh^Jj^Kk^Ll^^H:so=\E):se=\E(:\ - :kl=^H:kd=^J:ku=^K:kr=^L:\ - :am:cm=\E=%+ %+ :cl=^Z:co#80:li#24:nd=^L:up=^K:\ - :hs:ts=\EF\E):fs=\E(^M:ds=\Eh: -# # -------------------------------- -# -# m: MICROTERM -# -# These mime1 entries refer to the Microterm Mime I or Mime II. -# The default mime is assumed to be in enhanced act iv mode. -m3|mime3a|mime1 emulating 3a:\ - :am@:ma=^X ^K^J^Z^P:ku=^Z:kd=^K:kl=^H:kr=^X:tc=adm3a: -# New "safe" cursor movement (5/87) from reuss@umd5. Prevents freakout with -# out-of-range args on Sytek multiplexors. No so and se since it gets confused -# and it's too dim anyway. No ic since Sytek insists ^S means xoff. -m4|act4|microterm|microterm act iv:\ - :am:bs:cd=2.2*^_:ce=.1*^~:cl=12^L:cm=^T%+^X%>/0%+P:co#80:li#24:\ - :le=^H:nd=^X:up=^Z:ho=^]:al=2.3*^A:do=^K:dc=.1*^D:dl=2.3*^W:\ - :ku=^Z:kd=^K:kl=^H:kr=^X:\ - :.so=^N:.se=^N:.ic=2^S:.ei=:.im=:.ip=.1*^V:.cm=^T%.%.: -# The padding on sr and ta for act5 and mime is a guess and not final. -# The act 5 has hardware tabs, but they are in columns 8, 16, 24, 32, 41 (!)... -m5|microterm5|act5|microterm act v:\ - :uc=^H\EA:sr=3\EH:ku=^Z:kd=^K:kl=^H:kr=^X:ma=^Z^P^Xl^Kj:tc=act4: -# Act V in split screen mode. act5s is not tested and said not to work. -mS|act5s|skinny act5:\ - :ti=\EP:te=\EQ:li#48:co#39:tc=act5: -# Mimes using brightness for standout. Half bright is really dim unless -# you turn up the brightness so far that lines show up on the screen. -# uc is disabled to get around a curses bug, should be put back in someday. -mf|mime-fb|full bright mime1:\ - :so=^Y:se=^S:is=^S\E:tc=mime: -mh|mime-hb|half bright mime1:\ - :so=^S:se=^Y:is=^Y\E:tc=mime: -mm|mime|mime1|mime2|mimei|mimeii|microterm mime1:\ - :do=^J:al=80^A:am:le=^H:bs:cd=^_:ce=^^:cl=\035^C:cm=^T%+^X%> 0%+P:\ - :co#80:dl=80^W:ta=2^I:li#24:nd=^X:pt:uc=^U:up=^z:ho=\035:do=^K:\ - :is=^S\E^Q:ma=^X ^K^J^Z^P:ku=^Z:kd=^K:kl=^H:kr=^X:sr=3^R:vt#9: -# These termcaps (for mime 2a) put the terminal in low intensity mode -# since high intensity mode is so obnoxious. -ms|mime2a-s|microterm mime2a (emulating an enhanced soroc iq120):\ - :do=^J:al=20*^A:am:le=^H:bs:cd=20*\EJ:ce=\EK:cl=\EL:cm=\E=%+ %+ :\ - :us=\E6:ue=\E7:co#80:dc=\ED:\ - :dl=20*^W:kl=^H:kr=^L:ku=^K:kd=^J:ho=^^:is=\E):sr=\EI\ - :im=\EE:ei=^Z:ip=2:li#24:nd=^L:so=\E\072:se=\E;:up=\EI: -# This is the preferred mode (but ^X can't be used as a kill character) -mv|mime2a|mime2a-v|microterm mime2a (emulating an enhanced vt52):\ - :do=^J:al=20*^A:le=^H:bs:cd=20*\EQ:co#80:ce=\EP:cl=\EL:cm=\EY%+ %+ :\ - :is=^Y:dc=^N:dl=20*^W:ip=2:ei=^Z:ho=\EH:im=^O:kd=\EB:kl=\ED:kr=\EC:\ - :ku=\EA:li#24:nd=\EC:pt:se=\E9:so=\E8:up=\EA:sr=\EA:us=\E4:ue=\E5: -mx|mime3ax|mime-3ax|mime1 emulating enhanced 3a:\ - :al=80^A:dl=80^W:pt:ce=^X:cd=^_:tc=mime3a: -# # -------------------------------- -# -# p: PERKIN ELMER -# -pe|pe550|bantam|perkin elmer 550:\ - :do=^J:le=^H:bs:co#80:ce=20\EI:cl=20\EK:cm=\EX%+ \EY%+ :\ - :ho=\EH:li#24:ll=\EH\EA:nd=\EC:up=\EA:ma=^Z^P:cd=6^N@^V: -pf|fox|perkin elmer 1100:\ - :ct=\E3:st=\E1:do=^J:\ - :am:le=^H:bs:cd=5.5*\EJ:ce=\EI:cl=132\EH\EJ:co#80:ho=\EH:li#24:\ - :ll=\EH\EA:nd=\EC:cm=\EX%+ \EY%+ :up=\EA:vb=^P^B^P^C: -po|owl|perkin elmer 1200:\ - :ct=\E3:st=\E1:do=^J:al=5.5*\EL:am:le=^H:\ - :bs:cd=5.5*\EJ:ce=5.5\EI:cl=132\EH\EJ:ho=\EH:ll=\EH\EA:\ - :cm=\EX%+ \EY%+ :co#80:dc=5.5*\EO:dl=5.5*\EM:ei=:ic=\EN:im=:ip=5.5*:\ - :kb=^h:in:li#24:nd=\EC:up=\EA:se=\E!\200:so=\E!^H:vb=^P^B^P^C:\ - :k1=\ERA:k2=\ERB:k3=\ERC:k4=\ERD:k5=\ERE:k6=\ERF:\ - :k7=\ERG:k8=\ERH:k9=\ERI:k0=\ERJ: -# # -------------------------------- -# -# q: HOME MADE TERMINALS -# -qB|bc|bill croft homebrew:\ - :do=^J:am:le=^H:bs:cm=\E=%+ %+ :cl=^Z:co#96:ho=^^:li#72:\ - :nd=^L:up=^K:vb=: -qN|nucterm|rayterm|NUC homebrew:\ - :do=^J:am:le=^H:bs:cl=1^L:li#24:co#80:nd=^C:\ - :up=^N:ho=^B:ll=^K:ce=^A:cd=^E: -qb|ex3000:\ - :do=^J:li#24:co#80:ho=^Q: -qc|carlock|klc:\ - :do=^J:al=^E:am:bs:ce=^U:cl=100^Z:cm=\E=%+ %+ :co#80:dc=\177:dl=^D:\ - :dm=:ed=:ei=^T:ho=^^:im=^T:li#24:nd=^L:se=^V:so=^V:up=^K:vb=\EV\EV: -# uVAX -qd|qdss|qdcons|qdss glass tty:\ - :am:do=^J:le=^H:bs:cm=\E=%.%.:cl=1^Z:co#128:li#57::nd=^L:up=^K: -qe|exidy|exidy2500|exidy sorcerer as dm2500:\ - :do=^J:al=^P^J^X:am:le=^H:bs:ce=^W:cl=^^:cm=^L%r%n%.%.:co#64:\ - :dc=\b:dl=^P^Z^X:dm=^P:ed=^X:ei=^X:ho=^B:ic=^\:\ - :im=^P:li#30:nd=^\:pt:so=^N:se=^X:up=^Z: -qn|netx|netronics:\ - :do=^J:le=^H:bs:cd=2000^F^E:ce=1600^E:cl=466^L:cm=\E=%+@%+@:\ - :co#64:ho=^D:li#16:ma=j^Jk^Pl :nd=\E+@A:pc=\200:sr=\E=@@^K:up=^K: -# This came from the comp ctr who got it from some user. Smart indeed! -qs|sexidy|exidy smart:\ - :do=^J:li#24:co#64:cl=^l:ho=^q:nd=^s:\ - :up=^w:le=^H:bs:le=^a:bc=^a:ma=^x^J:kd=^S: -qu|ubell|ubellchar:\ - :if=/usr/share/tabset/ubell:do=^J:am:le=^H:bs:pt:ce=\Ed:cl=^Z:\ - :cm=\E=%+ %+ :co#80:li#24:nd=^L:up=^K:ma=j^Jk^P^K^Pl :ho=^^: -qw|ttyWilliams:\ - :do=^J:co#80:li#12:le=^Y:bc=^Y:do=^K:up=^Z:cl=^^:ce=^_:am:ho=^]:nd=^X: -qx|xitex|xitex sct-100:\ - :do=^J:le=^H:bs:cd=2000^F^E:ce=1600^E:cl=400^L:cm=\E=%+@%+@:co#64:\ - :ho=^D:li#16:ma=j^Jk^Pl :nd=\E+@A:pc=\200:sr=\E=@@^K:up=^K: -# # -------------------------------- -# -# s: SPECIALS -# -# Special "terminals". These are used to label tty lines when you don't -# know what kind of terminal is on it. The characteristics of an unknown -# terminal are the lowest common denominator - they look about like a ti 700. -sa|network:\ - :tc=unknown: -sb|arpanet:\ - :tc=unknown: -sc|bussiplexer:\ - :tc=unknown: -sd|du|dialup:\ - :tc=unknown: -se|ethernet:\ - :tc=unknown: -sl|lpr|printer|print|printing|line printer:\ - :do=^J:le=^H:bs:co#132:hc:os: -sp|plugboard|patch|patchboard:\ - :tc=unknown: -su|dumb|un|unknown:\ - :am:co#80:do=^J: -sw|switch|intelligent switch:\ - :tc=unknown: -sx|ansi|any ansi terminal with pessimistic assumptions:\ - :co#80:li#24:cl=50\E[;H\E[2J:bs:am:cm=\E[%i%d;%dH:\ - :nd=\E[C:up=\E[A:ce=\E[K:ho=\E[H:pt: -# # -------------------------------- -# -# t: TEXAS INSTRUMENTS -# -t3|ti|ti700|ti733|735|ti735|ti silent 700:\ - :do=^J:le=^H:bs:co#80:hc:os:dC#162: -t4|ti745|745|743|ti silent 745:\ - :do=^J:le=^H:bs:co#80:hc:os: -t8|ti800|ti omni 800:\ - :do=^J:le=^H:bs:co#132:hc:os: -# From lesleymw@topaz.berkeley.edu -t9|ti931|ti 931:\ - al=\EN:am:bs:cd=\EJ:ce=\EI:cl=\EL:cm=\EY%+ %+ :co#80:dl=\EO:do=\EB:\ - eo:ho=\EH:li#24:ku=\EA:kd=\EB:kr=\EC:kl=\ED:mi:nd:sf=\Eb:sr=\Ea:up=\EA: -# # -------------------------------- -# -# v: TELEVIDEO -# -# There are some tvi's that require incredible amounts of padding and -# some that don't. I'm assuming 912 and 920 are the old slow ones, -# and 912b, 912c, 920b, 920c are the new ones that don't need padding. -v1|tvi912|912|920|tvi920|old televideo:\ - :ct=\E3:st=\E1:do=^J:\ - :al=33*\EE:le=^H:ce=\ET:cm=\E=%+ %+ :cl=^Z:co#80:dc=\EW:dl=33*\ER:ei=:\ - :kb=^H:ku=^K:kd=^J:kl=^H:kr=^L:k0=^AI\r:k1=^A@\r:k2=^AA\r:k3=^AB\r:\ - :bs:am:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:\ - :ho=^^:im=:ic=\EQ:li#24:nd=^L:pt:se=\Ek:so=\Ej:up=^K:us=\El:ue=\Em:\ - :ma=^K^P^L :sg#1:ug#1:if=/usr/share/tabset/stdcrt: -# the 912 has a <funct> key that's like shift: <funct>8 xmits "^A8\r". -# The 920 has this plus real function keys that xmit different things. -# Termcap makes you use the funct key on the 912 but the real keys on the 920. -v2|912b|912c|tvi912b|tvi912c|tvi|new televideo 912:\ - :al=5*\EE:dl=5*\ER:tc=tvi912: -v3|920b|920c|tvi920b|tvi920c|new televideo 920:\ - :k0=^AI\r:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\ - :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:al=5*\EE:dl=5*\ER:tc=tvi912: -# set to page 1 when entering ex (\E-17 ) -# reset to page 0 when exiting ex (\E-07 ) -v4|tvi912-2p|tvi920-2p|912-2p|920-2p|tvi-2p|televideo w/2 pages:\ - :ti=\E-17 :te=\E-07 :tc=tvi912: -v5|tvi950-ap|tvi 950 w/alt pages:\ - :is=\E\\1:ti=\E-06 :te=\E-16 :tc=tvi950: -v6|tvi950-b|bare tvi950 no is:\ - :is@:tc=tvi950: -v7|tvi950-ns|tvi950 w/no standout:\ - :so@:se@:us@:ue@:tc=tvi950: -vi|tvi925|925|televideo model 925:\ - :hs:xn:am:bs:co#80:li#24:cm=\E=%+ %+ :cl=\E*:cd=\Ey:ce=\Et:is=\El\E":\ - :al=\EE:dl=\ER:im=:ei=:ic=\EQ:dc=\EW:if=/usr/share/tabset/stdcrt:\ - :ho=^^:nd=^L:bt=\EI:pt:so=\EG4:se=\EG0:sg#1:us=\EG8:ue=\EG0:ug#1:\ - :up=^K:do=^V:kb=^H:ku=^K:kd=^V:kl=^H:kr=^L:kh=^^:ma=^V^J^L :\ - :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:\ - :k8=^AG\r:k9=^AH\r:k0=^AI\r:ko=ic,dc,al,dl,cl,ce,cd,bt:\ - :ts=\Ef:fs=^M\Eg:ds=\Eh:sr=\Ej: -vj|tvi925vb|925vb|televideo model 925 visual bells:\ - :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\ - :tc=tvi925: -# Since the 925's uses a character position to store the escape sequences to go -# in and out of both stand out and underline modes, screen positioning is -# difficult. The following 925 entries don't use these modes. -vn|tvi925n|925n|televideo model 925 no standout or underline:\ - :so@:se@:us@:ue@:tc=tvi925: -vk|tvi925vbn|925vbn|televideo model 925 visual bells no so or ul:\ - :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\ - :tc=tvi925n: -# entry by Tim Curry 5/21/82 Univ. of Central Fla. duke!ucf-cs!tim -v9|925a|tvi925a|TeleVideo Model 925:\ - :al=\EE:am:bs:bt=\EI:bw:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :co#80:dc=\EW:\ - :dl=\ER:do=^V:ei=:ic=\EQ:if=/usr/share/tabset/std:im=:kb=^H:kd=^V:\ - :kh=^^:kl=^H:kn#12:kr=^L:ku=^K:li#24:nd=^L:pt:se=\EG0:sg#1:so=\EG4:\ - :ue=\EG0:ug#1:up=^K:us=\EG8:is=\El\ - :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\ - :ve=\E.4:vs=\E.2: -# The following tvi descriptions from B:pjphar and virus!mike -# is for all 950's. It sets the following attributes: -# full duplex (\EDF) write protect off (\E() -# conversation mode (\EC) graphics mode off (\E%) -# white on black (\Ed) auto page flip off (\Ew) -# turn off status line (\Eg) clear status line (\Ef\r) -# normal video (\E0) monitor mode off (\EX or \Eu) -# edit mode (\Er) load blank char to space (\Ee\040) -# line edit mode (\EO) enable buffer control (^O) -# protect mode off (\E\047) duplex edit keys (\El) -# program unshifted send key to send line all (\E016) -# program shifted send key to send line unprotected (\E004) -# set the following to nulls: -# field delimiter (\Ex0\200\200) -# line delimiter (\Ex1\200\200) -# start-protected field delimiter (\Ex2\200\200) -# end-protected field delimiter (\Ex3\200\200) -# set end of text delimiter to carriage return/null (\Ex4\r\200) -# CHANGED 4-29-87 to set tabs and keep status line --John Kunze (jak@opal) -va|tvi950|950|televideo950:\ - :ct=\E3:st=\E1:do=^J:\ - :is=\EDF\EC\Ed\EG0\Er\EO\E\047\E(\E%\Ew\EX\Ee ^O\ - \El\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\ - \Ex3\200\200\Ex4\r\200\Ef\r:if=/usr/share/tabset/stdcrt:\ - :al=\EE:am:le=^H:bs:bt=\EI:cd=\Ey:ce=\Et:cl=\E*:cm=\E=%+ %+ :\ - :co#80:dc=\EW:dl=\ER:do=^V:ei=\Er:ho=^^:im=\Eq:k0=^A0\r:\ - :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\ - :k7=^AF\r:k8=^AG\r:k9=^AH\r:kb=^H:kd=^V:kh=^^:kl=^H:\ - :ko=ic\054dc\054al\054dl\054cl\054bt\054ce\054cd:kr=^L:\ - :ku=^K:li#24:ma=^Vj^Kk^Hh^Ll^^H:mi:ms:nd=^L:pt:se=\EG0:\ - :sg#1:so=\EG4:sr=\Ej:ue=\EG0:ug#1:up=^K:us=\EG8:\ - :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\ - :xn:hs:ts=\Eg\Ef:fs=\r:ds=\Eg\Ef\r: -# -# is for 950 with two pages adds the following: -# set 48 line page (\E\\2) -# place cursor at page 0, line 24, column 1 (\E-07 ) -# set local (no send) edit keys (\Ek) -# -# two page 950 adds the following: -# when entering ex, set 24 line page (\E\\1) -# when exiting ex, reset 48 line page (\E\\2) -# place cursor at 0,24,1 (\E-07 ) -# set duplex (send) edit keys (\El) when entering vi -# set local (no send) edit keys (\Ek) when exiting vi -# -vb|tvi950-2p|950-2p|televideo950 w/2 pages:\ - :is=\EDF\EC\Ed\EG0\Eg\Er\EO\E\047\E(\E%\Ew\EX\Ee ^O\ - \Ek\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\ - \Ex3\200\200\Ex4\r\200\E\\2\E-07 \ - :te=\E\\2\E-07 :ti=\E\\1\E-07 :ks=\El:ke=\Ek:tc=tvi950: -# -# is for 950 with four pages adds the following: -# set 96 line page (\E\\3) -# place cursor at page 0, line 24, column 1 (\E-07 ) -# -# four page 950 adds the following: -# when entering ex, set 24 line page (\E\\1) -# when exiting ex, reset 96 line page (\E\\3) -# place cursor at 0,24,1 (\E-07 ) -# -vc|tvi950-4p|950-4p|televideo950 w/4 pages:\ - :is=\EDF\EC\Ed\EG0\Eg\Er\EO\E\047\E(\E%\Ew\EX\Ee ^O\ - \Ek\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\ - \Ex3\200\200\Ex4\r\200\E\\3\E-07 \ - :te=\E\\3\E-07 :ti=\E\\1\E-07 :ks=\El:ke=\Ek:tc=tvi950: -# -# is for reverse video 950 changes the following: -# set reverse video (\Ed) -# -# set vb accordingly (\Ed ...nulls... \Eb) -# -vd|tvi950-rv|950-rv|televideo950 rev video:\ - :is=\EDF\EC\Eb\EG0\Eg\Er\EO\E\047\E(\E%\Ew\EX\Ee ^O\ - \El\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\ - \Ex3\200\200\Ex4\r\200:\ - :vb=\Ed\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Eb:\ - :tc=tvi950: -# -# uses the appropriate entries from 950-2p and 950-rv -# -ve|tvi950-rv-2p|950-rv-2p|televideo950 rev video w/2 pages:\ - :is=\EDF\EC\Eb\EG0\Eg\Er\EO\E\047\E(\E%\Ew\EX\Ee ^O\ - \Ek\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\ - \Ex3\200\200\Ex4\r\200\E\\2\E-07 :\ - :vb=\Ed\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Eb:\ - :te=\E\\2\E-07 :ti=\E\\1\E-07 :ks=\El:ke=\Ek:tc=tvi950: -# -# uses the appropriate entries from 950-4p and 950-rv -# -vf|tvi950-rv-4p|950-rv-4p|televideo950 rev video w/4 pages:\ - :is=\EDF\EC\Eb\EG0\Er\EO\E\047\E(\E%\Ew\EX\Ee ^O\ - \Ek\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\ - \Ex3\200\200\Ex4\r\200\E\\3\E-07 :\ - :vb=\Ed\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Eb:\ - :te=\E\\3\E-07 :ti=\E\\1\E-07 :ks=\El:ke=\Ek:tc=tvi950: -vg|tvi924|924|televideo model 924:\ - :am:bs:xn:co#80:li#24:cm=\E=%+ %+ :cl=\E*0:cd=\Ey:ce=\Et:is=\Ek0\E"^O:\ - :al=\EE:dl=\ER:im=:ei=:ic=\EQ:dc=\EW:if=/usr/share/tabset/stdcrt:ho=^^:\ - :nd=^L:bt=\EI:pt:so=\EG4:se=\EG0:us=\EG8:ue=\EG0:up=^K:do=^V:kb=^H:\ - :ku=^K:kd=^V:kl=^H:kr=^L:kh=^^:ma=^Vj^Kk^Ll^^H^R^L:k1=^A@\r:k2=^AA\r:\ - :k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:\ - :k0=^AI\r:ko=ic,dc,al,dl,cl,ce,cd,bt:sr=\Ej:\ - :hs:fs=^Y\Es1:ts=\Ef:ds=\Es0\Ef^Y: -vo|tvi924vb|924vb|televideo model 924 visual bells:\ - :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\ - :tc=tvi924: -# tvipt termcap from armsis@amber (Gene Rochlin), 9/19/84. Works with vi and -# rogue. NOTE: Esc v sets autowrap on, Esc u sets 80 char/line (rather than -# 40), Esc K chooses the normal character set. Not sure padding is needed, but -# adapted from the tvi920c termcap. so and us are klutzy, but at least use no -# screen space. -vp|tvipt|televideopt:if=/usr/share/tabset/stdcrt:\ - :is=\Ev\Eu\EK:al=5*\EE:am:bs:bt=\EI:ce=\ET:cm=\E=%+ %+ :cl=^Z:co#80:\ - :dl=5*\ER:kb=^H:ku=^K:kd=^J:kl=^H:kr=^L:ho=^^:li#24:nd=^L:se=\EF:\ - :so=\EG1@A\EH:ue=\EF:us=\EG1B@\EH:up=^K:ma=^Kk^Ll^R^L: -# Vanilla tvi910 -- W. Gish (cswarren@violet) 10/29/86 -vm|tvi910|910|televideo model 910:if=/usr/share/tabset/stdcrt:\ - :bs:bt=\EI:cd=\EY:ce=\ET:cm=\E=%+ %+ :cl=^Z:co#80:\ - :kb=^H:ku=^K:kd=^J:kl=^H:kr=^L:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:\ - :k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:k0=^AI\r:\ - :li#24:nd=^L:pt:se=\EG0:so=\EG4:up=^K:us=\EG8:ue=\EG0:\ - :ho=\E=\001\001:ma=^Kk^Ll^R^L:sg#1: -# from Alan R. Rogers (rogers%albany@csnet-relay) -vh|tvi910+|910+|televideo 910+:\ - :al=5*\EE:am:bs:bt=\EI:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+\040%+\040:\ - :co#80:dc=\EW:dl=\ER:do=^J:ei=:ho=^^:ic=\EQ:\ - :if=/usr/share/tabset/stdcrt:im=:k0=^A@\r:k1=^AA\r:k2=^AB\r:k3=^AC\r:\ - :k4=^AD\r:k5=^AE\r:k6=^AF\r:k7=^AG\r:k8=^AH\r:k9=^AI\r:kb=^H:\ - :kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:li#24:ll=\E=7\040:ma=^K^P^L\040:\ - :nd=^L:pt:se=\EG0:sg#1:so=\EG4:ue=\EG0:up=^K:us=\EG8:xn: -# From Humberto Appleton, beto@cs.utexas.edu, 880521 UT Austin -vs|tvi970|970|televideo970:\ - :is=\E<\E[?21l\E[19h\E[1Q\E[10l\E[7l\E[H\E[2J:\ - :ae=\E(B:al=\E[L:as=\E(B:bs:bt=\E[Z:\ - :cd=\E[0J:ce=\E[0K:cl=\E[H\E[2J:cm=\E[%i%d;%df:co#80:\ - :da:db:dc=\E[P:dl=\E[M:do=\ED:ei=\E[4l:im=\E[4h:\ - :k1=\E?a:k2=\E?b:k3=\E?c:k4=\E?d:k5=\E?e:k6=\E?f:k7=\E?g:k8=\E?h:\ - :k9=\E?i:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\ - :li#24:mi:ms:nd=\E[C:pt:se=\E[0m:sg#0:so=\E[7m:sr=\EM:\ - :ue=\E[0m:ug#0:up=\EM:us=\E[4m:vs=\E[1Q:\ - :vb=\E[5;m\200\200\200\200\200\200\200\200\200\E[0;m -# From fair@ucbarpa Sun Oct 27 07:21:05 1985 -v6|ims950-b|bare ims950 no is:\ - :is@:tc=ims950: -v7|ims950-ns|ims950 w/no standout:\ - :so@:se@:us@:ue@:tc=ims950: -va|ims950|ims televideo 950 emulation:\ - :k0@:k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:k9@:kb@:kd@:kh@:kl@:ko@:kr@:ku@:\ - :vb@:xn@:tc=tvi950: -vd|ims950-rv|ims tvi950 rev video:\ - :k0@:k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:k9@:kb@:kd@:kh@:kl@:ko@:kr@:ku@:\ - :vb@:xn@:tc=tvi950-rv: -vx|ims-ansi|ultima2|ultimaII|IMS Ultima II:\ - :pt:am:bs:co#80:li#24:\ - :is=\E[0m\E[>14l\E[?1;?5;20l\E>\E[1m^M:if=/usr/share/tabset/vt100:\ - :cl=\E[;H\E[2J:cd=\E[0J:ce=\E[0K:cm=\E[%i%2;%2H:up=\EM:do=\ED:\ - :ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:kh=\E[H:\ - :so=\E[7m:se=\E[0m\E[1m:us=\E[4m:ue=\E[0m\E[1m:sr=\EM: -# # -------------------------------- -# -# w: WYSE -# -# The wy{30,50,75,85} entries are recommended by -# Wyse Technology -# 3571 North First Street -# San Jose, CA 95134 -# Entries for the wy60 and wy99 are only based on Wyse's recommendations. -# -# Advice on the Wyse 30 and 50 standout mode glitch: -# (from steve@omni.com or ...pyramid!koosh!steve) -# -# These terminals support a "PROTECT" sequence on/off that has no -# standout-glitch (xmc), while the regular "attribute" stuff enabled -# with <ESC>G'some-character' gives a 1-space glitch. -# -# All but the very old revision firmware on both terminals support a -# visible PROTECT attribute that's selectable by the ol' SETUP menu. -# (The older rev. terminals do support PROTECT attribute but only -# have the options REGULAR and DIM) -# -# Get into your terminal's SETUP menu, and down-key to the 5'th -# menu (on a wyse 30; I think 3'rd or 4'th on a wyse 50) and -# right-key over to the PROTECT item. -# -# Change PROTECT to REVERSE or REVERSE/DIM, and go over to the next -# item -- ATTRIBUTE and change it to LINE; then save the changes for -# power-on. (ATTRIBUTE change isn't necessary but looks a whole lot -# nicer to the eye when inverting the remainder of a line rather then -# the rest of the screen!). -# -# The next thing to do is change your /usr/lib/something?/terminfo/w/wyse50 -# so that it uses the proper escape sequences to turn on/off the protect -# sequence rather than the very-ugly \EG4 and \EG0. -# -# Change standout to \E), standend to \E(, and glitch to 0, which means -# changing the so, se, and sg fields to :so=\E):se=\E(:sg#0: -# -w0|wy30|wyse30|Wyse 30:\ - :am:bw:hs:mi:xo:bs:pt:\ - :co#80:li#24:sg#1:ug#1:kn#9:\ - :ae=\EG0\EH^C:al=2\EE:as=\EG0\EH^B:bt=\EI:cd=80\Ey:\ - :ce=\Et:cl=80\E*:cm=\E=%+ %+ :ct=\E0:dc=10\EW:dl=1\ER:\ - :ds=\EF\r:ei=\Er:fs=\r:ho=^^:im=\Eq:ip=2:\ - :is=\E'\E(\E\^3\E`9^N^T:k1=^A@\r:k2=^AA\r:k3=^AB\r:\ - :k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:kb=\b:\ - :kd=\n:kh=^^:kl=\b:kr=\f:ku=^K:nd=\f:se=\EG0:so=\EG4:\ - :sr=3\Ej:st=\E1:ts=\EF:ue=\EG0:up=^K:us=\EG8:ve=\E`1:\ - :pf=^T:po=^R:\ - :vi=\E`0:ko=bt,le,do,nd,up,dc,dl,ho,al: -w1|wy30-vb|wyse30-vb|wyse 30 visual bell:\ - :vb=\E`8\E`\072\E`9:\ - :tc=wy30: -w2|wy50|wyse50|Wyse 50:\ - :am:bw:hs:mi:xo:bs:pt:\ - :co#80:li#24:sg#1:ug#1:kn#9:\ - :ae=\EG0\EH^C:al=\EE:as=\EG0\EH^B:bt=\EI:cd=20\Ey:\ - :ce=\Et:cl=20\E*:cm=\E=%+ %+ :ct=\E0:dc=1\EW:dl=\ER:\ - :ds=\EF\r:ei=\Er:fs=\r:ho=^^:i1=30\E`\072\E`9:im=\Eq:\ - :ip=1:is=^N^T\E'\E(:k1=^A@\r:k2=^AA\r:k3=^AB\r:\ - :k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:\ - :k9=^AH\r:kb=\b:kd=\n:kh=^^:kl=\b:kr=\f:ku=^K:nd=\f:\ - :se=\EG0:so=\EGt:sr=\Ej:st=\E1:ts=\EF:ue=\EG0:up=^K:\ - :us=\EG8:ve=\E`1:vi=\E`0:\ - :pf=^T:po=^R:\ - :ko=bt,le,do,nd,up,dc,dl,ho,al: -w3|wy50-vb|wyse50-vb|wyse 50 visual bell:\ - :vb=\E`8\E`\072\E`9:\ - :tc=wy50: -w4|wy50-w|wyse50-w|wyse 50 132-column:\ - :cm=\Ea%i%dR%dC:co#132:dc=2\EW:i1=\E`;\E`9:\ - :tc=wy50: -w5|wy50-wvb|wyse50-wvb|wyse 50 132-column visual bell:\ - :cm=\Ea%i%dR%dC:co#132:dc=2\EW:i1=\E`;\E`9:\ - :vb=\E`8\E`;\E`9:\ - :tc=wy50: -# from John Gillmore hoptoad!gnu@lll-crg.arpa -wg|wyse-vp|wyse|Wyse 50 in ADDS Viewpoint emulation mode with "enhance" on:\ - :am:do=^J:if=/usr/share/tabset/wyse-adds:\ - :le=^H:bs:li#24:co#80:cm=\EY%+ %+ :cd=\Ek:ce=\EK:nd=^F:\ - :up=^Z:cl=^L:ho=^A:ll=^A^Z:kl=^U:kr=^F:kd=^J:ku=^Z:kh=^A:\ - :pt:so=^N:se=^O:us=^N:ue=^O:dl=\El:al=\EM:im=\Eq:ei=\Er:dc=\EW:\ - :is=\E`\072\E`9^O\Er:rs=\E`\072\E`9^O\Er: -wh|wyse-vp-nk|Wyse 50 in ADDS Viewpoint enhanced mode with cursor keys gone:\ - :kl@:kr@:kd@:ku@:kh@:tc=wyse-vp: -wi|wyse925|Wyse-50 emulating tvi925:\ - :xn@:tc=tvi925: -# Wyse 60 in 24 row native mode, switches screens for vi and emacs. -# This termcap is a composite of entries submitted by Steve Van Domelen -# (Wyse Tech, svd@bigboy.wyse.com) and Douglas Good (doug@cli.com). -# Merged by Paul Vojta (vojta@math.berkeley.edu). -w6|wy60|Wyse 60 in native mode:\ - :ae=\EH^C:al=4\EE:am:as=\EH^B:bl=^G:bs:bt=\EI:bw:cd=100\Ey:ce=\Et:\ - :cl=100\E*:cm=\E=%+ %+ :co#80:ct=\E0:da:db:dc=11\EW:dl=5\ER:do=^J:\ - :ds=\EF\r:ei=\Er:fs=\r:ho=^^:hs:if=/usr/share/tabset/std:im=\Eq:ip=3:\ - :is=\Ed$\EcD\E'\Er\EH^C\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1^N^T\EwG\Ew0^^^K:\ - :k0=^A@\r:k1=^AA\r:k2=^AB\r:k3=^AC\r:k4=^AD\r:k5=^AE\r:k6=^AF\r:\ - :k7=^AG\r:k8=^AH\r:k9=^AI\r:kb=\b:kd=\EOB:ke=200\EcU:kh=\E{:kl=\EOD:\ - :km:kn#10:ko=bt,le,do,nd,up,dc,dl,ho,al:kr=\EOC:\ - :ks=200\EZ0+\EOA\177\EZ0,\EOB\177\EZ0.\EOC\177\EZ0-\EOD\177\EZ0*\E{\177:\ - :ku=\EOA:l0=F1:l1=F2:l2=F3:l3=F4:l4=F5:l5=F6:l6=F7:l7=F8:l8=F9:l9=F10:\ - :le=\b:li#24:ll=^^^K:mb=\EG2:me=\EG0:mh=\EGp:mi:mr=\EG4:ms:nd=\f:pf=^T:\ - :po=^R:pt:rs=500\E~!\E~4\E`\:\EeF\Ee(\EwG:se=\EG0:sf=^J:so=\EGt:\ - :sr=7\Ej:st=\E1:te=50^Z\Ew0:ti=50\Ew1:ts=\EF:ue=\EG0:up=^K:us=\EG8: -# Must delete uc= if using infocomp to translate -w7|wy60-w|wyse60-w|wyse 60 132-column:\ - :co#132:cm=\Ea%i%dR%dC:dc=16\EW:ip=5:\ - :rs=500\E~!\E~4\EeF\E`;\Ee(\EwG:tc=wy60: -# From now on, page-switching is no longer possible -w8|wy60-25|wyse60-25|wyse 60 80-column 25-lines:\ - :li#25:te:ti:\ - :rs=500\E~!\E~4\E`\:\EeG\Ee)\EwG:tc=wy60: -w9|wy60-25-w|wyse60-25-w|wyse 60 132-column 25-lines:\ - :co#132:li#25:cm=\Ea%i%dR%dC:dc=16\EW:ip=5:te:ti:\ - :rs=500\E~!\E~4\EeF\E`;\Ee)\EwG:tc=wy60: -wa|wy60-42|wyse60-42|wyse 60 80-column 42-lines:\ - :li#42:al=11\EE:cd=260\Ey:cl=260\E*:cm=2\E=%+ %+ :dc=16\EW:\ - :dl=11\ER:ip=5:sr=10\Ej:te:ti:\ - :rs=500\E~!\E~4\E`\:\EeF\Ee*\EwG:tc=wy60: -wb|wy60-42-w|wyse60-42-w|wyse 60 132-column 42-lines:\ - :co#132:li#42:al=11\EE:cd=260\Ey:cl=260\E*:cm=2\Ea%i%dR%dC:dc=19\EW:\ - :dl=11\ER:ho=2^^:ip=6:sr=10\Ej:te:ti:\ - :rs=500\E~!\E~4\EeF\E`;\Ee*\EwG:tc=wy60: -wc|wy60-43|wyse60-43|wyse 60 80-column 43-lines:\ - :li#43:al=11\EE:cd=260\Ey:cl=260\E*:cm=2\E=%+ %+ :dc=16\EW:\ - :dl=11\ER:ip=5:sr=10\Ej:te:ti:\ - :rs=500\E~!\E~4\E`\:\EeF\Ee+\EwG:tc=wy60: -wd|wy60-43-w|wyse60-43-w|wyse 60 132-column 43-lines:\ - :co#132:li#43:al=11\EE:cd=260\Ey:cl=260\E*:cm=2\Ea%i%dR%dC:dc=19\EW:\ - :dl=11\ER:ho=2^^:ip=6:sr=10\Ej:te:ti:\ - :rs=500\E~!\E~4\EeF\E`;\Ee+\EwG:tc=wy60: -# Not recommended at high baud rates -we|wy60-vb|wyse60-vb|Wyse 60 visual bell:\ - :vb=\E`8\E`9:\ - :tc=wy60: -wf|wy60-w-vb|wy60-wvb|wyse60-wvb|Wyse 60 132-column visual bell:\ - :vb=\E`8\E`9:\ - :tc=wy60-w: -# -# The Wyse 75 is a vt100 lookalike without advanced video. -# -# The Wyse 75 can support one attribute (e.g. Dim, Inverse, -# Underline) without magic cookies. The following description -# uses this capability, but when more than one attribute is -# put on the screen at once, all attributes will be changed -# to be the same as the last attribute given. -# The Wyse 75 can support more attributes when used with magic -# cookies. The wy75-mc terminal description uses magic cookies -# to correctly handle multiple attributes on a screen. -# -wm|wy75|wyse75|wyse 75:\ - :am:hs:mi:ms:xn:xo:bs:pt:\ - :co#80:li#24:pb#1201:kn#6:\ - :AL=2*\E[%dL:DC=3*\E[%dP:DL=1*\E[%dM:DO=\E[%dB:\ - :IC=1*\E[%d@:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:\ - :al=2\E[L:as=\E[0m^N:bt=\E[1Z:cd=30\E[J:ce=3\E[K:\ - :ch=\E[%i%dG:cl=30\E[H\E[J:cm=\E[%i%d;%dH:\ - :cs=2\E[%i%d;%dr:ct=\E[3g:dc=3\E[P:dl=\E[M:\ - :ds=\E[>,^A^A\E[>-^A^A:ei=\E[4l:fs=^A:ho=\E[H:\ - :im=\E[4h:ip=1:is=\E>\E[?7;?8h\E[4;?1l^O\E)0:kb=\b:\ - :kd=\E[B:ke=\E[?1l\E>:kh=\E[H:kl=\E[D:kr=\E[C:\ - :ks=\E[?1l\E[?7h\E=:ku=\E[A:nd=\E[C:r1=\E7\E[1;24r\E8:\ - :r2=20\E[0m\E[35;?7;?8h\E[30;?1l:r3=80\E[?3l:rc=\E8:\ - :sc=\E7:se=\E[0m:so=\E[1t\E[7m:sr=2\EM:st=\EH:\ - :ts=\E[>,^A:ue=\E[0m:up=\E[A:us=\E[2t\E[4m:ve=\E[?25h:\ - :po=\E[5i:pf=\E[4i:\ - :vi=\E[?25l:ko=nd,up,dl,ce,ho,al: -# -# This terminal description uses the non-hidden attribute mode -# (with magic cookie). -# -wn|wy75-mc|wyse75-mc|wyse 75 with magic cookies:\ - :ae=\E[0p^O:as=\E[0p^N:ms@:r2=20\E[0p\E[35;?7;?8h\E[30;?1l:\ - :se=\E[0p:sg#1:so=\E[17p:ue=\E[0p:ug#1:us=\E[8p:\ - :tc=wy75: -wo|wy75-vb|wyse75-vb|wyse 75 with visual bell:\ - :vb=\E[30h\E,\E[30l:\ - :tc=wy75: -wp|wy75-w|wyse75-w|wyse 75 in 132 column mode:\ - :co#132:r3=80\E[?3h:\ - :tc=wy75: -wq|wy75-wvb|wyse75-wvb|wyse 75 with visual bell 132 columns:\ - :co#132:r3=80\E[?3h:vb=\E[30h\E,\E[30l:\ - :tc=wy75: -# -wj|wy75ap|wyse75ap|wy-75ap|wyse-75ap|Wyse WY-75 Applications and Cursor keypad:\ - :is=\E[1;24r\E[?10;3l\E[?1;25h\E[4l\E[m\E(B\E=:\ - :kd=\EOB:ke=10\E[?1l\E>:kh=\EOH:kl=\EOD:kr=\EOC:\ - :ks=10\E[?1h\E=:ku=\EOA:\ - :tc=wyse75: -# -# Wyse 85 emulating a vt220 7 bit mode. -# 24 line screen with status line. -# -# The vt220 mode permits more function keys but it wipes out -# the escape key. I strongly recommend that f11 be set to -# escape (esc). -# The terminal may have to be set for 8 data bits and 2 stop -# bits for the arrow keys to work. -# The Wyse 85 runs faster with XON/XOFF enabled. Also the -# (dch) and (ich) work best when XON/XOFF is set. (ich) and -# (dch) leave trash on the screen when used without XON/XOFF. -# -wr|wy85|wyse85|wyse 85:\ - :am:hs:mi:ms:xn:xo:bs:pt:\ - :co#80:li#24:kn#3:\ - :AL=5*\E[%dL:DC=3*\E[%dP:DL=3*\E[%dM:DO=\E[%dB:\ - :IC=4*\E[%d@:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:\ - :al=5\E[L:as=^N:bt=\E[Z:cd=110\E[J:ce=\E[K:\ - :cl=110\E[H\E[J:cm=1\E[%i%d;%dH:cs=\E[%i%d;%dr:\ - :ct=\E[3g:dc=3\E[P:dl=3\E[M:ds=\E[40l:ei=\E[4l:\ - :fs=\E[1;24r\E8:ho=\E[H:\ - :i1=\E[62;1"p\E7\E[?6l\E8\E[?5W:im=\E[4h:ip=3:\ - :is=16\E[2;4;20;30l\E[?1;4;10;16l\E[12;36h\E[?7;8;25h:\ - :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\ - :kb=\b:kd=\E[B:ke=\E>:kh=\E[26~:\ - :kl=\E[D:kr=\E[C:ks=\E[?1l\E=:ku=\E[A:l1=PF1:l2=PF2:\ - :l3=PF3:l4=PF4:nd=\E[C:\ - :r1=\E<\E[3;13l\E[!p\E7\E[1;24r\E8\E(B:\ - :r2=70\E[35h\E[?3l:rc=\E8:sc=\E7:se=\E[m:so=\E[1m:\ - :sr=3\EM:st=\EH:ts=\E[40h\E7\E[25;%i%dH:ue=\E[m:\ - :up=\E[A:us=\E[4m:ve=\E[?25h:vi=\E[?25l:nl=\E[B:\ - :po=\E[5i:pf=\E[4i:\ - :ko=do,nd,up: -# -# Wyse 85 with visual bell. -ws|wy85-vb|wyse85-vb|wyse 85 with visual bell:\ - :vb=\E[30h\E,\E[30l:\ - :tc=wy85: -# -# Wyse 85 in 132-column mode. -wt|wy85-w|wyse85-w|wyse 85 in 132-column mode:\ - :co#132:\ - :r2=120\E[35h\E[?3h:\ - :tc=wy85: -# -# Wyse 85 in 132-column mode with visual bell. -wu|wy85-wvb|wyse85-wvb|wyse 85 with visual bell 132-columns:\ - :vb=\E[30h\E,\E[30l:\ - :tc=wy85: -# From pett@cgl.ucsf.edu -wv|wy99|wyse-99gt|wyse99gt|wyse 99GT, 80 col, native mode:\ - :is=\E\140\072\Ee(\Ew1\Ee-\Ee$\Ee'\EeT^T:ct=\E0:st=\E1:gn:\ - :li#24:co#80:bl=^G:am:bw:ul:hs:as=\EcE:ae=\EcD:bt=\EI:\ - :ma=^Kj^Jk^Hh^Ll^^H:cm=\Ea%i%2R%3C:it#8:\ - :vs=^^\EY\E\140\072:vi=\E`0:es:ws#80:\ - :lm#0:md=\Ee1\EG6:me=\Ee0\E(:mh=\Ee1\EGb:mb=\Ee1\EG2:\ - :mk=\Ee1\EG1:mp=\E):mr=\Ee1\EG4:pf=^T:po=\EP\E7:ps=:\Ed&\E7\ - :fs=\004:ds=\EA31:i2=\EA30:vb=\E\1361\E\1360:da:db:sf=^J:sr=\Ej:\ - :cl=^Z:ce=\ET:cd=\EY:al=\EE:dl=\ER:dc=\EW:\ - :so=\EGt:se=\EG0:sg#1:ue=\EG0:us=\EG8:ug#1:ll=\Ea24R1C:\ - :pt:bs:nd=^L:up=^K:do=^J:ho=^^:kl=^H:kr=^L:ku=^K:kd=^J:kh=^^:kn#20:\ - :ei=\Er:im=\Eq:ic=:mi:if=/usr/share/tabset/stdcrt:\ - :k1=^A@^M:k2=^AA^M:k3=^AB^M:k4=^AC^M:k5=^AD^M:\ - :k6=^AE^M:k7=^AF^M:k8=^AG^M:k9=^AH^M:k0=^AI^M:\ - :l1=^A`^M:l2=^Aa^M:l3=^Ab^M:l4=^Ac^M:l5=^Ad^M:\ - :l6=^Ae^M:l7=^Af^M:l8=^Ag^M:l9=^Ah^M:l0=^Ai^M: -# From freudent@eric.ultra.nyu.edu (Eric Freudenthal) -ww|wy100q|Wyse 100 for Quotron:\ - :al=\EE:bs:bt=\EI:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :co#80:\ - :dc=\EW:dl=\ER:do=^J:ei=\Er:im=\Eq:is=\E`\072\200\EC\EDF\E0\E'\E(\EA21:\ - :kd=^J:kl=^H:kr=^L:ku=^K:li#24:nd=^L:up=^K:us=\EG8:ue=\EG0:\ - :so=\EG4:se=\EG0:sg#1:sr=\Ej:ho=^^:ug#1: -# # -------------------------------- -# -# y: TELERAY -# -# Note two things called "teleray". Reorder should move the common one -# to the front if you have either. A dumb teleray with the cursor stuck -# on the bottom and no obvious model number is probably a 3700. -y1|t3700|teleray|dumb teleray 3700:\ - :do=^J:le=^H:bs:cl=^L:co#80:li#24: -y3|t3800|teleray 3800 series:\ - :do=^J:le=^H:bs:cd=\EJ:ce=\EK:cl=^L:cm=\EY%+ %+ :co#80: \ - :do=\n:ho=\EH:li#24:ll=\EY7 :nd=\EC:pt:up=^K: -y6|t1061|teleray 1061:\ - :if=/usr/share/tabset/teleray:\ - :ct=\EG:st=\EF:do=^J:\ - :al=2*\EL:am:le=^H:bs:cd=1\EJ:ce=\EK:cl=1^L:cm=\EY%+ %+ :co#80:\ - :dc=\EQ:dl=2*\EM:ei=:ho=\EH:ic=\EP:im=:ip=0.4*:\ - :k1=^Z1:k2=^Z2:k3=^Z3:k4=^Z4:k5=^Z5:k6=^Z6:k7=^Z7:k8=^Z8:\ - :li#24:nd=\EC:pt:se=\ER@:so= \ERD:\ - :is=\Ee\EU01^Z1\EV\EU02^Z2\EV\EU03^Z3\EV\EU04^Z4\EV\EU05^Z5\EV\EU06^Z6\EV\EU07^Z7\EV\EU08^Z8\EV\Ef:\ - :up=\EA:us=\ERH:ue=\ER@:xs:xt:sg#2:ug#1: -# "Teleray Arpa Special", officially designated as -# "Teleray Arpa network model 10" with "Special feature 720". -# This is the new (1981) fast microcode updating the older "arpa" proms -# (which gave meta-key and pgmmable-fxn keys). 720 is much much faster, -# converts the keypad to programmable function keys, and has other goodies. -# Standout mode is still broken (magic cookie, etc) so is suppressed as no -# programs handle such lossage properly. -# Note: this is NOT the old termcap's "t1061f with fast proms." -# From Univ of Utah, J.Lepreau Tue Feb 1 06:39:37 1983 -# lepreau@utah-cs, harpo!utah-cs!lepreau -# -y7|t10|teleray 10 special:\ - :so@:se@:us@:ue@:\ - :al=\EL:bs:cd=\EJ:ce=\EK:cl=30\Ej:cm=\EY%+ %+ :co#80:\ - :dc=\EQ:dl=\EM:ei=:ho=\EH:ic=\EP:im=:km:li#24:nd=\EC:pc=\200:pt:\ - :se=\ER@:so=\ERD:sf=\Eq:sg#2:sr=\Ep:up=\EA:ug#1:ue=\ER@:us=\ERH:\ - :xs:xt: -yf|t1061f|teleray 1061 with fast PROMs:\ - :al=\EL:ip@:dl=\EM:tc=t1061: -# # -------------------------------- -# -# z: Miscellaneous -# -z0|wind:\ - :bs:cm=\Ep%r%.%.:cl=\En\120\030\Eo:co#80:\ - :ho=\Ep\200\200:li#24:nd=^L:up=^K:nl=\035:\ - :kl=\E3:kr=\E4:ku=\E1:kd=\E2:k1=\E5:k2=\E6:k3=\E7:k4=\E8:\ - :so=\Em\014:se=\Em\003: -z1|wind16:\ - :bs:cm=\Ep%r%.%.:cl=\En\120\020\Eo:co#80:\ - :ho=\Ep\200\200:li#16:nd=^L:up=^K:nl=\035:\ - :so=\Em\014:se=\Em\003: -z2|wind40:\ - :bs:cm=\Ep%r%.%.:cl=\En\120\050\Eo:co#80:\ - :ho=\Ep\200\200:li#40:nd=^L:up=^K:nl=\035:\ - :so=\Em\014:se=\Em\003: -z3|wind50:\ - :bs:cm=\Ep%r%.%.:cl=\En\128\062\Eo:co#88:\ - :ho=\Ep\200\200:li#50:nd=^L:up=^K:nl=\035:\ - :kl=\E3:kr=\E4:ku=\E1:kd=\E2:k1=\E5:k2=\E6:k3=\E7:k4=\E8:\ - :so=\Em\014:se=\Em\003: -z4|cad68-3|cgc3|cad68 basic monitor transparent mode size 3 chars:\ - :am:bs:cl=^Z:co#73:ho=\036:li#36:nd=^L:up=^K: -z5|cad68-2|cgc2|cad68 basic monitor transparent mode size 2 chars:\ - :am:bs:cl=^Z:co#85:ho=\036:li#39:nd=^L:up=^K:\ - :kl=\E3:kr=\E4:ku=\E1:kd=\E2:k1=\E5:k2=\E6:k3=\E7:k4=\E8:\ - :so=\Em\014:se=\Em\003: -z6|v50|visual 50:\ - :am:bs:al=\EL:dl=\EM:\ - :cd=\Ek:ce=\EK:cl=^Z:cm=\E=%+\040%+\040:co#80:do=^J:ho=\EH:\ - :kb=^H:kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:li#24:ms:nd=^L:pt:\ - :so=\EU:se=\ET:up=^K: -z7|trs2|trsII|trs80II|Radio Shack Model II using P&T CP/M:\ - :nl=^_:al=^D:am:bs:cd=^B:ce=^A:cl=^L:cm=\EY%+ %+ :co#80:\ - :dl=^K:do=^_:ho=^F:li#24:nd=^]:ms:pt:se=^O:so=^N:up=^^:\ - :kb=^H:kd=^_:kl=^\:kr=^]:ku=^^: -#From: ksb@mentor.cc.purdue.edu (Kevin Braunsdorf) -z8|trs16|trs-80 model 16 console:\ - :al=\EL:am:bs:cd=\EJ:ce=\EK:cl=^L:cm=\EY%+ %+ :co#80:dc=\EQ:dl=\EM:\ - :do=\EB:ei=:ic=\EP:ho=\EH:im=:kb=^H:kd=\EB:kl=\ED:kn#2:kr=\EC:\ - :ku=\EA:k0=^A:k1=^B:l0=f1:l1=f2:li#24:nd=\EC:pt:se=\ER@:sg#0:so=\ERD:\ - :k2=^D:k3=^L:k4=^U:k5=^P:k6=^N:k7=^S:\ - :l2=f3:l3=f4:l4=f5:l5=f6:l6=f7:l7=f8:\ - :up=\EA:GS=\ERG:GE=\ERg:GV=s:GH=u:GU=e:GD=c:G1=`:G2=_:G3=b:G4=a:\ - :BN=\E[?33h:BF=\E[?33l:UC=\E[_\040q:BC=\E[\177\040q:\ - :PN=\E]=:PS=\E]+:\ - :CN=\ERC:CF=\ERc:NR=\ERD:NM=\ER@: -#From {pbrown,ctl}@ocf.berkeley.edu, 12 Mar 90 -zp|coco3|os9LII|Tandy CoCo3 24*80 OS9 Level II:\ - :am:bs:cl=5*^L:li#24:co#80:ho=^A:\ - :cd=^K:ce=^D:cm=2%r^B%+ %+ :\ - :bl#7:do=^J:up=^I:nd=^F:so=\037\040:se=\037\041:\ - :us=\037\042:ue=\037\043:al=\037\060:dl=\037\061:\ - :ku=^L:kd=^J:kr=^I:kl=^H:ta:mb=\037\042:md=\E\072^A:\ - :mr=\037\040:me=\037\041\E\072\000:\ - :vi=\005\040:ve=\005\041 -z9|ps300|Picture System 300:us@:ue@:so@:se@:xt:pt@:tc=vt100: -za|masscomp2:co#64:li#21:tc=masscomp: -zb|masscomp1:co#104:li#36:tc=masscomp: -zc|masscomp:\ - :al=\E[L:bs:cd=\E[J:ce=\E[K:co#80:dc=\E[P:dl=\E[M:do=\E[B:\ - :ei=\E[4l:im=\E[4h:is=\EGc\EGb\EGw:li#24:mi:MT:nd=\E[C:pt:se=\E[0m:\ - :sg#0:so=\E[7m:cm=\E[%i%d;%dH:ue=\EGau:us=\EGu:up=\E[A:\ - :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^h:cl=\E[2J: -# Kimtron TC entries include (undocumented) codes for: enter dim mode (mh), -# enter bold mode (md), enter reverse mode (mr), turn off all attributes (me) -# Kimtron ABM 85 added by Dual Systems -zd|abm85|Kimtron ABM 85:\ - :is=\EC\EX\Eg\En\E%\Er\E(\Ek\Em\Eq:if=/usr/share/tabset/stdcrt:\ - :li#24:co#80:am:bs:bw:ms:pt:\ - :cl=\E*:cd=\Ey:dl=\ER:al=\EE:ce=\Et:dc=\EW:im=\EQ:ei=\Er:\ - :cm=\E=%+ %+ :do=^J:nd=^L:up=^K:bt=\EI:\ - :kh=^^:kb=^H:kd=^J:ku=^K:kd=^J:kl=^H:kr=^L:\ - :so=\Ej:se=\Ek:sg#1:us=\El:ue=\Em:ug#1: -# Kimtron ABM 85H added by Dual Systems. -# Some notes about the 85h entries: -# 1) there are several firmware revs of 85H in the world. Use o85h for -# firmware revs prior to SP51 -# 2) Make sure to use 85h entry if the terminal is in 85H mode and the -# 85e entry if it is in 920 emulation mode. They are incompatible in -# some places and NOT software settable i.e., `is' can't fix change it) -# 3) In 85h mode, the arrow keys and special functions transmit when -# the terminal is in dup-edit, and work only locally in local-edit. -# Vi won't swallow `del char' for instance, but `vs' turns on -# dup-edit anyway so that the arrow keys will work right. If the -# arrow keys don't work the way you like, change `vs', `ve', and `is'. -# 920E mode does not have software commands to toggle between dup -# and local edit, so you get whatever was set last on the terminal. -# 4) vb attribute is nice, but seems too slow to work correctly (\Eb<pad>\Ed) -# 5) Make sure `hidden' attributes are selected. If `embedded' attributes -# are selected, the entries :sg@: and :ug@: should be removed. -# 6) auto new-line should be on (selectable from setup mode only) -# -# From fair@ucbarpa Sun Oct 27 07:21:05 1985 -ze|85h|85H|abm85h|Kimtron ABM 85H, 85H mode:\ - :is=\EC\EN\EX^T^N\EA\Ea\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef^M\EG0\Ed\E.4\El:\ - :im=\EZ:kd=^V:so=\EG4:se=\EG0:us=\EG8:ue=\EG0:vb@:vs=\E.2:ve=\E.4:\ - :mh=\E):mr=\EG4:me=\E(\EG0:sg@:ug@:ds=\Ee:fs=^M:hs:ts=\Eg\Ef:tc=abm85: -zf|85e|85E|abm85e|Kimtron ABM 85H, 920E mode:\ - :is=\EC\EX\EA\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef^M\Ek\Eq\Em:\ - :mh=\E):mr=\Ej:me=\E(\Ek:im=\EZ:sg@:ug@:vb@:tc=abm85: -zg|o85h|oabm85h|Kimtron ABM 85H, old firmware rev.:\ - :is=\E}\EC\EX\Ee\En\E%\Er\E(\Ek\Em\Eq\Ed\ET\EC\E9\EF:\ - :im=\EZ:sg@:ug@:vb=\200\200\200^G\200\200\200:\ - :mh=\E):mr=\Ej:me=\E(\Ek:tc=abm85: -#from malman@bbn-vax.arpa -zE|kt7|kimtron model kt-7:\ - :am:bs:co#80:li#24:cm=\E=%+ %+ :cl=^Z:cd=\EY:ce=\ET:is=\El\E":\ - :al=\EE:dl=\ER:im=:ei=:ic=\EQ:dc=\EW:if=/usr/share/tabset/stdcrt:\ - :ho=^^:nd=^L:bt=\EI:pt:so=\EG4:se=\EG0:sg#0:us=\EG8:ue=\EG0:ug#0:\ - :up=^K:do=^V:kb=^H:ku=^K:kd=^V:kl=^H:kr=^L:kh=^^:ma=^V^J^L :\ - :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:\ - :k8=^AG\r:k9=^AH\r:k0=^AI\r:ko=ic,dc,al,dl,cl,ce,cd,bt:\ - :ts=\Ef:fs=\Eg: -zh|appleII|apple ii plus:vs=\024\103\066:ve=\024\103\062:\ - :am:co#80:ce=\035:li#24:cl=\014:bs:nd=\034:up=\037:ho=\E\031:pt:\ - :cd=\013:so=\017:se=\016:cm=\036%r%+ %+ :is=\024T1\016:do=^J:kd=^J:\ - :vb=\024G1\024T1:kr=: -# Gary Ford 21NOV83 -# New version from ee178aci%sdcc7@SDCSVAX.ARPA Fri Oct 11 21:27:00 1985 -zi|apple-80|apple II with smarterm 80 col:\ - :am:bs:bt=^R:bw:cd=10*^K:ce=10^]:cl=10*^L:cm=^^%r%+ %+ :\ - :co#80:cr=10*^M:do=^J:ho=^Y:le=^H:li#24:nd=^\\:up=^_: -zj|lisa|apple lisa console display, black on white:\ - :al=\E[L:am:bs:cd=\E[J:ce=\E[K:cl=^L:cm=\E[%i%d;%dH:co#88:\ - :dc=\E[P:dl=\E[M:do=\E[B:ei=:ho=\E[H:ic=\E[@:im=:li#32:\ - :nd=\E[C:ms:pt:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:up=\E[A:\ - :kb=^h:ku=\E[A:kd=\E[B:kl=\E[D:kr=\E[C:eo:is=\E>\E[0m^L:\ - :GS=\E[11m:GE=\E[10m:GV=\140:GH=a:G1=c:G2=f:G3=e:G4=d:GU=u:\ - :GD=s:GC=b:GL=v:GR=t:CO=\E[5l:CF=\E[5h: -zq|liswb|apple lisa console display, white on black:\ - :so=\E[0m:se=\E[0;7m:us=\E[4m:ue=\E[0;7m:is=\E>\E[0;7m^L:\ - :tc=lisa: -# The following is a version of the ibm-pc entry distributed with PC/IX, -# (Interactive Systems' System 3 for the Big Blue), modified by Richard -# McIntosh at UCB/CSM. The :pt: and :uc: have been removed from the original, -# (the former is untrue, and the latter failed under UCB/man); standout and -# underline modes have been added. Note: this entry describes the "native" -# capabilities of the PC monochrome display, without ANY emulation; most -# communications packages (but NOT PC/IX connect) do some kind of emulation. -pc|ibmpc|ibm pc PC/IX:\ - :li#24:co#80:am:bs:bw:eo:\ - :cd=\E[J:ce=\E[K:cl=\Ec:cm=\E[%i%2;%2H:do=\E[B:ho=\E[;H:\ - :nd=\E[C:up=\E[A:so=\E[7m:se=\E[0m:us=\E[4m:ue=\E[0m: -pc3|ibmpc3|IBM PC 386BSD Console:\ - :li#25:tc=pc: -zk|ibmx|ibmpcx|IBM PC xenix console display:\ - :al=\E[L:am:bs:cd=\E[J:ce=\E[K:cl=^L:cm=\E[%d;%dH:co#80:\ - :dc=\E[P:dl=\E[M:do=\E[B:ei=:ho=\E[H:ic=\E[@:im=:li#25:\ - :nd=\E[C:ms:se=\E[0m:so=\E[7m:us=\E[4m:\ - :ue=\E[m:up=\E[A:MR=\E[0m:\ - :kb=^h:kh=\E[Y:ku=\E[A:kd=\E[B:kl=\E[D:kr=\E[C:eo:\ - :GS=\E[11m:GE=\E[10m:\ - :GC=b:GL=v:GR=t:RT=^J:\ - :GH=\E[196g:GV=\E[179g:\ - :GU=\E[193g:GD=\E[194g:\ - :G1=\E[191g:G2=\E[218g:G3=\E[192g:G4=\E[217g:\ - :CW=\E[E:NU=\E[F:RF=\E[G:RC=\E[H:\ - :WL=\E[K:WR=\E[L:CL=\E[M:CR=\E[N:\ - :HM=\E[Y:EN=\E[d:PU=\E[Z:PD=\E[e: -zl|ibmc|ibmcpc|IBM PC xenix color console display:\ - :tc=ibm: -zo|ibmcx|ibmcpcx|IBM PC xenix color console display:\ - :tc=ibmx: -zm|kaypro|kaypro2|kaypro II:\ - :am:bs:cm=\E=%+ %+ :cl=1^Z:co#80:ho=^^:li#24:ma=^K^P:nd=^L:up=^K:\ - :kr=:kl=^H:ku=:kd=^J: -# From Suk Lee ..!{decvax,linus,allegra,ihnp4}!utcsrgv!spoo -zn|trs100|Radio Shack Model 100:\ - :am:bs:le=^H:li#8:co#40:ku=^^:kd=^_:kl=^]:kr=^\:up=\EA:\ - :nd=\EC:ho=\EH:ce=\EK:cd=\EJ:cl=\EE:xt:cm=\EY%+ %+ :\ - :so=\Ep:se=\Eq:al=\EL:dl=\EM: -zt|mac|macintosh|Macintosh with MacTerminal:\ - :al=20\E[L:dl=20\E[M:ip=7:dc=7\E[P:ic=9\E[@:xn:dN#30:tc=vt100: -zs|zen50|z50:zephyr:\ - :cm=\E=%+ %+ :cd=\EY:co#80:li#24:\ - :am:al=\EE:ce=\ET:dc=\EW:dl=\ER:ic=\EQ:im=:ei=:\ - :cl=\E+:bs:ma=^Hh^Ll^Jj^Kk:sg#1:se=\EGO:so=\EG4:\ - :kl=^H:kr=^L:ku=^K:kd=^J:kh=\036:up=^K:\ - :BS=^U:CL=^V:CR=^B:RK=^L:UK=^K:LK=^H:DK=^J:HM=\036: -zu|go140|graphon go-140:\ - :co#80:li#24:cl=10\E[;H\E[2J:bs:cm=\E[%i%2;%2H:nd=\E[C:up=\E[A:\ - :ce=\E[K:cd=10\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\ - :is=\E<\E=\E[?3l\E[?7l\E(B\E[J\E7\E[;r\E8\E[m\E[q:\ - :dl=\E[M:al=\E[L:dc=\E[P:im=\E[4h:ei=\E[4l:\ - :ks=\E[?1h\E=:ke=\E[?1l\E>:\ - :if=/usr/share/tabset/vt100:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:\ - :kh=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sr=\EM: -zv|go140w|graphon go-140 in 132 column mode:\ - :co#132:is=\E<\E=\E[?3h\E[?7h\E(B\E[J\E7\E[;r\E8\E[m\E[q:\ - :tc=go140: -#From edm@nwnexus.WA.COM. Hacked up vt200 termcap to handle GO-225/VT220 -zH|go225|go-225|Graphon 225:\ - :im=\E[4h:ei=\E[4l:mi:dc=\E[P:al=\E[L:dl=\E[M:\ - :cs=\E[%i%d;%dr:sf=\ED:sr=\EM:\ - :ce=\E[K:cl=\E[H\E[J:cd=\E[J:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ - :so=\E[7m:se=\E[27m:us=\E[4m:ue=\E[24m:\ - :md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:\ - :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\ - :rs=\E[!p\E[?7h\E[2;1;1#w:rf=/usr/lib/tabset/vt100:\ - :do=^J:co#80:li#25:le=^H:bs:am:ks=\E=:ke=\E>:\ - :ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:kb=^H:kh=\E[H:\ - :ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:vt#3:xn:\ - :sc=\E7:rc=\E8:ti=\E[2;0#w\E[1;25r:te=\E[!p\E[?7h\E[2;1;1#w: -zw|sanyo55|sanyo|sanyo mbc-55x pc compatible:\ - :co#80:li#25:am:cl=\E[H\E[J:bs:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ - :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m: -#From: Simson L. Garfinkel <simsong@media-lab.mit.edu> -zC|ST|atari st:\ - :bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:li#25:nd=\EC:\ - :pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:\ - :do=\EB:\ - :so=\Ep:se=\Eq:dl=\EM:al=\EL:am: -# UniTerm terminal program for the Atari ST: 49-line VT220 emulation mode -# From Paul M. Aoki, aoki@ucbvax.Berkeley.EDU -zD|uniterm|uniterm49|UniTerm VT200 emulator, 49 lines:\ - :li#49:is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;49r\E[49;1H:\ - :tc=vt200: -# YTERM standard version 1.0. (gts 9-25-84) -# Straight old ascii keyboard except function keys are Yale (e.g.,ASCII.KBD). -# Only 80 tab columns (else yterm 1.1 bug). No :xn: in 1.0. -# Cannot use termcap :sr=\EM: because vi will not work, too bad. -# vi string is given so that yterm is reset each vi startup. -Y0|yterm10|yterm 1.0 UCB ascii.kbd:\ - :am:bs:cd=^K:ce=^]:cl=^L:cm=^^%r%+ %+ :co#80:EP:ho=^Y:li#24:nd=^\:pt:\ - :rc=\E8:sc=\E7:so=\E[7m:se=\E[m:up=^_:us=\E[4m:ue=\E[m:\ - :is=^O\E[7i\E[m\E[?7h\E[?3g\r\EHY0 for \EHYTERM 1.\EH0 with A\EHSCII.KBD\EH 9-13-84\EH \EH \EH \EH \EH\n:\ - :ku=^K:kd=^J:kl=^H:kr=^L:kh=^^:ma=h\012jklH:\ - :k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:k8=\E8:k9=\E9:\ - :vs=^O\E[7i\E[m\E[?7h\E[?3g\r\EHY0 \EH \EH \EH \EH \EH \EH \EH \EH \EH\r: -# YTERM variant version 1.1. (gts 9-13-84) Version 1.1 has :xn:. -Y1|yterm11|yterm 1.1 UCB ascii.kbd:\ - :xn:is=^O\E[7i\E[m\E[?7h\E[?3g\r\EHY1 for \EHYTERM 1.\EH1 with A\EHSCII.KBD\EH 9-13-84\EH \EH \EH \EH \EH\n:\ - :tc=yterm10: -# YTERM 1.0 variant no autowrap or tabs -# X does not remember autowrap or tabs when T is deleted and restarted. -Y2|yterm10nat|yterm 1.0 UCB ascii.kbd no autowrap or tabs:\ - :am@:pt@:vs=^O\E[7i\E[m\E[?7l\E[?3g\rY2\r:\ - :is=^O\E[7i\E[m\E[?7l\E[?3g\rY2 for YTERM 1.0 with ASCII.KBD 9-20-84 no autowrap or tabs\n:\ - :tc=yterm10: -# KERMIT standard all versions. (gts 9-25-84) -# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi. -K0|kermit|standard kermit:\ - :bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:ho=\EH:li#24:nd=\EC:up=\EA:\ - :ku=^K:kd=^J:kl=^H:kr=^L:kh=^^:ma=^Hh\012j^Kk^Ll^^H:\ - :is=K0 Standard Kermit 9-25-84\n: -K1|kermitam|standard kermit plus am:\ - :am:is=K1 Standard Kermit plus Automatic Margins\n:tc=kermit: -# IBMPC Kermit 1.2. (gts 8-30-84) -# Bugs :cd:ce: do not work except at beginning of line! :cl: does not work, -# but fake with :cl=\EH\EJ (since :cd=\EJ: works at beginning of line). -K2|pckermit|pckermit12|UCB IBMPC Kermit 1.2:\ - :am:li#25:cd@:ce@:cl=\EH\EJ:\ - :is=K2 UCB IBMPC Kermit 1.2 8-30-84\n:tc=kermit: -# IBMPC Kermit 1.20 (gts 12-19-84) -# Cannot use line 25, now acts funny like ansi special scrolling region. -# Initialization must escape from that region by cursor position to line 24. -# Cannot use character insert because 1.20 goes crazy if insert at col 80. -# Does not use am: because autowrap mode lost when kermit dropped and restarted. -K3|pckermit120|UCB IBMPC Kermit 1.20:\ - :al=\EL:am@:dc=\EN:dl=\EM:do=\EB:ei@:im@:li#24:pt:se=\Eq:so=\Ep:\ - :is=\EO\Eq\EJ\EY7 K3 UCB IBMPC Kermit 1.20 12-19-84\n:\ - :vs=\EO\Eq\EEK3:tc=kermit: -# MS-DOS Kermit 2.27 for the IBMPC (UCB gts 3-17-85) -# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi. -# Cannot use line 25, now acts funny like ansi special scrolling region. -# Initialization must escape from that region by cursor position to line 24. -# Does not use am: because autowrap mode lost when kermit dropped and restarted. -# Reverse video for standout like H19. -K4|msk227|mskermit227|MS-DOS Kermit 2.27 for the IBMPC:\ - :al=\EL:am@:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:\ - :dc=\EN:dl=\EM:do=\EB:ei=\EO:im=\E@:\ - :ho=\EH:li#24:nd=\EC:up=\EA:pt:rc=\Ek:sc=\Ej:se=\Eq:so=\Ep:\ - :ku=^K:kd=^J:kl=^H:kr=^L:kh=^^:ma=^Hh\012j^Kk^Ll^^H:\ - :is=\EO\Eq\EG\Ew\EJ\EY7 K4 MS Kermit 2.27 for the IBMPC 3-17-85\n:\ - :vs=\EO\Eq\EG\EwK4: -# MS-DOS Kermit 2.27 with automatic margins (UCB gts 3-17-85) -K5|msk227am|mskermit227am|UCB MS-DOS Kermit 2.27 with automatic margins:\ - :am:\ - :is=\EO\Eq\EG\Ev\EJ\EY7 K5 MS Kermit 2.27 +automatic margins 3-17-85\n:\ - :vs=\EO\Eq\EG\EvK5:tc=mskermit227: -# MS-DOS Kermit 2.27 UCB 227.14 for the IBM PC (UCB gts 3-17-85) -# Automatic margins now default. Use ansi set graphic rendition for standout, -# underline and ul codes (md,me,mr). Define function keys. -K6|msk22714|mskermit22714|UCB MS-DOS Kermit 2.27 UCB 227.14 IBM PC:\ - :am:kn#10:\ - :k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:k8=\E8:k9=\E9:\ - :md=\E[1m:me=\E[m:mr=\E[7m:se=\E[m:so=\E[1m:ue=\E[m:us=\E[4m:\ - :is=\EO\Eq\EG\Ev\EJ\EY7 K6 MS Kermit 2.27 UCB 227.14 IBM PC 3-17-85\n:\ - :vs=\EO\Eq\EG\EvK6:tc=mskermit227: -# From earle@smeagol.UUCP 29 Oct 85 05:40:18 GMT -# MS-Kermit with Heath-19 emulation mode enabled -Kh|h19k|h19kermit|heathkit emulation provided by Kermit (no auto margin):\ - :am@:ta@:pt@:xt:da:db:tc=h19-u: -# Amiga termcap by Kent Polk, kent@swrinde.nde.swri.edu (30 May 90) -# Added a few more entries, converted caret-type control sequence (^x) entries -# to '\0xx' entries since a couple of people mentioned loosing '^x' sequences. -# -# :as, :ae Support for alternate character sets. -# :ve=\E[\040p:vi=\E[\060\040p cursor visible/invisible. -# :xn: vt100 kludginess at column 80/NEWLINE ignore after 80 cols(Concept) -# This one appears to fix a problem I always had with a line ending -# at 'width+1' (I think) followed by a blank line in vi. The blank -# line tended to disappear and reappear depending on how the screen -# was refreshed. Note that this is probably needed only if you use -# something like a Dnet Fterm with the window sized to some peculiar -# dimension larger than 80 columns. -# :k0=\E9~ map F10 to k0 - could have F0-9 -> k0-9, but ... F10 was 'k;' -# :F1-FA removed F11 through F20. -AA|amiga|Amiga ANSI:\ - :co#80:li#24:am:bs:bw:\ - :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\ - :LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:IC=\E[%d@:\ - :ae=\017:al=\E[L:as=\016:bl=\007:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\ - :cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:do=\E[B:ho=\E[H:ic=\E[@:is=\E[20l:\ - :k1=\E0~:k2=\E1~:k3=\E2~:k4=\E3~:k5=\E4~:k6=\E5~:k7=\E6~:k8=\E7~:\ - :k9=\E8~:k0=\E9~:kn#10:kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=\E[D:\ - :mb=\E[7;2m:md=\E[1m:me=\E[0m:mh=\E[2m:mk=\E[8m:mr=\E[7m:nd=\E[C:\ - :rs=\Ec:se=\E[0m:sf=\E[S:so=\E[7m:sr=\E[T:ue=\E[0m:up=\E[A:us=\E[4m:\ - :vb=\007:ve=\E[\040p:vi=\E[\060\040p:xn: -# The pcplot IBM-PC terminal emulation program is really messed up. It is -# supposed to emulate a vt-100, but emulates the wraparound bug incorrectly, -# doesn't support scrolling regions, ignores add line commands, and ignores -# delete line commands. Consequently, the resulting behavior looks like a -# crude adm3a-type terminal. -# Steve Jacobson 8/85 -pp|pcplot:\ - :cs@:sc@:rc@:xn@:tc=vt100: -# From Joel Rubin, jmrubin@coral, a preliminary TERMCAP for VIDTEX, -# a terminal program sold by Compuserve. Line and column numbers are -# computer-dependent (I have a Commodore '64); you should use the meta-B -# option to shut off clean-breaking of lines. No key codes included -# since some of them are programmable and most are machine-specific. -# Works on vi if you don't use clean-breaking. Very similar to the IBM 3101 -# termcap. Escape-D used for backspace because control-H is destructive -# backspace. There seem to be a few weirdnesses (especially at the beginning -# of a wrapped line), and the cursor does not, unfortunately, flash. -zQ|vid|vidtex|Compuserve vidtex program:\ - :am:bc=\ED:cl=^L:li#25:co#40:nd=\EC:up=\EA:cd=\EJ:ce=\EK:\ - :ho=\EH:cm=\EY%+\40%+\40:pt: -# Fortune from c160-3bp@Coral (Robert Nathanson) via tut Wed Oct 5, 1983 -zK|fos|fortune|Fortune system:\ - :is=^_..:li#25:co#80:am:bs:bw:cl=20^L:cd=3*^\Y:\ - :ic=5^\Q:dc=5^\W:dl=15^\R:al=15^\E:cm=^\C%+ %+ :ta=^Z:ho=10^^:do=3^J:\ - :up=3^K:bs=^H:kb=^H:kd=^Ay\r:kh=^A?\r:kl=^Aw\r:kr=^Az\r:ku=^Ax\r:\ - :nl=5^J:so=^\H`:se=^\I`:sg=0:us=^\HP:ue=^\IP:ug=0:ce=^\Z:rv=\EH:re=\EI:\ - :rg=0:GS=\Eo:GE=^O:GG=0:GV=-:GH=&:GU=%:GD=#:G1=(:G2= :G3=":G4=*:CF=\E]:\ - :CO=\E\\:WL=^Aa\r:WR=^Ab\r:CL=^Ac\r:CR=^Ad\r:DL=^Ae\r:RF=^Af\r:\ - :RC=^Ag\r:CW=^Ah\r:NU=^Aj\r:EN=^Ak\r:HM=^Al:PL=^Am\r:PU=^An\r:PD=^Ao\r:\ - :PR=^Ap\r:HP=^A@\r:RT=^Aq\r:TB=\r:CN=\177:MP=\E+F: -# basis from Peter Harrison, Computer Graphics Lab, San Francisco -# ucbvax!ucsfmis!harrison ...uucp / ucbvax!ucsfmis!harrison@BERKELEY ...ARPA -ba|basis|BASIS108 computer with terminal translation table active:\ - :do=5000^J:nl=5000*^J:\ - :cd=\EY:ce=\ET:cl=300\E*:ma=^K^P^R^L^L :\ - :kb=^H:kl=^H:ku=^K:kr=^L:kd=^J:so=\E(:se=\E):tc=adm3a: -# From Peter Harrison, Computer Graphics Lab, San Francisco -# ucbvax!ucsfmis!harrison .....uucp -# ucbvax!ucsfmis!harrison@BERKELEY .......ARPA -# "These two work. If you don't have the inverse video chip for the -# Apple with videx then remove the so and se fields." -zO|DaleApple|Apple with videx videoterm 80 column board with inverse video:\ - :do=^J:am:le=^H:bs:cd=^K:ce=^]:cl=300^L:cm=^^%r%+ %+ :co#80:ho=^Y:\ - :kd=^J:kl=^H:kr=^U:kh=^Y:\ - :li#24:nd=^\:pt:so=^Z3:se=^Z2:up=^_:xn: -zJ|ibmaed|IBM Experimental display:\ - :al=\EN:am:bs:cd=\EJ:ce=\EI:cl=\EH\EK:cm=\EY%+\40%+\40:co#80:\ - :dc=\EQ:dl=\EO:do=\EB:ei=:ho=\EH:ic=\EP:im=:li#52:\ - :nd=\EC:ms:so=\E0:se=\E0:us=:ue=:up=\EA:\ - :kb=^h:ku=\EA:kd=\EB:kl=\ED:kr=\EC:eo:vb=\EG:pt: -# funny terminal that the TANDEM uses. -zA|653|t653x|Tandem 653x multipage terminal:\ - :li#24:co#80:ho=\EH:cm=\023%+ %+ :cl=\EI:cd=\EJ:ce=\EK:am:bs:\ - :if=/usr/share/tabset/tandem653:sb=\ES:sr=\ET:da:db:so=\E6$:se=\E6 :\ - :us=\E60:ue=\E6 :sg#1:ug#1:up=\EA:do=\012:le=\010:nd=\EC:\ - :hs:ts=\Eo:fs=\r:ds=\Eo\r:ws#64: -# From Paul Leondis, unllab@amber.berkeley.edu -zB|ifmr|Informer D304:\ - :am:bs:cd=\E/:ce=\EQ:cl=\EZ:cm=\EY%r%+ %+ :co#80:dc=\E\\:\ - :do=^J:im=:ei=:ic=\E[:li#24:nd=\EC:so=\EJ:se=\EK:up=\EA:\ - :sr=\En:ho=\EH: -# -# END OF TERMCAP -# ------------------------
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/time/letter.xpm Mon Aug 13 08:51:32 2007 +0200 @@ -0,0 +1,20 @@ +/* XPM */ +static char * jmail_xpm[] = { +"18 13 4 1", +" s None c None", +". c gray85", +"X c yellow", +"o c black", +" ", +" ", +" .XXXXXXXXXXX. ", +" XoXXXXXXXXXoXoo", +" XXoXXXXXXXoXXoo", +" XXXoXXXXXoXXXoo", +" XXX.oXXXo.XXXoo", +" XXXo.oXo.oXXXoo", +" XXoXXXoXXXoXXoo", +" XoXXXXXXXXXoXoo", +" .XXXXXXXXXXX.oo", +" ooooooooooooo", +" ooooooooooooo"};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/time/no-letter.xpm Mon Aug 13 08:51:32 2007 +0200 @@ -0,0 +1,20 @@ +/* XPM */ +static char * jmail_xpm[] = { +"18 13 4 1", +" s None c None", +". c gray55", +"o c black", +"x c gray95", +" ", +" ", +" ooooooooooooox ", +" o.xxxxxxxxx.ox ", +" oxox oxox ", +" ox ox ox ox ", +" ox ox ox ox ", +" ox oxoxoxox ox ", +" oxox ox oxox ", +" o.x .ox ", +" ooooooooooooox ", +" xxxxxxxxxxxxxx ", +" "};
--- a/etc/toolbar/workshop-cap-up.xpm Mon Aug 13 08:51:05 2007 +0200 +++ b/etc/toolbar/workshop-cap-up.xpm Mon Aug 13 08:51:32 2007 +0200 @@ -33,7 +33,6 @@ " ..XXX ", " ", " ", -" ", " X X ", " X X X X XX X ", " X X X X X X XXX XX XXX ", @@ -41,4 +40,5 @@ " X X X XX X X X X X X X ", " X X X X X X X X X X X ", " X X X X XX X X XX XXX ", -" X "}; +" X ", +" "};
--- a/etc/toolbar/workshop-cap-xx.xpm Mon Aug 13 08:51:05 2007 +0200 +++ b/etc/toolbar/workshop-cap-xx.xpm Mon Aug 13 08:51:32 2007 +0200 @@ -33,7 +33,6 @@ " ..XXX ", " ", " ", -" ", " X X ", " X X X X XX X ", " X X X X X X XXX XX XXX ", @@ -41,4 +40,5 @@ " X X X XX X X X X X X X ", " X X X X X X X X X X X ", " X X X X XX X X XX XXX ", -" X "}; +" X ", +" "};
--- a/etc/w3/stylesheet Mon Aug 13 08:51:05 2007 +0200 +++ b/etc/w3/stylesheet Mon Aug 13 08:51:32 2007 +0200 @@ -206,6 +206,14 @@ insert-before: "[["; insert-after: "]]" } + +input:text, +input:integer, +input:float, +input:url, +input:text { insert-before: "[{"; insert-after: "}]"; } +select { insert-before: "[{"; insert-after: "}]"; } + } // @media tty
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/xemacs-white.xpm Mon Aug 13 08:51:32 2007 +0200 @@ -0,0 +1,177 @@ +/* XPM */ +static char *noname[] = { +/* width height ncolors chars_per_pixel */ +"388 145 25 1", +/* colors */ +"` c #787879", +"a c #686869", +"b c #A6AAF5", +"c c #585859", +"d c #484849", +"e c #09090B", +"f c #5256D7", +"g c #989CEA", +"h c #363ACC", +"i c #C7C8CF", +"j c #282829", +"k c #F6F6F6", +"l c #13154C", +"m c #7074DF", +"n c #D9D9DB", +"o c #232788", +"p c #383838", +"q c #4249D0", +"r c #B6BAF9", +"s c #868AEB", +"t c #A8A8A9", +"u c #989899", +"v c #6266DB", +"w c #888889", +"x c #B9B9B9", +/* pixels */ +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkknkkkkkkknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknikkkknninkkkkkkkkkkknninnnkkkkkkkkkinkkikkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkknknkkkkkkkkkknkkkkkkkknkkkkkknkkkkknkknkkkkkkkkkkkxkkkkkkknkkkkkkknkkkknknkkkkkkknkkkkknknnkkkkkkkkknkkknkkkkknkkkkkkkkkkkkknkkkkkkkkkkkkknkkkkkkkknkkkkkknkkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkknnkknnnnikkkkkkkkkknnnnkkknnnnnkkkinnikkkkkinnkkkkkkkkkkikkkkkkknkkkkkkknnkkkkkkkkkkkinnnnkkknnnkkkkkkkkkknnninnkknnnnnkkknnninkkinnnnkkkkkkkkkkinnnkkknnnnnkknnnnnkkknkxnkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkknkkknkkniiiinkknkkknkknkkknkknkkkknkknxkkkkkkkkkkkkkkkkkkkkknkkkkkkiinnkkkknkkkknnnnnxkkkkxkkkkniiiinknnknknkknkkkkkknkkkknknnnnnikkiiiiikkknkknkknkkkknkknkkkknkknikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkknkkkkkkkkkknkkknkknkkkknknkkkknkknnikkkkkkkkkkkkkkkkkkkknkknkkikkknkkkknkkkknnnknnkkkxkikkkkkkkkkknnknknkknkkkknknkkkknkinnnnnkkkkkkkkkknkknkknkkkknkknkkkknkkinnkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkknnkknkkkxkkkkkkkkkknkkknkkinkkikknnkknnkknkkikkkkkkkkkkkkkkkkkkknkknkkikknnkkkknkkkkkxkkkkkkikkkikkkkkkkkknnknknkknnknxkknnkkinkkxkkkkkkkkkkkkkknkknkkkikknikkinkkikkknknnkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkknkknkkninnikkkkkkkknxkkixkkkixxnkkknxxnkkiikkxxkkkkkkkkkkkkkkkknxxxxxkknxxkxnkkixxnkkkkxxikknxiknxnkkkkkkknxikxknnkkixikkkknxikxnkkixikkkkkkkkkkixkkxxkkkixnkkkkixxkkkxnknxikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkknkkkkkkkkknknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkkkkkkknkkkkkknkkkkkkkkkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkknkkkkkkkkknkknkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkknkkkkkkkkkkknkknkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkknknkkkkkkkkkkkknkkkkkkkkkknkknkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkknkkkkkkkkkknkkkkkkkkkknkknkkkkkkkkkkknkkkkkkkkkkkkkkknkkkkkkkkknkkkknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkkkkkkkknkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkkkkknkkkknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkknknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknknknkkkkknkknkkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknknkkkkkknkknkkkkkkkkkkkkkknknknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkknkkkkknkknkkkkkkkknkkkkkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknknkkknkkkkkkknknknkkkkknkknkknkknkknkkkkkkkknkkkkkkkkkkkkkkkkknkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkknkkkkknkkknkknkkkkkkkknknknkkkkkkkknkkkkknkknkkkkkkkknkkkkkkkkkkkkkkkkknkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkknkknknknkknkkkkkkkkkkkkkkkkkkkkkknkkkknkkkknkknuunnkknkkkknkkknkkkkntkkkkkkkkkkiikkkkkkknkkkkkknkkkknnkkkknnkkknkkkkkkkkkkkkkkkknkknkknkkknknkkkknkkkkkkkkkkkkkkknkknkknkkkkkkknkknkknknkknknkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknkkkkkkkkkkkknkkkkkkkkkkkkkkkkknkknknkkkknkkkkkknkkkkkkkkkkkkkkknkknkknkkkkkkknkknkknknkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkknkkkknkkkkkkkkkkkknkkkkkkkkkknktnkkkkiknkkkknkkkkkkkkkkkkikkkkkkkkkkkinkkknkkkkknkkkknknkkukkkktkknkknkkkkkkknknkknkkkknknknknkkkkkkkkkkkkkkkkkkkknkkkkkkkkkknkknkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknkknkkkknkkknknkkknknknkkkkkknknknkknkkkknkknknkknkkkkkkkkkkkkkkkkknkkkkkkkkkknkknkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkknknkkkkkknknkkkkkkkknkknkkknkkkkkknkkkkkkkkktkkkknikkknnkixnknininnnkkxkninkkkkiikikknniikkkkknkkkkkkkxnknkkiikkknknkkkkkkknkkkknkknkkkkkknknknkkkkknkknkkknkkkkkknkkkkkkkkkkkkkkkknkknkknkkknkkknkkkkkkkkkkkkkkkkkkkkkknkkkkknkknkkkknkkkkknkkkkknkkkkkkkknkkknkknknkkkkknkknkkkkkknkknkkknkkkkkknkkkkkkkkkkkkkkkknkknkknkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkknkknnknkkknnkkkkkkknkkkkkkkkknkkknkkkkkkknnknkkkxnkkkknixtkkxuxuxxikitxiukkktiiuxkknixxikkkkknkkknkktkkkkkktkkkkkkkkkkknkkknknkkkknknknkkknkkkkkkkknkkkkkkkkknkkknkkkkkkkkkknknknkkknkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkknkknkkkkkknkkkkknkknkknknnkkknkkkkkkkknkkkkkkkkknkkknkkkkkkkkkknknknkkknkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkknkkkkkkkkkkkknkkkkkkkkknknkknkkknkkknknkknknkkkxkkkkkkxknknkiuuukknukxkkxkxnkkktkikkkkxkkktutikknkkknknkkkxknknkkxnknkknknkkkkknkkkknknkkkkknkkkkkkkkkknknkknkkknkkknknkknknkkkkkkkkkkknnkkknkkknkkknkkknkkkkkkkkkkkkkkkkkkkkkkknkknkknkkknknknknkkkkkkknkkkkkknnkkkkkkkknkkknkkkkkkkkknknkknkkknkkknknkknknkkkkkkkkkkknnkkknkkknkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkkkkkknkkkkkkkkknknkkkkkxkkkknkxknkkntnktnkkwkxkkxkxkkkkxkxkkkkxkkxnknxkkkkkkkkknkkxnkkkkkxkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkkkkkkknkkkkkkkknkkkkkknkkkkknkkknknkkknkkknkkkkkkknkkkkkkkkkkkkkkkknkkkkkkkkkkknkkknkkkkknkknkkkknkkkkkkkkkknkkkkkkkkkkkkknknkkkkkkkkknkkkkkkkknkkkkkknkkkkknkkknknkkknkkknkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkknnknnkxknkknxkknkxkkkwknkwkxkkxkxunkxnkntkkttkktkkixkkkknkkkknkktkknknnxkknkknknknkkkkkknkkkknknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkknknkknkknkkknkkkkkkkkkknkkkknknkkkknkkkkkkkkkkkkkkkkkkkknkknkknknkkknkkkkkkkkknkknkkkkkkknkkknkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkknknkknkknkkknkkkkkkkkkknkkkknknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkkunkkxwwwwikkuwunwkwwktikwnwnwwnkkknwwittkiwwnwnnkkkknkkkkkntkkkktnnkknkkkknknknnnnnnnnnnnnnkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknnkkkkkknkknnkknkkknkknknkkkknkkkkkkkkkkknknkkkkkknkkkkkkkkkkkknkknknnnknknkkknknknknnkkknknknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknnkkkkkknkknnkknkkknkknknkkkknkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkrrrrrrrrrbrrrrrrbrrrrrrrrrrrrrikinnkkknirrrrrrrrbrbrbrrbrrriknkkkkkkrrrrrrrrrrrrrrbrrrbrbrrrrbrrrrrrrrrrrrrrrrrrssssssgsggbkkkkkkknkkkkkkkkkknknkknkkkkkknkkkkkkknkkkkknknkkkkkkkkknknkkknknknkkkkkkkkknkkknkknknknknknkkknknkkkknknkknkknknkknkknknkkkkkkkkkkkkkknkkkkkkkkkknknkknkkkkkknkkkkkkknkkkkknknkkkkkkkkknknkkknknknkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkrhhhqhhhhhhhhhhhhhhhhhhhhhhhhhhmkkknkkkivhhhhhhhhhhhhhhhhhhhmknknkkkrhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhtnknkkkknnkkkkkkkkkkkkknkkkkkkknkkknkkknknkkkkknknkkkkkkknnnkknkkkknknkkkknkknkkkkkkkkkkkkkknkkknknnkknknkkknkknknkkkkkkkkkkknknnkknkkkknnkkkkkkkkkkkkknkkkkkkknkkknkkknknkkkkknknkkkkkkknnnkkknkkknknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkknknknkkihhhhhhhhhhhhhhhhhhhhhhhhhhhhhhodknkkkknvhhhhhhhhhhhhhhhhhhhockkkkkkihhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhoenkkknnkkkkknkknknkknkknknnknkkkkkkkkkknkknkknkkkkknknkkkkkknkknknkkkkkkkkkkkkknnkknknknnkknknknkkkknkknknkkkkknkknnnkknnkkknkknknkkknnkkkkknkknkkknknkknnnkkkkkkkkkkkknkknkknkkkkknknkkkkkknkkkknkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkmohhhhhhhhhhhhhhhhhhhhhhhhhoooldkknknkkbhohhhhhhhhhhhhhhhholdnknnkkkmohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhlcnknknkkkkknkkkkkkknknknknkkkkkkknkknnkkkknkkkknnkkkkkkknknkknkkkkknknnkkkkknkkknnkkkkkknknkknknknknknknknknknkknkkknkkkknnkknknknknknkkkkknkkkkknknkknkkknknkkkknkknnkkkknkkkknnkkkkkkknknknnknkkknknnkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkdpllhhhhhhhhhhhhhhhhhhholeepddwnkknknkkwdddqhhhhhhhhhhooeepwknkkknkkddjeoqhhhhhhhhhhhhhhhhhhleeeeeeelloohhhhhhhhhhhhhhhhl`nnnnknknknknnknknkknkkkkkknkknkkkkkkknknkkkkkkknnnknknkkknnkkknnnkkkkkkknkkkknkkknkkkkkkkknknkkknkkkknkkknkkknknkknnknkkkkkkkknknknkkknknknknknkkkknkkkkkkkkknkkkkkkknknkkkkkkknnnknknkkknkkkknknkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkknkx`fhhhhhhhhhhhhhhhhledtnnknnnnnnnnnkkkknshhhhhhhhhlej`nnnnniknknkkkkknghhhhhhhhhhhhhhhhoel`xnninitwudplohhhhhhhhhhhhheunnnnnnnknknkknkknnnkkknknkkkkkkkkkknkknkknnnkkkkkkkkkkkkkkkknkkkknnknkkkkkkkkkkkkknkkknkkkkkknnkkkknkkknknnnkkkkkkkkknkkknknkkkkkkknkkknknknknknnnnknknnknkkkkkkkkknkknkknnnkkkkkkkkkkkkknknkkknknnknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknnmhhhhhhhhhhhhhhhlcxxiixixxxxiinnnkkkighhhhhhhheeaxxxxxxxiiinnknkknnivhhhhhhhhhhhhhhhejxxixxxxxxxxxii`dohhhhhhhhhhoetxtxxinnnnknknknknknnnknkknknkkkknkkkknknnkkkkkkkknkkknkknknknknknkknknknnkkkkknkkkknkkknnknknkkknkkkknknkkknknknknkkkknkkkkkknknkkkkkkkkknknknkknknnknkkknknkkknkkkkknknnkkkkkkkknkkknkknkknknkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkknkkkkknkkkkkkkkkkkkknirfhhhhhhhhhhhhhhecuuwwuuuuuuutxnnnkkrvhhhhhhoeewuwwwuuuuutxxnnknkknrvhhhhhhhhhhhhhhoewwuwuuuwuuwuwuuuuwdqhhhhhhhhoew`wwwuxnnnkknkkknknknknknkkkkknnkknkkkknknnknnknkkkkknkkkkkkkknknkkkkkkkkknknkkkknkkkkkkknkknkknkkknknkkknnknnnkknkkkknknkkknkkkkknkkkkknkkkknkkknkknnknnkkkkknkknknkkknknnknnknkkkkknkkkkkkkkknnnkkknkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkknknitshhhhhhhhhhhhhhlcccccaaaa``wuxinnkrbhhhhhhoejdccaacacaaa`utxnnkknnrvhhhhhhhhhhhhhhllccaccaaaaaaaaaaaaaaaqhhhhhhhljcdcca`txnkkkkkkknknkkkkkknnnknkknnnknkkkkkkkknkkknnkkknkknknkkkkkknkknnkkkknkknkkkkkkkkkkknkknknnknkknknkknkknknknknkknknkkkknknkkkkkkkkkkkkkkknknnkkkkkknnnknkknnnkkkkkkkkkknkkknnkkknkknknknkkkkkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkniughhhhhhhhhhhhhhljjpjpppdcaa`utxnnirfhhhhhoeejjpjpjpppddcaaccxnkkinrhhhhhhhhhhhhhhhejjpjppppjpccaccccccddvqhhhhhheejjjjpawxinkkkknkkknknnnnnkknknknkknknnkknkknknknnkknkkkkknkknknkkkkkkuukknkkkkknkkkkkkkknkkknnkkkknkkknknknknkknknknkkkkknkkkkkknknnkkkkknkkkknkkkknknnnkknknknnknknnnkknkknknknnkknkkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknnituvhhhhhhhhhhhhhoeeejejpdca`wuxinnrmhhhhhoelpjejejejjjdda`ctnkkkkxnrhhhhhhhhhhhhhhoeeeeejejpdpcaaa`aaaccddmhhhhhheeeeejpc`cdannknknkknknxa`cackknknnnnkccnkcaknkkknknkkkknkkknknkkkkkkkkktkkkkkkkkknkkkkkkkkkknkkkknkknkkkkkknknknknkkkknknknkknkkkkkkkkkkkkkknknknknknknknkkkknknknnknknnkkkknkkknknkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkniitshhhhhhhhhhhhhheeeejjpc`wutxinnrshhhhhoejcdpeeeeeejpc`aaautnnkttishhhhhhhhhhhhhhleeeeeeljpccwaa`uwwacaacsqhhhhoeeeeeejcwxunknkkkittkkktkntktnknxtinknndknwnkkkknknktitniikkkntxkkkkkxxkxkkkitxkkkknknkknxxxkxnnnkitxknntkttnknknknknnkkknkknkkknknkkkkkkknknkkkkknkkknknknnkknknnknknnknknnkkknkknnkkkknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknknnirhhhhhhhhhhhhhheeeeepc`utxxinnighhhhhoepcapjeeeeejjp`wwwatxkknt`rmhhhhhhhhhhhhhhleeeeeejpc`ata`uxxca`ccwwmhhhhleeeeejpawxunkknkktttwnnkkktkkkn`uuu`nknn`cknnnkkkkkkt`xaxuikn`xx`nkk`ttaukk`uxw`nkkkkkkknwuu`xwknntxuiki``ut`xkknkknknnnknkkkkknkkkkkkkknkkkknnkknkknnkkkkkknknnknnnnknknnknnkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkknknnknivhhhhhhhhhhhhhleeejpauxinnnnrbqhhhhoedwiwapjeeejjdjtxinunnnkkktrfhhhhhhhhhhhhhheeeeeeeejwuwctnnni`uuwcutshhhheeeeeejpauxuknnknkua`uknnkktnknn`ttuaxknn`wknkxaaacakkckxkkxkxkkkktktnkkkwki`ttxaxnwaaa`tkttntktkkn`autkktnknkwkknknkkkkkkknknkknkkkkkkkknnnknkknkknknknnkknkknkknknknnnnknknnkkknnkkknkkkkkkkkkkkkkknkkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkknkkkkkkkkkkknknknkknknknshhhhhhhhhhhhhoeeejd`uinnkkrrqhhhhhednuxucpejejpda`xinntnkknnkxrhhhhhhhhhhhhhhoeeeeeejpaux`x`nnnx`ttuuiighhhheleeeejp`tiunkntktxnnwkknkntknkx`ttttnnkwxttkkkkkkkkknaktkktktkkkktktknnktkx`ttttnkknkkkkkxxkuntnkunkntkkunknkwnkkknkknknnknknknknkknnknkkknknnnknknnkknknknknknnnknkkkknkkkkkknkkkkknkkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkkkknknknknkbhhhhhhhhhhhhhheeejd`tinknrbqhhhhoejnnu`wdjejjjauxxnnnkuknkknnbshhhhhhhhhhhhhhleeeeeejc`titni`knkcxkniknrhhhoepjeeejd`titnknukwkkn`nknkktkknncxkknkktxnkcnknkkknkkkaktkktkitkkuxkn`knw`nkaxnnnnkkkkkkkktxntntnnukktxkkx`nkuinnnknknknkkkknnkkkknnkkknnknknkknkkkkkknknkkkkknknkkkkkkkknnknkkkkkkkkkkkkkkkkkkkknkknkkknnkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkknknknnknknkkknnnfhhhhhhhhhhhhhleejd`tnkkibqhhhhheeinnxajjjepdadd`xknwcccwkntarmhhhhhhhhhhhhhheeeeeeepcwx`unkcanknwcwxknrhhhoecpeeepcwwccccaxkicctuwkntcccnnknwa`xkkaakkackkknkknnaakuikakkiacxknknacxwwnnua`xnknkkkkkiawkanxwkuccicxktn`ciknkknknknknknkkkkknkknnnknnknnnnnkknnnkknknknknnnknnknknkkkkkkkkknknknnkkkkkkkkkkkkkkkkknknknkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkknnknkknmhhhhhhhhhhhhhoeejpauxnirfhhhhoeltxnit`cpjpd`utnnkknnnknknkknrqhhhhhhhhhhhhhoeeeeeejpauxknkknnknknknnkkrhhhld`djjjpcwxnnknknnknknknkknkkknkknnnnnkknknkkkknkknkkknkkkkkkkkkkkkkkkkknnnkkknkknkkkkkkkkkkkkkknnnkkkknnktkkknkknnnknnkknkknkknkknkkknkknnkkkknnnnknnnknknkknknknnnknkkkknkkkknkkkkkknkkkkkkkkkkkknkkkkknkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkknkkkkkkknknknnknkknknknbhhhhhhhhhhhhhheeepcuxirvhhhhheliknxtwcpppcawxinknknknnknknknbhhhhhhhhhhhhhhoeeeeeejp`unkkkkkknknknknknghhhe`wcpjjpattnnnnnkknknknknnknkknnkknkkknkkkkkkkknknkknkkknkkkkkkkinknknkknknnnknkknknkkkkkkkkkkknkknknnkknxpctkkkkkkknkknnknnkknnkknknknnnknnnnnkkkkknknkknknkknnkknknknnkkkkkkknknnknkknkkkkkkkknnknkknknknknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkknkkkknnkkkkkkkknknknnkkkkkiqhhhhhhhhhhhhhleejcwrrvhhhhheennnitwadppc`utxnnnkkknknnknnkrshhhhhhhhhhhhhhleeeeeejdwuxinkknnnnknnknnnnmohetuapjjd`xxnnknnknkknknknknnnkknknknknknnkknknnkknnknknkkkkknkkkknnnknkknnknnknnknkknkkknnknkkkkknnnknknknknnnkkkkkkknnnknnnnnknnnkknkknkknnnnnnnnnkknknnnknnkknknkknkknnkkknnnknknkknkkkkkkkkkkkknknkkkknknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkknkkkkkkkkknkknkkkknknkkknnnknmhhhhhhhhhhhhhoeejdtrvhhhhhelnnnitwadppd`uxnnnknnnnknnnknkkrvhhhhhhhhhhhhhheeeeeeepcwxinnknrgvbrknnnnknncjlit`dppcwxnnnnknknnnknkknkknknknknnnnkkkknnnnkknnkkknkkknkkknkkkknnnnnnknknnnnknkkkkknknkkkkkkkkkkkknnkknnnnnnnknkkkkkknnnknnkkknknnknnkkkknknkkkknnknkkkknkknnnnninnkkkkknkkkknknknkknkknkknkkkknnnnknkkkknnkknnnkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkkknghhhhhhhhhhhhhheeesrvhhhhoeeinnxtwadppcawtikkkkkkknkknnknknrhhhhhhhhhhhhhhoeeeeeejp`uxnnnnnrqhhwxknnknnkkkkixwapdauinnknknkkknknnniirnikkknkknnniirrggsgikknnnknnkknkkknirrrgsggnnknkknknkkkkkknkkkknkkkkkkknknknirrbsssbnnnnkkkknnnnniiiikkkkkkkkkkknnknnnkknknnnnnnirrrsssggrnnnkkknkkknknnknknnkknkknrrrbsgsgrnnnkkkknrsgrkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknnkkknnknnhhhhhhhhhhhhhhlewrvhhhhhelinnitwadppdawtinkkkknkkknkknknknghhhhhhhhhhhhhhoeeeeeejd`tiinknrshhhetkkkkkkkkknnxwcdd`uiknknnnnniiirrrssvqsikkkkknkrrgvhhhhhhminknknknknnknrbmqhhhhhhmiknknknknnnknkkknnknkkkkkkkkirrsvhhhhhhqgkknnrrrgssgssvmsnknkkknkkkknnnkkkknknknirbsmqhhhhhhhfsrkkkknkkknknnnkknknnnrbmfhhhhhhhfsrnnknrghhhtkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkkknnfhhhhhhhhhhhhhoprvhhhhheennnxtwaddpdawxiinkkkkkknknknkknnrmhhhhhhhhhhhhhheeeeeeejcwxinnkirqhhoekkkkkkkkkkknxuaccwxrrrrrrssssvvfhhhhhhlankkkkirgqhhhhhhhhhqxnnknknkknrbmhhhhhhhhhhhgknkknnkkknknnkkkknkkkkkknrrsqhhhhhhhhhhfnkrshhhhhhhhhhdakknkkknkkkknnnknkkknrrgvhhhhhhhhhhhhhhmnknknnknknknnnkknrbmhhhhhhhhhhhhqvsbrgqhhoekkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknnknknghhhhhhhhhhhhhhrshhhhhelinnitwacppdawxinnnnkkkkkkkkkkknkkrfhhhhhhhhhhhhhheeeeeejpcuxinnirmhhhopkkkkkkkkkkknit`aaugvfhhhhhqhhhhhhhhhhhetnnknrrvhhhhhhhhhhhhhinnnknnnrsqhhhhhhhhhhhhhwknkknknknkknknknkknkkkirsqhhhhhhhhhhhhhdnrfhhhhhhhhhhlakkkknkkknkkkknnnnnirgfhhhhhhhhhhhhhhhhhfnnkkknknnknknknrsqhhhhhhhhhhhhhhhhhhhhhhodkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkrhhhhhhhhhhhhhhshhhhheeinnituadppdawtinkknwctkkkkkkxkkkknrhhhhhhhhhhhhhhoeeeeeejp`uinnnrghhhhlankni`dxkknknixw`wxshhhhhhhhhhhhhhhhhhljnnnnibqhhhhhhhhhhhhhqonntnnirshhhhhhhhhhhhhhhhwcxnknknknknkkkknkknkrbvhhhhhhhhhhhhhhqhurhhhhhhhhhhhexkknxcwkkkkkkkkkknrbmhhhhhhholeedqhhhhhhhqnnnnknknnnnnnrshhhhhhhholeeelhhhhhhhhhhlckkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknnknnvhhhhhhhhhhhhhhhhhhlexnnixwacdpda`uxnnkkkukknkkkkiwknkkrghhhhhhhhhhhhhhleeeeeejdwxinnrrqhhhhexkniiiiwnkkknnxtutxghhhhhhhhhhhhhhhhhheanknrrqhhhhhhhhhhhhhhho`i`iirvhhhhhhhhhhhhhhhhhlpnknnwdpaknnknkknknrbqhhhhhhhhhoeeehhhhvshhhhhhhhhhoennknnkukkkkkkkknnrsqhhhhhhhlepuxnshhhhhhhhonknnknnknknrgqhhhhhhhledunkiwfhhhhhhhhlwnknnknkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknknnmhhhhhhhhhhhhhhhhhlecxiitu`ddpdawtxnnkkkkunkknkkk`kkkkkrvhhhhhhhhhhhhhheeeeeeejpwtnxrbqhhhhoeuinxttt`nnnkknnxxixrcllhhhhhhhhhhhhhhhetiurbqhhhhhhhhhhhhhhhhhjtxwrshhhhhhhhhhhhhhhhhhoaxinnnkuknknknxtxnrshhhhhhhhhheecxxumhhvvhhhhhhhhhhljtxiiinwknknnkttirshhhhhhhhledtnirmhhhhhhhhhpxnnitiutnnrqhhhhhhhoewnniituxvhhhhhhheuniixxinknknkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkknkkkkkkkkknkkrhhhhhhhhhhhhhhhhlepwtttu`cpddawuxiinnkkktknkknnkwkkkk`rqhhhhhhhhhhhhhheeeeeeejduxrrsqhhhhhlpudtuw`wainnknknnninxwccashhhhhhhhhhhhoextrbqhhhhhhhhhhhhhhhhhhewurshhhhhhhhhhhhhhhhhhhodttxnnnunknknnuturshhhhhhhhhheedwxtuwfhqhhhhhhhhhhhedacxtttwinnkndubrvhhhhhhhhledw`crbqhhhhhhhhhld`xxaauuwrshhhhhhhhepuiitu`c``qhhhhhhexix`wuuinnininnkkknkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknnkknkkkkkkniqhhhhhhhhhhhhhhlejd`wuwacdpdawtxinnnnknktknnkknkunnnxibhhhhhhhhhhhhhhoeeeepdcwtrrgfhhhhhhhl`iiaw`awainnnkkkknknknwnnrhhhhhhhhhhhhljubbqhhhoelvhhhhhhhhhhhhecrghhhhoeeqhhhhhhhhhhhhojawutxnuknknkna`rghhhhhhhhhoee``ju```shhhhhhhhhhhhoew`awwwuainnnunirvhhhhhhhhoedwwwprmhhhhhhhhhhopjtxwnnntrqhhhhhhhhetwuww`adccshhhhhoeutu``wttnkikkkkkknkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknkknkknknknkkkkknshhhhhhhhhhhhhoeeedc``adppda`txinnnkkkkntkknnknnunknuishhhhhhhhhhhhhhsrbrrrsssmvhhhhhhhhhhetitaacc``innknknkkknnnukkrhhhhhhhhhhhhedgrfhhhlectbhhhhhhhhhhhoegbqhhheecitmhhhhhhhhhhhoepcautiwnkunkwirshhhhhhhhhhleaaadacpdshhhhhhhhhhhhlecddccawaxnnntirvhhhhhhhhhedc`aa`rhhhhhhhhhhhoep`u`xnntghhhhhhhhhex``ccdppddwfhhhhoea``ccawunniknkkkknknkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkknkknkkghhhhhhhhhhhhhheeejpccddddawuxinnnnnnkkkukkknnknwnnnnrfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhoeitcccda``inknknknkkkkkunirhhhhhhhhhhhoecrvhhoeecxirhhhhhhhhhhhocrfhhheexnnbshhhhhhhhhhhlejjdauxwnkuknwrshhhhhhhhhhoejw`adpjlashhhhhhhhhhhhejjjejjd`axnnnrrvhhhhhhhhheexp`wa`shhhhhhhhhhhoepdaaxnnbshhhhhhhhhewdcpjjjjdcamhhhhoedddpdcwunkxkkkkkknkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknkknknnkkkknkrqhhhhhhhhhhhhhleejjppppdcwtxnknkknkkkkkukkknknnwiknkrhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhlpdjacdpjjpd`kknnnkkkkwcddgshhhhhhhhhhhlershhheedpxtbhhhhhhhhhhhorshhheeuinnrmhhhhhhhhhhhleeejdppddddnkrbqhhhhhhhhhhed`pjejjeewshhhhhhhhhhhheeeeejjejppdnnrvhhhhhhhhhoeutwpjlcshhhhhhhhhhhoejjpjdxtgvhhhhhhhhhljjejljjjpp`ghhhhlepjjejcawnxxknkknkkknkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknknkknnnkkknnmhhhhhhhhhhhhhoeeeejjjdc`txnnnnnnnnnkkkwunkkkknk`nnrghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhewuwcdpdauxnnnnkknknnkkkkkimhhhhhhhhhhhegbhhheedwtirshhhhhhhhhhhsghhoeeauxxwrfhhhhhhhhhhheeeejpcwxnnnnirqhhhhhhhhhhlewadjjjeljsvhhhhhhhhhhhleeeeeejdatikkrshhhhhhhhhhepu`adpjpshhhhhhhhhhheeejpc`tirvhhhhhhhhhhjjjeejdawttrfhhhljjjejpdwxnkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkknkkknkkkkghhhhhhhhhhhhhheeeejjpcwuxinknkknknkkkkxuinkknknnnkrmhhhhhhhhhhhhhhlelllloohhhhhhhhhhhhoewwcpjjdatxnkkkkknkkknknkkrvhhhhhhhhhhodrfhheejcwtxrmhhhhhhhhhhhrqhhlejawxtubhhhhhhhhhhhheeeeejd`tnkknrvhhhhhhhhhhoeccdjeeejjpbvhhhhhhhhhhhleeeeeejc`tinrbhhhhhhhhhhoeu`cpjjljahhhhhhhhhhoeeeeepawxivhhhhhhhhhhoeeejpawtxiimhhhejjeeepcwxnkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknknkknkkkrqhhhhhhhhhhhhhleeejjc`uxnnnknnnnkkkknnnknnkkkknknnrfhhhhhhhhhhhhhheeeeeeeelllhhhhhhhhhol`cpjjjd`tiknnnkkknknknkknrhhhhhhhhhhhorshhlelpauxxrfhhhhhhhhhhmmhhleepcwtxrmhhhhhhhhhhhoeeeeejd`txnnrshhhhhhhhhhhejcpjjeeejpcrqhhhhhhhhhhheeeeeejjcwxnirqhhhhhhhhhhep`cpjeejpdvhhhhhhhhheeeeejjcwtrvhhhhhhhhhhqeeejd`tinnnshhheadjejpcuxnkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknkkkknkknkkkkkrvhhhhhhhhhhhhhoeeejpauxinnnnkkkknkkkknnnnknkknnnknrhhhhhhhhhhhhhhoeeeeeeepc`uaqhhhhhhhljdpjljjcwxnnkknknkkkkkknnnshhhhhhhhhhhbghhoeejd`uxtbhhhhhhhhhhhshhoeeepcwutrfhhhhhhhhhhhleeeeejpatxnnbqhhhhhhhhhhoedpjeeeejpcurhhhhhhhhhhhoeeeeeeedauinrmhhhhhhhhhhoecdpjejejd`ufhhhhhhhleeeeeejd`tifhhhhhhhhhhhheejcwtinkkkhhoe`cjjepauinkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknnknknibqhhhhhhhhhhhhhheeejc`tinkkkkkkkkkkknnknknnnnkkknnishhhhhhhhhhhhhhleeeeeeejdawwuvhhhhhhejpeeelpcwxnnknkkknknknknkrmhhhhhhhhhhqrhhheeepcwutrshhhhhhhhhhfqhheeejpawugbhhhhhhhhhhhheeeeeejd`uinrmhhhhhhhhhhhlepjeeeejjd`bshhhhhhhhhhhleeeeeejdwtirbhhhhhhhhhhhlecjjeeejpawxicooooleeeeeeeejd`tishhhhhhhhhhhhpejdwxnnnnkneejwapjjd`tinkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkknkkkkknkkkkkkkkkknknnknkkkkknkkirvhhhhhhhhhhhhhhhleejdwxnnkknkknnkknnnnkknnknknkkkkrvhhhhhhhhhhhhhheeeeeeeejpdaaashhhhhoeeeeeejpauinknknkkknkkkkknrfhhhhhhhhhhmmhhleejdauturvhhhhhhhhhhqhhoeeeepd``tshhhhhhhhhhhheeeeeejp`tirghhhhhhhhhhhoejjeeeeejdauxmhhhhhhhhhhheeeeeeepcwxnrfhhhhhhhhhhhepjleeejpcwxnkkncppleeeeeeeejdwtibhhhhhhhhhhhhhjjd`xnkkkkknnit`dpjd`tnnkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkkkkrrvhhhhhhhhhhhhhhhhleejd`tnnkkknnknnkkknnkknnnnnnkkkkrqhhhhhhhhhhhhhoeeeeeeejjpdddc`vhhhhleeeeeejd`tnnnkkkknkknknkknrhhhhhhhhhhhshhoeeejdawwwrhhhhhhhhhhhhhoeeeejpda`rfhhhhhhhhhhhleeeeeejdwtirfhhhhhhhhhhhlejeeeeejpawxrvhhhhhhhhhhoeeeeeeepauxrghhhhhhhhhhhlejjeeeejd`uxinnnntwcpeeeeeeejdwxnrhhhhhhhhhhhhhhjp`unnknkknknxucppcwtnnkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkknkkkknkkkkkkknknkkkkirvhhhhhhhhhhhhhhhhhheejp`uinknkknnknnnkknkkknknknnnknbhhhhhhhhhhhhhhoeeeeeeejpdcccc`mhhhhleeeeeepcwtiknknknnkkknkknnshhhhhhhhhhffhheeeepdaw`gghhhhhhhhhhhhhleeeejjdcwbhhhhhhhhhhhhleeeeeepcwxrghhhhhhhhhhhoeleeeeeepc`xxrhhhhhhhhhhhleeeeeejd`tirfhhhhhhhhhhhlejeeeeepcwtinnkinxwcpjeeeeejpawxnnmhhhhhhhhhhhhhhjcwxnkknkknniu`ddcuxnkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkknknkknkkknrvhhhhhhhhhhhhhhhhhhheeepcuinnnkkntknnnknnkkknnknnkknimhhhhhhhhhhhhhhleeeeeeeejcwwwaushhhoeeeeeejepwxnnnknknknnknkkkrvhhhhhhhhhhqhhleeeepca``bmhhhhhhhhhhhhoeeeeejppdbmhhhhhhhhhhhoeeeeeeejawxrfhhhhhhhhhhhleeeeeeejpauxrghhhhhhhhhhheeeeeeejdwtrghhhhhhhhhhhhejeeeeejdauinnknnixuadjeeeejjd`uinkrhhhhhhhhhhhhhhqd`uinkkkkkkitwac`uinnkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkknnknnrshhhhhdfhhhhhhhhhhhhhoeejc`xnnknkainnnnnkkikkkknkknkurvhhhhhhhhhhhhhheeeeeeejdawuttwbshhhoeejeeejdcuxnkknknknkkkknknrqhhhhhhhhhhhhheeeejpcaawrqhhhhhhhhhhhhleeeeeljjarqhhhhhhhhhhhoeeeeeejpaurghhhhhhhhhhhheeeeeeeepcwxirmhhhhhhhhhhheeeeeeepcuxrmhhhhhhhhhhhleeeeeeepdwxinnnkknitwcdjjjjpd`uxinnnmhhhhhhhhhhhhhhqcwxnnnnknnnxu``wtikkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkknkkkkkkkkkknkkkkkkkkkkknrshhhhhljmhhhhhhhhhhhhhoeejdatinknkanknnnuunkkxxknuini`rhhhhhhhhhhhhhhoeeeeeejed`tiiwwishhhljjjeeejdcxinnnkkkkkiuxukuighhhhhhhhhhhhhoeeeeejcaagghhhhhhhhhhhhoeeeeeejjjwghhhhhhhhhhhheeeeeeejd`trfhhhhhhhhhhhoeeeeeeejpauxnrqhhhhhhhhhhleeeeeejd`uirhhhhhhhhhhhhleeeeeejpawxnkknkknnxuwccdddcautinkkkrqhhhhhhhhhhhhhhpauxnknkkknixuutxnnkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknknknknrshhhhhletrhhhhhhhhhhhhhheeepcuxnkkxxknnkwutwkntwnnutnnsghhhhhhhhhhhhhhoeeeeeeejd`xinuanshhhedppjejpccxnnnnnnnknna`waubmhhhhhhhhhhhhheeeeejepcabmhhhhhhhhhhhhleeeeeejjdbmhhhhhhhhhhhheeeeeeejcwrbhhhhhhhhhhhheeeeeeeejcwtinghhhhhhhhhhhleeeeeejdwtrshhhhhhhhhhhheeeeeeejcatinnkknknnnitu``a`wuxinkkkknghhhhhhhhhhhhhhqp`tinknkkknnxxinnkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkknknknkkkkkknkkkkkknkkrshhhhhleukrqhhhhhhhhhhhhhleejc`tnnkukkknn`da`kknunknuknrmhhhhhhhhhhhhhhleeeeeejpwxinnntishhheuccjjjpacinknwdddd`ktukukrvhhhhhhhhhhhhleeeeeejec`rqhhhhhhhhhhhoeeeeeeelparqhhhhhhhhhhhleeeeeejpawrmhhhhhhhhhhhheeeeeeejpauiirmhhhhhhhhhhheeeeeeejcwxrvhhhhhhhhhhhoeeeeeejpautinknknkknnnnxtttutxinnkkkkkkfhhhhhhhhhhhhhhhd`tnnnknknnnnnnkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknrbqhhhhleuknnmhhhhhhhhhhhhhheejpauinkuknkkutnnwnknunkkunkrfhhhhhhhhhhhhhheeeeeejjpwxnnnkunmhhlexcapjjd``inkknnnknknutkunrhhhhhhhhhhhhhleeeeejjjcughhhhhhhhhhhhleeeeeeejpgghhhhhhhhhhhhleeeeeejd`trqhhhhhhhhhhhleeeeeeejc`tinrqhhhhhhhhhhoeeeeeejpauirhhhhhhhhhhhhoeeeeeejp`tninnkknknkknnnnxiiinnnnknnknknqhhhhhhhhhhhhhhjawtnknkkkknknkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkknknknkkkkkkknkkkkibqhhhhoe`knnxghhhhhhhhhhhhhheeepcwxiniuknk`kkiaknn`nnuuknrhhhhhhhhhhhhhhoeeeeeejdduinnknukgqhlan``dppcw`irikknnnnnnuuktnshhhhhhhhhhhhoeeeeeejjdabshhhhhhhhhhhheeeeeeeejdbmhhhhhhhhhhhoeeeeeeejc`bghhhhhhhhhhhheeeeeeejpcuxnighhhhhhhhhhhleeeeeejd`uighhhhhhhhhhhhleeeeeejc`tnkknknkknkknkkknnnnnnnnnknknkkrqhhhhhhhhhhhhhhjautnknkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknrbqhhhhoedniniusfhhhhhhhhhhhhhleepc`tinnakkkidcuwwnnicdxdtishhhhhhhhhhhhhhleeeeeeejjpankucddcadejppjjddjpdbsqmnkkknnxd`kdrmhhhhhhhhhhhhleeeeeeeec`rfhhhhhhhhhhhlleeeeeejd`rqhhhhhhhhhhhoeeeeeeepaurshhhhhhhhhhhheeeeeeejd`tinrmhhhhhhhhhhheeeeeeejc`trshhhhhhhhhhhheeeeeeepcuinnkknkknknnnkkknnknknknnknkkkknshhhhhhhhhhhhhhod`uxnnkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkknknkknkknkibqhhhhoednnixu`amhhhhhhhhhhhhhoeejd`uinnxxnkknknkkkknknknkrvhhhhhhhhhhhhhheeeeeeejcwxnnkkkkkknkknntwcdc`tibqhhcnkkkkknnnkrqhhhhhhhhhhhheeeeeeejpctbhhhhhhhhhhhheeeeeeeepdgghhhhhhhhhhhheeeeeeejdaurfhhhhhhhhhhhoeeeeeeepawxnnbhhhhhhhhhhhoeeeeeejpauirvhhhhhhhhhhhheeeeeejdatinnikknkkkkknknkkkkkknknnkknknknnmhhhhhhhhhhhhhhlc`tinknkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkirvhhhhhedkniiuwcdshhhhhhhhhhhhhheeepauxinnknkkkkknnkknknknnrqhhhhhhhhhhhhhheeeeeejpauxnnnknknkkknnnxwcdawxrvhhoeikkknknknnbhhhhhhhhhhhhleeeeeeejdabshhhhhhhhhhhoeeeeeeejparmhhhhhhhhhhhheeeeeeejcwxrhhhhhhhhhhhhleeeeeejp`uinrshhhhhhhhhhhleeeeeejd`uirvhhhhhhhhhhhheeeeeejdwtiknnnkkkknnknknkkkkkkkkknnnnkkkknnvhhhhhhhhhhhhhljcwtinkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkirvhhhhoejknnxuwcdp`fhhhhhhhhhhhhhleepcwtinnnnnknnkkkkkkknkknghhhhhhhhhhhhhhoeeeeeejd`tinknkkkkkkkknitwacaurshhhlpnknnnknknimhhhhhhhhhhhheeeeeeeepcwrfhhhhhhhhhhhleeeeeejjdwrfhhhhhhhhhhhleeeeeejpaurghhhhhhhhhhhheeeeeeejcwxinrqhhhhhhhhhhheeeeeeejdwtnrhhhhhhhhhhhhoeeeeeejcwxnknkknkkkknnnkkkkkkkknkknknnnnkknnifhhhhhhhhhhhhhedauinnkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkknkkknknkkkrrvhhhhheliknit`adpdcshhhhhhhhhhhhhoeejdwtinnknknknknknknknnnishhhhhhhhhhhhhhleeeeeejdwtnnkkknnkkknknnxw`a`rbqhhhlwnnknnknnnrvhhhhhhhhhhhheeeeeeejdatbhhhhhhhhhhhoeeeeeeljpatbhhhhhhhhhhhheeeeeeeedatishhhhhhhhhhhoeeeeeejpawiirmhhhhhhhhhhhheeeeeeepcwxnrhhhhhhhhhhhhoeeeeejpawxnknnnknkkkkkkkkkknkkkrsrkknknnknknnbqhhhhhhhhhhhhejd`tinkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkknnrvhhhhheennnixuadpdcabhhhhhhhhhhhhhheejdatinnnnknkknknknnnkknrfhhhhhhhhhhhhhheeeeeeepawinnkknknkknnnnnxtw`brfhhhoexknnninnnnrhhhhhhhhhhhhleeeeeeejcwrshhhhhhhhhhhoeeeeeelpcwbshhhhhhhhhhhheeeeedejdwtrmhhhhhhhhhhhoeeeeeejd`uiirqhhhhhhhhhhhoeeeeeejp`txnrhhhhhhhhhhhhoeeeeejd`tnikknkknnrnkkkknknkkknbhhmnkknnknkknishhhhhhhhhhhhljjcwxnnkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknrmhhhhhllnnnituacpdc`urhhhhhhhhhhhhhhleepcwxnkknnnnkknknkknnnnrhhhhhhhhhhhhhhoeeeeeejpatinkknnkkknkkknnnxtxrvhhhholnknnixxinishhhhhhhhhhhheeeeeeejpaurvhhhhhhhhhhheeeeeeljpaurvhhhhhhhhhhhleeeejrsaawxrvhhhhhhhhhhhleeeeeejc`tnrshhhhhhhhhhhhleeeeedddwtnnrhhhhhhhhhhhhoeeeeejdwxxnnkknnnrghgkkkkknnkkkshhhcnkknnnnknnimhhhhhhhhhhhoejpawinkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknnrshhhhhleunnixwacppc`uxrmhhhhhhhhhhhhhleejd`tinkknknknnnnknknnishhhhhhhhhhhhhhoeeeeeejd`xinkkkknkknnknnnnnrrvhhhhheannnxxtxinrmhhhhhhhhhhhoeeeeeeejc`xrhhhhhhhhhhhheeeeeeljc`trqhhhhhhhhhhheeeeebghhctirvhhhhhhhhhhhleeeeeepauxibqhhhhhhhhhhhheeeeelrsswinkrhhhhhhhhhhhhoeeeeejcwxnnkkknkrbqhhfkkknkkkknshhhenkkkknkkknirqhhhhhhhhhhoeejd`tnnkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkrshhhhhleunnituacpdd`wxnnshhhhhhhhhhhhhheejpauxnnnkkknknnnnkknkimhhhhhhhhhhhhhhleeeeeejcwxnnkknnnkknnknknnirvhhhhhhexnnxuwwuxirfhhhhhhhhhhhleeeeeejjawrshhhhhhhhhhhleeeeeelpawrbhhhhhhhhhhhheeeearqhhl`iivhhhhhhhhhhhleeeeejp`wrrmhhfhhhhhhhhhheeeeegbhhfikkiqhhhhhhhhhhhheeeeejcuxnknkkkirfhhhldkknkkkkimhhhlnnnnkknnnknishhhhhhhhhhoeejpauxnkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknrshhhhhletnnixwaddpc`wxiknrhhhhhhhhhhhhhheeejcwxnnknknknnnnnnknnrfhhhhhhhhhhhhhheeeeeejpaunnnnnnknkkkknkkkrrvhhhhhhoennxtwaawxibhhhhhhhhhhhheeeeeeejdaurvhhhhhhhhhhheeeeeeejpaurshhhhhhhhhhhoeeejrmhhoeunivhhhhhhhhhhhleeeeejd`trshhmhhhhhhhhhhoeeee`rqhhlcnnnvhhhhhhhhhhhheeeeepawxknnkkirvhhhoe`kkknkkkrvhhhounknnnkknnnnrqhhhhhhhhhoeeejdwxnkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkknrshhhhhoeannixw`cppdauxinkkifhhhhhhhhhhhhhoeejd`txnnnnkknknknknknbhhhhhhhhhhhhhhoeeeeeeedaunnnkknkkkwcxnnirbqhhhhhhhldnitwacawtrghhhhhhhhhhhheeeeeeejcwxrhhhhhhhhhhhheeeeeeejcwtrmhhhhhhhhhhhleeegghhhedinivhhhhhhhhhhhleeeeejcwrbqhhshhhhhhhhhhleeecrvhhoe`kknmhhhhhhhhhhhhoeeejpauinkkknrshhhhepnnkknnnkrfhhhhdniiiinnnknnnshhhhhhhhhleeejpatikkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkknkkkkkkkkkkkkkkkkkkinrshhhhhhejknixu`cpdcawtinknknfhhhhhhhhhhhhhheejpauxnnkknnknknnnknimhhhhhhhhhhhhhhleeeeeejd`tinknnknknkntnrrshhhhhhhhheuitucpdauxrfhhhhhhhhhhhleeeeeejpaurghhhhhhhhhhhoeeeeeelpcwxrvhhhhhhhhhhheeebbqhhleunnnmhhhhhhhhhhhheeeeeparbqhhvmhhhhhhhhhhleepbshhhepnnkkghhhhhhhhhhhhheeeepauxnkkirshhhhlenknnnknnnrhhhhhjixttxinknknnghhhhhhhhheeeeepawxnkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkknkkkkknnnkknrrghhhhhhoeitxxu`ddpdawwuxkkktrshhhhhhhhhhhhhhoeepcwxinkkntxuntinknrfhhhhhhhhhhhhhhleeeeeepcwxnnittnknnnnrrgfhhhhhhhhhoewwuapjjdairhhhhhhhhhhhhleeeeeejd`trmhhhhhhhhhhhleeeeeejdauxrfhhhhhhhhhhheebbqhhoeaxnnkshhhhhhhhhhhhqeeej`rbqhhorvhhhhhhhhhhleprshhhletnknkiqhhhhhhhhhhhhqeejp`tinnirvhhhhleukkniniiinrhhhhhhutuuuxinnnknrhhhhhhhhheeeeejcwxnkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkknnnxkkktnixikirvhhhhhhhopawtu`cppdcwuwuwxnktxshhhhhhhhhhhhhhhjejd`tinnkn`uw`t`nkrghhhhhhhhhhhhhhhleeeeejpcuxikutuwnknirgfhhhhhhhhhhhlj`p`djjpcwrghhhhhhhhhhhheeeeeeejcwxrqhhhhhhhhhhheeeeeeejdwtirhhhhhhhhhhhhvrbqhhoejtnnnirhhhhhhhhhhhhhvmwrrmqhhoerhhhhhhhhhhhfsrshhhleannnnnimhhhhhhhhhhhhhfcppatiirbfhhhhoewnnnixtutxighhhhhhjw`awtnnnnnnrhhhhhhhhleeeeejd`tikkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkknnkkkkininitrbvhhhhhhhhhdxwuwcppdcwtx`cutnnnrshhhhhhhhhhhhhhhqplddpcccwkxtkuntnirfhhhhhhhhhhhhhhhleeeeeejjdtnkwawtirrsfhhhhhhhhhhhhhed`adpjjcwxrmhhhhhhhhhhhoeeeeeejpauighhhhhhhhhhhoeeeeeejpcuxirhhhhhhhhhhhhhvhhhhleaxiknxtvhhhhhhhhhhhhhhvvhhhhheprhhhhhhhhhhhhvfhhhoepxiknnxxxqhhhhhhhhhhhhhqsgrrbsfhhhhhoednnkixww`uxrshhhhhhqaacauinnknighhhhhhhoeeeeeejd`xinkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkknnkkxnnirrgqhhhhhhhhhhmt``cdppc`uxwikntknirfhhhhhhhhhhhhhhhhqscawxnkkkxtktnxrrvhhhhhhhhhhhhhhhhqcpeeejc`xiitrrrbsvhhhhhhhhhhhhhhhoewcjjjjjawxrfhhhhhhhhhhhleeeeeejc`trmhhhhhhhhhhhleeeeeejdatinrhhhhhhhhhhhhhhhhhledwxinxtwshhhhhhhhhhhhhhhhhhhhelirhhhhhhhhhhhhhhhhoejuxinixtuushhhhhhhhhhhhhhhhhhhhhhhhhoecnknitu`aawtrshhhhhhhqddcwxnknnrfhhhhhhhleeeeeejd`tnnkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkknkkxrrgvhhhhhhhhhhhhhfgbuppc`uxiunirrrbsfhhhhhhhhhhhhhhhhhhhfsbrinknxxirrbsqhhhhhhhhhhhhhhhhhhqmsrrrrrrgsgmvqhhhhhhhhhhhhhhhhhhoe`djejejatxbhhhhhhhhhhhheeeeeeejcwtrfhhhhhhhhhhheeeeeeejcwxnnifhhhhhhhhhhhhhhhlejauxiiuw`wqhhhhhhhhhhhhhhhhhhlexkifhhhhhhhhhhhhhhheeauxxixww`wumhhhhhhhhhhhhhhhhhhhhhhhoedkkiixu`cca`trvhhhhhhhhmcd`tnnnrshhhhhhhleeeeeeejd`xnkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkknkkkkniinkkkngqhhhhhhhhhhhhhhhhhhqhpauxnktarvqhhhhhhhhhhhhhhhhhhhhhhhhhhhfskiaurvhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhejejeejjdddgshhhhhhhhhhhoeeeeeejpaurbhhhhhhhhhhhoeeeeeeepcuinknmhhhhhhhhhhhhhhleed`uxitu`awgqhhhhhhhhhhhhhhhhlewnnkmhhhhhhhhhhhhhheep`txxxuwa`wtimhhhhhhhhhhhhhhhhhhhhhlednnkxxu`cccauxrvhhhhhhhhhfgubrrbmhhhhhhhlejjeeeeejdwtnkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkknghhhhhhhhhhhhhhhhhhhhhj`tinkkkrhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhowkkkrhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhejjeeejjcuxrvhhhhhhhhhhhleeeeeejd`tishhhhhhhhhhhleeeeeejd`uxnnknhhhhhhhhhhhhhleejd`uttw`aawxshhhhhhhhhhhhhhheeaxnniiqhhhhhhhhhhhoeeedautttwaawuxinahhhhhhhhhhhhhhhhhhoeeunnnixuwaccawtirqhhhhhhhhhhhhvvfhhhhhhhhlepdjeeeeepcuxnnkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkrhhhhhhhhhhhhhhhhhhhhhewxnkkkkkhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhodnkkkhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhoejjeeejpauxnhhhhhhhhhhhheeeeeeejcwxivhhhhhhhhhhheeeeeeejd`tnnknkrhhhhhhhhhhleeeejdawuw`aawuxiwhhhhhhhhhhhhoeecwttxtuwhhhhhhhhhhleeejpawuw`aa`wtnnnn`ohhhhhhhhhhhhhholejxnnnxtu`cddawuxnrhhhhlllohhhhhhhhhhhhhhlee`wcjeeeejdauinkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkteeeeeeeeeeeeeeeeeeeeewxnnkkknkeeeeeeeeeeeeeeeeeeeeeeeeeeeeeepnnnkkeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeejd`tinneeeeeeeeeeeeeeeeeepauxnkdeeeeeeeeeeeeeeeeepcuxnnknknnoohhhooleeeeeeepcaaaaa`uxnnnxoohhhhhholeeejda`www`adohhhhhhoeeeeeepdaa`acawtxnnnnitplohhhhhhhhoolee`tttttu``ccdc`txinihhhel``dllohhhhhhhholeeaixwdjeeeejcwxikkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkknnnixuwadpeeeeejdwtinnnkkkkkknknnniixwapeeeeeeeeeeeeepc`txinnnnknknnkniiuwcpleeeeeeeeeeelpawxinnnnnnnnixxxxuuw`adpjjeeeeeeepcwtnknknnnniuadleeeeeeejp`tinkkknknixwdjeeeeeeejd`uinnkkknkn`peeeeeeeeeeeejpddccawtiiknniclllleeeeeeeejpccccccccpllleeeeeeeeejpdccca`uiiknknnxwajeelllleeeeepc`wwww`acddda`utnnnnglejxnxwdjeeelllleeed`knit`djeejjdauxnnkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkknknnixuwadjjeeeeejdawtxinnnkknkknnnixtu`cpleeeeeeeeeeeejpc`uuxiinnnknnnixuwapjeeeeeeeeeeeeejc`utxiniixxxxtuuw`acdppjeeeeeeeejpatxikknkkkniuapjeeeeeeejdwtnnkkkkknit`djeeeeeeejd`tnnknnknknniuapeeeeeeeeejjjdcawtinnknnixwcleeeeeeeeeejjpppdcawuucpjeeeeeeeeejjpdc`uxinkkkknitwcpjeeeeeeeeejppdcccddppdc`uxinkkkiuuxnit`djeeljjdc`iinnnnxwcpjeejpawxnnkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkknitw`cpjjeeeeeejjda`wtxnnkkknknixtuw`cpjeeeeeeeeeeeeeejpca`wutinnknnitw`cdjjeeeeeeeeeeeeejpcawwuuuuuwww``acddpjjjeeeeeeeeejd`tinnknkknnxucpeeeeeeejpcwinnkkknkiiuadjeeeeeejjawxnnkkknknknitadjeeeeeeeeejpdcwtinnknkkniu`djeeeeeeeeeeljjpdawttxuadjeeeeeeeejjpc`utinnknkkknitwcpjeeeeeeeeeejjjjjpjpdc`tixnknnnknkkkxtadjjeejpd`wuxxxxxw`djjjjpcwtinkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkknkixuacdjjjejeejejjddaawtinnkkknnxtw`acdpjejeeeeeeeejejjjjpdaa`utinnnitwacdpjjeeeeeeeeeejejjjddcaa`a`aaacccddppjjejejeeeeejjpcwxnknkknnknxwcpjeeeejejd`tinkkkkknnxuapjjeeeejjdauinknkknkkknixwcpeeeeeeeejjpa`txnknknknnnxwadjleeeeeeeejjpdawtiiitwcpeeeeeeeejpcauxinknknknknnxtwcdjjeeeeeeeeejjjjjpcawuxikikknknknnnitapjjjjjppcawuuuuwacpjjjda`txnnknkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkknntw`cdpppjjpjpjppddca`uxnnkkknixu`acddpppjppjpppjpjjjpppddcaawtxnnnxu`acdpppppppppjppjjpjppddccaccacccccddddppppppjppppjpdc`txnkkknkknnxwacpppppppdcwxinkkkknknxuacpppppppdawxinknnkknkknnxuacpjejejjjpcautinknkkknknnxxwadpjeeeejejjpd`wxinnniu`cpjeeeejjpc`utnnknkkkkkknnnxtwacppejeejejeejjpdcawuinnkkknknknkknxu`dppppddddcca```ccdpppcawxxnkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkknnxu`aaaccacccacacaaa`wtinkknkknitw`aaaacaacccccacccaccacaca``wtinnnitw`aaaaacacacaccccccacaaaa````a`aaaaaaaacccacaccdcacaawuxnnkknkknknxuwaaccccaa`wuinknkkkknnitwaaccccacawtinknknknnkknnnxu`cdpppddcawuxinnkkkkkkknnnitw`ddppjjppdda`uxikkknnxu`ddppppdcawuxnnknknnkknkknnnitu`acdppjjjjpppdc`wuxinnknkknkkkkknnit`cccaaaaaccccccacdcccawuxinkkkkkknkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkknixtuuuuuwuuuwuuuuuuttxixkkkknnixttuuuuuwuuuuwuwuuuwuwuwuuuuttxnnnnxattuuuwuuuuudauuutuuwu`uuuuuuwuuuac`cuwuawuuuwuwawwuutxxnnnkkkkknnnnxcwuuuuuuuttinnkkkkkkknnactuuuuu`ctxxii`iwikknkkknnixuw`aaa``wutxinkkkkkkkutkkknixuwaaccccaawutxnw`ikkkixu`acdccawuxinnnkkkkknknki`kknnxxuwaadccccca``wuxinnnkkkkkkknnknkkitu``wuuuuww```aaaaaa`wutxiknkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkknnixxxxxxxxiiiiiiixinnwnkkkkknnnniiiiiixixixxixixiixxxxxxxxiinnknnntiiixxxixxxxpxxixxiii`txxxxiuwixiucupixiiwixixixwiixxiinkkkkkkkkkknnniuxxiiiiuiinnkkkkkknkknntiixiiuxiatnnkdndxkknknkknnnxxtuuuuxxxinnnkknkkkkkxknkkknuxuuwwwwuuxxinnknxkkknnixuuwwuutxnnkkkkkknknkkkkxnknknnittuwawwwuuutxinnnkkkkkkkkkkkkkknnixuttxiixxttuuwwwuuuttxinnkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkknnknnnnnkninnnknnnnnkwkknknxinkntnxxinnxxnxtknnnnttnnnxxxtiknkkixnxnnnnnnnnnnuunnnnknnnwnnnnnnunnnnt`icnnnnunnknknitnnnknkknkkkiinxxknnnxxtnnniwxxxnkxixninnkkkxnnknkxnnnnknkck`nknkkknkknknnniiiiinnnkknkkknkkkkinxnkniwtuwtxututitnnkkkxnkkkknnixiutuxixknkkixnkkknxxnxkknnxxnniix`xxxxiinnnnkkkkkkkkkkkknkkkkkniininnnnnniixxxxxxiinnknkknkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkknkknknkknkknknkkkkkkkkiikkkkxxxtkkxwuxttknu`xx`kkxuxxwnkiwtxtiknxtxuwkkkkknkkknunkkkknkkiiknnnnntknkknukukkkkktkkkkkntkkkkkkkkkkkiuwxxwkkk`xxukknuxxnkkxwxwxtiknkxkkkkkiwinkkkk`kukknkkkkkkkknknnnnnknknkkkkkkkknkkutxtnknutttnntwtwxxtkkkkikkkkkknnnnx`xwxxxkkutxuxnkitxuwkkxuxiwnnnnxxnnnnnnnkkkkkkkkkkkkkkknkknknnnnknkkknknnnnnnnnnnnknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkxkkkkktwutkkktkkktkktkkknxnuixxtukkikkkxkkxkkktnnknkkknkkkkknkknkkxkkkkkkkxkkkkkkkknknkktnkkkkkntkkkkkkkkkkktkkknxnkxkkxkkkxkkkkkkukxkkxkkkxkkkkkkkktikkkknkkkkknknkkkkknkkkkknkknknknknkkkkkikkkxkkxkknnnk`ktkkxkknkxkknkwuwwwikwkxkkiknnkkkxkktkkktkkuiixtukkkkxkkkkkkkkkkkkkkkknkknkkkknkkkknknkkkkknknkkknknknkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkknkkkkkkkkkxkkkkxnkkxkkktkkkxnktkkknikwiixiinkxkkkxkkxkkkikkkkknkkkkkkkkkkkknikkknknkxknkkknkknkknknukkkkkkwkkkkkkkknkktkkknikkxkkxkkkxknkkkkwkikkxkkkxkkkkkikknxkkkkkkkknkkknknkkkkkkkkkkkkkkkkkkkkkkkkxkknxkkxknkkknwkxkkxnkknxkkkkkkkkknkwkikkikxkkkkxkkxkkkxknuxiixnkkkkxkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknknkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkknkknikkkxkknukkkwnknxkkutknukkttkkknkkxnnkxkktnkiwkknkkkkkkkkkkkkkkkknxkkknkntkkkkkknkkkknkktkkkkkknnkkkkiukkkkttkntkkkxkkikkktkkknkkukxkkxkkkxkkkkkttxxkkkknknkkknkkkkknknkkkkkkknwiknkknkkkkkkxkkkxkkinknnkkwkikkinkkkxnknkkkkkkkkukikkikktnknxkktnkiwkktxkkknknktkkkkkkknknkkkkkkkkkkkkkknknkkkkkkkknkknkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkktkkknuuixtkkituxkkkinutnkkkiuwiknxuikxukkktuxnwkkknknknkkkknkkkkkkukknkkktnkkkkkknkkkkkkntkkkkkkukkkkiukkkkinutnkkuuknuukkkuwuikuukxnkukxuuwuikkkkiknkkknkkkkkknkknkkkkkkkkkkknunkknkkkkkknxunkuuikkxwuxktuinxkxinwuuutkkkkkkkktuinxkxnkkuuxkkkkuuxnukknuuiknkkukkkkkkkkkkkkkkkkkkkknkkknkkkkknknkkkkkkkkkkkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkknkkkkknnkkkkkkkkkkikkkkkkikkkkknkkkknkkkkkknkkkkkkkknkkkkkkkkkkkkknkkkkkniknknkkxkkkkkkkknknkkknnkkkkkikkkkkkkkkkxkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknknkkknkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkknkkknkkkkkkkkkkkkkkknknkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkxnkkkkkkkkkkknkkkkkkkkkkkkkknknkknkkkkknkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkuwtkkkkxwuknkkknkkkkknkkkkkkkkkkkkkkknkkknkknkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkxwunkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkknknkknkkkkkkkknkkkkkkkknkkkkkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknknkkkkkkkkkknknkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkknkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkknknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkknkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkkkkkkkkkkknkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkknkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkknkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkknkkkkknkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknnkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkknknknktixikkkxkkkkkkinkkkkkkkkkkkkkkkkkkknxkkkkkkkkkkkkkkkkkkkkknxnkkkkkkikkkkkixnxkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkktikkkkkkkkkkkkkkkkkkkkktxkkkkknkkkkkkkkkkkkkkkkkkkkkkkkinkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkkkkkkxnkkkxixtkkkknkkkkkkikkkkkkkkkkkkkkkkkkkknkkkkkkknkkkkkkkkkkkkkkknkkkkkikkukkkntnukkkkkkkkkkkkkkkkkkkkkkknkkkknkkkknkkkkkknkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkknkkkkkkkikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkikkkkxnixkkkkikkkkkkiknkkkkkkkkkkkknnnkkknknkkkkninnkkknnnknkkkkknkkkkknkkkkkknxktkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkinikkkninnnkkininnnkkkknkkkkkkkkkkkiniknnkkkknikkkkknnknkkkknkkkkkkikkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkknnkkknnnnnkkkkknkkkkkkikkkkkkkkkkknxnninkkninnnkkninnkkkinninikkkknkkkkkninkkkkkikikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxnnikkninnnkknxnxninkkknkkkkkkkkkkknxnxnnnkkxnnxnkkinnxnkkinniikkkknkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkikkkkkkikkkkkkkkkkknnnnnxkknkkknkkknkkkkknnknknkkkknkkkkkkkkikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkknkkkkkkxknkknkkknkkkkkxxxxxkkxknkknknkkkknknkkkknkkinnnikkkknkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkkkikkkkkkkkkkinnnnnkkkkkknkkknkkkkknnknknkkkknkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkknkkkkkkiknkknkkknkkkkkkkkkkkkiknkknknkkkknknkkkknkkinnnnkkkknkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkknkkkkkiikkkkikkkkkknkkknkkknkkkkknkkkkkkkkknkkkknninkkkkkkkkkkkkkkkkkkkkkkkkkkkkikkkkkkkkkkkknkknkkknkkkkkkiknkknkkknkkkkkkkkkkkkiknkknknnkknkkknkknnkkxkkkkkkkknkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkkknkkkknnkkkkkiinkkknnknnnkkkinnkkinkikknkninnikkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkknikkkkkkkkkkkiikkiikkkninkkiiknnkiknninikkkkkkkkkinknkkikkkiinkkkkinnnnkkniikkkkknkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" +};
--- a/etc/xemacs.xpm Mon Aug 13 08:51:05 2007 +0200 +++ b/etc/xemacs.xpm Mon Aug 13 08:51:32 2007 +0200 @@ -1,86 +1,192 @@ /* XPM */ -static char * XEmacs[] = { -"326 73 10 1", -". s background c None", -"X c white", -"x c black", -"o c gray12", -"O c gray24", -"+ c gray36", -"@ c gray48", -"# c gray60", -"$ c gray72", -"% c gray84", -"........xxx....................xxxx.........xxx................xxxXXXXxxxxx................................xxxxxxx....................................................................................................................................................................................................................", -"........xXXXxxxxxxxxxxxxxxxxxxxxXXXX........xXXXxxxxxxxxxxxxxxxxXXXXXXxXXXXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXXXXXXX...................................................................................................................................................................................................................", -"........xXXXXXXXXXXXXXXXXXXXXXXXXXXXooO.....xXXXXXXXXXXXXXXXXXXXXXXxooxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxo.................................................................................................................................................................................................................", -".........XXXXXXXXXXXXXXXXXXXXXXXXXXXxooO......XXXXXXXXXXXXXXXXXXXXXoxooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooO................................................................................................................................................................................................................", -"...........xXXXXXXXXXXXXXXXXXXXXXooxooOoO+.....xXXXXXXXXXXXXXXXXXooxooOOooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoxoOOOO.............................................................................................................................................................................................................", -".............ooXXXXXXXXXXXXXXXoooxooOoOOOO++@....ooxXXXXXXXXXxoooxooOoOO+OOooXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooOoOO+O+...........................................................................................................................................................................................................", -"..............OOXXXXXXXXXXXXXoxooOoOoOOOO+O++@@...OxXXXXXXXXooxooOoOoOOOO+O+OxXXXXXXXXXXXXxoooxoooxoooxoooxXXXXXXXxooOOOO++@@.........................................................................................................................................................................................................", -"................xXXXXXXXXXXXXXooOoOOOOO++O++@+@#...xXXXXXXXooxoOOOOOOOO++O++@xXXXXXXXXXXXXooOooOOooOOooOOooOxXXXXXooOOO++O+@@@@.......................................................................................................................................................................................................", -".................XXXXXXXXXXXXXoxoOOO+++O++@+@@@@##xxXXXXXXoxooOoOO+O+++O++@+@xXXXXXXXXXXXXooOOOOOOOOOOOOOOOOxXXXXXooOOOO++@+@@#@#.....................................................................................................................................................................................................", -".................xXXXXXXXXXXXXXooOO+O++@+@+@@@@#@xxXXXXXXooooOoOOO++O++@+@+@@xXXXXXXXXXXXXoooOO+O+++O+++O+++xXXXXooooOO+O++@@@@##$$...................................................................................................................................................................................................", -"..................XXXXXXXXXXXXXxooOO++@+@##@@##@xxXXXXXXoooooOOOO++O+@@+@##@@xXXXXXXXXXXXooooOOO++@++@@++@@+xXXXXoOooOOO++@+@##@#$$$$.................................................................................................................................................................................................", -"...................XXXXXXXXXXXXXooOO+O+@#@###@#xxXXXXXXooxoOOOOO+O++@+@@#@###xXXXXXXXXXXXxoOOOOO++@@#@@@#@@@xXXXXxoOOOOO++@@#@##$#$$%$%...............................................................................................................................................................................................", -"...................xXXXXXXXXXXXXoooOO++@@#@##$#xXXXXXXxooooOOOO++++@+@@@#####xXXXXXXXXXXXooOOOOO+++@@#@###@#xXXXXooOOOO++++@@#@##$$$$%%...............................................................................................................................................................................................", -"....................XXXXXXXXXXXXXxoO+O++@@##$#xxXXXXXxooOooOOO+++++@@@@####$xxXXXXXXXXXXXxoOOOO++++@#@##$##$xXXXXxoOOOO+@++@#@##$#$%%$%...............................................................................................................................................................................................", -"....................xXXXXXXXXXXXXoooOO++@@###xxXXXXXooooOOOOO++O+@@@@@#@##$#xXXXXXXXXXXXXoOoOO+O+@@@@@##$$%$xXXXXoOoOO+O+@@@@@##$$%$%%.%..............................................................................................................................................................................................", -".....................XXXXXXXXXXXXXoooO+++@@#xxXXXXXoxooOoOO+O++++@@#@####$#$xXXXXXXXXXXXXooOOOO++@@#@@###$$%$XXXXooOOOO++@@#@####$$%$%%...............................................................................................................................................................................................", -".....................xXXXXXXXXXXXXoxoO+O+@@xxXXXXXoxooOoOO+O++@++@#@##$##$$$xXXXXXXXXXXXooOoOO+O+@@@@####$%$%%oxooOoOO+O+@@@@#$##$%$%%................................................................................................................................................................................................", -"......................XXXXXXXXXXXXXoOoO+++xxXXXXXxooOoOOOO++++@@@@@####$$$$$xXXXXXXXXXXXooOOOOO+@+@@#@#$$$$$%%..OoOOOOO+@+@@#@#$$$$$%%................................................................................................................................................................................................", -"......................xXXXXXXXXXXXXoooOO+xxXXXXXooxooOOOO+O++@+@@#@####$$%$%xXXXXXXXXXXXoooOOOO++@@@@##$$%$$%%%...OOOOO++@@@@##$$%$%%%%..........................................................................................................................................................xxxxxxxxx............................", -".......................XXXXXXXXXXXXXooo+xxXXXXXooxoOOOO++O++@+@##@##$##$%$%xxXXXXXXXXXXXoooOOO++@+@##@#$$$$%%%%.....+O++@+@##@#$$xxxx%%...............xxxxx.................xxxxx.................................xxxxxx.........xx..............................xxxxxxxx.....................xxxxxXXXXXXXXXx.........................", -".......................xXXXXXXXXXXXXooOxxXXXXXoxooOoOO+O++@+@@#@##$#$$$$$%%xXXXXXXXXXXXXooOOOO++@@@@@#$#$$%$%.........@+@@@@@#$xxxXXXX.............xxxxXXXXXX.............xxxXXXXXX............................xxxxxXXXXXXx.....xxxXX.........................xxxxXXXXXXXXxx................xxxxXXXXXXXXXXXXXXX.......................", -"........................XXXXXXXXXXXXXoxxXXXXXooooOoOOO++O++@@@@#@##$#$$%$%%xXXXXXXXXXXXXxooOOO+++@@#@##$$$$%%............@@#@xxxXXXXXXoo.........xxxXXXXXXXXXo..........xxxXXXXXXXXo.........................xxxxXXXXXXXXXXXXXXxxxXXXoo.....................xxxXXXXXXXXXXXXXXX............xxxxXXXXXXXXXXXXXXXXXX......................", -"........................xXXXXXXXXXXXXxxXXXXXoooooOOOO++O+@@+@##@##$#$%%$%%.xXXXXXXXXXXXxooOOO++++@#@##$#$%%$%.............#@xxXXXXXXXXXoo.......xxXXXXXXXXXXXoO........xxXXXXXXXXXXXo......................xxxxXXXXXXXXXXXXXXXXxxXXXXoOo..................xxxXXXXXXXXXXXXXXXXXO..........xxxXXXXXXXXXXXXXXXXXXXXXoO...................", -".........................XXXXXXXXXXXXXXXXXXXoxoOOOOO+O++@+@@#@##$#$$%$%%.%.xXXXXXXXXXXXoOoOOOO++@@@@##$$$$$%.%............xxxXXXXXXXXXXoOOOO...xxXXXXXXXXXXXXxoO+O...xxxXXXXXXXXXXXXooOO..................xxxXXXXXXXXXXXXXXXXXXXXXXXXxoOOO..............xxxXXXXXXXXXXXXXXXXXXXoo........xxxXXXXXXXXXXXXXXXXXXXXXXxoO..................", -".........................xXXXXXXXXXXXXXXXXXooooOOOO++++@+@@@#####$$$$%$%%.%xXXXXXXXXXXXooOOOO+O++@@@###$$%$%%............xxXXXXXXXXXXXXooOOO+xxxXXXXXXXXXXXXXooOO+O+xxXXXXXXXXXXXXXXoooOO+..............xxxxXXXXXXXXXXXXXXXXXXXXXXXXoooOO+O++.........xxxXXXXXXXXXXXXXXXXXXXXXxooOO....xxxXXXXXXooxoooxXXXXXXXXXXooOO++...............", -"..........................XXXXXXXXXXXXXXXXoooooOOO+++++@@@@####$$#$%%$%%.%xxXXXXXXXXXXXoOoOO+O++@+@####$%$%%.%..........xxXXXXXXXXXXXXooOoO+xxXXXXXXXXXXXXXXXxoOOOOxxXXXXXXXXXXXXXXXoooO+O+@...........xxxXXXXXXXxoooxoXXXXXXXXXXXXXoooOOO++@+@......xxXXXXXXXXooxoooXXXXXXXXxooOOO+@.xxxXXXXXXooooOOooOoxXXXXXXoxoOOO++@.............", -"..........................xXXXXXXXXXXXXXXooxoOOOOO+O+@@@@@#@##$#$$%$%%.%..xXXXXXXXXXXXXxoOOOO+@+@@#@#xxxx$%%...........xxXXXXXXXXXXXXXooOOOxxXXXXXXXXXXXXXXXXoOoOOxxXXXXXXXXXXXXXXXXooOOOO++@@........xxxXXXXXXXooOoOOOoxXXXXXXXXXXXooOOOO+O+@@@....xxXXXXXXXooxoOOoOOoXXXXXXoOoOOOO+xxxXXXXXXoxoOOOOOOOOOOXXXXXooOoOO+O+@@...........", -"...........................XXXXXXXXXXXXXxooooOOOO++++@@#@####$#$$$%%%%%...xXXXXXXXXXXXXxxxxxxxxxxxxxxxXXXX%%%........xxxXXXXXXXXXXXXXXoooOxxXXXXXXXXXXXXXXXXxooOOxxXXXXXXXXXXXXXXXXXxooOOO+++@@#.....xxxXXXXXXXoxooOOOOOxxXXXXXXXXXXxooOO++++@@#@##xxXXXXXXXxooOoOOOOOOOXXXXXooOOOO+xxxXXXXXXooooOOOO+++O++xxXXXxooOOO+++@@##.........", -"...........................xXXXXXXXXXXXXooOooOOO+++++@@@##$##$$$$%%%%.....xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo%.......xxXXXXXXXXXXXXXXXXoooxxXXXXXXXXXXXXXXXXXooOoxxXXXXXXXXXXXXXXXXXXooOOO++++@#@#$..xxxXXXXXXXoxoOOOO++OxxXXXXXXXXXxooOOO++++@@@##xxXXXXXXXxooOoOOOOO++OxXXXXoOoOO+OxxXXXXXXXoOooOOO+++++@@xxXXXooOOO++O+@@@##$.......", -"............................XXXXXXXXXXXXoxoOOOO++O+@@@@@###$$$$$%$%%.%....xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooO......xxXXXXXooXXXXXXXXXxooxxXXXXXXoxxXXXXXXXXXooOxxXXXXXoooXXXXXXXXXXoooOO+O++@@@@##$xxxXXXXXXXxooOoOO+O+xxxXXXXXXXXXoOoOO+O++@@@@#xxXXXXXXXooOoOOOOO++O+@xXXXoxoOOOOxxxXXXXXXXxoOOOO++O+@@@@xxXXXooOO+O++@+@@#@#$$.....", -"............................xXXXXXXXXXXXXooOO+O++++@@#@####$$%$%%%%.%....xxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoxooOOO....XXXXXoxoxXXXXXXXXooxxXXXXXxoooxXXXXXXXXXooxxXXXXXoxoxxXXXXXXXXXooOoOO+O++@@@##xxxXXXXXXXXooOoOOO++OxxXXXXXXXXXXooOOOO+O++@@#xxXXXXXXXoxooOOOO+O++@+@xXXXoooOOOOxxXXXXXXXXooOO+O++++@@#@##XXXoooOO+O++@@@###$$%%...", -"............................xXXXXXXXXXXXXxooOO++@++@#@##$##$$$%%.%%......xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxoOOOO+++..xXXooxoOxXXXXXXXXxoxXXXXXxooOoxXXXXXXXXooxxXXXXXoxoOxXXXXXXXXXXoOoOO+O++@+@##xxxXXXXXXXXoxoOOOO++O+xxXXXXXXXXXXoOoO++O++@+@xxXXXXXXXXxoOOOOO+O++@+@#xXXXoooOOOOxxXXXXXXXXxoOOO++@++@#@####oooooO+O++@+@##@#$$$%%..", -"............................xXXXXXXXXXXXXXooOO+O+@@@@####$$$$$%%%........xXXXXXXXXXXXXoxoooxoooxoooxoooxooOoOOOO++@@.XoxoOOxxXXXXXXXXoxxXXXXooOoOOxXXXXXXXXxxxXXXXoxooOoxXXXXXXXXXXxoOOOO+++@@#@#xxXXXXXXXXXooOoOO+O++@xxXXXXXXXXXoxoOOO++@+@@#xXXXXXXXXXoOoOOOO++@+@@#@xXXXooOOOO+xxXXXXXXXXoOoOO+O+@@@@##@#$$$OOOOO+++@@#@##$#$$%%%.", -"...........................xxXXXXXXXXXXXXXoooOO++@@#@####$$%$%%%%........xXXXXXXXXXXXooooOoOoOoOoOoOoOoOoOoOOOO+O++@@@oooOOxXXXXXXXXxxxXXXXoxooOOOxXXXXXXXXoxXXXXooooOoOxXXXXXXXXXoooOO+O++@+@@#xxxXXXXXXXXXxooOOO+++@xxxXXXXXXXXXoooOO+O++@@@xxXXXXXXXXxooOOOO+O++@@@@#@XXXxooOOO+xxXXXXXXXXXXOOO+++@@#@####$$%$OOOO++++@@#@##$$$%%%.", -"..........................xxXXXXXXXXXXXXXXXxoO+O++@@##$##$%$%%.%%........xXXXXXXXXXXXoOooOOOOOOOOOOOOOOOOOOOOO+O+@@+@###oOOxXXXXXXXXxxXXXXoxoOOOO+xXXXXXXXXxxXXXooOooOOxxXXXXXXXXXoooOOOO+@+@##@xxXXXXXXXXXxooOOO++O+@xxXXXXXXXXXXoooOOO++@+@#xXXXXXXXXXooOoOO+O+@@+@##@##oxooOOO++xxXXXXXXXXXXXXx+O+@@@##$##$%$%%.%+++++@#@##$#$%%%%.", -".........................xxXXXXXXXXXXXXXXXXXooOO++@@###$$$$%%%%..........xXXXXXXXXXXXxoOOOOO+O+++O+++O+++O+++O++@+@@#@##$O.xXXXXXXXXxXXXXxooOoOO+xxXXXXXXXxxXXXXooOOOOOxXXXXXXXXXXooOOOO+O+@@@@#xxXXXXXXXXXoOoOO+O++@+xxXXXXXXXXXXooOOO++O+@@xxXXXXXXXXXooOOOOO+@+@@#@##$#$$OoOOOO+xxXXXXXXXXXXXXXXXxx@@#@#$$$$%%%%...@@@@@###$$%$%%.%", -"........................xxXXXXXXXXXXXXXXXXXXoooO+++@@##$$%$%%%%.........xxXXXXXXXXXXXooOOOO++++@+@+@+@+@+@+@+@+@+@@@@#@##$$xXXXXXXXXxXXXoooOoOOOOxXXXXXXXXxXXXXooooOO+OxXXXXXXXXXXxooOOO+++@@#@xxxXXXXXXXXXooOOOO+O++xxxXXXXXXXXXoxooOO++++@@xXXXXXXXXXooooOO+O++@@@@#@##$$$$%OOO+OxxXXXXXXXXXXXXXXXXXXXx##$$%$%%%%.....@#@####$$%%%%.", -".......................xxXXXXXXxXXXXXXXXXXXXXxoO+O+@@@##$$%%.%%.........xXXXXXXXXXXXXxoOOOO+@++@#@@##@@##@@##@@##@@##@#$$#xxXXXXXXXxXXXXoooOOOO++xXXXXXXXXxXXXooOooO+O+xXXXXXXXXXxooOOO++++@@@@xxXXXXXXXXXooOoO++O++@xxXXXXXXXXXXxoOOOO++++@#xXXXXXXXXXoOooOOO++@+@##@#$$#$%%$%%+O+xxXXXXXXXXXXXXXXXXXXXXXX$$$%%.%%.......#####$%$%%..", -"......................xxXXXXXXoxXXXXXXXXXXXXXoooOO++@@$#$$%%%...........xXXXXXXXXXXXXoOoOO+O+@@@@@#@###@###@###@###@##$#$$xXXXXXXXXXXXXxooOOOO+O+xXXXXXXXXXXXoooOOOOOOxxXXXXXXXXXoOoOO+O++@@@@#xxXXXXXXXXXooOOOO++@+xxxXXXXXXXXXXoOoOO+O++@@xxXXXXXXXXXxoOOOOO++@@#@@#$#$$%$%%.%..@+xXXXXXXXXXXXXXXXXXXXXXXXX$%%%...........$$$$$%.%..", -".....................xxXXXXXXooooXXXXXXXXXXXXXoooO+++@###$$%%...........xXXXXXXXXXXXxooOOOO++@@#@####$#$#$#$#$#$#$#$#$#$$$xXXXXXXXXXXXXooOoOOO+++xXXXXXXXXXXxooOoOO+O+xXXXXXXXXXXooOOOO+O++@@@xxxXXXXXXXXXoooOO+O++@xxXXXXXXXXXXXooOOO++O++@xXXXXXXXXXXooOOOO++++@@#@##$$$$%$%%......xXXXXXXXXXXXXXXXXXXXXXXXXX%%.............$%$%%%%.", -"....................xxXXXXXXoooooxXXXXXXXXXXXXoxoO+O+@@##$$$%%..........xXXXXXXXXXXXooOoOO+O+@@@@#$##$%$$%%$$%%$$%%$$%%$$%xXXXXXXXXXXXoxoOOOO+++xxXXXXXXXXXXooOoOO+O++xXXXXXXXXXXoOoO++O++@+@#xxXXXXXXXXXooooO+O++@xxxXXXXXXXXXXooOoO++O+@@+xXXXXXXXXXoxoOOOO+@++@#@##$#$%%$%.........xXXXXXXXXXXXXXXXXXXXXXXXXxo..............$%%.%%.", -"...................xxXXXXXXooxoOOOXXXXXXXXXXXXXoOoO+++@@$#$$.%..........xXXXXXXXXXXXooOOOOO+@+@@#@#$$$$$%$%%%$%%%$%%%$%%%$xXXXXXXXXXXxooOoOO+O++xXXXXXXXXXXoooOOOOO+++xXXXXXXXXXoxoOOOO+@+@@#@xxXXXXXXXXXxoOOOO+++@xxXXXXXXXXXXXooOOOO++@+@@xXXXXXXXXXooOoOO+O+@@@@@##$$%$$%.%.........xXXXXXXXXXXXXXXXXXXXXXXXXOo+...................", -"...................xXXXXXXxooooOOOxXXXXXXXXXXXXoooOO+++@###$%%%........xxXXXXXXXXXXXoooOO+O++@@@@##$$%$%%%%.%.%.%.%.%.%.%xxXXXXXXXXXXooOoOOOO++@xXXXXXXXXXXooOoOO+O++xxXXXXXXXXXoooOO+O++@@@@xxxXXXXXXXXXooOOOO+++xxxXXXXXXXXXXXoooOO+O++@@@xXXXXXXXXXxooOOOO++@@#@####$$%$%%............XXXXXXXXXXXXXXXXXXXXXXXooOO+.................", -"..................xxXXXXXxooOooOOO+XXXXXXXXXXXXXooo++O+@###$$%%........xXXXXXXXXXXXXoooOOO++@+@##@#$$$$%.%%..............xXXXXXXXXXXoxoOOOO++O+@xXXXXXXXXXooOoOO+O++@xXXXXXXXXXXoooOOOO+@+@##xxXXXXXXXXXXxoOOO+++xxxXXXxXXXXXXXXoooO+O++@+@xxXXXXXXXXXooOOO++O+@@@@#$##$%$%%.%............ooXXXXXXXXXXXXXXXXXXXXooo++O+...............", -".................xxXXXXXXoooOOOOO++xXXXXXXXXXXXXooOOO+@+@#$#$$.%.......xXXXXXXXXXXXXooOOOO++@@#@@#$#$$%$%................xXXXXXXXXXXooOoOO+O++@xxXXXXXXXXXooOOOOO+++@xXXXXXXXXXXooOOOO+O+@@@@xxXXXXXXXXXooOoOO+O+xxXXXXXXXXXXXXXooOOO+++@@@xXXXXXXXXXXooOOOO++@+@@#@#$$$$$%%................OooXXXXXXXXXXXXXXXXXooOOO+@+@.............", -"................xxXXXXXXxooooOO+O+++XXXXXXXXXXXXXooOO+++@@###$%%%......xXXXXXXXXXXXoxooOOO+++@@#@##$$$$%%.xxx............xXXXXXXXXXXxooOOOO++@+xXXXXXXXXXooooOO+O++@+xXXXXXXXXXoxooOOO+++@@#@xxXXXXXXXXXxooOOO++xxxXXXxXXXXXXXXoxooOO++++@@xXXXXXXXXXXoooOO+O++@@@@##$$%$%%%%................OOOxooXXXXXXXXXXXXXxooOO+++@@#...........", -"...............xxXXXXXXxooOooO+O++@+xXXXXXXXXXXXXoooO++++@###$%%%......xXXXXXXXXXXXxoOOOO++++@#@##$#$%%$%.xXXX..........xxXXXXXXXXXxooOOO++O+@@xXXXXXXXXXoOooO+O++@+@xXXXXXXXXXxoOOOO++++@#@@xxXXXXXXXXXooOOO++xxxXXXxxXXXXXXXXxoOOOO++++@#xXXXXXXXXXXoooOOO++@+@##@#$$$$%.%%...................OOOooXXXXXXXXXXXooOOO++++@#@#.........", -"..............xxXXXXXXooooOOOOO+++@@@XXXXXXXXXXXXXooOO++@@@#$#$%.%.....xXXXXXXXXXXXoOoOOOO++@@@@##$$%$$%.%xXXXoo........xXXXXXXXXXXoOoOO+O++@+xxXXXXXXXXXxoOOOOO++@@xxXXXXXXXXXoOoOO+O++@@@@#xxXXXXXXXXXooOO+O+xxXXXXxxXXXXXXXXoOoOO+O++@@@xXXXXXXXXXXooOOOO++@@#@##$#$$%$%......xxx..............@OOxxXXXXXXXXXooOO+O++@@@#$#$.......", -".............xxXXXXXXoxooOoOO+O++++@@xXXXXXXXXXXXXxooOO++@@###$$%%%...xxXXXXXXXXXXXooOOOO+O++@@@###$$%$%%.xXXXxoo.......xXXXXXXXXXxooOOOO+O++@xXXXXXXXXXoooOO+O++++@xXXXXXXXXXXooOOOO+O++@@@xxxXXXXXXXXXoooOO+xxxXXXxxXXXXXXXXXooOOO++O++@@xXXXXXXXXXXxooOOO+++@@#@##$$$$%%......xxXXX..............@@xXXXXXXXXXoooOO+O++@@###$$%.....", -"............xxXXXXXXoxooOoOO+O++@++@#@XXXXXXXXXXXXXoOoO+++@#$##$%%%...xXXXXXXXXXXXXoOoOO+O+@@+@####$%$%%.xxXXXooOOO+....xXXXXXXXXXooOoO++O++@+xXXXXXXXXXoooOOOO+@++@xXXXXXXXXXooOoO+xO+@@+@#xxXXXXXXXXXXoooO+xxxXXXoxxXXXXXXXXooOoO++O+@@+@xXXXXXXXXXXooOOO++++@#@##$#$%%x%......xxXXXoo..............xxXXXXXXXooooO+O++@+@####$%%%...", -"...........xxXXXXXXxooOoOOOO++++@@@@@#xXXXXXXXXXXXXxooOO++@@##$$$%.%..xXXXXXXXXXXXXxoOOOO+@+@@#@##$$$$%%.xXXXXooOOOO++.xxXXXXXXXXXooOOOOO+@+@@xXXXXXXXXXooOOOO+O+@@@xXXXXXXXXXooOOOxxX@+@@#@xxXXXXXXXXXXooOOxxxXXXoxxxXXXXXXXXooOOOx++@+@@#xXXXXXXXXXXooOOOO++@@@@##$$%xxxX%....xxxXXXooO.............xxXXXXXXXxoOOOO+++@@#@##$$$%.%..", -"..........xxXXXXXXooxooOOOO+O++@+@@#@##XXXXXXXXXXXXXxoo+O++@@##$$%%%..xXXXXXXXXXXXoooOOOO++@@@@#@##$$$%%%xXXXooooOO+O++xXXXXXXXXXooooOO+O++@@xxXXXXXXXXoxooOOO+++@@xxXXXXXXXXXoooxxxXXoo@@@#xxXXXXXXXXXXxooxxxXXXXooxxXXXXXXXXoooOxxOX+@@@#xXXXXXXXXXXXooOO+O++@@@###$xxXXXoo...xxXXXXoooOO...........xxXXXXXXXooOOOO++++@@#@##$$%%%..", -"..........xXXXXXXooxoOOOO++O++@+@##@##$xXXXXXXXXXXXXooOOO+@+@#$#$%.%%.xXXXXXXXXXXXoooOOOO+@+@##@#$$#$%%%xxXXXoOooOOO++@xXXXXXXXXXoOooO+O++@+@xXXXXXXXXXxoOOOO++++@@xXXXXXXXXXXooxxXXXXXoo##@xxXXXXXXXXXXooxxxXXXXooxxxXXXXXXXXooxxxxXXoo@##xXXXXXXXXXXXxoOOO++@+@###xxxXXXXxoO..xxXXXXoooO+O++.......xxxXXXXXXoxoOOO+++++@#@##$#$%.%%.", -".........xxXXXXXXxooOoOO+O++@+@@#@##$#$xXXXXXXXXXXXXXxoO+O++@@##$$%%.xxXXXXXXXXXXXooOOOO+O+@@@@#$#$$%$%xxXXXXxoOOOOO++xxXXXXXXXXXxoOOOOO++@@#xXXXXXXXXXoOoOO+O++@@@xXXXXXXXXXXxxxXXXXXooOO@OxxXXXXXXXXXXoxxxXXXXoxoxxXXXXXXXXXoxxxXXXXooO@##XXXXXXXXXXXXOoOO++@@#@xxxXXXXXooOo.OxxXXXXXoOOO+++@@.....xxXXXXXXxooOoOO+O+@@@@###$$%$%%..", -"........xxXXXXXXooxooOOO++O++@@@@#@##$#$XXXXXXXXXXXXXoxoO+O++@@##$$%%xXXXXXXXXXXXXxooOOO+++@@#@##$$$$xxxXXXXXooOOOO+++xXXXXXXXXXXooOO+O++++@xxXXXXXXXXXooOOOO+O++@@xXXXXXXXXXXXXXXXXooxooOOOxxXXXXXXXXXXxxxXXXXooooxxXXXXXXXXXxxxXXXXoxooOO#xXXXXXXXXXXXXoOOO++xxxxXXXXXXoxooOOOxxXXXXXXoOO++++@@...xxxXXXXXoooOoOOO+++@@#@####$$%%%%.", -"......xxxXXXXXXXoxoOOOO++O+@@+@##@##$#$xxXXXXXXXXXXXXXooOO++@+@#$#$%xxXXXXXXXXXXXXxxxxxxxxxxxxxxxxxxxxXXXXXXXxoOOOO+@+xXXXXXXXXXoxoOOOO+@++@xXXXXXXXXXXoOoO++O+@@+@xXXXXXXXXXXXXXXXooooOOOO+xxXXXXXXXXXXXXXXXXooOooxxXXXXXXXXXXXXXXXoxoOOOO#xXXXXXXXXXXXXXxxxxxxXXXXXXXXoxoOOOOOxxXXXXXXXXO++++@#@xxxxXXXXXXoooOOOO++O+@@@#####$%$%%..", -"xxxxxxxXXXXXXXXXXxxxxxxO++@+@@#@#xxxxxxxXXXXXXXXXXXXXXXxxxxO+@@xxxxxxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooOoOO+O+xxXXXXXXXXXooOoOO+O+@@@xXXXXXXXXXoxoOOOO+@+@@#xXXXXXXXXXXXXXXoxoOOOOO+OxxXXXXXXXXXXXXXXXoooOOOxxXXXXXXXXXXXXXXxooOoOO+O+XXXXXXXXXXXXXXXXXXXXXXXXXoxooOoOOOxxxXXXXXXXXXXxxxxxxxxXXXXXXoxooOOOO+O++@+@@#@#$$$$%.%..", -"xXXXXXXXXXXXXXXXXXXXXXXXO++@@@###xXXXXXXXXXXXXXXXXXXXXXXXXXXO+@xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxooOOOO++xXXXXXXXXXXxooOOOO++@@xxXXXXXXXXXoooOO+O++@@@@xXXXXXXXXXXXXXooooOOOOO++xxXXXXXXXXXXXXXXxooOoOOxxXXXXXXXXXXXXXoooOoOOO++O+XXXXXXXXXXXXXXXXXXXXXXxooooOoOOOOxxXXXXXXXXXXXXXXXXXXXXXXXXooooOoOO++++@+@@@###$$%$%%%%.", -"xXXXXXXXXXXXXXXXXXXXXXXXooO+@####xXXXXXXXXXXXXXXXXXXXXXXXXXXooOxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooOOOO+O+xXXXXXXXXXXooOOO++O+@@xXXXXXXXXXXoooOOOO+@+@##xXXXXXXXXXXXxooOooOOOO++++xXXXXXXXXXXXXXxooOoOO+xxXXXXXXXXXXXoooooOOOO++O+@@XXXXXXXXXXXXXXXXXXXXxooOooOOOO++xxXXXXXXXXXXXXXXXXXXXXXXXooOooOOOO++++@@@@##@#$$$%%.%%.", -"xXXXXXXXXXXXXXXXXXXXXXXXoxoO#@##$xXXXXXXXXXXXXXXXXXXXXXXXXXXoxoxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooOOOO++@xXXXXXXXXXXooOO+O++@+@@XXXXXXXXXXooOOOO+O+@@@@xXXXXXXXXXxooOoOOOOOO+O+@@xxXXXXXXXXXXXooOoOOOO+xxXXXXXXXXXXoooOOOOOO+O++@+@@XXXXXXXXXXXXXXXXXxooOoOOOOOO+O++@XXXXXXXXXXXXXXXXXXXXXooooOOOOO++O++@@@@#@##$#$$%%%...", -".XXXooxoooxoooxoooxXXXXXoooOO+###$XXXoxoooxoooxoooxoooxooXXXoooOXXxoooxoooxoooxoooxoooxoooxoooxoooXXXXXXXXXXoooOO+O++@XXXXxoooxooooOO+O++@@@@XXoooxoooxooOOO+++@@#@#XXXXXXXXoooOoOOOO+O++++@@#@XXXXXXXXXooxooOOOO+O+xXXXXXXXXoxooOoOOOO++++@+@@@#XXXXXXXXXXXXXxooooOoOOOO+O++++@+@xoXXXXXXXXXXXXXXXXooxooOoOO+O++++@+@@####$#$$$%%%...", -"...ooxoOOooOOooOOooOOxoooxoOOO++@#$%oxooOooOOooOOooOOooOOooooxoOOxooOooOOooOOooOOooOOooOOooOOooOOooooxoooxoooooOOO++@+@ooxooOooOOooO+O++@+@##@ooOooOOooOOOO++++@#@@#$XXXXxoooooOOOO++O++@++@#@@#oXXXXXoooooOOOO++O++@+XXXXXooxoOOoOO+O+++++@@@@##@ooXXXXXXXooxooOooOOOOO+O++@++@#@@#OxooXXXXXXXXXxoooooOOOOO+O++@++@#@@####$$$$%%%%...", -".....OOoOOOOOOOOOOOOOOOoOOOoOO+O+@@$%%OoOOOOOOOOOOOOOOOOOOOOOOOoOO+oOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOoOOOOOO++@@#@#OOoOOOOOOOOOO++@@#@##$#OOOOOOOOOO+O++@@@@#@#$oxooOoOOOOOO+O++@+@@@@@@#@#$oxooooOOOOOO+O++@+@@#xoooxoOOoOOOO++++@@@@@@#@##$#OooxoooxoOOoOOOOOO+O++@+@@#@@@#@#OOoOooxoooxooOoOOOOOO+O++++@@@@@##@##$$$$%$%%.%..", -"......OOOO++O+++O+++O+++OOOOOO+++@@#%%%OOOO+O+++O+++O+++O+++O+OOOO+++OO+O+++O+++O+++O+++O+++O+++O+++O++OOOOOOOOOOO+++@@#@#OOOOO+O+++O++++@@#@##$$OO+O+++O+++O++@@@###$$%oOoOOOOOOO+++@+@@@@#@####$$OoOoOoOOOO+++O++@@@@#@OoOoOOOOO++O++@+@@#@####$#$$$OOoOoOoOOOOOO+O++++@+@@@@#@####$#$OOOOoOoOoOoOOOOOO+++O++@+@@#@####$#$$%%%%.%...", -".........++O+@@++@@++@@++@@O+++O+@@@##$...+O++@++@@++@@++@@++@@++++O+@@O++@++@@++@@++@@++@@++@@++@@++@@++++O+++O+++++@#@##$#$++O++@++@@++@#@##$#$%%$++@++@@++@@+@####$%$%OOOO++O+++++@@@@##@##$##$%$%OOOOO+O+++++@@+@##@##OOOOOO+++O+@@+@##@#####$$$$%%%+OOOOOOOO++O++@++@@@@##@##$##$%$$%@OOOOOOOOOO++O+++++@@+@##@##$##$%$$%.%%.....", -"...........@@+@@#@@@#@@@#@@@#+@@@+@@###$$...@+@@#@@@#@@@#@@@#@@@#@@@@+@@#+@@#@@@#@@@#@@@#@@@#@@@#@@@#@@@#@@@@+@@@+@@@@@@##$$%$%@@+@@#@@@#@@@##$$%$%%.%@@@@@@#@@@#@##$$$%%$%.+O++@+@@@@@@#@##$#$$$$$%%$%.+O++++@@@@@@#@##$#$$%O+++O+@@+@@#@####$$$$$$%$%%.%@++O+++O+@@+@@#@@@#@##$#$$%$$$%$%%#+@++O+++O++@+@@@@@@#@####$$$$$%%$%%......", -".............#@@##@###@###@###@@@#@@###$$%....@@@#@###@###@###@###@###@@###$@#@###@###@###@###@###@###@###@###@@@#@@@#@@###$$%$%%.@@@#@###@####$$%$%%....#@###@###@##$$%%%%...+@+@@@@#@@###$#$$$$%$%%%%...+@+@+@@#@###@##$$$$%$@+@+@@#@@##@##$#$$%$%%%%.%....@+@+@+@@#@@@#@####$#$$$$%$%%%%.%.@@@@+@+@+@+@@@@#@###@##$#$$%$%%%%.%.....", -"..............#####$$##$$##$$##$#@#####$$$%%...##@##$##$$##$$##$$##$$######$$@##$##$$##$$##$$##$$##$$##$$##$$####@###@#####$%$%%...##@##$##$$##$%$%%......##$##$$##$$#$%%%%......@@##@#####$$$$%%$%%.%%.....#@@##@#####$$#$%%$%%.@@##@###@#$$#$%%$%%.%%.......###@@##@@##@##$##$$$$%%$%%.%%.....$@###@@##@@##@#####$$#$%%$%%.%%.......", -".................$$#$$%$$$%$$$%$$$%#$$$#$$%%%.....$#$$%$$$%$$$%$$$%$$$%$$$$#$$%#$$%$$$%$$$%$$$%$$$%$$$%$$$%$$$%$$$$#$$$#$$$$$$%%.....$$#$$%$$$%$$%%%........$$$$$$%$$$%$%%........#@##$#$$$$$$%$%%.%..........#@####$$$$$$%$%%.%...@###@#$$#$$%$%%.%............$##@###@#$$#$$%$$$%$%%.%..........%#$##@###@##$#$$$$$$%$%%.%..........", -"...................%$$%%$%%%$%%%$%%%$$$%$$%%%.......$$$%$%%%$%%%$%%%$%%%$%%%$$%%%.$%$%%%$%%%$%%%$%%%$%%%$%%%$%%%$%%%$$$%$$$%$$%%%......%$$$%$%%%$%%%%.........$%$%%%$%%%$%%.........#$#$$$$%$%%%%.%.............#$#$#$$%$%%%%%%......$#$#$$%$$%%$%%.%..............$#$#$#$$%$$$%$%%%%.%............%$$$$#$#$#$#$$$$%$%%%%%%.%.........", -"....................%%%%%..%%..%%..%%.%$%%%%%........%%$%%.%%..%%..%%..%%..%%%%%%..$%%.%%..%%..%%..%%..%%..%%..%%..%%%%$%%%$%%%%%........%%$%%.%%..%%...........%%.%%..%%.............%$$%%$%%%%%................%%$$%%$%%.%%..........$$%%$%%%%%..%................%%%$$%%$$%%$%%.%%.................%$%%%$$%%$$%%$%%.%%.............", -".........................%...............%...%...........%.......................%...%...................................%...%...............%..........................................%$%%.%.....................%%$%%.%..............%$%%%%%..%.....................%%$%%%$%..%.......................%%%%$%%%$%%.%................", -"..........................................................................................................................................................................................%.%.........................%.%.%.................%.%...........................%.%.%...............................%.%.%.%................."}; +static char *noname[] = { +/* width height ncolors chars_per_pixel */ +"388 145 40 2", +/* colors */ +"`` c #787879", +"`a c #1F2374", +"`b c #8587AD", +"`c c #585859", +"`d c #F5F5F6", +"`e c #383839", +"`f c #363ACC", +"`g c #E5E5E6", +"`h c #5458B1", +"`i c #CDCDCB", +"`j c #5256DA", +"`k c #282829", +"`l c #D7D7D8", +"`m c #494949", +"`n c #6F73E2", +"`o c #13154C", +"`p c #222454", +"`q c #252992", +"`r c #B6B8DE", +"`s c #999DF3", +"`t c #050508", +"`u c #494B6F", +"`v c #B6BAFB", +"`w c #888888", +"`x c #9699CE", +"`y c #686868", +"`z c #666891", +"a` c #A6AAF4", +"aa c #585979", +"ab c #171718", +"ac c #4245A2", +"ad c #868AEB", +"ae c #A8A8A9", +"af c #4249D3", +"ag c #989899", +"ah c #797CB6", +"ai c #6266DB", +"aj c #333785", +"ak c #B9B9B9", +"al c #C5C7F3", +/* pixels */ +"`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i", +"`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i", +"`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i", +"`i`i`l`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`l`i`l`i`i`i`i`i`i`i`l`i`l`i`i`i`l`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`l`i`i`l`l`i`l`i`l`i`i`i`i`l`i`i`l`i`i`i`i`l`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`l`i`l`i`i`i`i`i`i`i`l`i`l`i`i`i`l`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`l`i`i`l`l`i`l`i`l`i`i`i`i`l`i`i`l`i`i`i`i`l`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`l`i`l`i`i`i`i`i`i`i`l`i`l`i`i`i`l`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`l`i`i`l`l`i`l`i`l`i`i`i`i`l`i`i`l`i`i`i`i`l`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`l`i", +"`i`i`i`i`i`i`l`i`l`l`i`l`l`i`l`i`i`i`l`i`i`l`i`i`l`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`l`i`l`i`i`i`i`i`l`i`l`i`i`l`i`i`l`i`i`i`i`i`i`l`i`l`i`i`i`i`i`i`i`l`i`i`i`i`i`l`i`i`l`i`i`i`i`l`i`l`i`l`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`l`i`i`i`i`i`i`l`i`l`l`i`l`l`i`l`i`i`i`l`i`i`l`i`i`l`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`l`i`l`i`i`i`i`i`l`i`l`i`i`l`i`i`l`i`i`i`i`i`i`l`i`l`i`i`i`i`i`i`i`l`i`i`i`i`i`l`i`i`l`i`i`i`i`l`i`l`i`l`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`l`i`i`i`i`i`i`l`i`l`l`i`l`l`i`l`i`i`i`l`i`i`l`i`i`l`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`l`i`l`i`i`i`i`i`l`i`l`i`i`l`i`i`l`i`i`i`i`i`i`l`i`l`i`i`i`i`i`i`i`l`i`i`i`i`i`l`i`i`l`i`i`i`i`l`i`l`i`l`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i", +"`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`l`i`i`l`i`l`i`i`i`i`i`l`i`i`i`i`i`l`i`l`i`i`i`i`i`l`i`i`i`i`i`i`l`i`l`i`i`i`l`i`l`i`l`l`l`i`l`i`i`i`l`i`l`i`l`i`l`l`i`l`i`l`i`i`i`i`l`i`i`i`l`i`i`i`i`l`i`l`i`l`i`l`i`i`i`l`i`l`l`l`l`i`l`i`l`i`l`i`i`i`i`l`i`i`l`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`l`i`i`l`i`l`i`i`i`i`i`l`i`i`i`i`i`l`i`l`i`i`i`i`i`l`i`i`i`i`i`i`l`i`l`i`i`i`l`i`l`i`l`l`l`i`l`i`i`i`l`i`l`i`l`i`l`l`i`l`i`l`i`i`i`i`l`i`i`i`l`i`i`i`i`l`i`l`i`l`i`l`i`i`i`l`i`l`l`l`l`i`l`i`l`i`l`i`i`i`i`l`i`i`l`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`l`i`i`l`i`l`i`i`i`i`i`l`i`i`i`i`i`l`i`l`i`i`i`i`i`l`i`i`i`i`i`i`l`i`l`i`i`i`l`i`l`i`l`l`l`i`l`i`i`i`l`i`l`i`l`i`l`l`i`l`i`l`i`i`i`i`l`i`i`i`l`i`i`i`i`l`i`l`i`l`i`l`i`i`i`l`i`l`l`l`l`i`l`i`l`i`l`i`i`l`i`i`i`i", +"`i`i`i`l`i`i`l`i`l`l`i`l`i`l`i`i`l`i`i`l`l`i`l`l`l`i`l`i`l`i`i`i`i`i`l`i`l`i`i`i`l`i`l`l`i`l`i`i`i`l`i`i`i`i`l`l`i`l`i`i`i`i`l`i`l`i`l`i`i`i`i`i`l`i`i`l`l`l`i`i`i`i`i`i`i`l`l`i`l`i`l`l`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`l`i`i`l`i`i`i`i`i`l`i`l`i`l`i`l`i`l`i`i`l`i`i`i`i`l`i`l`l`i`l`i`l`i`i`l`i`i`l`l`i`l`l`l`i`l`i`l`i`i`i`i`i`l`i`l`i`i`i`l`i`l`l`i`l`i`i`i`l`i`i`i`i`l`l`i`l`i`i`i`i`l`i`l`i`l`i`i`i`i`i`l`i`i`l`l`l`i`i`i`i`i`i`i`l`l`i`l`i`l`l`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`l`i`i`l`i`i`i`i`i`l`i`l`i`l`i`l`i`l`i`i`l`i`i`i`i`l`i`l`l`i`l`i`l`i`i`l`i`i`l`l`i`l`l`l`i`l`i`l`i`i`i`i`i`l`i`l`i`i`i`l`i`l`l`i`l`i`i`i`l`i`i`i`i`l`l`i`l`i`i`i`i`l`i`l`i`l`i`i`i`i`i`l`i`i`l`l`l`i`i`i`i`i`i`i`l`l`i`l`i`l`l`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`l`i`i`l`i`i`i`i`i`l`i`l`i`l`i`l`i`i`i`i`i`i`i", +"`i`i`i`i`i`i`i`l`i`l`i`l`i`i`i`l`i`l`l`i`i`i`i`i`i`l`i`i`l`i`l`l`i`l`i`i`i`i`l`l`i`l`i`i`i`i`i`l`l`i`l`i`l`l`i`l`i`l`i`l`i`i`i`i`i`i`i`l`l`l`i`i`l`i`l`i`i`i`l`l`l`l`l`l`l`i`i`l`i`l`i`l`i`l`l`i`l`i`i`lal`l`i`l`i`l`i`l`i`i`l`i`l`i`l`i`l`l`i`i`l`i`l`i`i`i`l`i`l`i`l`i`l`l`i`l`i`l`i`l`i`i`i`l`i`l`l`i`i`i`i`i`i`l`i`i`l`i`l`l`i`l`i`i`i`i`l`l`i`l`i`i`i`i`i`l`l`i`l`i`l`l`i`l`i`l`i`l`i`i`i`i`i`i`i`l`l`l`i`i`l`i`l`i`i`i`l`l`l`l`l`l`l`i`i`l`i`l`i`l`i`l`l`i`l`i`i`lal`l`i`l`i`l`i`l`i`i`l`i`l`i`l`i`l`l`i`i`l`i`l`i`i`i`l`i`l`i`l`i`l`l`i`l`i`l`i`l`i`i`i`l`i`l`l`i`i`i`i`i`i`l`i`i`l`i`l`l`i`l`i`i`i`i`l`l`i`l`i`i`i`i`i`l`l`i`l`i`l`l`i`l`i`l`i`l`i`i`i`i`i`i`i`l`l`l`i`i`l`i`l`i`i`i`l`l`l`l`l`l`l`i`i`l`i`l`i`l`i`l`l`i`l`i`i`lal`l`i`l`i`l`i`l`i`i`l`i`l`i`l`i`l`l`i`i`l`i`l`i`i`l`l`i`l`i`i`i", +"`i`i`i`l`i`i`i`i`i`i`i`l`l`i`i`l`i`i`i`l`i`l`i`l`i`l`l`i`i`l`i`l`i`l`l`l`i`l`i`l`i`l`l`l`l`l`i`i`i`i`l`i`i`i`l`i`i`l`i`i`i`l`i`l`i`l`i`i`i`l`i`l`i`l`l`i`l`i`i`i`l`i`l`i`l`l`i`l`l`i`l`i`l`i`l`i`l`i`i`l`i`l`i`l`i`l`i`l`i`i`l`i`l`i`l`l`i`i`i`l`i`l`l`l`l`i`l`i`i`i`l`i`i`i`i`i`i`i`i`l`l`i`i`l`i`i`i`l`i`l`i`l`i`l`l`i`i`l`i`l`i`l`l`l`i`l`i`l`i`l`l`l`l`l`i`i`i`i`l`i`i`i`l`i`i`l`i`i`i`l`i`l`i`l`i`i`i`l`i`l`i`l`l`i`l`i`i`i`l`i`l`i`l`l`i`l`l`i`l`i`l`i`l`i`l`i`i`l`i`l`i`l`i`l`i`l`i`i`l`i`l`i`l`l`i`i`i`l`i`l`l`l`l`i`l`i`i`i`l`i`i`i`i`i`i`i`i`l`l`i`i`l`i`i`i`l`i`l`i`l`i`l`l`i`i`l`i`l`i`l`l`l`i`l`i`l`i`l`l`l`l`l`i`i`i`i`l`i`i`i`l`i`i`l`i`i`i`l`i`l`i`l`i`i`i`l`i`l`i`l`l`i`l`i`i`i`l`i`l`i`l`l`i`l`l`i`l`i`l`i`l`i`l`i`i`l`i`l`i`l`i`l`i`l`i`i`l`i`l`i`l`l`i`i`i`l`i`l`l`l`l`i`l`i`i`i`i`i", +"`i`i`i`i`l`i`l`i`l`i`l`i`l`i`l`i`i`l`l`l`l`i`l`l`i`i`i`l`l`l`i`l`i`i`i`i`l`i`l`l`l`i`l`i`i`l`l`l`l`i`l`i`i`i`i`l`l`i`l`i`l`i`i`i`l`i`l`i`l`i`l`l`i`l`i`l`l`i`l`i`l`l`l`l`i`l`l`i`i`l`i`l`i`l`i`l`i`l`l`i`l`i`l`i`i`i`l`i`i`l`i`l`l`l`i`l`i`l`i`l`i`l`i`l`i`l`l`l`l`l`i`l`l`l`i`l`l`i`l`i`l`i`l`i`i`l`l`l`l`i`l`l`i`i`i`l`l`l`i`l`i`i`i`i`l`i`l`l`l`i`l`i`i`l`l`l`l`i`l`i`i`i`i`l`l`i`l`i`l`i`i`i`l`i`l`i`l`i`l`l`i`l`i`l`l`i`l`i`l`l`l`l`i`l`l`i`i`l`i`l`i`l`i`l`i`l`l`i`l`i`l`i`i`i`l`i`i`l`i`l`l`l`i`l`i`l`i`l`i`l`i`l`i`l`l`l`l`l`i`l`l`l`i`l`l`i`l`i`l`i`l`i`i`l`l`l`l`i`l`l`i`i`i`l`l`l`i`l`i`i`i`i`l`i`l`l`l`i`l`i`i`l`l`l`l`i`l`i`i`i`i`l`l`i`l`i`l`i`i`i`l`i`l`i`l`i`l`l`i`l`i`l`l`i`l`i`l`l`l`l`i`l`l`i`i`l`i`l`i`l`i`l`i`l`l`i`l`i`l`i`i`i`l`i`i`l`i`l`l`l`i`l`i`l`i`l`i`i`l`i`l`i`l`i`l`i`i`i", +"`i`i`i`i`i`i`i`i`l`i`i`l`i`i`l`i`l`i`l`i`l`l`i`l`l`l`l`l`i`i`l`i`l`l`l`l`l`l`l`i`l`l`l`l`l`i`i`l`i`i`l`i`l`l`i`l`i`l`l`i`l`i`l`i`l`l`i`i`l`i`i`l`l`l`i`i`l`i`l`i`i`i`l`l`l`l`l`l`l`l`i`l`i`l`l`i`l`i`l`i`l`i`l`l`l`i`l`l`i`l`i`l`i`l`l`l`i`l`i`i`i`l`l`l`l`l`i`l`i`l`l`i`i`l`i`i`l`i`i`l`i`i`l`i`l`i`l`i`l`l`i`l`l`l`l`l`i`i`l`i`l`l`l`l`l`l`l`i`l`l`l`l`l`i`i`l`i`i`l`i`l`l`i`l`i`l`l`i`l`i`l`i`l`l`i`i`l`i`i`l`l`l`i`i`l`i`l`i`i`i`l`l`l`l`l`l`l`l`i`l`i`l`l`i`l`i`l`i`l`i`l`l`l`i`l`l`i`l`i`l`i`l`l`l`i`l`i`i`i`l`l`l`l`l`i`l`i`l`l`i`i`l`i`i`l`i`i`l`i`i`l`i`l`i`l`i`l`l`i`l`l`l`l`l`i`i`l`i`l`l`l`l`l`l`l`i`l`l`l`l`l`i`i`l`i`i`l`i`l`l`i`l`i`l`l`i`l`i`l`i`l`l`i`i`l`i`i`l`l`l`i`i`l`i`l`i`i`i`l`l`l`l`l`l`l`l`i`l`i`l`l`i`l`i`l`i`l`i`l`l`l`i`l`l`i`l`i`l`i`l`l`l`i`l`i`l`l`i`l`l`l`i`l`i`i`i`i`i", +"`i`i`i`i`i`l`i`iakak`l`l`l`l`i`iae`i`l`l`l`l`l`l`l`lakak`l`l`l`l`i`l`i`l`i`i`l`l`i`l`i`l`l`i`l`lakak`i`i`i`lal`i`i`l`i`l`i`l`i`ialae`i`l`l`l`i`l`i`l`l`l`i`i`l`i`l`l`l`i`l`l`i`l`l`l`l`l`l`i`l`l`i`l`l`l`i`l`i`l`l`l`i`i`l`i`i`l`i`i`l`l`i`l`i`l`l`i`l`l`l`l`l`l`l`i`l`i`laeal`i`i`l`l`l`l`l`i`l`l`i`l`l`l`l`lae`i`l`l`i`l`l`l`l`i`l`i`l`i`i`l`l`i`l`i`l`laeal`l`l`i`i`i`i`lal`i`i`l`i`l`i`l`i`i`l`l`l`l`l`l`i`l`i`l`l`l`i`i`l`i`l`l`l`i`l`l`i`l`l`l`l`l`l`i`l`l`i`l`l`l`i`l`i`l`l`l`i`i`l`i`i`l`i`i`l`l`i`l`i`l`l`i`l`l`l`l`l`l`l`i`l`i`l`i`l`i`i`l`l`l`l`l`i`l`l`i`l`l`l`l`l`l`l`l`l`i`l`l`l`l`i`l`i`l`i`i`l`l`i`l`i`l`l`i`l`l`l`i`i`i`i`lal`i`i`l`i`l`i`l`i`i`l`l`l`l`l`l`i`l`i`l`l`l`i`i`l`i`l`l`l`i`l`l`i`l`l`l`l`l`l`i`l`l`i`l`l`l`i`l`i`l`l`l`i`i`l`i`i`l`i`i`l`l`i`i`i`i`l`l`i`l`l`i`l`i`i`l`i`i", +"`i`i`i`i`i`i`i`l`i`r`l`i`i`l`l`lak`l`l`l`l`l`l`i`i`l`iak`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`i`lak`l`l`i`l`i`l`l`l`l`l`i`l`l`iakag`l`l`i`lakaeagak`i`l`l`i`l`l`i`l`i`l`laeaeagaeaeak`l`l`i`l`l`i`l`i`iagak`ialagak`l`l`l`i`l`l`l`i`l`l`l`l`i`i`l`l`i`l`l`l`l`l`l`l`l`i`l`iak`l`i`l`l`i`i`l`l`l`l`l`l`l`l`l`l`iak`l`l`l`i`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`lak`i`l`l`l`l`i`l`i`l`l`l`l`l`i`l`l`i`i`l`l`i`i`l`l`i`l`l`i`l`l`i`l`l`i`l`i`l`l`i`l`i`l`l`l`l`l`i`l`l`i`l`i`l`l`i`l`i`l`l`l`l`l`i`l`l`l`i`l`l`l`l`i`i`l`l`i`l`l`l`l`l`l`l`l`i`l`l`l`i`i`l`l`i`i`l`l`l`l`l`l`l`l`l`l`i`i`l`l`l`i`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`i`l`l`l`l`i`l`i`l`l`l`l`l`i`l`l`i`i`l`l`i`i`l`l`i`l`l`i`l`l`i`l`l`i`l`i`l`l`i`l`i`l`l`l`l`l`i`l`l`i`l`i`l`l`i`l`i`l`l`l`l`l`i`l`l`l`i`l`l`l`l`l`i`l`l`i`i`l`l`l`i`i`i`i`i", +"`i`i`i`i`l`lak`i`l`i`i`l`lalak`lak`l`i`i`l`l`l`l`l`l`lak`iak`i`i`i`i`l`iakak`l`i`l`i`lakak`l`i`l`lak`lakakak`l`l`i`l`l`l`l`i`i`iaeak`i`l`l`i`i`lak`l`l`i`l`l`l`iakak`l`l`lak`lak`l`lak`l`l`lakak`i`l`l`lakae`lakak`l`l`l`l`l`l`l`l`iakalak`lak`i`i`l`l`iakak`l`l`l`l`lak`i`gak`l`l`lakak`i`l`l`l`l`l`i`l`l`l`l`lakalak`l`l`l`i`lakak`i`i`i`i`l`iakal`i`l`l`lak`lakak`i`i`l`i`l`l`i`l`l`l`l`i`i`i`l`i`l`l`l`i`i`l`i`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`i`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`i`i`l`l`l`l`i`l`i`l`l`l`l`l`l`l`l`l`i`g`l`i`l`l`l`l`l`l`l`l`i`i`l`l`l`l`l`i`l`l`l`l`l`i`i`i`l`i`i`i`i`l`i`l`i`l`l`l`i`i`l`i`i`i`l`i`l`l`i`l`l`l`l`i`i`i`l`i`l`l`l`i`i`l`i`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`i`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`i`i`i`l`i`l`i`l`i`i`i`l`i`l`i`i", +"`i`i`i`i`iak`iakakak`i`iakakakaeae`g`l`l`l`l`l`l`l`l`laeakakak`i`l`lakaeakakae`l`l`iaeakakae`i`i`lak`laeakak`l`i`l`i`l`l`l`l`l`iae`l`l`i`l`l`l`lak`l`i`l`l`i`lak`iak`i`l`g`l`lak`l`l`l`l`iaeakakaeak`l`l`lakakak`l`l`i`l`l`l`l`l`l`laeakaeaeakae`l`iakaeakakae`l`l`iaeakakaeak`l`iaeakakaeak`l`l`l`l`l`l`l`l`l`lagakakae`l`l`laeakakaeak`l`iakaeakakae`l`i`lak`lagak`i`i`l`i`i`l`i`l`l`l`l`l`l`i`l`i`l`l`l`l`l`l`i`l`l`i`l`i`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`i`i`i`l`l`l`l`i`l`i`l`g`l`l`l`l`l`l`l`l`i`i`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`i`l`i`i`l`l`i`l`l`l`l`l`l`i`l`i`i`l`i`l`l`l`l`l`l`i`l`i`l`l`l`l`l`l`i`l`l`i`l`i`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`i`l`i`l`i`l`i`i`i`i", +"`ial`i`i`i`i`i`l`iak`l`lak`l`g`lak`l`lakaeagaeagak`l`lak`l`l`lak`l`lak`l`l`i`iak`iak`l`l`i`lak`l`lakag`i`l`l`i`l`l`l`i`l`l`l`l`l`i`l`l`l`l`l`l`lak`l`l`l`i`i`iaeagakak`l`l`l`lak`l`g`l`lakakakakakag`l`l`l`iag`i`l`l`lakagagaeagak`lakak`lak`lak`l`lak`l`l`i`lak`lak`g`l`l`lak`lakakakakakag`l`laeaeaeagaeak`l`lak`l`gak`l`l`i`i`l`l`lak`l`lak`l`i`l`iak`l`laeag`i`i`l`l`l`l`l`i`l`i`i`l`l`l`l`l`l`l`i`l`l`l`l`l`i`l`l`l`i`i`l`g`l`g`l`l`g`l`l`l`l`g`l`l`l`l`l`l`l`l`l`i`l`i`l`l`l`l`l`l`l`l`l`l`l`i`l`l`i`l`l`l`l`l`i`l`i`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`i`l`l`l`l`l`l`l`i`l`l`i`i`l`i`i`l`l`l`l`l`i`l`i`i`l`l`l`l`l`l`l`i`l`l`l`l`l`i`l`l`l`i`i`l`g`l`g`l`l`g`l`l`l`l`g`l`l`l`l`l`l`l`l`l`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`i`l`i`l`i`i`i`i`i`l`i", +"`i`i`i`i`i`i`i`l`iak`l`lak`l`l`lak`l`l`l`l`l`l`l`l`l`lak`l`l`lak`l`lak`l`i`l`lak`iak`l`l`l`iak`l`lakakae`i`l`l`i`l`i`l`l`l`l`l`l`l`i`i`l`l`l`i`iak`l`lak`l`lae`i`l`iak`g`l`l`gak`g`l`l`laeakakakakak`l`l`lag`lae`i`l`l`l`l`l`l`l`i`iakak`lak`lak`l`lak`l`l`l`lak`lak`i`l`l`lak`laeakakakakak`l`g`l`l`l`l`l`l`g`lak`l`lak`l`lak`l`l`l`lak`i`lak`i`l`l`lak`l`laeakak`l`l`i`i`i`l`l`l`l`i`l`l`l`l`l`i`l`i`l`l`l`i`l`i`l`l`l`l`l`i`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`i`l`l`i`l`i`l`l`l`l`l`l`i`i`l`l`i`l`l`l`i`l`l`l`l`l`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`i`i`i`l`l`i`l`l`l`l`l`l`l`i`i`i`l`l`l`l`i`l`l`l`l`l`i`l`i`l`l`l`i`l`i`l`l`l`l`l`i`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`i`i`l`i`l`i`l`i`l`i`i`i`l`i`l`i`i`i", +"`i`i`i`i`iak`i`lakak`i`iak`i`l`iag`g`l`l`g`l`l`l`l`g`lak`l`g`lak`l`laeak`i`iae`l`lalae`l`lakak`l`lak`l`iae`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`lak`l`iak`l`lak`l`lakak`l`l`l`lak`l`g`l`l`lag`l`g`l`i`l`lae`i`l`iag`g`l`l`g`g`l`l`l`lakak`iak`lak`l`lakak`l`iag`l`lakak`l`iagak`l`iag`l`l`g`i`l`l`l`l`l`g`l`l`l`lak`l`lak`l`g`lae`i`lakae`l`laeak`l`iae`l`l`lak`lakak`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`i`l`l`l`i`l`l`i`l`l`l`l`i`l`l`l`l`l`l`l`l`g`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`g`l`l`l`l`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`i`l`l`l`i`l`l`i`l`l`l`l`i`l`l`l`l`l`l`l`l`g`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`g`l`l`l`l`l`l`i`l`i`l`l`i`l`l`l`i`i`i`i`i`i`i", +"`iak`i`i`i`iakak`iakak`l`iaeaeaeakae`l`l`l`l`g`l`l`lakagal`lagagal`l`lakagag`i`l`l`lakagag`i`l`laeak`l`lagag`l`i`l`l`l`l`l`l`l`l`l`i`l`i`l`laeagagagagag`l`lakagag`iagak`g`lagagagak`g`l`l`iaeagae`i`lakagak`lakagae`g`l`l`l`l`l`lakagae`lag`iakae`l`laeagae`i`l`l`lakagae`lag`i`l`iaeagae`l`l`l`l`g`l`l`l`l`lagag`l`iagag`g`l`iaeagak`l`l`l`laeagae`i`i`lag`i`l`iagae`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`i`l`l`i`l`g`l`l`l`l`l`i`l`l`l`l`l`g`g`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`i`l`i`l`l`i`l`l`l`i`l`l`l`g`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`g`l`l`g`l`l`l`l`l`l`g`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`i`l`l`i`l`g`l`l`l`l`l`i`l`l`l`l`l`g`g`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`i`l`i`l`l`i`i`l`i`i`i`i`i`i`i", +"`i`i`i`i`i`l`i`i`i`l`i`l`l`l`l`g`l`l`l`l`l`g`l`g`l`l`g`l`l`l`l`l`l`l`l`i`l`l`i`i`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`i`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`i`g`l`l`l`l`l`l`g`l`l`g`l`g`l`g`l`l`g`l`g`l`l`l`l`i`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`g`l`l`g`l`l`g`g`l`g`l`g`l`l`l`l`l`l`l`l`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`i`l`l`l`l`g`l`l`i`l`i`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`g`g`l`l`l`l`l`g`l`g`l`g`g`g`l`l`l`l`i`i`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`g`g`l`g`l`l`g`l`g`l`l`g`g`l`l`g`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`i`l`l`i`l`l`l`l`g`l`l`i`l`i`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`g`g`l`l`l`l`l`l`g`l`g`g`l`l`l`l`g`l`i`i`l`l`l`l`l`l`l`l`l`i`l`i`i`i`i`i`l`i`i`i`i", +"`i`i`i`i`i`i`l`l`i`l`i`i`l`l`i`l`l`l`g`l`l`l`l`l`g`l`l`g`l`l`g`l`l`g`l`l`i`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`l`l`l`l`l`l`l`g`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`i`l`l`l`l`g`l`l`l`l`l`g`l`l`g`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`g`l`l`l`l`l`l`l`l`l`l`g`g`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`i`l`l`l`g`l`g`l`l`l`l`l`l`l`i`i`g`l`g`l`l`l`l`l`g`l`l`l`g`l`l`g`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`g`l`g`l`l`l`l`l`g`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`i`l`i`i`i`i`i`i`i", +"`i`i`i`i`l`i`i`l`i`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`i`l`l`g`g`l`g`l`l`l`g`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`i`g`l`g`l`l`l`i`i`l`l`l`l`g`g`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`l`g`g`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`l`l`g`l`g`l`l`l`l`l`l`l`l`i`l`l`l`g`l`g`g`g`l`l`l`l`l`l`g`l`l`l`l`l`l`l`i`l`l`g`g`l`g`l`g`l`g`l`l`i`l`i`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`i`i`l`l`i`g`l`g`l`l`l`l`i`l`l`l`l`l`g`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`l`g`g`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`g`l`g`l`l`l`l`l`l`i`l`l`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`g`g`g`l`l`g`l`g`l`l`l`l`l`l`l`l`g`l`l`g`l`l`l`l`l`l`l`l`i`i`l`l`i`g`l`g`l`l`l`l`i`l`l`l`l`l`g`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`l`l`g`l`l`g`l`l`g`l`l`l`l`l`l`l`l`i`l`l`l`l`i`l`l`l`l`i`i`l`i`i`i`i`i", +"`i`i`i`i`i`i`i`l`l`i`l`i`i`i`l`l`l`l`l`l`l`l`l`i`i`l`i`l`i`l`l`g`g`g`l`g`l`l`i`l`l`l`i`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`i`l`g`l`g`l`l`l`l`l`l`l`g`l`l`g`l`g`l`g`l`l`g`g`l`l`l`g`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`i`l`l`i`i`l`l`g`l`g`l`g`l`l`l`l`l`l`i`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`g`l`l`l`l`l`i`l`l`l`l`l`l`l`g`g`l`l`l`l`l`l`l`g`l`l`g`l`l`l`g`l`l`g`g`l`l`l`g`l`g`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`i`l`l`l`g`l`l`g`l`l`l`l`l`l`l`g`l`g`l`l`l`l`i`i`l`l`i`i`l`l`g`l`g`l`l`l`l`i`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`g`l`l`l`l`l`i`l`l`l`l`l`l`l`g`g`l`l`l`l`l`l`l`g`l`l`g`l`l`l`g`l`l`g`g`l`l`g`l`g`l`g`l`l`g`l`l`l`l`l`l`l`l`l`i`l`l`l`l`i`i`l`l`i`l`i`l`i`i`i", +"`i`i`i`i`i`i`i`i`i`i`i`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`i`g`g`l`i`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`i`g`l`l`l`g`g`g`l`l`l`l`l`l`l`l`i`g`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`l`l`g`g`l`g`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`i`l`l`g`g`l`l`l`l`g`g`l`l`l`l`i`l`l`l`l`l`l`g`l`l`l`l`l`g`l`l`g`l`l`l`g`g`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`l`l`g`l`g`l`l`l`l`g`l`l`g`l`g`l`l`l`l`l`l`l`l`l`g`g`g`l`l`g`l`g`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`g`l`l`l`l`g`g`g`g`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`g`l`l`g`l`l`l`g`g`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`l`l`g`g`l`l`l`l`l`g`l`g`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`i`l`i`l`i`i`i`i`i`i", +"`i`i`i`i`i`i`i`l`l`l`l`i`l`i`i`l`l`l`l`l`l`i`l`l`i`l`l`l`i`l`l`l`l`l`l`l`g`l`g`l`l`l`g`l`l`l`l`l`g`l`g`l`l`g`l`l`l`l`g`g`l`i`l`g`g`l`l`l`i`i`l`l`l`l`l`l`l`l`l`g`l`l`l`g`l`l`g`l`g`l`l`l`l`g`l`l`l`g`g`g`g`l`g`g`g`g`l`g`l`g`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`g`l`i`l`l`l`l`l`g`g`g`l`l`l`l`l`l`l`l`g`l`i`l`l`l`l`i`l`i`l`l`l`l`l`l`l`g`l`g`l`g`l`g`l`l`l`l`l`g`g`g`l`l`l`l`l`l`g`g`g`l`l`l`g`g`l`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`l`g`l`l`l`g`l`g`l`g`l`l`g`l`l`l`g`g`g`g`l`l`g`g`l`l`l`l`l`g`l`l`l`l`l`g`l`l`l`l`l`l`l`i`l`l`g`l`l`i`l`l`l`l`l`g`g`g`l`l`l`l`l`l`l`g`l`l`l`l`l`l`i`l`l`i`l`l`l`l`i`l`l`g`l`g`l`l`g`l`g`l`g`l`l`g`g`g`l`l`l`l`l`l`g`g`g`l`l`l`g`g`l`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`l`g`l`l`l`g`l`g`l`g`l`l`g`l`l`l`g`g`g`g`l`l`g`g`l`l`l`l`l`g`l`l`l`i`l`l`i`l`l`i`l`i`i`i`i`l`i`i`i`i`i", +"`i`i`i`i`i`l`i`i`l`i`l`l`i`l`l`i`i`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`g`g`g`g`g`l`l`g`g`g`l`g`g`g`l`l`g`l`g`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`g`l`g`l`l`g`l`l`g`l`g`g`l`g`l`g`g`l`g`l`g`g`g`l`l`g`l`l`l`l`l`g`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`g`l`i`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`g`g`g`l`g`l`g`g`g`l`g`l`g`l`l`g`g`l`l`l`l`l`l`i`l`g`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`g`l`l`l`g`g`l`l`g`l`g`l`l`g`l`g`g`l`l`g`g`g`g`g`l`g`l`l`l`l`g`l`g`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`g`l`g`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`g`g`g`g`g`l`l`g`l`g`l`g`l`g`l`l`g`g`l`l`l`l`l`l`i`l`g`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`g`l`l`l`g`g`l`l`g`l`g`l`l`g`l`g`g`l`l`g`g`g`g`g`l`g`l`g`l`l`l`l`l`l`l`l`l`l`l`i`l`l`i`l`l`i`l`i`i`i`i`i`i", +"`i`i`i`i`i`l`i`i`l`i`l`l`l`l`i`l`l`l`l`l`l`l`l`i`i`l`i`l`i`l`l`g`l`i`l`l`l`l`g`l`i`l`d`l`g`l`g`g`g`g`g`g`l`l`g`l`l`g`l`l`l`i`l`l`g`lak`g`l`l`w```l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`g`l`lak`w`l`g`l`g`g`l`l`l`g`gaeae`l`l`g`l`g`l`l`l`l`g`l`g`g`l`g`l`l`l`g`lak`l`g`l`gak`l`l`l`l`l`l`l`g`l`g`g`g`i`g`l`g`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`i`l`l`l`l`g`l`l`l`g`g`l`g`l`g`g`g`g`g`l`l`l`l`l`l`l`l`l`l`i`l`g`l`l`l`l`l`i`l`i`l`l`l`l`l`l`l`g`l`l`l`l`l`g`g`l`g`l`g`l`g`l`g`g`g`l`l`g`g`g`g`l`l`g`g`l`l`l`g`l`g`l`g`l`l`l`l`l`l`l`l`g`l`l`l`g`l`i`l`l`l`l`l`l`g`l`g`g`l`l`l`g`l`g`l`l`l`l`l`i`l`l`i`l`l`l`g`l`i`l`l`l`l`g`l`i`l`g`g`g`l`g`g`g`g`g`g`l`l`l`l`l`l`l`l`l`l`i`l`g`l`l`l`l`l`i`l`i`l`l`l`l`l`l`l`g`l`l`l`l`l`g`g`l`g`l`g`l`l`l`g`g`g`l`l`g`g`g`g`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`i`l`i`i`i`i`i`l`l`i`i`i`i", +"`i`i`i`i`i`i`i`i`i`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`g`l`g`l`g`l`l`l`l`g`g`g`g`g`g`d`l`l`l`g`g`g`l`l`g`l`l`l`l`lag`i`g`l`l`lae`l`l`l`g`l`g`l`g`l`g`l`g`g`l`g`l`g`g`gak`g`l`g`l`g`g`g`g`l`g`gak`l`g`g`l`l`l`l`g`g`l`l`l`l`l`l`g`l`l`l`l`w`l`l`l`lag`l`l`l`l`l`i`l`g`g`g`g`g`l`l`l`l`g`l`g`l`l`l`l`l`i`l`l`l`l`l`l`l`l`g`l`g`l`l`l`l`l`i`g`g`g`g`g`g`g`l`l`g`g`g`g`l`g`g`l`l`g`l`g`g`l`g`l`l`l`l`l`l`l`g`l`l`g`l`l`l`l`g`g`g`l`l`g`l`g`l`g`l`l`g`l`g`g`g`l`g`g`g`l`g`l`l`l`l`l`g`l`l`l`l`g`l`l`g`l`l`g`l`l`l`g`l`l`l`l`l`l`l`l`i`l`g`g`g`g`g`l`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`i`l`l`l`g`l`g`l`l`l`l`l`i`g`g`g`g`g`g`g`l`l`g`g`g`g`l`g`g`l`l`g`l`g`g`l`g`l`l`l`l`l`l`l`g`l`l`g`l`l`l`l`g`g`g`l`l`g`l`g`l`g`l`l`g`l`g`g`l`g`l`g`g`l`g`g`l`l`l`l`g`l`l`l`l`l`i`l`l`i`l`l`i`l`i`i`i`i`i`i`i", +"`i`i`i`i`i`i`i`i`i`i`l`l`l`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`g`g`l`l`l`l`l`l`l`l`i`i`l`g`l`l`l`l`l`g`l`g`g`g`l`g`g`w`g`l`g`l`lae`l`l`l`l`l`lakae`i`l`lakakak`iakak`l`lak`lakak`i`l`g`g`lakak`lak`g`l`l`iakak`l`g`l`g`l`l`g`l`l`g`g`g`gakak`g`l`g`lakak`l`l`g`l`l`l`l`g`g`g`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`d`l`g`l`l`l`l`l`l`l`i`l`g`l`l`l`l`l`l`g`l`g`g`l`l`l`l`g`l`g`l`g`l`l`l`l`l`l`l`l`l`g`g`l`l`g`l`l`g`g`l`g`g`l`g`g`l`g`l`l`g`g`l`g`l`g`g`g`l`g`g`l`l`g`g`g`l`l`l`g`l`g`g`l`g`l`g`l`l`g`l`l`l`l`l`l`l`l`l`l`g`g`g`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`d`g`l`l`g`l`l`l`l`l`i`l`g`l`l`l`l`l`l`g`l`g`g`l`l`l`l`g`l`g`l`g`l`l`l`l`l`l`l`l`l`g`g`l`l`g`l`l`g`g`l`g`g`g`g`g`g`l`l`g`g`l`g`g`g`g`g`l`l`l`l`l`l`l`l`l`l`i`l`l`i`l`l`l`l`i`l`i`l`l`i`i`i`i", +"`i`i`i`i`i`i`l`i`i`l`i`l`l`l`l`i`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`g`l`i`l`g`g`g`g`l`g`l`l`l`l`l`l`g`g`l`g`l`l`g`l`l`l`g`l`g`l`g`l`gakak`g`l`g`l`gae`l`l`g`l`lakaeaeag`l`lae`wae``akaeak`gaeagaeae`w`i`l`gagakae`wae`g`g`iaeaeaeak`l`g`g`g`l`l`g`l`l`i`l`lag`g`l`g`l`l`gae`g`l`l`g`l`l`l`l`l`g`g`l`l`l`g`l`l`l`g`l`l`l`l`l`l`l`l`l`g`l`i`l`g`g`g`d`l`l`l`l`l`l`l`g`g`g`l`l`g`l`g`l`l`l`g`l`g`l`l`g`g`l`g`g`l`g`l`g`i`l`l`g`l`g`g`l`l`l`l`g`l`l`l`l`l`g`l`g`l`g`g`l`g`l`g`g`g`g`g`g`g`g`g`g`l`l`l`g`l`g`l`l`g`l`l`l`l`l`l`l`l`g`l`g`l`g`g`l`g`g`l`g`l`l`l`l`l`g`g`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`g`l`i`l`g`g`g`g`l`g`l`l`l`l`l`g`g`g`l`l`g`l`g`l`l`l`g`l`g`l`l`g`g`l`g`g`l`g`l`g`i`l`l`g`l`g`g`l`l`l`l`g`l`l`l`l`g`g`l`l`l`l`g`l`g`g`l`g`g`g`g`l`g`g`g`g`g`l`l`l`l`g`l`l`l`l`l`l`i`i`l`i`l`i`l`i`i`i`i`i`i", +"`i`i`i`i`i`i`i`l`i`i`i`l`l`l`l`l`i`i`l`l`l`l`l`l`g`l`l`l`l`l`l`g`d`g`g`l`l`g`g`l`l`l`l`l`g`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`g`g`gak`g`g`l`l`g`lak`i`i`g`l`gak`w``ag`l`l`l```lak`l`gae`gae`i`g`l`gae`lak`i`g`g`gag`g`g`lag``aeak`l`g`l`l`g`l`l`g`l`l`g`lae`l`l`l`g`l`lak`l`l`l`l`g`g`l`l`l`g`g`g`g`i`l`g`l`l`l`g`g`l`g`l`l`g`l`l`g`d`g`g`l`l`l`g`g`l`l`l`g`g`l`l`l`g`l`g`l`l`l`l`l`i`g`l`l`g`g`g`g`l`g`g`l`l`l`g`l`l`i`l`l`l`l`g`g`l`l`l`l`g`l`g`g`g`l`g`l`g`g`l`g`l`g`g`g`g`g`g`g`g`g`g`g`g`g`g`l`g`l`l`g`l`g`l`l`l`g`g`l`l`l`l`l`g`l`g`l`l`l`g`l`g`l`l`g`g`g`g`g`i`l`g`g`l`l`g`l`g`l`l`l`l`l`l`g`d`g`l`l`l`g`g`l`l`l`l`l`g`l`l`l`g`l`l`g`l`l`l`l`i`g`l`l`g`g`g`g`l`g`g`l`l`l`g`l`l`i`l`l`l`l`g`g`l`l`l`l`g`l`l`g`l`g`g`g`l`g`g`l`g`g`g`g`g`g`g`g`g`g`l`g`l`g`l`l`l`l`l`l`l`i`l`i`l`i`i`i`i`i`l`i`i`i`i`i", +"`i`i`i`l`i`i`l`i`l`l`i`l`i`l`i`l`g`l`l`l`l`l`g`l`l`g`g`g`g`g`l`g`l`g`g`l`g`l`l`d`g`g`d`g`g`d`l`l`g`g`g`g`g`g`l`g`l`l`g`l`l`g`g`lae`l`g`g`g`l`lae`l`l`l`l`iag`l`lag`l`l`l```gae`l`gae`lak`l`g`g`lae`gae`g`g`g`gae`g`gag`i`g`iae`g`l`g`l`g`l`g`l`l`l`l`gae`l`l`l`g`l`lae`g`l`g`g`g`l`g`l`g`g`l`l`g`g`g`l`g`g`g`l`g`g`g`g`g`g`g`l`g`l`g`g`l`g`l`l`g`g`d`g`g`g`g`l`l`g`g`g`g`g`g`l`g`l`l`l`l`l`g`g`l`g`g`l`g`g`l`l`l`g`l`l`l`g`l`l`l`g`l`l`l`g`g`l`l`l`g`l`g`l`g`g`g`g`l`g`g`g`g`g`l`l`g`g`g`g`l`g`g`g`l`g`g`l`l`g`l`l`l`l`l`l`g`l`g`l`g`l`g`l`g`l`g`l`g`l`l`g`l`l`g`d`g`l`l`l`g`l`g`g`g`g`g`g`g`l`g`l`d`g`g`l`l`l`d`g`g`g`g`d`g`l`l`g`g`g`g`l`g`l`g`l`l`l`l`l`g`g`l`g`g`l`g`g`l`l`l`g`l`l`l`g`l`l`l`g`l`l`l`g`g`g`l`g`l`g`l`g`l`g`g`g`l`g`g`g`g`g`l`l`g`g`l`g`l`g`l`l`l`l`l`l`l`l`i`l`l`l`i`l`i`i`i`l`i`i`i", +"`i`i`i`i`l`i`l`i`i`l`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`g`g`g`g`g`g`g`l`l`l`g`g`d`g`g`l`g`d`g`g`d`g`g`g`g`g`g`g`g`l`l`g`l`l`g`i`lae`l`l`g`l`lae`l`g`l`lak`i`g`g```g`l`g```gae`l`gae`gae`w`i`gakak`g`i`w`g`lag`w`g`gae`g`gaeak`g`g`g`g`l`g`g`g`g`l`l`gag`g`g`l`l`g`iae`g`g`l`g`g`l`g`i`l`l`g`l`g`g`g`l`l`l`l`l`g`l`l`l`g`g`g`g`g`g`g`g`l`l`l`g`d`g`g`g`g`g`d`d`g`g`g`g`g`g`d`l`g`g`l`g`l`l`l`l`i`g`g`l`g`g`l`l`l`l`g`l`l`g`g`g`l`g`g`l`l`g`g`g`l`l`g`g`g`g`l`g`g`g`g`l`g`g`l`g`g`g`g`g`g`g`g`l`g`g`g`l`g`g`g`l`g`l`g`l`g`l`l`l`g`l`l`g`l`g`g`g`g`l`g`l`l`l`g`l`g`g`g`g`g`l`l`g`l`l`l`g`g`g`g`g`g`g`g`l`g`l`l`g`g`d`g`g`l`g`d`g`d`g`g`g`g`g`d`g`g`g`l`g`l`l`l`l`i`g`g`l`g`g`l`l`l`l`g`l`l`g`g`g`l`g`g`l`l`l`g`l`l`g`l`g`g`g`g`l`g`g`g`l`g`g`l`g`g`l`g`g`l`g`l`l`g`l`l`l`l`l`l`l`l`i`i`l`i`i`l`i`i`i`i`i`i", +"`i`i`i`i`i`i`i`i`i`l`i`i`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`i`l`g`g`l`g`d`g`g`g`g`g`g`g`l`l`g`g`g`g`g`l`g`l`g`g`g`g`d`g`l`g`l`l`i`g`l`gag`l`g`iak````````ak`g`l`w```wak```l`````gagak`l``ak```i````ak`g`g`g`l````akagag`lae`````i``ak`l`g`g`l`g`l`l`g`g`g`l`iag`l`g`l`iag`i`l`l`g`l`l`l`g`l`l`l`g`l`lal`l`l`l`lal`l`l`i`l`l`l`l`g`g`g`g`g`g`g`g`g`g`g`g`l`l`l`g`g`l`d`g`l`g`l`g`g`g`d`g`l`l`l`l`l`g`l`g`g`l`l`l`g`l`l`l`g`g`g`l`g`g`g`l`g`l`g`l`l`l`g`l`l`g`l`g`l`l`g`g`g`g`g`g`l`g`l`l`g`l`g`g`l`g`g`l`g`g`l`g`g`l`g`g`g`g`l`g`g`l`l`l`l`l`l`l`g`l`g`l`g`l`l`l`g`l`l`l`l`l`g`l`l`l`g`l`g`l`l`l`g`g`l`g`d`g`g`g`g`g`d`g`l`l`g`g`l`g`g`g`g`l`g`g`g`g`g`g`l`l`l`l`l`g`l`g`g`l`l`l`g`l`l`l`g`g`g`l`g`g`g`l`g`g`g`l`g`l`g`l`l`g`g`l`l`g`g`g`g`g`g`g`l`l`l`g`l`l`g`l`l`l`l`l`l`l`l`l`l`i`l`l`l`i`l`l`i`i`l`i`i`i`i", +"`i`i`i`i`i`i`l`i`i`l`i`l`l`i`l`i`l`l`l`i`l`l`g`l`g`g`g`l`l`g`g`g`g`v`v`val`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`val`gakak`l`l`g`g`lal`v`v`v`v`v`v`v`v`v`va``v`v`v`v`v`v`v`val`l`l`g`g`g`g`g`g`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`v`val`v`v`v`v`vadadadadadadadadadada``g`g`g`g`g`g`l`l`l`l`g`g`g`g`g`g`g`l`l`l`l`g`g`g`g`g`g`d`g`g`l`l`g`l`d`g`g`g`g`l`g`g`g`l`l`l`l`l`g`g`g`g`g`g`g`g`l`l`l`g`g`l`l`g`l`g`l`g`l`g`g`g`g`g`g`l`g`g`g`g`g`l`g`g`l`l`g`l`l`g`l`l`l`l`l`l`l`l`g`g`l`l`l`l`l`l`l`l`l`l`g`l`l`l`g`l`g`g`l`l`g`g`g`g`g`g`g`l`g`g`g`g`l`g`l`l`l`l`l`g`g`g`g`g`g`l`l`l`l`g`g`l`g`g`g`d`g`g`l`l`g`l`d`g`g`g`g`l`g`g`g`l`l`l`l`l`g`g`g`g`l`g`g`l`l`l`l`g`g`l`l`g`l`l`l`g`l`g`g`g`g`g`g`l`l`g`g`l`g`l`g`l`l`l`l`l`l`l`l`i`i`l`i`i`i`i`i`i`i`i`i`i", +"`i`i`i`i`i`i`i`i`i`i`l`i`l`i`i`l`l`l`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`n`g`g`g`l`g`l`galai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`n`l`l`l`l`l`g`d`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`faf`f`f`f`f`f`f`fag`l`g`l`l`g`g`g`l`l`g`g`g`g`g`g`g`g`l`g`g`l`l`l`l`g`l`l`g`g`g`l`g`g`g`l`g`g`l`g`l`g`g`g`l`g`g`l`g`l`g`l`g`g`g`l`g`l`l`l`g`g`g`l`g`l`g`l`l`g`l`g`d`l`l`g`l`g`g`l`l`g`g`l`g`l`l`g`g`l`g`g`g`g`g`l`l`l`l`l`l`g`l`l`l`g`l`g`g`l`g`l`l`l`l`l`g`l`g`l`l`g`g`g`l`g`l`l`g`l`g`l`g`g`g`l`l`g`g`g`g`g`g`g`g`l`g`g`g`l`g`l`l`l`g`l`g`g`g`l`g`g`g`l`g`g`l`g`l`g`g`g`l`g`g`l`g`l`g`g`g`g`g`l`g`l`l`l`g`g`g`l`g`g`l`g`l`g`l`g`d`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`i`l`i`l`i`i`i`i`i", +"`i`i`i`i`i`i`l`l`l`i`l`i`l`l`i`l`i`l`l`l`i`l`g`i`l`l`l`l`l`l`g`l`gal`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`a`m`g`l`g`g`g`l`lai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`m`g`g`g`g`g`gal`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`a`t`l`g`g`g`l`l`g`g`g`g`g`l`g`g`l`g`g`g`g`l`g`g`l`l`l`l`g`l`g`g`l`g`g`g`l`g`g`l`l`g`l`g`g`g`l`g`l`l`g`g`g`g`l`g`g`g`l`l`l`l`l`g`l`g`g`g`g`g`g`g`l`g`g`g`g`l`g`g`l`l`g`g`l`g`g`g`l`l`g`g`l`l`l`g`l`l`g`g`g`l`g`g`l`l`l`g`g`g`g`l`g`g`g`l`l`l`g`g`g`l`g`g`l`l`g`l`l`l`l`g`l`l`l`g`g`g`g`g`g`l`g`g`g`g`g`g`l`g`l`g`l`l`l`l`g`l`g`g`l`g`g`g`l`g`g`l`l`g`l`g`g`g`l`g`l`l`g`g`l`g`l`g`g`g`l`l`l`l`l`g`l`g`g`g`g`g`g`l`g`g`g`g`g`g`g`l`l`l`g`l`l`l`l`l`l`l`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i", +"`i`i`i`i`l`i`i`i`i`l`i`l`i`l`l`i`l`l`l`g`g`l`l`l`l`l`l`l`l`l`l`l`l`l`n`q`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`q`q`o`c`l`g`g`l`l`g`g`xac`q`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`faj`o`m`l`g`l`l`g`g`d`n`a`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`m`l`l`l`l`l`l`g`g`g`g`l`g`g`g`g`g`l`g`l`l`g`l`g`l`l`l`g`g`g`g`d`g`g`g`g`l`g`g`g`g`g`l`g`g`g`g`l`l`g`g`l`g`g`g`g`g`g`l`g`l`g`g`g`g`l`l`g`l`l`g`g`g`d`g`g`g`g`g`l`l`l`g`d`g`g`g`l`g`l`l`g`l`l`l`g`g`l`l`l`l`g`l`g`g`l`g`l`g`g`l`l`l`l`g`l`l`l`d`g`g`l`g`g`l`g`l`l`l`l`g`l`g`l`l`g`g`g`g`l`g`g`g`l`g`l`g`l`g`l`g`l`g`l`l`g`g`g`g`d`g`g`g`g`l`g`g`g`g`g`l`g`g`g`g`l`l`g`g`g`g`g`g`g`g`g`l`g`l`g`g`g`g`l`l`g`l`l`g`l`g`g`g`g`l`l`l`l`i`l`l`g`l`l`l`l`i`l`l`l`l`i`l`l`i`i`l`i`l`i`i`i", +"`i`i`i`i`i`i`i`i`i`l`i`i`l`i`l`l`i`l`i`l`g`l`l`g`l`g`l`l`l`l`g`l`l`l`g`m`e`t`a`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`o`t`t`k`m`m```l`l`l`g`l`g`g`g`w`m`m`uaf`f`f`f`f`f`f`f`f`f`f`q`o`t`t`e```g`l`l`l`g`l`l`g`m`mab`t`aaf`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`t`t`o`o`q`q`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o```l`l`l`l`l`l`g`l`g`l`g`l`l`g`l`g`l`g`g`l`l`g`g`g`g`g`g`g`g`g`g`g`d`g`g`l`g`l`g`l`g`l`g`g`g`d`g`l`l`l`l`g`g`g`g`g`l`g`l`l`g`l`l`l`g`l`g`l`g`l`g`g`l`g`l`g`g`g`g`g`l`l`l`g`g`g`g`g`g`g`l`g`l`l`g`g`l`g`g`l`g`l`g`l`g`l`g`l`g`g`g`l`g`g`l`l`l`l`d`d`g`l`g`g`g`g`l`g`l`g`l`g`l`g`g`l`l`g`l`l`l`g`g`g`l`g`g`l`l`g`g`g`g`g`g`g`g`g`g`g`d`g`g`l`g`l`g`l`g`l`g`g`g`d`g`l`l`l`l`g`g`g`g`g`l`l`l`g`g`l`l`l`g`l`g`g`l`g`g`g`l`l`l`g`g`l`g`l`l`i`l`g`l`l`l`l`l`i`l`l`i`i`l`l`i`i`i`i`i`i`i", +"`i`i`i`i`i`i`i`i`l`i`l`l`i`l`l`l`l`l`l`l`l`g`l`l`g`l`g`g`l`g`l`l`g`g`g`g`g`lae```h`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`a`t`mae`l`l`l`i`i`i`i`i`i`l`i`i`g`d`g`g`lad`f`f`f`f`f`f`f`f`f`o`t`e`y`i`i`i`i`i`i`g`l`l`g`g`d`g`d`g`i`x`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`tab`yak`i`i`i`i`iag`w`w`m`k`o`q`f`f`f`f`f`f`f`f`f`f`f`f`f`t```i`iak`i`l`l`g`l`l`l`l`g`l`l`g`g`l`l`l`g`g`g`l`g`g`l`g`g`g`g`g`g`g`g`g`g`g`l`l`g`g`g`l`l`g`d`g`g`d`g`g`g`l`g`g`g`g`l`g`l`g`g`g`g`l`g`g`g`l`d`g`g`g`g`d`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`l`g`g`g`g`g`g`g`g`l`l`l`l`l`g`g`g`g`g`g`g`g`g`l`g`g`d`l`g`g`g`g`g`g`l`g`g`g`g`g`g`g`g`l`l`g`l`l`g`l`l`l`l`g`g`l`g`g`l`g`g`g`g`g`g`g`g`g`g`g`g`l`l`g`g`g`l`l`g`d`g`g`g`g`g`g`l`g`g`g`d`l`g`l`g`g`g`g`l`g`l`g`l`g`g`l`g`g`g`l`g`g`l`g`l`l`l`l`l`l`l`l`l`l`l`i`l`l`i`i`i`l`l`i`i`i`i", +"`i`i`l`i`i`l`i`i`l`i`l`l`l`l`i`l`l`l`l`i`l`l`g`l`l`l`g`l`g`l`g`g`g`g`g`g`l`l`l`i`i`n`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`makaeakakakakakakakaeakak`i`i`l`g`g`dalad`f`f`f`f`f`f`f`f`t`taaakakakakakakakakak`i`i`i`l`g`g`g`g`lalai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`kakakakakakaeaeakaeakaeakakak```m`q`f`f`f`f`f`f`f`f`f`f`q`taeaeaeaeakak`i`i`l`l`g`l`l`g`l`l`l`l`l`l`l`l`l`g`g`g`g`l`g`g`g`g`g`g`g`g`g`g`g`l`l`l`l`l`g`g`g`g`g`g`l`d`g`g`g`g`g`g`g`g`l`g`l`g`g`l`l`g`l`g`g`g`g`l`g`g`g`g`g`l`g`d`g`g`g`g`g`g`g`l`g`g`l`l`g`l`g`g`g`g`l`g`g`g`g`l`g`l`l`l`g`g`g`g`g`g`g`g`l`l`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`l`g`l`l`g`l`l`g`l`l`l`l`l`l`l`g`g`g`l`g`g`g`g`g`g`g`g`g`g`g`g`l`l`l`l`l`g`g`g`g`d`g`l`d`g`d`g`g`g`l`g`g`l`g`l`g`g`l`g`l`l`g`l`g`g`l`g`g`g`g`l`l`l`g`g`l`l`l`g`l`l`i`l`l`l`i`l`l`l`i`i`i`i`i`i`i", +"`i`i`i`i`l`i`i`l`i`i`i`i`i`i`l`l`l`l`l`l`l`l`l`g`l`l`l`g`l`g`g`l`g`g`g`g`g`g`l`lak`r`j`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`c`w`w`w`w`wagag`wag`wagaeak`i`i`l`l`g`vai`f`f`f`f`f`f`q`tab```w`w```w`w`w`w`wagagaeak`i`i`l`l`g`g`i`vai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t```w`w`w`w`wag`w`wag`w`w`wag`w`b`w```uaf`f`f`f`f`f`f`f`f`aab```````w`wagae`i`l`l`g`g`g`g`g`g`g`l`l`g`l`l`l`l`l`g`g`g`g`g`g`l`g`g`l`g`g`g`g`g`l`l`g`g`l`l`g`g`g`g`g`g`g`l`g`g`g`g`g`d`g`g`l`l`l`g`g`g`d`l`g`g`g`g`l`g`g`g`g`g`g`g`g`g`g`g`g`g`l`l`g`l`g`g`g`l`g`g`g`l`g`l`g`g`g`l`l`g`l`l`l`g`l`l`g`g`g`g`g`l`l`g`g`d`l`g`g`g`g`g`g`g`g`g`d`g`g`g`g`g`g`g`g`g`g`l`l`g`l`g`l`l`l`g`g`g`g`g`g`l`g`g`l`g`g`g`g`g`l`l`g`g`l`l`l`g`g`g`g`d`l`l`g`g`g`g`g`d`g`g`l`l`l`g`g`g`g`g`g`g`l`g`l`l`l`l`g`g`l`l`l`g`l`l`l`l`l`l`i`l`i`l`i`i`l`i`l`i`l`i`i`i", +"`i`i`i`i`i`i`i`i`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`l`g`l`g`l`g`g`g`d`g`g`g`g`lakae`n`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`m`y`c`c`c`c`c`y`y```````waeak`i`l`g`va``f`f`f`f`f`f`q`tab`c`c`c`c`c`c`c`y`y`y`y```waeak`l`l`g`g`l`l`vai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`oab`c`c`c`c`c`c`c`c`y`y`y`y`y`y`y`y`y`y`yaaaf`f`f`f`f`f`f`f`o`k`m`c`m`m`c``agak`i`l`g`g`g`g`g`g`g`g`l`g`g`g`g`g`g`g`l`i`g`l`g`g`l`l`l`g`g`g`g`g`g`l`g`g`g`l`l`g`g`g`l`g`g`g`g`g`g`l`g`g`g`g`g`g`g`g`g`g`g`g`l`g`g`g`g`g`g`g`g`g`g`g`g`g`d`d`g`g`g`g`g`l`g`g`l`g`g`l`g`g`g`g`l`g`g`g`g`g`l`l`l`l`g`l`g`g`g`g`g`g`l`g`g`d`g`g`g`g`g`g`g`g`d`d`d`g`g`g`g`g`g`g`g`g`g`g`l`g`l`g`g`g`g`g`l`i`g`l`g`g`l`l`l`g`g`g`g`g`g`l`g`g`g`l`l`g`g`g`l`l`g`g`g`g`g`l`g`g`g`g`g`g`g`g`g`g`g`l`l`g`l`g`g`l`g`g`l`g`g`l`l`l`g`g`l`l`l`l`l`i`l`i`i`i`i`i`i`i`i`i`i`i", +"`i`i`i`i`i`i`l`i`l`i`l`i`i`i`i`l`l`l`l`l`l`l`g`l`g`g`l`l`g`l`g`l`g`g`d`g`l`g`l`iakaga``f`f`f`f`f`f`f`f`f`f`f`f`f`f`pab`k`k`k`k`e`e`m`m`c`y```waeak`i`lal`v`j`f`f`f`f`f`q`tabab`k`e`k`e`e`k`e`e`e`m`c`y`c`m`cae`g`g`gak`i`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`k`k`e`k`k`e`e`e`k`k`m`c`c`c`c`c`c`c`m`m`m`zaf`f`f`f`f`f`f`tab`k`k`k`e`e`y`wae`i`l`g`d`g`g`g`g`l`g`g`g`l`g`g`l`l`g`g`l`g`g`l`l`l`g`l`l`l`l`g`g`d`g`g`g`g`l`g`g`l`g`g`l`d`g`g`d`d`g`l`g`g`g`g`g`g`g`g`g`g`wag`g`g`g`g`g`g`g`g`g`g`g`g`d`g`d`d`d`g`g`g`g`l`l`g`g`g`g`g`g`l`g`g`g`l`g`g`l`g`g`g`g`l`l`g`g`g`g`g`g`g`l`g`g`d`g`g`l`g`g`g`g`g`d`d`g`g`g`d`d`g`g`g`g`l`g`g`g`l`g`g`l`g`l`g`l`g`g`l`l`l`g`l`l`l`l`g`g`d`g`g`g`g`g`g`l`l`g`g`g`g`g`g`d`d`g`g`l`g`g`g`g`g`g`g`g`g`g`g`g`g`l`l`g`g`l`g`l`l`g`g`l`l`g`g`l`l`l`l`l`i`l`l`l`l`l`i`l`i`i`i`i", +"`i`i`i`l`i`i`i`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`g`l`g`g`g`d`g`g`g`g`g`iakagagai`f`f`f`f`f`f`f`f`f`f`f`f`f`q`tabababab`k`e`m`c`y```wagae`i`l`l`v`n`f`f`f`f`f`q`tab`e`kabababababab`k`k`e`m`c```cae`i`l`g`g`gakal`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t`tababababab`k`e`m`e`c`c`y`y`y`c`y`c`c`u`m`e`n`f`f`f`f`f`f`t`t`t`tabab`e`c`y`m`m`y`i`g`g`l`g`g`g`g`l`g`lag`y`y`m`y`m`g`l`g`l`g`l`l`g`g`m`c`g`g`m`y`g`g`g`g`g`l`g`g`g`g`g`d`g`g`g`g`g`l`g`g`d`d`d`g`d`d`g`dae`d`g`d`d`d`d`g`d`g`g`d`g`g`g`d`g`d`d`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`l`l`l`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`d`d`g`d`g`g`g`g`l`g`g`g`g`l`g`l`l`l`g`g`g`g`g`l`g`l`g`l`l`g`g`g`l`g`g`g`d`g`g`g`g`g`l`g`g`g`d`g`g`g`g`g`g`g`l`g`g`d`d`d`g`d`g`g`g`g`g`g`g`g`g`g`g`g`g`l`l`g`l`l`l`l`g`l`l`l`l`l`l`i`i`i`i`i`i`l`i`i`i", +"`i`i`i`i`i`l`i`l`i`i`i`i`i`l`l`i`l`l`l`l`g`l`l`l`g`l`l`g`l`g`g`g`d`g`g`l`g`g`l`i`iakaead`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`tab`k`e`c```wagagaeak`i`l`vad`f`f`f`f`f`a`t`k`c`e`kab`t`t`t`tab`k`e`c`y`y`y`c`wae`g`g`gaeagalad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`tab`k`e`c`m`w`y`y```w`w`w`y`c`y`yaa`baf`f`f`f`f`a`t`t`t`t`tab`k`c`wae`w`l`g`g`g`g`g`iagae`g`g`gae`l`gag`gae`g`g`gaeagak`l`l`l`l`m`l`i```g`g`g`g`g`g`l`l`gae`iae`iakak`d`g`g`laeae`d`d`d`d`daeak`gae`d`d`gakaeak`g`g`g`g`g`g`g`g`d`gaeakae`dae`l`g`l`gakaeak`g`l`iae`gaeae`l`d`l`g`l`g`l`g`l`l`g`g`l`g`g`g`g`g`g`g`g`g`g`g`g`d`d`d`g`g`g`g`g`g`g`g`g`g`l`g`g`g`g`g`g`l`l`g`g`g`g`l`l`l`g`l`l`l`l`l`l`g`g`l`g`g`g`g`g`g`l`g`g`d`g`g`g`g`g`d`g`g`g`g`d`d`g`d`g`g`d`g`g`d`g`g`g`l`l`l`l`l`l`g`l`l`l`g`g`l`l`l`l`i`l`l`i`l`l`l`i`l`i`i`i`i", +"`i`i`i`i`i`i`i`l`l`l`i`l`i`l`i`l`i`l`l`l`l`l`g`l`g`l`l`g`g`g`g`g`d`g`g`l`l`g`l`l`i`iak`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`tab`k`c```waeakak`i`i`l`v`s`f`f`f`f`f`q`t`e`c`c`eabab`t`t`tabab`k`e```w`w```yagae`g`g`lae``al`n`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`t`t`k`e`c```yae`c`yagakae`c`y`y`c`m`wag`n`f`f`f`f`o`t`t`t`t`tab`e`c`wakag`l`g`g`g`g`gaeaeae`w`l`g`g`g`gae`g`g`g`l```wag`w```g`l`g`i```c`l`g`l`g`d`g`d`g`g`gae`yae`yaeag`i`d`l`yaeae`y`l`g`d``aeae`c`w`g`g```wae`w```g`g`g`g`g`d`d`g`l``ag`w``ae`w`g`g`iaeaeagak`g`i`````wag``ak`g`g`g`g`g`g`g`g`l`g`g`g`g`g`g`g`d`g`g`d`d`d`d`d`d`d`l`l`g`g`g`g`g`g`g`g`g`g`g`l`g`g`g`g`g`g`g`g`l`g`l`l`l`l`g`l`g`g`l`l`g`l`g`g`d`g`d`g`g`g`g`d`d`d`d`d`d`d`d`g`d`d`d`g`d`g`g`g`g`l`l`g`g`g`g`g`l`g`l`l`l`l`g`g`g`l`g`l`l`l`l`l`l`l`i`i`l`i`i`i`i`i`i`i", +"`i`i`i`i`i`l`i`i`i`i`i`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`g`g`g`l`g`g`g`l`l`g`g`l`l`g`l`lalai`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`k`e`y`waeak`i`i`l`lala`af`f`f`f`f`a`t`m`wakag`y`eabab`tabab`k`m`kagak`i`iag`l`l`l`g`g`gag`v`j`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`t`tab`k``ag```mae`i`i`lak`y`wag`w`c`baead`f`f`f`fab`t`t`t`tabab`e`y`wakag`g`l`g`g`g`g`w`c```w`g`l`g`g`gag`g`g`l`i``aeaeag`cak`l`l`i```w`g`l`lak`y`y`y`c`y`d`g`c`dae`d`dae`gae`d`d`d`gae`gae`i`l`d`gag`g`i``agaeae`yak`g`w`y`y`y`yag`daeae`lae`gag`d`d`l```cagae`g`lae`i`d`l`g`w`g`g`l`g`g`g`g`g`g`g`g`l`g`g`g`g`g`g`g`g`g`g`g`g`d`g`g`g`g`g`l`g`g`g`g`g`g`g`g`g`l`g`d`g`g`g`g`l`g`g`g`g`l`l`l`l`l`l`l`g`l`g`l`g`g`d`l`l`d`d`g`l`d`d`d`d`g`g`d`d`d`d`g`g`g`g`g`g`g`g`g`g`l`l`l`l`g`l`g`l`g`l`l`l`g`l`l`l`l`i`l`l`l`l`l`l`i`l`l`l`i`l`i`i", +"`i`i`i`i`i`i`l`l`l`l`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`g`g`l`l`g`l`l`l`g`l`lad`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`k`m``agak`l`g`l`g`va`af`f`f`f`f`f`t`m`lagak`w`c`eabab`t`k`e`m`c``akak`l`lae`l`g`g`d`l`g`r`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`tab`e`y`wak`wae`y`g`g`lak``agagagagak`i`s`f`f`f`f`tabab`t`t`t`k`m`yagakag`l`g`lae`gaeak`l`l`w`g`g`g`g`gag`g`g`gae``agagagae`i`g`g`wakagae`g`g`d`l`d`g`d`g`g`l`y`dae`g`dae`gae`d`d`d`gae`gae`g`g`l`gae`gak``aeagagag`l`g`g`l`g`d`d`d`daeae`gag`lag`l`l`w`g`d`lae`d`gag`i`g`g`g`w`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`l`g`g`g`g`l`g`l`g`l`g`g`g`l`l`l`g`g`l`g`g`g`g`g`g`l`l`l`l`g`g`g`g`g`g`l`g`g`g`g`d`g`d`d`d`g`d`l`d`d`g`d`d`g`g`g`d`d`g`g`g`g`g`g`g`l`l`g`g`l`g`l`g`l`l`g`l`g`l`l`g`g`g`g`g`g`i`l`i`i`i`i`l`l`l`i`i`i`i`i`i", +"`i`i`l`i`i`i`i`i`i`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`g`l`g`l`l`l`g`g`l`l`g`g`g`l`g`g`l`g`g`ga``f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`k`m``ae`i`i`g`g`va`af`f`f`f`f`f`tab`i`l`w```w`mabab`k`kab`yagaeak`i`l`i`gag`g`g`g`l`g`la`ad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`tab`k`m``aeakag`g`i`y`g`g`g`cak`l`gak`g`l`v`f`f`f`q`t`eabab`t`t`k`m``ae`iag`g`l`gag`g`w`g`g`l```g`g`g`g`gae`g`g`g`l`cak`g`d`l`d`daeag`g`g`c`l`g`g`g`g`g`g`g`d`g`y`gae`g`dae`g`iag`d`gagak`g`i```g`g`````l`l`cak`l`g`i`l`g`d`g`d`d`d`d`daeae`gae`lag`l`g`w`g`laeae`d`gae```i`g`wak`l`g`g`g`g`g`g`g`g`g`g`d`l`l`g`g`g`g`g`g`l`g`g`g`g`l`g`g`g`g`g`l`g`g`g`g`g`d`g`g`g`g`g`g`g`g`g`l`g`g`g`g`d`d`d`d`d`g`g`g`g`g`g`g`g`g`g`g`g`d`g`g`g`g`g`d`d`g`d`d`d`g`g`g`g`g`g`g`l`l`l`l`l`l`g`l`l`l`l`l`l`g`g`l`g`l`l`l`l`l`l`i`i`l`i`l`i`i`l`l`l`i`i`i", +"`i`i`i`l`i`i`l`i`l`i`l`i`i`i`i`l`l`l`l`l`l`g`l`l`g`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`lal`j`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`tab`m``ae`i`g`gala`af`f`f`f`f`f`t`t`i`g`iak`y`k`k`k`t`k`m`y`m`m``ak`g`g```c`c`c`w`g`gae`c`r`n`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`cagae`w`w`l`g`c`c`l`g`g`w`c``ak`g`g`v`f`f`f`aab`c`eababab`k`c`w`w`m`c`c`c`cak`gak`c`cag`w`w`g`gae`c`c`c`l`l`g`g`w`c``ak`g`g`y`y`d`d`c`y`g`d`g`g`g`g`g`g`c`c`gagak`d`y`d`dak`y`cak`g`d`g`i`c`cak`w`w`g`g`w`c``ak`g`g`g`g`d`d`g`dak`y`w`d`c`lak`w`gae`c`c`i`cak`dae`l```c`i`g`l`g`g`g`g`g`g`l`d`g`g`g`d`g`d`g`d`g`g`g`l`l`g`g`l`l`l`g`l`l`g`l`g`g`l`l`l`g`d`g`g`g`g`g`d`g`l`l`g`g`g`g`g`g`g`g`d`d`d`d`d`d`d`d`g`g`g`g`g`g`g`d`d`d`d`d`d`d`d`d`g`g`g`g`g`g`g`g`g`l`l`l`g`l`g`l`g`g`l`g`l`l`g`g`l`g`l`l`l`l`l`i`l`i`i`l`i`i`i`i`i`i`i`i", +"`i`i`i`i`i`l`i`i`l`i`i`l`l`l`l`i`l`l`l`l`l`l`g`l`l`g`g`l`g`l`l`g`g`i`l`g`l`g`l`l`l`g`l`g`l`n`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t`tab`e`yagak`lal`v`j`f`f`f`f`f`tabagak`i`iae```c`e`k`e`m``agae`i`g`g`g`l`l`g`g`g`g`g`g`g`l`vaf`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`e`yagak`l`g`g`g`g`g`g`g`l`g`g`g`g`g`g`v`f`f`f`o`m```m`kabab`e`y``ak`i`l`g`l`l`g`g`g`g`g`l`g`g`g`l`g`g`g`g`l`g`g`l`l`l`l`g`g`g`g`g`l`g`d`d`d`g`g`d`g`d`g`g`g`d`g`d`d`d`d`g`g`d`g`d`g`g`g`d`g`d`l`l`l`g`g`g`g`g`g`g`g`g`g`d`g`d`d`d`g`g`g`d`g`g`l`l`l`g`g`g`g`g`l`gae`d`g`d`g`g`g`g`l`l`g`l`g`g`g`g`g`g`g`g`g`g`g`d`g`g`d`g`l`g`g`l`l`g`g`g`l`g`g`g`g`g`g`l`l`g`g`g`g`g`g`g`l`g`g`l`l`l`l`g`g`g`g`g`l`g`d`d`g`g`g`d`g`d`g`g`g`g`g`d`d`d`d`g`g`d`g`d`g`g`g`g`g`g`l`l`l`g`l`l`l`g`l`l`l`l`l`g`l`l`g`l`l`l`l`g`l`l`i`l`i`l`i`l`i`i`i`l`i`i", +"`i`i`i`i`i`l`l`i`l`l`i`i`i`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`g`i`l`l`l`l`g`g`g`g`g`g`s`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`tab`e`cagakal`vai`f`f`f`f`q`tab`i`g`lakae```c`e`e`e`c`y`waeak`l`g`g`g`g`l`g`l`l`g`g`g`g`la``f`f`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`t`k`e```w`l`g`d`g`g`g`g`g`g`l`g`g`l`g`g`l`x`f`f`f`t`````c`e`kab`e`yaeae`i`l`l`g`g`g`g`g`g`g`g`l`g`g`l`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`d`g`g`d`g`g`g`g`g`g`g`g`g`g`d`g`d`d`g`d`d`d`g`i`g`g`g`g`d`g`g`g`l`g`l`l`g`g`g`g`g`g`d`g`g`d`g`d`g`d`d`g`d`d`g`g`g`g`g`g`g`g`g`gae`e`mae`d`d`d`g`g`d`g`g`l`g`g`l`g`g`l`g`g`g`g`g`g`g`g`g`g`l`g`g`d`i`l`g`l`l`g`g`g`g`g`g`g`g`g`g`l`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`d`g`g`d`g`g`g`g`g`g`g`g`g`g`d`g`d`d`g`g`d`g`d`i`g`g`l`g`g`l`g`l`l`l`l`l`g`l`l`g`l`g`g`l`g`l`l`g`l`l`l`l`l`l`l`l`i`i`l`i`i`l`i`i`i`i`i", +"`i`i`i`i`i`i`l`i`l`l`l`l`l`i`l`i`l`i`l`i`l`l`l`l`l`l`g`l`l`g`l`l`g`g`l`l`l`g`l`l`l`g`g`g`galaf`f`f`f`f`f`f`f`f`f`f`f`f`f`o`tab`k`m`w`v`vai`f`f`f`f`f`tab`i`l`lakae`w`y`e`e`e`c``agae`i`l`l`l`d`g`l`g`g`l`l`g`l`g`galad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`tab`k`m`waeak`i`g`d`d`gal`g`g`g`g`i`g`l`g`l`l`n`q`q`taeag`y`m`k`k`m``akak`i`l`g`l`l`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`l`g`l`g`g`g`g`g`g`g`d`d`g`g`g`g`g`g`g`g`g`g`g`g`g`g`d`d`g`g`d`d`d`d`l`g`g`g`g`g`g`l`g`g`l`l`g`l`g`g`g`d`g`d`d`g`g`g`g`g`g`g`d`d`d`g`g`l`g`g`g`g`g`g`l`g`l`l`i`d`g`d`d`d`d`g`g`g`i`g`l`g`l`g`g`l`g`l`g`g`g`g`g`g`l`g`d`l`l`l`g`l`l`g`g`g`g`g`g`l`g`g`g`g`g`g`g`g`l`g`l`g`g`g`g`g`g`g`d`d`g`g`g`g`g`g`l`g`d`g`g`g`d`g`d`g`g`g`g`d`d`g`l`l`g`g`g`g`g`l`g`l`l`l`l`l`l`l`l`l`g`g`l`g`l`l`g`l`l`l`l`l`l`l`l`i`l`i`l`i`i`i`i`i`i", +"`i`i`i`i`i`i`i`i`i`l`l`l`l`i`l`i`l`i`l`l`i`l`l`g`i`l`l`l`l`l`l`l`g`d`g`l`l`l`g`l`g`l`l`l`g`l`n`f`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`k`m`x`vai`f`f`f`f`f`tab`i`g`iakae`w`c`m`e`e`m`yagak`i`i`l`g`g`l`g`g`g`g`l`g`g`g`g`g`vai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`c`wae`i`i`g`g`g`vadaia``r`g`l`g`i`g`l`l`g`c`eab`iag```m`e`e`c`wak`g`i`g`l`g`g`g`g`g`l`g`g`d`d`l`g`g`l`g`g`d`g`g`g`l`l`g`g`g`g`g`g`l`g`l`g`g`g`g`g`g`g`d`g`g`d`g`g`g`g`g`g`g`d`d`l`l`l`l`g`g`g`g`g`g`l`g`g`l`g`g`g`d`d`g`g`g`g`g`d`d`g`d`d`d`d`d`g`g`g`g`l`g`g`g`g`l`l`l`i`g`g`g`g`d`d`d`g`g`l`l`l`l`g`l`g`g`d`l`g`g`g`g`g`g`g`g`d`d`l`g`l`g`g`g`g`g`g`g`g`d`d`l`g`g`l`g`g`g`l`l`l`l`l`g`g`g`d`g`d`g`d`g`g`g`g`g`g`g`g`g`g`g`g`g`d`g`d`g`g`g`g`d`l`l`i`l`g`l`g`l`g`l`l`l`l`g`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`i`l`i`l`i`i`i`i", +"`i`i`i`i`i`i`i`i`i`i`l`l`l`l`l`l`i`l`l`i`l`l`g`g`l`g`g`g`g`g`g`g`g`g`g`l`l`g`l`g`g`g`g`g`g`l`s`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`tab`x`vai`f`f`f`f`f`tab`i`l`i`iae`w`y`m`e`e`m`y`wae`i`g`d`g`g`g`g`g`g`g`g`g`l`g`g`g`g`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`tab`m`yagak`i`l`l`lal`vaf`f`f`bak`g`l`g`g`g`g`g`d`g`g`iak`w`c`e`e`y`w`i`l`l`l`g`g`l`d`g`g`g`g`l`l`i`ialal`i`l`g`d`d`l`g`g`l`g`g`lal`v`v`sadad`s`l`g`g`l`g`g`g`g`g`g`g`g`g`d`d`g`i`v`v`vadadad`s`i`l`g`g`g`l`g`g`g`d`g`d`g`g`g`g`d`g`d`g`g`g`g`d`d`d`d`d`g`g`l`d`lal`v`va`adadad`r`i`l`g`g`g`d`d`d`l`l`l`l`lal`lal`l`d`g`g`d`d`d`g`d`d`d`d`l`g`g`g`g`g`g`g`g`g`l`l`l`l`g`lalal`v`vad`sadad`sal`l`l`g`d`d`g`g`g`d`d`g`g`l`g`g`g`g`g`g`g`g`g`d`g`lal`v`va`adadad`sal`i`g`l`g`l`g`l`i`vadada``l`g`l`l`l`g`l`l`g`l`l`l`l`l`l`l`i`i`l`i`i`i`l`i`i", +"`i`i`i`i`i`i`l`i`l`i`i`l`l`l`g`l`l`g`l`l`l`g`l`g`l`l`l`l`g`g`g`g`g`g`d`g`l`l`l`g`g`g`g`l`g`lal`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`b`vai`f`f`f`f`q`tab`r`l`iakae`w`y`m`e`e`m`y`waeak`g`d`d`d`d`d`g`d`g`g`g`g`g`g`g`gal`s`f`f`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`tab`k`m``ae`i`i`l`g`lalad`f`f`f`tae`d`d`d`g`g`g`d`d`d`g`iak`w`y`m`m``agak`g`g`g`l`l`l`g`lalalal`v`v`vadadaiafadak`g`d`d`d`g`g`g`v`v`sai`f`f`faf`f`f`n`l`l`g`l`g`g`g`g`d`g`g`g`l`va``naf`f`f`f`f`f`f`nal`g`g`g`g`g`l`g`g`g`g`g`d`g`g`d`g`g`g`d`g`d`d`d`d`d`d`g`i`v`vadai`f`f`f`f`f`faf`s`g`g`g`l`v`v`v`sadadadadadaiaiad`d`g`g`g`d`d`g`g`d`d`d`g`l`l`g`d`g`g`g`g`l`g`gal`va`adaiaf`f`f`f`f`f`f`f`jad`v`g`d`g`d`g`g`g`d`g`l`g`g`g`g`g`g`g`g`l`l`va`ad`j`f`f`f`f`f`f`f`jad`r`l`l`l`l`vadaf`f`fag`l`l`g`l`l`l`l`l`l`g`l`l`l`l`l`i`i`i`i`i`i`i`i`i", +"`i`i`i`i`i`l`i`l`i`l`l`i`i`l`l`l`g`l`g`g`g`l`g`g`g`g`g`l`l`l`g`g`l`g`g`d`g`l`l`g`g`g`d`g`g`galai`f`f`f`f`f`f`f`f`f`f`f`f`f`a`m`vai`f`f`f`f`f`tab`l`l`lakae`w`y`m`e`e`m`yagae`i`i`i`d`d`d`d`d`d`g`d`g`d`g`g`g`g`g`vad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`m`wae`i`i`g`gal`vaf`f`f`q`t`d`d`d`d`d`d`d`d`d`d`d`lak`w`y`c`c`w`ral`v`v`v`v`vadadadadaiai`j`f`f`f`f`f`f`k`y`g`g`d`d`dal`v`saf`f`f`f`f`f`f`f`f`fafak`l`g`g`g`g`g`g`g`l`va``n`f`f`f`f`f`f`f`f`f`f`f`x`d`g`g`g`g`g`g`g`g`g`g`g`g`d`g`d`g`g`d`d`g`d`d`d`lal`vadaf`f`f`f`f`f`f`f`f`f`f`h`g`g`vad`f`f`f`faf`f`f`f`f`f`u`y`g`g`g`g`g`d`g`g`d`d`d`l`g`g`g`d`d`g`d`lal`v`sai`f`f`f`f`f`f`f`f`f`f`f`f`f`fah`g`g`g`g`g`g`g`g`g`l`l`g`g`g`g`g`l`va``n`f`f`f`f`f`f`f`f`f`f`f`f`fai`sa``v`saf`f`f`a`t`g`l`l`g`l`l`l`l`l`l`l`l`l`l`i`l`i`l`i`i`i`i`i`i", +"`i`i`i`i`i`i`i`i`i`i`l`l`i`l`l`l`l`l`l`g`g`l`g`g`g`l`g`g`g`g`l`g`g`g`l`d`g`d`l`l`l`l`l`l`l`l`gad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`vad`f`f`f`f`f`tabak`g`l`iae`w`y`m`m`e`m`y`wae`i`i`l`g`l`g`d`d`d`d`d`d`g`d`g`d`g`g`g`v`j`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`e`yagakak`g`l`l`v`n`f`f`f`a`e`d`g`d`g`d`d`d`d`d`d`d`l`iae```y`yag`sai`j`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`tae`g`l`d`g`v`vai`f`f`f`f`f`f`f`f`f`f`f`f`f`i`l`g`g`g`g`g`l`vadaf`f`f`f`f`f`f`f`f`f`f`f`f`f`b`g`d`g`g`g`g`d`g`g`d`g`g`g`g`d`g`g`g`d`g`d`gal`vadaf`f`f`f`f`f`f`f`f`f`f`f`f`f`u`g`v`j`f`f`f`f`f`f`f`f`f`f`o`y`d`d`d`d`g`d`d`g`g`d`d`d`g`l`g`l`g`lal`v`s`j`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`j`l`g`g`d`g`g`g`g`g`g`g`g`g`g`l`vadaf`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`m`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`i`i`i`i`i", +"`i`i`i`i`i`i`i`i`l`i`i`i`i`i`l`l`l`l`l`l`l`g`g`i`l`g`g`g`l`g`g`g`g`g`g`d`g`d`d`g`g`g`l`g`l`g`gal`f`f`f`f`f`f`f`f`f`f`f`f`f`f`n`f`f`f`f`f`tab`i`g`i`iae`w`y`m`e`e`m`y``ae`i`l`g`d`l`w`cae`d`d`d`d`d`dak`d`d`d`g`g`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`t`k`e`yag`i`i`l`l`v`s`f`f`f`f`o`y`g`g`g`l```mak`d`d`i`g`g`iae`w```w`rad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`aab`l`g`l`lala`af`f`f`f`f`f`f`f`f`f`f`f`f`f`f`p`l`iae`i`gal`vad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`w`cak`g`d`g`g`g`g`g`g`g`d`g`g`g`g`g`g`d`gala`ai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`x`v`f`f`f`f`f`f`f`f`f`f`f`tak`d`g`gak`c`w`g`d`d`d`d`d`d`d`g`g`l`va``n`f`f`f`f`f`f`f`q`o`t`tajaf`f`f`f`f`f`f`faf`i`g`g`g`g`g`g`g`l`l`l`l`l`vad`f`f`f`f`f`f`f`f`q`o`t`t`t`o`f`f`f`f`f`f`f`f`f`f`o`m`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`i`i`l`i`i`i`i", +"`i`i`i`i`i`i`i`i`i`i`l`l`l`l`l`l`l`l`l`l`l`l`g`g`g`l`l`g`l`l`g`g`g`g`g`d`d`d`g`g`g`g`g`l`l`g`l`lai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`tae`i`l`iaeag`y`c`e`e`m`y``agak`i`g`d`d`dag`g`d`g`g`d`d`d`i`w`d`g`d`dalad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`t`k`c`wae`i`l`l`va`af`f`f`f`f`tak`g`l`i`iakak`w`l`d`d`d`l`i`iagagaeak`x`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`c`l`g`g`va`af`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q```i``ak`i`vai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`p`e`g`l`l`g`w`m`e`y`g`g`g`d`g`d`d`g`g`g`va`af`f`f`f`f`f`f`f`f`f`a`t`t`taj`f`f`f`zad`f`f`f`f`f`f`f`f`f`f`a`t`l`g`g`l`l`gae`g`d`d`d`d`d`d`g`g`l`vadaf`f`f`f`f`f`f`f`o`t`kag`ialad`f`f`f`f`f`f`f`faj`l`l`l`g`g`g`l`g`l`g`g`v`s`f`f`f`f`f`f`f`f`o`t`m`w`l`l`i```j`f`f`f`f`f`f`f`f`o```l`l`i`i`i`i`i`l`i`l`l`l`l`l`l`l`l`i`i`l`i`l`i`i", +"`i`i`i`i`i`i`l`i`l`i`i`i`i`l`i`l`l`l`l`l`l`l`l`l`g`g`l`g`l`g`g`l`g`g`l`i`l`g`d`d`g`l`g`g`l`g`l`l`n`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`yak`iakaeag`y`c`m`e`m`y`waeak`i`l`d`g`d`dag`g`g`d`g`g`d`d`y`d`d`d`g`g`vai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`t`t`k`e`wak`i`r`va`af`f`f`f`f`q`tae`i`lakaeaeae```i`l`g`d`d`l`iakakakak`raa`o`o`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`tae`i`w`va`af`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`kaeak`b`vad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`p`yak`i`l`l`g`gae`g`g`g`g`g`gakaeak`l`vad`f`f`f`f`f`f`f`f`f`f`o`t`cakakagah`f`faiai`f`f`f`f`f`f`f`f`f`f`o`eaeak`i`i`i`l`w`g`g`g`l`g`daeaeal`vad`f`f`f`f`f`f`f`f`o`t`cae`i`i`v`n`f`f`f`f`f`f`f`f`f`eak`l`l`iag`iagae`lal`vaf`f`f`f`f`f`f`f`q`t`w`l`l`rakag`waeai`f`f`f`f`f`f`f`t`w`iaeaeagagae`i`iakakak`iak`i`l`l`l`iakal`i`i`i`i", +"`i`i`i`i`i`i`l`i`i`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`g`g`l`g`l`g`l`l`g`g`g`l`l`g`g`d`d`g`g`g`g`g`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`e`waeakaeag```m`m`e`m`y`wagak`i`l`l`g`g`d`dae`g`g`d`g`g`g`g`w`d`d`d`d```vaf`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`magak`v`vadaf`f`f`f`f`f`a`eag`maeag`w`w`w```i`l`l`g`g`d`g`l`l`i`lak`w`c`c`yad`f`f`f`f`f`f`f`f`f`f`f`f`q`takaka`a`af`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`wag`vad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`a`maeaeak`i`l`lag`g`g`g`g`g`iagag`x`vad`f`f`f`f`f`f`f`f`f`f`t`t`m`wakaeag`b`j`faf`f`f`f`f`f`f`f`f`f`f`f`t`m`y`cakaeakae`w`i`l`g`g`i`mag`r`vai`f`f`f`f`f`f`f`f`o`t`m`w```cala`af`f`f`f`f`f`f`f`f`f`o`m``akak`y`yagag`walad`f`f`f`f`f`f`f`f`t`e`wakakaeag```c`y``af`f`f`f`f`f`f`tagakag`y```w``ae`iakaeakaeakak`i`iakak`iakak`i`i`i", +"`i`i`i`l`i`i`i`i`i`i`i`i`l`i`l`l`l`l`l`l`l`l`l`l`l`g`l`g`g`l`g`l`g`l`l`l`l`l`g`g`g`l`d`d`g`d`g`gal`j`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`tab`m```wag`w`y`m`m`e`m`y`waeak`i`i`l`g`d`g`g`dae`d`g`g`d`g`g`gag`g`g`gakala``f`f`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`e`m`u`b`x`v`v`s`j`f`f`f`f`f`f`f`t```i`i`y`w`y`y```yak`l`g`g`g`g`d`d`g`g`g`g`g`w`l`g`v`f`f`f`f`f`f`f`f`f`f`f`f`o`e`w`ra`af`f`f`f`a`t`oai`f`f`f`f`f`f`f`f`f`f`f`f`t`ya``s`f`f`f`f`a`t`tac`f`f`f`f`f`f`f`f`f`f`f`f`qab`y`wagakak`lag`g`g`g`g`d`l`y```vad`f`f`f`f`f`f`f`f`f`f`t`t`````kag```yahad`f`f`f`f`f`f`f`f`f`f`f`f`q`t`````y`w`w`wag`y`i`l`g`lag`lal`vai`f`f`f`f`f`f`f`f`a`t`e`w`w`w`e`v`n`f`f`f`f`f`f`f`f`f`f`a`eabaeak`w`i`l`gag`vaf`f`f`f`f`f`f`f`f`tae`wag`w```y`c`m`u`cad`f`f`f`f`f`f`t`wag`w`y````ag`wak`iae`lak`l`ial`lakak`i`i`iak`i`i", +"`i`i`i`i`i`l`i`l`i`i`l`i`l`i`i`l`l`l`l`l`l`l`l`l`l`l`g`g`g`g`g`l`l`l`g`l`g`l`g`l`l`l`l`d`d`g`g`l`lad`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t`t`k`e`c`````y`c`e`e`m`y``agak`i`i`l`l`l`g`d`d`gae`d`g`g`g`g`g`lag`l`g`gagalad`f`f`f`f`f`f`f`f`f`f`f`f`f`fad`v`v`v`v`vadad`x`nai`f`f`f`f`f`f`f`f`f`f`tag`iaeaa`yaa`y`````i`i`g`g`g`d`g`g`d`d`g`g`lag`g`g`v`f`f`f`f`f`f`f`f`f`f`f`f`t`m`x`v`j`f`f`f`o`t`caea``f`f`f`f`f`f`f`f`f`f`f`q`t`xa`af`f`f`f`t`taa`iaead`f`f`f`f`f`f`f`f`f`f`f`qab`e`m`y`wak`i`w`g`gag`g`g`w`i`vadaf`f`f`f`f`f`f`f`f`f`o`t```y`y`m`y`c`e`mad`f`f`f`f`f`f`f`f`f`f`f`f`oab`c`m`m`m`c`y`w`yak`i`l`gaeal`vai`f`f`f`f`f`f`f`f`f`t`m`c```y`y`z`v`f`f`f`f`f`f`f`f`f`f`f`qab`e```w``ak`i`lae`s`f`f`f`f`f`f`f`f`f`tae`y```c`m`m`e`k`e`mah`j`f`f`f`f`a`t`y`y`y`m`m`c```wak`iag`lak`l`lak`lakak`iak`i`i`i`i", +"`i`i`i`i`i`i`l`i`l`i`i`l`i`l`i`l`l`l`l`l`g`l`l`g`l`l`l`l`l`l`d`g`g`g`l`l`g`l`g`g`g`g`l`l`g`d`g`g`g`s`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`tab`k`m`m`c`m`e`m`m`y`wagak`i`l`l`g`g`g`g`d`g`dag`d`d`g`l`g`g`g```g`l`l`g`v`j`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t`iae`c`c`c`m`c`w`y`i`l`g`g`g`g`g`g`g`d`d`d`gag`g`l`v`f`f`f`f`f`f`f`f`f`f`f`a`taa`vai`f`f`q`t`taaak`i`v`f`f`f`f`f`f`f`f`f`f`f`qaa`v`j`f`f`f`tabak`l`ga`ad`f`f`f`f`f`f`f`f`f`f`f`o`tab`e`m`y`wak`w`g`gag`g`g`walad`f`f`f`f`f`f`f`f`f`f`a`t`k`w```y`m`e`kab`zad`f`f`f`f`f`f`f`f`f`f`f`f`tab`k`kab`k`k`m`y`yak`l`l`l`r`vai`f`f`f`f`f`f`f`f`f`tabak`e```w````ad`f`f`f`f`f`f`f`f`f`f`f`a`t`e`m```yak`i`ia`ad`f`f`f`f`f`f`f`f`f`t`w`m`m`e`k`k`e`k`m`m`y`n`f`f`f`f`aab`m`m`e`e`e`m```wak`iag`gak`l`l`i`lakak`i`i`i`i`i`i", +"`i`i`i`i`i`i`l`i`l`i`i`l`i`l`i`l`l`l`l`l`l`g`l`g`g`l`l`l`l`g`g`g`g`g`g`g`l`g`l`l`g`l`l`g`g`g`d`l`galaf`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`tab`k`e`e`e`e`m`c`waeak`l`g`g`g`g`g`g`g`d`d`dae`g`d`d`g`g`g`g```i`g`g`g`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`e`m`k`y`c`m`e`p`k`e`m`w`d`d`l`g`g`g`d`d`d`w`c`m`m`xad`f`f`f`f`f`f`f`f`f`f`f`oab`vad`f`f`f`t`t`m`eakaea``f`f`f`f`f`f`f`f`f`f`f`q`vad`f`f`f`t`tag`i`i`ga``n`f`f`f`f`f`f`f`f`f`f`f`o`t`tab`k`m`m`e`m`m`m`c`g`g`va`af`f`f`f`f`f`f`f`f`f`q`t`m```eabab`k`kab`t`bad`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`tab`kab`k`e`e`c`l`g`vai`f`f`f`f`f`f`f`f`f`q`tagae`w`eababaaad`f`f`f`f`f`f`f`f`f`f`f`a`tab`e`e`k`makae`xai`f`f`f`f`f`f`f`f`f`o`k`kababababab`k`k`e`y`s`f`f`f`f`o`t`k`kabab`k`m`c``akagag`lak`i`iae`l`l`iakak`i`i`i`i", +"`i`i`i`i`i`i`i`i`l`i`l`l`l`i`l`i`l`l`l`l`l`l`l`l`l`g`g`l`g`l`l`g`g`d`l`d`l`g`g`l`g`g`l`l`g`g`d`d`l`l`n`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t`tabab`k`k`e`e`y``agak`l`l`g`l`l`g`l`g`g`d`d`d`wae`i`d`d`d`g`g`g```l`lal`s`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`wag``aa`m`e`m`yagak`i`l`g`g`d`d`g`g`l`g`d`d`d`d`dal`n`f`f`f`f`f`f`f`f`f`f`f`t`xa``f`f`f`t`t`m``ae`i`vad`f`f`f`f`f`f`f`f`f`f`fad`s`f`f`f`t`t`cagakak`w`v`j`f`f`f`f`f`f`f`f`f`f`f`t`t`t`tab`e`c`wak`l`g`g`lal`vaf`f`f`f`f`f`f`f`f`f`f`oab`w`c`m`eabababab`kad`j`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`tabab`m`yae`i`g`g`vad`f`f`f`f`f`f`f`f`f`f`t`eag```y`m`e`k`ead`f`f`f`f`f`f`f`f`f`f`fab`t`tab`e`m``ag`i`vai`f`f`f`f`f`f`f`f`f`fab`kababab`k`m`y`wagaea``j`f`f`f`o`k`kababab`k`m``aeak`i`l`l`l`l`l`l`l`l`i`l`i`i`i`i`i", +"`i`i`i`i`i`i`l`i`i`i`l`i`l`i`l`i`l`l`l`g`l`l`l`l`l`l`l`g`g`g`g`l`l`l`g`g`g`d`l`g`g`l`g`l`g`l`g`d`d`g`s`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`tab`k`e`c``aeak`i`g`g`g`g`g`g`g`g`d`d`d`g`iag`i`g`g`d`g`g`g`g`g`g`v`n`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`o`o`o`o`a`q`f`f`f`f`f`f`f`f`f`f`f`f`q`t`w`w`c`e`p`k`m`yaeak`l`g`g`g`g`d`d`d`d`g`g`g`g`d`d`vai`f`f`f`f`f`f`f`f`f`f`q`u`v`j`f`f`t`t`k`c`waeak`v`n`f`f`f`f`f`f`f`f`f`f`f`vaf`f`f`t`t`e`y`wakae`xa``f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`k`m``ae`i`g`g`l`vai`f`f`f`f`f`f`f`f`f`f`q`t`c`y`e`kabab`tab`k`e`rai`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`c``ae`i`l`va``f`f`f`f`f`f`f`f`f`f`a`tag```c`e`k`kab`k`z`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`k`e`yagakalai`f`f`f`f`f`f`f`f`f`f`aab`tabab`e`c``agaeakak`n`f`f`f`t`k`kab`tab`k`m``aeak`i`i`l`i`i`l`l`i`l`l`i`i`i`i`i`i", +"`i`i`i`i`i`i`i`i`l`i`i`l`l`l`i`l`i`l`l`l`l`l`g`l`l`g`l`g`l`l`g`g`l`g`g`g`g`l`d`l`g`g`g`g`g`g`g`g`d`dalaf`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`tabab`k`c``agak`l`l`l`g`g`g`g`l`g`d`d`d`l`g`g`g`l`g`d`d`d`g`g`l`g`g`v`j`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`t`tabab`o`o`f`f`f`f`f`f`f`f`f`aab```y`e`k`k`k`m``ae`l`g`g`g`g`d`g`d`g`g`g`d`g`d`g`g`v`f`f`f`f`f`f`f`f`f`f`f`a`vad`f`f`o`tab`m`yagakae`v`j`f`f`f`f`f`f`f`f`f`f`n`n`f`f`a`t`t`e`c``aeak`v`n`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`tabab`m``ag`i`g`g`vad`f`f`f`f`f`f`f`f`f`f`f`oab`c`e`kabab`tab`k`e`c`vaf`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`c`wak`i`l`vaf`f`f`f`f`f`f`f`f`f`f`t`e```c`e`kabab`k`e`mai`f`f`f`f`f`f`f`f`f`t`t`t`t`tab`k`c``ae`vai`f`f`f`f`f`f`f`f`f`faf`t`t`t`k`m``agak`i`l`lad`f`f`f`t`c`eababab`k`c`wae`i`i`i`l`l`l`i`i`l`i`l`i`l`i`i`i`i", +"`i`i`i`i`l`i`l`i`l`i`i`i`i`l`i`l`i`l`l`l`l`l`l`g`l`g`l`g`l`g`g`l`g`l`g`g`l`d`g`g`d`i`l`g`l`g`g`g`g`g`vai`f`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`k`e`yagak`i`l`g`g`g`g`d`g`d`g`d`d`d`d`l`g`l`g`g`g`d`d`g`g`g`l`l`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`tab`k`c``ag`yaf`f`f`f`f`f`f`f`o`k`m`e`kabab`k`c`wak`i`g`d`g`g`g`d`g`d`d`g`g`d`g`galad`f`f`f`f`f`f`f`f`f`f`fa``s`f`f`q`t`t`k`m``agak`ra``f`f`f`f`f`f`f`f`f`f`fad`f`f`q`t`tab`e`c`wagae`v`j`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`k`e``agak`lala`af`f`f`f`f`f`f`f`f`f`f`q`t`m`m`k`t`t`t`tab`e`cag`v`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`tab`m`yagak`l`v`n`f`f`f`f`f`f`f`f`f`f`q`taa`m`e`kab`tab`k`m``ag`h`f`f`f`f`f`f`f`o`t`t`t`t`tab`k`m``ae`rai`f`f`f`f`f`f`f`f`f`f`fac`tab`k`m``aeak`i`l`l`l`f`f`q`t`y`m`kabab`e`c`waeak`l`l`i`i`l`l`i`i`l`l`i`l`i`i`i`i", +"`i`i`i`i`i`i`i`i`i`l`i`l`i`l`i`i`l`i`l`g`l`g`l`l`g`l`l`g`l`g`g`g`l`l`g`g`l`l`g`g`g`d`d`i`l`g`g`g`gala`af`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`tab`k`m`wae`i`l`d`g`g`d`d`d`d`d`d`g`g`g`g`g`l`g`l`l`g`l`d`d`d`g`lalad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`tab`k`m`y``agagai`f`f`f`f`f`f`t`k`kab`tabab`e`c`wak`l`g`g`g`d`g`g`g`d`d`d`g`g`g`dal`n`f`f`f`f`f`f`f`f`f`faf`vaf`f`q`t`tab`e`c`wagae`rad`f`f`f`f`f`f`f`f`f`f`jaf`f`f`t`t`tab`e`y`wag`xa``f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`m``ag`i`l`v`n`f`f`f`f`f`f`f`f`f`f`f`tab`eababab`tabab`e`m``a`ad`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`tab`k`m`wae`iala``f`f`f`f`f`f`f`f`f`f`f`oab`m`kabab`tab`k`e`yagae`iaa`a`q`q`q`o`t`t`t`t`t`t`t`tab`m``aealad`f`f`f`f`f`f`f`f`f`f`f`f`p`t`k`m`wae`i`l`i`l`l`i`t`t`k`w`c`e`k`k`e`y`wak`i`i`l`i`l`i`l`l`i`l`i`l`i`i`i`i`i", +"`i`i`i`i`i`i`i`i`l`i`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`g`g`l`g`l`g`g`g`g`l`l`g`l`g`l`g`g`d`d`g`l`g`gal`v`j`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`k`m``ak`l`g`d`d`d`g`d`l`g`d`d`g`g`l`g`g`d`l`g`g`l`g`g`g`d`d`g`vai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`t`tab`k`e`c`c`y`yad`f`f`f`f`f`q`tababab`tabab`m`yag`i`g`g`d`g`g`d`d`g`g`g`d`d`d`d`l`v`j`f`f`f`f`f`f`f`f`f`f`n`n`f`f`o`t`tab`m`yagaeag`vai`f`f`f`f`f`f`f`f`f`faf`f`f`a`t`t`tab`e`c`y``a`ad`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`tab`k`m``ae`ial`s`f`f`f`f`f`f`f`f`f`f`f`q`t`k`k`t`t`t`tab`k`m`yag`r`n`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`c`wak`i`v`j`f`f`f`f`f`f`f`f`f`f`f`t`e`eab`t`t`tab`e`c`wak`l`d`d`l`c`e`eababab`t`t`t`t`tab`k`m``ae`i`s`f`f`f`f`f`f`f`f`f`f`f`f`f`p`k`m``ae`i`l`g`l`g`l`l`iakag`y`m`k`k`m`yagakak`l`l`i`l`i`l`l`i`l`i`l`i`l`i`i`i", +"`i`l`i`i`i`l`i`l`i`l`i`i`l`i`l`l`i`l`l`l`l`l`g`l`g`l`l`g`l`g`l`l`g`g`g`g`l`g`l`g`l`g`g`d`g`d`g`v`vai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`a`tab`k`m``ae`i`g`d`d`d`g`g`g`g`d`g`g`d`l`g`d`d`g`g`g`g`g`g`g`d`d`d`vaf`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`t`tab`k`e`m`m`c`cahai`f`f`f`f`o`t`t`t`t`t`t`k`m``ae`i`l`g`g`d`d`d`g`d`d`d`g`g`g`d`g`v`f`f`f`f`f`f`f`f`f`f`fad`f`f`q`t`tab`k`m`y`w`w`b`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`tabab`e`m`y```v`j`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`t`k`m`wae`r`v`j`f`f`f`f`f`f`f`f`f`f`f`o`t`kab`t`t`tabab`e`c`wak`vai`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`tab`e`yagak`v`s`f`f`f`f`f`f`f`f`f`f`f`a`t`kabab`t`tab`k`m``agak`i`l`g`l`lae`w`c`eab`t`t`t`t`tab`k`c`wak`ial`f`f`f`f`f`f`f`f`f`f`f`f`fafab`e`yag`i`l`g`l`l`l`l`iakae`w`m`e`e`m``agak`i`i`l`l`i`i`l`i`l`i`i`i`l`i`i`l`i", +"`i`i`i`l`i`l`i`i`i`i`l`i`l`l`i`l`l`l`l`l`g`l`l`l`g`l`l`l`g`g`g`l`g`g`g`g`g`l`g`l`g`l`g`d`g`dal`vai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`tab`m`yae`i`l`g`g`d`g`g`l`g`l`g`g`g`g`g`g`d`g`g`g`l`g`l`g`g`d`la``f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`tab`k`e`m`c`c`c`c```n`f`f`f`f`o`t`t`t`t`tab`e`c`wae`i`g`d`g`g`d`g`g`g`g`d`d`g`d`galad`f`f`f`f`f`f`f`f`f`f`j`j`f`f`t`t`tab`k`c`y`````x`s`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`tab`e`m`c`ba``f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`c`wakal`s`f`f`f`f`f`f`f`f`f`f`f`f`tabab`t`t`t`tab`k`c`waeak`v`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`t`k`m``aeal`v`j`f`f`f`f`f`f`f`f`f`f`f`tab`k`t`t`t`tab`k`c`wae`i`l`l`g`l`lae`w`c`eab`t`t`t`t`tab`e`c`wak`i`l`n`f`f`f`f`f`f`f`f`f`f`f`f`f`f`k`c``ae`i`l`g`l`l`l`l`iaeag`c`m`e`c``aeak`i`i`i`l`l`l`i`i`l`l`l`i`l`i`i`i`i", +"`i`i`i`i`i`i`i`l`i`l`i`l`i`l`l`l`l`i`l`i`l`l`g`l`l`l`g`l`l`g`l`g`g`g`g`g`g`g`l`l`g`l`g`g`d`l`vai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`fab`tab`e`cagak`l`l`g`g`d`gae`d`l`l`l`d`g`g`d`d`d`l`g`d`g`g`d`g`galad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`tab`tabab`c```w`w`c`xad`f`f`f`q`t`t`t`t`t`tabab`eagak`i`g`g`d`g`g`g`g`d`g`g`g`d`g`d`vai`f`f`f`f`f`f`f`f`f`faf`f`f`a`t`t`tab`e`m``````a``n`f`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`tabab`e`e`ma``n`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`tab`k`y`wak`v`j`f`f`f`f`f`f`f`f`f`f`f`o`tab`t`t`t`tabab`m`yagakal`s`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`m``aeal`s`f`f`f`f`f`f`f`f`f`f`f`f`tabab`t`t`t`t`k`m`yaeak`l`g`g`g`g`lakag`y`m`kabab`tabab`e`m``agak`l`g`v`f`f`f`f`f`f`f`f`f`f`f`f`f`fac`m``agak`l`l`g`l`l`l`iakag```c`c`c`wakak`i`l`l`i`i`l`l`l`i`i`i`i`i`i`i`i`i", +"`i`i`i`l`i`i`i`l`i`i`l`l`i`i`i`l`l`l`l`l`l`l`l`l`l`l`l`g`l`g`g`l`g`g`g`g`g`g`g`g`l`l`l`g`l`vad`f`f`f`f`f`u`j`f`f`f`f`f`f`f`f`f`f`f`f`f`a`tab`k`m`wak`l`g`g`g`g`y`i`g`g`g`g`g`g`g`l`d`d`d`d`g`g`g`g`gag`vai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tabab`m```waeaeae`waead`f`f`f`q`tabab`t`tabab`e`maeak`l`g`g`g`g`g`g`g`g`d`d`d`g`d`g`vaf`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`tabab`e`c`y`y`w`vaf`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`tabab`eab`y`vaf`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`t`k`e`yag`v`s`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`t`tab`k`c`wak`i`v`n`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`e`cagak`v`n`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`tab`k`c``ak`i`l`g`g`d`l`gakae`w`c`e`k`k`k`k`e`m`yagak`i`l`g`l`n`f`f`f`f`f`f`f`f`f`f`f`f`f`faj`c``ae`i`l`l`l`l`l`i`iae`w`y`y``agak`i`i`i`l`l`l`i`i`i`i`l`i`l`i`i`i`i`i", +"`i`i`i`i`i`l`i`i`i`l`i`i`l`l`l`i`l`l`l`l`l`l`g`l`g`g`l`g`l`g`l`l`g`l`g`g`g`g`g`g`g`g`g`l`vad`f`f`f`f`f`t`pad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`tab`m`yae`i`g`g`g`d`y`g`l`l`g`iagae`g`d`gakak`g`lag`i`g`i```v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`tabab`m`yaeak`i`w`walad`f`f`f`o`k`k`kab`tab`k`m`cae`i`l`g`g`g`d`d`g`d`iagakag`gaeal`s`f`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`tab`e`c`y`y`x`s`f`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`tabab`k`k`b`s`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`t`t`k`m``ae`v`j`f`f`f`f`f`f`f`f`f`f`f`a`tab`t`t`t`tabab`m`yagak`l`vaf`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`tab`e``agal`v`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`t`k`e`y`wak`l`g`d`g`d`g`g`l`iag`w`y`c`m`m`m`c`yagae`i`g`g`g`g`vaf`f`f`f`f`f`f`f`f`f`f`f`f`f`faj`y`wae`i`l`l`l`l`i`iakae`w`w`waeak`i`i`l`l`i`l`l`l`l`l`i`l`i`i`l`i`l`i", +"`i`i`i`i`i`l`l`i`i`i`l`l`i`l`l`l`i`l`l`l`i`i`l`l`l`l`g`l`g`l`g`g`g`g`g`g`g`l`g`l`g`gal`vad`f`f`f`f`f`o`tag`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`tab`e`c`wak`l`d`dakak`g`l`g`l`wagag`w`g`gak`w`g`iagae`l`i`x`s`f`f`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`tab`k`m``ak`i`lag`y`lad`f`f`f`t`c`e`e`kabab`e`c`cak`l`l`l`g`l`g`g`g`d`i`y`w`w`yag`xad`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`tabab`k`c`y`v`n`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`tabab`k`ma``n`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`c`w`ra``f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`t`tab`k`c`wae`ial`s`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`c``aealad`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`c`yae`i`l`g`g`d`g`g`g`l`iakae`w`w`y`````wagakak`g`g`d`d`d`gad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`e``agae`i`l`l`g`l`i`iakaeaeaeak`i`i`l`l`l`l`l`l`i`i`i`i`i`i`i`i`i`i`i", +"`i`i`i`l`i`i`l`l`i`l`l`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`g`g`l`g`l`g`g`g`g`g`l`g`galad`f`f`f`f`f`o`tag`d`v`j`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`k`m`wae`l`g`gae`d`d`g`l`l```m`y`w`d`d`lag`l`d`gag`g`ga``n`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`tab`k`e`wak`i`l`g`laealad`f`f`f`tag`c`m`kab`k`m`y`yak`g`g`g```m`m`m`m```dagag`gae`g`vai`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`tabababab`c```vaf`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`tabab`e`y`vaf`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`tab`e`y`w`v`n`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`t`tab`e`yagak`l`v`n`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`e`c`wak`vai`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`tab`e`yagae`i`l`g`g`d`g`g`d`g`g`l`lakaeaeagagaeak`i`i`g`d`g`d`g`d`gai`f`f`f`f`f`f`f`f`f`f`f`f`f`faj`m``ag`i`i`i`l`l`l`i`i`iakak`i`i`l`l`l`l`i`l`l`l`l`i`l`i`l`i`i`l`i`i", +"`i`i`i`i`i`i`i`l`i`i`l`l`l`l`l`i`l`l`l`g`l`l`i`i`l`l`l`g`l`g`g`g`g`g`g`l`g`g`l`g`l`va`af`f`f`f`f`o`tag`g`l`i`n`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`k`e`yagak`g`gag`g`g`d`dagak`l`l`w`g`g`lag`l`d`gae`g`g`v`j`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`e`e`wak`i`l`l`gag`g`n`f`f`oabae`y`y`e`k`k`m`````i`g`g`d`g`l`l`g`g`g`gaeae`dag`g`v`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tabab`k`c`x`s`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`tab`k`e`x`s`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`t`t`k`e``ae`vaf`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`tab`k`c``ae`i`i`vaf`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`tab`e`yag`i`v`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`tabab`m`yae`l`i`l`g`g`g`g`g`g`d`g`g`l`l`l`iak`i`i`i`l`l`g`g`g`g`g`g`g`gaf`f`f`f`f`f`f`f`f`f`f`f`f`f`f`p`c`wagak`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`i`i`i`i`i`i`i`i`i`i`i`i`i", +"`i`i`i`i`i`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`g`g`g`g`g`g`g`g`va`af`f`f`f`f`q`t```g`l`iak`s`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`tab`e`y`wak`i`g`iag`g`d`g```g`d`i`y`g`g`g```l`lagag`d`l`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`tab`e`maeak`l`g`g`gag`g`saf`f`o`y`l`````m`e`e`c`w``alalal`g`g`g`g`g`l`g`lagag`gaealad`f`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`tabab`e`e`y`r`n`f`f`f`f`f`f`f`f`f`f`f`q`o`t`t`t`t`t`tab`k`ca``n`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`c``a``s`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`t`tab`e`y`wak`lal`s`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`t`k`m``ag`r`s`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`tab`k`c`wae`i`d`g`g`g`d`g`g`g`g`d`l`d`d`g`l`g`l`l`l`l`l`l`g`g`g`g`g`g`l`vaf`f`f`f`f`f`f`f`f`f`f`f`f`f`f`k`y`waeak`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`i`l`l`i`l`i`i`i`i`i", +"`i`i`i`i`i`i`l`i`i`i`l`l`l`l`l`l`l`l`l`g`g`g`g`g`l`l`l`l`l`l`g`g`g`l`g`l`g`g`l`va`af`f`f`f`f`q`t`m`l`i`l`i`b`b`j`f`f`f`f`f`f`f`f`f`f`f`f`f`p`t`t`k`c``aeak`g`g`y`g`d`d`l`m`mag`w`w`l`l`i`m`mak`makalad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`tababab`k`e`y`l`gae`c`m`c`m`y`m`t`k`e`e`k`k`e`m`k`k`ma`ah`j`n`g`d`d`g`l`gae`c```g`c`v`n`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`t`tab`c```v`j`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`t`t`k`e```vaf`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`tab`e`yag`r`n`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`m``ae`i`l`v`n`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`m`wae`vad`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`e`cag`i`i`l`d`g`g`g`d`g`d`l`g`g`d`d`d`l`g`g`l`g`g`g`l`g`g`g`g`g`d`d`lad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`m`y`wakak`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`i`i`i`i`l`i`i`i`i`i", +"`i`i`i`l`i`i`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`g`l`l`l`l`l`g`l`g`g`g`l`gala`af`f`f`f`f`q`t`m`l`l`iakag```y`n`f`f`f`f`f`f`f`f`f`f`f`f`f`a`tab`k`e``agak`l`lakak`g`g`g`g`d`g`g`g`d`d`g`g`g`g`g`g`vai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`e`c`wak`l`g`g`d`d`g`d`g`g`d`g`g`iae`w`c`m`c``aeala``j`f`f`m`l`d`g`d`g`g`g`g`g`g`vaf`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`e`uaea``f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`tab`k`c`x`s`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tabab`m`yag`v`j`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`tab`e`y`wak`l`la``f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`tab`e`yagakalai`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`e`yag`i`l`g`l`d`d`l`d`g`d`g`g`g`g`g`d`d`g`d`d`d`g`g`l`l`g`g`g`d`g`g`g`i`n`f`f`f`f`f`f`f`f`f`f`f`f`f`fab`m``agak`i`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`i`l`i`l`i`l`i`i", +"`i`i`i`i`l`l`i`l`i`l`i`l`l`l`l`l`g`l`l`g`g`l`l`g`l`g`l`g`l`g`l`l`l`g`l`g`lal`vai`f`f`f`f`f`t`m`g`lakakag```y`e`x`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`tab`e`yagak`i`l`l`d`g`d`g`d`d`g`g`g`d`g`g`d`l`g`g`l`vaf`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`e`yagak`l`g`g`d`g`d`d`d`d`d`g`g`iak`w`c`m`c`wak`vai`f`f`q`t`i`d`d`d`g`d`l`d`gala``f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`t`t`k`m`y`vad`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`t`t`k`e`y`r`n`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`c`wak`v`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`t`k`e``ag`i`l`vad`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`tab`k`m``ag`i`vai`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`tab`k`m`wae`i`d`g`l`g`g`d`d`d`g`g`g`g`g`g`d`d`d`d`d`g`d`g`d`g`l`l`l`g`g`g`g`g`l`j`f`f`f`f`f`f`f`f`f`f`f`f`f`o`e`m``agak`i`l`g`g`l`l`l`l`l`l`l`l`l`l`i`l`i`l`i`i`i`l`i`i`i`i", +"`i`i`i`l`i`i`i`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`g`g`gal`vai`f`f`f`f`f`tab`d`l`lakag```c`m`eah`j`f`f`f`f`f`f`f`f`f`f`f`f`f`o`tab`e`c`wae`i`l`g`l`g`g`g`g`g`g`d`d`d`d`g`d`g`d`g`l`s`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`tabab`m``ae`i`i`g`g`d`g`g`g`d`d`g`g`g`iae`w`y`c`yag`vad`f`f`f`o`e`g`g`g`g`l`g`l`g`galad`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`t`tab`e`c`w`v`j`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`tabab`k`c```v`j`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`tab`e`yag`r`s`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`m`wae`ial`vaf`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`t`t`k`m``ae`i`v`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`tab`e`c`wak`i`d`l`g`g`g`d`d`d`d`l`g`g`d`d`d`d`d`d`d`d`g`d`g`g`g`l`g`l`g`g`g`l`l`r`j`f`f`f`f`f`f`f`f`f`f`f`f`f`t`e`y`wae`i`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`i`i`l`i`l`i`i`i`i", +"`i`i`i`i`i`l`i`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`g`l`l`l`l`l`l`gal`vai`f`f`f`f`q`tab`i`g`lakae```y`m`e`e`cad`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t`t`k`m``ae`i`i`l`g`g`g`g`g`g`g`g`g`g`g`g`g`g`g`galad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`tab`k`m`wae`l`g`g`d`g`d`g`g`d`g`g`g`l`lak`w```y```ra`af`f`f`f`o```g`g`l`g`l`d`l`l`l`vai`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`m`y`xa``f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`t`o`p`e`z`xa``f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`t`t`k`e`yaealad`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`tab`e`yagak`ial`n`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`e`y`wak`g`v`f`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`tab`e`y`wak`l`g`g`l`g`g`g`g`d`g`d`g`d`d`d`g`g`g`d`d`d`vad`v`d`g`g`l`g`l`g`g`g`l`ia`af`f`f`f`f`f`f`f`f`f`f`f`f`t`k`m`yagak`i`l`l`l`l`g`l`l`l`l`l`l`i`l`i`l`l`l`i`l`i`l`i`i`i", +"`i`i`i`i`i`i`l`i`i`i`l`l`l`l`l`l`l`g`g`l`g`l`g`l`g`l`l`l`l`l`l`g`l`lal`vai`f`f`f`f`f`tab`i`l`i`iak`w`y`m`e`m`c```s`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`k`e``agak`g`l`l`g`g`g`g`d`g`g`g`g`g`l`g`g`l`g`vai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`e`y`wak`g`g`d`d`l`d`g`d`d`g`g`g`l`lakae`w``a``v`j`f`f`f`q`tak`g`g`g`i`i`l`i`gal`v`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`t`t`k`c`w`rad`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`tabab`e`c`w`rad`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`eab`k`c``ae`vad`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`t`k`m``ag`ial`vaf`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`tabab`e`yagak`l`v`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`tabab`m``ae`i`i`d`g`g`g`g`g`l`v`g`g`d`d`d`g`d`g`g`d`d`ga``f`f`n`g`g`g`g`l`g`g`g`g`l`iad`f`f`f`f`f`f`f`f`f`f`f`f`oab`k`m``agak`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`i`i`i`i`l`i", +"`i`i`l`i`i`i`l`i`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`g`g`l`g`l`g`l`l`g`l`v`n`f`f`f`f`f`oab`i`i`i`iae`w`y`m`e`e`c``ag`raf`f`f`f`f`f`f`f`f`f`f`f`f`f`o`tab`e`c`wak`i`g`g`l`g`g`l`g`g`g`g`g`d`l`g`g`l`l`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`e`yag`i`l`g`d`g`l`d`g`g`g`g`g`g`l`l`lakae`r`vai`f`f`f`f`aab`g`g`l`i`iakakak`lalad`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`t`tab`e`yae`vai`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`o`o`k`e`zag`vai`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`k`vadaa`y`wak`rai`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`tab`k`c``ae`i`vad`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`m`u`c`wae`i`l`v`f`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`k`m``akak`g`g`d`g`g`g`laladaf`s`d`d`d`g`d`g`g`g`d`gad`f`f`f`c`g`g`g`g`l`l`g`g`l`iak`n`f`f`f`f`f`f`f`f`f`f`f`q`t`k`e`y`wae`i`i`l`g`g`l`l`l`l`l`l`l`l`l`i`l`l`i`i`i`i`i`i`i", +"`i`i`i`i`i`i`i`i`i`i`l`l`l`l`l`l`l`l`l`l`g`l`l`g`l`g`g`g`g`g`l`l`l`vad`f`f`f`f`f`o`tag`l`iakae`w`y`c`m`e`c`yagak`r`n`f`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`k`m``ag`i`g`d`g`g`g`g`g`g`g`l`l`g`l`g`l`galad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`t`k`c``ae`i`l`d`g`g`g`g`d`g`g`l`g`g`l`l`i`i`r`vai`f`f`f`f`f`t`y`g`l`iakaeaeakak`lal`n`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`tab`k`m``ae`v`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`t`o`k`u``ae`vaf`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`ta``s`f`faaae`i`vai`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`tab`e`cagakala`af`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`tab`vadahagak`g`d`v`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`tab`k`c`wak`i`l`g`d`g`g`gala`af`f`f`h`d`d`g`g`g`g`d`d`lad`f`f`f`t`g`g`d`g`g`l`g`g`l`l`i`raf`f`f`f`f`f`f`f`f`f`f`a`t`t`k`m``agak`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`i`l`i`i`i`i", +"`i`i`i`i`i`l`i`l`i`l`l`l`l`l`l`l`l`l`g`l`l`l`g`l`g`g`g`l`g`g`g`l`vad`f`f`f`f`f`o`tag`l`i`iae`w`y`m`e`m`m```wak`l`lad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`tab`e`yagak`i`l`g`g`d`g`g`g`g`l`l`g`g`g`g`g`v`n`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`tab`k`c`wak`l`g`g`d`l`l`g`g`d`g`g`g`g`g`l`gal`vai`f`f`f`f`f`f`tak`l`iakae`w`wagak`i`v`j`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`tab`e`y`w`vad`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`tabab`eaa`w`ra``f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`z`vaf`f`f`o`y`ialai`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`k`e```w`r`v`n`f`f`j`f`f`f`f`f`f`f`f`f`f`t`t`t`t`ta`a``f`f`h`i`g`galaf`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`tab`k`cagak`i`g`g`d`d`gal`v`j`f`f`f`o`m`d`g`g`d`d`d`dal`n`f`f`f`o`i`g`l`g`g`g`g`g`l`l`iakad`f`f`f`f`f`f`f`f`f`f`q`t`tab`e`c`wae`i`l`l`l`g`l`l`l`l`l`l`l`l`l`i`i`l`i`i`i`l`i`i", +"`i`i`i`i`i`i`i`i`l`i`i`l`l`l`g`l`l`l`l`g`l`l`l`g`g`g`l`g`l`g`l`vad`f`f`f`f`f`a`tag`l`iakae`w`y`m`m`e`m```wae`i`g`l`v`f`f`f`f`f`f`f`f`f`f`f`f`f`fab`tab`k`c`wae`i`g`g`g`g`g`g`l`l`l`l`l`g`g`l`g`v`j`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`e`cag`i`i`l`l`g`g`g`g`g`d`g`g`g`g`g`g`v`vai`f`f`f`f`f`f`q`t`g`iakag`w`y`y`waeala``f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tabab`m`yag`vai`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tabab`m`yag`vad`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`k`v`n`f`f`a`t`w`ialai`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`tab`k`m``ae`vad`f`f`n`f`f`f`f`f`f`f`f`f`f`a`t`t`t`tah`vaf`f`f`o`c`l`g`lai`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`tab`e`y`w`i`g`g`g`g`dal`vai`f`f`f`q`t`w`g`g`d`g`g`g`dalai`f`f`f`aag`l`g`l`l`l`g`g`l`l`l`i`vaf`f`f`f`f`f`f`f`f`f`q`t`t`t`k`m``aeak`l`l`g`l`g`g`g`l`l`l`l`l`l`i`l`i`i`i`i`i`i`i", +"`i`i`i`i`i`i`i`i`i`i`l`l`l`l`l`l`l`l`l`l`l`g`l`l`g`l`g`l`g`i`vadaf`f`f`f`f`q`t`c`l`i`iae`w`y`c`e`e`m`y`wak`i`l`g`gal`j`f`f`f`f`f`f`f`f`f`f`f`f`f`q`tab`k`m``aeak`i`l`g`l`g`g`g`g`l`g`g`g`g`gala``f`f`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`tab`m`yag`i`l`g`g`l`l`d`d`g`w`cak`l`g`l`va`af`f`f`f`f`f`f`f`o`m`l`iae```y`c`y``aealad`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`c`wak`v`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`m``ae`r`n`f`f`f`f`f`f`f`f`f`f`f`o`t`tab`s`s`f`f`f`t`m`i`lalai`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`k`c`w`va`af`f`fad`f`f`f`f`f`f`f`f`f`f`a`t`t`t`u`vai`f`f`q`t```g`g`l`n`f`f`f`f`f`f`f`f`f`f`f`f`q`t`t`tab`e`cagak`l`g`g`d`g`vad`f`f`f`f`t`e`g`g`g`d`l`l`g`g`v`j`f`f`f`f`m`i`iakak`i`i`l`l`g`l`l`i`n`f`f`f`f`f`f`f`f`f`o`t`t`tab`e`y`wak`i`l`l`l`l`l`l`l`l`i`i`l`l`i`i`l`i`l`i`i`i`i", +"`i`i`i`i`l`i`l`iak`i`i`l`l`l`l`l`l`i`l`l`l`l`g`l`l`g`lak`l`vad`f`f`f`f`f`f`t`k`l`iakaeag```m`m`e`m`y`wae`i`l`g`g`dalai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`tab`e`yagak`i`l`g`d`l`g`g`g`g`l`l`l`g`gal`n`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`tab`k`m``ae`i`i`g`g`g`g`l`g`g`g`lag`l`v`vad`f`f`f`f`f`f`f`f`f`t`wakaeag`c`e`m`yagae`vai`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`tab`e`yag`v`s`f`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`t`tab`e`c`wak`vai`f`f`f`f`f`f`f`f`f`f`f`t`t`ta`a`af`f`f`o`tag`i`l`l`n`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`tab`e`y`va`af`f`fai`n`f`f`f`f`f`f`f`f`f`f`o`t`t`e`vad`f`f`f`t`e`l`g`d`d`s`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`tab`e`yag`i`l`d`gal`vad`f`f`f`f`oab`i`g`l`l`g`g`l`i`l`v`f`f`f`f`f`o`iakaeaeakak`l`l`g`l`l`l`s`f`f`f`f`f`f`f`f`f`t`t`t`tab`k`c`wae`i`l`l`l`g`l`l`i`l`l`l`l`i`i`l`i`i`i`i`i`i`i", +"`i`i`i`i`i`i`l`iak`i`l`l`l`iak`iak`g`l`l`lakak`i`l`l`ia``vad`f`f`f`f`f`f`q`t`iagakaeag`y`c`e`e`m`y`w`w`wae`g`d`dae`rad`f`f`f`f`f`f`f`f`f`f`f`f`f`faj`tab`e`c`wae`i`l`g`g`iaeakag`lag`i`g`g`l`v`j`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`tab`k`c`wae`l`l`iagag`g`g`l`l`g`l`v`v`s`j`f`f`f`f`f`f`f`f`f`q`t`w`w`w`y`eab`e`m`yak`v`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`e``ae`v`n`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`t`k`m`yagak`v`j`f`f`f`f`f`f`f`f`f`f`f`taba`a`af`f`f`a`t`yak`l`g`gad`f`f`f`f`f`f`f`f`f`f`f`faf`t`t`tab``a`a`af`f`f`a`vai`f`f`f`f`f`f`f`f`f`f`o`t`e`vad`f`f`f`oabag`l`g`l`galaf`f`f`f`f`f`f`f`f`f`f`f`faf`t`tab`e`yag`i`l`gal`vai`f`f`f`f`o`tag`g`g`l`i`iak`iak`l`v`f`f`f`f`faj`wae`wagagak`i`l`l`l`l`l`v`f`f`f`f`f`f`f`f`f`t`t`t`tab`k`m``agak`l`l`l`l`l`l`l`i`l`i`l`l`i`l`i`i`l`i`i`i`i", +"`i`i`i`i`i`i`i`i`i`l`i`l`lakakakag`l`l`iagakakagak`lal`vai`f`f`f`f`f`f`f`q`k`c``ae`w```c`e`e`m`c`wag`wag`wak`g`gaea`ad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`k`t`k`m``aeak`l`g`g`l```w`w`yag`y`g`g`v`s`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`tab`e`c`wak`i`gagagag`w`g`g`lal`v`s`j`f`f`f`f`f`f`f`f`f`f`f`pab```e`y`m`kab`k`c`w`v`s`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`c`wae`vaf`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`c``aeak`v`f`f`f`f`f`f`f`f`f`f`f`f`z`va`af`f`f`f`t`kag`i`l`gak`v`f`f`f`f`f`f`f`f`f`f`f`f`faiahah`v`vadaf`f`f`q`t`v`f`f`f`f`f`f`f`f`f`f`f`h`x`vad`f`f`f`o`t`y`i`l`g`l`lakad`f`f`f`f`f`f`f`f`f`f`f`f`faiaa`e`e`yae`ral`va``j`f`f`f`f`a`t```g`l`i`iaeagagaeakal`s`f`f`f`f`f`f`p`w```y``ae`i`l`l`l`l`i`v`f`f`f`f`f`f`f`f`o`t`t`t`t`tab`m`yaeak`l`l`l`l`g`l`l`l`i`l`i`l`i`i`i`i`i`i`i`i`i", +"`i`i`i`i`i`i`iak`i`l`i`l`laeak`l`g`l`laeakakaeak`w`va`ai`f`f`f`f`f`f`f`f`f`mak``ag```c`e`e`e`c``agae`y`c`wag`l`l`l`rad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`faf`pab`e`e`e`c`c`c`w`daeae`gag`lag`lal`v`j`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`tab`e`eae`i`g`w`c``agal`v`vad`j`f`f`f`f`f`f`f`f`f`f`f`f`f`t`m```y`c`e`k`k`c``ak`v`n`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`tab`e`yag`r`s`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`tab`k`cagak`i`v`f`f`f`f`f`f`f`f`f`f`f`f`fai`f`f`f`f`t`t``ae`i`l`lakaeai`f`f`f`f`f`f`f`f`f`f`f`f`f`faiai`f`f`f`f`f`t`e`v`f`f`f`f`f`f`f`f`f`f`f`fai`j`f`f`f`q`t`eak`i`l`l`iakaea`af`f`f`f`f`f`f`f`f`f`f`f`f`fafad`s`v`va`ad`j`f`f`f`f`f`q`t`m`l`l`g`iaeag`w``agae`rad`f`f`f`f`f`faf`y`c`c`y`wak`i`l`l`g`v`s`f`f`f`f`f`f`f`f`t`t`t`t`t`t`k`m`yagak`i`l`l`l`l`l`l`l`l`l`i`l`l`l`l`i`i`i`i`i`i", +"`i`i`i`i`i`i`i`i`i`l`l`i`l`l`lakae`i`laeakakak`r`v`saf`f`f`f`f`f`f`f`f`f`f`nae`````c`e`e`e`c``agak`w`i`g`iae`g`lal`v`j`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`faf`b`y`y`wae`i`g`g`gaeae`dag`lae`v`vai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`fafaa`e`t`tab`k`c``aeal`i`r`ral`va`adai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t`w`m`k`k`kab`k`y`wak`v`j`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`tab`k`m``ae`vad`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`t`k`m`yaeak`i`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`m`wak`i`iak`x`wad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`tab`i`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`tab`wakak`lakakae`wagad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`a`t`c`i`l`gakae`w```c`y``ae`vad`f`f`f`f`f`f`fac`m`m`c``ak`l`g`l`i`v`j`f`f`f`f`f`f`f`o`t`t`t`t`t`tab`e`yagak`i`l`l`l`l`l`l`l`l`i`l`i`i`i`i`i`l`l`i`i`i", +"`i`i`i`i`l`i`i`iak`l`i`lak`i`l`g`iak`l`iag`v`v`sai`f`f`f`f`f`f`f`f`f`f`f`f`f`jada``x`e`e`m``agak`i`w`gal`v`v`va`ad`j`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`jada``ral`l`g`gaeaeal`v`va`adaf`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`faf`nad`v`v`v`v`v`v`sadad`naiaf`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`aab`y`m`kabab`k`k`yag`ra``f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`t`t`k`c`wae`v`j`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`m`wak`i`lal`j`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`k`y`wak`iakag`w`````j`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`tae`gal`j`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t```wakak`iae`w`w```wagah`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t`m`d`g`iakaeag```c`c`y``ae`rai`f`f`f`f`f`f`f`f`n`c`m``ag`i`lal`vad`f`f`f`f`f`f`f`o`t`t`t`t`t`tab`k`m``agak`i`l`l`l`l`l`l`l`l`l`i`i`l`l`i`l`i`i`i`i`i", +"`i`i`i`i`i`i`i`iak`i`i`l`iakaeagak`l`g`lal`saf`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`faf`q`m`y`wak`l`lae`c`vaiaf`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`j`x`gak`yag`vai`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`oabababab`tabab`m`e`m`xad`f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`tab`e`y`w`ra``f`f`f`f`f`f`f`f`f`f`f`q`t`t`t`t`t`tab`e`c`w`i`i`g`l`n`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`tab`m`yagakakae`w```y`wadaf`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`w`g`g`g`n`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`e`yaeaeakaeag```y`y`waeak`n`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`o`t`m`g`l`gakakag```y`m`c`y`wae`vai`f`f`f`f`f`f`f`f`f`j`s`x`r`v`va``n`f`f`f`f`f`f`f`o`t`k`k`t`t`t`t`tab`m``ag`i`l`l`l`l`l`l`l`l`l`l`l`i`i`i`l`i`i`i`i`i`i", +"`i`i`i`i`l`i`l`i`i`i`i`i`l`i`l`l`l`l`l`l`lad`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`fab``ag`i`l`g`d`g`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`faj```d`d`d`v`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`k`kab`tabab`k`c`wak`vai`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`tab`k`m``ae`v`n`f`f`f`f`f`f`f`f`f`f`f`o`t`t`t`t`t`t`k`e``agak`i`g`galaf`f`f`f`f`f`f`f`f`f`f`f`q`o`t`t`k`m`yagaeae`w`y`y`y`wae`b`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`t`yak`i`i`i`raf`f`f`f`f`f`f`f`f`f`f`f`q`t`tab`m`yagagaeag`w`y`y```wak`i`i`z`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`t`t`w`l`l`i`iaeag```y`m`c`y`waeak`vaf`f`f`f`f`f`f`f`f`f`f`f`faiai`j`f`f`f`f`f`f`f`f`o`t`e`m`k`t`t`t`tab`k`c`waeak`l`l`l`l`l`l`l`l`i`i`l`l`i`l`i`i`l`i`i`i`i", +"`i`i`i`i`i`i`i`i`i`i`l`i`l`l`l`l`g`l`l`l`la``f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`t`wak`i`g`g`d`g`g`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`m`l`g`g`g`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`a`t`kab`t`t`t`k`e`yagae`l`f`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`m`wae`i`n`f`f`f`f`f`f`f`f`f`f`f`t`t`t`t`t`tab`k`m``ae`i`l`g`l`g`r`f`f`f`f`f`f`f`f`f`f`a`t`t`t`t`k`e`y`w`w`````y`y``agak`iah`f`f`f`f`f`f`f`f`f`f`f`f`a`t`t`c``agaeaeaeagah`f`f`f`f`f`f`f`f`f`f`o`t`t`tab`e`c`wag`w```y`y`y`wae`i`i`l`i```a`f`f`f`f`f`f`f`f`f`f`f`f`f`f`q`o`t`kae`i`lakakae`w```c`m`m`c``agak`l`v`f`f`f`f`o`o`oaj`f`f`f`f`f`f`f`f`f`f`f`f`f`f`a`tab`````m`kab`t`tabab`e`y`wae`i`l`l`l`l`l`l`l`l`l`l`i`i`l`l`i`l`i`i`i`i`i", +"`i`i`i`i`i`l`i`i`l`i`l`l`l`l`l`l`l`l`l`l`g`lag`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`wae`l`g`g`g`g`g`g`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`e`i`l`l`g`d`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`tab`t`t`tab`k`e``agak`l`l`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`tab`e`cagak`i`l`m`t`t`t`t`t`t`t`t`t`t`t`t`t`t`t`tab`k`c`wae`l`l`g`g`l`l`i`a`q`q`f`f`q`a`o`t`t`t`t`t`tab`e`c`c`y`y`c`c```wak`i`i`lak`a`q`f`f`f`f`f`f`q`o`t`t`t`k`m`c```w`w`````y`u`a`f`f`f`f`f`f`a`t`t`t`t`tab`e`m`y`y`y`c`c`y``aeak`i`l`l`lakae`e`o`q`f`f`f`f`f`f`f`f`q`a`o`tab``aeaeaeaeae`w```y`c`m`m`c``agakak`ial`f`f`f`tab```z`mab`o`q`f`f`f`f`f`f`f`f`q`o`t`t`cakae`w`m`k`t`t`tab`k`m``aeak`i`i`l`l`l`l`l`l`i`l`l`l`l`l`l`i`i`l`i`l`i`i", +"`i`i`i`i`i`i`l`i`i`l`l`i`l`l`l`l`g`l`g`l`l`g`l`g`l`l`l`l`i`iakaeag```y`m`kab`t`t`tab`k`m``aeak`i`l`l`g`g`g`g`g`g`g`g`l`l`i`iakaeag`c`eab`t`t`t`t`t`t`t`t`t`t`tab`e`c``agakak`i`l`i`g`l`g`g`g`l`g`gakakag```c`eab`t`t`t`t`t`t`t`t`t`t`tab`e`y`wak`i`i`l`g`l`l`l`i`lakakakakaeag`w`w```y`m`e`kabab`t`t`t`t`t`t`e`c`wae`i`l`l`g`g`l`l`lakag`y`mab`t`t`t`t`t`t`t`k`e`yag`i`l`g`g`g`g`g`l`iak```m`kab`t`t`t`t`t`tab`m`yagak`i`l`g`g`l`g`l`g`z`m`t`t`t`t`t`t`t`t`t`t`tabab`e`m`m`c`c`y`waeak`i`l`i`ial`cab`o`o`o`o`t`t`t`t`t`tab`k`e`m`c`c`c`m`c`caa`k`o`o`o`t`t`t`t`t`t`t`t`t`k`k`m`m`c`c`y``agak`i`l`l`g`l`iae`b`y`k`t`t`o`o`o`o`t`t`t`t`t`k`c`y`````w`````y`c`m`m`m`c``agae`i`l`l`i`x`o`oabak`iae```m`k`t`t`t`o`o`o`o`t`t`t`m```l`lakag`y`eabab`tab`k`e`y`waeak`i`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`i`i`i`i`i", +"`i`i`i`i`i`i`i`i`i`i`i`l`l`i`l`l`l`l`g`l`l`l`l`g`l`l`i`l`iakae`w```c`m`kabab`t`t`tab`k`e`y`wagaeak`i`l`l`g`g`g`g`g`l`l`iakaeaeag```c`kab`t`t`t`t`t`t`t`t`t`t`tabab`e`c`y`wagaeakak`l`i`l`l`l`l`lakakag`w`c`m`kab`t`t`t`t`t`t`t`t`t`t`tab`k`m```waeaeakakakakakaeakaeagag`w`w```y`c`m`e`k`kab`t`t`t`t`t`tabab`e`yagak`i`l`g`l`g`g`l`lakag`c`eabab`t`t`t`t`tab`k`m``ae`i`l`g`g`g`g`g`iakag```m`k`t`t`t`t`t`tab`k`m``ae`i`l`g`l`g`g`l`l`l`iakagaa`eab`t`t`t`t`t`t`t`tabab`e`e`m`y`wagak`i`l`g`g`iakae```cab`t`t`t`t`t`t`t`t`tabab`k`e`e`e`e`c`y``agag`u`e`kab`t`t`t`t`t`t`tabab`k`e`m`c`yagaeak`l`l`g`g`g`iakae``aa`eabab`t`t`t`t`t`t`tab`k`e`e`m`c`m`m`m`e`e`e`m`c``agaeak`i`l`g`g`i`wagae`l`iag```e`kab`tab`k`k`m`c`yak`i`i`i`l`iae`w`c`e`kababab`e`c``ae`i`i`i`l`l`l`l`l`l`g`l`l`l`i`l`l`i`i`l`i`l`i`i`i", +"`i`i`i`l`i`i`l`i`l`l`i`i`l`l`l`l`l`l`l`g`i`l`l`i`g`l`iakaeag`w`y`c`e`kabab`t`t`t`t`tab`k`m`y```wagak`i`l`g`g`g`g`l`iakaeagag```y`c`e`kab`t`t`t`t`t`t`t`t`t`t`t`tab`k`e`c`y```wagaeak`i`i`l`i`iakag`w`y`c`e`kab`t`t`t`t`t`t`t`t`t`t`t`t`t`k`e`m`y```w`wagagag`w`w`w`w```y`y`c`m`e`e`k`kabab`tab`t`t`t`t`t`t`k`m`yaeak`i`l`l`l`g`g`l`lak`w`c`eab`t`t`t`t`t`tab`e`c`wak`i`g`g`g`g`g`l`iakag`y`eabab`t`t`t`t`tab`k`c`wae`i`l`g`g`l`l`g`g`l`lakag```e`k`t`t`t`t`t`t`t`tabab`k`m`c``agak`i`l`g`i`g`l`lakag```m`kab`t`t`t`t`t`t`t`tababab`k`e`m`y``agaeaeag`y`e`k`t`t`t`t`t`t`tabab`k`e`c`y`waeak`i`l`g`g`g`g`g`iakae```c`eabab`t`t`t`t`t`t`t`tab`k`k`k`e`k`k`k`e`e`c``agakak`i`g`l`i`l`l`l`g`g`lakag`y`mababababab`e`u`y`wagaeaeakakae`w`y`m`kabab`k`e`c``agakak`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`i`i`i`i`i`i", +"`i`i`i`i`l`i`i`i`l`i`i`l`i`l`i`i`l`l`l`g`l`g`l`g`l`l`lakae`w`y`c`e`e`kababababababab`k`k`e`m`c`y`wagak`l`g`g`g`g`i`iakag`w`y`y`m`m`k`kababab`tab`tab`tabababababab`k`k`e`m`c`c```waeak`i`l`iakag```y`c`m`k`kabababab`tab`tab`tababababab`k`k`e`m`c`y`y`y`y`y`y`y`c`c`c`c`m`e`e`k`kababababababababababab`k`e`c`wae`i`g`g`l`g`l`l`l`iae`w`c`e`kabababababab`k`m`yagak`l`g`g`g`g`g`l`iae`w`y`e`kabababababab`k`m`yagak`i`l`g`l`g`l`g`g`g`l`iae```c`eab`t`t`t`t`tababab`e`m`c``agak`i`l`l`g`l`g`l`l`iae`w`y`e`kab`t`t`t`t`t`t`tabab`k`e`m`y`waeak`iakag`w`c`eab`t`t`t`t`t`tab`k`e`m`y`wakak`i`l`g`l`l`g`l`g`l`iaeag```c`m`kabab`t`t`t`t`t`t`tabababab`k`k`e`m`c``agae`i`lak`d`g`l`l`g`l`g`l`iakag`y`e`kabab`k`k`e`e`c`y```wagag`w```y`m`e`k`k`k`e`c``agae`i`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`i`l`l`i`i`l`i`i", +"`i`i`i`i`i`l`l`l`i`l`l`l`i`l`l`l`l`l`l`g`g`l`g`l`l`l`lakag```y`m`m`e`k`e`k`k`k`k`k`k`e`e`e`m`c`y```wae`i`l`g`g`l`l`iaeag```y`c`m`m`e`e`e`k`k`e`k`e`k`k`k`k`k`k`k`k`e`e`e`m`m`c`y``agak`i`i`iakag```y`m`m`m`e`e`e`k`k`e`k`e`k`e`k`k`k`e`k`e`e`m`m`c`c`c`c`c`c`c`c`c`m`m`m`m`m`m`e`e`e`e`e`k`k`k`k`k`e`k`e`e`m``agak`i`g`g`g`l`g`g`l`iae`w`c`m`e`k`k`k`k`k`e`m`c`waeak`l`g`g`g`d`l`l`iakag`y`m`e`e`k`k`k`e`e`m`c``aeak`l`l`l`l`g`l`l`g`g`l`iakag`y`m`e`kababab`kab`e`e`m`y`wae`i`i`g`l`g`l`g`i`g`i`iakag`w`y`m`k`kababababababab`k`e`m`y``aeak`i`l`iakag`y`m`eababababab`k`k`e`c```wae`i`l`l`i`g`g`g`g`g`l`l`l`iakag`w`y`m`e`k`kabababababababab`k`k`e`m`c`y`wagak`i`l`g`g`g`l`g`l`g`l`g`l`iakag`y`m`e`e`e`e`m`e`e`m`c`c`y`y`y`y`c`m`m`e`e`e`m`y``agae`i`i`l`i`l`l`l`i`l`l`l`l`i`i`l`l`l`l`l`i`i`l`i`i`i`i", +"`i`i`i`i`i`i`i`l`i`l`l`i`l`l`i`i`l`l`l`l`l`g`l`g`l`l`l`iae`w```y`c`c`c`c`c`c`c`c`c`c`c`c`y`c`y`y`wagak`i`l`g`g`g`l`iakag```y`y`y`c`c`c`c`c`c`c`c`c`c`c`c`c`c`c`c`c`c`c`c`y`y`y```wagak`i`i`iakag`w```y`y`c`c`c`c`y`c`c`c`c`c`c`c`c`m`c`c`c`c`c`c`y`y`y```y`y`y`y`y`y`y`c`c`y`c`m`c`c`c`c`c`c`c`m`c`c`c`y`y``agae`i`l`g`g`l`g`l`l`l`iakag```y`c`c`c`c`c`y`y`y``agak`i`l`g`g`g`g`l`l`lakae`w`y`c`c`c`c`c`c`c`y`wagak`l`l`l`l`l`g`l`l`g`l`l`iakae`w`y`c`m`e`e`e`e`m`c`y```waeak`l`l`g`g`d`d`g`g`l`l`i`iakag`w`y`m`m`e`k`k`k`k`e`e`m`c``agaeak`g`l`g`l`iak`w`y`m`e`k`k`k`k`e`m`y``agae`i`l`l`g`l`g`i`g`g`l`l`l`l`l`iakae`w```y`m`e`e`k`k`k`k`k`k`e`e`m`c`y``agaeak`i`i`g`l`g`g`l`g`l`g`g`g`l`iakag```c`c`c`c`y`y`y`c`c`c`c`c`c`c`y`c`m`m`m`c`y``agaeak`i`l`g`g`l`l`i`l`i`l`l`l`l`l`l`l`l`i`i`l`i`i`l`i`i`i`i", +"`i`i`i`i`i`l`i`l`i`l`l`l`l`l`l`l`i`l`l`l`g`g`g`l`g`l`i`iakaeag`w`w`w`w`w`w`w`wag`w`wag`wag`w`wagaeakakak`g`g`g`g`l`lakakaeagag`wag`w`wag`w`w`w`w`w`w`w`w`w`w`w`w`w`w`w`w`w`wagagaeae`i`i`l`iae`cagag`w`w`wag`w`w`w`w`w`m`c`w`w`wagag`w`w`w``ag`w`w`wag`w``ag`w`w`c`m```m`w`w`w`y`w`w`w`w`w`w```c`w`w`w`wagaeakak`l`l`l`g`g`g`l`l`i`lakae`m``agag`wag`w`wagagaeak`i`l`g`g`g`g`g`g`l`l`i`c`cagagag`w`w`w```cagaeakakak``ak``ak`l`l`l`g`g`l`l`i`iaeag`````y`c`y`y`````waeakak`i`l`l`g`g`g`g`gagag`g`g`g`iakaeag```y`c`m`c`c`c`y`y```wagak`i`w`yak`g`l`lakakag```y`c`m`c`c`y``agaeak`i`i`l`g`g`g`g`l`l`l`g`gak`y`l`g`i`iakaeag`````c`m`c`m`m`c`c`c`y`y`wagaeakak`l`l`l`g`g`g`g`g`g`l`l`l`l`g`lakag`w```````w`wag`w`w```y`y`y`y`y`c`y`y`y`y```wagaeak`i`i`l`g`l`l`g`l`g`g`i`l`l`l`l`i`i`l`l`l`i`l`i`i`i`i`l`i", +"`i`i`i`l`i`i`i`l`i`l`i`l`i`l`l`l`l`l`l`l`l`l`g`g`l`g`g`l`iakakakakakakakakaeakaeakakakak`iakakakak`i```i`l`g`g`l`l`l`i`iakakakakakakakakakakakaeakakakakakakakaeaeakaeakaeakaeakak`i`i`i`l`l`iagakakakakaeakakakakakae`eaeakakakaeakakak`yaeakaeakaeakag``akakak`w`m`w`eakakakak``akak`iakakak``akakakakak`i`i`g`l`g`d`g`l`g`g`g`l`l`l`iak`waeakakakakakagakak`i`l`l`g`g`g`g`g`g`l`l`i`iagakakak`iak`waeak`cag`i`l`l`e`l`eak`g`l`l`l`l`l`l`i`iakakaeagag`w`wagaeaeakak`i`i`l`g`g`g`l`g`l`g`gae`g`l`g`g`l`i`waeag`w```````w`wagaeakak`i`l`l`gae`g`g`g`l`iakaeag`w`w`w`wagagak`i`l`l`g`g`g`g`g`l`g`l`g`g`l`gae`l`l`l`l`i`iakaeagag```c```w```wagagagaeak`i`l`l`g`g`d`g`g`g`g`g`g`l`g`g`g`g`l`lakae`wagaeaeakakakaeaeagag`w`w```w`w`wagagaeaeak`i`l`l`l`l`l`g`l`g`l`i`g`l`l`l`i`l`l`i`i`l`i`l`l`i`l`i`i`i`i", +"`i`i`i`i`i`l`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`i`i`lak`iak`i`i`l`i`i`i`i`l`l`i`i`i`i`i`l`w`g`g`g`g`laeae`l`l`laeakakaeak`i`iaeakakaeag`l`i`i`l`iaeag`i`l`iaeaeaeaeak`l`l`l`lakae`iae`l`l`l`i`i`i`i`i`i`i`w```i`i`i`i`l`i`i`i```l`i`iak`i`i```i`i`i`iae`yak`m`i`i`i`i`w`i`i`l`i`l`iakag`i`i`i`i`l`l`d`l`l`g`gakak`iaeae`l`i`i`laeaeag`i`i`lak``aeagae`l`gaeakae`iakak`g`l`l`lae`i`i`i`l`gag`i`l`i`i`l`l`g`m`l`y`i`g`l`g`g`g`l`g`l`g`l`i`i`iakakakakak`i`i`l`i`g`l`l`g`l`l`g`g`g`gae`iae`i`l`lak``ag`w`waeaeagag`wagakag`i`i`g`l`gae`g`g`g`l`l`i`iakakae`wag`waeakag`g`l`g`gakae`i`g`g`l`iakae`lae`g`l`l`iaeae`lakakakak``aeaeakaeakakak`i`i`l`l`g`l`g`g`d`g`l`g`g`g`g`l`g`g`l`g`g`iakak`iak`i`i`i`i`i`iakakaeaeaeaeakaeak`iak`i`i`l`l`l`l`g`l`l`g`l`l`l`l`l`l`l`l`l`i`i`l`i`l`i`i`l`i`i`i`i`i", +"`i`i`i`i`i`i`i`l`i`l`l`l`l`l`l`l`l`l`g`g`g`l`g`g`g`g`g`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`g`g`g`l`l`g`lakak`g`g`l`laeaeaeag`g`lae```waeagag`lak`w``aeae```l`lae``aeag```i`lak``agaeagak`g`laeagae`w```i`l`l`l`l`l`l`l`l`l`w`i`l`l`l`l`l`l`gakak`l`i`l`l`i`lag`g`i`l`l`i`w`l`w`l`g`l`g`lag`l`g`g`g`g`lag`l`g`g`g`g`g`g`d`g`g`gak`w``aeae```l`l`l`yaeae```g`gak`waeaeak`g`gae`wae``aeagak`g`l`lae`g`g`g`l`gak``ae`i`g`g`g`l```g`w`l`g`i`g`l`g`l`g`g`g`l`l`i`i`l`i`l`i`l`i`l`l`l`g`l`g`g`g`l`g`l`g`g`wagaeae`i`g`i`wagagagak`iag`yag``aeaeag`l`g`g`gae`g`l`g`g`g`l`l`i`i`iae``ae``aeaeae`g`g`wagae`wae`l`gaeagae`w```g`lae`waeae```i`i`i`iaeae`i`i`i`i`l`l`l`l`g`g`g`g`g`l`g`g`g`g`l`g`g`g`l`g`g`l`l`l`i`i`l`i`l`l`g`l`l`l`i`i`i`i`iak`i`i`i`i`i`l`l`l`g`l`l`g`l`l`l`g`l`l`l`l`l`l`l`l`i`i`i`i`l`l`i`l`i`l`i`i`i", +"`i`i`i`l`i`i`i`l`i`l`i`l`l`l`l`l`l`l`l`l`l`l`g`g`g`l`l`g`d`l`l`d`g`l`g`l`g`l`g`g`l`g`g`g`l`g`g`g`gae`g`g`g`g`gag```wag`g`g`gag`g`g`gae`l`gag`l`l`l`iae`l`wakaeaeag`w`l`gae`g`g`lae`l`gag`g`g`lag`l`l`l`l`l`g`l`l`l`g`g`l`g`g`g`g`l`l`lae`l`l`g`l`l`l`lae`l`g`l`g`g`g`l`g`l`l`l`g`gag`l`l`g`l`g`l`iag`g`g`l`g`g`g`g`g`l`g`dag`l`g`l`iak`l`gae`g`gae`g`g`dae`l`g`g`g`g`g```gak`g`lak`l`g`gae`g`l`g`g`g`g`l`gagak`g`l`g`l`l`g`g`g`l`l`l`l`g`g`g`l`g`l`l`l`l`g`l`l`l`l`l`l`l`l`g`l`l`l`g`g`l`g`lak`g`l`lae`l`lae`g`l`i`l`l`l```lae`g`lak`l`g`l`lae`g`g`l`g``````````ak`l```lae`g`gak`gak`i`d`g`gae`g`lag`g`l`gag`g`g`wakaeakag`w`l`g`l`gae`l`l`l`l`l`l`l`g`g`l`g`g`g`g`g`g`l`g`g`l`g`l`g`l`l`g`g`l`l`i`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`i`l`l`l`g`g`l`g`l`g`g`l`g`l`l`g`l`l`l`l`l`l`l`i`l`i`i`i`i`i`i`i`i`i`i`i", +"`i`i`i`i`i`l`i`i`i`l`i`l`l`l`l`l`i`l`l`g`l`g`g`l`g`l`l`l`g`l`l`g`g`g`g`l`g`l`l`l`g`g`g`g`l`l`g`g`gae`g`g`g`lakak`g`gag`g`g`gag`g`g`lae`l`gag`g`g`l`iae`g``aeakaeae`i`l`lae`l`g`gae`g`gae`g`g`lak`g`l`l`g`l`l`g`g`l`g`g`g`g`g`g`l`g`g`lak`g`l`l`l`l`l`lae`g`g`l`g`l`g`l`g`l`l`l`l`g`i`w`g`g`g`g`g`l```g`g`g`g`d`g`g`g`l`g`gag`l`g`g`iae`g`gae`l`lae`g`g`gae`g`l`g`l`g`g```gae`g`lak`l`g`gae`g`g`g`g`g`i`l`g`iae`g`l`g`g`l`l`g`g`l`g`g`l`l`l`l`g`g`l`g`g`g`g`g`g`g`g`l`g`l`g`l`g`l`g`g`g`g`g`gae`g`l`gae`g`gae`g`i`l`l`l`l```lae`g`gae`l`g`l`lae`g`l`g`g`l`g`g`l`g`l`l```gae`g`dak`gae`l`g`g`lae`g`gae`g`l`gae`l`l``akaeakaeak`g`l`g`gae`g`g`g`g`g`g`g`g`g`g`g`l`g`g`g`g`g`g`g`l`g`l`g`g`l`l`g`g`l`g`g`l`l`g`l`g`g`l`g`l`g`g`g`l`g`l`l`l`l`l`g`l`l`g`l`g`l`g`l`l`l`l`l`l`l`l`l`l`i`l`i`l`l`l`i`l`l`i`i`i`i", +"`i`i`i`i`i`i`l`i`i`l`i`l`l`l`l`g`l`l`l`l`l`g`l`g`g`g`l`l`g`g`g`l`g`l`l`g`g`g`g`g`l`g`g`g`g`l`l`l`l`lae`g`g`gag`g`g`iag`l`l`g`y`i`l`iae`g`g`wag`g`l`w`l`lagag`l`g`l`i`l`gae`l`l`gae`g`g`w`l`gak```l`g`g`l`g`l`g`l`g`l`g`l`g`l`g`g`l`l`l`iak`g`l`l`l`l`lag`l`l`g`l`g`l`l`l`l`g`g`l`l`lag`g`l`g`g`g`gakak`g`g`g`gae`w`g`l`l`gagae`g`iag`g`l`lak`g`gae`g`g`dag`g`l`l`i`g`g`w`gae`g`lak`l`g`gae`g`l`g`l`g`wagagae`l`g`g`l`l`l`g`l`l`g`g`l`l`l`g`l`l`g`l`g`l`g`g`g`l`d`i``ak`g`l`l`g`l`g`l`g`l`g`gae`g`g`lae`l`gae`i`l`l`i`l`g```gae`g`lak`l`l`l`gae`l`l`l`l`g`g`g`g`g`g`g```gak`g`gak`g`g`w`i`gakae`g`g`w`i`gak```g`gagae`g`g`l`i`l`g`lag`g`g`g`g`l`l`g`l`l`l`l`g`g`g`g`g`g`l`g`g`l`g`g`l`l`l`g`l`l`g`l`l`l`g`l`l`i`g`l`g`g`g`g`g`l`d`g`g`g`g`l`l`g`g`l`g`g`l`g`g`l`g`l`l`l`l`l`l`l`l`i`l`i`i`l`i`i`i`i`i`i`i", +"`i`i`i`i`i`i`i`l`i`i`l`i`i`l`l`l`l`l`l`l`l`l`l`g`g`g`g`l`g`g`g`l`g`g`l`g`g`l`g`g`g`g`g`g`g`g`l`l`l`gag`g`l`g`l```waeaeae`l`lakag`wag`g`g`gakak`w`w`l`l`l`gak`w``ae`l`lae``ae`lae```l`g`gag``aeak`w`l`l`g`l`l`l`l`g`l`g`l`g`l`g`g`g`g`l`lag`l`g`l`l`l`lae`i`g`l`g`g`l`l`l`l`l`l`l`g`l`iag`l`g`g`g`g`g`w`l`g`g`gak`w`g`g`l`lakak``ag`i`l`g```w`g`i```w`g`g`i`w`w`wak`l`w```gaeak`g`w`lak```w```wak`g`g`g`gak`l`l`g`l`g`l`l`l`g`g`l`l`l`l`l`l`l`g`l`g`g`g`g`g`l`g`g`i`wak`g`l`l`l`g`l`g`g`l`lae```i`g`w`wak`g`gag````ae`lag```iakae`gagak`i```w````ae`l`l`l`l`g`g`g`gag`wakakag`lae`i`g`iag``ae`g`l`g`g`w`wagak`w`g`l`i`w`wak`l`l`l`lag`g`g`g`g`g`g`g`g`l`g`g`l`g`l`g`g`g`g`g`l`l`g`l`g`l`l`l`g`g`l`l`l`l`g`l`l`g`l`l`g`l`g`l`g`g`l`l`l`l`g`l`l`l`l`l`l`g`l`l`l`l`g`l`l`l`l`l`l`l`i`i`i`i`l`i`l`l`i`l`i`i`i", +"`i`i`i`i`i`i`i`l`i`i`l`l`i`l`l`l`l`g`l`l`l`g`l`l`g`g`g`g`l`l`l`g`l`g`g`g`l`g`g`l`g`g`g`g`l`l`l`l`g`lakak`g`g`g`l`l`g`l`l`g`lae`g`l`g`g`g`lak`g`l`g`g`g`l`l`l`l`g`l`l`l`l`g`l`g`l`l`g`l`g`g`l`g`g`l`l`g`l`l`l`g`l`l`g`g`g`l`l`l`l`g`l`g`lakak`l`l`l`l`l`lae`g`g`l`g`l`g`l`l`l`l`l`l`g`l`i`l`l`l`l`g`dak`l`l`g`l`l`g`g`g`g`lae`g`g`l`g`g`g`g`l`l`g`g`g`g`l`g`l`l`g`g`l`g`l`g`g`g`l`l`g`l`l`g`g`l`g`l`g`g`gak`g`g`l`g`g`l`l`l`l`l`g`l`l`l`g`g`l`g`l`l`l`l`g`g`l`g`l`l`l`l`l`g`l`l`l`l`l`g`g`l`l`l`l`l`l`g`l`g`l`l`l`l`l`l`g`l`g`l`l`g`g`l`l`l`l`g`l`l`g`l`g`l`l`l`l`g`g`g`l`l`g`g`l`g`g`g`g`l`l`l`g`l`g`g`g`g`g`g`l`g`l`g`l`l`g`l`laeak`g`l`l`g`g`l`l`g`l`l`g`l`l`g`l`g`g`l`g`g`g`g`g`g`l`l`l`l`l`g`l`l`l`l`g`l`g`l`g`l`g`g`g`l`g`g`l`l`g`l`l`l`l`g`l`g`g`l`g`l`l`l`l`l`l`l`l`i`l`i`l`i`l`i`l`i`i`l`i`i`i`i", +"`i`i`i`i`i`i`i`i`l`i`l`l`i`l`l`l`l`g`l`l`l`l`l`l`l`g`g`g`g`l`l`g`l`l`g`l`g`l`g`l`g`g`l`g`g`g`g`g`l`g`g`l`g`l`g`g`g`g`g`g`l`w``ag`l`g`l`gae```w`i`l`l`l`l`l`l`l`l`l`g`l`l`g`l`g`l`g`g`g`l`g`g`l`g`l`l`l`g`g`l`g`l`l`l`l`g`g`l`g`l`g`l`g`g`g`l`l`l`l`l`l`l`l`l`g`g`g`g`l`g`l`g`l`g`l`g`l`g`l`g`g`g`g`g`g`l`l`l`l`l`g`g`g`gae`````i`l`g`l`g`l`g`g`l`g`l`g`g`g`l`g`l`l`l`g`l`g`g`l`g`g`g`g`g`l`l`g`l`g`g`l`g`g`g`g`l`l`l`g`l`l`l`l`l`g`g`l`l`g`l`g`g`g`g`g`g`g`g`l`g`l`g`l`g`l`g`g`l`g`l`g`g`l`g`l`g`g`l`g`l`g`l`l`l`l`l`l`g`l`g`g`g`g`g`l`g`l`l`l`g`l`g`l`g`l`g`g`g`g`g`l`l`g`l`l`l`g`g`g`g`g`l`l`g`l`g`l`l`l`g`g`g`g`g`g`g`l`g`g`g`l`l`g`g`g`l`g`l`g`g`g`g`l`g`g`l`l`g`g`l`g`g`l`l`l`l`l`g`l`l`l`l`l`g`l`l`g`l`g`l`g`l`g`g`g`l`g`g`l`l`l`g`g`l`g`l`l`l`g`l`g`l`l`l`g`l`l`l`l`l`i`i`l`i`l`i`l`i`l`i`i`i`i`i", +"`i`i`l`i`i`l`i`l`i`i`i`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`g`g`g`g`l`l`g`l`g`l`g`l`g`g`l`g`g`l`l`l`l`g`l`l`l`g`l`g`l`g`l`g`l`g`l`g`l`l`l`g`g`l`g`l`l`l`g`l`g`g`l`l`l`l`l`g`g`l`l`l`g`g`l`l`l`g`l`l`l`l`l`g`l`l`l`g`l`l`g`l`g`l`g`g`l`g`l`l`g`l`l`g`l`g`l`l`l`l`g`g`l`g`g`g`g`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`g`g`g`l`l`g`l`l`g`g`g`g`g`l`l`g`l`g`l`g`l`g`g`g`g`l`g`l`l`g`g`l`l`g`l`l`g`g`g`l`g`l`g`g`l`l`l`g`g`l`g`l`l`g`l`l`g`l`l`l`l`l`l`l`g`l`l`g`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`g`l`l`l`l`g`g`g`l`g`l`g`l`l`g`g`g`l`g`l`l`l`l`l`g`l`g`g`g`g`l`l`l`l`l`l`l`l`l`g`l`l`g`g`g`g`l`l`l`l`l`l`g`d`g`g`l`l`l`l`g`g`g`l`l`g`l`g`l`g`l`l`l`g`l`l`l`l`g`l`g`g`l`g`g`l`g`l`l`l`l`g`g`g`l`g`l`g`g`l`g`l`l`l`l`l`l`g`g`l`l`g`l`g`g`l`g`l`l`l`l`l`g`g`l`l`l`g`l`l`l`g`l`g`l`g`g`l`l`l`l`l`l`l`l`l`l`i`l`i`i`i`l`i`l`l`i`i", +"`i`i`i`i`i`i`i`l`i`l`i`i`l`l`l`l`l`g`l`l`l`l`l`l`l`g`g`g`g`g`g`l`l`l`l`g`g`l`g`g`g`g`g`l`g`l`l`g`g`l`l`l`g`g`l`g`l`l`l`l`g`g`l`g`l`g`g`l`g`g`l`l`g`l`g`g`l`g`l`l`l`l`g`g`g`l`l`g`g`g`l`g`l`l`g`l`l`l`l`l`l`l`g`l`l`l`g`l`l`g`l`g`g`l`l`g`l`l`l`l`l`l`l`l`l`l`l`g`l`g`l`g`l`l`l`l`l`l`l`g`l`g`g`l`g`g`l`l`l`g`l`l`l`g`g`g`g`g`g`l`l`l`l`g`l`g`l`g`g`g`g`l`l`g`l`l`g`g`l`l`g`g`l`g`l`l`l`l`l`g`g`g`l`g`g`g`l`g`l`g`g`l`g`g`l`l`l`g`l`l`g`g`l`g`l`g`g`g`g`l`g`l`l`l`l`l`l`l`g`l`l`l`l`g`l`l`l`g`l`g`g`l`l`l`l`l`l`l`l`l`l`l`l`g`l`g`l`g`l`g`l`g`l`l`l`l`l`l`l`g`l`g`l`g`l`l`g`l`g`l`g`g`l`g`g`g`g`l`g`l`l`l`g`g`l`g`g`g`l`g`l`l`l`g`g`l`l`l`g`g`g`l`l`l`l`l`g`g`l`g`g`g`g`l`l`g`l`l`g`l`g`g`l`l`l`g`l`l`g`g`l`g`l`l`g`l`g`g`l`l`l`l`l`l`l`l`l`l`g`l`l`l`g`l`g`l`l`g`g`l`l`l`l`l`i`l`i`i`l`i`l`i`i`i`i`i`i`i", +"`i`i`i`l`i`i`l`i`i`l`i`l`i`l`l`l`l`l`l`l`l`g`g`l`l`l`l`l`g`g`g`l`g`l`g`l`g`l`g`l`g`g`g`l`l`g`l`l`g`g`g`l`l`l`g`l`g`l`g`l`i`g`g`g`g`g`g`l`l`g`l`g`l`l`g`l`g`l`g`l`l`l`g`l`l`g`l`l`g`l`g`l`g`g`l`g`l`g`l`l`l`l`l`l`l`l`l`g`g`l`l`g`g`g`l`l`l`l`l`g`l`l`l`l`l`l`g`l`g`l`g`l`g`g`l`g`l`l`l`l`l`g`l`l`l`g`l`l`g`l`g`l`l`l`l`l`g`g`g`l`g`g`l`g`g`l`g`g`g`l`g`l`l`l`g`l`g`g`l`l`l`l`g`l`g`l`g`l`l`l`g`g`g`g`g`l`l`g`l`l`l`l`l`g`g`g`l`l`l`l`g`l`g`l`l`l`g`g`l`g`l`g`g`g`l`g`l`l`l`l`g`l`l`l`l`g`g`l`g`l`g`g`l`l`l`l`l`l`g`l`l`l`l`l`l`l`g`g`l`g`l`l`g`l`l`g`l`l`l`g`l`l`l`g`l`l`g`g`l`l`l`l`l`l`g`g`g`l`l`g`l`g`g`l`g`g`g`g`g`l`g`l`g`l`g`g`g`l`l`l`g`g`g`l`l`l`l`g`g`g`l`g`g`l`g`l`g`l`l`l`l`g`g`l`g`l`l`l`g`l`g`l`l`g`g`g`l`l`g`g`g`l`l`g`l`l`l`l`l`l`l`l`l`g`l`l`g`l`l`l`l`l`i`l`l`l`l`l`i`i`i`i`l`l`i`l`i`i", +"`i`i`i`i`i`i`i`l`i`i`l`i`l`l`l`l`l`l`l`g`l`l`l`g`l`g`l`l`l`g`g`g`l`g`g`l`g`g`g`g`l`l`g`l`g`g`g`l`l`l`g`g`l`l`l`g`g`l`g`l`l`l`l`g`g`l`g`l`g`l`l`g`l`l`g`l`g`l`g`l`l`l`g`g`l`l`g`g`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`g`g`l`g`l`g`l`l`l`l`l`g`g`l`l`l`l`l`l`g`g`l`g`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`l`g`g`l`g`l`l`g`l`l`l`g`g`l`l`g`g`l`g`g`l`g`l`g`g`l`g`g`l`l`l`g`g`g`l`l`l`g`g`l`g`l`l`l`l`g`g`l`l`g`g`l`g`g`l`g`g`l`g`l`g`l`l`l`g`l`l`g`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`g`g`g`g`l`l`l`l`g`l`l`l`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`l`g`l`l`g`l`l`g`l`l`l`g`g`g`l`g`g`l`g`l`g`g`l`l`g`l`g`g`l`l`l`l`g`l`g`l`l`g`l`g`l`l`l`l`l`g`g`g`l`l`g`l`l`g`l`l`g`g`l`g`l`l`l`l`g`l`l`g`l`g`l`l`g`l`l`l`l`l`l`l`l`l`g`l`l`g`l`l`l`g`g`l`g`g`g`g`l`l`l`l`i`l`l`l`i`l`l`i`i`i`i`i`i`i", +"`i`i`i`i`i`i`i`l`i`l`i`l`i`l`i`l`l`g`l`l`l`l`g`l`l`l`l`l`l`g`l`g`l`l`g`l`l`l`g`g`l`g`l`l`l`g`l`l`l`l`l`l`g`g`l`g`l`l`g`l`l`l`l`l`l`g`g`g`l`l`g`l`g`l`l`l`g`l`g`l`l`l`l`g`l`g`l`l`g`g`l`l`l`l`g`l`l`l`l`l`l`l`g`l`g`l`g`l`l`l`g`l`g`g`l`l`l`g`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`g`l`l`l`g`g`l`l`l`l`l`l`g`g`l`l`g`l`l`g`g`g`l`l`g`l`l`g`g`l`l`l`l`l`g`g`g`l`l`l`g`g`l`l`l`l`l`g`g`l`l`l`g`l`l`l`l`g`l`l`g`l`l`l`l`g`g`l`l`l`g`g`l`l`l`g`l`l`l`l`l`l`l`l`l`l`g`l`g`l`l`l`l`g`l`g`l`l`l`l`l`g`l`l`l`l`l`g`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`g`g`l`l`l`l`l`l`g`g`l`l`g`l`l`g`g`l`g`g`l`l`l`g`g`l`g`l`l`l`l`g`l`g`l`g`g`l`l`l`l`l`l`g`g`g`l`l`g`l`g`l`l`g`l`l`g`l`l`l`l`g`g`l`l`l`g`l`l`l`l`g`g`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`g`l`l`l`l`i`l`l`i`l`i`l`i`i`l`l`i`l`i`i`i", +"`i`i`i`i`l`i`i`i`i`i`i`l`l`l`l`l`l`l`g`l`l`l`l`g`l`l`l`l`l`l`g`l`g`g`l`g`g`l`l`g`l`l`g`g`l`l`g`g`g`l`l`l`g`g`l`g`l`g`l`g`g`l`l`g`l`l`g`g`g`l`l`l`g`l`l`l`l`l`g`g`l`l`l`g`l`l`g`l`l`l`l`l`g`l`l`l`l`g`l`l`l`i`l`l`l`l`l`g`l`l`l`g`l`g`g`l`i`l`l`l`l`l`l`l`l`l`l`g`i`l`l`l`l`l`lak`l`i`l`l`l`g`l`g`g`g`l`g`l`l`l`l`l`l`l`l`l`l`g`l`g`g`g`l`g`l`l`l`g`l`l`g`l`l`g`g`g`l`l`l`g`l`g`l`g`l`l`g`i`l`g`l`l`g`g`g`g`l`l`l`g`l`l`l`l`g`l`g`l`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`g`l`l`l`g`l`g`g`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`l`l`g`l`l`l`l`l`l`l`l`g`l`g`g`g`l`g`l`l`l`l`l`l`l`l`l`l`l`g`g`g`l`g`l`g`l`l`l`l`g`g`l`l`g`l`g`l`g`l`g`g`l`l`g`l`l`g`l`g`l`g`l`l`g`g`g`l`l`l`g`l`l`l`l`g`l`g`l`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`g`l`g`l`l`l`g`l`g`i`l`l`l`i`i`i`l`i`i`i`l`i`l`i`i`i", +"`i`i`l`i`i`i`i`l`l`i`l`i`i`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`g`g`g`g`l`g`g`l`l`g`l`l`l`l`l`l`l`l`g`l`g`l`l`g`l`g`l`l`l`g`g`l`l`g`l`l`l`l`g`g`l`i`g`l`l`l`l`l`l`g`g`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`lak`l`i`iagaeaeae`l`l`lag`g`g`l`l`l`lae`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`iag`l`g`g`l`g`g`l`g`g`l`l`l`l`l`l`l`l`l`l`g`l`iagak`l`g`l`g`l`lae`i`l`l`l`laeag`iag`g`l`l`l`l`l`i`l`l`l`g`g`l`l`l`g`l`g`l`g`l`l`l`l`l`l`l`l`l`l`l`lagak`l`l`l`l`g`l`l`l`l`l`l`i`l`l`l`i`l`l`l`l`lagag`l`l`g`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`lakae`l`l`g`g`l`g`l`g`l`gak`l`l`l`l`l`lak`g`l`l`g`l`g`g`l`g`l`l`g`g`l`l`g`l`l`l`l`g`g`l`l`l`l`l`i`l`l`l`g`g`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`i`i`l`l`i`l`l`i`l`l`i`i`i`i`i`l`i", +"`i`i`i`i`i`l`i`i`i`i`l`i`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`g`l`l`g`l`l`l`l`l`l`l`g`l`l`l`l`g`l`g`l`g`l`g`l`g`l`l`g`l`l`g`l`l`g`l`g`g`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`g`l`g`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`lae`i`l`l`lagaeagag`l`l`l`i`i`l`l`l`g`l`lae`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`iak`l`l`l`g`l`g`lak`l`g`l`l`g`l`l`l`l`l`l`l`l`l`lak`l`g`g`l`lae`l`l`w`l`g`lak`wak```l`l`g`l`l`l`l`l`l`l`l`g`l`g`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`lak`l`l`l`i`l`lak`g`l`g`l`l`l`l`l`l`l`l`l`l`i`lak`l`l`g`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`lak`g`l`g`g`l`g`l`g`l`lae`l`l`l`g`l`l`iak`l`g`l`l`l`l`g`l`g`l`l`l`g`l`l`l`g`l`g`g`l`l`g`l`l`l`l`l`l`l`l`g`l`g`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`i`l`i`i`l`i`i`i`l`i`l`i`i`i`i", +"`ial`l`i`i`i`l`l`l`i`l`i`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`g`g`l`l`g`l`l`l`l`l`l`l`l`g`l`l`l`l`l`g`l`l`l`l`l`g`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`i`l`i`l`i`l`l`l`l`i`l`l`l`l`l`l`l`l`l`g`l`lag`l`l`i`lagakaeae`l`l`l`lae`l`l`l`l`l`lae`i`l`l`l`l`l`l`l`l`l`l`l`l`lakak`i`l`l`lak`lak`i`g`l`lakaeakak`i`l`iak`iak`lak`i`g`l`l`gak`l`i`l`g`gak`l`l`i`g`l`lakag`i`w`l`l`g`l`l`l`l`l`l`l`l`l`g`l`g`l`l`g`l`g`l`l`l`i`l`i`i`i`l`l`l`l`lakakak`l`l`lakaeakakak`l`lakakak`iakak`l`l`l`lak`l`l`l`l`l`l`l`l`l`l`iakakak`i`iak`l`l`l`lakak`l`l`l`l`lakak`lak`l`g`l`iak`i`l`l`g`g`lae`l`l`l`l`l`lae`l`g`l`g`l`l`l`g`l`l`l`l`l`g`l`l`l`g`l`l`l`l`g`l`l`l`l`l`g`l`l`l`g`l`g`l`l`l`l`g`l`l`l`i`l`i`i`i`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`g`l`l`i`l`i`l`l`i`l`i`l`i`i`i`i`l`i`i", +"`i`i`i`i`l`i`i`i`i`i`l`i`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`g`l`l`l`l`l`g`l`g`l`l`l`l`l`l`g`l`l`l`l`g`l`l`l`l`l`g`l`l`l`l`g`l`g`g`g`l`g`l`l`l`l`l`l`l`l`l`g`l`g`l`g`l`l`l`g`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`iak`l`l`i`lae`iakak`l`l`g`l`i`i`l`l`l`l`l`lae`l`l`l`l`l`l`l`l`l`l`l`iagakakaeak`l`lakaeakakak`l`lakaeakak`l`g`iaeaeakaeakae`l`l`l`lak`g`l`l`i`lakaeak`l`l`l`g`lae`lae`g`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`wakakae`l`lakaeakak`i`l`lakagakagakakak`l`i`lak`l`g`l`l`g`l`i`l`l`l`lakagakagakakak`l`iagakakae`i`l`laeakakagae`l`gaeaeakaeae`l`l`g`gak`l`l`l`l`l`g`iak`l`l`l`g`l`i`l`l`g`l`l`g`l`g`l`l`g`l`g`l`l`l`l`l`l`l`i`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`i`l`i`l`l`l`l`l`i`i`l`i`l`i`i`l`l`i`i`i`i`i", +"`i`i`i`i`i`i`i`l`l`i`l`l`i`l`l`l`i`i`l`l`l`l`l`i`l`l`l`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`g`l`l`l`g`l`l`l`l`l`l`l`l`l`i`l`l`i`l`l`l`l`l`l`l`l`i`l`i`l`l`l`l`lak`l`l`i`l`i`l`l`l`l`l`l`l`l`lae`l`l`l`l`l`lak`i`l`l`l`i`l`l`i`l`l`lakakakakakag`g`lak`g`l`lak`l`l`lak`l`l`l`l`gakak`lak`lak`l`l`l`lak`l`l`l`l`l`l`l`lae`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`g`l`l`l`g`l`l`l`l`l`l`i`l`l`l`l`l`l`lak`l`lak`i`l`lak`i`l`l`l`l`lag`iak`i`lak`l`l`lak`l`l`l`l`iagaeagagag`l`lag`lak`l`lak`lak`l`l`l`iak`lak`i`l`l`gak`l`iaeakakakag`i`l`l`lak`l`g`l`l`l`l`lak`l`l`l`l`l`l`l`l`l`g`l`l`l`g`l`l`l`g`l`l`l`l`l`l`l`l`l`l`g`l`g`l`l`g`g`l`l`g`l`l`l`l`l`l`i`l`l`i`l`l`l`l`l`l`l`l`i`l`i`l`l`l`l`l`l`l`l`i`l`i`i`i`i`i`i`i`i`l`i`i`i", +"`i`i`i`i`i`l`i`i`l`i`l`l`l`l`i`l`l`l`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`g`l`g`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`i`l`l`l`l`i`l`l`l`i`l`i`l`l`l`l`lak`l`l`l`l`i`i`i`l`i`l`i`l`l`lak`i`l`l`l`l`l`iae`l`l`l`l`i`l`l`l`i`laeakakakakak`l`lak`l`l`gak`l`l`lak`l`l`l`l`lakak`gak`lak`l`l`l`lak`l`l`l`lak`l`l`lak`l`g`l`g`l`g`l`l`l`l`l`l`l`l`l`l`g`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`i`l`i`l`i`l`l`lak`l`lak`l`i`lak`l`l`l`l`l`lae`lak`i`lak`i`l`lak`l`l`l`l`l`l`l`l`l`l`l`lae`lak`l`iak`lak`l`i`l`lak`lak`l`l`l`lak`g`iaeakakakak`i`l`l`lak`l`l`l`l`l`l`lak`l`l`l`l`l`l`l`i`l`l`l`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`i`l`l`l`l`i`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`i`l`i`i`i`i`i`i", +"`i`i`i`l`i`i`i`l`i`i`l`i`l`i`l`l`i`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`i`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`i`l`i`l`l`l`l`l`l`g`l`l`g`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`i`l`l`l`l`i`l`l`l`i`l`l`l`l`l`l`l`l`l`l`iak`i`l`i`l`l`l`i`l`l`l`l`l`l`iak`l`l`l`i`i`lak`l`l`l`i`laeae`i`l`i`iae`i`l`l`i`g`lak`l`l`lak`i`i`lak`l`l`l`l`lakak`l`i`lak`l`l`l`lak`l`l`i`lakakaeakak`g`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`g`l`l`l`lakae`l`l`i`l`l`i`l`l`l`l`l`lak`l`lak`i`l`iak`l`i`l`i`l`lag`lak`l`iak`i`l`lak`l`l`l`l`l`l`l`l`l`l`l`lae`lak`l`lak`lakak`i`lae`i`l`lae`l`lakae`i`lag`i`l`l`i`l`l`l`lak`l`l`l`l`l`lak`l`l`l`l`l`l`i`l`i`l`i`l`l`g`l`l`l`l`g`l`l`l`l`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`i`l`l`l`l`l`l`l`i`l`l`l`l`l`i`l`l`l`l`l`l`i`l`i`l`i`l`i`l`i`l`i`l`i`l`i", +"`i`i`i`i`i`i`i`l`l`i`l`l`l`l`l`l`l`l`l`i`l`l`l`i`l`l`l`l`l`l`l`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`i`l`l`i`l`l`l`l`g`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`g`l`l`l`l`l`l`i`l`l`i`i`i`i`l`i`l`l`l`i`l`i`l`l`i`i`l`l`l`l`lak`l`l`l`i`i`l`l`i`l`i`l`l`l`iak`i`i`l`l`l`l`iak`l`l`l`laeak`g`l`l`l`iaeaeak`i`l`iaeak`iakaeak`l`lakaeaeak`i`iaeak`lae`l`iak`laeaeaeaeae`l`l`i`lak`l`l`l`l`g`l`g`l`l`l`l`l`l`l`l`l`l`i`l`l`l`i`l`l`l`l`l`lakae`l`l`l`i`i`i`l`i`i`l`laeae`i`iaeae`l`i`iaeaeae`i`laeae`lakak`lae`lakaeaeaeae`i`l`l`l`l`l`l`l`laeae`lak`i`lae`l`l`iaeae`i`i`i`l`iaeae`iakak`l`lakaeae`i`l`l`l`iak`l`l`l`l`l`lae`l`l`i`l`l`l`i`l`l`i`l`l`i`l`l`g`l`l`l`l`l`l`g`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`i`i`i`i`i`l`l`l`i`l`i`i`l`l`i`l`l`l`l`l`l`l`l`l`l`i`l`i`l`i`i`i`i`i`i`i", +"`i`i`i`l`i`i`l`i`i`l`i`l`l`i`l`l`l`l`i`l`i`i`i`l`i`i`l`l`l`l`i`l`i`l`i`i`l`i`l`i`l`l`l`l`l`l`l`l`l`l`l`i`i`i`l`l`l`l`i`i`i`i`l`l`i`g`l`l`l`l`l`l`l`l`l`l`i`l`i`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`i`l`l`l`l`i`l`i`i`i`l`i`l`i`l`l`l`l`i`l`l`l`i`i`l`l`l`l`l`l`l`i`l`l`i`l`l`l`i`l`l`l`l`l`lak`l`l`l`l`l`l`i`i`i`i`l`l`i`i`i`l`i`l`i`l`i`l`i`i`l`l`l`l`i`l`l`l`l`l`i`l`i`i`l`l`l`l`l`l`i`l`i`i`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`l`l`l`i`l`i`i`i`l`i`l`i`i`l`l`l`i`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`i`l`i`i`i`l`l`i`l`l`i`l`i`l`i`i`i`l`l`l`i`l`i`l`i`l`i`l`l`l`l`i`i`l`i`i`i`i`l`i`i`l`lae`l`l`l`l`l`lak`i`l`i`l`i`l`l`l`i`i`i`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`l`i`l`l`l`i`l`l`l`l`l`l`l`i`l`l`i`l`l`i`l`l`l`l`i`i`i`l`i`l`i`l`i`l`l`l`i`l`l`l`l`l`l`l`i`l`l`i`l`i`l`i`i`i`i", +"`i`i`i`i`i`i`l`i`l`i`l`i`l`i`i`l`l`l`l`l`l`l`i`l`l`i`l`i`l`l`i`l`l`l`i`l`l`i`l`i`i`l`l`l`l`l`i`l`i`l`i`l`l`l`i`l`i`l`l`l`l`i`l`l`i`l`l`l`l`l`l`i`l`l`i`l`l`l`l`i`l`i`l`i`i`l`l`l`l`l`l`l`i`l`i`i`i`i`l`i`l`i`l`i`l`i`l`i`i`i`l`l`i`l`i`l`i`l`l`l`l`l`l`l`l`l`i`l`i`i`i`i`l`i`i`l`i`l`l`l`i`i`l`l`l`l`l`l`l`i`i`l`l`l`i`l`l`l`i`l`l`l`i`l`i`i`i`l`i`l`l`i`l`l`l`l`l`i`i`i`i`l`l`l`l`i`l`i`i`i`l`l`l`i`l`l`l`l`i`l`l`i`i`l`l`l`l`i`l`i`l`l`l`l`l`l`l`l`l`l`i`i`l`i`i`i`l`l`l`i`l`i`l`l`i`i`l`l`l`i`l`l`l`l`l`l`l`l`l`i`l`i`l`l`i`l`l`l`i`l`l`i`i`l`l`i`l`i`l`i`l`l`l`i`l`i`l`i`l`l`i`l`i`i`l`l`i`l`l`l`l`i`l`l`i`i`l`l`l`l`l`l`l`i`i`i`l`i`l`l`l`l`i`l`l`i`l`i`l`l`i`l`l`l`l`l`i`i`l`l`l`i`l`l`l`i`l`l`l`l`l`l`l`l`l`l`l`i`l`i`i`l`i`i`i`i`l`i`l`i`l`i`l`i`l`i`l`i`l`l`i`l`l`l`l`i`l`l`i`l`i`l`i`i`i`i`i`i", +"`i`i`i`i`l`i`i`l`i`l`i`l`l`l`l`i`l`i`i`i`i`i`l`i`l`l`l`l`l`i`l`i`l`i`l`i`i`l`l`l`l`i`l`i`l`i`l`i`l`i`l`i`l`i`l`l`i`l`i`i`i`l`i`i`l`i`l`l`l`i`i`l`l`i`l`l`i`l`l`l`l`l`l`l`l`l`l`l`l`l`l`i`l`i`i`l`i`l`i`l`i`l`i`l`i`l`i`l`l`l`l`i`l`i`l`i`l`l`i`i`i`i`l`i`i`i`l`l`l`l`i`l`l`i`l`l`i`l`i`l`l`i`l`i`l`i`i`i`i`l`l`l`i`l`l`l`l`i`l`i`l`i`l`i`l`l`l`l`l`i`l`l`i`i`i`l`i`l`l`l`l`i`l`l`i`l`i`l`i`i`i`i`l`i`l`l`l`i`l`i`l`l`l`l`i`l`l`l`l`l`i`l`l`l`l`l`l`l`l`l`i`l`i`i`l`i`i`l`i`l`i`l`i`i`l`l`i`i`l`i`l`i`i`l`l`l`i`l`i`l`i`l`i`l`l`l`i`l`i`i`l`i`l`l`i`l`l`l`l`l`i`i`l`i`l`i`l`i`l`i`l`l`l`l`l`i`l`i`l`i`l`i`l`i`l`l`i`i`l`l`i`i`i`l`l`i`l`i`i`i`l`l`l`i`l`i`i`l`i`i`i`l`i`l`l`i`l`i`l`l`l`l`l`l`l`l`l`i`l`l`l`i`l`l`l`l`i`l`i`l`l`i`i`l`l`l`l`i`l`i`l`l`i`l`i`l`l`i`l`i`l`i`l`i`i`l`i`l`l`i`l`l`i`l`l`i`i`i", +"`i`i`i`i`i`i`i`i`l`i`i`i`i`i`l`i`i`l`l`l`l`i`l`i`i`i`i`i`l`i`l`i`l`i`l`l`i`i`l`i`l`i`l`i`l`l`l`i`l`i`i`i`i`i`i`l`i`l`l`i`i`i`l`i`l`i`i`i`l`l`i`l`l`i`l`l`i`i`l`i`l`l`l`l`i`l`i`l`i`i`l`l`l`l`i`l`i`l`i`l`i`l`i`l`i`l`i`i`i`i`l`i`l`l`l`l`i`i`l`l`l`l`l`l`l`l`i`i`l`i`i`i`l`i`i`l`i`l`i`l`i`i`l`i`l`l`l`l`i`i`i`l`i`i`i`i`l`i`l`i`l`i`l`i`i`i`i`l`l`i`l`l`l`l`i`l`i`i`i`i`i`i`i`l`i`l`l`i`i`l`i`i`l`i`l`i`i`l`l`i`l`i`i`l`i`l`l`i`l`l`l`l`i`l`i`l`i`i`l`i`l`l`i`l`i`l`i`i`l`l`i`i`l`i`i`l`l`i`l`i`l`l`i`l`i`i`i`l`l`l`l`l`i`l`i`l`i`l`i`l`i`l`i`l`i`i`i`i`i`i`l`l`i`l`l`i`l`i`l`i`i`i`l`i`l`i`l`i`l`i`l`i`l`i`l`l`l`i`l`i`l`l`l`i`i`i`i`l`i`i`l`i`i`l`i`l`i`l`i`l`i`l`i`i`l`l`i`l`i`i`l`i`i`l`l`i`l`l`l`l`l`i`l`i`l`l`l`l`i`l`i`l`i`i`i`i`l`i`l`i`i`l`i`l`i`i`l`i`l`l`l`l`i`l`i`l`l`i`l`l`i`i`i`i`i`i`i`i", +"`i`i`i`i`l`i`i`l`i`l`i`l`i`l`i`i`l`i`l`i`i`l`i`l`i`l`l`l`i`l`i`i`i`l`i`i`l`l`i`l`i`l`l`l`i`i`i`l`i`i`i`l`i`l`i`l`l`i`i`i`l`i`i`i`i`i`l`i`i`i`l`i`i`l`i`i`l`l`i`i`i`l`l`l`i`l`l`i`l`l`i`i`i`i`l`i`l`i`l`i`i`l`l`i`i`i`l`l`i`l`i`l`l`i`i`l`i`i`i`i`i`i`i`l`l`i`l`l`i`l`l`l`i`i`l`i`l`i`i`i`i`l`i`i`i`i`l`i`l`l`l`i`l`l`l`l`i`l`i`l`i`l`i`l`l`l`l`i`i`l`i`i`l`i`l`i`l`i`i`l`i`l`i`l`i`i`l`i`i`l`i`i`l`i`i`l`i`i`l`l`i`l`l`i`l`i`i`i`i`l`l`l`i`l`l`i`l`i`l`i`l`i`l`i`l`i`l`i`i`i`l`l`i`l`i`i`i`l`i`l`l`i`l`l`i`l`i`i`i`l`i`l`l`i`l`i`l`i`i`i`l`i`i`i`l`l`i`l`i`l`i`i`i`l`i`l`i`l`i`l`i`l`i`l`i`l`i`i`i`l`i`l`i`l`l`i`i`l`l`i`l`l`i`l`l`i`i`l`i`i`i`l`i`l`i`i`i`i`i`i`l`i`l`i`i`i`l`l`i`l`i`l`l`i`i`i`i`l`i`l`i`l`i`l`i`i`i`i`l`i`l`i`i`l`l`i`i`l`i`l`i`l`i`i`l`l`i`l`i`i`i`l`i`i`i`i`i`l`i`l`l`l`l`i`l`i`i`i", +"`i`i`i`i`i`i`i`l`i`i`i`l`i`l`i`i`l`i`l`l`i`l`i`l`i`l`i`l`i`l`l`i`l`i`l`i`l`i`l`l`i`i`i`l`l`l`i`l`l`i`i`l`i`i`i`i`l`i`l`i`i`i`l`i`l`i`l`i`l`i`i`l`i`l`i`i`i`l`i`i`i`i`i`l`i`l`i`l`i`l`l`l`i`i`l`i`l`i`i`l`i`i`i`l`l`i`i`i`i`l`i`i`i`l`i`l`i`l`i`l`l`i`l`i`l`i`l`i`l`i`i`i`i`i`i`i`i`l`l`i`i`l`i`l`i`i`l`i`l`i`i`i`i`i`i`l`i`l`i`i`l`i`i`i`l`i`l`l`i`l`l`i`l`i`l`i`l`i`i`i`i`l`i`i`l`i`l`i`l`i`i`i`l`i`i`i`l`i`i`l`i`i`i`i`l`i`i`i`i`i`i`l`i`l`i`l`i`l`i`l`i`l`i`l`i`l`i`l`l`i`i`i`i`l`i`l`i`i`i`i`i`i`i`l`i`i`l`i`i`l`i`l`i`l`l`i`l`l`l`i`i`l`i`i`i`i`l`i`i`i`i`l`i`i`l`l`i`l`l`i`l`l`i`l`i`l`l`i`l`i`i`l`i`i`l`l`i`i`l`i`l`i`l`i`i`i`l`i`l`i`i`l`i`i`l`i`l`i`i`l`i`l`i`i`l`i`i`l`i`l`i`i`i`l`i`i`i`i`l`l`l`l`i`l`l`l`l`i`i`i`l`l`i`i`l`i`i`l`i`i`i`l`i`i`i`l`i`l`i`l`i`l`l`i`l`i`i`l`i`l`i`i`l`i`i`i`i`i", +"`i`i`i`i`i`l`i`i`i`l`i`i`i`i`l`i`i`i`i`i`l`i`l`i`i`i`l`i`i`i`i`l`i`i`i`l`i`i`i`i`l`i`l`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`l`i`l`i`i`i`i`l`i`i`i`l`i`i`i`i`l`i`i`i`l`i`i`i`l`i`l`i`i`i`l`i`i`i`l`i`i`i`i`i`l`i`i`l`i`i`i`i`l`i`i`i`i`l`i`i`i`l`i`i`i`i`i`i`i`l`i`l`i`l`i`i`l`i`l`i`l`i`i`i`i`l`i`i`i`i`l`i`i`i`i`l`l`l`l`i`l`i`i`i`i`l`i`i`l`i`i`i`i`i`i`i`i`l`i`i`i`l`i`i`i`l`i`i`i`i`i`l`i`i`i`l`i`i`i`l`l`i`i`i`i`i`i`l`l`i`i`i`i`l`i`i`l`i`i`l`i`i`l`i`l`i`i`i`i`i`i`i`i`i`i`i`l`i`l`i`i`i`i`l`i`l`i`l`i`l`i`i`i`l`i`i`l`i`l`i`i`l`i`i`i`i`i`i`i`l`i`i`i`l`i`l`i`l`i`i`i`i`i`l`i`i`i`i`l`i`i`i`i`l`i`l`i`i`l`i`i`i`l`i`i`l`i`i`i`l`i`i`i`i`i`i`i`l`i`i`l`i`i`l`i`i`i`i`l`i`l`i`i`i`i`i`l`i`i`i`l`i`l`i`i`i`i`i`i`l`i`i`i`l`l`i`i`i`l`i`i`l`i`i`l`i`l`i`l`i`i`i`i`i`i`i`l`i`i`i`i`i`l`i`i`l`i`l`l`i`i`l`i`i", +"`i`i`i`i`i`i`i`i`i`l`i`i`l`i`i`l`i`l`i`l`i`i`l`i`l`i`i`l`i`l`i`i`i`i`i`i`l`i`l`i`i`i`i`l`i`i`l`i`i`l`i`i`i`i`l`i`i`i`l`i`i`i`i`i`i`i`l`l`i`i`l`i`l`i`i`l`i`i`i`l`i`i`l`i`i`l`i`i`i`l`l`i`i`l`i`l`i`i`i`l`i`i`l`i`l`i`i`l`i`i`i`i`i`l`i`i`l`i`i`i`l`i`i`i`i`l`i`l`i`l`i`i`i`i`l`i`i`i`i`i`l`i`l`i`i`l`l`l`i`i`i`i`i`i`i`l`i`l`i`iak`i`l`i`l`i`l`i`l`i`i`i`l`i`i`i`i`l`i`i`i`i`i`i`i`i`iak`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`l`i`i`i`l`i`i`i`l`i`i`l`i`i`i`l`i`l`i`i`i`l`i`l`i`i`i`i`l`i`l`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`l`l`i`l`i`l`i`l`i`l`i`i`i`l`i`i`i`i`i`i`l`i`l`l`i`i`l`i`l`i`i`l`i`l`i`i`i`i`l`i`i`l`l`i`i`l`i`i`i`l`i`i`i`i`i`l`i`i`i`i`i`l`i`i`i`i`i`i`l`i`i`i`i`i`l`i`i`i`i`l`i`i`i`i`i`l`i`i`l`i`i`i`l`l`i`i`i`i`i`i`i`l`i`i`l`i`i`i`i`i`l`i`i`i`l`i`i`i`l`i`l`i`l`i`i`i`i`l`i`i`l`l`i`i`i`i", +"`i`i`l`i`l`l`i`l`i`i`i`i`i`i`i`i`l`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`l`i`i`i`i`i`l`i`i`i`i`i`i`i`l`i`i`i`l`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`l`i`i`i`i`l`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`l`i`i`l`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`l`i`i`l`i`l`i`i`i`i`i`l`i`i`i`i`i`l`i`i`i`l`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`l`i`i`i`i`l`i`i`i`i`i`i`i`l`i`i`i`l`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`l`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`l`i`i`i`i`l`i`i`i`l`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`l`i`i`i`i`l`i`i`i`i`i`l`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`l`i`l`i`i`i`i`i`i`l`i`i`i`i`l`l`i`l`i`i`i`i`i`i`l`i`l`i`l`i`i`l`i`i`l`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`l`i`l`i`i", +"`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`l`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`l`i`l`i`i`l`i`i`i`i`l`l`i`i`i`l`i`i`i`i`l`i`i`l`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`iak`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`iak`i`i`i`i`i`i`i`i`i`i`l`i`i`i`iak`l`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`l`i`l`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`l`i`i`i`i`l`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`l`i`l`i`i`i`i`i`l`i`i`i`i`i`i`i`l`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i", +"`i`i`l`i`i`i`i`i`i`i`i`i`i`l`i`l`i`l`i`i`l`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`iak`i`i`i`i`i`i`i`iak`i`i`i`iak`i`i`i`i`i`i`i`iak`i`i`i`i`i`i`l`i`i`iak`iak`i`iak`l`i`i`i`i`i`i`i`i`i`iak`iak`i`i`iak`i`iak`i`i`i`i`i`i`i`i`i`i`i`i`iak`i`i`i`i`i`i`i`i`i`i`i`iak`i`i`i`i`i`i`iak`iak`i`i`i`iak`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`l`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`l`i`i`i`i`l`i`i`i`i`l`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`l`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`l`i`l`i`l`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i", +"`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`l`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`iak`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`iak`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`iak`l`i`i`i`i`i`i`i`i`i`iak`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`l`i`i`i`i`i`l`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i`i" +};
--- a/info/dir Mon Aug 13 08:51:05 2007 +0200 +++ b/info/dir Mon Aug 13 08:51:32 2007 +0200 @@ -46,7 +46,7 @@ Packages: -* AUC TeX:: Mode for editing TeX files. +* AUCTeX:: Mode for editing TeX files. * CC-MODE:: Mode for editing C, C++, and Objective-C code. * CL:: A Common Lisp compatibility package for Emacs-Lisp. * Custom:: Customization Library for Emacs
--- a/lib-src/Makefile.in.in Mon Aug 13 08:51:05 2007 +0200 +++ b/lib-src/Makefile.in.in Mon Aug 13 08:51:32 2007 +0200 @@ -116,7 +116,7 @@ EXECUTABLES= ${UTILITIES} ${INSTALLABLES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS} SOURCES = COPYING ChangeLog Makefile.in.in README aixcc.lex emacs.csh \ - makedoc.com *.[chy] rcs2log vcdiff + makedoc.com *.[chy] $(SCRIPTS) /* ========================== start of cpp stuff ======================= */ @@ -262,10 +262,22 @@ rm -f vcdiff ; ${LN_S} ${srcdir}/vcdiff . ; \ fi -$(TM_SCRIPTS): force - @if [ ! -r $@ ] ; then \ - rm -f $@ ; ${LN_S} ${srcdir}/$@ . ; \ - fi +tm-au : + ${LN_S} ${srcdir}/$@ $@ +tm-file : + ${LN_S} ${srcdir}/$@ $@ +tm-html : + ${LN_S} ${srcdir}/$@ $@ +tm-image : + ${LN_S} ${srcdir}/$@ $@ +tm-mpeg : + ${LN_S} ${srcdir}/$@ $@ +tm-plain : + ${LN_S} ${srcdir}/$@ $@ +tm-ps : + ${LN_S} ${srcdir}/$@ $@ +tmdecode : + ${LN_S} ${srcdir}/$@ $@ force: #else /* ultrix */
--- a/lib-src/make-docfile.c Mon Aug 13 08:51:05 2007 +0200 +++ b/lib-src/make-docfile.c Mon Aug 13 08:51:32 2007 +0200 @@ -33,6 +33,9 @@ Then comes F for a function or V for a variable. Then comes the function or variable name, terminated with a newline. Then comes the documentation for that function or variable. + + Added 19.15/20.1: `-i site-packages' allow installer to dump extra packages + without modifying Makefiles, etc. */ #define NO_SHORTNAMES /* Tell config not to load remap.h */ @@ -74,6 +77,7 @@ /* Stdio stream for output to the DOC file. */ static FILE *outfile; +static char *extra_elcs = NULL; enum { @@ -130,6 +134,42 @@ return result; } + +static char * +next_extra_elc(char *extra_elcs) +{ + static FILE *fp = NULL; + static char line_buf[BUFSIZ]; + char *p = line_buf+1; + + if (!fp) { + if (!extra_elcs) { + return NULL; + } else if (!(fp = fopen(extra_elcs, "r"))) { + /* It is not an error if this file doesn't exist. */ + /*fatal("error opening site package file list", 0);*/ + return NULL; + } + fgets(line_buf, BUFSIZ, fp); + } + +again: + if (!fgets(line_buf, BUFSIZ, fp)) { + fclose(fp); + fp = NULL; + return NULL; + } + line_buf[0] = '\0'; + if (strlen(p) <= 2 || strlen(p) >= (BUFSIZ - 5)) { + /* reject too short or too long lines */ + goto again; + } + p[strlen(p) - 2] = '\0'; + strcat(p, ".elc"); + + return p; +} + int main (int argc, char **argv) @@ -175,6 +215,11 @@ i += 2; } + if (argc > (i + 1) && !strcmp(argv[i], "-i")) { + extra_elcs = argv[i + 1]; + i += 2; + } + if (outfile == 0) fatal ("No output file specified", ""); @@ -190,6 +235,15 @@ /* err_count seems to be {mis,un}used */ err_count += scan_file (argv[i]); } + + if (extra_elcs) { + char *p; + + while ((p = next_extra_elc(extra_elcs)) != NULL) { + err_count += scan_file(p); + } + } + putc ('\n', outfile); #ifndef VMS exit (err_count > 0);
--- a/lib-src/update-elc.sh Mon Aug 13 08:51:05 2007 +0200 +++ b/lib-src/update-elc.sh Mon Aug 13 08:51:32 2007 +0200 @@ -184,7 +184,7 @@ # AUC TeX requires special treatment echo Compiling AUC TeX... -( cd lisp/auctex ; make -f Makefile EMACS=$REAL ) +( cd lisp/auctex ; make some -f Makefile EMACS=$REAL ) echo AUC TeX done. #
--- a/lisp/auctex/ChangeLog Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/auctex/ChangeLog Mon Aug 13 08:51:32 2007 +0200 @@ -1,3 +1,20 @@ +Wed Feb 26 23:15:27 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * Version 9.7k released. + +Wed Feb 26 23:14:43 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * tex.el (TeX-submit-bug-report): Fix address (sunsite, not iesd!). + +Tue Feb 25 17:36:11 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * Version 9.7j released. + +Fri Feb 21 09:29:20 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * Makefile (some): New target. + Suggested by Steven L Baur <steve@miranova.com>. + Thu Feb 20 11:30:50 1997 Per Abrahamsen <abraham@dina.kvl.dk> * Version 9.7i released.
--- a/lisp/auctex/Makefile Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/auctex/Makefile Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ # Makefile - for the AUC TeX distribution. # # Maintainer: Per Abrahamsen <auc-tex@sunsite.auc.dk> -# Version: 9.7i +# Version: 9.7k # # Edit the makefile, type `make', and follow the instructions. @@ -98,10 +98,9 @@ lisp: $(ELC) $(AUCSRC) $(STYLESRC) $(CONTRIB) -install: install-lisp +some: $(AUCELC) style/*.elc -tex.elc: tex.el - $(ELC) $(AUCSRC) $(STYLESRC) +install: install-lisp contrib: $(ELC) bib-cite.el @@ -109,7 +108,7 @@ # $(ELC) tex-jp.el # Doesn't compile without MULE # $(ELC) hilit-LaTeX.el # Doesn't compile without X -install-lisp: tex.elc +install-lisp: some if [ ! -d $(lispdir) ]; then mkdir $(lispdir); else true; fi ; if [ -f $(lispdir)/tex-site.el ]; \ then \
--- a/lisp/auctex/auc-old.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/auctex/auc-old.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; auc-old.el - Compatibility with AUC TeX 6.* ;; ;; Maintainer: Per Abrahamsen <auc-tex@sunsite.auc.dk> -;; Version: 9.7i +;; Version: 9.7k ;; ;; Copyright (C) 1991 Kresten Krab Thorup ;; Copyright (C) 1993 Per Abrahamsen
--- a/lisp/auctex/latex.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/auctex/latex.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; latex.el --- Support for LaTeX documents. ;; ;; Maintainer: Per Abrahamsen <auc-tex@sunsite.auc.dk> -;; Version: 9.7i +;; Version: 9.7k ;; Keywords: wp ;; X-URL: http://sunsite.auc.dk/auctex
--- a/lisp/auctex/tex-buf.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/auctex/tex-buf.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; tex-buf.el - External commands for AUC TeX. ;; ;; Maintainer: Per Abrahamsen <auc-tex@sunsite.auc.dk> -;; Version: 9.7i +;; Version: 9.7k ;; Copyright (C) 1991 Kresten Krab Thorup ;; Copyright (C) 1993, 1996 Per Abrahamsen
--- a/lisp/auctex/tex-info.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/auctex/tex-info.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; tex-info.el - Support for editing TeXinfo source. ;; ;; Maintainer: Per Abrahamsen <auc-tex@sunsite.auc.dk> -;; Version: 9.7i +;; Version: 9.7k ;; Copyright (C) 1993, 1994, 1997 Per Abrahamsen ;;
--- a/lisp/auctex/tex.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/auctex/tex.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; tex.el --- Support for TeX documents. ;; Maintainer: Per Abrahamsen <auc-tex@sunsite.auc.dk> -;; Version: 9.7i +;; Version: 9.7k ;; Keywords: wp ;; X-URL: http://sunsite.auc.dk/auctex @@ -486,10 +486,10 @@ ;; These two variables are automatically updated with "make dist", so ;; be careful before changing anything. -(defconst AUC-TeX-version "9.7i" +(defconst AUC-TeX-version "9.7k" "AUC TeX version number") -(defconst AUC-TeX-date "Thu Feb 20 11:30:55 MET 1997" +(defconst AUC-TeX-date "Wed Feb 26 23:15:31 MET 1997" "AUC TeX release date") ;;; Buffer @@ -2594,7 +2594,7 @@ (interactive) (require 'reporter) (reporter-submit-bug-report - "auc-tex@iesd.auc.dk" + "auc-tex@sunsite.auc.dk" (concat "AUC TeX " AUC-TeX-version) (list 'window-system 'LaTeX-version
--- a/lisp/comint/gdbsrc.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/comint/gdbsrc.el Mon Aug 13 08:51:32 2007 +0200 @@ -373,19 +373,22 @@ (defun gdb-call-from-src (command) "Send associated gdb process COMMAND displaying source in this window." (setq gdbsrc-call-p t) - (let ((buf (or gdbsrc-associated-buffer current-gdb-buffer))) - (or (buffer-name buf) - (error "GDB buffer deleted")) - (pop-to-buffer buf)) - (goto-char (point-max)) - (beginning-of-line) - ;; Go past gdb prompt - (re-search-forward - gdb-prompt-pattern (save-excursion (end-of-line) (point)) t) - ;; Delete any not-supposed-to-be-there text - (delete-region (point) (point-max)) - (insert command) - (comint-send-input)) + (let ((src-win (selected-window)) + (buf (or gdbsrc-associated-buffer current-gdb-buffer))) + (or (buffer-name buf) + (error "GDB buffer deleted")) + (pop-to-buffer buf) + (goto-char (point-max)) + (beginning-of-line) + ;; Go past gdb prompt + (re-search-forward + gdb-prompt-pattern (save-excursion (end-of-line) (point)) t) + ;; Delete any not-supposed-to-be-there text + (delete-region (point) (point-max)) + (insert command) + (comint-send-input) + (select-window src-win) + )) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;
--- a/lisp/comint/shell.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/comint/shell.el Mon Aug 13 08:51:32 2007 +0200 @@ -250,13 +250,53 @@ (defvar shell-mode-hook nil "*Hook for customising Shell mode.") + +;; font-locking +(defvar shell-prompt-face 'shell-prompt-face + "Face for shell prompts.") +(defvar shell-option-face 'shell-option-face + "Face for command line options.") +(defvar shell-output-face 'shell-output-face + "Face for generic shell output.") +(defvar shell-output-2-face 'shell-output-2-face + "Face for grep-like output.") +(defvar shell-output-3-face 'shell-output-3-face + "Face for [N] output where N is a number.") + +(make-face shell-prompt-face) +(make-face shell-option-face) +(make-face shell-output-face) +(make-face shell-output-2-face) +(make-face shell-output-3-face) + +(defun shell-font-lock-mode-hook () + (or (face-differs-from-default-p shell-prompt-face) + (copy-face 'font-lock-keyword-face shell-prompt-face)) + (or (face-differs-from-default-p shell-option-face) + (copy-face 'font-lock-comment-face shell-option-face)) + (or (face-differs-from-default-p shell-output-face) + (copy-face 'italic shell-output-face)) + (or (face-differs-from-default-p shell-output-2-face) + (copy-face 'font-lock-string-face shell-output-2-face)) + (or (face-differs-from-default-p shell-output-3-face) + (copy-face 'font-lock-string-face shell-output-3-face)) + ;; we only need to do this once + (remove-hook 'font-lock-mode-hook 'shell-font-lock-mode-hook)) +(add-hook 'font-lock-mode-hook 'shell-font-lock-mode-hook) + +(defvar shell-prompt-pattern-for-font-lock shell-prompt-pattern + "Pattern to use to font-lock the prompt. +Defaults to `shell-prompt-pattern'.") + (defvar shell-font-lock-keywords - (list (cons shell-prompt-pattern 'font-lock-keyword-face) - '("[ \t]\\([+-][^ \t\n]+\\)" 1 font-lock-comment-face) - '("^[^ \t\n]+:.*" . font-lock-string-face) - '("^\\[[1-9][0-9]*\\]" . font-lock-string-face)) + (list (cons 'shell-prompt-pattern-for-font-lock shell-prompt-face) + '("[ \t]\\([+-][^ \t\n>]+\\)" 1 shell-option-face) + '("^[^ \t\n]+:.*" . shell-output-2-face) + '("^\\[[1-9][0-9]*\\]" . shell-output-3-face) + '("^[^\n]+.*$" . shell-output-face)) "Additional expressions to highlight in Shell mode.") (put 'shell-mode 'font-lock-defaults '(shell-font-lock-keywords t)) + ;;; Basic Procedures ;;; ===========================================================================
--- a/lisp/custom/ChangeLog Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/custom/ChangeLog Mon Aug 13 08:51:32 2007 +0200 @@ -1,3 +1,33 @@ +Wed Feb 26 22:17:38 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * Version 1.46 released. + +Wed Feb 26 12:27:21 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * custom.el (emacs): Moved to custom-edit.el. + (customize): Ditto. + * custom-edit.el: Added customization groups for all finder + keywords. + (customize): Add to the appropriate groups. + * widget-edit.el (widgets): Ditto. + * custom.texi (Usage for Package Authors): Documented it. + + * widget-edit.el (widget-push-button-value-create): Use + `device-on-window-system-p' instead of `device-type'. + + * Version 1.45 released. + +Wed Feb 26 12:26:30 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * widget-edit.el (widget-push-button-value-create): Check that + (device-type) is x. + Reported by "Tomasz J. Cholewo" <tjchol01@mecca.spd.louisville.edu>. + +Sun Feb 23 21:48:43 1997 Per Abrahamsen <abraham@dina.kvl.dk> + + * custom-edit.el (customize-face): By default, customize all + faces. + Thu Feb 20 11:55:45 1997 Per Abrahamsen <abraham@dina.kvl.dk> * Version 1.44 released.
--- a/lisp/custom/custom-edit.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/custom/custom-edit.el Mon Aug 13 08:51:32 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> ;; Keywords: help, faces -;; Version: 1.44 +;; Version: 1.46 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -22,6 +22,189 @@ :custom-set :custom-save :custom-reset-current :custom-reset-saved :custom-reset-factory) +;;; Customization Groups. + +(defgroup emacs nil + "Customization of the One True Editor." + :link '(custom-manual "(emacs)Top")) + +;; Most of these groups are stolen from `finder.el', +(defgroup editing nil + "Basic text editing facilities." + :group 'emacs) + +(defgroup abbrev nil + "Abbreviation handling, typing shortcuts, macros." + :tag "Abbreviations" + :group 'editing) + +(defgroup matching nil + "Various sorts of searching and matching." + :group 'editing) + +(defgroup emulations nil + "Emulations of other editors." + :group 'editing) + +(defgroup mouse nil + "Mouse support." + :group 'editing) + +(defgroup outlines nil + "Support for hierarchical outlining." + :group 'editing) + +(defgroup external nil + "Interfacing to external utilities." + :group 'emacs) + +(defgroup bib nil + "Code related to the `bib' bibliography processor." + :tag "Bibliography" + :group 'external) + +(defgroup processes nil + "Process, subshell, compilation, and job control support." + :group 'external + :group 'development) + +(defgroup programming nil + "Support for programming in other languages." + :group 'emacs) + +(defgroup languages nil + "Specialized modes for editing programming languages." + :group 'programming) + +(defgroup lisp nil + "Lisp support, including Emacs Lisp." + :group 'languages + :group 'development) + +(defgroup c nil + "Support for the C language and related languages." + :group 'languages) + +(defgroup tools nil + "Programming tools." + :group 'programming) + +(defgroup oop nil + "Support for object-oriented programming." + :group 'programming) + +(defgroup applications nil + "Applications written in Emacs." + :group 'emacs) + +(defgroup calendar nil + "Calendar and time management support." + :group 'applications) + +(defgroup mail nil + "Modes for electronic-mail handling." + :group 'applications) + +(defgroup news nil + "Support for netnews reading and posting." + :group 'applications) + +(defgroup games nil + "Games, jokes and amusements." + :group 'applications) + +(defgroup development nil + "Support for further development of Emacs." + :group 'emacs) + +(defgroup docs nil + "Support for Emacs documentation." + :group 'development) + +(defgroup extensions nil + "Emacs Lisp language extensions." + :group 'development) + +(defgroup internal nil + "Code for Emacs internals, build process, defaults." + :group 'development) + +(defgroup maint nil + "Maintenance aids for the Emacs development group." + :tag "Maintenance" + :group 'development) + +(defgroup environment nil + "Fitting Emacs with its environment." + :group 'emacs) + +(defgroup comm nil + "Communications, networking, remote access to files." + :tag "Communication" + :group 'environment) + +(defgroup hardware nil + "Support for interfacing with exotic hardware." + :group 'environment) + +(defgroup terminals nil + "Support for terminal types." + :group 'environment) + +(defgroup unix nil + "Front-ends/assistants for, or emulators of, UNIX features." + :group 'environment) + +(defgroup vms nil + "Support code for vms." + :group 'environment) + +(defgroup i18n nil + "Internationalization and alternate character-set support." + :group 'environment + :group 'editing) + +(defgroup frames nil + "Support for Emacs frames and window systems." + :group 'environment) + +(defgroup data nil + "Support editing files of data." + :group 'emacs) + +(defgroup wp nil + "Word processing." + :group 'emacs) + +(defgroup tex nil + "Code related to the TeX formatter." + :group 'wp) + +(defgroup faces nil + "Support for multiple fonts." + :group 'emacs) + +(defgroup hypermedia nil + "Support for links between text or other media types." + :group 'emacs) + +(defgroup help nil + "Support for on-line help systems." + :group 'emacs) + +(defgroup local nil + "Code local to your site." + :group 'emacs) + +(defgroup customize '((widgets custom-group)) + "Customization of the Customization support." + :link '(custom-manual "(custom)Top") + :link '(url-link :tag "Development Page" + "http://www.dina.kvl.dk/~abraham/custom/") + :prefix "custom-" + :group 'help + :group 'faces) + ;;; Utilities. (defun custom-quote (sexp) @@ -261,15 +444,24 @@ (custom-buffer-create (list (list symbol 'custom-variable)))) ;;;###autoload -(defun customize-face (symbol) - "Customize FACE." - (interactive (list (completing-read "Customize face: " +(defun customize-face (&optional symbol) + "Customize SYMBOL, which should be a face name or nil. +If SYMBOL is nil, customize all faces." + (interactive (list (completing-read "Customize face: (default all) " obarray 'custom-facep))) - (if (stringp symbol) - (setq symbol (intern symbol))) - (unless (symbolp symbol) - (error "Should be a symbol %S" symbol)) - (custom-buffer-create (list (list symbol 'custom-face)))) + (if (or (null symbol) (and (stringp symbol) (zerop (length symbol)))) + (let ((found nil)) + (message "Looking for faces...") + (mapcar (lambda (symbol) + (setq found (cons (list symbol 'custom-face) found))) + (face-list)) + (message "Creating customization buffer...") + (custom-buffer-create found)) + (if (stringp symbol) + (setq symbol (intern symbol))) + (unless (symbolp symbol) + (error "Should be a symbol %S" symbol)) + (custom-buffer-create (list (list symbol 'custom-face))))) ;;;###autoload (defun customize-customized ()
--- a/lisp/custom/custom-xmas.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/custom/custom-xmas.el Mon Aug 13 08:51:32 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> ;; Keywords: help, faces -;; Version: 1.44 +;; Version: 1.46 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -27,10 +27,7 @@ (color-instance-rgb-components (make-color-instance color)))) ;; Overwrite Emacs definition. -(defun custom-facep (face) - "Face symbol or object." - (or (facep face) - (find-face face))) +(defalias 'custom-facep 'find-face) ;; Support for special XEmacs font attributes. (autoload 'font-create-object "font" nil)
--- a/lisp/custom/custom.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/custom/custom.el Mon Aug 13 08:51:32 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> ;; Keywords: help, faces -;; Version: 1.44 +;; Version: 1.46 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -494,18 +494,6 @@ ;;; Meta Customization -(defgroup emacs nil - "Customization of the One True Editor." - :link '(custom-manual "(emacs)Top")) - -(defgroup customize '((widgets custom-group)) - "Customization of the Customization support." - :link '(custom-manual "(custom)Top") - :link '(url-link :tag "Development Page" - "http://www.dina.kvl.dk/~abraham/custom/") - :prefix "custom-" - :group 'emacs) - (defcustom custom-define-hook nil "Hook called after defining each customize option." :group 'customize
--- a/lisp/custom/widget-browse.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/custom/widget-browse.el Mon Aug 13 08:51:32 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> ;; Keywords: extensions -;; Version: 1.44 +;; Version: 1.46 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary:
--- a/lisp/custom/widget-edit.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/custom/widget-edit.el Mon Aug 13 08:51:32 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> ;; Keywords: extensions -;; Version: 1.44 +;; Version: 1.46 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -84,7 +84,10 @@ :link '(url-link :tag "Development Page" "http://www.dina.kvl.dk/~abraham/custom/") :prefix "widget-" - :group 'emacs) + :group 'help + :group 'extensions + :group 'faces + :group 'hypermedia) (defface widget-documentation-face '((((class color) (background dark)) @@ -1120,6 +1123,8 @@ (if (and (fboundp 'make-gui-button) (fboundp 'make-glyph) widget-push-button-gui + (fboundp 'device-on-window-system-p) + (device-on-window-system-p) (string-match "XEmacs" emacs-version)) (progn (unless gui
--- a/lisp/custom/widget-example.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/custom/widget-example.el Mon Aug 13 08:51:32 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> ;; Keywords: help, extensions, faces, hypermedia -;; Version: 1.44 +;; Version: 1.46 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ (require 'widget)
--- a/lisp/custom/widget.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/custom/widget.el Mon Aug 13 08:51:32 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> ;; Keywords: help, extensions, faces, hypermedia -;; Version: 1.44 +;; Version: 1.46 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary:
--- a/lisp/edebug/edebug.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/edebug/edebug.el Mon Aug 13 08:51:32 2007 +0200 @@ -22,14 +22,14 @@ ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ;; 02111-1307, USA. -;;; Synched up with: Not in FSF +;;; Synched up with: FSF 19.34. ;;; Commentary: ;; LCD Archive Entry: ;; edebug|Daniel LaLiberte|liberte@cs.uiuc.edu ;; |A source level debugger for Emacs Lisp. -;; |$Date: 1996/12/18 03:54:30 $|$Revision: 1.1.1.2 $|~/modes/edebug.el| +;; |$Date: 1997/03/02 03:42:50 $|$Revision: 1.2 $|~/modes/edebug.el| ;; This minor mode allows programmers to step through Emacs Lisp ;; source code while executing functions. You can also set @@ -38,7 +38,7 @@ ;; expressions, trap errors normally caught by debug, and display a ;; debug style backtrace. -;; Installation +;;; Installation ;; ============= ;; Put edebug.el in some directory in your load-path and @@ -59,7 +59,7 @@ ;; `debugger' to `edebug-debug'. This is no longer necessary ;; since Edebug automatically sets it whenever Edebug is active. -;; Minimal Instructions +;;; Minimal Instructions ;; ===================== ;; First evaluate a defun with C-xx, then run the function. Step @@ -82,25 +82,23 @@ ;; uiucdcs!liberte ;; liberte@cs.uiuc.edu -;; =============================== ;; For the early revision history, see edebug-history. ;;; Code: (defconst edebug-version - (let ((raw-version "$Revision: 1.1.1.2 $")) + (let ((raw-version "$Revision: 1.2 $")) (substring raw-version (string-match "[0-9.]*" raw-version) (match-end 0)))) (require 'backquote) -;; Emacs 18 doesnt have defalias. +;; Emacs 18 doesn't have defalias. (eval-and-compile (or (fboundp 'defalias) (fset 'defalias 'fset))) -;; Bug reporting -;; ============== +;;; Bug reporting (defconst edebug-maintainer-address "liberte@cs.uiuc.edu") @@ -128,9 +126,7 @@ 'edebug-print-circle )))) - -;; Options -;; =============================== +;;; Options (defvar edebug-setup-hook nil "*Functions to call before edebug is used. @@ -252,9 +248,7 @@ "*If non-nil, an expression to test for at every stop point. If the result is non-nil, then break. Errors are ignored.") - -;; Form spec utilities. -;; =============================== +;;; Form spec utilities. ;;;###autoload (defmacro def-edebug-spec (symbol spec) @@ -279,9 +273,7 @@ edebug-form-spec )) - -;; Utilities -;; =============================== +;;; Utilities ;; Define edebug-gensym - from old cl.el (defvar edebug-gensym-index 0 @@ -330,7 +322,7 @@ (defun edebug-window-list () "Return a list of windows, in order of `next-window'." - ;; This doesnt work for epoch. + ;; This doesn't work for epoch. (let* ((first-window (selected-window)) (window-list (list first-window)) (next (next-window first-window))) @@ -372,7 +364,7 @@ "Returns the function named by OBJECT, or nil if it is not a function." (setq object (edebug-lookup-function object)) (if (or (subrp object) - (compiled-function-p object) + (compiled-function-p object) ; XEmacs (and (listp object) (eq (car object) 'lambda) (listp (car (cdr object))))) @@ -403,8 +395,7 @@ (set-buffer (marker-buffer edebug:s-r-beg)) (narrow-to-region edebug:s-r-beg edebug:s-r-end)))))) -;; Display -;; ============ +;;; Display (defconst edebug-trace-buffer "*edebug-trace*" "Name of the buffer to put trace info in.") @@ -426,7 +417,7 @@ (split-window)) ;; (message "next window: %s" (next-window)) (sit-for 1) (if (eq (get-buffer-window edebug-trace-buffer) (next-window)) - ;; Dont select trace window + ;; Don't select trace window nil (select-window (next-window)))) (set-window-buffer (selected-window) buffer) @@ -498,8 +489,7 @@ (defalias 'edebug-input-pending-p 'input-pending-p) -;; Redefine read and eval functions -;; ================================= +;;; Redefine read and eval functions ;; read is redefined to maybe instrument forms. ;; eval-defun is redefined to check edebug-all-forms and edebug-all-defs. @@ -522,7 +512,7 @@ t (read text line using minibuffer and use it). This version, from Edebug, maybe instruments the expression. But the -STREAM must be the current buffer to do so. Whether it instuments is +STREAM must be the current buffer to do so. Whether it instruments is also dependent on the values of `edebug-all-defs' and `edebug-all-forms'." (or stream (setq stream standard-input)) @@ -533,6 +523,8 @@ (or (fboundp 'edebug-original-eval-defun) (defalias 'edebug-original-eval-defun (symbol-function 'eval-defun))) +;; We should somehow arrange to be able to do this +;; without actually replacing the eval-defun command. (defun edebug-eval-defun (edebug-it) "Evaluate the top-level form containing point, or after point. @@ -542,13 +534,16 @@ argument. If instrumenting, it prints: `Edebug: FUNCTIONNAME'. Otherwise, it prints in the minibuffer." (interactive "P") - (let ((edebugging (not (eq (not edebug-it) (not edebug-all-defs)))) - (edebug-result)) - (setq edebug-result - (eval - (let ((edebug-all-forms edebugging) - (edebug-all-defs (eq edebug-all-defs (not edebug-it)))) - (edebug-read-top-level-form)))) + (let* ((edebugging (not (eq (not edebug-it) (not edebug-all-defs)))) + (edebug-result) + (form + (let ((edebug-all-forms edebugging) + (edebug-all-defs (eq edebug-all-defs (not edebug-it)))) + (edebug-read-top-level-form)))) + (if (and (eq (car form) 'defvar) + (cdr-safe (cdr-safe form))) + (setq form (cons 'defconst (cdr form)))) + (setq edebug-result (eval form)) (if (not edebugging) (princ edebug-result) edebug-result))) @@ -565,7 +560,7 @@ or if an error occurs, leave point after it with mark at the original point." (interactive) (eval - ;; Bind edebug-all-forms only while reading, not while evaling + ;; Bind edebug-all-forms only while reading, not while evalling ;; but this causes problems while edebugging edebug. (let ((edebug-all-forms t) (edebug-all-defs t)) @@ -616,8 +611,7 @@ (defalias 'eval-defun (symbol-function 'edebug-original-eval-defun))) -;; Edebug internal data -;; =============================== +;;; Edebug internal data ;; The internal data that is needed for edebugging is kept in the ;; buffer-local variable `edebug-form-data'. @@ -702,10 +696,7 @@ ;; (set-marker (nth 2 entry) nil) (setq edebug-form-data (delq entry edebug-form-data))))) - -;; Parser utilities -;; =============================== - +;;; Parser utilities (defun edebug-syntax-error (&rest args) ;; Signal an invalid-read-syntax with ARGS. @@ -723,6 +714,8 @@ (aset table ?\( 'lparen) (aset table ?\) 'rparen) (aset table ?\' 'quote) + (aset table ?\` 'backquote) + (aset table ?\, 'comma) (aset table ?\" 'string) (aset table ?\? 'char) (aset table ?\[ 'lbracket) @@ -730,12 +723,13 @@ (aset table ?\. 'dot) (aset table ?\# 'hash) ;; We treat numbers as symbols, because of confusion with -, -1, and 1-. - ;; We dont care about any other chars since they wont be seen. + ;; We don't care about any other chars since they won't be seen. table)) (defun edebug-next-token-class () ;; Move to the next token and return its class. We only care about - ;; lparen, rparen, dot, quote, string, char, vector, or symbol. + ;; lparen, rparen, dot, quote, backquote, comma, string, char, vector, + ;; or symbol. (edebug-skip-whitespace) (aref edebug-read-syntax-table (following-char))) @@ -772,12 +766,14 @@ (forward-char -1)))) ((eq class 'quote) (forward-char 1) (list 'quote (edebug-read-sexp))) + ((eq class 'backquote) + (list '\` (edebug-read-sexp))) + ((eq class 'comma) + (list '\, (edebug-read-sexp))) (t ; anything else, just read it. (edebug-original-read (current-buffer)))))) - -;; Offsets for reader -;; ============================== +;;; Offsets for reader ;; Define a structure to represent offset positions of expressions. ;; Each offset structure looks like: (before . after) for constituents, @@ -852,8 +848,8 @@ (edebug-store-after-offset (point))))) -;; Reader for Emacs Lisp. -;; ========================================== +;;; Reader for Emacs Lisp. + ;; Uses edebug-next-token-class (and edebug-skip-whitespace) above. (defconst edebug-read-alist @@ -861,6 +857,8 @@ (lparen . edebug-read-list) (string . edebug-read-string) (quote . edebug-read-quote) + (backquote . edebug-read-backquote) + (comma . edebug-read-comma) (lbracket . edebug-read-vector) (hash . edebug-read-function) )) @@ -897,6 +895,42 @@ (edebug-storing-offsets (point) 'quote) (edebug-read-storing-offsets stream))) +(defun edebug-read-backquote (stream) + ;; Turn `thing into (\` thing) + (let ((opoint (point))) + (forward-char 1) + ;; Generate the same structure of offsets we would have + ;; if the resulting list appeared verbatim in the input text. + (edebug-storing-offsets opoint + (list + (edebug-storing-offsets opoint '\`) + (edebug-read-storing-offsets stream))))) + +(defvar edebug-read-backquote-new nil + "Non-nil if reading the inside of a new-style backquote with no parens around it. +Value of nil means reading the inside of an old-style backquote construct +which is surrounded by an extra set of parentheses. +This controls how we read comma constructs.") + +(defun edebug-read-comma (stream) + ;; Turn ,thing into (\, thing). Handle ,@ and ,. also. + (let ((opoint (point))) + (forward-char 1) + (let ((symbol '\,)) + (cond ((eq (following-char) ?\.) + (setq symbol '\,\.) + (forward-char 1)) + ((eq (following-char) ?\@) + (setq symbol '\,@) + (forward-char 1))) + ;; Generate the same structure of offsets we would have + ;; if the resulting list appeared verbatim in the input text. + (if edebug-read-backquote-new + (list + (edebug-storing-offsets opoint symbol) + (edebug-read-storing-offsets stream)) + (edebug-storing-offsets opoint symbol))))) + (defun edebug-read-function (stream) ;; Turn #'thing into (function thing) (forward-char 1) @@ -912,7 +946,18 @@ (prog1 (let ((elements)) (while (not (memq (edebug-next-token-class) '(rparen dot))) - (setq elements (cons (edebug-read-storing-offsets stream) elements))) + (if (eq (edebug-next-token-class) 'backquote) + (let ((edebug-read-backquote-new (not (null elements))) + (opoint (point))) + (if edebug-read-backquote-new + (setq elements (cons (edebug-read-backquote stream) elements)) + (forward-char 1) ; Skip backquote. + ;; Call edebug-storing-offsets here so that we + ;; produce the same offsets we would have had + ;; if the backquote were an ordinary symbol. + (setq elements (cons (edebug-storing-offsets opoint '\`) + elements)))) + (setq elements (cons (edebug-read-storing-offsets stream) elements)))) (setq elements (nreverse elements)) (if (eq 'dot (edebug-next-token-class)) (let (dotted-form) @@ -937,10 +982,7 @@ (forward-char 1) ; skip \] )) - - -;; Cursors for traversal of list and vector elements with offsets. -;;==================================================================== +;;; Cursors for traversal of list and vector elements with offsets. (defvar edebug-dotted-spec nil) @@ -1017,8 +1059,7 @@ (setq offset (cdr offset))) offset)) -;; The Parser -;; =============================== +;;; The Parser ;; The top level function for parsing forms is ;; edebug-read-and-maybe-wrap-form; it calls all the rest. It checks the @@ -1070,7 +1111,7 @@ (let (result edebug-top-window-data edebug-def-name;; make sure it is locally nil - ;; I dont like these here!! + ;; I don't like these here!! edebug-&optional edebug-&rest edebug-gate @@ -1094,7 +1135,7 @@ def-kind defining-form-p def-name - ;; These offset things dont belong here, but to support recursive + ;; These offset things don't belong here, but to support recursive ;; calls to edebug-read, they need to be here. edebug-offsets edebug-offsets-stack @@ -1113,7 +1154,7 @@ (eq 'name (car (cdr spec))) (eq 'symbol (edebug-next-token-class))) (edebug-original-read (current-buffer)))))) -;;(message "all defs: %s all forms: %s" edebug-all-defs edebug-all-forms) +;;;(message "all defs: %s all forms: %s" edebug-all-defs edebug-all-forms) (cond (defining-form-p (if (or edebug-all-defs edebug-all-forms) @@ -1188,7 +1229,7 @@ (quote (, edebug-def-name)) (, (if edebug-inside-func (` (list (,@ - ;; Doesnt work with more than one def-body!! + ;; Doesn't work with more than one def-body!! ;; But the list will just be reversed. (nreverse edebug-def-args)))) 'nil)) @@ -1217,7 +1258,7 @@ ;; (edebug-after (edebug-before BEFORE-INDEX) AFTER-INDEX FORM) ;; Also increment the offset index for subsequent use. ;; if (not edebug-stop-before-symbols) and form is a symbol, - ;; then dont call edebug-before. + ;; then don't call edebug-before. (list 'edebug-after (list 'edebug-before before-index) after-index form)) @@ -1406,7 +1447,7 @@ ((symbolp form) (cond - ;; Check for constant symbols that dont get wrapped. + ;; Check for constant symbols that don't get wrapped. ((or (memq form '(t nil)) (and (fboundp 'edebug-keywordp) (edebug-keywordp form))) form) @@ -1495,9 +1536,7 @@ "Head of list form must be a symbol or lambda expression."))) )) - -;; Matching of specs. -;; =================== +;;; Matching of specs. (defvar edebug-after-dotted-spec nil) @@ -1505,8 +1544,8 @@ (defconst edebug-max-depth 150) ;; maximum number of matching recursions. -;; Failure to match -;; ================== +;;; Failure to match + ;; This throws to no-match, if there are higher alternatives. ;; Otherwise it signals an error. The place of the error is found ;; with the two before- and after-offset functions. @@ -1594,7 +1633,7 @@ ;; Define specs for all the symbol specs with functions used to process them. -;; Perhaps we shouldnt be doing this with edebug-form-specs since the +;; Perhaps we shouldn't be doing this with edebug-form-specs since the ;; user may want to define macros or functions with the same names. ;; We could use an internal obarray for these primitive specs. @@ -1712,7 +1751,7 @@ (let (edebug-gate ;; only while matching each spec edebug-best-error edebug-error-point) - ;; Doesnt support e.g. &or symbolp &rest form + ;; Doesn't support e.g. &or symbolp &rest form (edebug-match-one-spec cursor (car specs))))) ;; Match failed, so reset and try again. (setq specs (cdr specs)) @@ -1741,7 +1780,7 @@ (defun edebug-match-&key (cursor specs) ;; Following specs must look like (<name> <spec>) ... ;; where <name> is the name of a keyword, and spec is its spec. - ;; This really doesnt save much over the expanded form and takes time. + ;; This really doesn't save much over the expanded form and takes time. (edebug-match-&rest cursor (cons '&or @@ -1845,7 +1884,7 @@ (defun edebug-match-&define (cursor specs) ;; Match a defining form. - ;; Normally, &define is interpretted specially other places. + ;; Normally, &define is interpreted specially other places. ;; This should only be called inside of a spec list to match the remainder ;; of the current list. e.g. ("lambda" &define args def-body) (edebug-make-form-wrapper @@ -1932,12 +1971,12 @@ (list (edebug-wrap-def-body (edebug-forms cursor))))) -;; Edebug Form Specs -;; ========================================================== -;; See cl-specs.el for common lisp specs. - -;;* Spec for def-edebug-spec -;; Out of date. +;;;; Edebug Form Specs +;;; ========================================================== +;;; See cl-specs.el for common lisp specs. + +;;;;* Spec for def-edebug-spec +;;; Out of date. (defun edebug-spec-p (object) "Return non-nil if OBJECT is a symbol with an edebug-form-spec property." @@ -1967,7 +2006,7 @@ )) -;;* Emacs special forms and some functions. +;;;* Emacs special forms and some functions. ;; quote expects only one argument, although it allows any number. (def-edebug-spec quote sexp) @@ -1984,7 +2023,7 @@ (def-edebug-spec defmacro (&define name lambda-list def-body)) -(def-edebug-spec arglist lambda-list) ;; denegrated - use lambda-list. +(def-edebug-spec arglist lambda-list) ;; deprecated - use lambda-list. (def-edebug-spec lambda-list (([&rest arg] @@ -2085,7 +2124,6 @@ ;; Anything else? -;;==================== ;; Some miscellaneous specs for macros in public packages. ;; Send me yours. @@ -2103,13 +2141,11 @@ [&optional ("interactive" interactive)] def-body)) - -;; The debugger itself -;; =============================== +;;; The debugger itself (defvar edebug-active nil) ;; Non-nil when edebug is active -;; add minor-mode-alist entry +;;; add minor-mode-alist entry (or (assq 'edebug-active minor-mode-alist) (setq minor-mode-alist (cons (list 'edebug-active " *Debugging*") minor-mode-alist))) @@ -2171,8 +2207,7 @@ (defvar cl-lexical-debug) ;; Defined in cl.el -;; Handling signals -;; ================= +;;; Handling signals (if (not (fboundp 'edebug-original-signal)) (defalias 'edebug-original-signal (symbol-function 'signal))) @@ -2200,8 +2235,7 @@ (edebug-original-signal edebug-signal-name edebug-signal-data)) -;; Entering Edebug -;; ================== +;;; Entering Edebug (defun edebug-enter (edebug-function edebug-args edebug-body) ;; Entering FUNC. The arguments are ARGS, and the body is BODY. @@ -2518,8 +2552,8 @@ (setq edebug-buffer-points (edebug-get-displayed-buffer-points))) ;; First move the edebug buffer point to edebug-point - ;; so that window start doesnt get changed when we display it. - ;; I dont know if this is going to help. + ;; so that window start doesn't get changed when we display it. + ;; I don't know if this is going to help. ;;(set-buffer edebug-buffer) ;;(goto-char edebug-point) @@ -2614,7 +2648,7 @@ (eq edebug-arg-mode 'error)) (progn ;; (setq edebug-execution-mode 'step) - ;; (edebug-overlay-arrow) ; this doesnt always show up. + ;; (edebug-overlay-arrow) ; this doesn't always show up. (edebug-recursive-edit))) ; <---------- Recursive edit ;; Reset the edebug-window-data to whatever it is now. @@ -2660,7 +2694,7 @@ 'no-force) ;; Unrestore edebug-buffer's window-point. ;; Needed in addition to setting the buffer point - ;; - otherwise quitting doesnt leave point as is. + ;; - otherwise quitting doesn't leave point as is. ;; But this causes point to not be restored at times. ;; Also, it may not be a visible window. ;; (set-window-point window edebug-point) @@ -2680,8 +2714,8 @@ (set-buffer edebug-outside-buffer) ;; Restore point, and mark. ;; Needed even if restoring windows because - ;; that doesnt restore point and mark in the current buffer. - ;; But dont restore point if edebug-buffer is current buffer. + ;; that doesn't restore point and mark in the current buffer. + ;; But don't restore point if edebug-buffer is current buffer. (if (not (eq edebug-buffer edebug-outside-buffer)) (goto-char edebug-outside-point)) (if (marker-buffer (edebug-mark-marker)) @@ -2904,13 +2938,12 @@ )) -;; Display related functions -;; =============================== +;;; Display related functions (defun edebug-adjust-window (old-start) ;; If pos is not visible, adjust current window to fit following context. -;; (message "window: %s old-start: %s window-start: %s pos: %s" -;; (selected-window) old-start (window-start) (point)) (sit-for 5) +;;; (message "window: %s old-start: %s window-start: %s pos: %s" +;;; (selected-window) old-start (window-start) (point)) (sit-for 5) (if (not (pos-visible-in-window-p)) (progn ;; First try old-start @@ -3078,9 +3111,7 @@ (message "Displaying %s %s" buffer (if already-displaying "off" "on")))) - -;; Breakpoint related functions -;; =============================== +;;; Breakpoint related functions (defun edebug-find-stop-point () ;; Return (function . index) of the nearest edebug stop point. @@ -3144,7 +3175,8 @@ (goto-char (+ edebug-def-mark (aref offset-vector (car breakpoint)))) - (message (concat (if (nth 2 breakpoint) + (message "%s" + (concat (if (nth 2 breakpoint) "Temporary " "") (if (car (cdr breakpoint)) (format "Condition: %s" @@ -3238,8 +3270,7 @@ (setq edebug-global-break-condition expression)) -;; Mode switching functions -;; =============================== +;;; Mode switching functions (defun edebug-set-mode (mode shortmsg msg) ;; Set the edebug mode to MODE. @@ -3464,8 +3495,7 @@ ;; (edebug-set-mode 'exiting "Exit...")) -;; ----------------------------------------------------------------- -;; The following initial mode setting definitions are not used yet. +;;; The following initial mode setting definitions are not used yet. '(defconst edebug-initial-mode-alist '((edebug-Continue-fast . Continue-fast) @@ -3510,9 +3540,7 @@ (error "Key must map to one of the mode changing commands") ))) - -;; Evaluation of expressions -;; =============================== +;;; Evaluation of expressions (def-edebug-spec edebug-outside-excursion t) @@ -3620,8 +3648,8 @@ (get (car edebug-err) 'error-message) (car (cdr edebug-err)))))) -;; Printing -;; ========= +;;; Printing + ;; Replace printing functions. ;; obsolete names @@ -3703,8 +3731,7 @@ (interactive) (message "%s" edebug-previous-result)) -;; Read, Eval and Print -;; ===================== +;;; Read, Eval and Print (defun edebug-eval-expression (edebug-expr) "Evaluate an expression in the outside environment. @@ -3737,9 +3764,7 @@ (princ "\n") )) - -;; Edebug Minor Mode -;; =============================== +;;; Edebug Minor Mode ;; Global GUD bindings for all emacs-lisp-mode buffers. (define-key emacs-lisp-mode-map "\C-x\C-a\C-s" 'edebug-step-mode) @@ -3902,9 +3927,8 @@ " (use-local-map edebug-mode-map)) - -;; edebug eval list mode -;; =============================================== +;;; edebug eval list mode + ;; A list of expressions and their evaluations is displayed in *edebug*. (defun edebug-eval-result-list () @@ -4039,9 +4063,7 @@ (setq mode-name "Edebug-Eval") (use-local-map edebug-eval-mode-map)) - -;; Interface with standard debugger. -;; ======================================== +;;; Interface with standard debugger. ;; (setq debugger 'edebug) ; to use the edebug debugger ;; (setq debugger 'debug) ; use the standard debugger @@ -4120,8 +4142,7 @@ ))))) -;; Trace display -;; =============================== +;;; Trace display (defun edebug-trace-display (buf-name fmt &rest args) "In buffer BUF-NAME, display FMT and ARGS at the end and make it visible. @@ -4131,7 +4152,8 @@ ;; (edebug-trace-display "*trace-point*" ;; "saving: point = %s window-start = %s" ;; (point) (window-start)) - (let* ((selected-window (selected-window)) + (let* ((oldbuf (current-buffer)) + (selected-window (selected-window)) (buffer (get-buffer-create buf-name)) buf-window) ;; (message "before pop-to-buffer") (sit-for 1) @@ -4147,7 +4169,8 @@ ;; (set-window-point buf-window (point)) ;; (edebug-sit-for 0) (bury-buffer buffer) - (select-window selected-window)) + (select-window selected-window) + (set-buffer oldbuf)) buf-name) @@ -4156,8 +4179,7 @@ (apply 'edebug-trace-display edebug-trace-buffer fmt args)) -;; Frequency count and coverage -;; ============================== +;;; Frequency count and coverage (defun edebug-display-freq-count () "Display the frequency count data for each line of the current @@ -4240,8 +4262,7 @@ (undo))) -;; Menus -;;========= +;;; Menus (defun edebug-toggle (variable) (set variable (not (eval variable))) @@ -4308,12 +4329,12 @@ "XEmacs style menus for Edebug.") -;; Emacs version specific code -;;============================= -;; The default for all above is Emacs 18, because it is easier to compile -;; Emacs 18 code in Emacs 19 than vice versa. This default will -;; change once most people are using Emacs 19 or derivatives. - +;;; Emacs version specific code + +;;; The default for all above is Emacs 18, because it is easier to compile +;;; Emacs 18 code in Emacs 19 than vice versa. This default will +;;; change once most people are using Emacs 19 or derivatives. + ;; Epoch specific code is in a separate file: edebug-epoch.el. ;; The byte-compiler will complain about changes in number of arguments @@ -4375,7 +4396,7 @@ (edebug-safe-prin1-to-string (car values))))) (easy-menu-define edebug-menu edebug-mode-map "Edebug menus" edebug-mode-menus) - (if (eq (console-type) 'x) + (if (eq (console-type) 'x) ; XEmacs (x-popup-menu nil (lookup-key edebug-mode-map [menu-bar Edebug]))) ) @@ -4419,8 +4440,8 @@ (edebug-emacs-version-specific) -;; Byte-compiler -;; ==================== +;;; Byte-compiler + ;; Extension for bytecomp to resolve undefined function references. ;; Requires new byte compiler. @@ -4490,7 +4511,7 @@ popup-menu ;; CL cl-macroexpand-all - ;; And believe it or not, the byte compiler doesnt know about: + ;; And believe it or not, the byte compiler doesn't know about: byte-compile-resolve-functions )) @@ -4504,8 +4525,7 @@ ))) -;; Autoloading of Edebug accessories -;;=================================== +;;; Autoloading of Edebug accessories (if (featurep 'cl) (add-hook 'edebug-setup-hook @@ -4523,11 +4543,10 @@ (function (lambda () (require 'edebug-cl-read))))) -;; Finalize Loading -;;=================== - -;; Finally, hook edebug into the rest of Emacs. -;; There are probably some other things that could go here. +;;; Finalize Loading + +;;; Finally, hook edebug into the rest of Emacs. +;;; There are probably some other things that could go here. ;; Install edebug read and eval functions. (edebug-install-read-eval-functions)
--- a/lisp/ediff/ediff-init.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/ediff/ediff-init.el Mon Aug 13 08:51:32 2007 +0200 @@ -1156,10 +1156,10 @@ ;;; In-line functions -(or (fboundp 'ediff-file-remote-p) ; user supplied his own function +(or (fboundp 'ediff-file-remote-p) ; user supplied his own function: use it (defun ediff-file-remote-p (file-name) - (car (cond ((featurep 'efs) (efs-ftp-path file-name)) - ((fboundp 'file-remote-p) (efs-ftp-path file-name)) + (car (cond ((featurep 'efs-auto) (efs-ftp-path file-name)) + ((fboundp 'file-remote-p) (file-remote-p file-name)) (t (require 'ange-ftp) ;; Can happen only in Emacs, since XEmacs has file-remote-p (ange-ftp-ftp-name file-name))))))
--- a/lisp/eterm/tshell.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/eterm/tshell.el Mon Aug 13 08:51:32 2007 +0200 @@ -258,14 +258,17 @@ (define-key tshell-mode-map "\t" 'term-dynamic-complete) (define-key tshell-mode-map "\M-?" 'term-dynamic-list-filename-completions) - (define-key-after (lookup-key tshell-mode-map [menu-bar completion]) - [complete-env-variable] '("Complete Env. Variable Name" . - tshell-dynamic-complete-environment-variable) - 'complete-file) - (define-key-after (lookup-key tshell-mode-map [menu-bar completion]) - [expand-directory] '("Expand Directory Reference" . - tshell-replace-by-expanded-directory) - 'complete-expand))) +;;; XEmacs change [JTL]: We don't have define-key-after +;;; (and we don't need it ...) +;;; (define-key-after (lookup-key tshell-mode-map [menu-bar completion]) +;;; [complete-env-variable] '("Complete Env. Variable Name" . +;;; tshell-dynamic-complete-environment-variable) +;;; 'complete-file) +;;; (define-key-after (lookup-key tshell-mode-map [menu-bar completion]) +;;; [expand-directory] '("Expand Directory Reference" . +;;; tshell-replace-by-expanded-directory) +;;; 'complete-expand) + )) (defvar tshell-mode-hook '() "*Hook for customising Tshell mode.")
--- a/lisp/gnus/ChangeLog Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/gnus/ChangeLog Mon Aug 13 08:51:32 2007 +0200 @@ -1,3 +1,66 @@ +Sat Mar 1 03:51:18 1997 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no> + + * gnus.el: Gnus v5.4.16 is released. + +Sat Mar 1 00:04:09 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no> + + * gnus-sum.el (gnus-set-mode-line): Possibly take into account the + buffer name. + + * gnus-srvr.el (gnus-server-prepare): Try to make sure we only + insert servers once. + + * gnus-sum.el (gnus-summary-walk-group-buffer): Don't move point + much. + + * gnus-group.el (gnus-group-update-group): Don't move point. + + * gnus-xmas.el (gnus-xmas-force-redisplay): Changed default to + nil. + (gnus-xmas-switch-horizontal-scrollbar-off): New function. + (gnus-xmas-redefine): Use it. + + * nnfolder.el (nnfolder-active-number): Don't save active here. + + * gnus-sum.el (gnus-summary-reparent-thread): Use the original + article. + +Fri Feb 28 01:01:33 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no> + + * gnus-start.el (gnus-1): Pass ARG on to listing. + (gnus-started-hook): New. + (gnus-1): Use it. + + * gnus-group.el (gnus-group-get-new-news): List using ARG if ARG + is higher than current listing. + +Tue Feb 25 23:28:47 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no> + + * nntp.el (nntp-retrieve-headers): Go to the next-to-last line. + +Fri Feb 21 00:28:37 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no> + + * gnus-group.el (gnus-group-rename-group): Rename to right name. + + * nnmail.el (nnmail-process-babyl-mail-format): Allow continuation + Message-IDs. + (nnmail-process-unix-mail-format): Ditto. + (nnmail-process-mmdf-mail-format): Ditto. + + * nnml.el (nnml-update-file-alist): New function. + (nnml-retrieve-headers): Use it. + (nnml-request-move-article): Delete zipped files. + (nnml-request-replace-article): Write to gzipped, if wanted. + +Thu Feb 20 18:36:22 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no> + + * gnus-picon.el (gnus-picons-display-where): Doc fix. + + * gnus-start.el (gnus-read-newsrc-el-file): Offer to break. + + * nnmail.el (nnmail-search-unix-mail-delim): Exclude newlines from + matches. + Thu Feb 20 04:16:50 1997 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no> * gnus.el: Gnus v5.4.15 is released.
--- a/lisp/gnus/Makefile Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/gnus/Makefile Mon Aug 13 08:51:32 2007 +0200 @@ -34,3 +34,7 @@ echo "(provide 'gnus-load)" >> gnus-load.el echo >> gnus-load.el echo ";;; gnus-load.el ends here" >> gnus-load.el + +distclean: + rm -f *.orig *.rej *.elc *~ +
--- a/lisp/gnus/gnus-group.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/gnus/gnus-group.el Mon Aug 13 08:51:32 2007 +0200 @@ -1128,8 +1128,11 @@ "Update all lines where GROUP appear. If VISIBLE-ONLY is non-nil, the group won't be displayed if it isn't already." - (save-excursion + ;; Can't use `save-excursion' here, so we do it manually. + (let ((buf (current-buffer)) + mark) (set-buffer gnus-group-buffer) + (setq mark (point-marker)) ;; The buffer may be narrowed. (save-restriction (widen) @@ -1179,7 +1182,10 @@ (run-hooks 'gnus-group-update-group-hook)))) (when gnus-group-update-group-function (funcall gnus-group-update-group-function group)) - (gnus-group-set-mode-line))))) + (gnus-group-set-mode-line))) + (goto-char mark) + (set-marker mark nil) + (set-buffer buf))) (defun gnus-group-set-mode-line () "Update the mode line in the group buffer." @@ -1836,7 +1842,7 @@ ;; We find the proper prefixed name. (setq new-name - (if (equal (gnus-group-real-name new-name) new-name) + (if (gnus-group-native-p group) ;; Native group. new-name ;; Foreign group. @@ -2848,7 +2854,8 @@ (let ((gnus-read-active-file (if arg nil gnus-read-active-file))) (gnus-get-unread-articles arg))) (run-hooks 'gnus-after-getting-new-news-hook) - (gnus-group-list-groups)) + (gnus-group-list-groups (and (numberp arg) + (max (car gnus-group-list-mode) arg)))) (defun gnus-group-get-new-news-this-group (&optional n) "Check for newly arrived news in the current group (and the N-1 next groups).
--- a/lisp/gnus/gnus-picon.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/gnus/gnus-picon.el Mon Aug 13 08:51:32 2007 +0200 @@ -44,7 +44,8 @@ :group 'picons) (defcustom gnus-picons-display-where 'picons - "Where to display the group and article icons." + "Where to display the group and article icons. +Legal values are `article' and `picons'." :type '(choice symbol string) :group 'picons)
--- a/lisp/gnus/gnus-srvr.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/gnus/gnus-srvr.el Mon Aug 13 08:51:32 2007 +0200 @@ -207,10 +207,11 @@ (setq gnus-inserted-opened-servers nil) ;; First we do the real list of servers. (while alist - (push (caar alist) done) - (cdr (setq server (pop alist))) - (when (and server (car server) (cdr server)) - (gnus-server-insert-server-line (car server) (cdr server)))) + (unless (member (caar alist) done) + (push (caar alist) done) + (cdr (setq server (pop alist))) + (when (and server (car server) (cdr server)) + (gnus-server-insert-server-line (car server) (cdr server))))) ;; Then we insert the list of servers that have been opened in ;; this session. (while opened
--- a/lisp/gnus/gnus-start.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/gnus/gnus-start.el Mon Aug 13 08:51:32 2007 +0200 @@ -337,6 +337,11 @@ :group 'gnus-start :type 'hook) +(defcustom gnus-started-hook nil + "A hook called as the last thing after startup." + :group 'gnus-start + :type 'hook) + (defcustom gnus-get-new-news-hook nil "A hook run just before Gnus checks for new news." :group 'gnus-group-new @@ -630,7 +635,10 @@ (eq major-mode 'gnus-group-mode))) (progn (switch-to-buffer gnus-group-buffer) - (gnus-group-get-new-news)) + (gnus-group-get-new-news + (and (numberp arg) + (> arg 0) + (max (car gnus-group-list-mode) arg)))) (gnus-splash) (gnus-clear-system) @@ -675,7 +683,8 @@ (gnus-group-list-groups level) (gnus-group-first-unread-group) (gnus-configure-windows 'group) - (gnus-group-set-mode-line)))))) + (gnus-group-set-mode-line) + (run-hooks 'gnus-started-hook)))))) ;;;###autoload (defun gnus-unload () @@ -1819,7 +1828,10 @@ (condition-case nil (load ding-file t t t) (error - (gnus-error 1 "Error in %s" ding-file))) + (ding) + (unless (gnus-yes-or-no-p + (format "Error in %s; continue? " ding-file)) + (error "Error in %s" ding-file)))) (when gnus-newsrc-assoc (setq gnus-newsrc-alist gnus-newsrc-assoc))) (gnus-make-hashtable-from-newsrc-alist)
--- a/lisp/gnus/gnus-sum.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/gnus/gnus-sum.el Mon Aug 13 08:51:32 2007 +0200 @@ -3873,7 +3873,10 @@ (setq mode-string (eval mformat)) (setq max-len (max 4 (if gnus-mode-non-string-length (- (window-width) - gnus-mode-non-string-length) + gnus-mode-non-string-length + (if (string-match "%%b" mode-string) + (length (buffer-name)) + 0)) (length mode-string)))) ;; We might have to chop a bit of the string off... (when (> (length mode-string) max-len) @@ -4299,9 +4302,9 @@ ;; headers using HEAD. (if (or (not also-fetch-heads) (not sequence)) + ;; We (probably) got all the headers. (nreverse headers) - (let ((gnus-nov-is-evil t) - (nntp-nov-is-evil t)) + (let ((gnus-nov-is-evil t)) (nconc (nreverse headers) (when (gnus-retrieve-headers sequence group) @@ -5260,6 +5263,10 @@ (unless (gnus-ephemeral-group-p gnus-newsgroup-name) (gnus-summary-jump-to-group gnus-newsgroup-name)) (let ((cmd last-command-char) + (point + (save-excursion + (set-buffer gnus-group-buffer) + (point))) (group (if (eq gnus-keep-same-level 'best) (gnus-summary-best-group gnus-newsgroup-name) @@ -5288,16 +5295,16 @@ (t (when (gnus-key-press-event-p last-input-event) (gnus-summary-walk-group-buffer - gnus-newsgroup-name cmd unread backward)))))))) - -(defun gnus-summary-walk-group-buffer (from-group cmd unread backward) + gnus-newsgroup-name cmd unread backward point)))))))) + +(defun gnus-summary-walk-group-buffer (from-group cmd unread backward start) (let ((keystrokes '((?\C-n (gnus-group-next-unread-group 1)) (?\C-p (gnus-group-prev-unread-group 1)))) (cursor-in-echo-area t) keve key group ended) (save-excursion (set-buffer gnus-group-buffer) - (gnus-summary-jump-to-group from-group) + (goto-char start) (setq group (if (eq gnus-keep-same-level 'best) (gnus-summary-best-group gnus-newsgroup-name) @@ -7694,7 +7701,7 @@ (gnus-summary-goto-subject article))) (defun gnus-summary-reparent-thread () - "Make current article child of the marked (or previous) article. + "Make the current article child of the marked (or previous) article. Note that the re-threading will only work if `gnus-thread-ignore-subject' is non-nil or the Subject: of both articles are the same." @@ -7706,7 +7713,7 @@ (save-window-excursion (let ((gnus-article-buffer " *reparent*") (current-article (gnus-summary-article-number)) - ; first grab the marked article, otherwise one line up. + ;; First grab the marked article, otherwise one line up. (parent-article (if (not (null gnus-newsgroup-processable)) (car gnus-newsgroup-processable) (save-excursion @@ -7720,19 +7727,18 @@ (unless (and message-id (not (equal message-id ""))) (error "No message-id in desired parent.")) (gnus-summary-select-article t t nil current-article) - (set-buffer gnus-article-buffer) - (setq buffer-read-only nil) + (set-buffer gnus-original-article-buffer) (let ((buf (format "%s" (buffer-string)))) - (erase-buffer) - (insert buf)) - (goto-char (point-min)) - (if (search-forward-regexp "^References: " nil t) - (insert message-id " " ) - (insert "References: " message-id "\n")) - (unless (gnus-request-replace-article current-article - (car gnus-article-current) - gnus-article-buffer) - (error "Couldn't replace article.")) + (nnheader-temp-write nil + (insert buf) + (goto-char (point-min)) + (if (search-forward-regexp "^References: " nil t) + (insert message-id " " ) + (insert "References: " message-id "\n")) + (unless (gnus-request-replace-article + current-article (car gnus-article-current) + (current-buffer)) + (error "Couldn't replace article.")))) (set-buffer gnus-summary-buffer) (gnus-summary-unmark-all-processable) (gnus-summary-rethread-current)
--- a/lisp/gnus/gnus-xmas.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/gnus/gnus-xmas.el Mon Aug 13 08:51:32 2007 +0200 @@ -137,10 +137,13 @@ (set-extent-face gnus-newsgroup-selected-overlay gnus-summary-selected-face))) -(defvar gnus-xmas-force-redisplay t +(defvar gnus-xmas-force-redisplay nil "If non-nil, force a redisplay before recentering the summary buffer. This is ugly, but it works around a bug in `window-displayed-height'.") +(defun gnus-xmas-switch-horizontal-scrollbar-off () + (set-specifier scrollbar-height (cons (current-buffer) 0))) + (defun gnus-xmas-summary-recenter () "\"Center\" point in the summary window. If `gnus-auto-center-summary' is nil, or the article buffer isn't @@ -476,6 +479,8 @@ (add-hook 'gnus-group-mode-hook 'gnus-xmas-setup-group-toolbar) (add-hook 'gnus-summary-mode-hook 'gnus-xmas-setup-summary-toolbar) + (add-hook 'gnus-summary-mode-hook 'gnus-xmas-switch-horizontal-scrollbar-off) + (when (and (<= emacs-major-version 19) (<= emacs-minor-version 13)) (setq gnus-article-x-face-too-ugly (when (eq (device-type) 'tty)
--- a/lisp/gnus/gnus.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/gnus/gnus.el Mon Aug 13 08:51:32 2007 +0200 @@ -223,7 +223,7 @@ :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) -(defconst gnus-version-number "5.4.15" +(defconst gnus-version-number "5.4.16" "Version number for this version of Gnus.") (defconst gnus-version (format "Gnus v%s" gnus-version-number)
--- a/lisp/gnus/nnfolder.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/gnus/nnfolder.el Mon Aug 13 08:51:32 2007 +0200 @@ -614,7 +614,6 @@ (push (list group (setq active (cons 1 1))) nnfolder-group-alist)) (cdr active)) - (nnmail-save-active nnfolder-group-alist nnfolder-active-file) (nnfolder-possibly-activate-groups group)))))
--- a/lisp/gnus/nnmail.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/gnus/nnmail.el Mon Aug 13 08:51:32 2007 +0200 @@ -707,12 +707,13 @@ (goto-char (point-max)) ;; Find the Message-ID header. (save-excursion - (if (re-search-backward "^Message-ID:[ \t]*\\(<[^>]*>\\)" nil t) + (if (re-search-backward + "^Message-ID[ \t]*:[ \n\t]*\\(<[^>]*>\\)" nil t) (setq message-id (buffer-substring (match-beginning 1) (match-end 1))) ;; There is no Message-ID here, so we create one. (save-excursion - (when (re-search-backward "^Message-ID:" nil t) + (when (re-search-backward "^Message-ID[ \t]*:" nil t) (beginning-of-line) (insert "Original-"))) (forward-line -1) @@ -781,7 +782,7 @@ (forward-line 1) (while (looking-at ">From ") (forward-line 1)) - (looking-at "[^ \t:]+[ \t]*:"))) + (looking-at "[^ \n\t:]+[ \n\t]*:"))) (setq found 'yes))))) (beginning-of-line) (eq found 'yes))) @@ -810,7 +811,7 @@ (forward-line 1) (while (looking-at ">From ") (forward-line 1)) - (looking-at "[^ \t:]+[ \t]*:"))) + (looking-at "[^ \n\t:]+[ \n\t]*:"))) (setq found 'yes))))) (beginning-of-line) (eq found 'yes))) @@ -840,10 +841,10 @@ (point)))) ;; Find the Message-ID header. (goto-char (point-min)) - (if (re-search-forward "^Message-ID:[ \t]*\\(<[^>]+>\\)" nil t) + (if (re-search-forward "^Message-ID[ \t]*:[ \n\t]*\\(<[^>]+>\\)" nil t) (setq message-id (match-string 1)) (save-excursion - (when (re-search-forward "^Message-ID:" nil t) + (when (re-search-forward "^Message-ID[ \t]*:" nil t) (beginning-of-line) (insert "Original-"))) ;; There is no Message-ID here, so we create one. @@ -924,11 +925,11 @@ (point)))) ;; Find the Message-ID header. (goto-char (point-min)) - (if (re-search-forward "^Message-ID:[ \t]*\\(<[^>]+>\\)" nil t) + (if (re-search-forward "^Message-ID[ \t]*:[ \n\t]*\\(<[^>]+>\\)" nil t) (setq message-id (match-string 1)) ;; There is no Message-ID here, so we create one. (save-excursion - (when (re-search-backward "^Message-ID:" nil t) + (when (re-search-backward "^Message-ID[ \t]*:" nil t) (beginning-of-line) (insert "Original-"))) (forward-line 1) @@ -1443,7 +1444,7 @@ (let ((case-fold-search t) (newid (nnmail-message-id))) (goto-char (point-min)) - (when (re-search-forward "^message-id:" nil t) + (when (re-search-forward "^message-id[ \t]*:" nil t) (beginning-of-line) (insert "Original-")) (beginning-of-line) @@ -1581,7 +1582,7 @@ (save-restriction (message-narrow-to-head) (let ((case-fold-search t)) - (unless (re-search-forward "^Message-ID:" nil t) + (unless (re-search-forward "^Message-ID[ \t]*:" nil t) (insert "Message-ID: " (nnmail-message-id) "\n"))))) (defun nnmail-write-region (start end filename &optional append visit lockname)
--- a/lisp/gnus/nnmh.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/gnus/nnmh.el Mon Aug 13 08:51:32 2007 +0200 @@ -274,6 +274,7 @@ (nnmh-request-article article group server) (save-excursion (set-buffer buf) + (erase-buffer) (insert-buffer-substring nntp-server-buffer) (setq result (eval accept-form)) (kill-buffer (current-buffer))
--- a/lisp/gnus/nnml.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/gnus/nnml.el Mon Aug 13 08:51:32 2007 +0200 @@ -101,17 +101,11 @@ beg article) (if (stringp (car sequence)) 'headers - (unless nnml-article-file-alist - (setq nnml-article-file-alist - (nnheader-article-to-file-alist nnml-current-directory))) (if (nnml-retrieve-headers-with-nov sequence fetch-old) 'nov (while sequence (setq article (car sequence)) - (setq file - (concat nnml-current-directory - (or (cdr (assq article nnml-article-file-alist)) - ""))) + (setq file (nnml-article-to-file article)) (when (and (file-exists-p file) (not (file-directory-p file))) (insert (format "221 %d Article retrieved.\n" article)) @@ -261,15 +255,8 @@ article rest mod-time number) (nnmail-activate 'nnml) - (unless nnml-article-file-alist - (setq nnml-article-file-alist - (nnheader-article-to-file-alist nnml-current-directory))) - (while (and articles is-old) - (when (setq article - (assq (setq number (pop articles)) - nnml-article-file-alist)) - (setq article (concat nnml-current-directory (cdr article))) + (when (setq article (nnml-article-to-file (setq number (pop articles)))) (when (setq mod-time (nth 5 (file-attributes article))) (if (and (nnml-deletable-article-p group number) (setq is-old @@ -299,9 +286,7 @@ (let ((buf (get-buffer-create " *nnml move*")) result) (nnml-possibly-change-directory group server) - (unless nnml-article-file-alist - (setq nnml-article-file-alist - (nnheader-article-to-file-alist nnml-current-directory))) + (nnml-update-file-alist) (and (nnml-deletable-article-p group article) (nnml-request-article article group server) @@ -315,8 +300,7 @@ (nnml-possibly-change-directory group server) (condition-case () (funcall nnmail-delete-file-function - (concat nnml-current-directory - (int-to-string article))) + (nnml-article-to-file article)) (file-error nil)) (nnml-nov-delete-article group article) (when last @@ -357,8 +341,9 @@ (progn (nnmail-write-region (point-min) (point-max) - (concat nnml-current-directory - (int-to-string article)) + (or (nnml-article-to-file article) + (concat nnml-current-directory + (int-to-string article))) nil (if (nnheader-be-verbose 5) nil 'nomesg)) t) (error nil)) @@ -466,18 +451,15 @@ ;;; Internal functions. (defun nnml-article-to-file (article) - (unless nnml-article-file-alist - (setq nnml-article-file-alist - (nnheader-article-to-file-alist nnml-current-directory))) + (nnml-update-file-alist) (let (file) (when (setq file (cdr (assq article nnml-article-file-alist))) (concat nnml-current-directory file)))) (defun nnml-deletable-article-p (group article) "Say whether ARTICLE in GROUP can be deleted." - (let (file path) - (when (setq file (cdr (assq article nnml-article-file-alist))) - (setq path (concat nnml-current-directory file)) + (let (path) + (when (setq path (nnml-article-to-file article)) (when (file-writable-p path) (or (not nnmail-keep-last-article) (not (eq (cdr (nth 1 (assoc group nnml-group-alist))) @@ -790,6 +772,11 @@ (setf (car active) num))))))) t)) +(defun nnml-update-file-alist () + (unless nnml-article-file-alist + (setq nnml-article-file-alist + (nnheader-article-to-file-alist nnml-current-directory)))) + (provide 'nnml) ;;; nnml.el ends here
--- a/lisp/gnus/nntp.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/gnus/nntp.el Mon Aug 13 08:51:32 2007 +0200 @@ -233,7 +233,8 @@ (re-search-backward "^[0-9]" nil t) (when (looking-at "^[23]") (while (progn - (goto-char (- (point-max) 3)) + (goto-char (point-max)) + (forward-line -1) (not (looking-at "^\\.\r?\n"))) (nntp-accept-response))) (and (numberp nntp-large-newsgroup) @@ -1086,8 +1087,7 @@ (nntp-wait-for-string "^\r*200") (beginning-of-line) (delete-region (point-min) (point)) - proc) - ) + proc)) (defun nntp-find-group-and-number () (save-excursion
--- a/lisp/hm--html-menus/ANNOUNCEMENT Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/hm--html-menus/ANNOUNCEMENT Mon Aug 13 08:51:32 2007 +0200 @@ -1,9 +1,9 @@ Hello, -I've written a new version (5.2) of my html package for the XEmacs +I've written a new version (5.3) of my html package for the XEmacs and the GNU Emacs 19. The name of the package is: - hm--html-menus-5.2.tar.gz + hm--html-menus-5.3.tar.gz With this package it is very easy to write html pages for the World Wide Web (WWW). Eg: In most cases the user gets help to construct a specific @@ -25,7 +25,7 @@ - a lot of bug fixes Read the NEWS file to see news in detail... -You should find hm--html-menus-5.2.tar.gz on the following ftp server: +You should find hm--html-menus-5.3.tar.gz on the following ftp server: sunsite.unc.edu in /pub/Linux/apps/editors/emacs/ ftp.rrzn.uni-hannover.de in /pub/unix/editors/lemacs/contrib ftp.tnt.uni-hannover.de in /pub/editors/xemacs/contrib @@ -36,6 +36,10 @@ There is also a html documentation about the package. You can find it on: http://www.tnt.uni-hannover.de/~muenkel/software/own/hm--html-menus/overview.html +This package provides also a minor mode (hm--html-minor-mode), which +can be used together with another html major mode, like the psgml-html +mode in the XEmacs 19.14. + NOTE: This version is not tested with the Emacs 19. One of the next releases in the near future will be a bug fix only release for the Emacs 19. So please report any bugs to muenkel@tnt.uni-hannover.de.
--- a/lisp/hm--html-menus/NEWS Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/hm--html-menus/NEWS Mon Aug 13 08:51:32 2007 +0200 @@ -1,6 +1,31 @@ +25.02.97 + Fixed two bugs, which occured during loading the mode + after the psgml-html-mode. + In the minor mode, the HM--HTML menu will now be added before + the HTML menu. + Due to a patch of psgm-html.el it is now possible to call the minor + mode from a hook variable in the html-mode and the html3-mode. + -- BUILDED the version 5.3 of the package -- +22.02.97 + Fixed 'hm--html-add-strikethru-to-region'. + Changed `hm--html-view-www-package-docu' for the new location + of the package documentation. + Moved all functions, which added obsolete or non HTML 3.2 elements, + to hm--html-not-standard.el. This file is not used by default. + Therefore this mode fulfils now the whole HTML 3.2 standard! + Added keybindings for new html functions. + Changed some old keybindings. + Moved the menu items for inserting HTML comments to the + "Formating Paragraphs" menu. + Fixed a bug in the function `hm--html-add-meta'. + The variable `indent-line-function' is now local in all + hm--html-mode buffers. This fixed the bug, that the hm--html-mode + had set the indentation function to `hm--html-indent-line' global. + Added the html elements STYLE and SCRIPT. + -- 23:20: My doughter Sarah Madeleine is born! -- 18.02.97 Fixed a compilation bug. - -- BUILDED the version 5.2 of the package + -- BUILDED the version 5.2 of the package -- 17.02.97 Changed the function `hm--html-read-alignment' according to the HTML version 3.2. @@ -22,7 +47,7 @@ variable `hm--html-disable-indentation' to t. Fixed the long annoying bug, that the directory in the pop up frame for selecting the template file was wrong in most cases. - -- BUILDED the version 5.1 of the package + -- BUILDED the version 5.1 of the package -- 11.02.97: Changed the whole indentation stuff. It is now all working - with the exceptions, that the list `hm--html-tag-name-alist' @@ -111,7 +136,7 @@ Added the drag and drop command to the pop up menus. 15.08.96: The items of the menu "Set popup menu" are now radio items. - -- BUILDED the version 5.0 of the package + -- BUILDED the version 5.0 of the package -- 03.08.96: Applied a patch from Jerry G. DeLapp <jgd@lanl.gov> to `html-font-lock-keywords'. @@ -209,7 +234,7 @@ 01.03.96: Added the function `tmpl-insert-template-file'. 18.02.96: - -- BUILDED the version 4.16 of the package + -- BUILDED the version 4.16 of the package -- 17.02.96: Added the mailto link. 03.02.96:
--- a/lisp/hm--html-menus/README Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/hm--html-menus/README Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,10 @@ -This README file describes the emacs lisp package hm--html-menus-5.2. +This README file describes the emacs lisp package hm--html-menus-5.3. The package provides functions and various popup and pulldown menus for a html mode called hm--html-mode, a mode for writing html pages. +It provides also a minor mode (hm--html-minor-mode), which can be used +together with another html major mode, like the psgml-html mode in the +XEmacs 19.14. It has an interface to view the html documents in a W3 browser with Netscape, the w3-package from William M. Perry and Mosaic with the @@ -25,7 +28,7 @@ only UNIX ?) platforms. NOTE: The current release isn't tested with the Emacs 19 (5.0 is but -5.1 and 5.2 are not). One of the next releases in the near future :-) will be a +5.1 to 5.3 are not). One of the next releases in the near future :-) will be a bug fix only release for the Emacs 19. So please report any bugs to muenkel@tnt.uni-hannover.de to shorten the time until the Emacs 19 related bugs are fixed. @@ -50,14 +53,17 @@ adapt.el : provides functions to use this package with the GNU Emacs 19 hm--html.el : provides functions to write html pages; - some of these functions are similar to - functions of the html-mode.el; + in this file are all commands defined, + which inserts html elements and entities; hm--html-indentation.el : provides the indentation stuff; hm--html-keys.el : provides the keybindings; hm--html-menu.el : provides the menus; hm--html-mode.el : provides the functions for the definition of the hm--html-mode; this is now the main file of the package; +hm--html-not-standard.el : provides functions to insert some + non standard hteml elements; + this file is not evaluated by default; hm--html-configuration.el : configuration file for the html mode; choose this as system configuration file; hm--html-drag-and-drop.el : defines the HTML- specific functions @@ -99,8 +105,8 @@ Note: In this version the setting of the environment variables HTML_CONFIG_FILE and HTML_USER_CONFIG_FILE are no longer necessary, if you put the user configuration file in the home directrory and -the system (site) configuration file in one of the load path directories -of your xemacs or GNU Emacs 19. +the system configuration file in one of the load path directories +of your XEmacs or Emacs 19. 1. Put all the *.el files in one of your xemacs (or emacs) lisp load directories (i.e. lisp/packages). @@ -154,6 +160,11 @@ It could also be, that you've already the autoload lines for the w3 package in your emacs. + If you want to use this the hm--html-minor-mode together + with the psgml-html modes, then you should add the following + line (works only in XEmacs version >= 19.15 and != 20.0) + (add-hook 'html-mode-hook 'hm--html-minor-mode) + 3. Set (if you want) the environment variable HTML_CONFIG_FILE to the html system configuration file i.e.: setenv HTML_CONFIG_FILE /usr/xemacs/lisp/hm--html-configuration.el
--- a/lisp/hm--html-menus/hm--html-configuration.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/hm--html-menus/hm--html-configuration.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,6 +1,6 @@ ;;; hm--html-configuration.el - Configurationfile for the html-mode ;;; -;;; $Id: hm--html-configuration.el,v 1.3 1997/02/22 22:07:09 steve Exp $ +;;; $Id: hm--html-configuration.el,v 1.4 1997/03/02 03:43:16 steve Exp $ ;;; ;;; Copyright (C) 1993 - 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -616,6 +616,8 @@ (:hm--html-optional-attributes (size color))) ("map" (:hm--html-two-element-tag t) (:hm--html-required-attributes (name))) + ("style" (:hm--html-two-element-tag t)) + ("script" (:hm--html-two-element-tag t)) ) "An alist with tag names known by the `hm--html-mode'. CURRENTLY THIS LIST CONTAINS NOT ALL TAGS!!!!.
--- a/lisp/hm--html-menus/hm--html-keys.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/hm--html-menus/hm--html-keys.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,4 +1,4 @@ -;;; $Id: hm--html-keys.el,v 1.3 1997/02/22 22:07:10 steve Exp $ +;;; $Id: hm--html-keys.el,v 1.4 1997/03/02 03:43:16 steve Exp $ ;;; ;;; Copyright (C) 1995, 1996, 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -57,7 +57,6 @@ (define-key hm--html-noregion-anchor-map "\C-f" 'hm--html-add-ftp-link) (define-key hm--html-noregion-anchor-map "n" 'hm--html-add-news-link) (define-key hm--html-noregion-anchor-map "m" 'hm--html-add-mail-link) -; (define-key hm--html-noregion-anchor-map "\C-m" 'hm--html-add-mailto-link) (define-key hm--html-noregion-anchor-map [(control m)] 'hm--html-add-mailto-link) (define-key hm--html-noregion-anchor-map "w" 'hm--html-add-direct-wais-link) @@ -86,8 +85,6 @@ "\C-f" 'hm--html-add-ftp-link-to-region) (define-key hm--html-region-anchor-map "n" 'hm--html-add-news-link-to-region) (define-key hm--html-region-anchor-map "m" 'hm--html-add-mail-link-to-region) -; (define-key hm--html-region-anchor-map -; "\C-m" 'hm--html-add-mailto-link-to-region) (define-key hm--html-region-anchor-map [(control m)] 'hm--html-add-mailto-link-to-region) (define-key hm--html-region-anchor-map @@ -111,6 +108,7 @@ () (setq hm--html-noregion-frame-map (make-sparse-keymap)) (define-key hm--html-noregion-frame-map "f" 'hm--html-add-full-html-frame) + (define-key hm--html-noregion-frame-map [(control d)] 'hm--html-add-doctype) (define-key hm--html-noregion-frame-map [(control h)] 'hm--html-add-html) (define-key hm--html-noregion-frame-map [(meta h)] 'hm--html-add-head) (define-key hm--html-noregion-frame-map "b" 'hm--html-add-body) @@ -118,7 +116,10 @@ [(control t)] 'hm--html-add-title-and-header) (define-key hm--html-noregion-frame-map "t" 'hm--html-add-title) (define-key hm--html-noregion-frame-map "h" 'hm--html-add-header) + (define-key hm--html-noregion-frame-map "m" 'hm--html-add-meta) (define-key hm--html-noregion-frame-map "n" 'hm--html-add-normal-node-link) + (define-key hm--html-noregion-frame-map "i" 'hm--html-add-isindex) + (define-key hm--html-noregion-frame-map [(meta d)] 'hm--html-add-base) (define-key hm--html-noregion-frame-map "a" 'hm--html-add-address) (define-key hm--html-noregion-frame-map "s" 'hm--html-add-signature) (define-key hm--html-noregion-frame-map @@ -178,6 +179,8 @@ (define-key hm--html-noregion-structure-map "p" 'hm--html-add-paragraph) (define-key hm--html-noregion-structure-map "\C-p" 'hm--html-add-paragraph-separator) + (define-key hm--html-noregion-structure-map + [(meta d)] 'hm--html-add-document-division) (define-key hm--html-noregion-structure-map "\C-m" 'hm--html-add-line-break) (define-key hm--html-noregion-structure-map "h" 'hm--html-add-horizontal-rule) @@ -196,21 +199,21 @@ (define-key hm--html-region-structure-map "o" 'hm--html-add-numberlist-to-region) (define-key hm--html-region-structure-map - "d" 'hm--html-add-directory-list-to-region) + "d" 'hm--html-add-directorylist-to-region) (define-key hm--html-region-structure-map "\C-dl" 'hm--html-add-description-list-to-region) (define-key hm--html-region-structure-map "\C-dt" 'hm--html-add-description-title-to-region) (define-key hm--html-region-structure-map "\C-de" 'hm--html-add-description-entry-to-region) -; (define-key hm--html-region-structure-map -; "\C-d\C-t" 'html-add-description-title-and-entry-to-region)) (define-key hm--html-region-structure-map "\C-tt" 'hm--html-add-table-to-region) (define-key hm--html-region-structure-map "\C-t\C-t" 'hm--html-add-table-title-to-region) (define-key hm--html-region-structure-map "p" 'hm--html-add-paragraph-to-region) + (define-key hm--html-region-structure-map + [(meta d)] 'hm--html-add-document-division-to-region) ) (defvar hm--html-noregion-formating-paragraph-map nil @@ -219,16 +222,24 @@ (if hm--html-noregion-formating-paragraph-map () (setq hm--html-noregion-formating-paragraph-map (make-sparse-keymap)) +; (define-key hm--html-noregion-formating-paragraph-map +; "o" 'hm--html-add-plaintext) (define-key hm--html-noregion-formating-paragraph-map - "o" 'hm--html-add-plaintext) - (define-key hm--html-noregion-formating-paragraph-map - "w" 'hm--html-add-preformated) + "p" 'hm--html-add-preformated) (define-key hm--html-noregion-formating-paragraph-map "b" 'hm--html-add-blockquote) (define-key hm--html-noregion-formating-paragraph-map - "l" 'hm--html-add-listing) + "C-b" 'hm--html-add-basefont) + (define-key hm--html-noregion-formating-paragraph-map + "f" 'hm--html-add-font) + (define-key hm--html-noregion-formating-paragraph-map + "c" 'hm--html-add-center) (define-key hm--html-noregion-formating-paragraph-map - "a" 'hm--html-add-abstract) + "C-c" 'hm--html-add-comment-to-region) +; (define-key hm--html-noregion-formating-paragraph-map +; "l" 'hm--html-add-listing) +; (define-key hm--html-noregion-formating-paragraph-map +; "a" 'hm--html-add-abstract) ) (defvar hm--html-region-formating-paragraph-map nil @@ -237,16 +248,24 @@ (if hm--html-region-formating-paragraph-map () (setq hm--html-region-formating-paragraph-map (make-sparse-keymap)) +; (define-key hm--html-region-formating-paragraph-map +; "o" 'hm--html-add-plaintext-to-region) (define-key hm--html-region-formating-paragraph-map - "o" 'hm--html-add-plaintext-to-region) - (define-key hm--html-region-formating-paragraph-map - "w" 'hm--html-add-preformated-to-region) + "p" 'hm--html-add-preformated-to-region) (define-key hm--html-region-formating-paragraph-map "b" 'hm--html-add-blockquote-to-region) (define-key hm--html-region-formating-paragraph-map - "l" 'hm--html-add-listing-to-region) + "C-b" 'hm--html-add-basefont-to-region) + (define-key hm--html-region-formating-paragraph-map + "f" 'hm--html-add-font-to-region) + (define-key hm--html-region-formating-paragraph-map + "c" 'hm--html-add-center-to-region) (define-key hm--html-region-formating-paragraph-map - "a" 'hm--html-add-abstract-to-region) + "C-c" 'hm--html-add-comment-to-region) +; (define-key hm--html-region-formating-paragraph-map +; "l" 'hm--html-add-listing-to-region) +; (define-key hm--html-region-formating-paragraph-map +; "a" 'hm--html-add-abstract-to-region) ) (defvar hm--html-noregion-formating-word-map nil @@ -315,11 +334,18 @@ (if hm--html-noregion-include-map () (setq hm--html-noregion-include-map (make-sparse-keymap)) - (define-key hm--html-noregion-include-map "t" 'hm--html-add-image-top) - (define-key hm--html-noregion-include-map "m" 'hm--html-add-image-middle) - (define-key hm--html-noregion-include-map "b" 'hm--html-add-image-bottom) + (define-key hm--html-noregion-include-map + [(control i) (t)] 'hm--html-add-image-top) + (define-key hm--html-noregion-include-map + [(control i) (m)] 'hm--html-add-image-middle) + (define-key hm--html-noregion-include-map + [(control i) (b)] 'hm--html-add-image-bottom) + (define-key hm--html-noregion-include-map "i" 'hm--html-add-image) + (define-key hm--html-noregion-include-map [(meta i)] 'hm--html-add-image-map) + (define-key hm--html-noregion-include-map "m" 'hm--html-add-map) + (define-key hm--html-noregion-include-map [(control a)] 'hm--html-add-area) (define-key hm--html-noregion-include-map "a" 'hm--html-add-applet) - (define-key hm--html-noregion-include-map "p" 'hm--html-add-applet) + (define-key hm--html-noregion-include-map "p" 'hm--html-add-applet-parameter) ) (defvar hm--html-region-include-map nil @@ -328,6 +354,8 @@ (if hm--html-region-include-map () (setq hm--html-region-include-map (make-sparse-keymap)) + (define-key hm--html-region-include-map "m" 'hm--html-add-map-to-region) + (define-key hm--html-region-include-map "a" 'hm--html-add-applet-to-region) ) ;(defvar hm--html-noregion-text-elements-map nil
--- a/lisp/hm--html-menus/hm--html-menu.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/hm--html-menus/hm--html-menu.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,6 +1,6 @@ ;;; hm--html-menu --- A menu for the hm--html-mode. ;;; -;;; $Id: hm--html-menu.el,v 1.3 1997/02/22 22:07:11 steve Exp $ +;;; $Id: hm--html-menu.el,v 1.4 1997/03/02 03:43:16 steve Exp $ ;;; ;;; Copyright (C) 1993 - 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -133,16 +133,18 @@ ["Horizontal rule" hm--html-add-horizontal-rule t] ) ("Formating Paragraphs" - ["Without links" hm--html-add-plaintext t] - ["With links" hm--html-add-preformated t] +; ["Without links" hm--html-add-plaintext t] + ["Preformated" hm--html-add-preformated t] + ["Blockquote" hm--html-add-blockquote t] "----" ["Basefont..." hm--html-add-basefont t] ["Font..." hm--html-add-font t] - ["Blockquote" hm--html-add-blockquote t] - ["Listing" hm--html-add-listing t] - ["Abstract" hm--html-add-abstract t] + ["Center" hm--html-add-center t] + ["Style" hm--html-add-style t] "----" - ["Center" hm--html-add-center t] + ["HTML Comment" hm--html-add-comment t] +; ["Listing" hm--html-add-listing t] +; ["Abstract" hm--html-add-abstract t] ) ("Formatting Words" ["Bold" hm--html-add-bold t] @@ -155,7 +157,6 @@ "----" ["Underline" hm--html-add-underline t] ["Strikethru" hm--html-add-strikethru t] - ;; ["Render" hm--html-add-render t] "----" ; ["Emphasized" hm--html-add-emphasized t] ; ["Strong" hm--html-add-strong t] @@ -173,6 +174,7 @@ ) ;; All the following commands are still implemented, but most ;; of them are not defined in HTM 3.2 +;; You've to load hm--html-not-standard.el to use them ; ("Computing" ; ["Definition" hm--html-add-definition t] ; ["Keyboard" hm--html-add-keyboard t] @@ -203,8 +205,8 @@ ; "----" ; ["Footnote" hm--html-add-footnote t] ; ["Margin" hm--html-add-margin t] - "----" - ["HTML Comment" hm--html-add-comment t] +; "----" +; ["HTML Comment" hm--html-add-comment t] ) ("Include" ["Top aligned image..." hm--html-add-image-top t] @@ -222,6 +224,7 @@ "----" ["Applet..." hm--html-add-applet t] ["Parameter..." hm--html-add-applet-parameter t] + ["Script" hm--html-add-script t] ; "----" ; ["File..." hm--html-add-server-side-include-file t] ; ["Command..." hm--html-add-server-side-include-command t] @@ -282,8 +285,8 @@ ["Paragraph Container" hm--html-add-paragraph t] ) ("Formating Paragraphs" - ["Without links" hm--html-add-plaintext t] - ["With links" hm--html-add-preformated t] +; ["Without links" hm--html-add-plaintext t] + ["Preformated" hm--html-add-preformated t] ) ("Formatting Words" ["Bold" hm--html-add-bold t] @@ -353,15 +356,17 @@ ["Document division" hm--html-add-document-division-to-region t] ) ("Formatting Paragraphs" - ["Without links" hm--html-add-plaintext-to-region t] - ["With links" hm--html-add-preformated-to-region t] +; ["Without links" hm--html-add-plaintext-to-region t] + ["Preformated" hm--html-add-preformated-to-region t] + ["Blockquote" hm--html-add-blockquote-to-region t] "----" ["Font..." hm--html-add-font-to-region t] - ["Blockquote" hm--html-add-blockquote-to-region t] - ["Listing" hm--html-add-listing-to-region t] - ["Abstract" hm--html-add-abstract-to-region t] + ["Center" hm--html-add-center-to-region t] + ["Style" hm--html-add-style-to-region t] "----" - ["Center" hm--html-add-center-to-region t] + ["HTML Comment" hm--html-add-comment-to-region t] +; ["Listing" hm--html-add-listing-to-region t] +; ["Abstract" hm--html-add-abstract-to-region t] ) ("Formatting Words" ["Bold" hm--html-add-bold-to-region t] @@ -422,13 +427,14 @@ ; "----" ; ["Footnote" hm--html-add-footnote-to-region t] ; ["Margin" hm--html-add-margin-to-region t] - "----" - ["HTML Comment" hm--html-add-comment-to-region t] +; "----" +; ["HTML Comment" hm--html-add-comment-to-region t] ) ("Include" ["Map..." hm--html-add-map-to-region t] "----" ["Applet..." hm--html-add-applet-to-region t] + ["Script" hm--html-add-script-to-region t] ) ("Forms" ["Form..." hm--html-add-form-to-region t]) @@ -457,8 +463,8 @@ ["Menu" hm--html-add-menu-to-region t] ) ("Formatting Paragraphs" - ["Without links" hm--html-add-plaintext-to-region t] - ["With links" hm--html-add-preformated-to-region t] +; ["Without links" hm--html-add-plaintext-to-region t] + ["Preformated" hm--html-add-preformated-to-region t] ) ("Formatting Words" ["Bold" hm--html-add-bold-to-region t] @@ -483,7 +489,6 @@ :active t :style radio :selected hm--html-expert] -; ["Marcs menu" hm--html-use-marcs-menu t] ) ["Reload config files" hm--html-load-config-files t] ["Templates (fixed dirs) ..." @@ -529,7 +534,7 @@ (if (and current-menubar (not (assoc menu-name current-menubar))) (progn (set-buffer-menubar (copy-sequence current-menubar)) - (add-menu nil menu-name (cdr hm--html-pulldown-menu))))) + (add-submenu nil (cons menu-name (cdr hm--html-pulldown-menu)) "HTML")))) (defun hm--install-html-menu (menu-name) (if (eq major-mode 'hm--html-mode) @@ -543,16 +548,6 @@ "The hm--html-minor-mode pulldown menu." (cons menu-name (cdr hm--html-pulldown-menu)))) -; (easy-menu-define hm--html-region-menu-map -; hm--html-region-mode-map -; "The hm--html-mode pulldown menu, if a region is active." -; (cons menu-name -; (cdr hm--html-pulldown-menu))) -; (if (and current-menubar (not (assoc "HTML" current-menubar))) -; (progn -; (set-buffer-menubar current-menubar) -; )) -; (add-menu nil "HTML" (cdr hm--html-pulldown-menu)) )) (if (adapt-emacs19p) @@ -584,60 +579,22 @@ (x-popup-menu nil hm--html-menu-region-novice-map)) -; (defun hm--html-emacs19-popup-menu (menu event) -; (let ((pos (posn-x-y (event-end event))) -; (window (posn-window (event-start event))) -; (answer)) -; (while menu -; (setq answer (x-popup-menu (list (list (car pos) (cdr pos)) -; window) -; menu)) -; (setq cmd (lookup-key menu (apply 'vector answer))) -; (setq menu nil) -; (and cmd -; (if (keymapp cmd) -; (setq menu cmd) -; (call-interactively cmd)))))) - -; (defun hm--html-popup-menu (event) -; "Pops the HTML- menu up, if no region is active." -; (interactive "@e") -; (if hm--html-expert -; (hm--html-emacs19-popup-menu hm--html-menu-noregion-expert-map -; event) -; (hm--html-emacs19-popup-menu hm--html-menu-noregion-novice-map -; event))) - -; (defun hm--html-popup-menu-region (event) -; "Pops the HTML- menu up, if a region is active." -; (interactive "@e") -; (if hm--html-expert -; (hm--html-emacs19-popup-menu hm--html-menu-region-expert-map -; event) -; (hm--html-emacs19-popup-menu hm--html-menu-region-novice-map -; event))) ) (defun hm--html-popup-menu (event) "Pops the HTML- menu up, if no region is active." (interactive "@e") -; (if hm--html-marc -; (popup-menu html-menu) (if hm--html-expert (popup-menu hm--html-menu-noregion-expert) (popup-menu hm--html-menu-noregion-novice))) -;) (defun hm--html-popup-menu-region (event) "Pops the HTML- menu up, if a region is active." (interactive "@e") -; (if hm--html-marc -; (popup-menu html-menu) (if hm--html-expert (popup-menu hm--html-menu-region-expert) (popup-menu hm--html-menu-region-novice))) -;) ) @@ -648,9 +605,6 @@ "Changes the HTML popup menu to the novice menu." (interactive) (setq hm--html-expert nil) -; (setq hm--html-marc nil) -; (define-key html-mode-map '(button3) 'hm--popup-html-menu) -; (define-key html-region-mode-map '(button3) 'hm--popup-html-menu) ) @@ -658,9 +612,6 @@ "Changes the HTML popup menu to the expert menu." (interactive) (setq hm--html-expert t) -; (setq hm--html-marc nil) -; (define-key html-mode-map '(button3) 'hm--popup-html-menu) -; (define-key html-region-mode-map '(button3) 'hm--popup-html-menu) ) ) @@ -706,45 +657,6 @@ ) ) -;(defun hm--html-use-marcs-menu () -; "Changes the HTML popup menu to Marc Andreessens menu." -; (interactive) -; (setq hm--html-marc t) -; ) - - -;(define-key html-mode-map '(button3) 'hm--popup-html-menu) -;(define-key html-region-mode-map '(button3) 'hm--popup-html-menu) - -;(add-hook 'html-mode-hook 'hm--install-html-menu) - - -;(defun sgml-popup-menu (event title entries) -; "Display a popup menu." -; (setq entries -; (loop for ent in entries collect -; (vector (car ent) -; (list 'setq 'value (list 'quote (cdr ent))) -; t))) -; (cond ((> (length entries) sgml-max-menu-size) -; (setq entries -; (loop for i from 1 while entries collect -; (let ((submenu -; (subseq entries 0 (min (length entries) -; sgml-max-menu-size)))) -; (setq entries (nthcdr sgml-max-menu-size -; entries)) -; (cons -; (format "%s '%s'-'%s'" -; title -; (sgml-range-indicator (aref (car submenu) 0)) -; (sgml-range-indicator -; (aref (car (last submenu)) 0))) -; submenu)))))) -;; (sgml-xemacs-get-popup-value (cons title entries))) -; (sgml-xemacs-get-popup-value (append hm--html-popup-menu -; (list "--" "--" title "==") -; entries))) (defvar hm--html-use-psgml t "Set this to t, if functions from the psgml-mode should be used.") @@ -835,10 +747,6 @@ )) -;(defvar hm--html-menu-load-hook nil -; "*Hook variable to execute functions after loading the file hm--html-menu.") - - (run-hooks 'hm--html-menu-load-hook)
--- a/lisp/hm--html-menus/hm--html-mode.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/hm--html-menus/hm--html-mode.el Mon Aug 13 08:51:32 2007 +0200 @@ -2,7 +2,7 @@ ;;; ;;; Keywords: hypermedia languages help docs wp ;;; -;;; $Id: hm--html-mode.el,v 1.3 1997/02/22 22:07:11 steve Exp $ +;;; $Id: hm--html-mode.el,v 1.4 1997/03/02 03:43:19 steve Exp $ ;;; ;;; Copyright (C) 1996, 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -53,6 +53,14 @@ ;;; (setq auto-mode-alist (cons '("\\.html$" . hm--html-mode) ;;; auto-mode-alist)) ;;; +;;; But you can also use the hm--html-minor-mode as an addition to +;;; the psgml html modes. For that you've to put the following line in +;;; your .emacs: +;;; (add-hook 'html-mode-hook 'hm--html-minor-mode) +;;; +;;; Note: This works only in an XEmacs version greater than 19.14 and +;;; also not in the XEmacs 20.0. +;;; ;;; Look at the file hm--html-configuration for further installation ;;; points. ;;; @@ -63,13 +71,19 @@ (require 'adapt) (require 'hm--date) (require 'hm--html) + (eval-when-compile (require 'hm--html-configuration)) + (hm--html-load-config-files) (require 'hm--html-indentation) +(require 'hm--html-keys) + +(defvar hm--html-minor-mode nil + "Non-nil, if the `hm--html-minor-mode' is active.") + (require 'hm--html-menu) (require 'hm--html-drag-and-drop) -(require 'hm--html-keys) ;;; The package version @@ -77,7 +91,7 @@ (defconst hm--html-menus-package-name "hm--html-menus") -(defconst hm--html-menus-package-version "5.2") +(defconst hm--html-menus-package-version "5.3") ;;; Generate the help buffer faces @@ -132,6 +146,7 @@ (setq comment-start "<!--" comment-end "-->") (make-local-variable 'sentence-end) (setq sentence-end "[<>.?!][]\"')}]*\\($\\| $\\|\t\\| \\)[ \t\n]*") + (make-local-variable 'indent-line-function) (setq indent-line-function 'hm--html-indent-line) (setq idd-actions hm--html-idd-actions) (hm--install-html-menu hm--html-mode-pulldown-menu-name) @@ -204,10 +219,6 @@ ;;; hm--html-minor-mode - -(defvar hm--html-minor-mode nil - "Non-nil, if the `hm--html-minor-mode' is active.") - (make-variable-buffer-local 'hm--html-minor-mode) (add-minor-mode 'hm--html-minor-mode " HM-HTML" hm--html-minor-mode-map)
--- a/lisp/hm--html-menus/hm--html.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/hm--html-menus/hm--html.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,4 +1,4 @@ -;;; $Id: hm--html.el,v 1.3 1997/02/22 22:07:11 steve Exp $ +;;; $Id: hm--html.el,v 1.4 1997/03/02 03:43:20 steve Exp $ ;;; ;;; Copyright (C) 1993 - 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -88,7 +88,6 @@ (goto-char end) (eval (list function-insert-end-tag end-tag)) (goto-char start) -; (backward-char (+ (length end-tag) (- end start))) (eval (list function-insert-start-tag start-tag)) (if function-insert-middle-tag (eval (list function-insert-middle-tag middle-tag))) @@ -101,7 +100,6 @@ (let ((start (point))) (insert tag) (hm--html-indent-region start (point)))) -; (html-maybe-deemphasize-region start (- (point) 1)))) (defun hm--html-insert-end-tag (tag) @@ -110,7 +108,6 @@ (let ((start (point))) (insert tag) (hm--html-indent-region start (point)))) -; (html-maybe-deemphasize-region start (- (point) 1)))) (defun hm--html-insert-start-tag-with-newline (tag) @@ -280,18 +277,18 @@ (setq head-end-point (when (re-search-forward "\\(</head\\)\\|\\(<body\\)\\|\\(</html\\)") (beginning-of-line) - (point)))) - (goto-char point) - (hm--html-search-place-for-element-in-head head-end-point) - (hm--html-add-tags 'hm--html-insert-start-tag - (concat "<META " - (if name-instead-of-http-equiv - "NAME=\"" - "HTTP-EQUIV=\"") - name - "\" CONTENT=\"" - content - "\">")))) + (point))) + (goto-char point) + (hm--html-search-place-for-element-in-head head-end-point) + (hm--html-add-tags 'hm--html-insert-start-tag + (concat "<META " + (if name-instead-of-http-equiv + "NAME=\"" + "HTTP-EQUIV=\"") + name + "\" CONTENT=\"" + content + "\">"))))) ;;; Functions which include something in HTML- documents @@ -560,7 +557,6 @@ (if (string= file "") (error "ERROR: No filename specified !") (insert "<INC SRV \"" file "\">")))) -; (html-maybe-deemphasize-region (1+ start) (1- (point)))))) (defun hm--html-add-server-side-include-command-with-isindex-parameter @@ -589,32 +585,6 @@ (if (= ?| (string-to-char command)) (insert "<INC " attribute" \"" command "\">") (insert "<INC " attribute " \"|" command "\">"))))) -; (html-maybe-deemphasize-region (1+ start) (1- (point))))))) - - -;(defun hm--html-add-server-side-include-command-with-parameter (command -; parameter) -; "This function adds a server side include command directive in the buffer. -;The directive is only supported by the NCSA http daemon." -; (interactive (list -; (completing-read -; "Include Command: " -; hm--html-server-side-include-command-with-parameter-alist) -; (read-string "Parameterlist sepearted by '?': "))) -; (let ((start (point))) -; (if (string= command "") -; (error "ERROR: No command specified !") -; (if (string= parameter "") -; (error "ERROR: No parameter specified !") -; (if (= ?| (string-to-char command)) -; (if (= ?? (string-to-char parameter)) -; (insert "<INC SRVURL \"" command parameter "\">") -; (insert "<INC SRVURL \"" command "?" parameter "\">")) -; (if (= ?? (string-to-char parameter)) -; (insert "<INC SRVURL \"|" command parameter "\">") -; (insert "<INC SRVURL \"|" command "?" parameter "\">"))) -; (html-maybe-deemphasize-region (1+ start) (1- (point))))))) - ;;; Functions, which adds tags of the form <starttag> ... </endtag> @@ -922,24 +892,6 @@ "</PRE>")) -(defun hm--html-add-plaintext () - "Adds the HTML tags for plaintext." - (interactive) - (hm--html-add-tags 'hm--html-insert-start-tag-with-newline - "<XMP>" - 'hm--html-insert-end-tag-with-newline - "</XMP>")) - - -(defun hm--html-add-plaintext-to-region () - "Adds the HTML tags for plaintext to the region." - (interactive) - (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline - "<XMP>" - 'hm--html-insert-end-tag-with-newline - "</XMP>")) - - (defun hm--html-add-blockquote () "Adds the HTML tags for blockquote." (interactive) @@ -957,24 +909,39 @@ 'hm--html-insert-end-tag-with-newline "</BLOCKQUOTE>")) -(defun hm--html-add-abstract () - "Adds the HTML tags for abstract text at the point in the current buffer." +(defun hm--html-add-script () + "Adds the HTML tags for script." (interactive) (hm--html-add-tags 'hm--html-insert-start-tag-with-newline - "<ABSTRACT>" + "<SCRIPT>" 'hm--html-insert-end-tag-with-newline - "</ABSTRACT>")) - - -(defun hm--html-add-abstract-to-region () - "Adds the HTML tags for abstract text to the region." + "</SCRIPT>")) + + +(defun hm--html-add-script-to-region () + "Adds the HTML tags for script to the region." (interactive) (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline - "<ABSTRACT>" + "<SCRIPT>" 'hm--html-insert-end-tag-with-newline - "</ABSTRACT>")) - - + "</SCRIPT>")) + +(defun hm--html-add-style () + "Adds the HTML tags for style." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag-with-newline + "<STYLE>" + 'hm--html-insert-end-tag-with-newline + "</STYLE>")) + + +(defun hm--html-add-style-to-region () + "Adds the HTML tags for style to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline + "<STYLE>" + 'hm--html-insert-end-tag-with-newline + "</STYLE>")) (defun hm--html-add-strikethru () "Adds the HTML tags for Strikethru at the point in the current buffer." @@ -989,9 +956,9 @@ "Adds the HTML tags for Strikethru to the region." (interactive) (hm--html-add-tags-to-region 'hm--html-insert-start-tag - "<S>" + "<STRIKE>" 'hm--html-insert-end-tag - "</S>")) + "</STRIKE>")) (defun hm--html-add-superscript () @@ -1030,60 +997,6 @@ "</SUB>")) -(defun hm--html-add-quote () - "Adds the HTML tags for Quote at the point in the current buffer." - (interactive) - (hm--html-add-tags 'hm--html-insert-start-tag - "<Q>" - 'hm--html-insert-end-tag - "</Q>")) - - -(defun hm--html-add-quote-to-region () - "Adds the HTML tags for Quote to the region." - (interactive) - (hm--html-add-tags-to-region 'hm--html-insert-start-tag - "<Q>" - 'hm--html-insert-end-tag - "</Q>")) - - -(defun hm--html-add-person () - "Adds the HTML tags for Person at the point in the current buffer." - (interactive) - (hm--html-add-tags 'hm--html-insert-start-tag - "<PERSON>" - 'hm--html-insert-end-tag - "</PERSON>")) - - -(defun hm--html-add-person-to-region () - "Adds the HTML tags for Person to the region." - (interactive) - (hm--html-add-tags-to-region 'hm--html-insert-start-tag - "<PERSON>" - 'hm--html-insert-end-tag - "</PERSON>")) - - -(defun hm--html-add-instance () - "Adds the HTML tags for Instance at the point in the current buffer." - (interactive) - (hm--html-add-tags 'hm--html-insert-start-tag - "<INS>" - 'hm--html-insert-end-tag - "</INS>")) - - -(defun hm--html-add-instance-to-region () - "Adds the HTML tags for Instance to the region." - (interactive) - (hm--html-add-tags-to-region 'hm--html-insert-start-tag - "<INS>" - 'hm--html-insert-end-tag - "</INS>")) - - (defun hm--html-add-option () "Adds the HTML tags for Option at the point in the current buffer." (interactive) @@ -1102,239 +1015,6 @@ "</OPT>")) -(defun hm--html-add-publication () - "Adds the HTML tags for Publication at the point in the current buffer." - (interactive) - (hm--html-add-tags 'hm--html-insert-start-tag - "<PUB>" - 'hm--html-insert-end-tag - "</PUB>")) - - -(defun hm--html-add-publication-to-region () - "Adds the HTML tags for Publication to the region." - (interactive) - (hm--html-add-tags-to-region 'hm--html-insert-start-tag - "<PUB>" - 'hm--html-insert-end-tag - "</PUB>")) - - -(defun hm--html-add-author () - "Adds the HTML tags for Author at the point in the current buffer." - (interactive) - (hm--html-add-tags 'hm--html-insert-start-tag - "<AUTHOR>" - 'hm--html-insert-end-tag - "</AUTHOR>")) - - -(defun hm--html-add-author-to-region () - "Adds the HTML tags for Author to the region." - (interactive) - (hm--html-add-tags-to-region 'hm--html-insert-start-tag - "<AUTHOR>" - 'hm--html-insert-end-tag - "</AUTHOR>")) - - -(defun hm--html-add-editor () - "Adds the HTML tags for Editor at the point in the current buffer." - (interactive) - (hm--html-add-tags 'hm--html-insert-start-tag - "<EDITOR>" - 'hm--html-insert-end-tag - "</EDITOR>")) - - -(defun hm--html-add-editor-to-region () - "Adds the HTML tags for Editor to the region." - (interactive) - (hm--html-add-tags-to-region 'hm--html-insert-start-tag - "<EDITOR>" - 'hm--html-insert-end-tag - "</EDITOR>")) - - -(defun hm--html-add-credits () - "Adds the HTML tags for Credits at the point in the current buffer." - (interactive) - (hm--html-add-tags 'hm--html-insert-start-tag - "<CREDITS>" - 'hm--html-insert-end-tag - "</CREDITS>")) - - -(defun hm--html-add-credits-to-region () - "Adds the HTML tags for Credits to the region." - (interactive) - (hm--html-add-tags-to-region 'hm--html-insert-start-tag - "<CREDITS>" - 'hm--html-insert-end-tag - "</CREDITS>")) - - -(defun hm--html-add-copyright () - "Adds the HTML tags for Copyright at the point in the current buffer." - (interactive) - (hm--html-add-tags 'hm--html-insert-start-tag - "<COPYRIGHT>" - 'hm--html-insert-end-tag - "</COPYRIGHT>")) - - -(defun hm--html-add-copyright-to-region () - "Adds the HTML tags for Copyright to the region." - (interactive) - (hm--html-add-tags-to-region 'hm--html-insert-start-tag - "<COPYRIGHT>" - 'hm--html-insert-end-tag - "</COPYRIGHT>")) - - -(defun hm--html-add-isbn () - "Adds the HTML tags for ISBN at the point in the current buffer." - (interactive) - (hm--html-add-tags 'hm--html-insert-start-tag - "<ISBN>" - 'hm--html-insert-end-tag - "</ISBN>")) - - -(defun hm--html-add-isbn-to-region () - "Adds the HTML tags for ISBN to the region." - (interactive) - (hm--html-add-tags-to-region 'hm--html-insert-start-tag - "<ISBN>" - 'hm--html-insert-end-tag - "</ISBN>")) - - -(defun hm--html-add-acronym () - "Adds the HTML tags for Acronym at the point in the current buffer." - (interactive) - (hm--html-add-tags 'hm--html-insert-start-tag - "<ACRONYM>" - 'hm--html-insert-end-tag - "</ACRONYM>")) - - -(defun hm--html-add-acronym-to-region () - "Adds the HTML tags for Acronym to the region." - (interactive) - (hm--html-add-tags-to-region 'hm--html-insert-start-tag - "<ACRONYM>" - 'hm--html-insert-end-tag - "</ACRONYM>")) - - -(defun hm--html-add-abbrevation () - "Adds the HTML tags for Abbrevation at the point in the current buffer." - (interactive) - (hm--html-add-tags 'hm--html-insert-start-tag - "<ABBREV>" - 'hm--html-insert-end-tag - "</ABBREV>")) - - -(defun hm--html-add-abbrev-to-region () - "Adds the HTML tags for Abbrev to the region." - (interactive) - (hm--html-add-tags-to-region 'hm--html-insert-start-tag - "<ABBREV>" - 'hm--html-insert-end-tag - "</ABBREV>")) - - -(defun hm--html-add-command () - "Adds the HTML tags for Command at the point in the current buffer." - (interactive) - (hm--html-add-tags 'hm--html-insert-start-tag - "<CMD>" - 'hm--html-insert-end-tag - "</CMD>")) - - -(defun hm--html-add-command-to-region () - "Adds the HTML tags for Command to the region." - (interactive) - (hm--html-add-tags-to-region 'hm--html-insert-start-tag - "<CMD>" - 'hm--html-insert-end-tag - "</CMD>")) - - -(defun hm--html-add-argument () - "Adds the HTML tags for Argument at the point in the current buffer." - (interactive) - (hm--html-add-tags 'hm--html-insert-start-tag - "<ARG>" - 'hm--html-insert-end-tag - "</ARG>")) - - -(defun hm--html-add-argument-to-region () - "Adds the HTML tags for Argument to the region." - (interactive) - (hm--html-add-tags-to-region 'hm--html-insert-start-tag - "<ARG>" - 'hm--html-insert-end-tag - "</ARG>")) - - -(defun hm--html-add-literature () - "Adds the HTML tags for Literature at the point in the current buffer." - (interactive) - (hm--html-add-tags 'hm--html-insert-start-tag - "<LIT>" - 'hm--html-insert-end-tag - "</LIT>")) - - -(defun hm--html-add-literature-to-region () - "Adds the HTML tags for Literature to the region." - (interactive) - (hm--html-add-tags-to-region 'hm--html-insert-start-tag - "<LIT>" - 'hm--html-insert-end-tag - "</LIT>")) - - -(defun hm--html-add-footnote () - "Adds the HTML tags for Footnote at the point in the current buffer." - (interactive) - (hm--html-add-tags 'hm--html-insert-start-tag - "<FOOTNOTE>" - 'hm--html-insert-end-tag - "</FOOTNOTE>")) - - -(defun hm--html-add-footnote-to-region () - "Adds the HTML tags for Footnote to the region." - (interactive) - (hm--html-add-tags-to-region 'hm--html-insert-start-tag - "<FOOTNOTE>" - 'hm--html-insert-end-tag - "</FOOTNOTE>")) - - -(defun hm--html-add-margin () - "Adds the HTML tags for Margin at the point in the current buffer." - (interactive) - (hm--html-add-tags 'hm--html-insert-start-tag - "<MARGIN>" - 'hm--html-insert-end-tag - "</MARGIN>")) - - -(defun hm--html-add-margin-to-region () - "Adds the HTML tags for Margin to the region." - (interactive) - (hm--html-add-tags-to-region 'hm--html-insert-start-tag - "<MARGIN>" - 'hm--html-insert-end-tag - "</MARGIN>")) - (defun hm--html-read-font-size (&optional only-absolute-size) "Reads the size for the FONT element. It returns nil, if the size should not be changed." @@ -1411,23 +1091,6 @@ ;;; Lists -(defun hm--html-add-listing () - "Adds the HTML tags for listing." - (interactive) - (hm--html-add-tags 'hm--html-insert-start-tag-with-newline - "<LISTING>" - 'hm--html-insert-end-tag-with-newline - "</LISTING>")) - - -(defun hm--html-add-listing-to-region () - "Adds the HTML tags for listing to the region." - (interactive) - (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline - "<LISTING>" - 'hm--html-insert-end-tag-with-newline - "</LISTING>")) - (defun hm--html-add-center () "Adds the HTML tags for center at the current point." (interactive) @@ -1607,9 +1270,6 @@ "<DL>" 'hm--html-insert-end-tag-with-newline "</DL>")) - -; 'hm--html-insert-start-tag -; "<DT> ")) (defun hm--html-add-description-title () @@ -2034,12 +1694,7 @@ (defun hm--html-add-link-target (name) "Adds the HTML tags for a link target at point in the current buffer." -; (interactive "sName (or RET for numeric): ") (interactive "sName: ") -; (and (string= name "") -; (progn -; (setq html-link-counter (1+ html-link-counter)) -; (setq name (format "%d" html-link-counter)))) (hm--html-add-tags 'hm--html-insert-start-tag (concat "<A NAME=\"" name "\">") 'hm--html-insert-end-tag @@ -2067,25 +1722,6 @@ (if extent (delete-extent extent))) -; ) -; ;; For the Emacs 19 -; (defun hm--html-mark-example (parameter-list) -; "Marks the example of the parameterlist in the current buffer. -;It returns the example extent." -; (if (hm--html-get-example-from-parameter-list parameter-list) -; (progn -; (search-forward (hm--html-get-example-from-parameter-list -; parameter-list)) -; (put-text-property (match-beginning 0) -; (match-end 0) -; 'face -; 'hm--html-help-face)))) -; -; -; (defun hm--html-unmark-example (extent) -; "Unmarks the example for the current question." -; t)) - (defun hm--html-write-alist-in-buffer (alist) "The function writes the contents of the ALIST in the currentbuffer." @@ -2190,11 +1826,6 @@ nil))) (hm--html-unmark-example marked-object) (hm--html-delete-wrong-path-prefix filename)) -; (if (not hm--html-delete-wrong-path-prefix) -; filename -; (if (string-match hm--html-delete-wrong-path-prefix filename) -; (substring filename (match-end 0)) -; filename))) "")) @@ -2228,7 +1859,6 @@ (defun hm--html-generate-help-buffer-faces () "Generates faces for the add-link-help-buffer." (if (not (facep 'hm--html-help-face)) -; (if (not hm--html-faces-exist) (progn (setq hm--html-faces-exist t) (make-face 'hm--html-help-face) @@ -3099,7 +2729,6 @@ (interactive "sNode Link to: ") (hm--html-add-tags-to-region 'hm--html-insert-start-tag (concat "<A HREF=\"" -; (read-string "Link to: ") link-object "\">") 'hm--html-insert-end-tag @@ -3142,7 +2771,8 @@ (if (re-search-forward (concat "\\((\\)" - "\\([ \t]*[0-3]?[0-9]-[A-Z][a-z][a-z]-[0-9][0-9][0-9][0-9][ \t]*\\)" + "\\([ \t]*[0-3]?[0-9]-[A-Z][a-z][a-z]-[0-9][0-9][0-9][0-9]" + "[ \t]*\\)" "\\()[ \t\n]*</title>\\)") end-of-head t) @@ -3198,7 +2828,6 @@ USERNAME is the name to be inserted in the comment." (if newline (progn -; (end-of-line) (newline))) (hm--html-add-comment) (insert "Changed by: " username ", " (hm--date))) @@ -3282,8 +2911,6 @@ (if filename (tmpl-insert-template-file filename) (call-interactively 'tmpl-insert-template-file)) -; (if hm--html-automatic-created-comment ; better in the template files -; (hm--html-insert-created-comment t) )) (defun hm--html-insert-template-from-fixed-dirs (filename) @@ -3304,42 +2931,8 @@ (if filename (tmpl-insert-template-file-from-fixed-dirs filename) (call-interactively 'tmpl-insert-template-file-from-fixed-dirs)) -; (if hm--html-automatic-created-comment ; better in the template files -; (hm--html-insert-created-comment t) )) -;(defun hm--html-insert-template (filename) -; "Inserts a templatefile." -; (interactive -; (list (tmpl-read-template-filename hm--html-template-dir -; hm--html-automatic-expand-templates -; hm--html-template-filter-regexp -; 'hm--html-template-file-history))) -; (interactive (list -; (let ((file-name-history hm--html-template-file-history)) -; (read-file-name "Templatefile: " -; hm--html-template-dir -; nil -; t -; nil)))) -;; 'hm--html-template-file-history))) -; (insert-file (expand-file-name filename)) -; (if hm--html-automatic-expand-templates -; (tmpl-expand-templates-in-buffer)) -; (if hm--html-automatic-created-comment -; (hm--html-insert-created-comment t))) - - - -;;; Functions for highlighting - -;(defun hm--html-toggle-use-highlighting () -; "Toggles the variable html-use-highlighting." -; (interactive) -; (if html-use-highlighting -; (setq html-use-highlighting nil) -; (setq html-use-highlighting t))) - ;;; Functions for font lock mode @@ -3357,44 +2950,9 @@ (copy-face 'font-lock-doc-string-face 'font-lock-string-face) (set-face-underline-p 'font-lock-string-face t))) (setq font-lock-comment-face 'font-lock-comment-face) - ;; (setq font-lock-doc-string-face 'font-lock-doc-string-face) (setq font-lock-string-face 'font-lock-string-face))) -;(defun hm--html-set-font-lock-color () -; "Sets the color for the font lock mode in HTML mode. -;This color is used to highlight HTML expressions." -; (interactive) -; (setq hm--html-font-lock-color -; (completing-read "Color: " -; '(("grey80") -; ("black") -; ("red") -; ("yellow") -; ("blue")) -; nil -; nil -; "black")) -; (set-face-foreground 'font-lock-comment-face hm--html-font-lock-color) -; (set-face-foreground 'font-lock-string-face hm--html-font-lock-color)) - - -;;; Functions which determine if an active region exists - -;(defvar hm--region-active nil -; "t : Region is active. -;nil: Region is inactive.") -; -; -;(defun hm--set-hm--region-active () -; (setq hm--region-active t)) -; -; -;(defun hm--unset-hm--region-active () -; (setq hm--region-active nil)) - - - ;;; Functions to insert forms (defun hm--html-form-read-method () @@ -4496,7 +4054,9 @@ (defun hm--html-view-www-package-docu () "View the WWW documentation of the package." (interactive) - (w3-fetch "http://www.tnt.uni-hannover.de:80/data/info/www/tnt/soft/info/www/html-editors/hm--html-menus/overview.html")) + (w3-fetch (concat "http://www.tnt.uni-hannover.de" + "/~muenkel/software/own/hm--html-menus/overview.html"))) + ;;; ; Bug reporting @@ -4557,15 +4117,9 @@ 'hm--html-wais-path-alist 'hm--html-wais-servername:port-alist 'hm--html-wais-servername:port-default -; 'html-deemphasize-color 'html-document-previewer -; 'html-document-previewer-args -; 'html-emphasize-color -; 'html-quotify-hrefs-on-find 'hm--html-region-mode 'html-sigusr1-signal-value -; 'html-use-font-lock -; 'html-use-highlighting ) nil nil @@ -4582,11 +4136,9 @@ (add-hook 'zmacs-activate-region-hook 'hm--html-switch-region-modes-on) -; (function (lambda () (hm--html-region-mode 1)))) (add-hook 'zmacs-deactivate-region-hook 'hm--html-switch-region-modes-off) -; (function (lambda () (hm--html-region-mode -1)))) ) @@ -4594,28 +4146,13 @@ (add-hook 'activate-mark-hook 'hm--html-switch-region-modes-on) -; (function (lambda () (hm--html-region-mode t)))) (add-hook 'deactivate-mark-hook 'hm--html-switch-region-modes-off) -; (function (lambda () (hm--html-region-mode nil)))) ) -;(add-hook 'hm--html-mode-hook -; (function -; (lambda () -; (make-variable-buffer-local 'write-file-hooks) -; (add-hook 'write-file-hooks -; 'hm--html-maybe-new-date-and-changed-comment)))) - -;(add-hook 'zmacs-activate-region-hook 'hm--set-hm--region-active) -; -;(add-hook 'zmacs-deactivate-region-hook 'hm--unset-hm--region-active) - - - ;;; ; Environment loading ; @@ -4675,76 +4212,6 @@ ) - -;(hm--html-load-config-files) - -;;; Definition of the minor mode html-region-mode - -;(defvar html-region-mode nil -; "*t, if the minor mode html-region-mode is on and nil otherwise.") - -;(make-variable-buffer-local 'html-region-mode) - -;(defvar html-region-mode-map nil "") - -;(hm--html-load-config-files) - -;(if hm--html-use-old-keymap -; (progn - -;;(setq minor-mode-alist (cons '(html-region-mode " Region") minor-mode-alist)) -;(or (assq 'html-region-mode minor-mode-alist) -; (setq minor-mode-alist -; (purecopy -; (append minor-mode-alist -; '((html-region-mode " Region")))))) - -;(defun html-region-mode (on) -; "Turns the minor mode html-region-mode on or off. -;The function turns the html-region-mode on, if ON is t and off otherwise." -; (if (string= mode-name "HTML") -; (if on -; ;; html-region-mode on -; (progn -; (setq html-region-mode t) -; (use-local-map html-region-mode-map)) -; ;; html-region-mode off -; (setq html-region-mode nil) -; (use-local-map html-mode-map)))) - -;)) - - - - - -;;; -; Set font lock color -; (hm--html-font-lock-color should be defined in hm--html-configuration.el -; oder .hm--html-configuration.el) -; -;(require 'font-lock) -;(load-library "font-lock") -;(set-face-foreground 'font-lock-comment-face hm--html-font-lock-color) - - -;(hm--html-generate-help-buffer-faces) - - - - -;;;;;;;; -;(setq hm--html-hostname-search-string -; "[-a-zA-Z0-9]*\\.[-a-zA-Z0-9]*\\.[-a-zA-Z0-9.]*") -; -;(defun hm--html-get-next-hostname () -; (interactive) -; (search-forward-regexp hm--html-hostname-search-string) -; (buffer-substring (match-beginning 0) (match-end 0))) -; - -;;; Announce the feature hm--html-configuration - ;;; quotify href (defvar hm--html-quotify-href-regexp
--- a/lisp/hyperbole/ChangeLog Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/hyperbole/ChangeLog Mon Aug 13 08:51:32 2007 +0200 @@ -1,3 +1,11 @@ +Sat Feb 22 14:30:14 1997 Bob Weiner <weiner@infodock.com> + +* hypb.el (hypb:ida-logo-keymap): Added conditional for Emacs keybinding. + +============================================================================== +V4.022 changes ^^^^: +============================================================================== + Fri Feb 21 17:49:01 1997 Bob Weiner <weiner@infodock.com> * hmouse-reg.el (hmouse-get-bindings):
--- a/lisp/hyperbole/Makefile Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/hyperbole/Makefile Mon Aug 13 08:51:32 2007 +0200 @@ -4,7 +4,7 @@ # AUTHOR: Bob Weiner # # ORIG-DATE: 15-Jun-94 at 03:42:38 -# LAST-MOD: 21-Feb-97 at 18:04:02 by Bob Weiner +# LAST-MOD: 23-Feb-97 at 23:22:48 by Bob Weiner # # This file is part of Hyperbole. # Available for use and distribution under the same terms as GNU Emacs. @@ -98,7 +98,7 @@ # NO CHANGES REQUIRED BELOW HERE. # ########################################################################## -HYPB_VERSION = 4.021 +HYPB_VERSION = 4.022 # Libraries that must be pre-loaded before trying to byte-compile anything. PRELOADS = $(SITE_PRELOADS) -l ./hversion.el -l ./hyperbole.el -l ./hsite.el
--- a/lisp/hyperbole/README Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/hyperbole/README Mon Aug 13 08:51:32 2007 +0200 @@ -11,7 +11,7 @@ # Tel: +1 408-243-3300 # # ORIG-DATE: 19-Oct-91 at 03:27:47 -# LAST-MOD: 21-Feb-97 at 18:04:41 by Bob Weiner +# LAST-MOD: 23-Feb-97 at 23:25:29 by Bob Weiner # # See the Copyright section below for license information. @@ -165,7 +165,7 @@ =========================================================================== -* What's New in V4.02 and V4.021 +* What's New in V4.02-V4.022 =========================================================================== (See "ChangeLog" for more complete details of changes.)
--- a/lisp/hyperbole/hmouse-drv.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/hyperbole/hmouse-drv.el Mon Aug 13 08:51:32 2007 +0200 @@ -7,7 +7,7 @@ ;; ;; AUTHOR: Bob Weiner ;; ORIG-DATE: 04-Feb-90 -;; LAST-MOD: 1-Nov-95 at 21:44:52 by Bob Weiner +;; LAST-MOD: 22-Feb-97 at 14:16:55 by Bob Weiner ;; ;; This file is part of Hyperbole. ;; Available for use and distribution under the same terms as GNU Emacs.
--- a/lisp/hyperbole/hversion.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/hyperbole/hversion.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,6 +1,6 @@ ;;!emacs ;; -;; LCD-ENTRY: hyperbole|Bob Weiner|hyperbole@infodock.com|Everyday Info Manager|21-Feb-97|4.021|ftp://ftp.xemacs.org/pub/infodock +;; LCD-ENTRY: hyperbole|Bob Weiner|hyperbole@infodock.com|Everyday Info Manager|23-Feb-97|4.022|ftp://ftp.xemacs.org/pub/infodock ;; ;; FILE: hversion.el ;; SUMMARY: Hyperbole version, system and load path information. @@ -11,7 +11,7 @@ ;; ORG: InfoDock Associates ;; ;; ORIG-DATE: 1-Jan-94 -;; LAST-MOD: 21-Feb-97 at 18:03:57 by Bob Weiner +;; LAST-MOD: 23-Feb-97 at 23:22:37 by Bob Weiner ;; ;; This file is part of Hyperbole. ;; Available for use and distribution under the same terms as GNU Emacs. @@ -26,7 +26,7 @@ ;;; Public variables ;;; ************************************************************************ -(defconst hyperb:version "04.021" "Hyperbole revision number.") +(defconst hyperb:version "04.022" "Hyperbole revision number.") ;;; Support button highlighting and flashing under XEmacs. ;;;
--- a/lisp/hyperbole/hypb.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/hyperbole/hypb.el Mon Aug 13 08:51:32 2007 +0200 @@ -9,7 +9,7 @@ ;; ORG: InfoDock Associates ;; ;; ORIG-DATE: 6-Oct-91 at 03:42:38 -;; LAST-MOD: 19-Feb-97 at 12:18:08 by Bob Weiner +;; LAST-MOD: 22-Feb-97 at 14:30:10 by Bob Weiner ;; ;; This file is part of Hyperbole. ;; Available for use and distribution under the same terms as GNU Emacs. @@ -566,9 +566,14 @@ (defvar hypb:ida-logo-keymap (let ((map (make-sparse-keymap))) - (define-key map 'button1 'hypb:ida-home-page) - (define-key map 'button2 'hypb:ida-home-page) - (define-key map '(return) 'hypb:ida-home-page) + (cond (hyperb:emacs19-p + (define-key map [button-1] 'hypb:ida-home-page) + (define-key map [button-2] 'hypb:ida-home-page) + (define-key map "\C-m" 'hypb:ida-home-page)) + (hyperb:lemacs-p + (define-key map 'button1 'hypb:ida-home-page) + (define-key map 'button2 'hypb:ida-home-page) + (define-key map '(return) 'hypb:ida-home-page))) map) "Keymap used when on the InfoDock Associates logo glyph.")
--- a/lisp/hyperbole/kotl/kprop-xe.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/hyperbole/kotl/kprop-xe.el Mon Aug 13 08:51:32 2007 +0200 @@ -6,14 +6,15 @@ ;; KEYWORDS: outlines, wp ;; ;; AUTHOR: Bob Weiner +;; ORG: InfoDock Associates ;; ;; ORIG-DATE: 7/27/93 -;; LAST-MOD: 30-Oct-95 at 21:21:20 by Bob Weiner +;; LAST-MOD: 28-Feb-97 at 23:41:02 by Bob Weiner ;; ;; This file is part of Hyperbole. ;; Available for use and distribution under the same terms as GNU Emacs. ;; -;; Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc. +;; Copyright (C) 1993, 1994, 1995, 1997 Free Software Foundation, Inc. ;; Developed with support from Motorola Inc. ;; ;; DESCRIPTION: @@ -92,7 +93,8 @@ text. Text inserted before or after this region does not inherit the added properties." ;; Don't use text properties internally because they don't work as desired - ;; when copied to a string and then reinserted. + ;; when copied to a string and then reinserted, at least in some versions + ;; of XEmacs. (let ((extent (make-extent start end object))) (if (null extent) (error "(kproperty:put): No extent at %d-%d to add properties %s" @@ -100,7 +102,7 @@ (if (/= (mod (length property-list) 2) 0) (error "(kproperty:put): Property-list has odd number of elements, %s" property-list)) - (set-extent-property extent 'text-prop t) + (set-extent-property extent 'text-prop (car property-list)) (set-extent-property extent 'duplicable t) (set-extent-property extent 'start-open t) (set-extent-property extent 'end-open t)
--- a/lisp/mel/mel-g.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/mel/mel-g.el Mon Aug 13 08:51:32 2007 +0200 @@ -9,7 +9,7 @@ ;;; Maintainer: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp> ;;; Created: 1995/10/25 ;;; Version: -;;; $Id: mel-g.el,v 1.3 1996/12/29 00:14:57 steve Exp $ +;;; $Id: mel-g.el,v 1.4 1997/03/02 03:43:25 steve Exp $ ;;; Keywords: MIME, base64, gzip ;;; ;;; This file is not part of MEL (MIME Encoding Library) yet. @@ -36,10 +36,18 @@ ;;; @ variables ;;; -(defvar gzip64-external-encoder '("sh" "-c" "gzip -c | mmencode") +(defvar gzip64-external-encoder `("sh" "-c" + ,(concat + "gzip -c | " + (expand-file-name "mmencode" + exec-directory))) "*list of gzip64 encoder program name and its arguments.") -(defvar gzip64-external-decoder '("sh" "-c" "mmencode -u | gzip -dc") +(defvar gzip64-external-decoder `("sh" "-c" + ,(concat + (expand-file-name "mmencode" + exec-directory) + " -u | gzip -dc")) "*list of gzip64 decoder program name and its arguments.")
--- a/lisp/modes/python-mode.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/modes/python-mode.el Mon Aug 13 08:51:32 2007 +0200 @@ -6,8 +6,8 @@ ;; 1992-1994 Tim Peters ;; Maintainer: python-mode@python.org ;; Created: Feb 1992 -;; Version: 2.89 -;; Last Modified: 1997/01/30 20:16:18 +;; Version: 2.90 +;; Last Modified: 1997/02/24 03:37:22 ;; Keywords: python languages oop ;; This software is provided as-is, without express or implied @@ -208,7 +208,7 @@ displayed in the echo area, and if `py-beep-if-tab-change' is non-nil the Emacs bell is also rung as a warning.") -(defconst python-font-lock-keywords +(defvar python-font-lock-keywords (let* ((keywords '("and" "break" "class" "continue" "def" "del" "elif" "else:" "except" "except:" "exec" @@ -234,6 +234,8 @@ 1 font-lock-function-name-face) )) "Additional expressions to highlight in Python mode.") +(put 'python-mode 'font-lock-defaults '(python-font-lock-keywords)) + (defvar imenu-example--python-show-method-args-p nil "*Controls echoing of arguments of functions & methods in the imenu buffer. @@ -716,7 +718,6 @@ (setq major-mode 'python-mode mode-name "Python" local-abbrev-table python-mode-abbrev-table - font-lock-defaults '(python-font-lock-keywords) paragraph-separate "^[ \t]*$" paragraph-start "^[ \t]*$" require-final-newline t @@ -2411,7 +2412,7 @@ nil))) -(defconst py-version "2.89" +(defconst py-version "2.90" "`python-mode' version number.") (defconst py-help-address "python-mode@python.org" "Address accepting submission of bug reports.")
--- a/lisp/modes/sh-script.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/modes/sh-script.el Mon Aug 13 08:51:32 2007 +0200 @@ -49,6 +49,49 @@ (require 'executable) +;;; interpreter-mode-alist is not compatible between Emacs and XEmacs. +;;; So fake it. + +(defvar sh-interpreter-mode-alist + '(("perl" . perl-mode) + ("perl5" . perl-mode) + ("wish" . tcl-mode) + ("wishx" . tcl-mode) + ("tcl" . tcl-mode) + ("tclsh" . tcl-mode) + ("awk" . awk-mode) + ("mawk" . awk-mode) + ("nawk" . awk-mode) + ("gawk" . awk-mode) + ("scm" . scheme-mode) + ("ash" . sh-mode) + ("bash" . sh-mode) + ("csh" . sh-mode) + ("dtksh" . sh-mode) + ("es" . sh-mode) + ("itcsh" . sh-mode) + ("jsh" . sh-mode) + ("ksh" . sh-mode) + ("oash" . sh-mode) + ("pdksh" . sh-mode) + ("rc" . sh-mode) + ("sh" . sh-mode) + ("sh5" . sh-mode) + ("tcsh" . sh-mode) + ("wksh" . sh-mode) + ("wsh" . sh-mode) + ("zsh" . sh-mode) + ("tail" . text-mode) + ("more" . text-mode) + ("less" . text-mode) + ("pg" . text-mode)) + "Alist mapping interpreter names to major modes. +This alist applies to files whose first line starts with `#!'. +Each element looks like (INTERPRETER . MODE). +The car of each element is compared with +the name of the interpreter specified in the first line. +If it matches, mode MODE is selected.") + (defvar sh-mode-hook nil "*Hook run by `sh-mode'.") @@ -339,8 +382,8 @@ "Word to delimit here documents.") (defvar sh-test - '((sh "[ ]" . 3) - (ksh88 "[[ ]]" . 4)) + '((sh "[ ]" . 2) + (ksh88 "[[ ]]" . 3)) "Initial input in Bourne if, while and until skeletons. See `sh-feature'.") @@ -678,6 +721,15 @@ ;;;###autoload (defalias 'shell-script-mode 'sh-mode) +;;; XEmacs +(put 'sh-mode 'font-lock-defaults + `((sh-font-lock-keywords + sh-font-lock-keywords-1 + sh-font-lock-keywords-2) + ,sh-font-lock-keywords-only + nil + ((?/ . "w") (?~ . "w") (?. . "w") (?- . "w") (?_ . "w")))) + (defun sh-font-lock-keywords (&optional keywords) "Function to get simple fontification based on `sh-font-lock-keywords'. @@ -725,7 +777,8 @@ Makes this script executable via `executable-set-magic'. Calls the value of `sh-set-shell-hook' if set." (interactive (list (completing-read "Name or path of shell: " - interpreter-mode-alist + ;; XEmacs change + sh-interpreter-mode-alist (lambda (x) (eq (cdr x) 'sh-mode))) (eq executable-query 'function) t)) @@ -735,8 +788,10 @@ (setq sh-shell-file (executable-set-magic shell (sh-feature sh-shell-arg))) (setq require-final-newline (sh-feature sh-require-final-newline) ;;; local-abbrev-table (sh-feature sh-abbrevs) - font-lock-keywords nil ; force resetting - font-lock-syntax-table nil + font-lock-defaults-computed nil + ;; Next two lines kill XEmacs + ;font-lock-keywords nil ; force resetting + ;font-lock-syntax-table nil comment-start-skip (concat (sh-feature sh-comment-prefix) "#+[\t ]*") mode-line-process (format "[%s]" sh-shell) sh-shell-variables nil @@ -748,7 +803,9 @@ (setq shell (cdr shell))) (and (boundp 'font-lock-mode) font-lock-mode + ;; Gnu Emacs, doesn't work (font-lock-mode (font-lock-mode 0))) + ;; (font-lock-fontify-buffer)) (run-hooks 'sh-set-shell-hook))
--- a/lisp/modes/xrdb-mode.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/modes/xrdb-mode.el Mon Aug 13 08:51:32 2007 +0200 @@ -3,8 +3,8 @@ ;; Author: 1994-1997 Barry A. Warsaw ;; Maintainer: tools-help@python.org ;; Created: May 1994 -;; Version: 1.17 -;; Last Modified: 1997/02/21 22:28:59 +;; Version: 1.21 +;; Last Modified: 1997/02/24 03:34:56 ;; Keywords: data languages ;; Copyright (C) 1994 Barry A. Warsaw @@ -46,7 +46,22 @@ ;; don't intend to do any work on it any more... unless I lose my ;; place in paradise. I promise to be good, Steve. :-) :-)" ;; -;; I have fallen from grace. +;; I have fallen from grace and have been kicked out of paradise. So +;; has Steve Jobs apparently :-) +;; +;; To use, put the following in your .emacs: +;; +;; (autoload 'xrdb-mode "xrdb-mode" "Mode for editing X resource files" t) +;; +;; You may also want something like: +;; +;; (setq auto-mode-alist +;; (append '(("\\.Xdefaults$" . xrdb-mode) +;; ("\\.Xenvironment$" . xrdb-mode) +;; ("\\.Xresources$" . xrdb-mode) +;; ) +;; auto-mode-alist)) + ;; Code: @@ -338,21 +353,28 @@ ;; faces and font-locking -(require 'font-lock) +(defvar xrdb-option-name-face 'xrdb-option-name-face + "Face for option name on a line in an X resource db file") +(defvar xrdb-option-value-face 'xrdb-option-value-face + "Face for option value on a line in an X resource db file") + (make-face 'xrdb-option-name-face) (make-face 'xrdb-option-value-face) -(or (face-differs-from-default-p 'xrdb-option-name-face) - (copy-face 'font-lock-keyword-face 'xrdb-option-name-face)) -(or (face-differs-from-default-p 'xrdb-option-value-face) - (copy-face 'font-lock-string-face 'xrdb-option-value-face)) + +(defun xrdb-font-lock-mode-hook () + (or (face-differs-from-default-p 'xrdb-option-name-face) + (copy-face 'font-lock-keyword-face 'xrdb-option-name-face)) + (or (face-differs-from-default-p 'xrdb-option-value-face) + (copy-face 'font-lock-string-face 'xrdb-option-value-face)) + (remove-hook 'font-lock-mode-hook 'xrdb-font-lock-mode-hook)) +(add-hook 'font-lock-mode-hook 'xrdb-font-lock-mode-hook) (defvar xrdb-font-lock-keywords (list '("^[ \t]*\\([^\n:]*:\\)[ \t]*\\(.*\\)$" (1 xrdb-option-name-face) (2 xrdb-option-value-face))) - "Additional expressions to highlight in Xrdb mode.") - -(put 'xrdb-mode 'font-lock-defaults '(xrdb-font-lock-keywords nil)) + "Additional expressions to highlight in X resource db mode.") +(put 'xrdb-mode 'font-lock-defaults '(xrdb-font-lock-keywords)) @@ -380,7 +402,7 @@ ;; submitting bug reports -(defconst xrdb-version "1.17" +(defconst xrdb-version "1.21" "xrdb-mode version number.") (defconst xrdb-mode-help-address "tools-help@python.org"
--- a/lisp/packages/balloon-help.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/packages/balloon-help.el Mon Aug 13 08:51:32 2007 +0200 @@ -57,7 +57,7 @@ (provide 'balloon-help) -(defvar balloon-help-version "1.03" +(defvar balloon-help-version "1.04" "Version string for Balloon Help.") (defvar balloon-help-mode t @@ -81,6 +81,9 @@ (defvar balloon-help-border-color "black" "*The color for displaying balloon help frame's border.") +(defvar balloon-help-border-width 2 + "*The width of the balloon help frame's border.") + (defvar balloon-help-use-sound nil "*Non-nil value means play a sound to herald the appearance and disappearance of the help frame. @@ -206,14 +209,20 @@ (top (cdr (assq 'top params))) (left (cdr (assq 'left params))) (xtop-toolbar-height - (if (specifier-instance top-toolbar) - (specifier-instance top-toolbar-height) + (if (and (specifier-instance top-toolbar-visible-p frame) + (specifier-instance top-toolbar frame)) + (specifier-instance top-toolbar-height frame) 0)) (xleft-toolbar-width - (if (specifier-instance left-toolbar) - (specifier-instance left-toolbar-width) + (if (and (specifier-instance left-toolbar-visible-p frame) + (specifier-instance left-toolbar frame)) + (specifier-instance left-toolbar-width frame) 0)) - (menubar-height (if current-menubar 22 0))) + (menubar-height + (if (and buffer + (specifier-instance menubar-visible-p) + (save-excursion (set-buffer buffer) current-menubar)) + 22 0))) (setq balloon-help-help-object-x (+ left xleft-toolbar-width (event-x-pixel event)) balloon-help-help-object-y @@ -335,6 +344,11 @@ (and (not done) (setq lines (1+ lines)))) (set-frame-size balloon-help-frame (+ 1 longest) lines)))) +(defun balloon-help-make-junk-frame () + (let ((window-min-height 1) + (window-min-width 1)) + (make-frame '(minibuffer t initially-unmapped t width 1 height 1)))) + (defun balloon-help-make-help-frame () (save-excursion (setq balloon-help-bar-cursor bar-cursor) @@ -349,11 +363,11 @@ ;; try to evade frame decorations (cons 'name (or balloon-help-frame-name "xclock")) - '(border-width . 2) + (cons 'border-width balloon-help-border-width) (cons 'border-color balloon-help-border-color) (cons 'top y) (cons 'left x) - (cons 'popup (selected-frame)) + (cons 'popup (balloon-help-make-junk-frame)) '(width . 3) '(height . 1))))) (set-face-font 'default balloon-help-font frame) @@ -373,6 +387,9 @@ (set-specifier bottom-toolbar (cons frame nil)) (set-specifier scrollbar-width (cons frame 0)) (set-specifier scrollbar-height (cons frame 0)) + (and (boundp 'text-cursor-visible-p) + (specifierp text-cursor-visible-p) + (set-specifier text-cursor-visible-p (cons frame nil))) (set-specifier modeline-shadow-thickness (cons frame 0)) (set-face-background 'modeline balloon-help-background frame) frame ))) @@ -392,4 +409,5 @@ (add-hook 'pre-command-hook 'balloon-help-pre-command-hook) (add-hook 'post-command-hook 'balloon-help-post-command-hook) (add-hook 'mouse-leave-frame-hook 'balloon-help-mouse-leave-frame-hook) -(add-hook 'deselect-frame-hook 'balloon-help-deselect-frame-hook) +;; loses with ClickToFocus under fvwm +;;(add-hook 'deselect-frame-hook 'balloon-help-deselect-frame-hook)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/packages/cu-edit-faces.el Mon Aug 13 08:51:32 2007 +0200 @@ -0,0 +1,47 @@ +;;; edit-faces.el -- interactive face editing mode + +;; Copyright (C) 1997 Jens Lautenbacher +;; +;; This file is part of XEmacs. +;; +;; XEmacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2 of the License, or +;; (at your option) any later version. +;; +;; XEmacs 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 General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with XEmacs; if not, write to the Free Software +;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +;;; Synched up with: Not in FSF. + +;;; Just another TTPC (Totally Trivial Piece of Code (TM)). All the +;;; needed functionality for editing faces is already in custom.el. So +;;; why don't use it, you may ask. OK, here I am... + +(require 'custom) +(require 'cl) + +;;;###autoload +(defun cu-edit-faces () + (interactive) + (let (tmp-list elem) + (put 'available-faces 'custom-group nil) + (setq tmp-list (sort (face-list) + '(lambda (one two) + (if (string< (symbol-name one) + (symbol-name two)) t + nil)))) + (while (setq elem (pop tmp-list)) + (custom-add-to-group 'available-faces elem 'custom-face)) + (message "Please stand by while generating list of faces...") + (customize 'available-faces))) + +(provide 'cu-edit-faces) + +;;; cu-edit-faces.el ends here.
--- a/lisp/packages/diff.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/packages/diff.el Mon Aug 13 08:51:32 2007 +0200 @@ -2,7 +2,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; File: diff.el -;; Version: $Revision: 1.2 $ +;; Version: $Revision: 1.3 $ ;; Author: This file is based on diff.el by ;; sunpitt!wpmstr!fbresz@Sun.COM 1/27/89. ;; It has been completely rewritten in July 1994 by @@ -40,6 +40,7 @@ ;;; User Variables ;; should be in to loaddefs.el now. +;;;###autoload (defvar diff-switches nil "*A list of switches (strings) to pass to the diff program.") @@ -479,6 +480,7 @@ ;;; The main command. +;;;###autoload (defun diff (old new &optional switches) "Find and display the differences between OLD and NEW files. Interactively you are prompted with the current buffer's file name for NEW @@ -570,6 +572,7 @@ (error nil)) (set-buffer curr-buff)))) +;;;###autoload (defun diff-backup (file &optional switches) "Diff this file with its backup file or vice versa. Uses the latest backup, if there are several numerical backups.
--- a/lisp/packages/font-lock.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/packages/font-lock.el Mon Aug 13 08:51:32 2007 +0200 @@ -274,12 +274,13 @@ (MATCH FACENAME OVERRIDE LAXMATCH) -Where MATCHER can be either the regexp to search for, or the function name to -call to make the search (called with one argument, the limit of the search). -MATCH is the subexpression of MATCHER to be highlighted. FACENAME is either -a symbol naming a face, or an expression whose value is the face name to use. -If you want FACENAME to be a symbol that evaluates to a face, use a form -like \"(progn sym)\". +Where MATCHER can be either the regexp to search for, a variable +containing the regexp to search for, or the function to call to make +the search (called with one argument, the limit of the search). MATCH +is the subexpression of MATCHER to be highlighted. FACENAME is either +a symbol naming a face, or an expression whose value is the face name +to use. If you want FACENAME to be a symbol that evaluates to a face, +use a form like \"(progn sym)\". OVERRIDE and LAXMATCH are flags. If OVERRIDE is t, existing fontification may be overwritten. If `keep', only parts not already fontified are highlighted. @@ -1127,6 +1128,10 @@ (eval (nth 1 keywords)) (save-match-data ;; Find an occurrence of `matcher' before `limit'. + (if (and (not (stringp matcher)) + (not (functionp matcher)) + (boundp matcher)) + (setq matcher (symbol-value matcher))) (while (if (stringp matcher) (re-search-forward matcher limit t) (funcall matcher limit)) @@ -1157,6 +1162,10 @@ ;; ;; Find an occurrence of `matcher' from `start' to `end'. (setq keyword (car keywords) matcher (car keyword)) + (if (and (not (stringp matcher)) + (not (functionp matcher)) + (boundp matcher)) + (setq matcher (symbol-value matcher))) (goto-char start) (while (and (< (point) end) (if (stringp matcher) @@ -2519,31 +2528,6 @@ )) "Additional expressions to highlight in sh-mode.") -(defconst python-font-lock-keywords - (purecopy - (list - (cons (concat "\\b\\(" - (mapconcat 'identity - '("access" "del" "from" - "lambda" "return" "and" - "elif" "global" "not" - "try:" "break " "else:" - "if" "or" "while" - "except" "except:" "import" - "pass" "continue" "finally:" - "in" "print" "for" - "is" "raise") - "\\|") - "\\)[ \n\t(]") - 1) - '("\\bclass[ \t]+\\([a-zA-Z_]+[a-zA-Z0-9_]*\\)" - 1 font-lock-type-face) - '("\\bdef[ \t]+\\([a-zA-Z_]+[a-zA-Z0-9_]*\\)" - 1 font-lock-function-name-face) - )) - "Additional expressions to highlight in Python mode.") - - ;; Install ourselves:
--- a/lisp/packages/func-menu.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/packages/func-menu.el Mon Aug 13 08:51:32 2007 +0200 @@ -546,13 +546,14 @@ ;;; Lisp ;;; ;;; Vladimir Alexiev <vladimir@cs.ualberta.ca> +;;; JTL: 24. Feb. 97 added "/" as part of function names (defvar fume-function-name-regexp-lisp (concat "^[ \t]*" ; Allow whitespace |(or (fboundp 'foo) ; for the construct | (defun foo () "(\\(def[^vc][a-z]*\\)" ; Allow (def* except (defvar, (defconst "\\s-+" ; At least one whitespace - "'?[#:?A-Za-z0-9_+>-]+" ; Allow (defalias 'foo 'bar) + "'?[#:?/A-Za-z0-9_+>-]+" ; Allow (defalias 'foo 'bar) "\\s-*" ; Whitespace "\\(nil\\|(\\)" ; nil or (arg list )
--- a/lisp/packages/man.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/packages/man.el Mon Aug 13 08:51:32 2007 +0200 @@ -259,7 +259,8 @@ ;; overran by a couple of chars. (setq truncate-lines t) ;; turn off horizontal scrollbars in this buffer - (set-specifier scrollbar-height (cons (current-buffer) 0)) + (when (featurep 'scrollbar) + (set-specifier scrollbar-height (cons (current-buffer) 0))) (run-hooks 'Manual-mode-hook)) (defun Manual-last-page ()
--- a/lisp/packages/mic-paren.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/packages/mic-paren.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,8 +1,11 @@ -;;; mic-paren.el --- highlight matching paren. -;;; Version 1.2 - 96-09-19 -;;; Copyright (C) 1996 Mikael Sjödin (mic@docs.uu.se) +;;; mic-paren.el --- highlight matching parenthesises. +;;; Version 1.3.1 - 97-02-27 +;;; Copyright (C) 1997 Mikael Sjödin (mic@docs.uu.se) ;;; ;;; Author: Mikael Sjödin -- mic@docs.uu.se +;;; Additional code by: Vinicius Jose Latorre <vinicius@cpqd.br> +;;; Steven L Baur <steve@altair.xemacs.org> +;;; ;;; Keywords: languages, faces ;;; ;;; This file is NOT part of GNU Emacs. @@ -34,6 +37,7 @@ ;;; (require 'mic-paren)) ;;; o Restart your Emacs. mic-paren is now installed and activated! ;;; o To list the possible customisation enter `C-h f paren-activate' +;;; ;;; ---------------------------------------------------------------------- ;;; Long Description: @@ -60,10 +64,26 @@ ;;; ;;; mic-paren.el is developed and tested under Emacs 19.28 - 19.34. It should ;;; work on earlier and forthcoming Emacs versions. XEmacs compatibility has -;;; been provided by Steven L Baur <steve@altair.xemacs.org>. +;;; been provided by Steven L Baur <steve@altair.xemacs.org>. Jan Dubois +;;; (jaduboi@ibm.net) provided help to get mic-paren to work in OS/2. ;;; ;;; This file can be obtained from http://www.docs.uu.se/~mic/emacs.html +;;; ---------------------------------------------------------------------- +;;; Versions: +;;; +;;; v1.3.1 Some spelling corrected (from Vinicius Jose Latorre +;;; <vinicius@cpqd.br> and Steven L Baur <steve@altair.xemacs.org>) +;;; +;;; v1.3 Added code from Vinicius Jose Latorre <vinicius@cpqd.br> to +;;; highlight unmathced parenthesises (useful in minibuffer) +;;; +;;; v1.2.1 Fixed stuff to work with OS/2 emx-emacs +;;; - checks if x-display-color-p is bound before calling it +;;; - changed how X/Lucid Emacs is deteced +;;; Added automatic load of the timer-feature (+ variable to disable +;;; the loading) + ;;; ====================================================================== ;;; User Options: @@ -166,12 +186,25 @@ ;;; ------------------------------ -(defvar paren-face (if (x-display-color-p) 'highlight 'underline) +(defvar paren-dont-load-timer (not (string-match "XEmacs\\|Lucid" + emacs-version)) + "*If non-nil mic-paren will not try to load the timer-feature when loaded. + +(I have no idea why Emacs user ever want to set this to non-nil but I hate +packages which loads/activates stuff I don't want to use so I provide this way +to prevent the loading if someone doesn't want timers to be loaded.)") + +;;; ------------------------------ + +(defvar paren-face (if (and (fboundp 'x-display-color-p) + (x-display-color-p)) + 'highlight 'underline) "*Face to use for showing the matching parenthesis.") ;;; ------------------------------ -(defvar paren-mismatch-face (if (x-display-color-p) +(defvar paren-mismatch-face (if (and (fboundp 'x-display-color-p) + (x-display-color-p)) (let ((fn 'paren-mismatch-face)) (copy-face 'default fn) (set-face-background fn "DeepPink") @@ -179,19 +212,28 @@ 'modeline) "*Face to use when highlighting a mismatched parenthesis.") +;;; ------------------------------ + +(defvar paren-no-match-face (if (x-display-color-p) + (let ((fn 'paren-no-match-face)) + (copy-face 'default fn) + (set-face-background fn "yellow") + fn) + 'default) + "*Face to use when highlighting an unmatched parenthesis.") + ;;; ====================================================================== ;;; User Functions: -;; XEmacs compatibility (by Steven L Baur <steve@altair.xemacs.org>) +;; XEmacs compatibility (mainly by Steven L Baur <steve@altair.xemacs.org>) (eval-and-compile - (if (fboundp 'make-extent) + (if (string-match "\\(Lucid\\|XEmacs\\)" emacs-version) (progn (fset 'mic-make-overlay 'make-extent) (fset 'mic-delete-overlay 'delete-extent) (fset 'mic-overlay-put 'set-extent-property) (defun mic-cancel-timer (timer) (delete-itimer timer)) - (defun mic-run-with-idle-timer (secs repeat function &rest args) - (start-itimer "mic-paren-idle" function secs nil)) + (fset 'mic-run-with-idle-timer 'start-itimer) ) (fset 'mic-make-overlay 'make-overlay) (fset 'mic-delete-overlay 'delete-overlay) @@ -366,10 +408,10 @@ (error nil)))) ;; If match found - ;; highlight and/or print messages + ;; highlight expression and/or print messages ;; else + ;; highlight unmatched paren ;; print no-match message - ;; remove any old highlights (if open (let ((mismatch (/= (matching-paren (preceding-char)) (char-after open))) @@ -420,6 +462,10 @@ (and mismatch paren-ding-unmatched (ding))) + (setq mic-paren-backw-overlay + (mic-make-overlay (1- (point)) (point))) + (mic-overlay-put mic-paren-backw-overlay + 'face paren-no-match-face) (and paren-message-no-match (not (window-minibuffer-p (selected-window))) (message "No opening parenthesis found")) @@ -451,10 +497,10 @@ (setq close (scan-sexps (point) 1)) (error nil)))) ;; If match found - ;; highlight and/or print messages + ;; highlight expression and/or print messages ;; else + ;; highlight unmatched paren ;; print no-match message - ;; remove any old highlights (if close (let ((mismatch (/= (matching-paren (following-char)) (char-after (1- close)))) @@ -496,6 +542,10 @@ (and mismatch paren-ding-unmatched (ding))) + (setq mic-paren-forw-overlay + (mic-make-overlay (point) (1+ (point)))) + (mic-overlay-put mic-paren-forw-overlay + 'face paren-no-match-face) (and paren-message-no-match (not (window-minibuffer-p (selected-window))) (message "No closing parenthesis found")) @@ -563,6 +613,13 @@ ;;; ====================================================================== ;;; Initialisation when loading: +;;; Try to load the timer feature if its not already loaded +(or paren-dont-load-timer + (featurep 'timer) + (condition-case () + (require 'timer) + (error nil))) + (or paren-dont-activate-on-load (paren-activate))
--- a/lisp/packages/tar-mode.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/packages/tar-mode.el Mon Aug 13 08:51:32 2007 +0200 @@ -482,7 +482,6 @@ (define-key tar-mode-map "n" 'tar-next-line) (define-key tar-mode-map "\^N" 'tar-next-line) (define-key tar-mode-map "o" 'tar-extract-other-window) - (define-key tar-mode-map "\^C" 'tar-copy) (define-key tar-mode-map "p" 'tar-previous-line) (define-key tar-mode-map "\^P" 'tar-previous-line) (define-key tar-mode-map "r" 'tar-rename-entry)
--- a/lisp/packages/time.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/packages/time.el Mon Aug 13 08:51:32 2007 +0200 @@ -103,6 +103,50 @@ (start-itimer "display-time" 'display-time-function display-time-interval display-time-interval)) +(defvar display-time-show-load t) + +(defvar display-time-show-icons-maybe t + "Use icons to indicate the mail status if we're running under X and +XEmacs was compiled with xpm support") + +(defun display-time-get-icons-dir () + (let ((path load-path) + dir elem) + (while (setq elem (pop path)) + (setq dir (concat (directory-file-name elem) "/../etc/time/")) + (if (file-directory-p dir) (setq path nil) + nil)) + dir)) + +(defvar display-time-icons-dir (display-time-get-icons-dir)) + +(defvar display-time-mail-sign + (progn + (let* ((file (concat display-time-icons-dir "letter.xpm")) + (glyph (if (featurep 'xpm) (make-glyph file) nil)) + (display-time-mail-ext (detach-extent (make-extent 1 1)))) + (if (and (featurep 'x) glyph + (file-exists-p file)) + (cons display-time-mail-ext glyph) + " Mail"))) + "A variable holding a string or a cons cell (ext . glyph) which gives +an indicator for unread mail. The default displays a xpm-file (a yellow letter) +if (feturep 'xpm) and (featurep 'x) are both t, a string \" Mail\" otherwise") + +(defvar display-time-no-mail-sign + (progn + (let* ((file (concat display-time-icons-dir "no-letter.xpm")) + (glyph (if (featurep 'xpm) (make-glyph file) nil)) + (display-time-mail-ext (detach-extent (make-extent 1 1)))) + (if (and (featurep 'x) glyph + (file-exists-p file)) + (cons display-time-mail-ext glyph) + ""))) + "A variable holding a string or a cons cell (ext . glyph) which gives +an indicator for `no mail'. The default displays a xpm-file +if (feturep 'xpm) and (featurep 'x) are both t, and nothing otherwise") + + (defvar display-time-string-forms '((if display-time-day-and-date (format "%s %s %s " dayname monthname day) @@ -111,20 +155,23 @@ (if display-time-24hr-format 24-hours 12-hours) minutes (if display-time-24hr-format "" am-pm)) - load - (if mail " Mail" "")) - "*A list of expressions governing display of the time in the mode line. + (if display-time-show-load load) + (if (and (not display-time-show-icons-maybe) mail) " Mail" "")) + "*A list of expressions governing display of the time in the mode line. This expression is a list of expressions that can involve the keywords `load', `day', `month', and `year', `12-hours', `24-hours', `minutes', `seconds', all numbers in string form, and `monthname', `dayname', `am-pm', -and `time-zone' all alphabetic strings, and `mail' a true/nil value. +and `time-zone' all alphabetic strings and `mail' a true/nil string value. +Beware: if display-time-show-icons-maybe is non-nil, the `mail' spec is also +evaluated after this form and depending on it's result display-time-mail-sign +or display-time-no-mail-sign is appended to the modeline string. +This was made so you can also use xpm-files as mail indicator. For example, the form '((substring year -2) \"/\" month \"/\" day \" \" 24-hours \":\" minutes \":\" seconds - (if time-zone \" (\") time-zone (if time-zone \")\") - (if mail \" Mail\" \"\")) + (if time-zone \" (\") time-zone (if time-zone \")\")) would give mode line times like `94/12/30 21:07:48 (UTC)'.") @@ -176,6 +223,12 @@ (dayname (substring time 0 3))) (setq display-time-string (mapconcat 'eval display-time-string-forms "")) + (if (and mail display-time-show-icons-maybe) + (setq display-time-string + (list display-time-string display-time-mail-sign)) + (if display-time-show-icons-maybe + (setq display-time-string + (list display-time-string display-time-no-mail-sign)))) ;; This is inside the let binding, but we are not going to document ;; what variables are available. (run-hooks 'display-time-hook))
--- a/lisp/prim/about.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/prim/about.el Mon Aug 13 08:51:32 2007 +0200 @@ -156,7 +156,7 @@ (toggle-read-only 0) (let ((rest (if who-to-load (list who-to-load) - '(steve mrb cthomp wing stig jwz mly vladimir baw piper bw wmperry kyle))) + '(steve mrb cthomp wing stig jwz mly vladimir baw piper bw wmperry kyle larsi))) (got-error nil)) (while rest (let* ((who (car rest)) @@ -206,7 +206,7 @@ (goto-char (point-max)) (insert "\n ") - (let ((rest '(steve mrb cthomp wing stig linebreak jwz mly vladimir linebreak baw piper bw linebreak wmperry kyle)) + (let ((rest '(steve mrb cthomp wing stig linebreak jwz mly vladimir linebreak baw piper bw linebreak wmperry kyle larsi)) (got-error nil)) (while rest (if (eq (car rest) 'linebreak) @@ -290,6 +290,7 @@ ((eq xref 'steve) "About Steve Baur") ((eq xref 'mrb) "About Martin Buchholz") ((eq xref 'kyle) "About Kyle Jones") + ((eq xref 'larsi) "About Lars Magne Ingebrigtsen") ((eq xref 'others) "About Everyone") ((eq xref 'features) "New XEmacs Features") ((eq xref 'history) "XEmacs History") @@ -749,6 +750,24 @@ (insert " to go back to the previous page.\n") ) + ((eq xref 'larsi) + (about-face "Lars Magne Ingebrigtsen" 'bold) + (insert " <larsi@ifi.uio.no> + + Author of Gnus the Usenet news and Mail reading package in + the standard XEmacs distribution, and contributor of various + enhancements and portability fixes. Lars is a student at the + Institute of Informatics at the University of Oslo. He is + currently plumbing away at his majors work at the Institute of + Physics, working on an SCI project connected with CASCADE and + CERN and stuff. + See \"http://www.ifi.uio.no/~larsi/\".") + + (insert "\n\n\tClick ") + (about-xref "here" prev-page "Return to previous page") + (insert " to go back to the previous page.\n") + ) + ((eq xref 'others) (insert "Click ") (about-xref "here" 'about "Return to previous page") @@ -802,13 +821,23 @@ face attribute support). ") (about-xref "Kyle Jones" 'kyle "Find out more about Kyle Jones") (insert " <kyle_jones@wonderworks.com> - Author of VM, a mail-reading package that is included in - the standard XEmacs distribution, and contributor of many - improvements and bug fixes. Unlike RMAIL and MH-E, VM - uses the standard UNIX mailbox format for its folders; - thus, you can use VM concurrently with other UNIX mail - readers such as Berkeley Mail and ELM. - See \"http://www.wonderworks.com/kyle/\". + Author of VM, a mail-reading package that is included in + the standard XEmacs distribution, and contributor of many + improvements and bug fixes. Unlike RMAIL and MH-E, VM + uses the standard UNIX mailbox format for its folders; + thus, you can use VM concurrently with other UNIX mail + readers such as Berkeley Mail and ELM. + See \"http://www.wonderworks.com/kyle/\". + + ") (about-xref "Lars Magne Ingebrigtsen" 'larsi "Find out more about Lars Magne Ingebrigtsen") (insert " <larsi@ifi.uio.no> + Author of Gnus the Usenet news and Mail reading package in + the standard XEmacs distribution, and contributor of various + enhancements and portability fixes. Lars is a student at the + Institute of Informatics at the University of Oslo. He is + currently plumbing away at his majors work at the Institute of + Physics, working on an SCI project connected with CASCADE and + CERN and stuff. + See \"http://www.ifi.uio.no/~larsi/\" Darrell Kindred <Darrell.Kindred@cmu.edu> Unofficial maintainer of the xemacs-beta list of extant @@ -946,7 +975,6 @@ Stephan Herrmann <sh@first.gmd.de> Charles Hines <chuck_hines@VNET.IBM.COM> David Hughes <djh@harston.cv.com> - Lars Magne Ingebrigtsen <larsi@ifi.uio.no> Andrew Innes <andrewi@harlequin.co.uk> Markku Jarvinen <Markku.Jarvinen@simpukka.funet.fi> Robin Jeffries <robin.jeffries@sun.com>
--- a/lisp/prim/auto-autoloads.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/prim/auto-autoloads.el Mon Aug 13 08:51:32 2007 +0200 @@ -908,7 +908,8 @@ Customize SYMBOL, which must be a variable." t nil) (autoload 'customize-face "custom-edit" "\ -Customize FACE." t nil) +Customize SYMBOL, which should be a face name or nil. +If SYMBOL is nil, customize all faces." t nil) (autoload 'customize-customized "custom-edit" "\ Customize all already customized user options." t nil) @@ -3637,7 +3638,7 @@ ;;;### (autoloads (ksh-mode) "ksh-mode" "modes/ksh-mode.el") (autoload 'ksh-mode "ksh-mode" "\ -ksh-mode $Revision: 1.8 $ - Major mode for editing (Bourne, Korn or Bourne again) +ksh-mode $Revision: 1.9 $ - Major mode for editing (Bourne, Korn or Bourne again) shell scripts. Special key bindings and commands: \\{ksh-mode-map} @@ -4909,7 +4910,7 @@ (autoload 'vhdl-mode "vhdl-mode" "\ Major mode for editing VHDL code. -vhdl-mode $Revision: 1.8 $ +vhdl-mode $Revision: 1.9 $ To submit a problem report, enter `\\[vhdl-submit-bug-report]' from a vhdl-mode buffer. This automatically sets up a mail buffer with version information already added. You just need to add a description of the @@ -5709,6 +5710,12 @@ ;;;*** +;;;### (autoloads (cu-edit-faces) "cu-edit-faces" "packages/cu-edit-faces.el") + +(autoload 'cu-edit-faces "cu-edit-faces" nil t nil) + +;;;*** + ;;;### (autoloads (dabbrev-expand dabbrev-completion) "dabbrev" "packages/dabbrev.el") (define-key global-map [(meta /)] 'dabbrev-expand) @@ -5753,6 +5760,24 @@ ;;;*** +;;;### (autoloads (diff-backup diff) "diff" "packages/diff.el") + +(defvar diff-switches nil "\ +*A list of switches (strings) to pass to the diff program.") + +(autoload 'diff "diff" "\ +Find and display the differences between OLD and NEW files. +Interactively you are prompted with the current buffer's file name for NEW +and what appears to be its backup for OLD." t nil) + +(autoload 'diff-backup "diff" "\ +Diff this file with its backup file or vice versa. +Uses the latest backup, if there are several numerical backups. +If this file is a backup, diff it with its original. +The backup file is the first file given to `diff'." t nil) + +;;;*** + ;;;### (autoloads (edit-faces) "edit-faces" "packages/edit-faces.el") (autoload 'edit-faces "edit-faces" "\ @@ -6128,12 +6153,13 @@ (MATCH FACENAME OVERRIDE LAXMATCH) -Where MATCHER can be either the regexp to search for, or the function name to -call to make the search (called with one argument, the limit of the search). -MATCH is the subexpression of MATCHER to be highlighted. FACENAME is either -a symbol naming a face, or an expression whose value is the face name to use. -If you want FACENAME to be a symbol that evaluates to a face, use a form -like \"(progn sym)\". +Where MATCHER can be either the regexp to search for, a variable +containing the regexp to search for, or the function to call to make +the search (called with one argument, the limit of the search). MATCH +is the subexpression of MATCHER to be highlighted. FACENAME is either +a symbol naming a face, or an expression whose value is the face name +to use. If you want FACENAME to be a symbol that evaluates to a face, +use a form like \"(progn sym)\". OVERRIDE and LAXMATCH are flags. If OVERRIDE is t, existing fontification may be overwritten. If `keep', only parts not already fontified are highlighted. @@ -7679,7 +7705,7 @@ ;;;*** -;;;### (autoloads nil "itimer" "prim/itimer.el") +;;;### (autoloads nil "itimer-autosave" "prim/itimer-autosave.el") ;;;*** @@ -9533,7 +9559,26 @@ ;;;*** -;;;### (autoloads (url-retrieve url-cache-expired url-popup-info url-get-url-at-point url-buffer-visiting url-normalize-url url-file-attributes) "url" "w3/url.el") +;;;### (autoloads (url-cache-expired url-extract-from-cache url-create-cached-filename url-is-cached url-store-in-cache) "url-cache" "w3/url-cache.el") + +(autoload 'url-store-in-cache "url-cache" "\ +Store buffer BUFF in the cache" nil nil) + +(autoload 'url-is-cached "url-cache" "\ +Return non-nil if the URL is cached." nil nil) + +(autoload 'url-create-cached-filename "url-cache" "\ +Return a filename in the local cache for URL" nil nil) + +(autoload 'url-extract-from-cache "url-cache" "\ +Extract FNAM from the local disk cache" nil nil) + +(autoload 'url-cache-expired "url-cache" "\ +Return t iff a cached file has expired." nil nil) + +;;;*** + +;;;### (autoloads (url-retrieve url-popup-info url-get-url-at-point url-buffer-visiting url-normalize-url url-file-attributes) "url" "w3/url.el") (autoload 'url-file-attributes "url" "\ Return a list of attributes of URL. @@ -9571,9 +9616,6 @@ (autoload 'url-popup-info "url" "\ Retrieve the HTTP/1.0 headers and display them in a temp buffer." nil nil) -(autoload 'url-cache-expired "url" "\ -Return t iff a cached file has expired." nil nil) - (autoload 'url-retrieve "url" "\ Retrieve a document over the World Wide Web. The document should be specified by its fully specified @@ -9596,7 +9638,7 @@ ;;;*** -;;;### (autoloads (w3-follow-link w3-follow-link-other-frame w3-do-setup w3 w3-preview-this-buffer w3-batch-fetch w3-follow-url-at-point w3-follow-url-at-point-other-frame w3-maybe-follow-link w3-maybe-follow-link-mouse w3-fetch w3-fetch-other-frame w3-find-file w3-open-local) "w3" "w3/w3.el") +;;;### (autoloads (w3-follow-link w3-follow-link-other-frame w3-do-setup w3 w3-preview-this-buffer w3-follow-url-at-point w3-follow-url-at-point-other-frame w3-maybe-follow-link w3-maybe-follow-link-mouse w3-fetch w3-fetch-other-frame w3-find-file w3-open-local) "w3" "w3/w3.el") (autoload 'w3-open-local "w3" "\ Find a local file, and interpret it as a hypertext document. @@ -9634,17 +9676,6 @@ (autoload 'w3-follow-url-at-point "w3" "\ Follow the URL under PT, defaults to link under (point)" t nil) -(autoload 'w3-batch-fetch "w3" "\ -Fetch all the URLs on the command line and save them to files in -the current directory. The first argument after the -f w3-batch-fetch -on the command line should be a string specifying how to save the -information retrieved. If it is \"html\", then the page will be -unformatted when it is written to disk. If it is \"text\", then the -page will be formatted before it is written to disk. If it is -\"binary\" it will not mess with the file extensions, and just save -the data in raw binary format. If none of those, the default is -\"text\", and the first argument is treated as a normal URL." nil nil) - (autoload 'w3-preview-this-buffer "w3" "\ See what this buffer will look like when its formatted as HTML. HTML is the HyperText Markup Language used by the World Wide Web to
--- a/lisp/prim/faces.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/prim/faces.el Mon Aug 13 08:51:32 2007 +0200 @@ -1270,11 +1270,10 @@ ;; first time through, set the zmacs-region color if it's not already ;; specified. - (if (and (not (face-differs-from-default-p 'zmacs-region device)) - (not (face-background 'zmacs-region 'global))) - (progn - (set-face-background 'zmacs-region "gray" 'global 'color) - (set-face-background 'zmacs-region "gray80" 'global 'grayscale))) + (unless (or (face-differs-from-default-p 'zmacs-region device) + (face-background 'zmacs-region 'global)) + (set-face-background 'zmacs-region "gray65" 'global 'color) + (set-face-background 'zmacs-region "gray65" 'global 'grayscale)) (if (and (not (face-differs-from-default-p 'zmacs-region device)) (not (face-background-pixmap 'zmacs-region 'global))) (progn @@ -1307,11 +1306,10 @@ ;; first time through, set the primary-selection color if it's not already ;; specified. - (if (and (not (face-differs-from-default-p 'primary-selection device)) - (not (face-background 'primary-selection 'global))) - (progn - (set-face-background 'primary-selection "gray" 'global 'color) - (set-face-background 'primary-selection "gray80" 'global 'grayscale))) + (unless (or (face-differs-from-default-p 'primary-selection device) + (face-background 'primary-selection 'global)) + (set-face-background 'primary-selection "gray65" 'global 'color) + (set-face-background 'primary-selection "gray65" 'global 'grayscale)) (if (and (not (face-differs-from-default-p 'secondary-selection device)) (not (face-background-pixmap 'primary-selection 'global))) (set-face-background-pixmap 'primary-selection "gray3" 'global 'mono))
--- a/lisp/prim/files.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/prim/files.el Mon Aug 13 08:51:32 2007 +0200 @@ -1260,7 +1260,7 @@ ;; Parse the -*- line into the `result' alist. (cond ((not (search-forward "-*-" end t)) ;; doesn't have one. - nil) + (setq force t)) ((looking-at "[ \t]*\\([^ \t\n\r:;]+\\)\\([ \t]*-\\*-\\)") ;; Antiquated form: "-*- ModeName -*-". (setq result
--- a/lisp/prim/format.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/prim/format.el Mon Aug 13 08:51:32 2007 +0200 @@ -292,7 +292,7 @@ (setq value (insert-file-contents filename nil beg end)) (setq size (nth 1 value))) (if format - (setq size (format-decode size format) + (setq size (format-decode format size) value (cons (car value) size))) value))
--- a/lisp/prim/help.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/prim/help.el Mon Aug 13 08:51:32 2007 +0200 @@ -827,7 +827,7 @@ file-name (doc (or (documentation function) (gettext "not documented"))) - aliases kbd-macro-p fndef macrop) + aliases home kbd-macro-p fndef macrop) (while (symbolp def) (or (eq def function) (if aliases @@ -837,6 +837,8 @@ (symbol-name def)))) (setq aliases (format "an alias for %s, " (symbol-name def))))) (setq def (symbol-function def))) + (if (compiled-function-p def) + (setq home (compiled-function-annotation def))) (if (eq 'macro (car-safe def)) (setq fndef (cdr def) macrop t) @@ -896,6 +898,8 @@ (setq file-name (describe-function-find-file function))) (if file-name (princ (format ".\n -- loads from \"%s\"" file-name) stream)) + (if home + (princ (format ".\n -- loaded from %s" home))) (princ ".") (terpri) (cond (kbd-macro-p
--- a/lisp/prim/isearch-mode.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/prim/isearch-mode.el Mon Aug 13 08:51:32 2007 +0200 @@ -194,6 +194,7 @@ (define-key map "\C-w" 'isearch-yank-word) (define-key map "\C-y" 'isearch-yank-line) + (define-key map "\M-y" 'isearch-yank-kill) ;; Define keys for regexp chars * ? | (define-key map "*" 'isearch-*-char) @@ -351,7 +352,7 @@ ;; Type \\[isearch-edit-string] to edit the search string in the minibuffer. ;; Terminate editing and return to incremental searching with CR. - (interactive "P") + (interactive "_P") (isearch-mode t (not (null regexp-p)) nil (not (interactive-p)))) (defun isearch-forward-regexp () @@ -359,7 +360,7 @@ Do incremental search forward for regular expression. Like ordinary incremental search except that your input is treated as a regexp. See \\[isearch-forward] for more info." - (interactive) + (interactive "_") (isearch-mode t t nil (not (interactive-p)))) (defun isearch-backward (&optional regexp-p) @@ -367,7 +368,7 @@ Do incremental search backward. With a prefix argument, do an incremental regular expression search instead. See \\[isearch-forward] for more information." - (interactive "P") + (interactive "_P") (isearch-mode nil (not (null regexp-p)) nil (not (interactive-p)))) (defun isearch-backward-regexp () @@ -375,12 +376,14 @@ Do incremental search backward for regular expression. Like ordinary incremental search except that your input is treated as a regexp. See \\[isearch-forward] for more info." - (interactive) + (interactive "_") (isearch-mode nil t nil (not (interactive-p)))) - +;; This function is way wrong, because you can't scroll the help +;; screen; as soon as you press a key, it's gone. I don't know of a +;; good way to fix it, though. -hniksic (defun isearch-mode-help () - (interactive) + (interactive "_") (describe-function 'isearch-forward) (isearch-update)) @@ -828,7 +831,8 @@ (defun isearch-yank (chunk) - ;; Helper for isearch-yank-word and isearch-yank-line + ;; Helper for isearch-yank-* functions. CHUNK can be a string or a + ;; function. (let ((word (if (stringp chunk) chunk (save-excursion @@ -865,6 +869,11 @@ (interactive) (isearch-yank 'end-of-line)) +(defun isearch-yank-kill () + "Pull rest of line from kill ring into search string." + (interactive) + (isearch-yank (current-kill 0))) + (defun isearch-yank-sexp () "Pull next expression from buffer into search string." (interactive) @@ -1274,6 +1283,7 @@ (put 'isearch-printing-char 'isearch-command t) (put 'isearch-yank-word 'isearch-command t) (put 'isearch-yank-line 'isearch-command t) +(put 'isearch-yank-kill 'isearch-command t) (put 'isearch-yank-sexp 'isearch-command t) (put 'isearch-*-char 'isearch-command t) (put 'isearch-*-char 'isearch-command t)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/prim/itimer-autosave.el Mon Aug 13 08:51:32 2007 +0200 @@ -0,0 +1,109 @@ +;;; itimer-autosave.el --- Autosave functions with itimers + +;; Copyright status unknown + +;; This file is part of XEmacs. + +;; XEmacs is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; XEmacs 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 +;; General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with XEmacs; see the file COPYING. If not, write to the Free +;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +;; 02111-1307, USA. + +;;; Synched up with: Not in FSF. + +;;; Commentary: + +;; itimer-driven auto-saves + +;;; Code: + +;jwz: this is preloaded so don't ;;;###autoload +(defvar auto-save-timeout 960 + "*Number of seconds idle time before auto-save. +Zero or nil means disable auto-saving due to idleness. + +The actual amount of idle time between auto-saves is logarithmically related +to the size of the current buffer. This variable is the number of seconds +after which an auto-save will happen when the current buffer is 50k or less; +the timeout will be 2 1/4 times this in a 200k buffer, 3 3/4 times this in a +1000k buffer, and 4 1/2 times this in a 2000k buffer. + +See also the variable `auto-save-interval', which controls auto-saving based +on the number of characters typed.") + +;jwz: this is preloaded so don't ;;;###autoload +(defvar auto-gc-threshold (/ gc-cons-threshold 3) + "*GC when this many bytes have been consed since the last GC, +and the user has been idle for `auto-save-timeout' seconds.") + +(defun auto-save-itimer () + "For use as a itimer callback function. +Auto-saves and garbage-collects based on the size of the current buffer +and the value of `auto-save-timeout', `auto-gc-threshold', and the current +keyboard idle-time." + (if (or (null auto-save-timeout) + (<= auto-save-timeout 0) + (eq (minibuffer-window) (selected-window))) + nil + (let ((buf-size (1+ (ash (buffer-size) -8))) + (delay-level 0) + (now (current-time)) + delay) + (while (> buf-size 64) + (setq delay-level (1+ delay-level) + buf-size (- buf-size (ash buf-size -2)))) + (if (< delay-level 4) + (setq delay-level 4)) + ;; delay_level is 4 for files under around 50k, 7 at 100k, 9 at 200k, + ;; 11 at 300k, and 12 at 500k, 15 at 1 meg, and 17 at 2 meg. + (setq delay (/ (* delay-level auto-save-timeout) 4)) + (let ((idle-time (if (or (not (consp last-input-time)) + (/= (car now) (car last-input-time))) + (1+ delay) + (- (car (cdr now)) (cdr last-input-time))))) + (and (> idle-time delay) + (do-auto-save)) + (and (> idle-time auto-save-timeout) + (> (consing-since-gc) auto-gc-threshold) + (garbage-collect))))) + ;; Look at the itimer that's currently running; if the user has changed + ;; the value of auto-save-timeout, modify this itimer to have the correct + ;; restart time. There will be some latency between when the user changes + ;; this variable and when it takes effect, but it will happen eventually. + (let ((self (get-itimer "auto-save"))) + (or self (error "auto-save-itimer can't find itself")) + (if (and auto-save-timeout (> auto-save-timeout 4)) + (or (= (itimer-restart self) (/ auto-save-timeout 4)) + (set-itimer-restart self (/ auto-save-timeout 4))))) + nil) + +(defun itimer-init-auto-gc () + (or noninteractive ; may be being run from after-init-hook in -batch mode. + (get-itimer "auto-save") + ;; the time here is just the first interval; if the user changes it + ;; later, it will adjust. + (let ((time (max 2 (/ (or auto-save-timeout 30) 4)))) + (start-itimer "auto-save" 'auto-save-itimer time time)))) + +(cond (purify-flag + ;; This file is being preloaded into an emacs about to be dumped. + ;; So arrange for the auto-save itimer to be started once emacs + ;; is launched. + (add-hook 'after-init-hook 'itimer-init-auto-gc)) + (t + ;; Otherwise, this file is being loaded into a normal, interactive + ;; emacs. Start the auto-save timer now. + (itimer-init-auto-gc))) + + +;;; itimer-autosave.el ends here
--- a/lisp/prim/itimer.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/prim/itimer.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,9 +1,11 @@ -;;; Interval timers for XEmacs -;;; Copyright (C) 1988, 1991, 1993 Kyle E. Jones -;;; Modified 5 Feb 91 by Jamie Zawinski <jwz@lucid.com> for Lucid Emacs -;;; And again, 15 Dec 93. -;;; -;; This file is part of XEmacs. +;;; itimer.el -- Interval timers for XEmacs + +;; Copyright (C) 1988, 1991, 1993, 1997 Kyle E. Jones + +;; Author: Kyle Jones <kyle_jones@wonderworks.com> +;; Keywords: extensions + +;; This file is part of XEmacs ;; XEmacs is free software; you can redistribute it and/or modify it ;; under the terms of the GNU General Public License as published by @@ -15,53 +17,76 @@ ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. -;; You should have received a copy of the GNU General Public License -;; along with XEmacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; A copy of the GNU General Public License can be obtained from this +;; program's author (send electronic mail to kyle@uunet.uu.net) or +;; from the Free Software Foundation, Inc., 59 Temple Place - Suite +;; 330, Boston, MA 02111-1307, USA. + +;;; Synched up with: Not in FSF -;;; Synched up with: Not in FSF. +;;; Commentary: + +;; Send bug reports to kyle_jones@wonderworks.com -;;; -;;; Send bug reports to kyle@uunet.uu.net. +;;; Code: + +(provide 'itimer) -;; The original v18 version of this file worked by having an external program -;; wake up once a second to generate an interrupt for emacs; then an emacs -;; process filter was used to schedule timers. -;; -;; This version works by associating with each timer a "timeout" object, -;; since the XEmacs/Lucid Emacs event loop has the concept of timers built -;; in to it. There is no single scheduler function; instead, each timer -;; re-sets itself as it is invoked. - -;; `itimer' feature means Emacs-Lisp programers get: -;; itimerp, itimer-value, itimer-restart, itimer-function, -;; set-itimer-value, set-itimer-restart, set-itimer-function -;; get-itimer, start-itimer, read-itimer, delete-itimer +;; `itimer' feature means Emacs-Lisp programmers get: +;; itimerp +;; itimer-value +;; itimer-restart +;; itimer-function +;; itimer-function-argument +;; set-itimer-value +;; set-itimer-restart +;; set-itimer-function +;; set-itimer-uses-argument +;; set-itimer-function-argument +;; get-itimer +;; start-itimer +;; read-itimer +;; delete-itimer ;; ;; Interactive users get these commands: -;; edit-itimers, list-itimers, start-itimer +;; edit-itimers +;; list-itimers +;; start-itimer ;; ;; See the doc strings of these functions for more information. -(defvar itimer-version "1.00" +(defvar itimer-version "1.02" "Version number of the itimer package.") (defvar itimer-list nil "List of all active itimers.") -;; not needed in XEmacs -;(defvar itimer-process nil -; "Process that drives all itimers.") +(defvar itimer-process nil + "Process that drives all itimers, if a subprocess is being used.") + +(defvar itimer-timer nil + "Emacs internal timer that drives the itimer system, if a subprocess +is not being used to drive the system.") + +(defvar itimer-timer-last-wakeup nil + "The time the timer driver function last ran.") -;; This value is maintained internally; it does not determine itimer -;; granularity. Itimer granularity is 1 second, plus delays due to -;; system and Emacs internal activity that delay dealing with process -;; output. -;; not needed in XEmacs -;(defvar itimer-process-next-wakeup 1 -; "Itimer process will wakeup to service running itimers within this -;many seconds.") +(defvar itimer-short-interval (if (featurep 'lisp-float-type) 1e-3 1) + "Interval used for scheduling an event a very short time in the future. +Used internally to make the scheduler wake up early. +Unit is seconds.") + +;; This value is maintained internally; it does not determine +;; itimer granularity. Itimer granularity is 1 second if your +;; Emacs doens't support floats or your system doesn't have a +;; clock with microsecond granularity. Otherwise granularity is +;; to the microsend, although you can't possibly get timers to be +;; executed with this kind of accuracy in practice. There will +;; be delays due to system and Emacs internal activity that delay +;; dealing with syunchronous events and process output. +(defvar itimer-next-wakeup itimer-short-interval + "Itimer process will wakeup to service running itimers within this +many seconds.") (defvar itimer-edit-map nil "Keymap used when in Itimer Edit mode.") @@ -85,10 +110,10 @@ ;; macros must come first... or byte-compile'd code will throw back its ;; head and scream. -(defmacro itimer-decf (variable) +(defmacro itimer-decrement (variable) (list 'setq variable (list '1- variable))) -(defmacro itimer-incf (variable) +(defmacro itimer-increment (variable) (list 'setq variable (list '1+ variable))) (defmacro itimer-signum (n) @@ -118,15 +143,19 @@ (list t (list 'signal ''wrong-type-argument (list 'list ''string-or-itimer-p var)))))) -(defmacro itimer-check-natnum (var) - "If VAR is not bound to a non-negative number, signal wrong-type-argument. +(defmacro check-nonnegative-number (var) + "If VAR is not bound to a number, signal wrong-type-argument. +If VAR is not bound to a positive number, signal args-out-of-range. This is a macro." (list 'setq var - (list 'if (list 'natnump var) var + (list 'if (list 'not (list 'numberp var)) (list 'signal ''wrong-type-argument - (list 'list ''natnump var))))) + (list 'list ''natnump var)) + (list 'if (list '< var 0) + (list 'signal ''args-out-of-range (list 'list var)) + var)))) -(defmacro itimer-check-string (var) +(defmacro check-string (var) "If VAR is not bound to a string, signal wrong-type-argument. This is a macro." (list 'setq var @@ -138,10 +167,7 @@ (defun itimerp (obj) "Returns non-nil iff OBJ is an itimer." - (and (consp obj) (stringp (car obj)) (eq (length obj) - 5 ; for XEmacs - ;4 ; original version - ))) + (and (consp obj) (stringp (car obj)) (eq (length obj) 6))) (defun itimer-name (itimer) "Returns the name of ITIMER." @@ -165,66 +191,57 @@ (check-itimer itimer) (nth 3 itimer)) -;; XEmacs-specific -(defun itimer-id (itimer) - "Returns the timeout-id of ITIMER." +(defun itimer-uses-argument (itimer) + "Returns non-nil if the function of ITIMER will be called with an argment. +ITIMER's function is called with this argument each timer ITIMER expires." (check-itimer itimer) (nth 4 itimer)) -(defun set-itimer-value (itimer value - ;; XEmacs doesn't need this - ;; &optional nowakeup - ) +(defun itimer-function-argument (itimer) + "Returns the function argument of ITIMER. +ITIMER's function is called with this argument each timer ITIMER expires." + (check-itimer itimer) + (nth 5 itimer)) + +(defun set-itimer-value (itimer value) "Set the timeout value of ITIMER to be VALUE. Itimer will expire is this many seconds. +If your version of Emacs supports floating point numbers then +VALUE can be a floating point number. Otherwise it +must be an integer. Returns VALUE." -;; Optional third arg NOWAKEUP non-nil means do not wakeup the itimer -;; process to recompute a correct wakeup time, even if it means this -;; itimer will expire late. itimer-process-filter uses this option. -;; This is not meant for ordinary usage, which is why it is not -;; mentioned in the doc string. (check-itimer itimer) - (itimer-check-natnum value) + (check-nonnegative-number value) (let ((inhibit-quit t)) + ;; If the itimer is in the active list, and under the new + ;; timeout value would expire before we would normally + ;; wakeup, wakeup now and recompute a new wakeup time. + (or (and (< value itimer-next-wakeup) + (get-itimer (itimer-name itimer)) + (progn (itimer-driver-wakeup) + (setcar (cdr itimer) value) + (itimer-driver-wakeup) + t )) + (setcar (cdr itimer) value)) + value)) -; ;; If we're allowed to wakeup the itimer process, -; ;; and the itimer process's next wakeup needs to be recomputed, -; ;; and the itimer is running, then we wakeup the itimer process. -; (or (and (not nowakeup) (< value itimer-process-next-wakeup) -; (get-itimer (itimer-name itimer)) -; (progn (itimer-process-wakeup) -; (setcar (cdr itimer) value) -; (itimer-process-wakeup))) -; (setcar (cdr itimer) value)) - - ;; the XEmacs way: - (if (itimer-id itimer) - (deactivate-itimer itimer)) - (setcar (cdr itimer) value) - (activate-itimer itimer) - - value)) +;; Same as set-itimer-value but does not wakeup the driver. +;; Only should be used by the drivers when processing expired timers. +(defun set-itimer-value-internal (itimer value) + (check-itimer itimer) + (check-nonnegative-number value) + (setcar (cdr itimer) value)) (defun set-itimer-restart (itimer restart) "Set the restart value of ITIMER to be RESTART. If RESTART is nil, ITIMER will not restart when it expires. +If your version of Emacs supports floating point numbers then +RESTART can be a floating point number. Otherwise it +must be an integer. Returns RESTART." (check-itimer itimer) - (if restart (itimer-check-natnum restart)) - (and restart (< restart 1) (signal 'args-out-of-range (list restart))) -;; (setcar (cdr (cdr itimer)) restart) - ;; the XEmacs way - (let ((was-active (itimer-id itimer)) - (inhibit-quit t)) - (if was-active - (deactivate-itimer itimer)) - (setcar (cdr (cdr itimer)) restart) - (if was-active - (progn - (setcar (cdr itimer) restart) - (if restart - (activate-itimer itimer))))) - restart) + (if restart (check-nonnegative-number restart)) + (setcar (cdr (cdr itimer)) restart)) (defun set-itimer-function (itimer function) "Set the function of ITIMER to be FUNCTION. @@ -233,14 +250,25 @@ (check-itimer itimer) (setcar (cdr (cdr (cdr itimer))) function)) -;; XEmacs-specific -(defun set-itimer-id (itimer id) +(defun set-itimer-uses-argument (itimer flag) + "Sets when the function of ITIMER is called with an argument. +If FLAG is non-nil, then the function will be called with one argument, +otherwise the function will be called with no arguments. +Returns FLAG." (check-itimer itimer) - (setcar (cdr (cdr (cdr (cdr itimer)))) id)) + (setcar (nthcdr 4 itimer) flag)) + +(defun set-itimer-function-argument (itimer argument) + "Set the function of ITIMER to be ARGUMENT. +The function of ITIMER will be called with ARGUMENT as its solt argument +when itimer expires. +Returns ARGUMENT." + (check-itimer itimer) + (setcar (nthcdr 5 itimer) argument)) (defun get-itimer (name) "Return itimer named NAME, or nil if there is none." - (itimer-check-string name) + (check-string name) (assoc name itimer-list)) (defun read-itimer (prompt &optional initial-input) @@ -253,20 +281,26 @@ (defun delete-itimer (itimer) "Deletes ITIMER. ITIMER may be an itimer or the name of one." (check-itimer-coerce-string itimer) - (deactivate-itimer itimer) ;; for XEmacs (setq itimer-list (delq itimer itimer-list))) -;jwz: this is preloaded so don't ;;;###autoload -(defun start-itimer (name function value &optional restart) +(defun start-itimer (name function value &optional restart + with-arg function-argument) "Start an itimer. -Args are NAME, FUNCTION, VALUE &optional RESTART. +Args are NAME, FUNCTION, VALUE &optional RESTART, WITH-ARG, FUNCTION-ARGUMENT. NAME is an identifier for the itimer. It must be a string. If an itimer already exists with this name, NAME will be modified slightly to until it is unique. -FUNCTION should be a function (or symbol naming one) of no arguments. It - will be called each time the itimer expires. The function can access - itimer that invoked it through the variable `current-itimer'. +FUNCTION should be a function (or symbol naming one) of one argument. It + will be called each time the itimer expires with an argument of + FUNCTION-ARGUMENT. The function can access the itimer that + invoked it through the variable `current-itimer'. If WITH-ARG + is nil then FUNCTION is called with no arguments. This is for + backward compatibility with older versions of the itimer + package which always called FUNCTION with no arguments. VALUE is the number of seconds until this itimer expires. + If your version of Emacs supports floating point numbers then + you can VALUE can be a floating point number. Otherwise it + must be an integer. Optional fourth arg RESTART non-nil means that this itimer should be restarted automatically after its function is called. Normally an itimer is deleted at expiration after its function has returned. @@ -277,41 +311,42 @@ (list (completing-read "Start itimer: " itimer-list) (read (completing-read "Itimer function: " obarray 'fboundp)) (let (value) - (while (not (natnump value)) + (while (or (not (numberp value)) (< value 0)) (setq value (read-from-minibuffer "Itimer value: " nil nil t))) value) (let ((restart t)) - (while (and restart (not (natnump restart))) - (setq restart (read-from-minibuffer "Itimer restart: " nil nil t))) - restart))) - (itimer-check-string name) - (itimer-check-natnum value) - (if restart (itimer-check-natnum restart)) + (while (and restart (or (not (numberp restart)) (< restart 0))) + (setq restart (read-from-minibuffer "Itimer restart: " + nil nil t))) + restart) + ;; hard to imagine the user specifying these interactively + nil + nil )) + (check-string name) + (check-nonnegative-number value) + (if restart (check-nonnegative-number restart)) ;; Make proposed itimer name unique if it's not already. (let ((oname name) (num 2)) (while (get-itimer name) (setq name (concat oname "<" num ">")) - (itimer-incf num))) -; ;; If there's no itimer process, start one now. -; ;; Otherwise wake up the itimer process so that seconds slept before -; ;; the new itimer is created won't be counted against it. -; (if itimer-process -; (itimer-process-wakeup) -; (itimer-process-start)) + (itimer-increment num))) + ;; If there's no itimer process, start one now. + ;; Otherwise wake up the itimer process so that seconds slept before + ;; the new itimer is created won't be counted against it. + (if (or itimer-process itimer-timer) + (itimer-driver-wakeup) + (itimer-driver-start)) (let ((inhibit-quit t)) ;; add the itimer to the global list (setq itimer-list - (cons (list name value restart function nil) ; extra slot for XEmacs + (cons (list name value restart function with-arg function-argument) itimer-list)) -; ;; If the itimer process is scheduled to wake up too late for the itimer -; ;; we wake it up to calculate a correct wakeup value giving consideration -; ;; to the newly added itimer. -; (if (< value itimer-process-next-wakeup) -; (itimer-process-wakeup))) - ;; for XEmacs - (activate-itimer (car itimer-list)) - ) + ;; If the itimer process is scheduled to wake up too late for the itimer + ;; we wake it up to calculate a correct wakeup value giving consideration + ;; to the newly added itimer. + (if (< value itimer-next-wakeup) + (itimer-driver-wakeup))) (car itimer-list)) ;; User level functions to list and modify existing itimers. @@ -331,19 +366,27 @@ (itimer-edit-mode) (setq buffer-read-only nil) (erase-buffer) - (insert "Name Value Restart Function\n" - "---- ----- ------- --------") + (insert +"Name Value Restart Function Argument\n" +"---- ----- ------- -------- --------") (if (null itimer-edit-start-marker) (setq itimer-edit-start-marker (point))) (while itimers (newline 1) (prin1 (itimer-name (car itimers))) (tab-to-tab-stop) - (prin1 (itimer-value (car itimers))) + (insert (itimer-truncate-string + (format "%5.5s" (itimer-value (car itimers))) 5)) + (tab-to-tab-stop) + (insert (itimer-truncate-string + (format "%5.5s" (itimer-restart (car itimers))) 5)) (tab-to-tab-stop) - (prin1 (itimer-restart (car itimers))) + (insert (itimer-truncate-string + (format "%.26s" (itimer-function (car itimers))) 26)) (tab-to-tab-stop) - (prin1 (itimer-function (car itimers))) + (if (itimer-uses-argument (car itimers)) + (prin1 (itimer-function-argument (car itimers))) + (prin1 'NONE)) (setq itimers (cdr itimers))) ;; restore point (goto-char opoint) @@ -359,8 +402,8 @@ for `itimer-edit-mode' for more information." (interactive) ;; since user is editing, make sure displayed data is reasonably up-to-date -; (if itimer-process -; (itimer-process-wakeup)) + (if (or itimer-process itimer-timer) + (itimer-driver-wakeup)) (list-itimers) (select-window (get-buffer-window "*Itimer List*")) (goto-char itimer-edit-start-marker) @@ -389,12 +432,12 @@ (setq major-mode 'itimer-edit-mode mode-name "Itimer Edit" truncate-lines t - tab-stop-list '(22 32 42)) + tab-stop-list '(22 32 40 67)) (abbrev-mode 0) (auto-fill-mode 0) - (buffer-disable-undo (current-buffer)) + (buffer-flush-undo (current-buffer)) (use-local-map itimer-edit-map) - (and lisp-mode-syntax-table (set-syntax-table lisp-mode-syntax-table))) + (set-syntax-table emacs-lisp-mode-syntax-table)) (put 'itimer-edit-mode 'mode-class 'special) @@ -435,30 +478,34 @@ ;; and use this info to determine which field the user ;; wants to modify. (beginning-of-line) - (while (and (>= opoint (point)) (< n 4)) + (while (and (>= opoint (point)) (< n 5)) (forward-sexp 2) (backward-sexp) - (itimer-incf n)) + (itimer-increment n)) (cond ((eq n 1) (error "Cannot change itimer name.")) ((eq n 2) 'value) ((eq n 3) 'restart) - ((eq n 4) 'function))))) + ((eq n 4) 'function) + (t 'function-argument))))) (cond ((eq field 'value) - ;; XEmacs: rewritten for I18N3 snarfing - (while (not (natnump field-value)) - (setq field-value (read-from-minibuffer "Set itimer value: " - nil nil t)))) + (let ((prompt "Set itimer value: ")) + (while (not (natnump field-value)) + (setq field-value (read-from-minibuffer prompt nil nil t))))) ((eq field 'restart) - (while (and field-value (not (natnump field-value))) - (setq field-value (read-from-minibuffer "Set itimer restart: " - nil nil t)))) + (let ((prompt "Set itimer restart: ")) + (while (and field-value (not (natnump field-value))) + (setq field-value (read-from-minibuffer prompt nil nil t))))) ((eq field 'function) - (while (not (or (and (symbolp field-value) (fboundp field-value)) - (and (consp field-value) - (memq (car field-value) '(lambda macro))))) - (setq field-value - (read (completing-read "Set itimer function: " - obarray 'fboundp nil)))))) + (let ((prompt "Set itimer function: ")) + (while (not (or (and (symbolp field-value) (fboundp field-value)) + (and (consp field-value) + (memq (car field-value) '(lambda macro))))) + (setq field-value + (read (completing-read prompt obarray 'fboundp nil)))))) + ((eq field 'function-argument) + (let ((prompt "Set itimer function argument: ")) + (setq field-value (read-expression prompt)) + (set-itimer-uses-argument itimer t)))) ;; set the itimer field (funcall (intern (concat "set-itimer-" (symbol-name field))) itimer field-value) @@ -503,7 +550,7 @@ (progn (forward-sexp 2) (backward-sexp))) - (itimer-decf count))) + (itimer-decrement count))) ((< (itimer-signum count) 0) (while (not (zerop count)) (backward-sexp) @@ -515,7 +562,7 @@ (progn (goto-char (point-max)) (backward-sexp))) - (itimer-incf count))))) + (itimer-increment count))))) (defun itimer-edit-previous-field (count) (interactive "p") @@ -528,210 +575,173 @@ ((eq forw-back (point)) t) (t (backward-sexp))))) +(defun itimer-truncate-string (str len) + (if (<= (length str) len) + str + (substring str 0 len))) ;; internals of the itimer implementation. +(defun itimer-run-expired-timers (time-elapsed) + (let ((itimers (copy-sequence itimer-list)) + (itimer) + (next-wakeup 600) + ;; process filters can be hit by stray C-g's from the user, + ;; so we must protect this stuff appropriately. + ;; Quit's are allowed from within itimer functions, but we + ;; catch them and print a message. + (inhibit-quit t)) + (setq next-wakeup 600) + (while itimers + (setq itimer (car itimers)) + (set-itimer-value-internal itimer (max 0 (- (itimer-value itimer) + time-elapsed))) + (if (> (itimer-value itimer) 0) + (setq next-wakeup + (min next-wakeup (itimer-value itimer))) + ;; itimer has expired, we must call its function. + ;; protect our local vars from the itimer function. + ;; allow keyboard quit to occur, but catch and report it. + ;; provide the variable `current-itimer' in case the function + ;; is interested. + (condition-case condition-data + (save-match-data + (let* ((current-itimer itimer) + (quit-flag nil) + (inhibit-quit nil) + itimer itimers time-elapsed) + (if (itimer-uses-argument current-itimer) + (funcall (itimer-function current-itimer) + (itimer-function-argument current-itimer)) + (funcall (itimer-function current-itimer))))) + (error (message "itimer \"%s\" signaled: %s" (itimer-name itimer) + (prin1-to-string condition-data))) + (quit (message "itimer \"%s\" quit" (itimer-name itimer)))) + ;; restart the itimer if we should, otherwise delete it. + (if (null (itimer-restart itimer)) + (delete-itimer itimer) + (set-itimer-value-internal itimer (itimer-restart itimer)) + (setq next-wakeup (min next-wakeup (itimer-value itimer))))) + (setq itimers (cdr itimers))) + ;; if user is editing itimers, update displayed info + (if (eq major-mode 'itimer-edit-mode) + (list-itimers)) + next-wakeup )) + (defun itimer-process-filter (process string) - (error "itimer-process-filter is not used in XEmacs") -; ;; If the itimer process dies and generates output while doing -; ;; so, we may be called before the process-sentinel. Sanity -; ;; check the output just in case... -; (if (not (string-match "^[0-9]" string)) -; (progn (message "itimer process gave odd output: %s" string) -; ;; it may be still alive and waiting for input -; (process-send-string itimer-process "3\n")) -; ;; if there are no active itimers, return quickly. -; (if itimer-list -; (let ((time-elapsed (string-to-int string)) -; (itimers itimer-list) -; (itimer) -; ;; process filters can be hit by stray C-g's from the user, -; ;; so we must protect this stuff appropriately. -; ;; Quit's are allowed from within itimer functions, but we -; ;; catch them. -; (inhibit-quit t)) -; (setq itimer-process-next-wakeup 600) -; (while itimers -; (setq itimer (car itimers)) -; (set-itimer-value itimer (max 0 (- (itimer-value itimer) time-elapsed)) t) -; (if (> (itimer-value itimer) 0) -; (setq itimer-process-next-wakeup -; (min itimer-process-next-wakeup (itimer-value itimer))) -; ;; itimer has expired, we must call its function. -; ;; protect our local vars from the itimer function. -; ;; allow keyboard quit to occur, but catch and report it. -; ;; provide the variable `current-itimer' in case the function -; ;; is interested. -; (condition-case condition-data -; (let* ((current-itimer itimer) -; itimer itimers time-elapsed -; quit-flag inhibit-quit) -; (funcall (itimer-function current-itimer))) -; (error (message "itimer \"%s\" signaled: %s" (itimer-name itimer) -; (prin1-to-string condition-data))) -; (quit (message "itimer \"%s\" quit" (itimer-name itimer)))) -; ;; restart the itimer if we should, otherwise delete it. -; (if (null (itimer-restart itimer)) -; (delete-itimer itimer) -; (set-itimer-value itimer (itimer-restart itimer) t) -; (setq itimer-process-next-wakeup -; (min itimer-process-next-wakeup (itimer-value itimer))))) -; (setq itimers (cdr itimers))) -; ;; if user is editing itimers, update displayed info -; (if (eq major-mode 'itimer-edit-mode) -; (list-itimers))) -; (setq itimer-process-next-wakeup 600)) -; ;; tell itimer-process when to wakeup again -; (process-send-string itimer-process -; (concat (int-to-string itimer-process-next-wakeup) -; "\n"))) - ) + ;; If the itimer process dies and generates output while doing + ;; so, we may be called before the process-sentinel. Sanity + ;; check the output just in case... + (if (not (string-match "^[0-9]" string)) + (progn (message "itimer process gave odd output: %s" string) + ;; it may be still alive and waiting for input + (process-send-string itimer-process "3\n")) + ;; if there are no active itimers, return quickly. + (if itimer-list + (setq itimer-next-wakeup + (itimer-run-expired-timers (string-to-int string))) + (setq itimer-next-wakeup 600)) + ;; tell itimer-process when to wakeup again + (process-send-string itimer-process + (concat (int-to-string itimer-next-wakeup) + "\n")))) (defun itimer-process-sentinel (process message) - (error "itimer-process-sentinel is not used in XEmacs") -; (let ((inhibit-quit t)) -; (if (eq (process-status process) 'stop) -; (continue-process process) -; ;; not stopped, so it must have died. -; ;; cleanup first... -; (delete-process process) -; (setq itimer-process nil) -; ;; now, if there are any active itimers then we need to immediately -; ;; start another itimer process, otherwise we can wait until the next -; ;; start-itimer call, which will start one automatically. -; (if (null itimer-list) -; () -; ;; there may have been an error message in the echo area; -; ;; give the user at least a little time to read it. -; (sit-for 2) -; (message "itimer process %s... respawning." (substring message 0 -1)) -; (itimer-process-start)))) - ) + (let ((inhibit-quit t)) + (if (eq (process-status process) 'stop) + (continue-process process) + ;; not stopped, so it must have died. + ;; cleanup first... + (delete-process process) + (setq itimer-process nil) + ;; now, if there are any active itimers then we need to immediately + ;; start another itimer process, otherwise we can wait until the next + ;; start-itimer call, which will start one automatically. + (if (null itimer-list) + () + ;; there may have been an error message in the echo area; + ;; give the user at least a little time to read it. + (sit-for 2) + (message "itimer process %s... respawning." (substring message 0 -1)) + (itimer-process-start))))) (defun itimer-process-start () - (error "itimer-process-start is not used in XEmacs") -; (let ((inhibit-quit t) -; (process-connection-type nil)) -; (setq itimer-process (start-process "itimer" nil "itimer")) -; (process-kill-without-query itimer-process) -; (set-process-filter itimer-process 'itimer-process-filter) -; (set-process-sentinel itimer-process 'itimer-process-sentinel) -; ;; Tell itimer process to wake up quickly, so that a correct wakeup -; ;; time can be computed. Zero instead of one here loses because of -; ;; underlying itimer implementations that use 0 to mean `disable the -; ;; itimer'. -; (setq itimer-process-next-wakeup 1) -; (process-send-string itimer-process "1\n")) - ) + (let ((inhibit-quit t) + (process-connection-type nil)) + (setq itimer-process (start-process "itimer" nil "itimer")) + (process-kill-without-query itimer-process) + (set-process-filter itimer-process 'itimer-process-filter) + (set-process-sentinel itimer-process 'itimer-process-sentinel) + ;; Tell itimer process to wake up quickly, so that a correct + ;; wakeup time can be computed. Zero loses because of + ;; underlying itimer implementations that use 0 to mean + ;; `disable the itimer'. + (setq itimer-next-wakeup itimer-short-interval) + (process-send-string itimer-process + (format "%s\n" itimer-next-wakeup)))) (defun itimer-process-wakeup () - (error "itimer-process-wakeup is not used in XEmacs") -; (interrupt-process itimer-process) -; (accept-process-output) - ) - - -;; XEmacs-specific code - -(defun activate-itimer (itimer) - (let ((inhibit-quit t)) - (set-itimer-id itimer - (add-timeout (itimer-value itimer) - 'itimer-callback - itimer - (itimer-restart itimer)))) - itimer) - -(defun deactivate-itimer (itimer) - (let ((inhibit-quit t) - (id (itimer-id itimer))) - (and id (disable-timeout id)) - (set-itimer-id itimer nil)) - itimer) + (interrupt-process itimer-process) + (accept-process-output)) -(defun itimer-callback (current-itimer) - (funcall (itimer-function current-itimer))) - - -;;; itimer-driven auto-saves - -;jwz: this is preloaded so don't ;;;###autoload -(defvar auto-save-timeout 30 - "*Number of seconds idle time before auto-save. -Zero or nil means disable auto-saving due to idleness. +(defun itimer-timer-start () + (let ((inhibit-quit t)) + (setq itimer-next-wakeup itimer-short-interval + itimer-timer-last-wakeup (current-time) + itimer-timer (add-timeout itimer-short-interval + 'itimer-timer-driver nil nil)))) -The actual amount of idle time between auto-saves is logarithmically related -to the size of the current buffer. This variable is the number of seconds -after which an auto-save will happen when the current buffer is 50k or less; -the timeout will be 2 1/4 times this in a 200k buffer, 3 3/4 times this in a -1000k buffer, and 4 1/2 times this in a 2000k buffer. - -See also the variable `auto-save-interval', which controls auto-saving based -on the number of characters typed.") - -;jwz: this is preloaded so don't ;;;###autoload -(defvar auto-gc-threshold (/ gc-cons-threshold 3) - "*GC when this many bytes have been consed since the last GC, -and the user has been idle for `auto-save-timeout' seconds.") +(defun itimer-timer-wakeup () + (let ((inhibit-quit t)) + (cond ((fboundp 'cancel-timer) + (cancel-timer itimer-timer)) + ((fboundp 'disable-timeout) + (disable-timeout itimer-timer))) + (setq itimer-timer (add-timeout itimer-short-interval + 'itimer-timer-driver nil nil)))) -(defun auto-save-itimer () - "For use as a itimer callback function. -Auto-saves and garbage-collects based on the size of the current buffer -and the value of `auto-save-timeout', `auto-gc-threshold', and the current -keyboard idle-time." - (if (or (null auto-save-timeout) - (<= auto-save-timeout 0) - (eq (minibuffer-window) (selected-window))) - nil - (let ((buf-size (1+ (ash (buffer-size) -8))) - (delay-level 0) - (now (current-time)) - delay) - (while (> buf-size 64) - (setq delay-level (1+ delay-level) - buf-size (- buf-size (ash buf-size -2)))) - (if (< delay-level 4) - (setq delay-level 4)) - ;; delay_level is 4 for files under around 50k, 7 at 100k, 9 at 200k, - ;; 11 at 300k, and 12 at 500k, 15 at 1 meg, and 17 at 2 meg. - (setq delay (/ (* delay-level auto-save-timeout) 4)) - (let ((idle-time (if (or (not (consp last-input-time)) - (/= (car now) (car last-input-time))) - (1+ delay) - (- (car (cdr now)) (cdr last-input-time))))) - (and (> idle-time delay) - (do-auto-save)) - (and (> idle-time auto-save-timeout) - (> (consing-since-gc) auto-gc-threshold) - (garbage-collect))))) - ;; Look at the itimer that's currently running; if the user has changed - ;; the value of auto-save-timeout, modify this itimer to have the correct - ;; restart time. There will be some latency between when the user changes - ;; this variable and when it takes effect, but it will happen eventually. - (let ((self (get-itimer "auto-save"))) - (or self (error "auto-save-itimer can't find itself")) - (if (and auto-save-timeout (> auto-save-timeout 4)) - (or (= (itimer-restart self) (/ auto-save-timeout 4)) - (set-itimer-restart self (/ auto-save-timeout 4))))) - nil) +(defun itimer-time-difference (t1 t2) + (let (usecs secs 65536-secs) + (setq usecs (- (nth 2 t1) (nth 2 t2))) + (if (< usecs 0) + (setq carry 1 + usecs (+ usecs 1000000)) + (setq carry 0)) + (setq secs (- (nth 1 t1) (nth 1 t2) carry)) + (if (< secs 0) + (setq carry 1 + secs (+ secs 65536)) + (setq carry 0)) + (setq 65536-secs (- (nth 0 t1) (nth 0 t2) carry)) + ;; loses for interval larger than the maximum signed Lisp integer. + ;; can't really be helped. + (+ (* 65536-secs 65536) + secs + (/ usecs (if (featurep 'lisp-float-type) 1e6 1000000))))) -(defun itimer-init-auto-gc () - (or noninteractive ; may be being run from after-init-hook in -batch mode. - (get-itimer "auto-save") - ;; the time here is just the first interval; if the user changes it - ;; later, it will adjust. - (let ((time (max 2 (/ (or auto-save-timeout 30) 4)))) - (start-itimer "auto-save" 'auto-save-itimer time time)))) +(defun itimer-timer-driver (&rest ignored) + ;; inhibit quit because if the user quits at an inopportune + ;; time, the timer process won't bne launched again and the + ;; system stops working. itimer-run-expired-timers allows + ;; individual timer function to be aborted, so the user can + ;; escape a feral timer function. + (let* ((inhibit-quit t) + (now (current-time)) + (elapsed (itimer-time-difference now itimer-timer-last-wakeup)) + sleep) + (setq itimer-timer-last-wakeup now + sleep (itimer-run-expired-timers elapsed) + itimer-next-wakeup sleep + itimer-timer (add-timeout sleep 'itimer-timer-driver nil nil)))) -(cond (purify-flag - ;; This file is being preloaded into an emacs about to be dumped. - ;; So arrange for the auto-save itimer to be started once emacs - ;; is launched. - (add-hook 'after-init-hook 'itimer-init-auto-gc)) - (t - ;; Otherwise, this file is being loaded into a normal, interactive - ;; emacs. Start the auto-save timer now. - (itimer-init-auto-gc))) +(defun itimer-driver-start () + (if (fboundp 'add-timeout) + (itimer-timer-start) + (itimer-process-start))) - -(provide 'itimer) +(defun itimer-driver-wakeup () + (if (fboundp 'add-timeout) + (itimer-timer-wakeup) + (itimer-process-wakeup))) + +;;; itimer.el ends here
--- a/lisp/prim/keydefs.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/prim/keydefs.el Mon Aug 13 08:51:32 2007 +0200 @@ -68,9 +68,11 @@ ;; FSFmacs casefiddle.c (define-key global-map "\C-x\C-u" 'upcase-region) -(put 'upcase-region 'disabled t) +;; This is silly with zmacs regions +;(put 'upcase-region 'disabled t) (define-key global-map "\C-x\C-l" 'downcase-region) -(put 'downcase-region 'disabled t) +;; This is silly with zmacs regions +;(put 'downcase-region 'disabled t) (define-key global-map "\M-u" 'upcase-region-or-word) (define-key global-map "\M-l" 'downcase-region-or-word) (define-key global-map "\M-c" 'capitalize-region-or-word) @@ -197,7 +199,9 @@ ;; Define ESC ESC : like ESC : for people who type ESC ESC out of habit. (define-key global-map "\M-\e:" 'eval-expression) ;(define-key global-map "\M-\e" 'eval-expression) -(put 'eval-expression 'disabled t) +;; Do we really need to disable this now that it is harder to type +;; by accident? +;; (put 'eval-expression 'disabled t) ;; Changed from C-x ESC so that function keys work following C-x. (define-key global-map "\C-x\e\e" 'repeat-complex-command) ;(define-key global-map "\C-x\e" 'repeat-complex-command)
--- a/lisp/prim/loadup.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/prim/loadup.el Mon Aug 13 08:51:32 2007 +0200 @@ -159,6 +159,7 @@ (when (featurep 'lisp-float-type) (load-gc "float-sup")) (load-gc "itimer") ; for vars auto-save-timeout and auto-gc-threshold + (load-gc "itimer-autosave") (if (featurep 'toolbar) (load-gc "toolbar") ;; else still define a few functions.
--- a/lisp/prim/mouse.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/prim/mouse.el Mon Aug 13 08:51:32 2007 +0200 @@ -1036,13 +1036,25 @@ (setq default-mouse-track-down-event (copy-event event)) nil) -(defun default-mouse-track-cleanup-hook () +(defun default-mouse-track-cleanup-extents-hook () + (remove-hook 'pre-command-hook 'default-mouse-track-cleanup-extents-hook) (let ((extent default-mouse-track-extent)) (if (consp extent) ; rectangle-p (mapcar 'delete-extent extent) (if extent (delete-extent extent))))) +(defun default-mouse-track-cleanup-hook () + (if zmacs-regions + (funcall 'default-mouse-track-cleanup-extents-hook) + (let ((extent default-mouse-track-extent) + (func #'(lambda (e) (set-extent-face e 'primary-selection)))) + (add-hook 'pre-command-hook 'default-mouse-track-cleanup-extents-hook) + (if (consp extent) ; rectangle-p + (mapcar func extent) + (if extent + (funcall func extent)))))) + (defun default-mouse-track-cleanup-extent () (let ((dead-func (function (lambda (x)
--- a/lisp/prim/replace.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/prim/replace.el Mon Aug 13 08:51:32 2007 +0200 @@ -581,7 +581,8 @@ (let ((aborted t)) (unwind-protect (progn - (isearch-highlight (match-beginning 0) (match-end 0)) + (if (match-beginning 0) + (isearch-highlight (match-beginning 0) (match-end 0))) (next-command-event event) (setq aborted nil)) (isearch-dehighlight aborted))) @@ -735,6 +736,7 @@ (if (not replaced) (progn (replace-match next-replacement nocasify literal) + (store-match-data nil) (setq replaced t)))) ((eq def 'automatic) (or replaced
--- a/lisp/prim/scrollbar.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/prim/scrollbar.el Mon Aug 13 08:51:32 2007 +0200 @@ -40,8 +40,7 @@ This is the little arrow to the left of the scrollbar. One argument is passed, the scrollbar's window. You can advise this function to change the scrollbar behavior." - (if (not (window-live-p window)) - nil + (when (window-live-p window) (scrollbar-set-hscroll window (- (window-hscroll window) 1)) (setq zmacs-region-stays t) nil)) @@ -51,8 +50,7 @@ This is the little arrow to the right of the scrollbar. One argument is passed, the scrollbar's window. You can advise this function to change the scrollbar behavior." - (if (not (window-live-p window)) - nil + (when (window-live-p window) (scrollbar-set-hscroll window (+ (window-hscroll window) 1)) (setq zmacs-region-stays t) nil)) @@ -62,8 +60,7 @@ \(The way this is done can vary from scrollbar to scrollbar.\) One argument is passed, the scrollbar's window. You can advise this function to change the scrollbar behavior." - (if (not (window-live-p window)) - nil + (when (window-live-p window) (scrollbar-set-hscroll window (- (window-hscroll window) (- (window-width window) 2))) (setq zmacs-region-stays t) @@ -74,8 +71,7 @@ \(The way this is done can vary from scrollbar to scrollbar.\) One argument is passed, the scrollbar's window. You can advise this function to change the scrollbar behavior." - (if (not (window-live-p window)) - nil + (when (window-live-p window) (scrollbar-set-hscroll window (+ (window-hscroll window) (- (window-width window) 2))) (setq zmacs-region-stays t) @@ -86,8 +82,7 @@ \(The way this is done can vary from scrollbar to scrollbar.\). One argument is passed, the scrollbar's window. You can advise this function to change the scrollbar behavior." - (if (not (window-live-p window)) - nil + (when (window-live-p window) (scrollbar-set-hscroll window 0) (setq zmacs-region-stays t) nil)) @@ -97,8 +92,7 @@ \(The way this is done can vary from scrollbar to scrollbar.\). One argument is passed, the scrollbar's window. You can advise this function to change the scrollbar behavior." - (if (not (window-live-p window)) - nil + (when (window-live-p window) (scrollbar-set-hscroll window 'max) (setq zmacs-region-stays t) nil)) @@ -109,9 +103,8 @@ representing how many columns the thumb is slid over. You can advise this function to change the scrollbar behavior." (let ((window (car data)) - (value (cdr data))) - (if (not (or (window-live-p window) (integerp value))) - nil + (value (cdr data))) + (when (and (window-live-p window) (integerp value)) (scrollbar-set-hscroll window value) (setq zmacs-region-stays t) nil)))
--- a/lisp/prim/subr.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/prim/subr.el Mon Aug 13 08:51:32 2007 +0200 @@ -330,6 +330,36 @@ (buffer-string) (erase-buffer))))) +(defmacro with-temp-buffer (&rest forms) + "Create a temporary buffer, and evaluate FORMS there like `progn'." + (let ((temp-buffer (make-symbol "temp-buffer"))) + `(let ((,temp-buffer + (get-buffer-create (generate-new-buffer-name " *temp*")))) + (unwind-protect + (save-excursion + (set-buffer ,temp-buffer) + ,@forms) + (and (buffer-name ,temp-buffer) + (kill-buffer ,temp-buffer)))))) + +;; Moved from 20.1:lisp/mule/mule-coding.el. +(defmacro with-string-as-buffer-contents (str &rest body) + "With the contents of the current buffer being STR, run BODY. +Returns the new contents of the buffer, as modified by BODY. +The original current buffer is restored afterwards." + `(let ((curbuf (current-buffer)) + (tempbuf (get-buffer-create " *string-as-buffer-contents*"))) + (unwind-protect + (progn + (set-buffer tempbuf) + (buffer-disable-undo (current-buffer)) + (erase-buffer) + (insert ,str) + ,@body + (buffer-string)) + (erase-buffer tempbuf) + (set-buffer curbuf)))) + (defun insert-face (string face) "Insert STRING and highlight with FACE. Returns the extent created." (let ((p (point)) ext) @@ -541,30 +571,30 @@ ;;;; Specifying things to do after certain files are loaded. -;(defun eval-after-load (file form) -; "Arrange that, if FILE is ever loaded, FORM will be run at that time. -;This makes or adds to an entry on `after-load-alist'. -;If FILE is already loaded, evaluate FORM right now. -;It does nothing if FORM is already on the list for FILE. -;FILE should be the name of a library, with no directory name." -; ;; Make sure there is an element for FILE. -; (or (assoc file after-load-alist) -; (setq after-load-alist (cons (list file) after-load-alist))) -; ;; Add FORM to the element if it isn't there. -; (let ((elt (assoc file after-load-alist))) -; (or (member form (cdr elt)) -; (progn -; (nconc elt (list form)) -; ;; If the file has been loaded already, run FORM right away. -; (and (assoc file load-history) -; (eval form))))) -; form) -; -;(defun eval-next-after-load (file) -; "Read the following input sexp, and run it whenever FILE is loaded. -;This makes or adds to an entry on `after-load-alist'. -;FILE should be the name of a library, with no directory name." -; (eval-after-load file (read))) +(defun eval-after-load (file form) + "Arrange that, if FILE is ever loaded, FORM will be run at that time. +This makes or adds to an entry on `after-load-alist'. +If FILE is already loaded, evaluate FORM right now. +It does nothing if FORM is already on the list for FILE. +FILE should be the name of a library, with no directory name." + ;; Make sure there is an element for FILE. + (or (assoc file after-load-alist) + (setq after-load-alist (cons (list file) after-load-alist))) + ;; Add FORM to the element if it isn't there. + (let ((elt (assoc file after-load-alist))) + (or (member form (cdr elt)) + (progn + (nconc elt (list form)) + ;; If the file has been loaded already, run FORM right away. + (and (assoc file load-history) + (eval form))))) + form) + +(defun eval-next-after-load (file) + "Read the following input sexp, and run it whenever FILE is loaded. +This makes or adds to an entry on `after-load-alist'. +FILE should be the name of a library, with no directory name." + (eval-after-load file (read))) ; alternate names (not obsolete) (if (not (fboundp 'mod)) (define-function 'mod '%))
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/site-load.el Mon Aug 13 08:51:32 2007 +0200 @@ -0,0 +1,58 @@ +;;; site-load.el --- Template file for site-wide XEmacs customization + +;; Author: Steven L. Baur <steve@altair.xemacs.org> +;; Keywords: internal + +;; This file is part of XEmacs. + +;;; Commentary: + +;; This is a prototype site-load.el file. +;; The site-load.el mechanism is provided so XEmacs installers can easily +;; dump lisp packages with XEmacs that do not get dumped standardly. + +;; The file `site-packages' if it exists should look something like: +;; (setq site-load-packages '( +;; "../lisp/modes/cc-mode" +;; "../lisp/utils/redo" +;; "../lisp/packages/scroll-in-place" +;; ) +;; ) + +;; The first line and the last line must be exact. Each of the packages +;; listed must be double quoted, have either an absolute path, or a relative +;; to the build src directory path *and* be bytecompiled prior to the attempt +;; to dump. + +;; Because this is a trial implementation and the file is shared with +;; make-docfiles, syntax is strict and unforgiving. So sue me. It +;; is still better than the way it used to be. + +;;; Code: +(defvar site-load-package-file "../lisp/site-packages" + "File name containing the list of extra packages to dump with XEmacs.") +(defvar site-load-packages nil + "A list of .elc files that should be dumped with XEmacs. +This variable should be set by `site-load-package-file'.") + +;; Load site specific packages for dumping with the XEmacs binary. +(when (file-exists-p site-load-package-file) + (let ((file)) + (load site-load-package-file t t t) + ;; The `load-gc' macro is provided as a clue that a package is being loaded + ;; in preparation of being dumped into XEmacs. + (defmacro load-gc (file) + (list 'prog1 (list 'load file) '(garbage-collect))) + (message "Loading site-wide packages for dumping...") + (while site-load-packages + (setq file (car site-load-packages)) + (load-gc file) + (setq site-load-packages (cdr site-load-packages))) + (message "Loading site-wide packages for dumping...done") + (fmakunbound 'load-gc))) + +;; This file is intended for end user additions. +;; Put other initialization here, like setting of language-environment, etc. +;; Perhaps this should really be in the site-init.el. + +;;; site-load.el ends here
--- a/lisp/utils/frame-icon.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/utils/frame-icon.el Mon Aug 13 08:51:32 2007 +0200 @@ -66,7 +66,11 @@ (Buffer-menu-mode . "help") (c++-mode . "c++") (c++-c-mode . "escherknot") - (c-mode . "escherknot") + (c-mode . "c") + (awk-mode . "escherknot") + (cvs-mode . "tree") + (f90-mode . "wizard") + (xrdb-mode . "RIP") ;; (calc-edit-mode . "cray") (calc-keypad . "cray") @@ -131,8 +135,8 @@ (vip-mode . "stopsign") (vkill-mode . "load") (vrml-mode . "drawing") - (vm-mode . "mail") - (vm-summary-mode . "mail") + (vm-mode . "scroll2") + (vm-summary-mode . "scroll2") (w3-mode . "world") (waisq-mode . "library") (wordstar-mode . "words")
--- a/lisp/utils/id-select.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/utils/id-select.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,6 +1,6 @@ ;;!emacs ;; -;; LCD-ENTRY: id-select.el|InfoDock Associates|elisp@infodock.com|Syntactical region selecting|12/02/96|1.4.3| +;; LCD-ENTRY: id-select.el|InfoDock Associates|elisp@infodock.com|Syntactical region selecting|02/28/97|1.4.5| ;; ;; FILE: id-select.el ;; SUMMARY: Select larger and larger syntax-driven regions in a buffer. @@ -9,15 +9,16 @@ ;; ;; AUTHOR: Bob Weiner ;; -;; ORG: InfoDock Associates. We sell corporate support and development -;; contracts for InfoDock, Emacs and XEmacs. +;; ORG: InfoDock Associates. We sell corporate support and +;; development contracts for InfoDock, Emacs and XEmacs. ;; E-mail: <info@infodock.com> Web: http://www.infodock.com ;; Tel: +1 408-243-3300 ;; +;; ;; ORIG-DATE: 19-Oct-96 at 02:25:27 -;; LAST-MOD: 2-Dec-96 at 19:45:28 by Bob Weiner +;; LAST-MOD: 28-Feb-97 at 15:36:39 by Bob Weiner ;; -;; Copyright (C) 1996 InfoDock Associates +;; Copyright (C) 1996, 1997 InfoDock Associates ;; ;; This file is part of InfoDock. ;; It is available for use and distribution under the terms of the GNU Public @@ -62,11 +63,15 @@ ;; for the variable, mouse-track-click-hook, for how this is done.) A ;; single click of the left button will remove the region and reset point. ;; -;; The function, id-select-thing, may be bound to a key, {C-c s}, seems to -;; be a reasonable choice, to provide the same syntax-driven region -;; selection functionality. Use {C-g} to unmark the region when done. -;; Use, id-select-thing-with-mouse, if you want to bind this to a mouse key -;; and thereby use single clicks instead of double clicks. +;; The function, id-select-thing, may be bound to a key to provide the same +;; syntax-driven region selection functionality. {C-c C-m} is a +;; reasonable site-wide choice since this key is seldom used and it +;; mnemonically indicates marking something. {C-c s} may be preferred as a +;; personal binding. +;; +;; Use {C-g} to unmark the region when done. Use, +;; id-select-thing-with-mouse, if you want to bind this to a mouse key and +;; thereby use single clicks instead of double clicks. ;; ;; Three other commands are also provided: ;; id-select-and-copy-thing - mark and copy the syntactical unit to the @@ -141,6 +146,18 @@ ;; (define-key html-mode-map "\C-c." 'id-select-goto-matching-tag) ;; ))) ;; +;; If you are incredibly academic and you use the Miranda programming +;; language with a literate programming style (where code is preceded by a +;; > character in the first column, you'll want to change the line in +;; mira.el that reads: +;; (modify-syntax-entry ?> ".") +;; to: +;; (modify-syntax-entry ?> " ") +;; +;; in order to make this package recognize the indented expressions of the +;; language. If you don't use the literate style, no changes should be +;; necessary. +;; ;; DESCRIP-END. ;;; ************************************************************************ @@ -160,8 +177,8 @@ "*List of textual modes where paragraphs may be outdented or indented.") (defvar id-select-indent-modes - (append '(asm-mode csh-mode eiffel-mode ksh-mode python-mode pascal-mode - sather-mode) + (append '(asm-mode csh-mode eiffel-mode ksh-mode miranda-mode python-mode + pascal-mode sather-mode) id-select-text-modes) "*List of language major modes which use mostly indentation to define syntactic structure.") @@ -169,16 +186,17 @@ '((csh-mode "\\(\\|then\\|elsif\\|else\\)[ \t]*$") (eiffel-mode "\\(\\|then\\|else if\\|else\\)[ \t]*$") (ksh-mode "\\(\\|then\\|elif\\|else\\)[ \t]*$") + (miranda-mode "[ \t>]*$") (pascal-mode "\\(\\|then\\|else\\)[ \t]*$") (python-mode "[ \t]*$") (sather-mode "\\(\\|then\\|else if\\|else\\)[ \t]*$") ;; - (fundamental-mode "[^ \t\n]") - (kotl-mode "[^ \t\n]") - (indented-text-mode "[^ \t\n]") + (fundamental-mode "[^ \t\n*]") + (kotl-mode "[^ \t\n*]") + (indented-text-mode "[^ \t\n*]") (Info-mode "[^ \t\n]") - (outline-mode "[^\\*]") - (text-mode "[^ \t\n]") + (outline-mode "[^*]") + (text-mode "[^ \t\n*]") ) "List of (major-mode . non-terminator-line-regexp) elements used to avoid early dropoff when marking indented code.") @@ -536,6 +554,22 @@ (regexp-quote comment-start) (regexp-quote comment-end)))))))) +(defun id-select-back-to-indentation () + "Move point to the first non-whitespace character on this line and return point. +This respects the current syntax table definition of whitespace, whereas +`back-to-indentation' does not. This is relevant in literate programming and +mail and news reply modes." + (goto-char (min (progn (end-of-line) (point)) + (progn (beginning-of-line) + (skip-syntax-forward " ") + (point))))) + +(defun id-select-bigger-thing () + "Select a bigger object where point is." + (prog1 + (id-select-thing) + (setq this-command 'select-thing))) + (defun id-select-region-bigger-p (old-region new-region) "Return t if OLD-REGION is smaller than NEW-REGION and NEW-REGION partially overlaps OLD-REGION, or if OLD-REGION is uninitialized." (if (null (car old-region)) @@ -552,12 +586,6 @@ (<= (min (cdr new-region) (car new-region)) (max (cdr old-region) (car old-region)))))))) -(defun id-select-bigger-thing () - "Select a bigger object where point is." - (prog1 - (id-select-thing) - (setq this-command 'select-thing))) - (defun id-select-reset () ;; Reset syntactic selection. (setq id-select-prior-point (point) @@ -661,7 +689,7 @@ (if (or at-def-brace ;; At the start of a definition: ;; Must be at the first non-whitespace character in the line. - (and (= (point) (save-excursion (back-to-indentation) (point))) + (and (= (point) (save-excursion (id-select-back-to-indentation))) ;; Must be on an alpha or symbol-constituent character. ;; Also allow ~ for C++ destructors. (looking-at "[a-zA-z~]\\|\\s_") @@ -677,7 +705,8 @@ (setq id-select-previous 'brace-def-or-declaration) ;; Handle declarations and definitions embedded within classes. (if (and (= (following-char) ?{) - (/= (point) (save-excursion (back-to-indentation) (point)))) + (/= (point) (save-excursion + (id-select-back-to-indentation)))) (setq at-def-brace nil)) ;; (if at-def-brace nil (beginning-of-line)) @@ -741,7 +770,7 @@ ;; or symbol-constituent character. (t (looking-at "[a-zA-z]\\|\\s_"))) ;; Must be at the first non-whitespace character in the line. - (= (point) (save-excursion (back-to-indentation) (point)))) + (= (point) (save-excursion (id-select-back-to-indentation)))) (let* ((start-col (current-column)) (opoint (if (eq major-mode 'kotl-mode) (progn (kotl-mode:to-valid-position) (point)) @@ -749,7 +778,7 @@ (while (and (zerop (forward-line 1)) (bolp) - (or (progn (back-to-indentation) + (or (progn (id-select-back-to-indentation) (> (current-column) start-col)) ;; If in a text mode, allow outdenting, otherwise ;; only include special lines here indented to the @@ -846,7 +875,7 @@ (goto-char pos) (if (and (= (following-char) ?#) ;; Must be at the first non-whitespace character in the line. - (= (point) (save-excursion (back-to-indentation) (point)))) + (= (point) (save-excursion (id-select-back-to-indentation)))) (progn ;; Skip past continuation lines that end with a backslash. (while (and (looking-at ".*\\\\\\s-*$") @@ -871,9 +900,11 @@ ?\ ) (id-select-set-region pos (1+ pos)) (goto-char pos) - (id-select-set-region - (save-excursion (backward-sexp) (point)) - (progn (forward-sexp) (point))))))) + (condition-case () + (id-select-set-region + (save-excursion (backward-sexp) (point)) + (progn (forward-sexp) (point))) + (error nil)))))) (defun id-select-comment (pos) "Return rest of line from POS to newline."
--- a/lisp/version.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/version.el Mon Aug 13 08:51:32 2007 +0200 @@ -26,7 +26,7 @@ (defconst emacs-version "19.15" "\ Version numbers of this version of Emacs.") -(setq emacs-version (purecopy (concat emacs-version " XEmacs Lucid (beta95)"))) +(setq emacs-version (purecopy (concat emacs-version " XEmacs Lucid (beta96)"))) (defconst emacs-major-version (progn (or (string-match "^[0-9]+" emacs-version)
--- a/lisp/viper/viper-ex.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/viper/viper-ex.el Mon Aug 13 08:51:32 2007 +0200 @@ -1878,6 +1878,7 @@ (beg (car (cdr ex-addresses))) (orig-buf (current-buffer)) (orig-buf-file-name (buffer-file-name)) + (orig-buf-name (buffer-name)) (buff-changed-p (buffer-modified-p)) temp-buf writing-same-file region file-exists writing-whole-file) @@ -1929,7 +1930,13 @@ (save-buffer)) ;; restore the buffer file name (set-visited-file-name orig-buf-file-name) - (set-buffer-modified-p buff-changed-p)) + (set-buffer-modified-p buff-changed-p) + ;; If the buffer wasn't visiting a file, restore buffer name. + ;; Name could've been changed by packages such as uniquify. + (or orig-buf-file-name + (progn + (unlock-buffer) + (rename-buffer orig-buf-name)))) (save-restriction (widen) (ex-write-info
--- a/lisp/viper/viper-util.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/viper/viper-util.el Mon Aug 13 08:51:32 2007 +0200 @@ -53,6 +53,14 @@ ;;; XEmacs support +;; A fix for NeXT Step +;; Should probably be eliminated in later versions. +(if (and (vip-window-display-p) (eq (vip-device-type) 'ns)) + (progn + (fset 'x-display-color-p (symbol-function 'ns-display-color-p)) + (fset 'x-color-defined-p (symbol-function 'ns-color-defined-p)) + )) + (if vip-xemacs-p (progn (fset 'vip-read-event (symbol-function 'next-command-event)) @@ -85,6 +93,7 @@ (fset 'vip-color-defined-p (symbol-function 'x-color-defined-p)) ))) + (fset 'vip-characterp (symbol-function (if vip-xemacs-p 'characterp 'integerp)))
--- a/lisp/viper/viper.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/viper/viper.el Mon Aug 13 08:51:32 2007 +0200 @@ -8,7 +8,7 @@ ;; Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. -(defconst viper-version "2.93 of February 13, 1997" +(defconst viper-version "2.93 of February 25, 1997" "The current version of Viper") ;; This file is part of GNU Emacs. @@ -365,7 +365,7 @@ (vip-test-com-defun vip-charpair-command) (defconst vip-movement-commands '(?b ?B ?e ?E ?f ?F ?G ?h ?H ?j ?k ?l - ?H ?M ?n ?t ?T ?w ?W ?$ ?% + ?H ?M ?L ?n ?t ?T ?w ?W ?$ ?% ?^ ?( ?) ?- ?+ ?| ?{ ?} ?[ ?] ?' ?` ?; ?, ?0 ?? ?/ ) @@ -3836,7 +3836,8 @@ (error "Buffer not killed")))) -(defvar vip-smart-suffix-list '("" "tex" "c" "cc" "el" "p") +(defvar vip-smart-suffix-list + '("" "tex" "c" "cc" "el" "java" "html" "pl" "P" "p") "*List of suffixes that Viper automatically tries to append to filenames ending with a `.'. This is useful when you the current directory contains files with the same prefix and many different suffixes. Usually, only one of the suffixes
--- a/lisp/vm/vm-delete.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-delete.el Mon Aug 13 08:51:32 2007 +0200 @@ -173,7 +173,7 @@ ;; all folder buffers. (vm-update-summary-and-mode-line) (if (not shaddap) - (vm-unsaved-message "Expunging...")) + (message "Expunging...")) (let ((use-marks (eq last-command 'vm-next-command-uses-marks)) (mp vm-message-list) (virtual (eq major-mode 'vm-virtual-mode))
--- a/lisp/vm/vm-digest.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-digest.el Mon Aug 13 08:51:32 2007 +0200 @@ -534,7 +534,7 @@ (setq digest-type (vm-guess-digest-type m)) (if (null digest-type) (error "Couldn't guess digest type.")))) - (vm-unsaved-message "Bursting %s digest..." digest-type) + (message "Bursting %s digest..." digest-type) (cond ((cond ((equal digest-type "mime") (vm-mime-burst-message m))
--- a/lisp/vm/vm-folder.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-folder.el Mon Aug 13 08:51:32 2007 +0200 @@ -919,9 +919,9 @@ (setq tail-cons (cdr tail-cons))) (vm-increment n) (if (zerop (% n modulus)) - (vm-unsaved-message "Parsing messages... %d" n))) + (message "Parsing messages... %d" n))) (if (>= n modulus) - (vm-unsaved-message "Parsing messages... done")) + (message "Parsing messages... done")) (if (and (not (= last-end (point-max))) (not (eq vm-folder-type 'unknown))) (progn @@ -1255,10 +1255,10 @@ ((vm-unread-flag (car mp)) (vm-increment vm-unread-count))) (if (zerop (% vm-total-count modulus)) - (vm-unsaved-message "Reading attributes... %d" vm-total-count)) + (message "Reading attributes... %d" vm-total-count)) (setq mp (cdr mp))) (if (>= vm-total-count modulus) - (vm-unsaved-message "Reading attributes... done")) + (message "Reading attributes... done")) (if (null message-list) (setq vm-totals (list vm-modification-counter vm-total-count @@ -1457,7 +1457,7 @@ (and got (or (not (equal vis vm-visible-headers)) (not (equal invis vm-invisible-header-regexp))) (let ((mp vm-message-list)) - (vm-unsaved-message "Discarding visible header info...") + (message "Discarding visible header info...") (while mp (vm-set-vheaders-regexp-of (car mp) nil) (vm-set-vheaders-of (car mp) nil) @@ -1483,7 +1483,7 @@ (vm-skip-past-leading-message-separator) (if (re-search-forward vm-message-order-header-regexp lim t) (progn - (vm-unsaved-message "Reordering messages...") + (message "Reordering messages...") (setq order (read (current-buffer)) list-length (length vm-message-list) v (make-vector (max list-length (length order)) nil)) @@ -1500,7 +1500,7 @@ vm-message-list)) (vm-set-numbering-redo-start-point t) (vm-reverse-link-messages)) - (vm-unsaved-message "Reordering messages... done"))))))) + (message "Reordering messages... done"))))))) ;; Read the header that gives the folder's cached summary format ;; If the current summary format is different, then the cached @@ -2114,7 +2114,7 @@ (if (and (not no-change) (not virtual)) (progn ;; this could take a while, so give the user some feedback - (vm-unsaved-message "Quitting...") + (message "Quitting...") (or vm-folder-read-only (eq major-mode 'vm-virtual-mode) (vm-change-all-new-to-unread)))) (if (and (buffer-modified-p) @@ -2122,7 +2122,7 @@ (not no-change) (not virtual)) (vm-save-folder)) - (vm-unsaved-message "") + (message "") (let ((summary-buffer vm-summary-buffer) (pres-buffer vm-presentation-buffer-handle) (mail-buffer (current-buffer))) @@ -2195,13 +2195,20 @@ (if (integerp vm-mail-check-interval) (if timer (timer-set-time timer (current-time) vm-mail-check-interval) - (set-itimer-restart current-itimer vm-mail-check-interval))) + (set-itimer-restart current-itimer vm-mail-check-interval)) + ;; user has changed the variable value to a something that + ;; isn't a number, make the timer go away. + (if timer + (cancel-timer timer) + (set-itimer-restart current-itimer nil))) (let ((b-list (buffer-list)) + (found-one nil) oldval) (while (and (not (input-pending-p)) b-list) (save-excursion (set-buffer (car b-list)) (if (and (eq major-mode 'vm-mode) + (setq found-one t) (not vm-block-new-mail)) (progn (setq oldval vm-spooled-mail-waiting) @@ -2210,7 +2217,12 @@ (progn (intern (buffer-name) vm-buffers-needing-display-update) (vm-update-summary-and-mode-line)))))) - (setq b-list (cdr b-list))))) + (setq b-list (cdr b-list))) + ;; make the timer go away if we didn't encounter a vm-mode buffer. + (if (and (not found-one) (null b-list)) + (if timer + (cancel-timer timer) + (set-itimer-restart current-itimer nil))))) ;; support for numeric vm-auto-get-new-mail ;; if timer argument is present, this means we're using the Emacs @@ -2222,12 +2234,19 @@ (if (integerp vm-auto-get-new-mail) (if timer (timer-set-time timer (current-time) vm-auto-get-new-mail) - (set-itimer-restart current-itimer vm-auto-get-new-mail))) - (let ((b-list (buffer-list))) + (set-itimer-restart current-itimer vm-auto-get-new-mail)) + ;; user has changed the variable value to a something that + ;; isn't a number, make the timer go away. + (if timer + (cancel-timer timer) + (set-itimer-restart current-itimer nil))) + (let ((b-list (buffer-list)) + (found-one nil)) (while (and (not (input-pending-p)) b-list) (save-excursion (set-buffer (car b-list)) (if (and (eq major-mode 'vm-mode) + (setq found-one t) (not (and (not (buffer-modified-p)) buffer-file-name (file-newer-than-file-p @@ -2244,7 +2263,12 @@ (vm-thoughtfully-select-message)) (vm-preview-current-message) (vm-update-summary-and-mode-line))))) - (setq b-list (cdr b-list))))) + (setq b-list (cdr b-list))) + ;; make the timer go away if we didn't encounter a vm-mode buffer. + (if (and (not found-one) (null b-list)) + (if timer + (cancel-timer timer) + (set-itimer-restart current-itimer nil))))) ;; support for numeric vm-flush-interval ;; if timer argument is present, this means we're using the Emacs @@ -2345,7 +2369,7 @@ (if (buffer-modified-p) (let (mp (newlist nil)) ;; stuff the attributes of messages that need it. - (vm-unsaved-message "Stuffing attributes...") + (message "Stuffing attributes...") (vm-stuff-folder-attributes nil) ;; stuff bookmark and header variable values (if vm-message-list @@ -2358,7 +2382,7 @@ (vm-stuff-summary) (and vm-message-order-changed (vm-stuff-message-order)))) - (vm-unsaved-message "Saving...") + (message "Saving...") (let ((vm-inhibit-write-file-hook t)) (save-buffer prefix)) (vm-set-buffer-modified-p nil) @@ -2394,7 +2418,7 @@ '(vm-save-and-expunge-folder)) (if (not vm-folder-read-only) (progn - (vm-unsaved-message "Expunging...") + (message "Expunging...") (vm-expunge-folder t))) (vm-save-folder prefix)) @@ -2782,9 +2806,9 @@ (if (not (eq major-mode 'vm-mode)) (vm-mode)) (if (consp (car (vm-spool-files))) - (vm-unsaved-message "Checking for new mail for %s..." + (message "Checking for new mail for %s..." (or buffer-file-name (buffer-name))) - (vm-unsaved-message "Checking for new mail...")) + (message "Checking for new mail...")) (let (totals-blurb) (if (and (vm-get-spooled-mail t) (vm-assimilate-new-messages t)) (progn @@ -2801,7 +2825,7 @@ (message "No new mail for %s" (or buffer-file-name (buffer-name))) (message "No new mail.")) - (and (interactive-p) (sit-for 4) (vm-unsaved-message ""))))) + (and (interactive-p) (sit-for 4) (message ""))))) (t (let ((buffer-read-only nil) folder mcount totals-blurb) @@ -2970,7 +2994,7 @@ (while (and (sit-for 4) lines) (message (substitute-command-keys (car lines))) (setq lines (cdr lines))))) - (vm-unsaved-message "")) + (message "")) (defun vm-load-init-file (&optional interactive) (interactive "p") @@ -3167,7 +3191,7 @@ ;; process slower. (setq mp (cdr mp) n (1+ n)) (if (zerop (% n modulus)) - (vm-unsaved-message "Converting... %d" n)))))) + (message "Converting... %d" n)))))) (vm-clear-modification-flag-undos) (intern (buffer-name) vm-buffers-needing-display-update) (vm-update-summary-and-mode-line)
--- a/lisp/vm/vm-mark.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-mark.el Mon Aug 13 08:51:32 2007 +0200 @@ -343,10 +343,12 @@ (defun vm-next-command-uses-marks () "Does nothing except insure that the next VM command will operate only -on the marked messages in the current folder." +on the marked messages in the current folder. This only works for +commands bound to key, menu or button press events. M-x vm-command will +not work." (interactive) (setq this-command 'vm-next-command-uses-marks) - (vm-unsaved-message "Next command uses marks...") + (message "Next command uses marks...") (vm-display nil nil '(vm-next-command-uses-marks) '(vm-next-command-uses-marks)))
--- a/lisp/vm/vm-menu.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-menu.el Mon Aug 13 08:51:32 2007 +0200 @@ -269,29 +269,108 @@ ["Send, Keep Composing" vm-mail-send (vm-menu-can-send-mail-p)] ["Cancel" kill-buffer t] "----" - "Go to Field:" - "----" - [" To:" mail-to t] - [" Subject:" mail-subject t] - [" CC:" mail-cc t] - [" BCC:" mail-bcc t] - [" Reply-To:" mail-replyto t] - [" Text" mail-text t] + ["Yank Original" vm-menu-yank-original vm-reply-list] "----" - ["Yank Original" vm-menu-yank-original vm-reply-list] - ["Fill Yanked Message" mail-fill-yanked-message t] - ["Insert Signature" mail-signature t] - ["Insert File..." insert-file t] - ["Insert Buffer..." insert-buffer t] + (append + (if (vm-menu-fsfemacs-menus-p) + (list "Send Using MIME..." + "Send Using MIME..." + "---" + "---") + (list "Send Using MIME...")) + (list + ["Use MIME" + (set (make-local-variable 'vm-send-using-mime) t) + :active t + :style radio + :selected vm-send-using-mime] + ["Don't use MIME" + (set (make-local-variable 'vm-send-using-mime) nil) + :active t + :style radio + :selected (not vm-send-using-mime)])) + (append + (if (vm-menu-fsfemacs-menus-p) + (list "Fragment Messages Larger Than ..." + "Fragment Messages Larger Than ..." + "---" + "---") + (list "Fragment Messages Larger Than ...")) + (list ["Infinity, i.e., don't fragment" + (set (make-local-variable 'vm-mime-max-message-size) nil) + :active vm-send-using-mime + :style radio + :selected (eq vm-mime-max-message-size nil)] + ["50000 bytes" + (set (make-local-variable 'vm-mime-max-message-size) + 50000) + :active vm-send-using-mime + :style radio + :selected (eq vm-mime-max-message-size 50000)] + ["100000 bytes" + (set (make-local-variable 'vm-mime-max-message-size) + 100000) + :active vm-send-using-mime + :style radio + :selected (eq vm-mime-max-message-size 100000)] + ["200000 bytes" + (set (make-local-variable 'vm-mime-max-message-size) + 200000) + :active vm-send-using-mime + :style radio + :selected (eq vm-mime-max-message-size 200000)] + ["500000 bytes" + (set (make-local-variable 'vm-mime-max-message-size) + 500000) + :active vm-send-using-mime + :style radio + :selected (eq vm-mime-max-message-size 500000)] + ["1000000 bytes" + (set (make-local-variable 'vm-mime-max-message-size) + 1000000) + :active vm-send-using-mime + :style radio + :selected (eq vm-mime-max-message-size 1000000)] + ["2000000 bytes" + (set (make-local-variable 'vm-mime-max-message-size) + 2000000) + :active vm-send-using-mime + :style radio + :selected (eq vm-mime-max-message-size 2000000)])) + (append + (if (vm-menu-fsfemacs-menus-p) + (list "Encode 8-bit Characters Using ..." + "Encode 8-bit Characters Using ..." + "---" + "---") + (list "Encode 8-bit Characters Using ...")) + (list + ["Nothing, i.e., send unencoded" + (set (make-local-variable 'vm-mime-8bit-text-transfer-encoding) + '8bit) + :active vm-send-using-mime + :style radio + :selected (eq vm-mime-8bit-text-transfer-encoding '8bit)] + ["Quoted-Printable" + (set (make-local-variable 'vm-mime-8bit-text-transfer-encoding) + 'quoted-printable) + :active vm-send-using-mime + :style radio + :selected (eq vm-mime-8bit-text-transfer-encoding + 'quoted-printable)] + ["BASE64" + (set (make-local-variable 'vm-mime-8bit-text-transfer-encoding) + 'base64) + :active vm-send-using-mime + :style radio + :selected (eq vm-mime-8bit-text-transfer-encoding 'base64)])) "----" - "MIME:" - "----" - [" Attach File..." vm-mime-attach-file vm-send-using-mime] - [" Attach MIME File..." vm-mime-attach-mime-file vm-send-using-mime] - [" Encode MIME, But Don't Send" vm-mime-encode-composition + ["Attach File..." vm-mime-attach-file vm-send-using-mime] + ["Attach MIME File..." vm-mime-attach-mime-file vm-send-using-mime] + ["Encode MIME, But Don't Send" vm-mime-encode-composition (and vm-send-using-mime (null (vm-mail-mode-get-header-contents "MIME-Version:")))] - [" Preview MIME Before Sending" vm-mime-preview-composition + ["Preview MIME Before Sending" vm-mime-preview-composition vm-send-using-mime] )))) @@ -475,7 +554,7 @@ (let ((headers '("to" "cc" "bcc" "resent-to" "resent-cc" "resent-bcc")) h) (while headers - (setq h (mail-fetch-field (car headers))) + (setq h (vm-mail-mode-get-header-contents (car headers))) (and (stringp h) (string-match "[^ \t\n,]" h) (throw 'done t)) (setq headers (cdr headers))) @@ -839,20 +918,12 @@ ;; Poorly. ;;(define-key vm-mail-mode-map [menu-bar mail] ;; (cons "Mail" vm-menu-fsfemacs-mail-menu)) + (defvar mail-mode-map) + (define-key mail-mode-map [menu-bar mail] + (cons "Mail" vm-menu-fsfemacs-mail-menu)) (if vm-popup-menu-on-mouse-3 (define-key vm-mail-mode-map [down-mouse-3] - 'vm-menu-popup-mode-menu)) - ;; replace some FSF Emacs menubar menu commands so the - ;; user gets the VM version. Catch errors; we don't - ;; care enough about this to make VM crash if the - ;; menubar entry names change. - (condition-case nil - (progn - (define-key vm-mail-mode-map [menubar mail send] - 'vm-mail-send-and-exit) - (define-key vm-mail-mode-map [menubar mail send-stay] - 'vm-mail-send)) - (error nil))))) + 'vm-menu-popup-mode-menu))))) (defun vm-menu-install-menus () (cond ((consp vm-use-menus) @@ -1008,7 +1079,7 @@ (defun vm-menu-hm-make-folder-menu () "Makes a menu with the mail folders of the directory `vm-folder-directory'." (interactive) - (vm-unsaved-message "Building folders menu...") + (message "Building folders menu...") (let ((folder-list (vm-menu-hm-tree-make-file-list vm-folder-directory)) (inbox-list (if (listp (car vm-spool-files)) (mapcar 'car vm-spool-files) @@ -1065,7 +1136,7 @@ "----" ["Rebuild Folders Menu" vm-menu-hm-make-folder-menu vm-folder-directory] )))) - (vm-unsaved-message "Building folders menu... done") + (message "Building folders menu... done") (vm-menu-hm-install-menu)) (defun vm-menu-hm-install-menu ()
--- a/lisp/vm/vm-mime.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-mime.el Mon Aug 13 08:51:32 2007 +0200 @@ -153,7 +153,7 @@ (vm-mime-qp-decode-region start end))))) (defun vm-mime-base64-decode-region (start end &optional crlf) - (vm-unsaved-message "Decoding base64...") + (message "Decoding base64...") (let ((work-buffer nil) (done nil) (counter 0) @@ -219,11 +219,11 @@ (insert-buffer-substring work-buffer) (delete-region (point) end)) (and work-buffer (kill-buffer work-buffer)))) - (vm-unsaved-message "Decoding base64... done")) + (message "Decoding base64... done")) (defun vm-mime-base64-encode-region (start end &optional crlf B-encoding) (and (> (- end start) 200) - (vm-unsaved-message "Encoding base64...")) + (message "Encoding base64...")) (let ((work-buffer nil) (counter 0) (cols 0) @@ -244,7 +244,13 @@ vm-mime-base64-encoder-program vm-mime-base64-encoder-switches))) (if (not (eq status t)) - (vm-mime-error "%s" (cdr status)))) + (vm-mime-error "%s" (cdr status))) + (if B-encoding + (progn + ;; if we're B encoding, strip out the line breaks + (goto-char (point-min)) + (while (search-forward "\n" nil t) + (delete-char -1))))) (setq inputpos start) (while (< inputpos end) (setq bits (+ bits (char-after inputpos))) @@ -286,13 +292,13 @@ (insert-buffer-substring work-buffer) (delete-region (point) end) (and (> (- end start) 200) - (vm-unsaved-message "Encoding base64... done")) + (message "Encoding base64... done")) (- end start)) (and work-buffer (kill-buffer work-buffer))))) (defun vm-mime-qp-decode-region (start end) (and (> (- end start) 200) - (vm-unsaved-message "Decoding quoted-printable...")) + (message "Decoding quoted-printable...")) (let ((work-buffer nil) (buf (current-buffer)) (case-fold-search nil) @@ -354,11 +360,11 @@ (delete-region (point) end)) (and work-buffer (kill-buffer work-buffer)))) (and (> (- end start) 200) - (vm-unsaved-message "Decoding quoted-printable... done"))) + (message "Decoding quoted-printable... done"))) (defun vm-mime-qp-encode-region (start end &optional Q-encoding) (and (> (- end start) 200) - (vm-unsaved-message "Encoding quoted-printable...")) + (message "Encoding quoted-printable...")) (let ((work-buffer nil) (buf (current-buffer)) (cols 0) @@ -402,7 +408,7 @@ (insert-buffer-substring work-buffer) (delete-region (point) end) (and (> (- end start) 200) - (vm-unsaved-message "Encoding quoted-printable... done")) + (message "Encoding quoted-printable... done")) (- end start)) (and work-buffer (kill-buffer work-buffer))))) @@ -480,13 +486,11 @@ (or pos (setq pos (point-max) done t)) (if charset (progn - (message " pos = %d start = %d" pos start) (if (setq coding (get-text-property start 'vm-coding)) (progn (setq old-size (buffer-size)) (encode-coding-region start pos coding) (setq pos (+ pos (- (buffer-size) old-size))))) - (message " pos = %d start = %d" pos start) (setq pos (+ start (if (setq q-encoding @@ -494,7 +498,6 @@ charset)) (vm-mime-Q-encode-region start pos) (vm-mime-B-encode-region start pos)))) - (message " pos = %d start = %d" pos start) (goto-char pos) (insert "?=") (setq pos (point)) @@ -605,7 +608,7 @@ (let ((case-fold-search t) version type qtype encoding id description disposition qdisposition boundary boundary-regexp start multipart-list c-t c-t-e done p returnval) - (and m (vm-unsaved-message "Parsing MIME message...")) + (and m (message "Parsing MIME message...")) (prog1 (catch 'return-value (save-excursion @@ -788,7 +791,7 @@ (vm-marker (point-max)) (nreverse multipart-list) nil ))))) - (and m (vm-unsaved-message "Parsing MIME message... done")) + (and m (message "Parsing MIME message... done")) ))) (defun vm-mime-parse-entity-safe (&optional m c-t c-t-e) @@ -882,7 +885,7 @@ ;; Tell XEmacs/MULE not to mess with the text on writes. buffer-read-only t mode-line-format vm-mode-line-format) - (and (fboundp 'set-file-coding-system) + (and (vm-xemacs-mule-p) (set-file-coding-system 'binary t)) (cond ((vm-fsfemacs-19-p) ;; need to do this outside the let because @@ -1079,7 +1082,7 @@ (defun vm-mime-convert-undisplayable-layout (layout) (let ((ooo (vm-mime-can-convert (car (vm-mm-layout-type layout))))) - (vm-unsaved-message "Converting %s to %s..." + (message "Converting %s to %s..." (car (vm-mm-layout-type layout)) (nth 1 ooo)) (save-excursion @@ -1095,7 +1098,7 @@ (insert "Content-Type: " (nth 1 ooo) "\n") (insert "Content-Transfer-Encoding: binary\n\n") (set-buffer-modified-p nil) - (vm-unsaved-message "Converting %s to %s... done" + (message "Converting %s to %s... done" (car (vm-mm-layout-type layout)) (nth 1 ooo)) (vector (list (nth 1 ooo)) @@ -1220,7 +1223,7 @@ (vm-preview-current-message))) (let ((layout (vm-mm-layout (car vm-message-pointer))) (m (car vm-message-pointer))) - (vm-unsaved-message "Decoding MIME message...") + (message "Decoding MIME message...") (cond ((stringp layout) (error "Invalid MIME message: %s" layout))) (if (vm-mime-plain-message-p m) @@ -1251,7 +1254,7 @@ (setq vm-mime-decoded 'decoded)) (intern (buffer-name vm-mail-buffer) vm-buffers-needing-display-update) (vm-update-summary-and-mode-line) - (vm-unsaved-message "Decoding MIME message... done")))) + (message "Decoding MIME message... done")))) (vm-display nil nil '(vm-decode-mime-message) '(vm-decode-mime-message reading-message))) @@ -1322,7 +1325,7 @@ ;;(defun vm-mime-display-internal-text/html (layout) ;; (let ((buffer-read-only nil) ;; (work-buffer nil)) -;; (vm-unsaved-message "Inlining text/html, be patient...") +;; (message "Inlining text/html, be patient...") ;; ;; w3-region is not as tame as we would like. ;; ;; make sure the yoke is firmly attached. ;; (unwind-protect @@ -1337,7 +1340,7 @@ ;; (w3-region (point-min) (point-max))))) ;; (insert-buffer-substring work-buffer)) ;; (and work-buffer (kill-buffer work-buffer))) -;; (vm-unsaved-message "Inlining text/html... done") +;; (message "Inlining text/html... done") ;; t )) (defun vm-mime-display-internal-text/plain (layout &optional ignore-urls) @@ -1361,7 +1364,7 @@ (let ((start (point)) end (buffer-read-only nil) (enriched-verbose t)) - (vm-unsaved-message "Decoding text/enriched, be patient...") + (message "Decoding text/enriched, be patient...") (vm-mime-insert-mime-body layout) (setq end (point-marker)) (vm-mime-transfer-decode-region layout start end) @@ -1374,7 +1377,7 @@ (enriched-decode start end) (vm-energize-urls-in-message-region start end) (goto-char end) - (vm-unsaved-message "Decoding text/enriched... done") + (message "Decoding text/enriched... done") t )) (defun vm-mime-display-external-generic (layout) @@ -1398,7 +1401,7 @@ (setq buffer-file-type (not (vm-mime-text-type-p layout))) ;; Tell XEmacs/MULE not to mess with the bits unless ;; this is a text type. - (if (fboundp 'set-file-coding-system) + (if (vm-xemacs-mule-p) (if (vm-mime-text-type-p layout) (set-file-coding-system 'no-conversion nil) (set-file-coding-system 'binary t))) @@ -1409,7 +1412,7 @@ (setq vm-folder-garbage-alist (cons (cons tempfile 'delete-file) vm-folder-garbage-alist))))) - (vm-unsaved-message "Launching %s..." (mapconcat 'identity + (message "Launching %s..." (mapconcat 'identity program-list " ")) (setq process @@ -1417,7 +1420,7 @@ (format "view %25s" (vm-mime-layout-description layout)) nil (append program-list (list tempfile)))) (process-kill-without-query process t) - (vm-unsaved-message "Launching %s... done" (mapconcat 'identity + (message "Launching %s... done" (mapconcat 'identity program-list " ")) (save-excursion @@ -1617,7 +1620,7 @@ (save-excursion (vm-mime-display-internal-message/partial layout)))) layout nil)) - (vm-unsaved-message "Assembling message...") + (message "Assembling message...") (let ((parts nil) (missing nil) (work-buffer nil) @@ -1721,7 +1724,7 @@ (goto-char (point-max)) (insert (vm-trailing-message-separator)) (set-buffer-modified-p nil) - (vm-unsaved-message "Assembling message... done") + (message "Assembling message... done") (vm-save-buffer-excursion (vm-goto-new-folder-frame-maybe 'folder) (vm-mode)) @@ -1747,14 +1750,14 @@ (setq tempfile (vm-make-tempfile-name)) ;; coding system for presentation buffer is binary (write-region start end tempfile nil 0) - (vm-unsaved-message "Creating %s glyph..." name) + (message "Creating %s glyph..." name) (setq g (make-glyph (list (vector feature ':file tempfile) (vector 'string ':data (format "[Unknown %s image encoding]\n" name))))) - (vm-unsaved-message "") + (message "") (vm-set-mm-layout-cache layout g) (save-excursion (vm-select-folder-buffer) @@ -1967,7 +1970,7 @@ (setq buffer-file-type (not (vm-mime-text-type-p layout))) ;; Tell XEmacs/MULE not to mess with the bits unless ;; this is a text type. - (if (fboundp 'set-file-coding-system) + (if (vm-xemacs-mule-p) (if (vm-mime-text-type-p layout) (set-file-coding-system 'no-conversion nil) (set-file-coding-system 'binary t))) @@ -2036,37 +2039,41 @@ (and work-buffer (kill-buffer work-buffer)))))) (defun vm-mime-layout-description (layout) - (if (vm-mm-layout-description layout) - (vm-mime-scrub-description (vm-mm-layout-description layout)) - (let ((type (car (vm-mm-layout-type layout))) - name) - (cond ((vm-mime-types-match "multipart/digest" type) - (let ((n (length (vm-mm-layout-parts layout)))) - (format "digest (%d message%s)" n (if (= n 1) "" "s")))) - ((vm-mime-types-match "multipart/alternative" type) - "multipart alternative") - ((vm-mime-types-match "multipart" type) - (let ((n (length (vm-mm-layout-parts layout)))) - (format "multipart message (%d part%s)" n (if (= n 1) "" "s")))) - ((vm-mime-types-match "text/plain" type) - (format "plain text%s" - (let ((charset (vm-mime-get-parameter layout "charset"))) - (if charset - (concat ", " charset) - "")))) - ((vm-mime-types-match "text/enriched" type) - "enriched text") - ((vm-mime-types-match "text/html" type) - "HTML") - ((vm-mime-types-match "image/gif" type) - "GIF image") - ((vm-mime-types-match "image/jpeg" type) - "JPEG image") - ((and (vm-mime-types-match "application/octet-stream" type) - (setq name (vm-mime-get-parameter layout "name")) - (save-match-data (not (string-match "^[ \t]*$" name)))) - name) - (t type))))) + (let ((type (car (vm-mm-layout-type layout))) + description name) + (setq description + (if (vm-mm-layout-description layout) + (vm-mime-scrub-description (vm-mm-layout-description layout)))) + (concat + (if description description "") + (if description ", " "") + (cond ((vm-mime-types-match "multipart/digest" type) + (let ((n (length (vm-mm-layout-parts layout)))) + (format "digest (%d message%s)" n (if (= n 1) "" "s")))) + ((vm-mime-types-match "multipart/alternative" type) + "multipart alternative") + ((vm-mime-types-match "multipart" type) + (let ((n (length (vm-mm-layout-parts layout)))) + (format "multipart message (%d part%s)" n (if (= n 1) "" "s")))) + ((vm-mime-types-match "text/plain" type) + (format "plain text%s" + (let ((charset (vm-mime-get-parameter layout "charset"))) + (if charset + (concat ", " charset) + "")))) + ((vm-mime-types-match "text/enriched" type) + "enriched text") + ((vm-mime-types-match "text/html" type) + "HTML") + ((vm-mime-types-match "image/gif" type) + "GIF image") + ((vm-mime-types-match "image/jpeg" type) + "JPEG image") + ((and (vm-mime-types-match "application/octet-stream" type) + (setq name (vm-mime-get-parameter layout "name")) + (save-match-data (not (string-match "^[ \t]*$" name)))) + name) + (t type))))) (defun vm-mime-layout-contains-type (layout type) (if (vm-mime-types-match type (car (vm-mm-layout-type layout))) @@ -2304,7 +2311,7 @@ (let ((o-list nil) (done nil) (pos start) - object pos props o) + object props o) (save-excursion (save-restriction (narrow-to-region start end) @@ -2426,7 +2433,7 @@ (narrow-to-region (point) (point-max)) (setq charset (vm-determine-proper-charset (point-min) (point-max))) - (if (fboundp 'encode-coding-region) + (if (vm-xemacs-mule-p) (encode-coding-region (point-min) (point-max) file-coding-system)) (setq encoding (vm-determine-proper-content-transfer-encoding @@ -2596,7 +2603,7 @@ nil (setq charset (vm-determine-proper-charset (point) (point-max))) - (if (fboundp 'encode-coding-region) + (if (vm-xemacs-mule-p) (encode-coding-region (point-min) (point-max) file-coding-system)) (setq encoding (vm-determine-proper-content-transfer-encoding @@ -2678,7 +2685,7 @@ (defun vm-mime-fragment-composition (size) (save-restriction (widen) - (vm-unsaved-message "Fragmenting message...") + (message "Fragmenting message...") (let ((buffers nil) (id (vm-mime-make-multipart-boundary)) (n 1) @@ -2738,7 +2745,7 @@ (vm-increment n) (set-buffer master-buffer) (setq start (point))) - (vm-unsaved-message "Fragmenting message... done") + (message "Fragmenting message... done") (nreverse buffers)))) (defun vm-mime-preview-composition () @@ -2755,25 +2762,11 @@ e-list) (unwind-protect (progn - (mail-text) - (setq e-list (if (fboundp 'extent-list) - (extent-list nil (point) (point-max)) - (overlays-in (point) (point-max))) - e-list (vm-delete (function - (lambda (e) - (vm-extent-property e 'vm-mime-object))) - e-list t) - e-list (sort e-list (function - (lambda (e1 e2) - (< (vm-extent-end-position e1) - (vm-extent-end-position e2)))))) (setq temp-buffer (generate-new-buffer "composition preview")) (set-buffer temp-buffer) ;; so vm-mime-encode-composition won't complain (setq major-mode 'mail-mode) (vm-insert-region-from-buffer mail-buffer) - (if (vm-fsfemacs-19-p) - (mapcar 'vm-copy-extent e-list)) (goto-char (point-min)) (or (vm-mail-mode-get-header-contents "From") (insert "From: " (or user-mail-address (user-login-name)) "\n"))
--- a/lisp/vm/vm-minibuf.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-minibuf.el Mon Aug 13 08:51:32 2007 +0200 @@ -317,7 +317,7 @@ (set-buffer input-buffer) (while t (erase-buffer) - (vm-unsaved-message "%s%s" prompt + (message "%s%s" prompt (vm-truncate-string xxx (buffer-size))) (while (not (memq (setq char (read-char)) '(?\C-m ?\C-j))) (if (setq form @@ -333,11 +333,11 @@ (eval form) (error t)) (insert char)) - (vm-unsaved-message "%s%s" prompt + (message "%s%s" prompt (vm-truncate-string xxx (buffer-size)))) (cond ((and confirm string) (cond ((not (string= string (buffer-string))) - (vm-unsaved-message + (message (concat prompt (vm-truncate-string xxx (buffer-size)) " [Mismatch... try again.]")) @@ -347,13 +347,13 @@ (t (throw 'return-value string)))) (confirm (setq string (buffer-string)) - (vm-unsaved-message + (message (concat prompt (vm-truncate-string xxx (buffer-size)) " [Retype to confirm...]")) (sit-for 2)) (t - (vm-unsaved-message "") + (message "") (throw 'return-value (buffer-string)))))) (and input-buffer (kill-buffer input-buffer)))))))
--- a/lisp/vm/vm-misc.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-misc.el Mon Aug 13 08:51:32 2007 +0200 @@ -108,7 +108,7 @@ ;; writing out message separators (setq buffer-file-type nil) ;; Tell XEmacs/MULE to pick the correct newline conversion. - (and (fboundp 'set-file-coding-system) + (and (vm-xemacs-mule-p) (set-file-coding-system 'no-conversion nil)) (write-region (point-min) (point-max) where t 'quiet)) (and temp-buffer (kill-buffer temp-buffer)))))) @@ -349,8 +349,9 @@ (defun vm-xemacs-mule-p () (and (vm-xemacs-p) + (featurep 'mule) (fboundp 'set-file-coding-system) - (fboundp 'decode-coding-region))) + (fboundp 'get-coding-system))) (defun vm-fsfemacs-19-p () (and (string-match "^19" emacs-version) @@ -502,10 +503,6 @@ (let ((o (make-extent start end))) (set-extent-property o 'face face))))) -(defun vm-unsaved-message (&rest args) - (let ((message-log-max nil)) - (apply (function message) args))) - (defun vm-default-buffer-substring-no-properties (beg end &optional buffer) (let ((s (if buffer (save-excursion
--- a/lisp/vm/vm-mouse.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-mouse.el Mon Aug 13 08:51:32 2007 +0200 @@ -184,12 +184,12 @@ (cond ((symbolp browser) (funcall browser url)) ((stringp browser) - (vm-unsaved-message "Sending URL to %s..." browser) + (message "Sending URL to %s..." browser) (vm-run-background-command browser url) - (vm-unsaved-message "Sending URL to %s... done" browser)))))) + (message "Sending URL to %s... done" browser)))))) (defun vm-mouse-send-url-to-netscape (url &optional new-netscape new-window) - (vm-unsaved-message "Sending URL to Netscape...") + (message "Sending URL to Netscape...") (if new-netscape (vm-run-background-command vm-netscape-program url) (or (equal 0 (vm-run-command vm-netscape-program "-remote" @@ -197,10 +197,10 @@ (if new-window ", new-window" "") ")"))) (vm-mouse-send-url-to-netscape url t new-window))) - (vm-unsaved-message "Sending URL to Netscape... done")) + (message "Sending URL to Netscape... done")) (defun vm-mouse-send-url-to-mosaic (url &optional new-mosaic new-window) - (vm-unsaved-message "Sending URL to Mosaic...") + (message "Sending URL to Mosaic...") (if (null new-mosaic) (let ((pid-file "~/.mosaicpid") (work-buffer " *mosaic work*") @@ -216,7 +216,7 @@ ;; newline convention used should be the local ;; one, whatever that is. (setq buffer-file-type nil) - (and (fboundp 'set-file-coding-system) + (and (vm-xemacs-mule-p) (set-file-coding-system 'no-conversion nil)) (write-region (point-min) (point-max) (concat "/tmp/Mosaic." pid) @@ -228,7 +228,7 @@ (setq new-mosaic t))))) (if new-mosaic (vm-run-background-command vm-mosaic-program url)) - (vm-unsaved-message "Sending URL to Mosaic... done")) + (message "Sending URL to Mosaic... done")) (defun vm-mouse-install-mouse () @@ -253,7 +253,11 @@ ;; return (exit-status . stderr-string) on nonzero exit status (defun vm-run-command-on-region (start end output-buffer command &rest arg-list) - (let ((tempfile nil) status errstring) + (let ((tempfile nil) + ;; for DOS/Windows command to tell it that its input is + ;; binary. + (binary-process-input t) + status errstring) (unwind-protect (progn (setq tempfile (vm-make-tempfile-name)) @@ -263,11 +267,15 @@ (list output-buffer tempfile) nil arg-list)) (cond ((equal status 0) t) - ((zerop (save-excursion - (set-buffer (find-file-noselect tempfile)) - (buffer-size))) + ;; even if exit status non-zero, if there was no + ;; diagnostic output the command probablyt + ;; succeeded. I have tried just use exit status + ;; as the failure criteria and users complained. + ((equal (nth 7 (file-attributes tempfile)) 0) + (message "%s exited non-zero (code %s)" command status) t) (t (save-excursion + (message "%s exited non-zero (code %s)" command status) (set-buffer (find-file-noselect tempfile)) (setq errstring (buffer-string)) (kill-buffer nil)
--- a/lisp/vm/vm-page.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-page.el Mon Aug 13 08:51:32 2007 +0200 @@ -187,10 +187,10 @@ (defun vm-emit-eom-blurb () (if (vm-full-name-of (car vm-message-pointer)) - (vm-unsaved-message "End of message %s from %s" + (message "End of message %s from %s" (vm-number-of (car vm-message-pointer)) (vm-full-name-of (car vm-message-pointer))) - (vm-unsaved-message "End of message %s" + (message "End of message %s" (vm-number-of (car vm-message-pointer))))) (defun vm-scroll-backward (arg)
--- a/lisp/vm/vm-pop.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-pop.el Mon Aug 13 08:51:32 2007 +0200 @@ -187,7 +187,7 @@ (setq process-buffer (get-buffer-create (format "trace of POP session to %s" host))) ;; Tell XEmacs/MULE not to mess with the text. - (and (fboundp 'set-file-coding-system) + (and (vm-xemacs-mule-p) (set-file-coding-system 'binary t)) ;; clear the trace buffer of old output (save-excursion
--- a/lisp/vm/vm-reply.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-reply.el Mon Aug 13 08:51:32 2007 +0200 @@ -719,7 +719,10 @@ (replace-match "") (goto-char (point-max))) (insert ?\n mail-header-separator ?\n) - (mail-position-on-field "To") + (goto-char (point-min)) + (if vm-mail-header-from + (insert "Resent-From: " vm-mail-header-from ?\n)) + (mail-position-on-field "Resent-To") (setq default-directory dir))) (run-hooks 'vm-resend-bounced-message-hook) (run-hooks 'vm-mail-mode-hook)) @@ -825,7 +828,7 @@ (goto-char (match-end 0)) (setq start (point-marker) header-end (match-beginning 0))) - (vm-unsaved-message "Building %s digest..." vm-digest-send-type) + (message "Building %s digest..." vm-digest-send-type) (cond ((equal vm-digest-send-type "mime") (setq boundary (vm-mime-encapsulate-messages mlist vm-mime-digest-headers @@ -853,7 +856,7 @@ (setq mp mlist) (if prefix (progn - (vm-unsaved-message "Building digest preamble...") + (message "Building digest preamble...") (while mp (let ((vm-summary-uninteresting-senders nil)) (insert (vm-sprintf 'vm-digest-preamble-format (car mp)) "\n")) @@ -971,7 +974,6 @@ mode-popup-menu (and vm-use-menus vm-popup-menu-on-mouse-3 (vm-menu-support-possible-p) (vm-menu-mode-menu))) - ;; sets up popup menu for FSF Emacs (and vm-use-menus (vm-menu-support-possible-p) (vm-menu-install-mail-mode-menu)) (if (fboundp 'mail-aliases-setup) ; use mail-abbrevs.el if present
--- a/lisp/vm/vm-save.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-save.el Mon Aug 13 08:51:32 2007 +0200 @@ -98,7 +98,7 @@ (vm-select-folder-buffer) (vm-check-for-killed-summary) (vm-error-if-folder-empty) - (vm-unsaved-message "Archiving...") + (message "Archiving...") (let ((auto-folder) (archived 0)) (unwind-protect @@ -135,7 +135,7 @@ (if (not (string-equal auto-folder "/dev/null")) (vm-save-message auto-folder)) (vm-increment archived) - (vm-unsaved-message "%d archived, still working..." + (message "%d archived, still working..." archived))) (setq done (eq vm-message-pointer stop-point) vm-message-pointer (cdr vm-message-pointer))))
--- a/lisp/vm/vm-sort.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-sort.el Mon Aug 13 08:51:32 2007 +0200 @@ -327,7 +327,7 @@ (setq key-funcs (cons 'vm-sort-compare-physical-order-r key-funcs))) (t (error "Unknown key: %s" key))) (setq key-list (cdr key-list))) - (vm-unsaved-message "Sorting...") + (message "Sorting...") (let ((vm-key-functions (nreverse key-funcs))) (setq new-message-list (sort (copy-sequence old-message-list) 'vm-sort-compare-xxxxxx)) @@ -337,7 +337,7 @@ (setq vm-key-functions '(vm-sort-compare-physical-order) physical-order-list (sort (copy-sequence old-message-list) 'vm-sort-compare-xxxxxx)))) - (vm-unsaved-message "Sorting... done") + (message "Sorting... done") (let ((inhibit-quit t)) (setq mp-old old-message-list mp-new new-message-list) @@ -377,7 +377,7 @@ ;; order header from being stuffed later. (vm-remove-message-order) (setq vm-message-order-changed nil) - (vm-unsaved-message "Moving messages... ") + (message "Moving messages... ") (widen) (setq mp-old physical-order-list mp-new new-message-list) @@ -400,7 +400,7 @@ ;; mp-old down one message by inserting a ;; message in front of it. (setq mp-new (cdr mp-new))))) - (vm-unsaved-message "Moving messages... done") + (message "Moving messages... done") (vm-set-buffer-modified-p t) (vm-clear-modification-flag-undos)) (if (and order-did-change (not vm-folder-read-only))
--- a/lisp/vm/vm-startup.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-startup.el Mon Aug 13 08:51:32 2007 +0200 @@ -64,36 +64,42 @@ (enable-local-variables nil) ;; for XEmacs/Mule (overriding-file-coding-system 'no-conversion)) - (vm-unsaved-message "Reading %s..." file) + (message "Reading %s..." file) (prog1 (find-file-noselect file) ;; update folder history (let ((item (or folder vm-primary-inbox))) (if (not (equal item (car vm-folder-history))) (setq vm-folder-history (cons item vm-folder-history)))) - (vm-unsaved-message "Reading %s... done" file)))))))) + (message "Reading %s... done" file)))))))) (set-buffer folder-buffer) ;; for XEmacs/MULE ;; ;; If the file coding system is not a no-conversion variant, ;; make it so by encoding all the text, then setting ;; the file coding system and decoding it. - ;; This is only possible if a file is visited and vm-mode + ;; This is only possible if a file is visited and then vm-mode ;; is run on it afterwards. (defvar file-coding-system) - (if (and (fboundp 'get-coding-system) - (not (eq file-coding-system + (if (and (vm-xemacs-mule-p) + (not (eq (get-coding-system file-coding-system) (get-coding-system 'no-conversion-unix))) - (not (eq file-coding-system + (not (eq (get-coding-system file-coding-system) (get-coding-system 'no-conversion-dos))) - (not (eq file-coding-system + (not (eq (get-coding-system file-coding-system) (get-coding-system 'no-conversion-mac))) - (not (eq file-coding-system + (not (eq (get-coding-system file-coding-system) (get-coding-system 'binary)))) - (progn - (encode-coding-region (point-min) (point-max) file-coding-system) - (set-file-coding-system 'no-conversion nil) - (decode-coding-region (point-min) (point-max) file-coding-system))) + (let ((buffer-read-only nil) + (omodified (buffer-modified-p))) + (unwind-protect + (progn + (encode-coding-region (point-min) (point-max) + file-coding-system) + (set-file-coding-system 'no-conversion nil) + (decode-coding-region (point-min) (point-max) + file-coding-system)) + (set-buffer-modified-p omodified)))) (vm-check-for-killed-summary) (vm-check-for-killed-presentation) ;; If the buffer's not modified then we know that there can be no @@ -221,7 +227,7 @@ (not vm-block-new-mail) (not vm-folder-read-only)) (progn - (vm-unsaved-message "Checking for new mail for %s..." + (message "Checking for new mail for %s..." (or buffer-file-name (buffer-name))) (if (and (vm-get-spooled-mail t) (vm-assimilate-new-messages t)) (progn @@ -269,7 +275,7 @@ (defun vm-mode (&optional read-only) "Major mode for reading mail. -This is VM 6.15. +This is VM 6.16. Commands: h - summarize folder contents
--- a/lisp/vm/vm-summary.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-summary.el Mon Aug 13 08:51:32 2007 +0200 @@ -142,10 +142,10 @@ (vm-set-su-end-of (car mp) (point)) (setq mp (cdr mp) n (1+ n)) (if (zerop (% n modulus)) - (vm-unsaved-message "Generating summary... %d" n))) + (message "Generating summary... %d" n))) ;; now convert the ints to markers. (if (>= n modulus) - (vm-unsaved-message "Generating summary markers... ")) + (message "Generating summary markers... ")) (setq mp m-list) (while mp (and mouse-track-func (funcall mouse-track-func @@ -157,7 +157,7 @@ (set-buffer-modified-p modified)) (run-hooks 'vm-summary-redo-hook))) (if (>= n modulus) - (vm-unsaved-message "Generating summary... done")))) + (message "Generating summary... done")))) (defun vm-do-needed-summary-rebuild () (if (and vm-summary-redo-start-point vm-summary-buffer) @@ -986,7 +986,7 @@ (vm-select-folder-buffer) (vm-check-for-killed-summary) (vm-error-if-folder-empty) - (vm-unsaved-message "Fixing your summary...") + (message "Fixing your summary...") (let ((mp vm-message-list)) (while mp (vm-set-summary-of (car mp) nil) @@ -995,7 +995,7 @@ (vm-stuff-folder-attributes nil) (set-buffer-modified-p t) (vm-update-summary-and-mode-line)) - (vm-unsaved-message "Fixing your summary... done")) + (message "Fixing your summary... done")) (defun vm-su-thread-indent (m) (if (natnump vm-summary-thread-indent-level)
--- a/lisp/vm/vm-thread.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-thread.el Mon Aug 13 08:51:32 2007 +0200 @@ -94,9 +94,9 @@ (aref (symbol-value subject-sym) 2)))))))) (setq mp (cdr mp) n (1+ n)) (if (zerop (% n modulus)) - (vm-unsaved-message "Building threads... %d" n))) + (message "Building threads... %d" n))) (if (> n modulus) - (vm-unsaved-message "Building threads... done")))) + (message "Building threads... done")))) (defun vm-thread-mark-for-summary-update (message-list) (while message-list
--- a/lisp/vm/vm-vars.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-vars.el Mon Aug 13 08:51:32 2007 +0200 @@ -1363,7 +1363,6 @@ (defvar vm-resend-bounced-headers '("MIME-Version:" "Content-" - "Resent-" "From:" "Sender:" "Reply-To:" "To:" "Cc:" "Subject:"
--- a/lisp/vm/vm-version.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-version.el Mon Aug 13 08:51:32 2007 +0200 @@ -2,7 +2,7 @@ (provide 'vm-version) -(defconst vm-version "6.15" +(defconst vm-version "6.16" "Version number of VM.") (defun vm-version ()
--- a/lisp/vm/vm-virtual.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-virtual.el Mon Aug 13 08:51:32 2007 +0200 @@ -102,7 +102,9 @@ (find-file-noselect folder))))) (set-buffer (or (and (bufferp folder) folder) (vm-get-file-buffer folder) - (find-file-noselect folder))) + (let ((inhibit-local-variables t) + (enable-local-variables nil)) + (find-file-noselect folder)))) (if (eq major-mode 'vm-virtual-mode) (setq virtual t real-buffers-used
--- a/lisp/vm/vm-window.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/vm/vm-window.el Mon Aug 13 08:51:32 2007 +0200 @@ -132,7 +132,7 @@ (progn (set-buffer (setq work-buffer (get-buffer-create "*vm-wconfig*"))) ;; for XEmacs/MULE - (and (fboundp 'set-file-coding-system) + (and (vm-xemacs-mule-p) (set-file-coding-system 'no-conversion)) (erase-buffer) (print vm-window-configurations (current-buffer))
--- a/lisp/w3/ChangeLog Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/ChangeLog Mon Aug 13 08:51:32 2007 +0200 @@ -1,5 +1,130 @@ +Thu Feb 20 13:40:22 1997 William M. Perry <wmperry@aventail.com> + +* w3-forms.el (w3-form-summarize-password): By default, don't summarize + password entry boxes. + +Thu Feb 20 07:33:59 1997 Thierry Emery <Thierry.Emery@aar.alcatel-alsthom.fr> + +* w3-display.el (w3-frames): Better support for Frames + +Thu Feb 20 07:33:59 1997 William M. Perry <wmperry@aventail.com> + +* w3.el (w3-complete-link): Fixed bug in using try-completion to make sure + we have a match before passing a URL off to w3-fetch. + +* Synch'd up to widget 1.44 + +* url.el (url-default-callback): Caching works in asynch mode now. + +Wed Feb 19 05:48:40 1997 William M. Perry <wmperry@aventail.com> + +* css.el (css-split-font-shorthand): Make sure that the subelements of the + 'font' shorthand property get run through the property value-expansion + routines before getting returned. This royally screwed up font-family, + font-weight, and friends. + (css-expand-color): Now recognizes 'transparent' and 'none' as special + color names. + (css-expand-value): When dealing with color-shorthand, make sure + everything gets run through the value-expansion routines as well. Ack. + +* w3-elisp.el (w3-elisp-safe-function): You can now supply a validation + function for the arguments of a script-enabled function, its no longer a + binary operation on just the function name. You can also give it a + variable name, and the value of that variable at the time of execution + is what controls whether it is safe or not. + +* w3.el (w3-download-url): Finally fixed bug where w3-download-url would + not save in the correct directory if you just accepted the default + pathname it offered. + +* url-cache.el (url-cache-ignored-protocols): New variable controlling + what protocols we should never cache to disk. + (url-cache-cachable-p): use it. + +* w3.txi: Updated all nodes and menus, a few stylistic changes + +* w3-elisp.el: Added read-access to devices, frames, windows, buffers, and + property-lists. Also added function, lambda, point, and list accessors + (member, memq, assoc) + +* w3-display.el (w3-display-node): Bind widget-push-button-gui to nil in + w3-display-node so that images don't run into the + visible-portion-of-buffer-is-not-modifiable-bug. Ick. + +* w3-elisp.el: Don't allow access to 'set'-type text-property functions + from scripts. + +Tue Feb 18 15:11:08 1997 William M. Perry <wmperry@aventail.com> + +* Emacs-W3 3.0.61 released + +* w3.txi (Supported URLs): added sections on each protocol supported - + needs lots of fleshing out. + +* url-misc.el (url-info): Info URL loader now unhex's the target, so that + you can have something like info:w3.info#Getting%20Started + +* url.el (url-do-setup): Removed secure-http (SHTTP) handler - who the + hell cares anymore, it lost. + +* w3-display.el (w3-display-node): Correctly calculates right margin as + documented (from window-width and right-margin) + +* w3.el: Removed w3-batch-fetch + +* url-vars.el: Removed lots of old variables + +* url-misc.el: Removed x-exec URL handler - no interest anymore. + +* w3-script.el (w3-script-evaluate-form): Use it. +(w3-do-scripting): New variable to control whether to do _any_ scripting +or not. + +* The URL package now stores the current parsed URL object instead of 5 or + 6 separate variables. + +* dist.Makefile: Removed old pgp and wais support, it was gross and + apparently nobody was using it. + +Tue Feb 18 06:13:03 1997 "T. V. Raman" <raman@adobe.com> + +* w3-forms.el (w3-form-summarize-radio-button): Better radio button + summarizer. + +Tue Feb 18 06:13:03 1997 William M. Perry <wmperry@aventail.com> + +* w3-display.el (w3-finish-drawing): Moved #blah target finding in here, + where it belongs. + +* w3-vars.el (w3-mode-map): Added binding for raw '\t' instead of relying + on [tab]. Apparently this keysym isn't aliased under Emacs 19 on a + TTY. + +Mon Feb 17 15:10:38 1997 William M. Perry <wmperry@aventail.com> + +* w3-elisp.el: Interface to Emacs-Lisp for safe scripting. + +* w3-script.el: Basic client-side scripting has been implemented. + +* w3-xemac.el (w3-mouse-handler): Ditto + +* w3-e19.el (w3-mouse-handler): Plugged in handling of the onMouseOver event + +* w3-display.el (w3-handle-string-content): Now adds a text property that + contains w3-display-open-element-stack, so that from anywhere in the + buffer you can find out where you are in the parse tree. + +* default.css (input): ome default stylesheet updates for input fields on + TTYs + +Sun Feb 16 09:01:18 1997 Shuji Narazaki <narazaki@InetQ.or.jp> + +* mule-sysdp.el: Updated for mule 3.0 + Sat Feb 15 15:35:15 1997 William M. Perry <wmperry@aventail.com> +* Emacs-W3 3.0.60 released + * w3-display.el (w3-display-node): use it. * w3-vars.el (w3-display-frames): New variable for whether to show 'frame'
--- a/lisp/w3/Makefile Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/Makefile Mon Aug 13 08:51:32 2007 +0200 @@ -35,8 +35,8 @@ URLSOURCES = \ url-nfs.el url-file.el url-cookie.el url-parse.el url-irc.el \ url-gopher.el url-http.el url-mail.el url-misc.el url-news.el \ - url-pgp.el url-vars.el url-wais.el url-auth.el mm.el md5.el \ - url-gw.el ssl.el base64.el url.el socks.el + url-vars.el url-auth.el mm.el md5.el url-gw.el ssl.el base64.el \ + url.el socks.el url-cache.el CUSTOMSOURCES = # widget.el widget-edit.el CUSTOMOBJECTS = $(CUSTOMSOURCES:.el=.elc) @@ -48,7 +48,8 @@ w3-style.el w3-keyword.el w3-forms.el w3-emulate.el \ w3-auto.el w3-menu.el w3-mouse.el w3-toolbar.el w3-prefs.el \ w3-speak.el w3-latex.el w3-parse.el w3-display.el w3-print.el \ - w3-about.el w3-hot.el w3-e19.el w3-xemac.el w3.el + w3-about.el w3-hot.el w3-e19.el w3-xemac.el w3.el w3-script.el \ + w3-jscript.el w3-elisp.el OBJECTS = $(SOURCES:.el=.elc)
--- a/lisp/w3/css.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/css.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; css.el -- Cascading Style Sheet parser ;; Author: wmperry -;; Created: 1997/02/08 05:24:49 -;; Version: 1.27 +;; Created: 1997/02/20 00:47:21 +;; Version: 1.28 ;; Keywords: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -356,10 +356,14 @@ (if (string-match "^[ \t]+" font) (setq family (substring font (match-end 0) nil)) (setq family font))) - (if weight (setq retval (cons (cons 'font-weight weight) retval))) - (if size (setq retval (cons (cons 'font-size size) retval))) - (if height (setq retval (cons (cons 'line-height height) retval))) - (if family (setq retval (cons (cons 'font-family family) retval))) + (if weight + (push (cons 'font-weight (css-expand-value 'weight weight)) retval)) + (if size + (push (cons 'font-size (css-expand-length size)) retval)) + (if height + (push (cons 'line-height (css-expand-length height)) retval)) + (if family + (push (cons 'font-family (css-expand-value 'string-list family)) retval)) retval)) (defun css-expand-length (spec) @@ -404,6 +408,8 @@ (defun css-expand-color (color) (cond + ((string-match "^\\(transparent\\|none\\)$" color) + (setq color nil)) ((string-match "^#" color) (let (r g b) (cond @@ -519,7 +525,7 @@ top center bottom left right) cur) ) (t - (setq color cur)))) + (setq color (css-expand-value 'color cur))))) (setq value (list (cons 'background-color color) (cons 'background-image image) (cons 'background-repeat repeat) @@ -529,10 +535,10 @@ ;; [style | variant | weight]? size[/line-height]? family (setq value (css-split-font-shorthand value))) (border ; width | style | color - ;; FIX + ;; FIXME ) (border-shorthand ; width | style | color - ;; FIX + ;; FIXME ) (list-style ; CSS, Section 5.6.6 ;; keyword | position | url @@ -597,6 +603,7 @@ results ; Assoc list of results name-pos ; Start of XXXX= position val-pos ; Start of value position + (case-fold-search t) ) (save-excursion (if (stringp st)
--- a/lisp/w3/docomp.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/docomp.el Mon Aug 13 08:51:32 2007 +0200 @@ -69,10 +69,6 @@ 'charset-latin-iso8859-1 'file-coding-system-for-read 'file-coding-system) -;; For Mailcrypt -(w3-declare-variables 'mc-pgp-path 'mc-pgp-key-begin-line 'mc-ripem-pubkeyfile - 'mc-default-scheme 'mc-flag) - ;; For NNTP (w3-declare-variables 'nntp-server-buffer 'nntp-server-process 'nntp/connection 'gnus-nntp-server 'nntp-server-name 'nntp-version
--- a/lisp/w3/mm.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/mm.el Mon Aug 13 08:51:32 2007 +0200 @@ -173,15 +173,6 @@ ("type" . "application/postscript") ("test" . (not (getenv "DISPLAY"))) ("copiousoutput"))) - ("x-www-pem-reply" . - (("viewer" . (w3-decode-pgp/pem "pem")) - ("test" . (fboundp 'w3-decode-pgp/pem)) - ("type" . "application/x-www-pem-reply") - )) - ("x-www-pgp-reply" . - (("viewer" . (w3-decode-pgp/pem "pgp")) - ("test" . (fboundp 'w3-decode-pgp/pem)) - ("type" . "application/x-www-pgp-reply"))) )) ("audio" . ( ("x-mpeg" . (("viewer" . "maplay %s")
--- a/lisp/w3/mule-sysdp.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/mule-sysdp.el Mon Aug 13 08:51:32 2007 +0200 @@ -31,14 +31,16 @@ (case mule-sysdep-version (2.3 *euc-japan*) (2.4 'coding-system-euc-japan) + (3.0 'euc-japan) (xemacs 'euc-japan) (otherwise nil)) "Default retrieval coding system for packages that use this package.") (defconst mule-no-coding-system (case mule-sysdep-version + (2.3 *noconv*) (2.4 'no-conversion) - (2.3 *noconv*) + (3.0 'no-conversion) (xemacs 'no-conversion) (otherwise nil)) "Coding system that means no coding system should be used.") @@ -46,8 +48,8 @@ (defun mule-detect-coding-version (st nd) (case mule-sysdep-version (2.3 (code-detect-region (point-min) (point-max))) - (2.4 (detect-coding-region (point-min) (point-max))) - (xemacs (detect-coding-region (point-min) (point-max))) + ((2.4 3.0 xemacs) + (detect-coding-region (point-min) (point-max))) (otherwise nil))) (defun mule-code-convert-region (st nd code) @@ -55,7 +57,7 @@ (setq code (car code))) (case mule-sysdep-version (2.3 - (setq mc-flag t) + (set 'mc-flag t) (code-convert-region (point-min) (point-max) code *internal*) (set-file-coding-system code)) (2.4 @@ -64,6 +66,13 @@ nil (decode-coding-region st nd code) (set-buffer-file-coding-system code))) + (3.0 + (setq enable-multibyte-characters t) + (if (memq code '(autodetect automatic-conversion)) + nil + (or code (setq code 'automatic-conversion)) + (decode-coding-region st nd code) + (set-buffer-file-coding-system code))) (xemacs (if (and (listp code) (not (car code))) (setq code 'autodetect)) @@ -79,7 +88,7 @@ (set 'mc-flag nil) (set 'enable-multibyte-characters nil))) (case mule-sysdep-version - ((2.4 2.3) + ((3.0 2.4 2.3) (set-process-coding-system proc mule-no-coding-system mule-no-coding-system)) (xemacs @@ -101,7 +110,7 @@ (case mule-sysdep-version (2.3 (code-convert-string str *internal* mule-retrieval-coding-system)) - ((2.4 xemacs) + ((2.4 3.0 xemacs) (encode-coding-string str mule-retrieval-coding-system)) (otherwise str))) @@ -109,7 +118,7 @@ (defun mule-decode-string (str) (and str (case mule-sysdep-version - ((2.4 xemacs) + ((2.4 3.0 xemacs) (decode-coding-string str mule-retrieval-coding-system)) (2.3 (code-convert-string str *internal* mule-retrieval-coding-system)) @@ -121,7 +130,7 @@ If width of the truncated string is less than LEN, and if a character PAD is defined, add padding end of it." (case mule-sysdep-version - (2.4 + ((2.4 3.0) (let ((cl (string-to-vector str)) (n 0) (sw 0)) (if (<= (string-width str) len) str (while (<= (setq sw (+ (char-width (aref cl n)) sw)) len) @@ -149,11 +158,12 @@ (case mule-sysdep-version (2.3 (make-character lc-ltn1 char)) (2.4 (make-char charset-latin-iso8859-1 char)) + (3.0 (make-char 'latin-iso8859-1 char)) (xemacs char) (otherwise char)))) (case mule-sysdep-version - ((2.3 2.4 xemacs) nil) + ((2.3 2.4 3.0 xemacs) nil) (otherwise (fset 'string-width 'length))) (and
--- a/lisp/w3/url-auth.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/url-auth.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; url-auth.el --- Uniform Resource Locator authorization modules ;; Author: wmperry -;; Created: 1997/01/19 01:17:29 -;; Version: 1.5 +;; Created: 1997/02/18 23:34:14 +;; Version: 1.6 ;; Keywords: comm, data, processes, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -54,7 +54,7 @@ (let* ((href (if (stringp url) (url-generic-parse-url url) url)) - (server (or (url-host href) url-current-server)) + (server (url-host href)) (port (or (url-port href) "80")) (path (url-filename href)) user pass byserv retval data) @@ -134,7 +134,7 @@ (let* ((href (if (stringp url) (url-generic-parse-url url) url)) - (server (or (url-host href) url-current-server)) + (server (url-host href)) (port (or (url-port href) "80")) (path (url-filename href)) user pass byserv retval data)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/w3/url-cache.el Mon Aug 13 08:51:32 2007 +0200 @@ -0,0 +1,317 @@ +;;; url-cache.el --- Uniform Resource Locator retrieval tool +;; Author: wmperry +;; Created: 1997/02/20 15:33:47 +;; Version: 1.3 +;; Keywords: comm, data, processes, hypermedia + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Copyright (c) 1993-1996 by William M. Perry (wmperry@cs.indiana.edu) +;;; Copyright (c) 1996, 1997 Free Software Foundation, Inc. +;;; +;;; This file is not part of GNU Emacs, but the same permissions apply. +;;; +;;; GNU Emacs is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2, or (at your option) +;;; any later version. +;;; +;;; GNU Emacs 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 General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Emacs; see the file COPYING. If not, write to the +;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;;; Boston, MA 02111-1307, USA. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(require 'md5) + +;; Cache manager +(defun url-cache-file-writable-p (file) + "Follows the documentation of file-writable-p, unlike file-writable-p." + (and (file-writable-p file) + (if (file-exists-p file) + (not (file-directory-p file)) + (file-directory-p (file-name-directory file))))) + +(defun url-prepare-cache-for-file (file) + "Makes it possible to cache data in FILE. +Creates any necessary parent directories, deleting any non-directory files +that would stop this. Returns nil if parent directories can not be +created. If FILE already exists as a non-directory, it changes +permissions of FILE or deletes FILE to make it possible to write a new +version of FILE. Returns nil if this can not be done. Returns nil if +FILE already exists as a directory. Otherwise, returns t, indicating that +FILE can be created or overwritten." + + ;; COMMENT: We don't delete directories because that requires + ;; recursively deleting the directories's contents, which might + ;; eliminate a substantial portion of the cache. + + (cond + ((url-cache-file-writable-p file) + t) + ((file-directory-p file) + nil) + (t + (catch 'upcff-tag + (let ((dir (file-name-directory file)) + dir-parent dir-last-component) + (if (string-equal dir file) + ;; *** Should I have a warning here? + ;; FILE must match a pattern like /foo/bar/, indicating it is a + ;; name only suitable for a directory. So presume we won't be + ;; able to overwrite FILE and return nil. + (throw 'upcff-tag nil)) + + ;; Make sure the containing directory exists, or throw a failure + ;; if we can't create it. + (if (file-directory-p dir) + nil + (or (fboundp 'make-directory) + (throw 'upcff-tag nil)) + (make-directory dir t) + ;; make-directory silently fails if there is an obstacle, so + ;; we must verify its results. + (if (file-directory-p dir) + nil + ;; Look at prefixes of the path to find the obstacle that is + ;; stopping us from making the directory. Unfortunately, there + ;; is no portable function in Emacs to find the parent directory + ;; of a *directory*. So this code may not work on VMS. + (while (progn + (if (eq ?/ (aref dir (1- (length dir)))) + (setq dir (substring dir 0 -1)) + ;; Maybe we're on VMS where the syntax is different. + (throw 'upcff-tag nil)) + (setq dir-parent (file-name-directory dir)) + (not (file-directory-p dir-parent))) + (setq dir dir-parent)) + ;; We have found the longest path prefix that exists as a + ;; directory. Deal with any obstacles in this directory. + (if (file-exists-p dir) + (condition-case nil + (delete-file dir) + (error (throw 'upcff-tag nil)))) + (if (file-exists-p dir) + (throw 'upcff-tag nil)) + ;; Try making the directory again. + (setq dir (file-name-directory file)) + (make-directory dir t) + (or (file-directory-p dir) + (throw 'upcff-tag nil)))) + + ;; The containing directory exists. Let's see if there is + ;; something in the way in this directory. + (if (url-cache-file-writable-p file) + (throw 'upcff-tag t) + (condition-case nil + (delete-file file) + (error (throw 'upcff-tag nil)))) + + ;; The return value, if we get this far. + (url-cache-file-writable-p file)))))) + +(defvar url-cache-ignored-protocols + '("www" "about" "https" "mailto") + "*A list of protocols that we should never cache.") + +(defun url-cache-cachable-p (obj) + ;; return t iff the current buffer is cachable + (cond + ((null obj) ; Something horribly confused + nil) + ((member (url-type obj) url-cache-ignored-protocols) + ;; We have been told to ignore this type of object + nil) + ((and (member (url-type obj) '("file" "ftp")) (not (url-host obj))) + ;; We never want to cache local files... what's the point? + nil) + ((member (url-type obj) '("http" "https")) + (let* ((status (cdr-safe (assoc "status" url-current-mime-headers))) + (class (if status (/ status 100) 0))) + (case class + (2 ; Various 'OK' statuses + (memq status '(200))) + (otherwise nil)))) + (t + nil))) + +;;;###autoload +(defun url-store-in-cache (&optional buff) + "Store buffer BUFF in the cache" + (if (and buff (get-buffer buff)) + nil + (save-excursion + (and buff (set-buffer buff)) + (if (not (url-cache-cachable-p url-current-object)) + nil + (let* ((fname (url-create-cached-filename (url-view-url t))) + (fname-hdr (concat fname ".hdr")) + (info (mapcar (function (lambda (var) + (cons (symbol-name var) + (symbol-value var)))) + '( url-current-content-length + url-current-object + url-current-isindex + url-current-mime-encoding + url-current-mime-headers + url-current-mime-type + )))) + (cond ((and (url-prepare-cache-for-file fname) + (url-prepare-cache-for-file fname-hdr)) + (write-region (point-min) (point-max) fname nil 5) + (set-buffer (get-buffer-create " *cache-tmp*")) + (erase-buffer) + (insert "(setq ") + (mapcar + (function + (lambda (x) + (insert (car x) " " + (cond ((null (setq x (cdr x))) "nil") + ((stringp x) (prin1-to-string x)) + ((listp x) (concat "'" (prin1-to-string x))) + ((vectorp x) (prin1-to-string x)) + ((numberp x) (int-to-string x)) + (t "'???")) "\n"))) + info) + (insert ")\n") + (write-region (point-min) (point-max) fname-hdr nil 5)))))))) + + +;;;###autoload +(defun url-is-cached (url) + "Return non-nil if the URL is cached." + (let* ((fname (url-create-cached-filename url)) + (attribs (file-attributes fname))) + (and fname ; got a filename + (file-exists-p fname) ; file exists + (not (eq (nth 0 attribs) t)) ; Its not a directory + (nth 5 attribs)))) ; Can get last mod-time + +(defun url-create-cached-filename-using-md5 (url) + (if url + (expand-file-name (md5 url) + (concat url-temporary-directory "/" + (user-real-login-name))))) + +;;;###autoload +(defun url-create-cached-filename (url) + "Return a filename in the local cache for URL" + (if url + (let* ((url url) + (urlobj (if (vectorp url) + url + (url-generic-parse-url url))) + (protocol (url-type urlobj)) + (hostname (url-host urlobj)) + (host-components + (cons + (user-real-login-name) + (cons (or protocol "file") + (nreverse + (delq nil + (mm-string-to-tokens + (or hostname "localhost") ?.)))))) + (fname (url-filename urlobj))) + (if (and fname (/= (length fname) 0) (= (aref fname 0) ?/)) + (setq fname (substring fname 1 nil))) + (if fname + (let ((slash nil)) + (setq fname + (mapconcat + (function + (lambda (x) + (cond + ((and (= ?/ x) slash) + (setq slash nil) + "%2F") + ((= ?/ x) + (setq slash t) + "/") + (t + (setq slash nil) + (char-to-string x))))) fname "")))) + + (if (and fname (memq system-type '(ms-windows ms-dos windows-nt)) + (string-match "\\([A-Za-z]\\):[/\\]" fname)) + (setq fname (concat (url-match fname 1) "/" + (substring fname (match-end 0))))) + + (setq fname (and fname + (mapconcat + (function (lambda (x) + (if (= x ?~) "" (char-to-string x)))) + fname "")) + fname (cond + ((null fname) nil) + ((or (string= "" fname) (string= "/" fname)) + url-directory-index-file) + ((= (string-to-char fname) ?/) + (if (string= (substring fname -1 nil) "/") + (concat fname url-directory-index-file) + (substring fname 1 nil))) + (t + (if (string= (substring fname -1 nil) "/") + (concat fname url-directory-index-file) + fname)))) + + ;; Honor hideous 8.3 filename limitations on dos and windows + ;; we don't have to worry about this in Windows NT/95 (or OS/2?) + (if (and fname (memq system-type '(ms-windows ms-dos))) + (let ((base (url-file-extension fname t)) + (ext (url-file-extension fname nil))) + (setq fname (concat (substring base 0 (min 8 (length base))) + (substring ext 0 (min 4 (length ext))))) + (setq host-components + (mapcar + (function + (lambda (x) + (if (> (length x) 8) + (concat + (substring x 0 8) "." + (substring x 8 (min (length x) 11))) + x))) + host-components)))) + + (and fname + (expand-file-name fname + (expand-file-name + (mapconcat 'identity host-components "/") + url-temporary-directory)))))) + +;;;###autoload +(defun url-extract-from-cache (fnam) + "Extract FNAM from the local disk cache" + (set-buffer (get-buffer-create url-working-buffer)) + (erase-buffer) + (setq url-current-mime-viewer nil) + (insert-file-contents-literally fnam) + (load (concat (if (memq system-type '(ms-windows ms-dos os2)) + (url-file-extension fnam t) + fnam) ".hdr") t t)) + +;;;###autoload +(defun url-cache-expired (url mod) + "Return t iff a cached file has expired." + (if (not (string-match url-nonrelative-link url)) + t + (let* ((urlobj (url-generic-parse-url url)) + (type (url-type urlobj))) + (cond + (url-standalone-mode + (not (file-exists-p (url-create-cached-filename urlobj)))) + ((string= type "http") + (if (not url-standalone-mode) t + (not (file-exists-p (url-create-cached-filename urlobj))))) + ((not (fboundp 'current-time)) + t) + ((member type '("file" "ftp")) + (if (or (equal mod '(0 0)) (not mod)) + (return t) + (or (> (nth 0 mod) (nth 0 (current-time))) + (> (nth 1 mod) (nth 1 (current-time)))))) + (t nil))))) + +(provide 'url-cache)
--- a/lisp/w3/url-cookie.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/url-cookie.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; url-cookie.el --- Netscape Cookie support ;; Author: wmperry -;; Created: 1997/01/26 00:40:23 -;; Version: 1.10 +;; Created: 1997/02/18 23:34:20 +;; Version: 1.11 ;; Keywords: comm, data, processes, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -297,12 +297,13 @@ (secure (and (assoc* "secure" args :test 'url-header-comparison) t)) (domain (or (cdr-safe (assoc* "domain" args :test 'url-header-comparison)) - url-current-server)) + (url-host url-current-object))) (expires (cdr-safe (assoc* "expires" args :test 'url-header-comparison))) (path (or (cdr-safe (assoc* "path" args :test 'url-header-comparison)) - (file-name-directory url-current-file))) + (file-name-directory + (url-filename url-current-object)))) (rest nil)) (while args (if (not (member (downcase (car (car args))) @@ -330,10 +331,10 @@ ((and url-cookie-confirmation (not (funcall url-confirmation-func (format "Allow %s to set a cookie? " - url-current-server)))) + (url-host url-current-object))))) ;; user wants to be asked, and declined. nil) - ((url-cookie-host-can-set-p url-current-server domain) + ((url-cookie-host-can-set-p (url-host url-current-object) domain) ;; Cookie is accepted by the user, and passes our security checks (let ((cur nil)) (while rest @@ -351,6 +352,6 @@ (concat "%s tried to set a cookie for domain %s\n" "Permission denied - cookie rejected.\n" "Set-Cookie: %s") - url-current-server domain str)))))) + (url-host url-current-object) domain str)))))) (provide 'url-cookie)
--- a/lisp/w3/url-file.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/url-file.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; url-file.el --- File retrieval code ;; Author: wmperry -;; Created: 1997/02/10 16:16:46 -;; Version: 1.13 +;; Created: 1997/02/19 23:38:31 +;; Version: 1.15 ;; Keywords: comm, data, processes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -136,82 +136,6 @@ (kill-buffer (current-buffer)) (find-file dir) (url-dired-minor-mode t))) -; (let ((files (directory-files dir nil)) file -; div attr mod-time size typ title desc) -; (save-excursion -; (if (string-match "/\\([^/]+\\)/$" dir) -; (setq title (concat ".../" (url-match dir 1) "/")) -; (setq title "/")) -; (setq div (1- (length files))) -; (set-buffer url-working-buffer) -; (erase-buffer) -; (insert "<html>\n" -; " <head>\n" -; " <title>" title "</title>\n" -; " </head>\n" -; " <body>\n" -; " <h1 align=center> Index of " title "</h1>\n" -; " <table border=0>\n" -; " <tr><th>Name<th>Last Modified<th>Size</tr>\n" -; " <tr><td colspan=3><hr></tr>\n") -; (while files -; (url-lazy-message "Building directory list... (%d%%)" -; (/ (* 100 (- div (length files))) div)) -; (setq file (expand-file-name (car files) dir) -; attr (file-attributes file) -; file (car files) -; mod-time (nth 5 attr) -; size (nth 7 attr) -; typ (or (mm-extension-to-mime (url-file-extension file)) "")) -; (setq file (url-hexify-string file)) -; (if (equal '(0 0) mod-time) ; Set to null if unknown or -; (setq mod-time "Unknown") -; (setq mod-time (current-time-string mod-time))) -; (if (or (equal size 0) (equal size -1) (null size)) -; (setq size "-") -; (setq size -; (cond -; ((< size 1024) "1K") -; ((< size 1048576) (concat (int-to-string -; (max 1 (/ size 1024))) "K")) -; (t -; (let* ((megs (max 1 (/ size 1048576))) -; (kilo (/ (- size (* megs 1048576)) 1024))) -; (concat (int-to-string megs) -; (if (> kilo 0) -; (concat "." (int-to-string kilo)) -; "") "M")))))) -; (cond -; ((or (equal "." (car files)) -; (equal "/.." (car files))) -; (setq desc nil)) -; ((equal ".." (car files)) -; (if (not (= ?/ (aref file (1- (length file))))) -; (setq file (concat file "/")))) -; ((stringp (nth 0 attr)) ; Symbolic link handling -; (setq desc "[LNK]")) -; ((nth 0 attr) ; Directory handling -; (setq desc "[DIR]")) -; ((string-match "image" typ) -; (setq desc "[IMG]")) -; ((string-match "application" typ) -; (setq desc "[APP]")) -; ((string-match "text" typ) -; (setq desc "[TXT]")) -; ((auto-save-file-name-p (car files)) -; (setq desc "[BAK]")) -; (t -; (setq desc "[UNK]"))) -; (if desc -; (insert "<tr><td>" desc " <a href=\"./" file "\">" (car files) -; "</a><td>" mod-time "<td><p align=right>" size -; "</tr>\n")) -; (setq files (cdr files))) -; (insert " </table>\n" -; " </body>\n" -; "</html>\n" -; "<!-- Automatically generated by URL v" url-version -; " -->\n"))) (defun url-host-is-local-p (host) "Return t iff HOST references our local machine." @@ -240,15 +164,6 @@ (concat "/" (or user "anonymous") "@" site ":" file) file))) - (if (and file (url-host-is-local-p site) - (memq system-type '(ms-windows ms-dos windows-nt os2))) - (let ((x (1- (length file))) - (y 0)) - (while (<= y x) - (if (= (aref file y) ?\\ ) - (aset file y ?/)) - (setq y (1+ y))))) - (url-clear-tmp-buffer) (and user pass (cond @@ -315,14 +230,8 @@ (error (url-save-error errobj) (url-retrieve (concat "www://error/nofile/" file)))))))) - (setq url-current-type (if site "ftp" "file") - url-current-object urlobj - url-find-this-link dest - url-current-user user - url-current-server site - url-current-mime-type (mm-extension-to-mime - (url-file-extension file)) - url-current-file file))) + (setq url-current-mime-type (mm-extension-to-mime + (url-file-extension file))))) (fset 'url-ftp 'url-file)
--- a/lisp/w3/url-gopher.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/url-gopher.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; url-gopher.el --- Gopher Uniform Resource Locator retrieval code ;; Author: wmperry -;; Created: 1997/02/08 05:25:58 -;; Version: 1.5 +;; Created: 1997/02/18 23:34:30 +;; Version: 1.6 ;; Keywords: comm, data, processes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -244,14 +244,14 @@ (erase-buffer) (insert "<title>" (cond - ((or (string= "" url-current-file) - (string= "1/" url-current-file) - (string= "1" url-current-file)) - (concat "Gopher root at " url-current-server)) + ((or (string= "" (url-filename url-current-object)) + (string= "1/" (url-filename url-current-object)) + (string= "1" (url-filename url-current-object))) + (concat "Gopher root at " (url-host url-current-object))) ((string-match (format "^[%s]+/" url-gopher-types) - url-current-file) - (substring url-current-file 2 nil)) - (t url-current-file)) + (url-filename url-current-object)) + (substring (url-filename url-current-object) 2 nil)) + (t (url-filename url-current-object))) "</title><ol>" (mapconcat 'url-format-gopher-link objs "") "</ol>")))) @@ -264,10 +264,6 @@ (len nil) (parsed nil)) (url-clear-tmp-buffer) - (setq url-current-file selector - url-current-port port - url-current-server host - url-current-type "gopher") (if (> (length selector) 0) (setq selector (substring selector 1 nil))) (if (not (processp proc)) @@ -447,11 +443,7 @@ (setq type "text/html" url-current-mime-viewer (mm-mime-info type nil 5)))) (setq url-current-mime-type (or type "text/plain") - url-current-mime-viewer (mm-mime-info type nil 5) - url-current-file file - url-current-port port - url-current-server host - url-current-type "gopher"))) + url-current-mime-viewer (mm-mime-info type nil 5)))) (defun url-gopher (url) ;; Handle gopher URLs
--- a/lisp/w3/url-http.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/url-http.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; url-http.el --- HTTP Uniform Resource Locator retrieval code ;; Author: wmperry -;; Created: 1997/02/08 05:29:12 -;; Version: 1.13 +;; Created: 1997/02/19 00:50:08 +;; Version: 1.15 ;; Keywords: comm, data, processes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -137,7 +137,7 @@ (url-generic-parse-url proxy-info))) (real-fname (if proxy-obj (url-filename proxy-obj) fname)) (host (or (and proxy-obj (url-host proxy-obj)) - url-current-server)) + (url-host url-current-object))) (auth (if (cdr-safe (assoc "Authorization" url-request-extra-headers)) nil (url-get-authentication (or @@ -197,10 +197,8 @@ url-mime-accept-string (url-http-user-agent-string) (or auth "") - (url-cookie-generate-header-lines host - real-fname - (string-match "https" - url-current-type)) + (url-cookie-generate-header-lines + host real-fname (equal "https" (url-type url-current-object))) (or proxy-auth "") (if (and (not no-cache) (member url-request-method '("GET" nil))) @@ -415,11 +413,6 @@ (substring y 0 (match-beginning 0)) y)))) (cond - ((or (equal "pem" type) (equal "pgp" type)) - (if (string-match "entity=\"\\([^\"]+\\)\"" y) - (url-fetch-with-pgp url-current-file - (url-match y 1) (intern type)) - (error "Could not find entity in %s!" type))) ((url-auth-registered type) (let ((args y) (ctr (1- (length y))) @@ -454,11 +447,6 @@ (substring y 0 (match-beginning 0)) y)))) (cond - ((or (equal "pem" type) (equal "pgp" type)) - (if (string-match "entity=\"\\([^\"]+\\)\"" y) - (url-fetch-with-pgp url-current-file - (url-match y 1) (intern type)) - (error "Could not find entity in %s!" type))) ((url-auth-registered type) (let ((args y) (ctr (1- (length y))) @@ -540,8 +528,6 @@ (let* ((urlobj (url-generic-parse-url url)) (ref-url (or url-current-referer (url-view-url t)))) (url-clear-tmp-buffer) - (setq url-current-type (if (boundp 'url-this-is-ssl) - "https" "http")) (let* ((server (url-host urlobj)) (port (url-port urlobj)) (file (or proxy-info (url-recreate-with-attributes urlobj))) @@ -560,18 +546,6 @@ "way, or an incorrect URL was manually entered (more likely)." ))) (error "Malformed URL: `%s'" url))) - (if proxy-info - (let ((x (url-generic-parse-url url))) - (setq url-current-server (url-host urlobj) - url-current-port (url-port urlobj) - url-current-file (url-filename urlobj) - url-find-this-link (url-target urlobj) - request (url-create-mime-request file ref-url))) - (setq url-current-server server - url-current-port port - url-current-file file - url-find-this-link dest - request (url-create-mime-request file ref-url))) (if (or (not (member port url-bad-port-list)) (funcall url-confirmation-func (concat @@ -579,6 +553,7 @@ port " - continue? "))) (progn + (setq request (url-create-mime-request file ref-url)) (url-lazy-message "Contacting %s:%s" server port) (let ((process (url-open-stream "WWW" url-working-buffer server @@ -613,10 +588,6 @@ (ding) (url-warn 'security "Aborting connection to bad port...")))))) -(defun url-shttp (url) - ;; Retrieve a URL via Secure-HTTP - (error "Secure-HTTP not implemented yet.")) - (defun url-https (url) ;; Retrieve a URL via SSL (condition-case ()
--- a/lisp/w3/url-misc.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/url-misc.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; url-misc.el --- Misc Uniform Resource Locator retrieval code ;; Author: wmperry -;; Created: 1997/02/08 05:29:22 -;; Version: 1.10 +;; Created: 1997/02/19 00:52:07 +;; Version: 1.12 ;; Keywords: comm, data, processes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -36,7 +36,7 @@ (kill-buffer url-working-buffer)) (let* ((data (url-generic-parse-url url)) (fname (url-filename data)) - (node (or (url-target data) "Top"))) + (node (url-unhex-string (or (url-target data) "Top")))) (if (and fname node) (Info-goto-node (concat "(" fname ")" node)) (error "Malformed url: %s" url)))) @@ -126,84 +126,7 @@ (let ( (urlobj (url-generic-parse-url url)) (proxyobj (url-generic-parse-url url-using-proxy))) - (url-http url-using-proxy url) - (setq url-current-type (url-type urlobj) - url-current-user (url-user urlobj) - url-current-port (or (url-port urlobj) - (cdr-safe (assoc url-current-type - url-default-ports))) - url-current-server (url-host urlobj) - url-current-file (url-filename urlobj)))) - -(defun url-x-exec (url) - ;; Handle local execution of scripts. - (set-buffer (get-buffer-create url-working-buffer)) - (erase-buffer) - (string-match "x-exec:/+\\([^/]+\\)\\(/.*\\)" url) - (let ((process-environment process-environment) - (executable (url-match url 1)) - (path-info (url-match url 2)) - (query-string nil) - (safe-paths url-local-exec-path) - (found nil) - (y nil) - ) - (setq url-current-server executable - url-current-file path-info) - (if (string-match "\\(.*\\)\\?\\(.*\\)" path-info) - (setq query-string (url-match path-info 2) - path-info (url-match path-info 1))) - (while (and safe-paths (not found)) - (setq y (expand-file-name executable (car safe-paths)) - found (and (file-exists-p y) (file-executable-p y) y) - safe-paths (cdr safe-paths))) - (if (not found) - (url-retrieve (concat "www://error/nofile/" executable)) - (setq process-environment - (append - (list - "SERVER_SOFTWARE=x-exec/1.0" - (concat "SERVER_NAME=" (system-name)) - "GATEWAY_INTERFACE=CGI/1.1" - "SERVER_PROTOCOL=HTTP/1.0" - "SERVER_PORT=" - (concat "REQUEST_METHOD=" url-request-method) - (concat "HTTP_ACCEPT=" - (mapconcat - (function - (lambda (x) - (cond - ((= x ?\n) (setq y t) "") - ((= x ?:) (setq y nil) ",") - (t (char-to-string x))))) url-mime-accept-string - "")) - (concat "PATH_INFO=" (url-unhex-string path-info)) - (concat "PATH_TRANSLATED=" (url-unhex-string path-info)) - (concat "SCRIPT_NAME=" executable) - (concat "QUERY_STRING=" (url-unhex-string query-string)) - (concat "REMOTE_HOST=" (system-name))) - (if (assoc "content-type" url-request-extra-headers) - (concat "CONTENT_TYPE=" (cdr - (assoc "content-type" - url-request-extra-headers)))) - (if url-request-data - (concat "CONTENT_LENGTH=" (length url-request-data))) - process-environment)) - (and url-request-data (insert url-request-data)) - (setq y (call-process-region (point-min) (point-max) found t t)) - (goto-char (point-min)) - (delete-region (point) (progn (skip-chars-forward " \t\n") (point))) - (cond - ((url-mime-response-p) nil) ; Its already got an HTTP/1.0 header - ((null y) ; Weird exit status, whassup? - (insert "HTTP/1.0 404 Not Found\n" - "Server: " url-package-name "/x-exec\n")) - ((= 0 y) ; The shell command was successful - (insert "HTTP/1.0 200 Document follows\n" - "Server: " url-package-name "/x-exec\n")) - (t ; Non-zero exit status is bad bad bad - (insert "HTTP/1.0 404 Not Found\n" - "Server: " url-package-name "/x-exec\n")))))) + (url-http url-using-proxy url))) ;; ftp://ietf.org/internet-drafts/draft-masinter-url-data-02.txt (defun url-data (url)
--- a/lisp/w3/url-news.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/url-news.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; url-news.el --- News Uniform Resource Locator retrieval code ;; Author: wmperry -;; Created: 1997/01/10 00:13:05 -;; Version: 1.6 +;; Created: 1997/02/18 23:35:11 +;; Version: 1.7 ;; Keywords: comm, data, processes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -60,8 +60,6 @@ "") "[ \t,\n<>]+"))))) (date (cdr (assoc "date" url-current-mime-headers)))) - (setq url-current-file "" - url-current-type "") (if (or (not (string-match "text/" typ)) (string-match "text/html" typ)) nil ; Let natural content-type take over @@ -253,12 +251,7 @@ (gnus) (kill-buffer url-working-buffer)) (t ; Whole newsgroup - (url-news-fetch-newsgroup article host))) - (setq url-current-type "news" - url-current-server host - url-current-user (url-user urlobj) - url-current-port port - url-current-file article))) + (url-news-fetch-newsgroup article host))))) (defun url-nntp (url) ;; Find a news reference @@ -282,11 +275,6 @@ (gnus) (kill-buffer url-working-buffer)) (t ; Whole newsgroup - (url-news-fetch-newsgroup article))) - (setq url-current-type "news" - url-current-server host - url-current-user (url-user urlobj) - url-current-port port - url-current-file article))) + (url-news-fetch-newsgroup article))))) (provide 'url-news)
--- a/lisp/w3/url-pgp.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/url-pgp.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,175 +0,0 @@ -;;; url-pgp.el --- PGP encapsulation of HTTP -;; Author: wmperry -;; Created: 1997/01/10 00:13:05 -;; Version: 1.3 -;; Keywords: comm, data, processes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1993-1996 by William M. Perry (wmperry@cs.indiana.edu) -;;; Copyright (c) 1996, 1997 Free Software Foundation, Inc. -;;; -;;; This file is not part of GNU Emacs, but the same permissions apply. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs 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 General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(require 'url-vars) -(require 'url-parse) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; UUencoding -;;; ---------- -;;; These functions are needed for the (RI)PEM encoding. PGP can -;;; handle binary data, but (RI)PEM requires that it be uuencoded -;;; first, or it will barf severely. How rude. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun url-uuencode-buffer (&optional buff) - "UUencode buffer BUFF, with a default of the current buffer." - (setq buff (or buff (current-buffer))) - (save-excursion - (set-buffer buff) - (url-lazy-message "UUencoding...") - (call-process-region (point-min) (point-max) - url-uuencode-program t t nil "url-temp-file") - (url-lazy-message "UUencoding... done."))) - -(defun url-uudecode-buffer (&optional buff) - "UUdecode buffer BUFF, with a default of the current buffer." - (setq buff (or buff (current-buffer))) - (let ((newname (url-generate-unique-filename))) - (save-excursion - (set-buffer buff) - (goto-char (point-min)) - (re-search-forward "^begin [0-9][0-9][0-9] \\(.*\\)$" nil t) - (replace-match (concat "begin 600 " newname)) - (url-lazy-message "UUdecoding...") - (call-process-region (point-min) (point-max) url-uudecode-program) - (url-lazy-message "UUdecoding...") - (erase-buffer) - (insert-file-contents-literally newname) - (url-lazy-message "UUdecoding... done.") - (condition-case () - (delete-file newname) - (error nil))))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Decoding PGP/PEM responses -;;; -------------------------- -;;; A PGP/PEM encrypted/signed response contains all the real headers, -;;; so this is just a quick decrypt-then-reparse hack. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun url-decode-pgp/pem (arg) - "Decode a pgp/pem response from an HTTP/1.0 server. -This expects the decoded message to contain all the necessary HTTP/1.0 headers -to correctly act on the decoded message (new content-type, etc)." - (mc-decrypt-message) - (url-parse-mime-headers)) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; PGP/PEM Encryption -;;; ------------------ -;;; This implements the highly secure PGP/PEM encrypted requests, as -;;; specified by NCSA and CERN. -;;; -;;; The complete online spec of this scheme was done by Tony Sanders -;;; <sanders@bsdi.com>, and can be seen at -;;; http://www.bsdi.com/HTTP:TNG/ripem-http.txt -;;; -;;; This section of code makes use of the EXCELLENT mailcrypt.el -;;; package by Jin S Choi (jsc@mit.edu) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun url-public-key-exists (entity scheme) - "Return t iff a key for ENTITY exists using public key system SCHEME. -ENTITY is the username/hostname combination we are checking for. -SCHEME is a symbol representing what public key encryption program to use. - Currently only 'pgp (Pretty Good Privacy) and 'pem (RIPEM) are - recognized." - (let (retval) - (save-excursion - (cond - ((eq 'pgp scheme) ; PGP encryption - (set-buffer (get-buffer-create " *keytmp*")) - (erase-buffer) - (call-process mc-pgp-path nil t nil "+batchmode" "-kxaf" entity) - (goto-char (point-min)) - (setq retval (search-forward mc-pgp-key-begin-line nil t))) - ((eq 'pem scheme) ; PEM encryption - (set-buffer (find-file-noselect mc-ripem-pubkeyfile)) - (goto-char (point-min)) - (setq retval (search-forward entity nil t))) - (t - (url-warn 'security - (format - "Bad value for SCHEME in url-public-key-exists %s" - scheme)))) - (kill-buffer (current-buffer))) - retval)) - -(defun url-get-server-keys (entity &optional scheme) - "Make sure the key for ENTITY exists using SCHEME. -ENTITY is the username/hostname combination to get the info for. - This should be a string you could pass to 'finger'. -SCHEME is a symbol representing what public key encryption program to use. - Currently only 'pgp (Pretty Good Privacy) and 'pem (RIPEM) are - recognized." - (or scheme (setq scheme mc-default-scheme)) - (save-excursion - (cond - ((url-public-key-exists entity scheme) nil) - (t - (string-match "\\([^@]+\\)@\\(.*\\)" entity) - (let ((url-working-buffer " *url-get-keys*")) - (url-retrieve (format "gopher://%s:79/0%s/w" (url-match entity 1) - (url-match entity 2))) - (mc-snarf-keys) - (kill-buffer url-working-buffer)))))) - -(defun url-fetch-with-pgp (url recipient type) - "Retrieve a document with public-key authentication. - URL is the url to request from the server. -RECIPIENT is the server's entity name (usually webmaster@host) - TYPE is a symbol representing what public key encryption program to use. - Currently only 'pgp (Pretty Good Privacy) and 'pem (RIPEM) are - recognized." - (or noninteractive (require 'mailcrypt)) - (let ((request (url-create-mime-request url "PGP-Redirect")) - (url-request-data nil) - (url-request-extra-headers nil)) - (save-excursion - (url-get-server-keys recipient type) - (set-buffer (get-buffer-create " *url-encryption*")) - (erase-buffer) - (insert "\n\n" mail-header-separator "\n" request) - (mc-encrypt-message recipient type) - (goto-char (point-min)) - (if (re-search-forward (concat "\n" mail-header-separator "\n") nil t) - (delete-region (point-min) (point))) - (setq url-request-data (buffer-string) - url-request-extra-headers - (list (cons "Authorized" (format "%s entity=\"%s\"" - (cond - ((eq type 'pgp) "PGP") - ((eq type 'pem) "PEM")) - url-pgp/pem-entity)) - (cons "Content-type" (format "application/x-www-%s-reply" - (cond - ((eq type 'pgp) "pgp") - ((eq type 'pem) "pem"))))))) - (kill-buffer " *url-encryption*") - (url-retrieve (url-expand-file-name "/") t))) - -(provide 'url-pgp)
--- a/lisp/w3/url-vars.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/url-vars.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; url-vars.el --- Variables for Uniform Resource Locator tool ;; Author: wmperry -;; Created: 1997/02/10 16:15:19 -;; Version: 1.27 +;; Created: 1997/02/18 23:35:21 +;; Version: 1.28 ;; Keywords: comm, data, processes, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -50,18 +50,20 @@ url-current-callback-func url-current-can-be-cached url-current-content-length - url-current-file url-current-isindex url-current-mime-encoding url-current-mime-headers url-current-mime-type url-current-mime-viewer url-current-object - url-current-port url-current-referer - url-current-server - url-current-type - url-current-user + + ;; obsolete + ;; url-current-file + ;; url-current-port + ;; url-current-server + ;; url-current-type + ;; url-current-user )) (defvar url-cookie-storage nil "Where cookies are stored.") @@ -78,16 +80,6 @@ If t, all refresh requests will be honored. If non-nil and not t, the user will be asked for each refresh request.") -(defvar url-emacs-minor-version - (if (boundp 'emacs-minor-version) - (symbol-value 'emacs-minor-version) - (if (string-match "^[0-9]+\\.\\([0-9]+\\)" emacs-version) - (string-to-int - (substring emacs-version - (match-beginning 1) (match-end 1))) - 0)) - "What minor version of emacs we are using.") - (defvar url-inhibit-mime-parsing nil "Whether to parse out (and delete) the MIME headers from a message.") @@ -101,30 +93,22 @@ returns non-nil if the second time is 'too old' when compared to the first time.") -(defvar url-check-md5s nil - "*Whether to check md5s of retrieved documents or not.") - -(defvar url-expected-md5 nil "What md5 we expect to see.") - -(defvar url-bug-address "wmperry@cs.indiana.edu" "Where to send bug reports.") +(defvar url-bug-address "wmperry@cs.indiana.edu" + "Where to send bug reports.") (defvar url-cookie-confirmation nil - "*If non-nil, confirmation by the user is required before accepting any -HTTP cookies.") + "*If non-nil, confirmation by the user is required to accept HTTP cookies.") (defvar url-personal-mail-address nil - "*Your full email address. This is what is sent to HTTP/1.0 servers as -the FROM field. If not set when url-do-setup is run, it defaults to -the value of url-pgp/pem-entity.") + "*Your full email address. +This is what is sent to HTTP/1.0 servers as the FROM field in an HTTP/1.0 +request.") (defvar url-directory-index-file "index.html" "*The filename to look for when indexing a directory. If this file exists, and is readable, then it will be viewed instead of automatically creating the directory listing.") -(defvar url-pgp/pem-entity nil - "*The users PGP/PEM id - usually their email address.") - (defvar url-privacy-level 'none "*How private you want your requests to be. HTTP/1.0 has header fields for various information about the user, including @@ -158,10 +142,6 @@ variable. ") -(defvar url-uudecode-program "uudecode" "*The UUdecode executable.") - -(defvar url-uuencode-program "uuencode" "*The UUencode executable.") - (defvar url-history-list nil "List of urls visited this session.") (defvar url-inhibit-uncompression nil "Do not do decompression if non-nil.") @@ -173,33 +153,19 @@ session.") (defvar url-uncompressor-alist '((".z" . "x-gzip") - (".gz" . "x-gzip") - (".uue" . "x-uuencoded") - (".hqx" . "x-hqx") - (".Z" . "x-compress")) + (".gz" . "x-gzip") + (".uue" . "x-uuencoded") + (".hqx" . "x-hqx") + (".Z" . "x-compress")) "*An assoc list of file extensions and the appropriate content-transfer-encodings for each.") -(defvar url-xterm-command "xterm -title %s -ut -e %s %s %s" - "*Command used to start an xterm window.") - -(defvar url-tn3270-emulator "tn3270" - "The client to run in a subprocess to connect to a tn3270 machine.") - -(defvar url-use-transparent nil - "*Whether to use the transparent package by Brian Tompsett instead of -the builtin telnet functions. Using transparent allows you to have full -vt100 emulation in the telnet and tn3270 links.") - (defvar url-mail-command 'url-mail "*This function will be called whenever url needs to send mail. It should enter a mail-mode-like buffer in the current window. The commands mail-to and mail-subject should still work in this buffer, and it should use mail-header-separator if possible.") -(defvar url-local-exec-path nil - "*A list of possible locations for x-exec scripts.") - (defvar url-proxy-services nil "*An assoc list of access types and servers that gateway them. Looks like ((\"http\" . \"hostname:portnumber\") ....) This is set up @@ -270,23 +236,18 @@ (defvar url-multiple-p t "*If non-nil, multiple queries are possible through ` *URL-<i>*' buffers") (defvar url-default-working-buffer " *URL*" " The default buffer to do all of the processing in.") -(defvar url-working-buffer url-default-working-buffer " The buffer to do all of the processing in. - (It defaults to `url-default-working-buffer' and is bound to ` *URL-<i>*' buffers - when used for multiple requests, cf. `url-multiple-p')") +(defvar url-working-buffer url-default-working-buffer + "The buffer to do all of the processing in. +It defaults to `url-default-working-buffer' and is bound to *URL-<i>* +buffers when used for multiple requests, cf. `url-multiple-p'") (defvar url-current-referer nil "Referer of this page.") (defvar url-current-content-length nil "Current content length.") -(defvar url-current-file nil "Filename of current document.") (defvar url-current-isindex nil "Is the current document a searchable index?") (defvar url-current-mime-encoding nil "MIME encoding of current document.") (defvar url-current-mime-headers nil "An alist of MIME headers.") (defvar url-current-mime-type nil "MIME type of current document.") (defvar url-current-mime-viewer nil "How to view the current MIME doc.") -(defvar url-current-nntp-server nil "What nntp server currently opened.") (defvar url-current-passwd-count 0 "How many times password has failed.") -(defvar url-current-port nil "Port # of the current document.") -(defvar url-current-server nil "Server of the current document.") -(defvar url-current-user nil "Username for ftp login.") -(defvar url-current-type nil "We currently in http or file mode?") (defvar url-gopher-types "0123456789+gIThws:;<" "A string containing character representations of all the gopher types.") (defvar url-mime-separator-chars (mapcar 'identity @@ -320,11 +281,11 @@ (defvar url-request-method nil "The method to use for the next request.") (defvar url-mime-encoding-string nil - "String to send to the server in the Accept-encoding: field in HTTP/1.0 + "*String to send to the server in the Accept-encoding: field in HTTP/1.0 requests. This is created automatically from mm-content-transfer-encodings.") (defvar url-mime-language-string "*" - "String to send to the server in the Accept-language: field in + "*String to send to the server in the Accept-language: field in HTTP/1.0 requests.") (defvar url-mime-accept-string nil @@ -352,24 +313,6 @@ "*Maximum number of times a password will be prompted for when a protected document is denied by the server.") -(defvar url-wais-to-mime - '( - ("WSRC" . "application/x-wais-source") ; A database description - ("TEXT" . "text/plain") ; plain text - ) - "An assoc list of wais doctypes and their corresponding MIME -content-types.") - -(defvar url-waisq-prog "waisq" - "*Name of the waisq executable on this system. This should be the -waisq program from think.com's wais8-b5.1 distribution.") - -(defvar url-wais-gateway-server "www.ncsa.uiuc.edu" - "*The machine name where the WAIS gateway lives.") - -(defvar url-wais-gateway-port "8001" - "*The port # of the WAIS gateway.") - (defvar url-temporary-directory "/tmp" "*Where temporary files go.") (defvar url-show-status t @@ -417,17 +360,12 @@ "^\\([-a-zA-Z0-9+.]+:\\)" "A regular expression that will match an absolute URL.") -(defvar url-configuration-directory nil - "*Where the URL configuration files can be found.") - (defvar url-confirmation-func 'y-or-n-p "*What function to use for asking yes or no functions. Possible values are 'yes-or-no-p or 'y-or-n-p, or any function that takes a single argument (the prompt), and returns t only if a positive answer is gotten.") -(defvar url-find-this-link nil "Link to go to within a document.") - (defvar url-gateway-method 'native "*The type of gateway support to use. Should be a symbol specifying how we are to get a connection off of the @@ -445,7 +383,7 @@ ") (defvar url-running-xemacs (string-match "XEmacs" emacs-version) - "*In XEmacs?.") + "*Got XEmacs?") (defvar url-default-ports '(("http" . "80") ("gopher" . "70")
--- a/lisp/w3/url-wais.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/url-wais.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,251 +0,0 @@ -;;; url-wais.el --- WAIS Uniform Resource Locator retrieval code -;; Author: wmperry -;; Created: 1997/01/10 00:13:05 -;; Version: 1.4 -;; Keywords: comm, data, processes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1993-1996 by William M. Perry (wmperry@cs.indiana.edu) -;;; Copyright (c) 1996, 1997 Free Software Foundation, Inc. -;;; -;;; This file is not part of GNU Emacs, but the same permissions apply. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs 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 General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(require 'url-vars) -(require 'url-parse) - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; WAIS support -;;; ------------ -;;; Here are even more gross hacks that I call native WAIS support. -;;; This code requires a working waisq program that is fully -;;; compatible with waisq from think.com -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun url-create-wais-source (server port dbase) - ;; Create a temporary wais source description file. Returns the - ;; file name the description is in. - (let ((x (url-generate-unique-filename)) - (y (get-buffer-create " *waisq-tmp*"))) - (save-excursion - (set-buffer y) - (erase-buffer) - (insert - (format - (concat "(:source\n:version 3\n" - ":ip-name \"%s\"\n:tcp-port %s\n" - ":database-name \"%s\"\n)") - server (if (equal port "") "210" port) dbase)) - (write-region (point-min) (point-max) x nil nil) - (kill-buffer y)) - x)) - -(defun url-wais-stringtoany (str) - ;; Return a wais subelement that specifies STR in any database - (concat "(:any :size " (length str) " :bytes #( " - (mapconcat 'identity str " ") - " ) )")) - -;(defun url-retrieve-wais-docid (server port dbase local-id) -; (call-process "waisretrieve" nil url-working-buffer nil -; (format "%s:%s@%s:%s" (url-unhex-string local-id) -; dbase server port))) - -;(url-retrieve-wais-docid "quake.think.com" "210" "directory-of-servers" -; "0 2608 /proj/wais/wais-sources/vpiej-l.src") -(defun url-retrieve-wais-docid (server port dbase local-id) - ;; Retrieve a wais document. - ;; SERVER is the server the database is on (:ip-name in source description) - ;; PORT is the port number to contact (:tcp-port in the source description) - ;; DBASE is the database name (:database-name in the source description) - ;; LOCAL-ID is the document (:original-local-id in the question description) - (let* ((dbf (url-create-wais-source server port dbase)) - (qstr (format - (concat "(:question :version 2\n" - " :result-documents\n" - " ( (:document-id\n" - " :document\n" - " (:document\n" - " :headline \"\"\n" - " :doc-id\n" - " (:doc-id :original-database %s\n" - " :original-local-id %s )\n" - " :number-of-bytes -1\n" - " :type \"\"\n" - " :source\n" - " (:source-id :filename \"%s\") ) ) ) )") - (url-wais-stringtoany dbase) - (url-wais-stringtoany (url-unhex-string local-id)) - dbf)) - (qf (url-generate-unique-filename))) - (set-buffer (get-buffer-create url-working-buffer)) - (insert qstr) - (write-region (point-min) (point-max) qf nil nil) - (erase-buffer) - (call-process url-waisq-prog nil url-working-buffer nil "-f" qf "-v" "1") - (save-excursion - (set-buffer url-working-buffer) - (setq url-current-file (url-unhex-string local-id))) - (condition-case () - (delete-file dbf) - (error nil)) - (condition-case () - (delete-file qf) - (error nil)))) - -;(url-perform-wais-query "quake.think.com" "210" "directory-of-servers" "SGML") -(defun url-perform-wais-query (server port dbase search) - ;; Perform a wais query. - ;; SERVER is the server the database is on (:ip-name in source description) - ;; PORT is the port number to contact (:tcp-port in the source description) - ;; DBASE is the database name (:database-name in the source description) - ;; SEARCH is the search term (:seed-words in the question description)" - (let ((dbfname (url-create-wais-source server port dbase)) - (qfname (url-generate-unique-filename)) - (results 'url-none-gotten)) - (save-excursion - (url-clear-tmp-buffer) - (insert - (format - (concat "(:question\n" - " :version 2\n" - " :seed-words \"%s\"\n" - " :sourcepath \"" url-temporary-directory "\"\n" - " :sources\n" - " ( (:source-id\n" - " :filename \"%s\"\n" - " )\n" - " )\n" - " :maximum-results 100)\n") - search dbfname)) - (write-region (point-min) (point-max) qfname nil nil) - (erase-buffer) - (call-process url-waisq-prog nil url-working-buffer nil "-g" "-f" qfname) - (set-buffer url-working-buffer) - (erase-buffer) - (setq url-current-server server - url-current-port port - url-current-file dbase) - (insert-file-contents-literally qfname) - (goto-char (point-min)) - (if (re-search-forward "(:question" nil t) - (delete-region (point-min) (match-beginning 0))) - (url-replace-regexp "Process.*finished.*" "") - (subst-char-in-region (point-min) (point-max) 35 32) - (goto-char (point-min)) - (message "Done reading info - parsing results...") - (if (re-search-forward ":result-documents[^(]+" nil t) - (progn - (goto-char (match-end 0)) - (while (eq results 'url-none-gotten) - (condition-case () - (setq results (read (current-buffer))) - (error (progn - (setq results 'url-none-gotten) - (goto-char (match-end 0)))))) - (erase-buffer) - (insert "<title>Results of WAIS search</title>\n" - "<h1>Searched " dbase " for " search "</h1>\n" - "<hr>\n" - "Found <b>" (int-to-string (length results)) - "</b> matches.\n" - "<ol>\n<li>" - (mapconcat 'url-parse-wais-doc-id results "\n<li>") - "\n</ol>\n<hr>\n")) - (message "No results")) - (setq url-current-mime-type "text/html") - (condition-case () - (delete-file qfname) - (error nil)) - (condition-case () - (delete-file dbfname) - (error nil))))) - -(defun url-wais-anytostring (x) - ;; Convert a (:any ....) wais construct back into a string. - (mapconcat 'char-to-string (car (cdr (memq ':bytes x))) "")) - -(defun url-parse-wais-doc-id (x) - ;; Return a list item that points at the doc-id specified by X - (let* ((document (car (cdr (memq ':document x)))) - (doc-id (car (cdr (memq ':doc-id document)))) - (score (car (cdr (memq ':score x)))) - (title (car (cdr (memq ':headline document)))) - (type (car (cdr (memq ':type document)))) - (size (car (cdr (memq ':number-of-bytes document)))) - (server (car (cdr (memq ':original-server doc-id)))) - (dbase (car (cdr (memq ':original-database doc-id)))) - (localid (car (cdr (memq ':original-local-id doc-id)))) - (dist-server (car (cdr (memq ':distributor-server doc-id)))) - (dist-dbase (car (cdr (memq ':distributor-database doc-id)))) - (dist-id (car (cdr (memq ':distributor-local-id doc-id)))) - (copyright (or (car (cdr (memq ':copyright-disposition doc-id))) 0))) - (format "<a href=\"wais://%s:%s/%s/%s/%d/1=%s;2=%s;3=%s;4=%s;5=%s;6=%s;7=%d;\">%s (Score = %s)</a>" - url-current-server url-current-port url-current-file - type size - (url-hexify-string (url-wais-anytostring server)) - (url-hexify-string (url-wais-anytostring dbase)) - (url-hexify-string (url-wais-anytostring localid)) - (url-hexify-string (url-wais-anytostring dist-server)) - (url-hexify-string (url-wais-anytostring dist-dbase)) - (url-hexify-string (url-wais-anytostring dist-id)) - copyright title score))) - -(defun url-grok-wais-href (url) - "Return a list of server, port, database, search-term, doc-id" - (if (string-match "wais:/+\\([^/:]+\\):*\\([^/]*\\)/+\\(.*\\)" url) - (let ((host (url-match url 1)) - (port (url-match url 2)) - (data (url-match url 3))) - (list host port data)) - (make-list 3 nil))) - -(defun url-wais (url) - ;; Retrieve a document via WAIS - (if (and url-wais-gateway-server url-wais-gateway-port) - (url-retrieve - (format "http://%s:%s/%s" - url-wais-gateway-server - url-wais-gateway-port - (substring url (match-end 0) nil))) - (let ((href (url-grok-wais-href url))) - (url-clear-tmp-buffer) - (setq url-current-type "wais" - url-current-server (nth 0 href) - url-current-port (nth 1 href) - url-current-file (nth 2 href)) - (cond - ((string-match "2=\\(.*\\);3=\\([^ ;]+\\)" (nth 2 href)); full link - (url-retrieve-wais-docid (nth 0 href) (nth 1 href) - (url-match (nth 2 href) 1) - (url-match (nth 2 href) 2))) - ((string-match "\\([^\\?]+\\)\\?\\(.*\\)" (nth 2 href)) ; stored query - (url-perform-wais-query (nth 0 href) (nth 1 href) - (url-match (nth 2 href) 1) - (url-match (nth 2 href) 2))) - (t - (insert "<title>WAIS search</title>\n" - "<h1>WAIS search of " (nth 2 href) "</h1>" - "<hr>\n" - (format "<form action=\"%s\" enctype=\"application/x-w3-wais\">\n" url) - "Enter search term: <input name=\"internal-wais\">\n" - "</form>\n" - "<hr>\n")))))) - -(provide 'url-wais) -
--- a/lisp/w3/url.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/url.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,13 +1,13 @@ ;;; url.el --- Uniform Resource Locator retrieval tool ;; Author: wmperry -;; Created: 1997/02/07 14:30:25 -;; Version: 1.51 +;; Created: 1997/02/20 15:34:07 +;; Version: 1.57 ;; Keywords: comm, data, processes, hypermedia ;;; LCD Archive Entry: ;;; url|William M. Perry|wmperry@cs.indiana.edu| ;;; Functions for retrieving/manipulating URLs| -;;; 1997/02/07 14:30:25|1.51|Location Undetermined +;;; 1997/02/20 15:34:07|1.57|Location Undetermined ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -97,11 +97,8 @@ (autoload 'url-telnet "url-misc") (autoload 'url-tn3270 "url-misc") (autoload 'url-proxy "url-misc") -(autoload 'url-x-exec "url-misc") (autoload 'url-news "url-news") (autoload 'url-nntp "url-news") -(autoload 'url-decode-pgp/pem "url-pgp") -(autoload 'url-wais "url-wais") (autoload 'url-open-stream "url-gw") (autoload 'url-mime-response-p "url-http") @@ -119,6 +116,13 @@ (autoload 'url-cookie-generate-header-lines "url-cookie") (autoload 'url-cookie-handle-set-cookie "url-cookie") +(autoload 'url-is-cached "url-cache") +(autoload 'url-store-in-cache "url-cache") +(autoload 'url-is-cached "url-cache") +(autoload 'url-create-cached-filename "url-cache") +(autoload 'url-extract-from-cache "url-cache") +(autoload 'url-cache-expired "url-cache") + (require 'md5) (require 'base64) @@ -132,9 +136,6 @@ nil) ; Don't load if no alist ((rassq 'url-file-handler file-name-handler-alist) nil) ; Don't load twice - ((and (string-match "XEmacs\\|Lucid" emacs-version) - (< url-emacs-minor-version 11)) ; Don't load in lemacs 19.10 - nil) (t (setq file-name-handler-alist (let ((new-handler (cons @@ -566,7 +567,8 @@ 1 0 0 (cons 0 0) (cons 0 0) (cons 0 0) -1 (mm-extension-to-mime (url-file-extension - url-current-file)) + (url-filename + url-current-object))) nil 0 0))) (kill-buffer " *url-temp*")))))) ((member type '("ftp" "file")) @@ -809,15 +811,10 @@ ((eq (device-type) 'tty) "(Unix?); TTY") (t "UnkownPlatform"))) - ;; Set up the entity definition for PGP and PEM authentication - (setq url-pgp/pem-entity (or url-pgp/pem-entity - user-mail-address - (format "%s@%s" (user-real-login-name) - (system-name)))) - (setq url-personal-mail-address (or url-personal-mail-address - url-pgp/pem-entity - user-mail-address)) + user-mail-address + (format "%s@%s" (user-real-login-name) + (system-name)))) (if (or (memq url-privacy-level '(paranoid high)) (and (listp url-privacy-level) @@ -907,11 +904,8 @@ (url-register-protocol 'irc nil 'url-identity-expander "6667") (url-register-protocol 'data nil 'url-identity-expander) (url-register-protocol 'rlogin) - (url-register-protocol 'shttp nil nil "80") (url-register-protocol 'telnet) (url-register-protocol 'tn3270) - (url-register-protocol 'wais) - (url-register-protocol 'x-exec) (url-register-protocol 'proxy) (url-register-protocol 'auto 'url-handle-no-scheme) @@ -971,16 +965,11 @@ noproxy "") "\\)")) url-proxy-services)))) - ;; Set the url-use-transparent with decent defaults - (if (not (eq (device-type) 'tty)) - (setq url-use-transparent nil)) - (and url-use-transparent (require 'transparent)) - ;; Set the password entry funtion based on user defaults or guess ;; based on which remote-file-access package they are using. (cond (url-passwd-entry-func nil) ; Already been set - ((boundp 'read-passwd) ; Use secure password if available + ((fboundp 'read-passwd) ; Use secure password if available (setq url-passwd-entry-func 'read-passwd)) ((or (featurep 'efs) ; Using EFS (featurep 'efs-auto)) ; or autoloading efs @@ -992,8 +981,9 @@ (not (string-match "Lucid" (emacs-version))))) (setq url-passwd-entry-func 'ange-ftp-read-passwd)) (t - (url-warn 'security - "Can't determine how to read passwords, winging it."))) + (url-warn + 'security + "(url-setup): Can't determine how to read passwords, winging it."))) ;; Set up the news service if they haven't done so (setq url-news-server @@ -1026,249 +1016,6 @@ (run-hooks 'url-load-hook) (setq url-setup-done t))) -(defun url-cache-file-writable-p (file) - "Follows the documentation of file-writable-p, unlike file-writable-p." - (and (file-writable-p file) - (if (file-exists-p file) - (not (file-directory-p file)) - (file-directory-p (file-name-directory file))))) - -(defun url-prepare-cache-for-file (file) - "Makes it possible to cache data in FILE. -Creates any necessary parent directories, deleting any non-directory files -that would stop this. Returns nil if parent directories can not be -created. If FILE already exists as a non-directory, it changes -permissions of FILE or deletes FILE to make it possible to write a new -version of FILE. Returns nil if this can not be done. Returns nil if -FILE already exists as a directory. Otherwise, returns t, indicating that -FILE can be created or overwritten." - - ;; COMMENT: We don't delete directories because that requires - ;; recursively deleting the directories's contents, which might - ;; eliminate a substantial portion of the cache. - - (cond - ((url-cache-file-writable-p file) - t) - ((file-directory-p file) - nil) - (t - (catch 'upcff-tag - (let ((dir (file-name-directory file)) - dir-parent dir-last-component) - (if (string-equal dir file) - ;; *** Should I have a warning here? - ;; FILE must match a pattern like /foo/bar/, indicating it is a - ;; name only suitable for a directory. So presume we won't be - ;; able to overwrite FILE and return nil. - (throw 'upcff-tag nil)) - - ;; Make sure the containing directory exists, or throw a failure - ;; if we can't create it. - (if (file-directory-p dir) - nil - (or (fboundp 'make-directory) - (throw 'upcff-tag nil)) - (make-directory dir t) - ;; make-directory silently fails if there is an obstacle, so - ;; we must verify its results. - (if (file-directory-p dir) - nil - ;; Look at prefixes of the path to find the obstacle that is - ;; stopping us from making the directory. Unfortunately, there - ;; is no portable function in Emacs to find the parent directory - ;; of a *directory*. So this code may not work on VMS. - (while (progn - (if (eq ?/ (aref dir (1- (length dir)))) - (setq dir (substring dir 0 -1)) - ;; Maybe we're on VMS where the syntax is different. - (throw 'upcff-tag nil)) - (setq dir-parent (file-name-directory dir)) - (not (file-directory-p dir-parent))) - (setq dir dir-parent)) - ;; We have found the longest path prefix that exists as a - ;; directory. Deal with any obstacles in this directory. - (if (file-exists-p dir) - (condition-case nil - (delete-file dir) - (error (throw 'upcff-tag nil)))) - (if (file-exists-p dir) - (throw 'upcff-tag nil)) - ;; Try making the directory again. - (setq dir (file-name-directory file)) - (make-directory dir t) - (or (file-directory-p dir) - (throw 'upcff-tag nil)))) - - ;; The containing directory exists. Let's see if there is - ;; something in the way in this directory. - (if (url-cache-file-writable-p file) - (throw 'upcff-tag t) - (condition-case nil - (delete-file file) - (error (throw 'upcff-tag nil)))) - - ;; The return value, if we get this far. - (url-cache-file-writable-p file)))))) - -(defun url-store-in-cache (&optional buff) - "Store buffer BUFF in the cache" - (if (or (not (get-buffer buff)) - (member url-current-type '("www" "about" "https" "shttp" - "news" "mailto")) - (and (member url-current-type '("file" "ftp" nil)) - (not url-current-server)) - ) - nil - (save-excursion - (and buff (set-buffer buff)) - (let* ((fname (url-create-cached-filename (url-view-url t))) - (fname-hdr (concat (if (memq system-type '(ms-windows ms-dos os2)) - (url-file-extension fname t) - fname) ".hdr")) - (info (mapcar (function (lambda (var) - (cons (symbol-name var) - (symbol-value var)))) - '( url-current-content-length - url-current-file - url-current-isindex - url-current-mime-encoding - url-current-mime-headers - url-current-mime-type - url-current-port - url-current-server - url-current-type - url-current-user - )))) - (cond ((and (url-prepare-cache-for-file fname) - (url-prepare-cache-for-file fname-hdr)) - (write-region (point-min) (point-max) fname nil 5) - (set-buffer (get-buffer-create " *cache-tmp*")) - (erase-buffer) - (insert "(setq ") - (mapcar - (function - (lambda (x) - (insert (car x) " " - (cond ((null (setq x (cdr x))) "nil") - ((stringp x) (prin1-to-string x)) - ((listp x) (concat "'" (prin1-to-string x))) - ((numberp x) (int-to-string x)) - (t "'???")) "\n"))) - info) - (insert ")\n") - (write-region (point-min) (point-max) fname-hdr nil 5))))))) - - -(defun url-is-cached (url) - "Return non-nil if the URL is cached." - (let* ((fname (url-create-cached-filename url)) - (attribs (file-attributes fname))) - (and fname ; got a filename - (file-exists-p fname) ; file exists - (not (eq (nth 0 attribs) t)) ; Its not a directory - (nth 5 attribs)))) ; Can get last mod-time - -(defun url-create-cached-filename-using-md5 (url) - (if url - (expand-file-name (md5 url) - (concat url-temporary-directory "/" - (user-real-login-name))))) - -(defun url-create-cached-filename (url) - "Return a filename in the local cache for URL" - (if url - (let* ((url url) - (urlobj (if (vectorp url) - url - (url-generic-parse-url url))) - (protocol (url-type urlobj)) - (hostname (url-host urlobj)) - (host-components - (cons - (user-real-login-name) - (cons (or protocol "file") - (nreverse - (delq nil - (mm-string-to-tokens - (or hostname "localhost") ?.)))))) - (fname (url-filename urlobj))) - (if (and fname (/= (length fname) 0) (= (aref fname 0) ?/)) - (setq fname (substring fname 1 nil))) - (if fname - (let ((slash nil)) - (setq fname - (mapconcat - (function - (lambda (x) - (cond - ((and (= ?/ x) slash) - (setq slash nil) - "%2F") - ((= ?/ x) - (setq slash t) - "/") - (t - (setq slash nil) - (char-to-string x))))) fname "")))) - - (if (and fname (memq system-type '(ms-windows ms-dos windows-nt)) - (string-match "\\([A-Za-z]\\):[/\\]" fname)) - (setq fname (concat (url-match fname 1) "/" - (substring fname (match-end 0))))) - - (setq fname (and fname - (mapconcat - (function (lambda (x) - (if (= x ?~) "" (char-to-string x)))) - fname "")) - fname (cond - ((null fname) nil) - ((or (string= "" fname) (string= "/" fname)) - url-directory-index-file) - ((= (string-to-char fname) ?/) - (if (string= (substring fname -1 nil) "/") - (concat fname url-directory-index-file) - (substring fname 1 nil))) - (t - (if (string= (substring fname -1 nil) "/") - (concat fname url-directory-index-file) - fname)))) - - ;; Honor hideous 8.3 filename limitations on dos and windows - ;; we don't have to worry about this in Windows NT/95 (or OS/2?) - (if (and fname (memq system-type '(ms-windows ms-dos))) - (let ((base (url-file-extension fname t)) - (ext (url-file-extension fname nil))) - (setq fname (concat (substring base 0 (min 8 (length base))) - (substring ext 0 (min 4 (length ext))))) - (setq host-components - (mapcar - (function - (lambda (x) - (if (> (length x) 8) - (concat - (substring x 0 8) "." - (substring x 8 (min (length x) 11))) - x))) - host-components)))) - - (and fname - (expand-file-name fname - (expand-file-name - (mapconcat 'identity host-components "/") - url-temporary-directory)))))) - -(defun url-extract-from-cache (fnam) - "Extract FNAM from the local disk cache" - (set-buffer (get-buffer-create url-working-buffer)) - (erase-buffer) - (setq url-current-mime-viewer nil) - (insert-file-contents-literally fnam) - (load (concat (if (memq system-type '(ms-windows ms-dos os2)) - (url-file-extension fnam t) - fnam) ".hdr") t t)) - ;;;###autoload (defun url-get-url-at-point (&optional pt) "Get the URL closest to point, but don't change your @@ -1536,8 +1283,7 @@ "Do any necessary uncompression on `url-working-buffer'" (set-buffer url-working-buffer) (if (not url-inhibit-uncompression) - (let* ((extn (url-file-extension url-current-file)) - (decoder nil) + (let* ((decoder nil) (code-1 (cdr-safe (assoc "content-transfer-encoding" url-current-mime-headers))) @@ -1582,6 +1328,7 @@ (defun url-default-callback (buf) (url-download-minor-mode nil) + (url-store-in-cache) (cond ((save-excursion (set-buffer buf) (and url-current-callback-func @@ -1624,10 +1371,11 @@ (if (not url-current-mime-type) (setq url-current-mime-type (mm-extension-to-mime (url-file-extension - url-current-file))))))) - (if (member status '(401 301 302 303 204)) - nil - (funcall url-default-retrieval-proc (buffer-name url-working-buffer)))))) + (url-filename + url-current-object))))) + (if (member status '(401 301 302 303 204)) + nil + (funcall url-default-retrieval-proc (buffer-name url-working-buffer))))))))) (defun url-remove-relative-links (name) ;; Strip . and .. from pathnames @@ -1682,54 +1430,11 @@ "View the current document's URL. Optional argument NO-SHOW means just return the URL, don't show it in the minibuffer." (interactive) - (let ((url "")) - (cond - ((equal url-current-type "gopher") - (setq url (format "%s://%s%s/%s" - url-current-type url-current-server - (if (or (null url-current-port) - (string= "70" url-current-port)) "" - (concat ":" url-current-port)) - url-current-file))) - ((equal url-current-type "news") - (setq url (concat "news:" - (if (not (equal url-current-server - url-news-server)) - (concat "//" url-current-server - (if (or (null url-current-port) - (string= "119" url-current-port)) - "" - (concat ":" url-current-port)) "/")) - url-current-file))) - ((equal url-current-type "about") - (setq url (concat "about:" url-current-file))) - ((member url-current-type '("http" "shttp" "https")) - (setq url (format "%s://%s%s/%s" url-current-type url-current-server - (if (or (null url-current-port) - (string= "80" url-current-port)) - "" - (concat ":" url-current-port)) - (if (and url-current-file - (= ?/ (string-to-char url-current-file))) - (substring url-current-file 1 nil) - url-current-file)))) - ((equal url-current-type "ftp") - (setq url (format "%s://%s%s/%s" url-current-type - (if (and url-current-user - (not (string= "anonymous" url-current-user))) - (concat url-current-user "@") "") - url-current-server - (if (and url-current-file - (= ?/ (string-to-char url-current-file))) - (substring url-current-file 1 nil) - url-current-file)))) - ((and (member url-current-type '("file" nil)) url-current-file) - (setq url (format "file:%s" url-current-file))) - ((equal url-current-type "www") - (setq url (format "www:/%s/%s" url-current-server url-current-file))) - (t - (setq url nil))) - (if (not no-show) (message "%s" url) url))) + (if (not url-current-object) + nil + (if no-show + (url-recreate-url url-current-object) + (message "%s" (url-recreate-url url-current-object))))) (defun url-parse-Netscape-history (fname) ;; Parse a Netscape/X style global history list. @@ -2114,14 +1819,7 @@ (url-lazy-message "Retrieving %s..." url) (apply 'call-process url-external-retrieval-program nil t nil args) - (url-lazy-message "Retrieving %s... done" url) - (if (and type urlobj) - (setq url-current-server (url-host urlobj) - url-current-type (url-type urlobj) - url-current-port (url-port urlobj) - url-current-file (url-filename urlobj))) - (if (member url-current-file '("/" "")) - (setq url-current-mime-type "text/html")))))) + (url-lazy-message "Retrieving %s... done" url))))) (defun url-get-normalized-date (&optional specified-time) ;; Return a 'real' date string that most HTTP servers can understand. @@ -2152,28 +1850,6 @@ (concat "[" (nth 1 (current-time-zone)) "]"))))) -;;;###autoload -(defun url-cache-expired (url mod) - "Return t iff a cached file has expired." - (if (not (string-match url-nonrelative-link url)) - t - (let* ((urlobj (url-generic-parse-url url)) - (type (url-type urlobj))) - (cond - (url-standalone-mode - (not (file-exists-p (url-create-cached-filename urlobj)))) - ((string= type "http") - (if (not url-standalone-mode) t - (not (file-exists-p (url-create-cached-filename urlobj))))) - ((not (fboundp 'current-time)) - t) - ((member type '("file" "ftp")) - (if (or (equal mod '(0 0)) (not mod)) - (return t) - (or (> (nth 0 mod) (nth 0 (current-time))) - (> (nth 1 mod) (nth 1 (current-time)))))) - (t nil))))) - (defun url-get-working-buffer-name () "Get a working buffer name such as ` *URL-<i>*' without a live process and empty" (let ((num 1) @@ -2224,95 +1900,79 @@ nil)))) (defun url-retrieve-internally (url &optional no-cache) - (let ((url-working-buffer (if (and url-multiple-p - (string-equal - (if (bufferp url-working-buffer) - (buffer-name url-working-buffer) - url-working-buffer) - url-default-working-buffer)) - (url-get-working-buffer-name) - url-working-buffer))) - (if (get-buffer url-working-buffer) - (save-excursion - (set-buffer url-working-buffer) - (erase-buffer) - (setq url-current-can-be-cached (not no-cache)) - (set-buffer-modified-p nil))) - (let* ((urlobj (url-generic-parse-url url)) - (type (url-type urlobj)) - (url-using-proxy (if (url-host urlobj) - (url-find-proxy-for-url urlobj - (url-host urlobj)) - nil)) - (handler nil) - (original-url url) - (cached nil) - (tmp url-current-file)) - (if url-using-proxy (setq type "proxy")) - (setq cached (url-is-cached url) - cached (and cached (not (url-cache-expired url cached))) - handler (if cached 'url-extract-from-cache - (car-safe - (cdr-safe (assoc (or type "auto") - url-registered-protocols)))) - url (if cached (url-create-cached-filename url) url)) - (save-excursion - (set-buffer (get-buffer-create url-working-buffer)) - (setq url-current-can-be-cached (not no-cache))) - ; (if url-be-asynchronous - ; (url-download-minor-mode t)) - (if (and handler (fboundp handler)) - (funcall handler url) - (set-buffer (get-buffer-create url-working-buffer)) - (setq url-current-file tmp) - (erase-buffer) - (insert "<title> Link Error! </title>\n" - "<h1> An error has occurred... </h1>\n" - (format "The link type `<code>%s</code>'" type) - " is unrecognized or unsupported at this time.<p>\n" - "If you feel this is an error, please " - "<a href=\"mailto://" url-bug-address "\">send me mail.</a>" - "<p><address>William Perry</address><br>" - "<address>" url-bug-address "</address>") - (setq url-current-file "error.html")) - (if (and - (not url-be-asynchronous) - (get-buffer url-working-buffer)) - (progn - (set-buffer url-working-buffer) - - (url-clean-text))) - (cond - ((equal type "wais") nil) - ((and url-be-asynchronous (not cached) (member type '("http" "proxy"))) - nil) - (url-be-asynchronous - (funcall url-default-retrieval-proc (buffer-name))) - ((not (get-buffer url-working-buffer)) nil) - ((and (not url-inhibit-mime-parsing) - (or cached (url-mime-response-p t))) - (or cached (url-parse-mime-headers nil t)))) - (if (and (or (not url-be-asynchronous) - (not (equal type "http"))) - (not url-current-mime-type)) - (if (url-buffer-is-hypertext) - (setq url-current-mime-type "text/html") - (setq url-current-mime-type (mm-extension-to-mime - (url-file-extension - url-current-file))))) - (if (and url-automatic-caching url-current-can-be-cached - (not url-be-asynchronous)) - (save-excursion - (url-store-in-cache url-working-buffer))) - (if (not url-global-history-hash-table) - (setq url-global-history-hash-table (make-hash-table :size 131 - :test 'equal))) - (if (not (string-match "^about:" original-url)) - (progn - (setq url-history-changed-since-last-save t) - (cl-puthash original-url (current-time) - url-global-history-hash-table))) - (cons cached url-working-buffer)))) + (let* ((url-working-buffer (if (and url-multiple-p + (string-equal + (if (bufferp url-working-buffer) + (buffer-name url-working-buffer) + url-working-buffer) + url-default-working-buffer)) + (url-get-working-buffer-name) + url-working-buffer)) + (urlobj (url-generic-parse-url url)) + (type (url-type urlobj)) + (url-using-proxy (if (url-host urlobj) + (url-find-proxy-for-url urlobj + (url-host urlobj)) + nil)) + (handler nil) + (original-url url) + (cached nil)) + (if url-using-proxy (setq type "proxy")) + (setq cached (url-is-cached url) + cached (and cached (not (url-cache-expired url cached))) + handler (if cached + 'url-extract-from-cache + (car-safe + (cdr-safe (assoc (or type "auto") + url-registered-protocols)))) + url (if cached (url-create-cached-filename url) url)) + (save-excursion + (set-buffer (get-buffer-create url-working-buffer)) + (setq url-current-can-be-cached (not no-cache) + url-current-object urlobj)) + (if (and handler (fboundp handler)) + (funcall handler url) + (set-buffer (get-buffer-create url-working-buffer)) + (erase-buffer) + (setq url-current-mime-type "text/html") + (insert "<title> Link Error! </title>\n" + "<h1> An error has occurred... </h1>\n" + (format "The link type `<code>%s</code>'" type) + " is unrecognized or unsupported at this time.<p>\n" + "If you feel this is an error in Emacs-W3, please " + "<a href=\"mailto://" url-bug-address "\">send me mail.</a>" + "<p><address>William Perry</address><br>" + "<address>" url-bug-address "</address>")) + (cond + ((and url-be-asynchronous (not cached) (member type '("http" "proxy"))) + nil) + (url-be-asynchronous + (funcall url-default-retrieval-proc (buffer-name))) + ((not (get-buffer url-working-buffer)) nil) + ((and (not url-inhibit-mime-parsing) + (or cached (url-mime-response-p t))) + (or cached (url-parse-mime-headers nil t)))) + (if (and (or (not url-be-asynchronous) + (not (equal type "http"))) + url-current-object + (not url-current-mime-type)) + (if (url-buffer-is-hypertext) + (setq url-current-mime-type "text/html") + (setq url-current-mime-type (mm-extension-to-mime + (url-file-extension + (url-filename + url-current-object)))))) + (if (not url-be-asynchronous) + (url-store-in-cache url-working-buffer)) + (if (not url-global-history-hash-table) + (setq url-global-history-hash-table (make-hash-table :size 131 + :test 'equal))) + (if (not (string-match "^\\(about\\|www\\):" original-url)) + (progn + (setq url-history-changed-since-last-save t) + (cl-puthash original-url (current-time) + url-global-history-hash-table))) + (cons cached url-working-buffer))) ;;;###autoload (defun url-retrieve (url &optional no-cache expected-md5) @@ -2331,12 +1991,6 @@ (if (and url (string-match "^url:" url)) (setq url (substring url (match-end 0) nil))) (let ((status (url-retrieve-internally url no-cache))) - (if (and expected-md5 url-check-md5s) - (let ((cur-md5 (md5 (current-buffer)))) - (if (not (string= cur-md5 expected-md5)) - (and (not (funcall url-confirmation-func - "MD5s do not match, use anyway? ")) - (error "MD5 error."))))) status)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
--- a/lisp/w3/w3-about.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/w3-about.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3-about.el --- About pages for emacs-w3 ;; Author: wmperry -;; Created: 1997/01/10 00:13:05 -;; Version: 1.7 +;; Created: 1997/02/18 23:36:35 +;; Version: 1.8 ;; Keywords: hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -35,9 +35,7 @@ (save-excursion (set-buffer (get-buffer-create url-working-buffer)) (erase-buffer) - (setq url-current-type "about" - url-current-file node - url-current-mime-viewer (mm-mime-info "text/html" nil 5) + (setq url-current-mime-viewer (mm-mime-info "text/html" nil 5) url-current-mime-headers '(("content-type" . "text/html"))) (cond ((string= "" node)
--- a/lisp/w3/w3-display.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/w3-display.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3-display.el --- display engine v99999 ;; Author: wmperry -;; Created: 1997/02/15 23:38:28 -;; Version: 1.128 +;; Created: 1997/02/20 21:48:44 +;; Version: 1.135 ;; Keywords: faces, help, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -367,6 +367,7 @@ (goto-char (point-max)) (add-text-properties w3-scratch-start-point (point) (list 'face w3-active-faces + 'html-stack w3-display-open-element-stack 'start-open t 'end-open t 'rear-nonsticky t @@ -414,7 +415,8 @@ (pop check))))) (defun w3-follow-hyperlink (widget &rest ignore) - (let* ((target (widget-get widget 'target)) + (let* ((target (or (widget-get widget 'target) + w3-base-target)) (href (widget-get widget 'href))) (if target (setq target (intern (downcase target)))) (case target @@ -424,6 +426,11 @@ (delete-other-windows) (w3-fetch href)) (otherwise + (and target + (let ((window-distance (cdr-safe (assq target w3-target-window-distances)))) + (if (numberp window-distance) + (other-window window-distance) + (error "target %S not found." target)))) (w3-fetch href))))) (defun w3-balloon-help-callback (object &optional event) @@ -1497,6 +1504,7 @@ (right-margin-stack (list fill-column)) (left-margin-stack (list 0)) (inhibit-read-only t) + (widget-push-button-gui nil) node insert-before insert-after @@ -1648,26 +1656,37 @@ (w3-handle-empty-tag)) (frameset (if w3-display-frames - (w3-handle-content node) + (progn + (push 'frameset w3-frameset-structure) + (let ((cols (assq 'cols args)) + (rows (assq 'rows args))) + (if rows + (setq w3-frameset-dimensions (push rows w3-frameset-dimensions))) + (if cols + (setq w3-frameset-dimensions (push cols w3-frameset-dimensions)))) + (w3-handle-content node)) (w3-handle-empty-tag))) (frame - (let* ((href (or (w3-get-attribute 'src) - (w3-get-attribute 'href))) - (name (or (w3-get-attribute 'name) - (w3-get-attribute 'title) - (w3-get-attribute 'alt) - "Unknown frame name"))) - (w3-handle-content - (list tag args - (list - (list 'p nil - (list - (list 'a - (cons (cons 'href href) - args) - (list - "Fetch frame: " - name))))))))) + (if w3-display-frames + (let* ((href (or (w3-get-attribute 'src) + (w3-get-attribute 'href))) + (name (or (w3-get-attribute 'name) + (w3-get-attribute 'title) + (w3-get-attribute 'alt) + "Unknown frame name"))) + (push 'frame w3-frameset-structure) + (w3-handle-content + (list tag args + (list + (list 'p nil + (list + (list 'a + (cons (cons 'href href) + args) + (list + (car w3-frame-labels) + name + (cdr w3-frame-labels))))))))))) (noframes (if w3-display-frames (w3-handle-empty-tag) @@ -1775,11 +1794,12 @@ (set-buffer (generate-new-buffer "Untitled"))) (setq w3-current-form-number 0 w3-display-open-element-stack nil - w3-last-fill-pos (point-min) - fill-column (min (- (or w3-strict-width (window-width)) - w3-right-margin) - (or w3-maximum-line-length - (window-width)))) + w3-last-fill-pos (point-min)) + (setcar right-margin-stack + (min (- (or w3-strict-width (window-width)) + w3-right-margin) + (or w3-maximum-line-length + (window-width)))) (switch-to-buffer (current-buffer)) (buffer-disable-undo (current-buffer)) (mapcar (function (lambda (x) (set (car x) (cdr x)))) info) @@ -1790,10 +1810,6 @@ (setq w3-current-stylesheet (css-copy-stylesheet w3-user-stylesheet) w3-last-fill-pos (point) - fill-column (min (- (or w3-strict-width (window-width)) - w3-right-margin) - (or w3-maximum-line-length - (window-width))) fill-prefix "") (set (make-local-variable 'inhibit-read-only) t)) (w3-handle-content node) @@ -1840,6 +1856,9 @@ (rename-buffer (generate-new-buffer-name (w3-fix-spaces potential-title))))) (w3-handle-empty-tag)) + (base + (setq w3-base-target (cdr-safe (assq 'target args))) + (w3-handle-content node)) (form (setq w3-current-form-number (1+ w3-current-form-number)) (let* ( @@ -2016,9 +2035,15 @@ (condition-case nil (widget-value-set widget glyph) (error nil)))) + (if (and url-current-object (url-target url-current-object)) + (progn + (push-mark (point) t) + (w3-find-specific-link (url-target url-current-object))) + (goto-char (point-min))) (and (not w3-running-xemacs) (not (eq (device-type) 'tty)) (w3-fixup-eol-faces)) + (message "Drawing... done") ;;(w3-handle-headers) ) @@ -2067,7 +2092,6 @@ (w3-finish-drawing) (w3-mode) (set-buffer-modified-p nil) - (goto-char (point-min)) (if url-keep-history (let ((url (url-view-url t))) (if (not url-history-list) @@ -2077,4 +2101,132 @@ (w3-shuffle-history-menu))))) ) +(defun w3-frames (&optional new-frame) + "Set up and fetch W3 frames. With optional prefix, do so in a new frame." + (interactive "P") + (let* ((old-asynch url-be-asynchronous) + (structure (reverse w3-frameset-structure)) + (dims (or (reverse w3-frameset-dimensions) + t))) + (if new-frame + (select-frame (make-frame-command))) + (goto-char (point-min)) + (setq-default url-be-asynchronous nil) + ;; set up frames + (while (and structure dims) + (let* ((current-dims (list (car dims))) + (cols (cdr-safe (assq 'cols current-dims))) + (rows (cdr-safe (assq 'rows current-dims)))) + (if (eq (car structure) 'frameset) + (pop structure)) + ;; columns ? + (if cols + (setq cols (w3-decode-frameset-dimensions cols (window-width))) + ;; rows ? + (if rows + (setq rows (w3-decode-frameset-dimensions rows (window-height))) + ;; default: columns of equal width + (let ((nb-windows 0)) + (save-excursion + (while (re-search-forward w3-frame-regexp nil t) + (setq nb-windows (1+ nb-windows)))) + (let ((fwidth (/ (window-width) nb-windows))) + (while (> nb-windows 0) + (push fwidth cols) + (setq nb-windows (1- nb-windows))))))) + (while (eq (car structure) 'frame) + (if (re-search-forward w3-frame-regexp nil t) + (progn + (if (cdr cols) + (split-window-horizontally (min (car cols) + (- (window-width) 12))) + (if (cdr rows) + (split-window-vertically (min (car rows) + (- (window-height) 12))))) + (pop cols) + (pop rows) + (goto-char (+ (match-beginning 0) 5)) + (let ((name (buffer-substring-no-properties (match-beginning 1) (match-end 1))) + (w3-notify 'semibully)) + (w3-widget-button-press) + (setq w3-frame-name name + w3-target-window-distances nil)) + (other-window 1))) + (pop structure))) + (if (consp dims) + (pop dims) + (setq dims nil))) + ;; compute target window distances + (let ((origin-buffer (current-buffer)) + (stop nil)) + (while (not stop) + (or w3-target-window-distances + (setq w3-target-window-distances + (w3-compute-target-window-distances))) + (other-window 1) + (if (eq (current-buffer) origin-buffer) + (setq stop t)))) + (setq-default url-be-asynchronous old-asynch))) + +(defun w3-compute-target-window-distances () + "Compute an alist of target names and window distances" + (let ((origin-buffer (current-buffer)) + (distance 0) + (stop nil) + (window-distances nil)) + (while (not stop) + (if w3-frame-name + (push (cons (intern (downcase w3-frame-name)) distance) + window-distances)) + (other-window 1) + (setq distance (1+ distance)) + (if (eq (current-buffer) origin-buffer) + (setq stop t))) + window-distances)) + +(defun w3-decode-frameset-dimensions (dims available-dimension) + "Returns numbers of lines or columns in Emacs, computed from specified frameset dimensions" + (let ((dimensions nil)) + (if dims + (let ((nb-stars 0) + (remaining-available-dimension available-dimension)) + (while (string-match "\\(\\*\\|[0-9]+%?\\)" dims) + (let ((match (substring dims (match-beginning 1) (match-end 1)))) + (setq dims (substring dims (match-end 1))) + (cond ((string-match "\\*" match) + ;; * : divide rest equally + (push '* dimensions) + (setq nb-stars (1+ nb-stars))) + (t + (cond ((string-match "\\([0-9]+\\)%" match) + ;; percentage of available height + (push (/ (* (car (read-from-string (substring match 0 -1))) + available-dimension) + 100) + dimensions)) + (t + ;; absolute number: pixel height + (push (max (1+ (/ (car (read-from-string match)) + (frame-char-height))) + window-min-height) + dimensions))) + (setq remaining-available-dimension + (- remaining-available-dimension (car dimensions))))))) + (if (zerop nb-stars) + ;; push => reverse order + (reverse dimensions) + ;; substitute numbers for * + (let ((star-replacement (/ remaining-available-dimension nb-stars)) + (star-dimensions dimensions)) + (setq dimensions nil) + (while star-dimensions + (push (if (eq '* (car star-dimensions)) + star-replacement + (car star-dimensions)) + dimensions) + (pop star-dimensions)) + ;; push + push => in order + dimensions)))))) + + (provide 'w3-display)
--- a/lisp/w3/w3-e19.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/w3-e19.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3-e19.el --- Emacs 19.xx specific functions for emacs-w3 ;; Author: wmperry -;; Created: 1997/01/19 20:04:48 -;; Version: 1.16 +;; Created: 1997/02/18 23:32:51 +;; Version: 1.18 ;; Keywords: faces, help, mouse, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -31,6 +31,8 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (require 'w3-forms) (require 'font) +(require 'w3-script) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Help menu ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -98,35 +100,21 @@ (defun w3-mode-version-specifics () ;; Emacs 19 specific stuff for w3-mode (make-local-variable 'track-mouse) - (if w3-track-mouse (setq track-mouse t)) - '(if (or (memq (device-type) '(x pm ns))) - (w3-build-FSF19-menu))) + (if w3-track-mouse (setq track-mouse t))) (defun w3-mouse-handler (e) "Function to message the url under the mouse cursor" (interactive "e") (let* ((pt (posn-point (event-start e))) (good (eq (posn-window (event-start e)) (selected-window))) - (widget (and good pt (number-or-marker-p pt) (widget-at pt))) - (link (and widget (or (widget-get widget 'href) - (widget-get widget 'name)))) - (form (and widget (widget-get widget :w3-form-data))) - (imag nil) ; (nth 1 (memq 'w3graphic props)))) - ) - (cond - (link (message "%s" (w3-widget-echo widget))) - (form - (cond - ((eq 'submit (w3-form-element-type form)) - (message "Submit form to %s" - (cdr-safe (assq 'action (w3-form-element-action form))))) - ((eq 'reset (w3-form-element-type form)) - (message "Reset form contents")) - (t - (message "Form entry (name=%s, type=%s)" (w3-form-element-name form) - (w3-form-element-type form))))) - (imag (message "Inlined image (%s)" (car imag))) - (t (message ""))))) + (mouse-events nil)) + (if (not (and good pt (number-or-marker-p pt))) + nil + (widget-echo-help pt) + ;; Need to handle onmouseover, on mouseout + (setq mouse-events (w3-script-find-event-handlers pt 'mouse)) + (if (assq 'onmouseover mouse-events) + (w3-script-evaluate-form (cdr (assq 'onmouseover mouse-events))))))) (defun w3-color-values (color) (cond
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/w3/w3-elisp.el Mon Aug 13 08:51:32 2007 +0200 @@ -0,0 +1,132 @@ +;;; w3-elisp.el --- Scripting support for emacs-lisp +;; Author: wmperry +;; Created: 1997/02/19 23:44:26 +;; Version: 1.5 +;; Keywords: hypermedia, scripting + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Copyright (c) 1997 Free Software Foundation, Inc. +;;; +;;; This file is part of GNU Emacs. +;;; +;;; GNU Emacs is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2, or (at your option) +;;; any later version. +;;; +;;; GNU Emacs 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 General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Emacs; see the file COPYING. If not, write to the +;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;;; Boston, MA 02111-1307, USA. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(require 'cl) + +(mapcar + (function + (lambda (x) + (put x 'w3-safe t))) + '(;; Any safe functions for untrusted scripts should go here. + ;; Basic stuff + message + format garbage-collect progn prog1 prog2 progn-with-message + while current-time current-time-string + plist-member plist-to-alist plist-get + assoc memq member function lambda point + + ;; Device querying + device-pixel-height device-type device-color-cells + device-mm-height device-class device-bitplanes + device-on-window-system-p device-pixel-width + device-mm-width device-baud-rate + + ;; Frame querying + frame-type frame-name frame-device frame-parameters + frame-height frame-pixel-width frame-pixel-height + frame-width frame-property + + ;; Window querying + window-frame window-height window-width + window-pixel-width window-pixel-height + + ;; Buffer querying + buffer-name buffer-substring buffer-substring-no-properties + buffer-size buffer-string + + ;; Text properties, read-only + get-text-property text-properties-at text-property-bounds + text-property-not-all + + ;; URL loading stuff + url-insert-file-contents url-view-url + + ;; Interfacing to W3 + w3-fetch w3-refresh-buffer w3-view-this-url + + ;; Face stuff - is this really safe? + make-face set-face-foreground set-face-underline-p + set-face-doc-string set-face-parent set-face-dim-p set-face-background + set-face-background-pixmap set-face-property set-face-blinking-p + set-face-font-family set-face-reverse-p set-face-strikethru-p + set-face-font-size set-face-font set-face-display-table + set-face-highlight-p + + ;; All the XEmacs event manipulation functions + event-live-p event-glyph-extent event-glyph-y-pixel event-x-pixel + event-type event-glyph event-button event-over-text-area-p + event-glyph-x-pixel event-buffer event-device event-properties + event-process event-timestamp event-modifier-bits event-console + event-window-y-pixel event-window event-window-x-pixel event-point + event-function event-over-toolbar-p event-matches-key-specifier-p + event-over-glyph-p event-frame event-x event-channel event-y + event-screen event-to-character event-over-border-p + event-toolbar-button event-closest-point event-object event-key + event-modifiers event-y-pixel event-over-modeline-p + event-modeline-position + ) + ) + +(defsubst w3-elisp-safe-function (func args) + (let ((validator (get func 'w3-safe))) + (cond + ((eq t validator) t) ; Explicit allow + ((eq nil validator) nil) ; Explicit deny + ((fboundp validator) ; Function to call + (funcall validator func args)) + ((boundp validator) ; Variable to check + (symbol-value validator)) + (t nil)))) ; Fallback to unsafe + +(defun w3-elisp-safe-expression (exp) + "Return t if-and-only-if EXP is safe to evaluate." + (cond + ((and (listp exp) (not (listp (cdr exp)))) ; A cons cell + t) + ((or ; self-quoters + (vectorp exp) + (numberp exp) + (symbolp exp) + (stringp exp) + (keymapp exp)) + t) + ((listp exp) ; Function call - check arguments + (if (w3-elisp-safe-function (car exp) (cdr exp)) + (let ((args (cdr exp)) + (rval t)) + (while args + (if (not (w3-elisp-safe-expression (pop args))) + (setq args nil + rval nil))) + rval))) + ;; How to handle the insane # of native types? + (t nil))) + +(defun w3-elisp-safe-eval (form) + (and (w3-elisp-safe-expression form) (eval form))) + +(provide 'w3-elisp)
--- a/lisp/w3/w3-forms.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/w3-forms.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3-forms.el --- Emacs-w3 forms parsing code for new display engine ;; Author: wmperry -;; Created: 1997/02/13 23:10:23 -;; Version: 1.70 +;; Created: 1997/02/20 21:40:42 +;; Version: 1.73 ;; Keywords: faces, help, comm, data, languages ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -501,6 +501,7 @@ (put 'option 'w3-summarize-function 'w3-form-summarize-option-list) (put 'keygen 'w3-summarize-function 'w3-form-summarize-keygen-list) (put 'image 'w3-summarize-function 'w3-form-summarize-image) +(put 'password 'w3-summarize-function 'w3-form-summarize-password) (put 'hidden 'w3-summarize-function 'ignore) (defun w3-form-summarize-field (widget &rest ignore) @@ -525,7 +526,7 @@ ;; more closely follow the widget-y way of just returning the string ;; instead of having the underlying :help-echo or :emacspeak-help ;; implementation do it. - (message "%s" msg))) + (and msg (message "%s" msg)))) (defsubst w3-form-field-label (data) ;;; FIXXX!!! Need to reimplement using the new forms implementation! @@ -539,6 +540,12 @@ (format "Text field %s set to: %s" (or label (concat "called " name)) value))) +(defun w3-form-summarize-password (data widget) + (let ((label (w3-form-field-label data)) + (name (w3-form-element-name data))) + (format "Password field %s is a secret. Shhh." + (or label (concat "called " name))))) + (defun w3-form-summarize-multiline (data widget) (let ((name (w3-form-element-name data)) (label (w3-form-field-label data)) @@ -580,8 +587,11 @@ (label (w3-form-field-label data)) (cur-value (widget-value (w3-form-element-widget data))) (this-value (widget-value (widget-get-sibling widget)))) - (format "Radio button %s is %s, could be %s" (or label name) cur-value - this-value))) + (if (equal this-value cur-value) + (format "Radio group %s has %s pressed" + (or label name) this-value) + (format "Press this to change radio group %s from %s to %s" (or label name) cur-value + this-value)))) (defun w3-form-summarize-file-browser (data widget) (let ((name (w3-form-element-name data)) @@ -857,9 +867,6 @@ (w3-form-encode-helper result) "\n")) query)) -(defun w3-form-encode-application/x-w3-wais (result) - (cdr (car (w3-form-encode-helper result)))) - (defun w3-form-encode-application/x-gopher-query (result) (concat "\t" (cdr (car (w3-form-encode-helper result)))))
--- a/lisp/w3/w3-hot.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/w3-hot.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3-hot.el --- Main functions for emacs-w3 on all platforms/versions ;; Author: wmperry -;; Created: 1997/01/10 00:13:05 -;; Version: 1.11 +;; Created: 1997/02/18 23:36:48 +;; Version: 1.12 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -160,7 +160,7 @@ (progn (w3-show-hotlist) (rename-buffer (concat "Hotlist \"" regexp "\"")) - (setq url-current-file (concat "hotlist/" regexp))) + (url-set-filename url-current-object (concat "hotlist/" regexp))) (and save-buf (save-excursion (set-buffer save-buf) (rename-buffer "Hotlist")))))))
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/w3/w3-jscript.el Mon Aug 13 08:51:32 2007 +0200 @@ -0,0 +1,30 @@ +;;; w3-elisp.el --- Scripting support for javascript +;; Author: wmperry +;; Created: 1997/02/17 16:00:11 +;; Version: 1.2 +;; Keywords: hypermedia, scripting + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Copyright (c) 1997 Free Software Foundation, Inc. +;;; +;;; This file is part of GNU Emacs. +;;; +;;; GNU Emacs is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2, or (at your option) +;;; any later version. +;;; +;;; GNU Emacs 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 General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Emacs; see the file COPYING. If not, write to the +;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;;; Boston, MA 02111-1307, USA. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; FIXME! Well, actually IMPLEMENTME! + +(provide 'w3-jscript)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/w3/w3-script.el Mon Aug 13 08:51:32 2007 +0200 @@ -0,0 +1,92 @@ +;;; w3-script.el --- Scripting support +;; Author: wmperry +;; Created: 1997/02/18 23:32:46 +;; Version: 1.4 +;; Keywords: hypermedia, scripting + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Copyright (c) 1997 Free Software Foundation, Inc. +;;; +;;; This file is part of GNU Emacs. +;;; +;;; GNU Emacs is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2, or (at your option) +;;; any later version. +;;; +;;; GNU Emacs 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 General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Emacs; see the file COPYING. If not, write to the +;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;;; Boston, MA 02111-1307, USA. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(require 'cl) +(require 'w3-elisp) +(require 'w3-jscript) + +;; Event Handlers +;; onclick ; It was clicked on +;; onchange ; Text area was changed +;; onselect ; Menu choice changed +;; onmouseover ; Mouse is over us +;; onmouseout ; Mouse left us +;; onblur ; We lost focus +;; onfocus ; We gained focus +;; onload ; We got loaded +;; onunload ; We got unloaded +;; onreset ; Form got reset +;; onsubmit ; From is about to be submitted +;; onabort ; User cancelled loading an image +;; onerror ; Error occurred loading an image + +(defvar w3-do-scripting t + "*Whether to handle client-side scripting or not. +If you are ultra-paranoid, set this to `nil'") + +(defvar w3-current-scripting-language 'elisp) +(make-variable-buffer-local 'w3-current-scripting-language) + +(put 'form 'w3-event-handlers + '(onclick onchange onselect onblur onfocus onreset onsubmit)) + +(put 'mouse 'w3-event-handlers '(onmouseover onmouseout)) + +(put 'misc 'w3-event-handlers '(onload onunload)) + +(put 'all 'w3-event-handlers (append (get 'form 'w3-event-handlers) + (get 'mouse 'w3-event-handlers))) + +(defun w3-script-find-event-handlers (pt type) + (if w3-do-scripting + (let* ((html-stack (get-text-property pt 'html-stack)) + (args nil) + (rval nil) + (cur nil)) + (while html-stack + (setq args (cdr (pop html-stack))) + (while (setq cur (pop args)) + (if (memq (car cur) (get type 'w3-event-handlers)) + (setq rval (cons cur rval))))) + (nreverse rval)))) + +(defun w3-script-evaluate-form (f) + (if w3-do-scripting + (case w3-current-scripting-language + (elisp + (let ((st 0) + (form nil) + (max (length f))) + (while (and (< st max) (setq form (read-from-string f st))) + (setq st (cdr form) + form (car form)) + (w3-elisp-safe-eval form)))) + (otherwise + (error "Unimplemented scripting language: %S" + w3-current-scripting-language))))) + +(provide 'w3-script)
--- a/lisp/w3/w3-vars.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/w3-vars.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3-vars.el,v --- All variable definitions for emacs-w3 ;; Author: wmperry -;; Created: 1997/02/15 23:38:52 -;; Version: 1.91 +;; Created: 1997/02/22 15:18:42 +;; Version: 1.97 ;; Keywords: comm, help, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -30,7 +30,7 @@ ;;; Variable definitions for w3 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defconst w3-version-number - (let ((x "p3.0.60")) + (let ((x "p3.0.62")) (if (string-match "State:[ \t\n]+.\\([^ \t\n]+\\)" x) (setq x (substring x (match-beginning 1) (match-end 1))) (setq x (substring x 1))) @@ -38,7 +38,7 @@ (function (lambda (x) (if (= x ?-) "." (char-to-string x)))) x "")) "Version # of w3-mode.") -(defconst w3-version-date (let ((x "1997/02/15 23:38:52")) +(defconst w3-version-date (let ((x "1997/02/22 15:18:42")) (if (string-match "Date: \\([^ \t\n]+\\)" x) (substring x (match-beginning 1) (match-end 1)) x)) @@ -83,6 +83,27 @@ (defvar w3-display-frames nil "*Fetch frames - not optimal.") +(defvar w3-frame-labels '("FRAME(" . ")") + "Strings surrounding a frame name") + +(defvar w3-frame-regexp "FRAME(\\([^)]+\\))" + "Regexp for finding a frame hyperlink") + +(defvar w3-frameset-structure nil + "Frameset structure") + +(defvar w3-frameset-dimensions nil + "Frameset dimensions") + +(defvar w3-frame-name nil + "Frame name") + +(defvar w3-base-target nil + "Base target name") + +(defvar w3-target-window-distances nil + "Target window distances") + (defvar w3-do-incremental-display nil "*Whether to do incremental display of pages or not.") @@ -685,16 +706,12 @@ w3-form-elements url-current-callback-func url-current-content-length - url-current-file url-current-mime-encoding url-current-mime-headers url-current-mime-type url-current-mime-viewer - url-current-port + url-current-object url-current-referer - url-current-server - url-current-type - url-current-user w3-current-parse w3-current-isindex w3-current-last-buffer @@ -707,6 +724,10 @@ w3-form-labels w3-id-positions w3-imagemaps + w3-base-target + w3-target-window-distances + w3-frameset-structure + w3-frameset-dimensions ) "A list of variables that should be preserved when entering w3-mode.") @@ -735,6 +756,7 @@ (make-variable-buffer-local 'w3-base-alist) (make-variable-buffer-local 'w3-last-tag) (make-variable-buffer-local 'w3-last-fill-pos) +(make-variable-buffer-local 'w3-frame-name) (make-variable-buffer-local 'w3-active-faces) (make-variable-buffer-local 'w3-netscape-emulation-minor-mode) (make-variable-buffer-local 'w3-lynx-emulation-minor-mode) @@ -814,6 +836,7 @@ ;; Widget navigation (define-key w3-mode-map [tab] 'w3-widget-forward) +(define-key w3-mode-map "\t" 'w3-widget-forward) (define-key w3-mode-map "\M-\t" 'w3-widget-backward) (define-key w3-mode-map [backtab] 'w3-widget-backward) (define-key w3-mode-map [(shift tab)] 'w3-widget-backward)
--- a/lisp/w3/w3-xemac.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/w3-xemac.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3-xemac.el --- XEmacs specific functions for emacs-w3 ;; Author: wmperry -;; Created: 1997/02/10 16:08:10 -;; Version: 1.14 +;; Created: 1997/02/17 23:09:24 +;; Version: 1.15 ;; Keywords: faces, help, mouse, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -31,6 +31,7 @@ (require 'w3-widget) (require 'w3-menu) (require 'w3-forms) +(require 'w3-script) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Enhancements For XEmacs ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -39,26 +40,14 @@ (interactive "e") (let* ((pt (event-point e)) (good (eq (event-window e) (selected-window))) - (widget (and good pt (number-or-marker-p pt) (widget-at pt))) - (link (and widget (or (widget-get widget 'href) - (widget-get widget 'name)))) - (form (and widget (widget-get widget :w3-form-data))) - (imag nil) - ) - (cond - (link (message "%s" (w3-widget-echo widget))) - (form - (cond - ((eq 'submit (w3-form-element-type form)) - (message "Submit form to %s" - (cdr-safe (assq 'action (w3-form-element-action form))))) - ((eq 'reset (w3-form-element-type form)) - (message "Reset form contents")) - (t - (message "Form entry (name=%s, type=%s)" (w3-form-element-name form) - (w3-form-element-type form))))) - (imag (message "Inlined image (%s)" (car imag))) - (t (message ""))))) + (mouse-events)) + (if (not (and good pt (number-or-marker-p pt))) + nil + (if (and inhibit-help-echo w3-track-mouse) + (widget-echo-help pt)) + (setq mouse-events (w3-script-find-event-handlers pt 'mouse)) + (if (assq 'onmouseover mouse-events) + (w3-script-evaluate-form (cdr (assq 'onmouseover mouse-events))))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Functions to build menus of urls @@ -151,12 +140,10 @@ (defun w3-mode-version-specifics () "XEmacs specific stuff for w3-mode" (if (featurep 'mouse) - (cond - ((not w3-track-mouse) - (setq inhibit-help-echo nil)) - (inhibit-help-echo - (setq mode-motion-hook 'w3-mouse-handler)) - (t nil))) + (progn + (if (not w3-track-mouse) + (setq inhibit-help-echo nil)) + (setq mode-motion-hook 'w3-mouse-handler))) (if (eq (device-type) 'tty) nil (w3-add-toolbar-to-buffer))
--- a/lisp/w3/w3.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/w3/w3.el Mon Aug 13 08:51:32 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3.el --- Main functions for emacs-w3 on all platforms/versions ;; Author: wmperry -;; Created: 1997/02/13 23:05:56 -;; Version: 1.77 +;; Created: 1997/02/20 21:50:57 +;; Version: 1.82 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -211,8 +211,10 @@ (fmt nil) ((cdr-safe (assoc "type" info)) (setq fmt (mm-type-to-file (cdr-safe (assoc "type" info)))) - (if fmt (setq fmt (concat "%s" (car fmt))) - (setq fmt (concat "%s" (url-file-extension url-current-file)))))) + (if fmt + (setq fmt (concat "%s" (car fmt))) + (setq fmt (concat "%s" (url-file-extension + (url-filename url-current-object))))))) (if (null view) (setq view 'indented-text-mode)) (cond @@ -222,7 +224,8 @@ mm-multipart-viewer))) (let ((bufnam (url-generate-new-buffer-name (file-name-nondirectory - (or url-current-file "Unknown"))))) + (or (url-filename url-current-object) + "Unknown"))))) (if (string= bufnam "") (setq bufnam (url-generate-new-buffer-name (url-view-url t)))) @@ -239,7 +242,7 @@ (let ((fname (url-generate-unique-filename fmt)) (proc nil)) (if (url-file-directly-accessible-p (url-view-url t)) - (make-symbolic-link url-current-file fname t) + (make-symbolic-link (url-filename url-current-object) fname t) (mule-write-region-no-coding-system (point-min) (point-max) fname)) (if (get-buffer url-working-buffer) (kill-buffer url-working-buffer)) @@ -458,7 +461,8 @@ (if (equal url "") (error "No document specified!")) ;; legal use for relative URLs ? (if (string-match "^www:[^/].*" url) - (setq url (concat (file-name-directory url-current-file) + (setq url (concat (file-name-directory (url-filename + url-current-object)) (substring url 4)))) ;; In the common case, this is probably cheaper than searching. (while (= (string-to-char url) ? ) @@ -472,8 +476,6 @@ (let ((x (url-view-url t)) (lastbuf (current-buffer)) (buf (url-buffer-visiting url))) - (and x (or (string= "file:nil" x) (string= "" x)) - (setq x nil)) (if (or (not buf) (cond ((not (equal (downcase (or url-request-method "GET")) "get")) t) @@ -497,8 +499,7 @@ (setq w3-last-buffer (get-buffer url-working-buffer))) (if (get-buffer url-working-buffer) (cond - ((and url-be-asynchronous - (not cached)) + ((and url-be-asynchronous (not cached)) (save-excursion (set-buffer url-working-buffer) (if x @@ -506,11 +507,7 @@ (setq w3-current-last-buffer lastbuf))) (t (w3-history-push x url) - (w3-sentinel lastbuf) - (if (string-match "#\\(.*\\)" url) - (progn - (push-mark (point) t) - (w3-find-specific-link (match-string 1 url)))))))) + (w3-sentinel lastbuf))))) (if w3-track-last-buffer (setq w3-last-buffer buf)) (let ((w3-notify (if (memq w3-notify '(newframe bully @@ -576,7 +573,10 @@ (setq w3-history-stack (list (cons url (current-time)))) (let ((node (memq (assoc referer w3-history-stack) w3-history-stack))) (if node - (setcdr node (list (cons url (current-time)))))))) + (setcdr node (list (cons url (current-time)))) + (setq w3-history-stack (append w3-history-stack + (list + (cons url (current-time))))))))) (defalias 'w3-add-urls-to-history 'w3-history-push) (defalias 'w3-backward-in-history 'w3-history-backward) @@ -634,15 +634,11 @@ (cur-links w3-current-links) (title (buffer-name)) (lastmod (or (cdr-safe (assoc "last-modified" - url-current-mime-headers)) - (and (member url-current-type '("file" "ftp")) - (nth 5 (url-file-attributes url))))) + url-current-mime-headers)))) (hdrs url-current-mime-headers) (info w3-current-metainfo)) (set-buffer (get-buffer-create url-working-buffer)) - (setq url-current-can-be-cached nil - url-current-type "about" - url-current-file "document") + (setq url-current-can-be-cached nil) (erase-buffer) (cond ((stringp lastmod) nil) @@ -804,67 +800,6 @@ (let ((url (url-get-url-at-point pt))) (and url (w3-fetch url)))) -;;;###autoload -(defun w3-batch-fetch () - "Fetch all the URLs on the command line and save them to files in -the current directory. The first argument after the -f w3-batch-fetch -on the command line should be a string specifying how to save the -information retrieved. If it is \"html\", then the page will be -unformatted when it is written to disk. If it is \"text\", then the -page will be formatted before it is written to disk. If it is -\"binary\" it will not mess with the file extensions, and just save -the data in raw binary format. If none of those, the default is -\"text\", and the first argument is treated as a normal URL." - (if (not w3-setup-done) (w3-do-setup)) - (if (not noninteractive) - (error "`w3-batch-fetch' is to be used only with -batch")) - (let ((fname "") - (curname "") - (x 0) - (args command-line-args-left) - (w3-strict-width 80) - (retrieval-function 'w3-fetch) - (file-format "text") - (header "") - (file-extn ".txt")) - (setq file-format (downcase (car args))) - (cond - ((string= file-format "html") - (message "Saving all text as raw HTML...") - (setq retrieval-function 'url-retrieve - file-extn ".html" - header "<BASE HREF=\"%s\">" - args (cdr args))) - ((string= file-format "binary") - (message "Saving as raw binary...") - (setq retrieval-function 'url-retrieve - file-extn "" - args (cdr args))) - ((string= file-format "text") - (setq header "Text from: %s\n---------------\n") - (message "Saving all text as formatted...") - (setq args (cdr args))) - (t - (setq header "Text from: %s\n---------------\n") - (message "Going with default, saving all text as formatted..."))) - (while args - (funcall retrieval-function (car args)) - (goto-char (point-min)) - (if buffer-read-only (toggle-read-only)) - (insert (format header (car args))) - (setq fname (url-basepath url-current-file t)) - (if (string= file-extn "") nil - (setq fname (url-file-extension fname t))) - (if (string= (url-strip-leading-spaces fname) "") - (setq fname "root")) - (setq curname fname) - (while (file-exists-p (concat curname file-extn)) - (setq curname (concat fname x) - x (1+ x))) - (setq fname (concat curname file-extn)) - (write-region (point-min) (point-max) fname) - (setq args (cdr args))))) - (defun w3-fix-spaces (x) "Remove spaces/tabs at the beginning of a string, and convert newlines into spaces." @@ -915,7 +850,6 @@ "View this document's source" (interactive "P") (let* ((url (if under (w3-view-this-url) (url-view-url t))) - (fil (if under nil url-current-file)) (src (cond ((null url) @@ -928,7 +862,6 @@ (prog2 (url-retrieve url) (buffer-string) - (setq fil (or fil url-current-file)) (kill-buffer (current-buffer)))))) (tmp (url-generate-new-buffer-name url))) (if (and url (get-buffer url)) @@ -1091,10 +1024,12 @@ (save-excursion (set-buffer url-working-buffer) (let ((cont w3-default-continuation) - (extn (url-file-extension url-current-file))) + (extn (url-file-extension + (url-filename url-current-object)))) (if (assoc extn url-uncompressor-alist) (setq extn (url-file-extension - (substring url-current-file 0 (- (length extn)))))) + (substring (url-filename url-current-object) + 0 (- (length extn)))))) (if w3-source (setq url-current-mime-viewer '(("viewer" . w3-source)))) (if (not url-current-mime-viewer) @@ -1117,15 +1052,19 @@ "Do a find-file on the currently viewed html document if it is a file: or ftp: reference" (interactive) - (cond - ((and (or (null url-current-type) (equal url-current-type "file")) - (eq major-mode 'w3-mode)) - (find-file url-current-file)) - ((equal url-current-type "ftp") - (find-file - (format "/%s@%s:%s" url-current-user url-current-server - url-current-file))) - (t (message "Sorry, I can't get that file so you can alter it.")))) + (or url-current-object + (error "Not a URL-based buffer")) + (let ((type (url-type url-current-object))) + (cond + ((equal type "file") + (find-file (url-filename url-current-object))) + ((equal type "ftp") + (find-file + (format "/%s@%s:%s" + (url-user url-current-object) + (url-host url-current-object) + (url-filename url-current-object)))) + (t (message "Sorry, I can't get that file so you can alter it."))))) (defun w3-insert-this-url (pref-arg) "Insert the current url in another buffer, with prefix ARG, @@ -1230,7 +1169,8 @@ (if (not url-current-mime-type) (setq url-current-mime-type (or (mm-extension-to-mime (url-file-extension - url-current-file)) + (url-filename + url-current-object))) "text/html"))))) (if (not (string-match "^www:" (or (url-view-url t) ""))) (w3-convert-code-for-mule url-current-mime-type)) @@ -1570,6 +1510,7 @@ (defun w3-generate-error (type data) ;; Generate an HTML error buffer for error TYPE with data DATA. + (setq url-current-mime-type "text/html") (cond ((equal type "nofile") (let ((error (save-excursion @@ -1645,15 +1586,10 @@ (setq base (url-generic-parse-url base))) (insert-buffer buffer) (if (not base) - (setq url-current-type "file" - url-current-server nil - url-current-file (buffer-file-name buffer)) - (setq url-current-object base - url-current-type (url-type base) - url-current-user (url-user base) - url-current-port (url-port base) - url-current-server (url-host base) - url-current-file (url-filename base))))) + (setq url-current-object + (url-generic-parse-url (concat "file:" + (buffer-file-name buffer)))) + (setq url-current-object base)))) (defun w3-internal-url (url) ;; Handle internal urls (previewed buffers, etc) @@ -1662,9 +1598,6 @@ (let ((type (url-match url 1)) (data (url-match url 2))) (set-buffer (get-buffer-create url-working-buffer)) - (setq url-current-type "www" - url-current-server type - url-current-file data) (cond ((equal type "preview") ; Previewing a document (if (get-buffer data) ; Buffer still exists @@ -1692,7 +1625,7 @@ (defun w3-default-local-file() "Use find-file to open the local file" - (w3-ff url-current-file)) + (w3-ff (url-filename url-current-object))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Mode definition ;;; @@ -1876,12 +1809,7 @@ (w3-fetch (completing-read "Choose an address: " (mapcar 'list possible) nil t (car possible)))))) - (message "Could not automatically determine authors address, sorry.") - (sit-for 1) - (w3-fetch (concat "mailto:" - (read-string "Email address: " - (if url-current-server - (concat "@" url-current-server)))))))) + (message "Could not automatically determine authors address, sorry.")))) (defun w3-kill-emacs-func () "Routine called when exiting emacs. Do miscellaneous clean up." @@ -2191,13 +2119,14 @@ (urlobj (url-generic-parse-url url)) (url-working-buffer (generate-new-buffer (concat " *" url " download*"))) - (stub-fname (url-remove-compressed-extensions - (url-basepath (or (url-filename urlobj) "") t))) - (fname (read-file-name "Filename to save as: " - (or mm-download-directory "~/") - stub-fname - nil - stub-fname))) + (stub-fname (url-basepath (or (url-filename urlobj) "") t)) + (dir (or mm-download-directory "~/")) + (fname (expand-file-name + (read-file-name "Filename to save as: " + dir + stub-fname + nil + stub-fname) dir))) (setq-default url-be-asynchronous t) (save-excursion (set-buffer url-working-buffer) @@ -2292,8 +2221,15 @@ (substring link-at-point 0 17) "...")) "): ") "Link: ") links-alist nil t)) - (if (setq choice (try-completion choice links-alist)) - (w3-fetch (cdr (assoc choice links-alist)))))) + (let ((match (try-completion choice links-alist))) + (cond + ((eq t match) ; We have an exact match + (setq choice (cdr (assoc choice links-alist)))) + ((stringp match) + (setq choice (cdr (assoc match links-alist)))) + (t (setq choice nil))) + (if choice + (w3-fetch choice))))) (defun w3-mode () "Mode for viewing HTML documents. If called interactively, will @@ -2320,7 +2256,7 @@ inhibit-read-only nil truncate-lines t mode-line-format w3-modeline-format) - (if (and w3-current-isindex (equal url-current-type "http")) + (if w3-current-isindex (setq mode-line-process "-Searchable"))))) (require 'mm)
--- a/lisp/x11/x-faces.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/x11/x-faces.el Mon Aug 13 08:51:32 2007 +0200 @@ -495,7 +495,7 @@ (or (face-foreground 'default 'global) (set-face-foreground 'default "black" 'global 'x)) (or (face-background 'default 'global) - (set-face-background 'default "white" 'global 'x))) + (set-face-background 'default "gray80" 'global 'x))) ;;; x-init-device-faces is responsible for initializing default ;;; values for faces on a newly created device. @@ -577,8 +577,8 @@ (progn (or fg (set-face-foreground 'default "white" device)) (or bg (set-face-background 'default "black" device))) - (or fg (set-face-foreground 'default "black" device)) - (or bg (set-face-background 'default "white" device))))) + (or fg (set-face-foreground 'default "white" device)) + (or bg (set-face-background 'default "black" device))))) ;; Don't look at reverseVideo now or initialize the modeline. This ;; is done on a per-frame basis at the appropriate time.
--- a/lisp/x11/x-menubar.el Mon Aug 13 08:51:05 2007 +0200 +++ b/lisp/x11/x-menubar.el Mon Aug 13 08:51:32 2007 +0200 @@ -179,9 +179,6 @@ (read-expression "Switches for `lpr'/`lp': " (format "%S" lpr-switches))) t] - ["Pretty-Print With Color" - (setq ps-print-color-p (not ps-print-color-p)) - :style toggle :selected ps-print-color-p] ("Pretty-Print Paper Size" ["Letter" (setq ps-paper-type 'letter) @@ -232,6 +229,11 @@ :style radio :selected (eq ps-paper-type 'b5)] ) + ["Enable Color Printing" + (progn + (set-face-background 'default "white") + (setq ps-print-color-p t)) + t] ) ("\"Other Window\" Location" ["Always in Same Frame" @@ -548,7 +550,7 @@ :selected (eq browse-url-browser-function 'browse-url-grail)] ) "-----" - ["Edit Faces..." edit-faces t] + ["Edit Faces..." cu-edit-faces t] ("Font" :filter font-menu-family-constructor) ("Size" :filter font-menu-size-constructor) ("Weight" :filter font-menu-weight-constructor) @@ -594,7 +596,7 @@ ["Splash" xemacs-splash-buffer t]) "-----" ("XEmacs FAQ" - ["FAQ)" xemacs-local-faq t] + ["FAQ (local)" xemacs-local-faq t] ["FAQ via WWW" xemacs-www-faq t] ["Home Page" xemacs-www-page t]) ("Samples" @@ -1012,6 +1014,12 @@ ;;; The Options menu (defvar save-options-font-hack nil) +(defvar options-save-faces nil + "if t, save-options will save all the face information. +Set to nil to avoid this. This is recommended on XEmacs 19.15 +and above as we have a much more powerful (read: working) way +of changing and saving faces via cu-edit-faces.el & custom.el.") + (defconst options-menu-saved-forms ;; This is really quite a kludge, but it gets the job done. ;; @@ -1138,30 +1146,31 @@ ;; Setting this in lisp conflicts with X resources. Bad move. --Stig ;; (list 'set-face-font ''default (face-font-name 'default)) ;; (list 'set-face-font ''modeline (face-font-name 'modeline)) - - (cons 'progn - (mapcar #'(lambda (face) - `(make-face ',face)) - (face-list))) - - (cons 'progn - (apply 'nconc - (mapcar - #'(lambda (face) - (delq nil - (mapcar - #'(lambda (property) - (if (specifier-spec-list - (face-property face property)) - `(add-spec-list-to-specifier - (face-property ',face ',property) - ',(save-options-specifier-spec-list - face property)))) - (delq 'display-table - (copy-sequence - built-in-face-specifiers))))) - (face-list)))) - + (if options-save-faces + (cons 'progn + (mapcar #'(lambda (face) + `(make-face ',face)) + (face-list)))) + + (if options-save-faces + (cons 'progn + (apply 'nconc + (mapcar + #'(lambda (face) + (delq nil + (mapcar + #'(lambda (property) + (if (specifier-spec-list + (face-property face property)) + `(add-spec-list-to-specifier + (face-property ',face ',property) + ',(save-options-specifier-spec-list + face property)))) + (delq 'display-table + (copy-sequence + built-in-face-specifiers))))) + (face-list))))) + )) "The variables to save; or forms to evaluate to get forms to write out. This is used by `save-options-menu-settings' and should mirror the
--- a/lwlib/xlwscrollbar.c Mon Aug 13 08:51:05 2007 +0200 +++ b/lwlib/xlwscrollbar.c Mon Aug 13 08:51:32 2007 +0200 @@ -1,5 +1,6 @@ /* Implements a lightweight scrollbar widget. Copyright (C) 1992, 1993, 1994 Lucid, Inc. + Copyright (C) 1997 Sun Microsystems, Inc. This file is part of the Lucid Widget Library. @@ -19,6 +20,7 @@ Boston, MA 02111-1307, USA. */ /* Created by Douglas Keller <dkeller@vnet.ibm.com> */ +/* Lots of hacking by Martin Buchholz */ /* * Athena-style scrollbar button bindings added on Sun Dec 24 22:03:57 1995 @@ -61,7 +63,7 @@ * XmNtoBottomCallback * XmNdragCallback * - * XmNknobStyle - values can be: "plain" or "dimple" + * XmNsliderStyle - values can be: "plain" or "dimple" * XmNarrowPosition - values can be: "opposite" or "same" * */ @@ -86,33 +88,23 @@ #define SS_MIN 8 -#define ARROW_UP 0 -#define ARROW_DOWN 1 -#define ARROW_LEFT 2 -#define ARROW_RIGHT 3 - -#define ARM_NONE 0 -#define ARM_KNOB 1 -#define ARM_UP 2 -#define ARM_DOWN 3 -#define ARM_PAGEUP 4 -#define ARM_PAGEDOWN 5 +typedef enum +{ + BUTTON_NONE, + BUTTON_SLIDER, + BUTTON_UP_ARROW, + BUTTON_DOWN_ARROW, + BUTTON_TROUGH_ABOVE, + BUTTON_TROUGH_BELOW +} button_where; -#define BUTTON_NONE 0 -#define BUTTON_KNOB 1 -#define BUTTON_UP_ARROW 2 -#define BUTTON_DOWN_ARROW 3 -#define BUTTON_TROUGH_ABOVE 4 -#define BUTTON_TROUGH_BELOW 5 +typedef enum +{ + SLIDER_PLAIN, + SLIDER_DIMPLE +} SliderStyle; -#define KNOB_PLAIN 0 -#define KNOB_DIMPLE 1 - -/************************************************************************ -** -** Resources -** -*/ +/*-------------------------- Resources ----------------------------------*/ #define offset(field) XtOffset(XlwScrollBarWidget, field) static XtResource resources[] = { @@ -189,33 +181,23 @@ { XmNdragCallback, XmCDragCallback, XtRCallback, sizeof(XtPointer), offset(sb.dragCBL), XtRCallback, NULL}, + /* "knob" is obsolete; use "slider" instead. */ + { XmNsliderStyle, XmCSliderStyle, XtRString, sizeof(char *), + offset(sb.sliderStyle), XtRImmediate, NULL}, { XmNknobStyle, XmCKnobStyle, XtRString, sizeof(char *), - offset(sb.knobStyle), XtRImmediate, NULL}, + offset(sb.sliderStyle), XtRImmediate, NULL}, { XmNarrowPosition, XmCArrowPosition, XtRString, sizeof(char *), offset(sb.arrowPosition), XtRImmediate, NULL}, }; -/************************************************************************ -** -** Prototypes -** -*/ +/*-------------------------- Prototypes ---------------------------------*/ -/* -** Actions -*/ -static void Select(Widget w, XEvent *event, String *parms, Cardinal *num_parms); -static void PageUpOrLeft(Widget w, XEvent *event, String *parms, Cardinal *num_parms); -static void PageDownOrRight(Widget w, XEvent *event, String *parms, Cardinal *num_parms); -static void Drag(Widget w, XEvent *event, String *parms, Cardinal *num_parms); -static void Release(Widget w, XEvent *event, String *parms, Cardinal *num_parms); -static void Jump(Widget w, XEvent *event, String *parms, Cardinal *num_parms); -static void Abort(Widget w, XEvent *event, String *parms, Cardinal *num_parms); +/* Actions */ +typedef void Action(Widget w, XEvent *event, String *parms, Cardinal *num_parms); +static Action Select, PageUpOrLeft, PageDownOrRight, Drag, Release, Jump, Abort; -/* -** Methods -*/ +/* Methods */ static void Initialize(Widget treq, Widget tnew, ArgList args, Cardinal *num_args); static Boolean SetValues(Widget current, Widget request, Widget nw, ArgList args, Cardinal *num_args); static void Destroy(Widget widget); @@ -223,46 +205,32 @@ static void Resize(Widget widget); static void Realize(Widget widget, XtValueMask *valuemask, XSetWindowAttributes *attr); -/* -** Private -*/ - +/* Private */ -/************************************************************************ -** -** Actions Table -** -*/ -static XtActionsRec actions[] = { - {"Select", Select}, - {"PageDownOrRight", PageDownOrRight}, - {"PageUpOrLeft", PageUpOrLeft}, - {"Drag", Drag}, - {"Release", Release}, - {"Jump", Jump}, - {"Abort", Abort}, +/*-------------------------- Actions Table ------------------------------*/ +static XtActionsRec actions[] = +{ + {"Select", Select}, + {"PageDownOrRight", PageDownOrRight}, + {"PageUpOrLeft", PageUpOrLeft}, + {"Drag", Drag}, + {"Release", Release}, + {"Jump", Jump}, + {"Abort", Abort}, }; -/************************************************************************ -** -** Default Translation Table -** -*/ +/*--------------------- Default Translation Table -----------------------*/ static char default_translations[] = - "<Btn1Down>: Select()\n" - "<Btn1Motion>: Drag()\n" - "<Btn1Up>: Release()\n" - "<Btn2Down>: Jump()\n" - "<Btn2Motion>: Drag()\n" - "<Btn2Up>: Release()\n" - "<Key>Delete: Abort()" + "<Btn1Down>: Select()\n" + "<Btn1Motion>: Drag()\n" + "<Btn1Up>: Release()\n" + "<Btn2Down>: Jump()\n" + "<Btn2Motion>: Drag()\n" + "<Btn2Up>: Release()\n" + "<Key>Delete: Abort()" ; -/************************************************************************ -** -** Class record initalization -** -*/ +/*------------------- Class record initialization -----------------------*/ XlwScrollBarClassRec xlwScrollBarClassRec = { /* core_class fields */ { @@ -305,11 +273,7 @@ WidgetClass xlwScrollBarWidgetClass = (WidgetClass) &xlwScrollBarClassRec; -/************************************************************************ -** -** Debug functions -** -*/ +/*-------------------------- Debug Functions ----------------------------*/ #ifdef SHOW_CLEAR static void @@ -329,15 +293,13 @@ static void check(XlwScrollBarWidget w) { - int height; - - height= widget_h (w); - if (w->sb.showArrows) height -= (2 * arrow_h (w)); + int height = widget_h (w); + if (w->sb.showArrows) + height -= (2 * arrow_h (w)); if ((w->sb.above + w->sb.ss + w->sb.below > height) || (w->sb.value < w->sb.minimum) || - (w->sb.value > w->sb.maximum - w->sb.sliderSize) - ) + (w->sb.value > w->sb.maximum - w->sb.sliderSize)) { printf("above=%d ss=%d below=%d height=%d\n", w->sb.above, w->sb.ss, w->sb.below, height); @@ -353,11 +315,7 @@ # define CHECK(w) #endif -/************************************************************************ -** -** Static functions -** -*/ +/*-------------------------- Static functions ---------------------------*/ static void call_callbacks (XlwScrollBarWidget w, int reason, @@ -437,9 +395,8 @@ } } -/* -** Widget sizes minus the shadow and highlight area -*/ +/* Widget sizes minus the shadow and highlight area */ + static int widget_x (XlwScrollBarWidget w) { @@ -455,41 +412,26 @@ static int widget_w (XlwScrollBarWidget w) { - int width, x = w->sb.shadowThickness; - - width = VERT (w) ? w->core.width : w->core.height; - - if (width <= (2 * x)) - return 1; - else - return width - (2 * x); + int x = w->sb.shadowThickness; + int width = (VERT (w) ? w->core.width : w->core.height) - (2 * x); + return width > 1 ? width : 1; } static int widget_h (XlwScrollBarWidget w) { - int height, y = w->sb.shadowThickness; - - height = VERT (w) ? w->core.height : w->core.width; + int y = w->sb.shadowThickness; + int height = (VERT (w) ? w->core.height : w->core.width) - (2 * y); - if (height <= (2 * y)) - return 1; - else - return height - (2 * y); + return height > 1 ? height : 1; } static int arrow_h (XlwScrollBarWidget w) { - int width, height; - - width = widget_w (w); - height= widget_h (w); - - if (width > ((height / 2) - (SS_MIN / 2) - 1)) - return (height / 2) - (SS_MIN / 2) - 1 ; - else - return width; + int width = widget_w (w); + int minimum_size = ((widget_h (w) - SS_MIN) / 2) - 1; + return minimum_size < width ? minimum_size : width; } static int @@ -504,29 +446,29 @@ return VERT (w) ? event->xbutton.y : event->xbutton.x; } -/* -** Safe addition and subtraction -*/ -static int -safe_add (int a, int b) +/* Safe addition and subtraction */ +static void +increment_value (XlwScrollBarWidget w, int diff) { - if (a > 0 && INT_MAX - a < b) return INT_MAX; - else return a + b; + w->sb.value = w->sb.maximum - diff < w->sb.value ? + w->sb.maximum : + w->sb.value + diff; } -static int -safe_subtract (int a, int b) +static void +decrement_value (XlwScrollBarWidget w, int diff) { - if (a < 0 && -(INT_MIN - a) < b) return INT_MIN; - else return a - b; + w->sb.value = w->sb.minimum + diff > w->sb.value ? + w->sb.minimum : + w->sb.value - diff; } -static int -knob_style (XlwScrollBarWidget w) +static SliderStyle +slider_style (XlwScrollBarWidget w) { - return w->sb.knobStyle && w->sb.knobStyle[0] == 'd' ? - KNOB_DIMPLE : - KNOB_PLAIN; + return w->sb.sliderStyle && w->sb.sliderStyle[0] == 'd' ? + SLIDER_DIMPLE : + SLIDER_PLAIN; } static Boolean @@ -535,9 +477,7 @@ return w->sb.arrowPosition && w->sb.arrowPosition[0] == 's' ? True : False; } -/* -** GC and Pixel allocation -*/ +/*-------------------------- GC and Pixel allocation --------------------*/ static GC get_gc (XlwScrollBarWidget w, Pixel fg, Pixel bg, Pixmap pm) { @@ -559,8 +499,8 @@ values.background = bg; values.fill_style = FillOpaqueStippled; values.stipple = pm; - mask = GCForeground | GCBackground | - (pm == None ? 0 : GCStipple | GCFillStyle); + mask = GCForeground | GCBackground | + (pm == None ? 0 : GCStipple | GCFillStyle); return XtGetGC((Widget) w, mask, &values); } @@ -716,7 +656,7 @@ * really in color but just short on color cells -- We want the * following behavior, which has been empirically determined to * work well for all fg/bg combinations in mono: If the trough - * and thumb are BOTH black, then use a white top shadow and a + * and slider are BOTH black, then use a white top shadow and a * grey bottom shadow, otherwise use a grey top shadow and a * black bottom shadow. */ @@ -724,7 +664,7 @@ Pixel white = WhitePixelOfScreen (DefaultScreenOfDisplay (XtDisplay (w))); Pixel black = BlackPixelOfScreen (DefaultScreenOfDisplay (XtDisplay (w))); - /* Note: core.background_pixel is the color of the thumb ... */ + /* Note: core.background_pixel is the color of the slider ... */ if (w->core.background_pixel == black && w->sb.troughColor == black) @@ -759,9 +699,7 @@ } } -/* -** Draw 3d border -*/ +/*-------------------------- Draw 3D Border -----------------------------*/ static void draw_shadows (Display *dpy, Drawable d, GC shine_gc, GC shadow_gc, int x, int y, int width, int height, int shadowT) @@ -798,20 +736,18 @@ XDrawSegments (dpy, d, shadow_gc, shadow, shadowT * 2); } -/* -** Draw 3d arrows, left, up, down, and right -*/ +/*------------------ Draw 3D Arrows: left, up, down, right --------------*/ static int make_vert_seg (XSegment *seg, int x1, int y1, int x2, int y2, int shadowT) { int i; - for (i=0; i<shadowT; i++) + for (i=0; i<shadowT; i++, seg++) { - seg[i].x1 = x1; - seg[i].y1 = y1 + i; - seg[i].x2 = x2; - seg[i].y2 = y2 + i; + seg->x1 = x1; + seg->y1 = y1++; + seg->x2 = x2; + seg->y2 = y2++; } return shadowT; } @@ -821,12 +757,12 @@ { int i; - for (i=0; i<shadowT; i++) + for (i=0; i<shadowT; i++, seg++) { - seg[i].x1 = x1 + i; - seg[i].y1 = y1; - seg[i].x2 = x2 + i; - seg[i].y2 = y2; + seg->x1 = x1++; + seg->y1 = y1; + seg->x2 = x2++; + seg->y2 = y2; } return shadowT; } @@ -843,18 +779,18 @@ if (shadowT > (width / 2)) shadowT = (width / 2); if (shadowT > (height / 2)) shadowT = (height / 2); - if (shadowT <= 0) shadowT = 0; + if (shadowT < 0) shadowT = 0; /* / */ make_vert_seg (shine, - x, y + height - shadowT - 1, + x, y + height - shadowT - 1, x + mid, y, shadowT); /* _\ */ make_vert_seg (shadow, - x, y + height - shadowT - 1, + x, y + height - shadowT - 1, x + width - 1, y + height - shadowT - 1, shadowT); make_vert_seg (shadow + shadowT, - x + mid, y, + x + mid, y, x + width - 1, y + height - shadowT - 1, shadowT); triangle[0].x = x; @@ -876,21 +812,20 @@ { XSegment shine[10], shadow[10]; XPoint triangle[3]; - int mid; - mid = width / 2; + int mid = width / 2; if (shadowT > (width / 2)) shadowT = (width / 2); if (shadowT > (height / 2)) shadowT = (height / 2); - if (shadowT <= 0) shadowT = 0; + if (shadowT < 0) shadowT = 0; /* / */ make_hor_seg (shine, - x, y + mid, + x, y + mid, x + width - shadowT - 1, y, shadowT); /* \| */ make_hor_seg (shadow, - x, y + mid, + x, y + mid, x + width - shadowT - 1, y + height - 1, shadowT); make_hor_seg (shadow + shadowT, x + width - shadowT - 1, y, @@ -921,19 +856,19 @@ if (shadowT > (width / 2)) shadowT = (width / 2); if (shadowT > (height / 2)) shadowT = (height / 2); - if (shadowT <= 0) shadowT = 0; + if (shadowT < 0) shadowT = 0; /* \- */ make_vert_seg (shine, - x, y, + x, y, x + mid, y + height - shadowT - 1, shadowT); make_vert_seg (shine + shadowT, - x, y, + x, y, x + width - 1, y, shadowT); /* / */ make_vert_seg (shadow, x + width - 1, y, - x + mid, y + height - shadowT - 1, shadowT); + x + mid, y + height - shadowT - 1, shadowT); triangle[0].x = x; triangle[0].y = y; @@ -960,23 +895,23 @@ if (shadowT > (width / 2)) shadowT = (width / 2); if (shadowT > (height / 2)) shadowT = (height / 2); - if (shadowT <= 0) shadowT = 0; + if (shadowT < 0) shadowT = 0; /* |\ */ make_hor_seg (shine, - x, y, + x, y, x + width - shadowT - 1, y + mid, shadowT); make_hor_seg (shine + shadowT, x, y, - x, y + height -1, shadowT); + x, y + height - 1, shadowT); /* / */ make_hor_seg (shadow, - x, y + height -1, + x, y + height - 1, x + width - shadowT - 1, y + mid, shadowT); triangle[0].x = x + 1; triangle[0].y = y + height - 1; - triangle[1].x = x + width - 1; + triangle[1].x = x + width - 1; triangle[1].y = y + mid; triangle[2].x = x + 1; triangle[2].y = y; @@ -995,9 +930,7 @@ XDrawArc (dpy, win, shadow, x, y, width, height, 45*64, -179*64); } -/* -** Scrollbar values -> pixels, pixels -> scrollbar values -*/ +/*------- Scrollbar values -> pixels, pixels -> scrollbar values --------*/ static void seg_pixel_sizes (XlwScrollBarWidget w, int *above_return, @@ -1019,14 +952,14 @@ above = ((height * value + fuz) / total); below = ((height) - (ss + above)); - /* Dont' let knob get smaller than SS_MIN */ + /* Don't let slider get smaller than SS_MIN */ if (ss < SS_MIN) { /* add a percent amount for integer rounding */ float tmp = ((((float) (SS_MIN - ss) * (float) value)) / total) + 0.5; above -= (int) tmp; - ss = SS_MIN; + ss = SS_MIN; below = ((height) - (ss + above)); if (above < 0) @@ -1071,8 +1004,11 @@ if (w->sb.value < w->sb.minimum) w->sb.value = w->sb.minimum; - if (w->sb.value > w->sb.maximum - w->sb.sliderSize) - w->sb.value = w->sb.maximum - w->sb.sliderSize; + if (w->sb.value > w->sb.maximum) + w->sb.value = w->sb.maximum; + + if (w->sb.sliderSize > w->sb.maximum - w->sb.value) + w->sb.sliderSize = w->sb.maximum - w->sb.value; } static int @@ -1081,8 +1017,9 @@ float total, height, fuz; int value, ss; - height= widget_h (w); - if (w->sb.showArrows) height -= (2 * arrow_h (w)); + height = widget_h (w); + if (w->sb.showArrows) + height -= (2 * arrow_h (w)); total = w->sb.maximum - w->sb.minimum; fuz = height / 2; @@ -1114,23 +1051,13 @@ redraw_dimple (XlwScrollBarWidget w, Display *dpy, Window win, int x, int y, int width, int height) { - GC shine, shadow; - int shadowT, size; - - if (KNOB_DIMPLE == knob_style (w)) + if (SLIDER_DIMPLE == slider_style (w)) { - if (w->sb.armed == ARM_KNOB) - { - shine = w->sb.bottomShadowGC; - shadow = w->sb.topShadowGC; - } - else - { - shine = w->sb.topShadowGC; - shadow = w->sb.bottomShadowGC; - } - - shadowT = w->sb.shadowThickness; + int size; + int slider_p = (w->sb.armed == ARM_SLIDER); + GC shine = slider_p ? w->sb.bottomShadowGC : w->sb.topShadowGC; + GC shadow = slider_p ? w->sb.topShadowGC : w->sb.bottomShadowGC; + int shadowT = w->sb.shadowThickness; x += shadowT; y += shadowT; @@ -1153,59 +1080,58 @@ } static void -draw_knob (XlwScrollBarWidget w, int above, int ss, int below) +draw_slider (XlwScrollBarWidget w, int above, int ss, int below) { Display *dpy = XtDisplay ((Widget) w); Window win = XtWindow ((Widget) w); - int x, y, width, height; - int shadowT; - x = widget_x (w); - y = widget_y (w); - width = widget_w (w); - height = widget_h (w); - - shadowT = w->sb.shadowThickness; + int x = widget_x (w); + int y = widget_y (w); + int width = widget_w (w); + int height = widget_h (w); + int shadowT = w->sb.shadowThickness; + int vert_p = VERT (w); if (shadowT > (width / 2)) shadowT = (width / 2); if (shadowT > (height / 2)) shadowT = (height / 2); - if (shadowT <= 0) return; + if (shadowT < 0) shadowT = 0; - if (w->sb.showArrows && !arrow_same_end (w)) y += arrow_h (w); + if (w->sb.showArrows && !arrow_same_end (w)) + y += arrow_h (w); - /* trough above knob */ + /* trough above slider */ if (above > 0) { - if (VERT (w)) + if (vert_p) XClearArea (dpy, win, x, y, width, above, False); else XClearArea (dpy, win, y, x, above, width, False); } - /* knob */ - if (VERT (w)) + /* slider */ + if (vert_p) { draw_shadows (dpy, win, w->sb.topShadowGC, w->sb.bottomShadowGC, x, y + above, width, ss, shadowT); - XFillRectangle (dpy, win, - w->sb.backgroundGC, - x+shadowT, y + above + shadowT, width-2*shadowT, ss-2*shadowT); + XFillRectangle (dpy, win, w->sb.backgroundGC, + x+shadowT, y + above + shadowT, + width-2*shadowT, ss-2*shadowT); redraw_dimple (w, dpy, win, x, y + above, width, ss); } else { draw_shadows (dpy, win, w->sb.topShadowGC, w->sb.bottomShadowGC, y + above, x, ss, width, shadowT); - XFillRectangle (dpy, win, - w->sb.backgroundGC, - y + above + shadowT, x+shadowT, ss-2*shadowT, width-2*shadowT); + XFillRectangle (dpy, win, w->sb.backgroundGC, + y + above + shadowT, x+shadowT, + ss-2*shadowT, width-2*shadowT); redraw_dimple (w, dpy, win, y + above, x, ss, width); } - /* trough below knob */ + /* trough below slider */ if (below > 0) { - if (VERT (w)) + if (vert_p) XClearArea (dpy, win, x, y + above + ss, width, below, False); else XClearArea (dpy, win, y + above + ss, x, below, width, False); @@ -1219,35 +1145,22 @@ { Display *dpy = XtDisplay ((Widget) w); Window win = XtWindow ((Widget) w); - GC bg, shine, shadow; - int x, y, width, height, arrow_height, shadowT; - - x = widget_x (w); - y = widget_y (w); - width = widget_w (w); - height = widget_h (w); - arrow_height = arrow_h (w); - shadowT = w->sb.shadowThickness; - bg = w->sb.backgroundGC; + int x = widget_x (w); + int y = widget_y (w); + int width = widget_w (w); + int height = widget_h (w); + int shadowT = w->sb.shadowThickness; + int arrow_height = arrow_h (w); - if (armed) - { - shine = w->sb.bottomShadowGC; - shadow = w->sb.topShadowGC; - } - else - { - shine = w->sb.topShadowGC; - shadow = w->sb.bottomShadowGC; - } + GC bg = w->sb.backgroundGC; + GC shine = armed ? w->sb.bottomShadowGC : w->sb.topShadowGC; + GC shadow = armed ? w->sb.topShadowGC : w->sb.bottomShadowGC; if (VERT (w)) { if (arrow_same_end (w)) - { - y += height - 2 * arrow_h (w) + 2; - } + y += height - 2 * arrow_height; if (clear_behind) XClearArea (dpy, win, x, y, width, arrow_height + 1, False); draw_arrow_up (dpy, win, bg, shine, shadow, @@ -1257,9 +1170,7 @@ else { if (arrow_same_end (w)) - { - y += height - 2 * arrow_h (w); - } + y += height - 2 * arrow_height; if (clear_behind) XClearArea (dpy, win, y, x, arrow_height + 1, height, False); draw_arrow_left (dpy, win, bg, shine, shadow, @@ -1273,28 +1184,17 @@ { Display *dpy = XtDisplay ((Widget) w); Window win = XtWindow ((Widget) w); - GC bg, shine, shadow; - int x, y, width, height, arrow_height, shadowT; - - x = widget_x (w); - y = widget_y (w); - width = widget_w (w); - height = widget_h (w); - arrow_height = arrow_h (w); - shadowT = w->sb.shadowThickness; - bg = w->sb.backgroundGC; + int x = widget_x (w); + int y = widget_y (w); + int width = widget_w (w); + int height = widget_h (w); + int shadowT = w->sb.shadowThickness; + int arrow_height = arrow_h (w); - if (armed) - { - shine = w->sb.bottomShadowGC; - shadow = w->sb.topShadowGC; - } - else - { - shine = w->sb.topShadowGC; - shadow = w->sb.bottomShadowGC; - } + GC bg = w->sb.backgroundGC; + GC shine = armed ? w->sb.bottomShadowGC : w->sb.topShadowGC; + GC shadow = armed ? w->sb.topShadowGC : w->sb.bottomShadowGC; if (VERT (w)) { @@ -1323,48 +1223,49 @@ { Display *dpy = XtDisplay ((Widget) w); Window win = XtWindow ((Widget) w); - int x, y, width, height, shadowT, tmp; - - x = widget_x (w); - y = widget_y (w); - width = widget_w (w); - height = widget_h (w); - shadowT = w->sb.shadowThickness; if (w->sb.showArrows) { - if (region == NULL || XRectInRegion (region, x, y, width, width)) + if (region == NULL) { - redraw_up_arrow (w, False, behind_arrows); - } - if (VERT (w)) - { - y = y + height - width + 1; + redraw_up_arrow (w, False, behind_arrows); + redraw_down_arrow (w, False, behind_arrows); } else { - tmp = y; - y = x; - x = tmp + height - width + 1; - } - if (region == NULL || XRectInRegion (region, x, y, width, width)) - { - redraw_down_arrow (w, False, behind_arrows); + int x = widget_x (w); + int y = widget_y (w); + int width = widget_w (w); + int height = widget_h (w); + int arrow_height = arrow_h (w); + int ax = x, ay = y; + + if (arrow_same_end (w)) + { + if (VERT (w)) + ay = y + height - arrow_height - arrow_height; + else + ax = x + height - arrow_height - arrow_height; + } + if (XRectInRegion (region, ax, ay, width, width)) + redraw_up_arrow (w, False, behind_arrows); + + if (VERT (w)) + ay = y + height - arrow_height; + else + ax = x + height - arrow_height; + if (XRectInRegion (region, ax, ay, width, width)) + redraw_down_arrow (w, False, behind_arrows); } } - draw_shadows (dpy, win, w->sb.bottomShadowGC, w->sb.topShadowGC, - 0, 0, w->core.width, w->core.height, shadowT); + draw_shadows (dpy, win, w->sb.bottomShadowGC, w->sb.topShadowGC, 0, 0, + w->core.width, w->core.height, w->sb.shadowThickness); - draw_knob (w, w->sb.above, w->sb.ss, w->sb.below); - + draw_slider (w, w->sb.above, w->sb.ss, w->sb.below); } -/************************************************************************ -** -** Method functions -** -*/ +/*-------------------------- Method Functions ---------------------------*/ static void Initialize (Widget treq, Widget tnew, ArgList args, Cardinal *num_args) @@ -1374,8 +1275,6 @@ Display *dpy = XtDisplay ((Widget) w); Window win = RootWindowOfScreen (DefaultScreenOfDisplay (dpy)); - DBUG (fprintf (stderr, "Initialize\n")); - if (request->core.width == 0) w->core.width += (VERT (w) ? 12 : 25); if (request->core.height == 0) w->core.height += (VERT (w) ? 25 : 12); @@ -1386,6 +1285,7 @@ w->sb.ss = 0; w->sb.below = 0; w->sb.armed = ARM_NONE; + w->sb.forced_scroll = FORCED_SCROLL_NONE; if (w->sb.shadowThickness > 5) w->sb.shadowThickness = 5; @@ -1417,8 +1317,6 @@ XlwScrollBarWidget w = (XlwScrollBarWidget) widget; Display *dpy = XtDisplay ((Widget) w); - DBUG (fprintf (stderr, "Destroy\n")); - XtReleaseGC (widget, w->sb.bottomShadowGC); XtReleaseGC (widget, w->sb.topShadowGC); XtReleaseGC (widget, w->sb.backgroundGC); @@ -1426,7 +1324,10 @@ XFreePixmap (dpy, w->sb.grayPixmap); if (w->sb.timerActive) - XtRemoveTimeOut (w->sb.timerId); + { + XtRemoveTimeOut (w->sb.timerId); + w->sb.timerActive = False; /* Should be a no-op, but you never know */ + } } static void @@ -1437,8 +1338,6 @@ Window win; XSetWindowAttributes win_attr; - DBUG (fprintf (stderr, "Realize\n")); - (*coreClassRec.core_class.realize)(widget, valuemask, attr); win = XtWindow ((Widget) w); @@ -1448,7 +1347,7 @@ XSetWindowBackground (dpy, win, w->sb.troughColor); /* Change bit gravity so widget is not cleared on resize */ - win_attr.bit_gravity = NorthWestGravity; + win_attr.bit_gravity = NorthWestGravity; XChangeWindowAttributes (dpy, win, CWBitGravity , &win_attr); } @@ -1466,11 +1365,17 @@ seg_pixel_sizes (w, &w->sb.above, &w->sb.ss, &w->sb.below); - /*redraw_everything(w, NULL, True);*/ + /* redraw_everything (w, NULL, True); */ w->sb.fullRedrawNext = True; /* Force expose event */ - XClearArea (dpy, win, widget_x(w), widget_y(w), 1, 1, True); + XClearArea (dpy, win, widget_x (w), widget_y (w), 1, 1, True); + } + + if (w->sb.timerActive) + { + XtRemoveTimeOut (w->sb.timerId); + w->sb.timerActive = False; } } @@ -1484,13 +1389,9 @@ if (XtIsRealized (widget)) { if (w->sb.fullRedrawNext) - { - redraw_everything (w, NULL, True); - } + redraw_everything (w, NULL, True); else - { - redraw_everything (w, region, False); - } + redraw_everything (w, region, False); w->sb.fullRedrawNext = False; } } @@ -1542,9 +1443,7 @@ } if (cur->sb.orientation != w->sb.orientation) - { - do_redisplay = True; - } + do_redisplay = True; if (cur->sb.minimum != w->sb.minimum || @@ -1558,7 +1457,7 @@ if (XtIsRealized ((Widget) w)) { seg_pixel_sizes (w, &w->sb.above, &w->sb.ss, &w->sb.below); - draw_knob (w, w->sb.above, w->sb.ss, w->sb.below); + draw_slider (w, w->sb.above, w->sb.ss, w->sb.below); } } @@ -1587,7 +1486,6 @@ int increment, int pageIncrement, Boolean notify) { XlwScrollBarWidget w = (XlwScrollBarWidget) widget; - int last_value; if (w && XtClass ((Widget) w) == xlwScrollBarWidgetClass && (w->sb.value != value || @@ -1595,6 +1493,8 @@ w->sb.increment != increment || w->sb.pageIncrement != pageIncrement)) { + int last_value = w->sb.value; + w->sb.value = value; w->sb.sliderSize = sliderSize; w->sb.increment = increment; @@ -1605,55 +1505,43 @@ if (XtIsRealized (widget)) { seg_pixel_sizes (w, &w->sb.above, &w->sb.ss, &w->sb.below); - draw_knob (w, w->sb.above, w->sb.ss, w->sb.below); - - last_value = w->sb.value; - w->sb.value = value_from_pixel (w, w->sb.above); - verify_values (w); + draw_slider (w, w->sb.above, w->sb.ss, w->sb.below); if (w->sb.value != last_value && notify) - { - call_callbacks (w, XmCR_VALUE_CHANGED, w->sb.value, 0, NULL); - } + call_callbacks (w, XmCR_VALUE_CHANGED, w->sb.value, 0, NULL); } } } -/************************************************************************ -** -** Action functions -** -*/ +/*-------------------------- Action Functions ---------------------------*/ static void timer (XtPointer data, XtIntervalId *id) { XlwScrollBarWidget w = (XlwScrollBarWidget) data; - int reason, last_value; - w->sb.timerActive = False; if (w->sb.armed != ARM_NONE) { - last_value = w->sb.value; - reason = XmCR_NONE; + int last_value = w->sb.value; + int reason = XmCR_NONE; switch (w->sb.armed) { case ARM_PAGEUP: - w->sb.value = safe_subtract (w->sb.value, w->sb.pageIncrement); + decrement_value (w, w->sb.pageIncrement); reason = XmCR_PAGE_DECREMENT; break; case ARM_PAGEDOWN: - w->sb.value = safe_add (w->sb.value, w->sb.pageIncrement); + increment_value (w, w->sb.pageIncrement); reason = XmCR_PAGE_INCREMENT; break; case ARM_UP: - w->sb.value = safe_subtract (w->sb.value, w->sb.increment); + decrement_value (w, w->sb.increment); reason = XmCR_DECREMENT; break; case ARM_DOWN: - w->sb.value = safe_add (w->sb.value, w->sb.increment); + increment_value (w, w->sb.increment); reason = XmCR_INCREMENT; break; } @@ -1663,7 +1551,7 @@ if (last_value != w->sb.value) { seg_pixel_sizes (w, &w->sb.above, &w->sb.ss, &w->sb.below); - draw_knob (w, w->sb.above, w->sb.ss, w->sb.below); + draw_slider (w, w->sb.above, w->sb.ss, w->sb.below); call_callbacks (w, reason, w->sb.value, 0, NULL); @@ -1676,180 +1564,97 @@ } } -static int +static button_where what_button (XlwScrollBarWidget w, int mouse_x, int mouse_y) { - int x, y, width, height, arrow_height_top, arrow_height_bottom; - int where; + int width = widget_w (w); + int height = widget_h (w); + int arrow_height = arrow_h (w); - x = widget_x (w); - y = widget_y (w); - width = widget_w (w); - height = widget_h (w); + mouse_x -= widget_x (w); + mouse_y -= widget_y (w); -#if 0 - arrow_height = w->sb.showArrows ? arrow_h (w) : 0; -#endif + if (mouse_x < 0 || mouse_x >= width || + mouse_y < 0 || mouse_y >= height) + return BUTTON_NONE; + if (w->sb.showArrows) { + if (mouse_y >= (height -= arrow_height)) + return BUTTON_DOWN_ARROW; + if (arrow_same_end (w)) { - arrow_height_top = 0; - arrow_height_bottom = 2 * arrow_h (w); + if (mouse_y >= (height -= arrow_height)) + return BUTTON_UP_ARROW; } else - { - arrow_height_top = arrow_height_bottom = arrow_h (w); - } + if ( (mouse_y -= arrow_height) < 0) + return BUTTON_UP_ARROW; } - else - { - arrow_height_top = arrow_height_bottom = 0; - } - - where = BUTTON_NONE; + + if ( (mouse_y -= w->sb.above) < 0) + return BUTTON_TROUGH_ABOVE; - if (mouse_x > x && mouse_x < (x + width)) - { - if (mouse_y > (y + arrow_height_top) && - mouse_y < (y + height - arrow_height_bottom)) - { - if (mouse_y < (y + w->sb.above + arrow_height_top)) - { - where = BUTTON_TROUGH_ABOVE; - } - else if (mouse_y > (y + w->sb.above + w->sb.ss + arrow_height_top)) - { - where = BUTTON_TROUGH_BELOW; - } - else - { - where = BUTTON_KNOB; - } - } - else if (arrow_same_end (w)) - { - if (mouse_y > (y + height - arrow_height_bottom + 1) && - mouse_y < (y + height)) - { - if (mouse_y < (y + height - arrow_height_bottom/2)) - { - where = BUTTON_UP_ARROW; - } - else - { - where = BUTTON_DOWN_ARROW; - } - } - } - else - { - if (mouse_y > y && mouse_y < (y + arrow_height_top)) - { - where = BUTTON_UP_ARROW; - } - else if (mouse_y > (y + height - arrow_height_bottom + 1) && - mouse_y < (y + height)) - { - where = BUTTON_DOWN_ARROW; - } - } - } -#if 0 - if (mouse_x > x && mouse_x < (x + width)) - { - if (mouse_y > (y + arrow_height) && mouse_y < (y + height - arrow_height)) - { - if (mouse_y < (y+w->sb.above+arrow_height)) - { - where = BUTTON_TROUGH_ABOVE; - } - else if (mouse_y > (y + w->sb.above + w->sb.ss + arrow_height)) - { - where = BUTTON_TROUGH_BELOW; - } - else - { - where = BUTTON_KNOB; - } - } - else if (mouse_y > y && mouse_y < (y + arrow_height)) - { - where = BUTTON_UP_ARROW; - } - else if (mouse_y > (y + height - arrow_height + 1) && - mouse_y < (y + height)) - { - where = BUTTON_DOWN_ARROW; - } - } -#endif - return where; + if ( (mouse_y -= w->sb.ss) < 0) + return BUTTON_SLIDER; + + return BUTTON_TROUGH_BELOW; } -#define FORCED_SCROLL_NONE 0 -#define FORCED_SCROLL_DOWNRIGHT 1 -#define FORCED_SCROLL_UPLEFT 2 - -int forced_scroll_flag = FORCED_SCROLL_NONE; - static void PageDownOrRight (Widget widget, XEvent *event, String *parms, Cardinal *num_parms) { - forced_scroll_flag = FORCED_SCROLL_DOWNRIGHT; + XlwScrollBarWidget w = (XlwScrollBarWidget) widget; + w->sb.forced_scroll = FORCED_SCROLL_DOWNRIGHT; Select (widget, event, parms, num_parms); - forced_scroll_flag = FORCED_SCROLL_NONE; + w->sb.forced_scroll = FORCED_SCROLL_NONE; } static void PageUpOrLeft (Widget widget, XEvent *event, String *parms, Cardinal *num_parms) { - forced_scroll_flag = FORCED_SCROLL_UPLEFT; + XlwScrollBarWidget w = (XlwScrollBarWidget) widget; + w->sb.forced_scroll = FORCED_SCROLL_UPLEFT; Select (widget, event, parms, num_parms); - forced_scroll_flag = FORCED_SCROLL_NONE; + w->sb.forced_scroll = FORCED_SCROLL_NONE; } static void Select (Widget widget, XEvent *event, String *parms, Cardinal *num_parms) { XlwScrollBarWidget w = (XlwScrollBarWidget) widget; - int mouse_x, mouse_y; - int reason, last_value; - int sb_button; - - DBUG (fprintf (stderr, "Select:\n")); + button_where sb_button; - mouse_x = event_x (w, event); - mouse_y = event_y (w, event); + int mouse_x = event_x (w, event); + int mouse_y = event_y (w, event); - w->sb.savedValue = w->sb.value; - - last_value = w->sb.value; - reason = XmCR_NONE; + int last_value = w->sb.savedValue = w->sb.value; + int reason = XmCR_NONE; XtGrabKeyboard ((Widget) w, False, GrabModeAsync, GrabModeAsync, event->xbutton.time); sb_button = what_button (w, mouse_x, mouse_y); - if (forced_scroll_flag != FORCED_SCROLL_NONE) + if (w->sb.forced_scroll != FORCED_SCROLL_NONE) { - switch (sb_button) + switch (sb_button) { case BUTTON_TROUGH_ABOVE: case BUTTON_TROUGH_BELOW: - case BUTTON_KNOB: + case BUTTON_SLIDER: sb_button= BUTTON_NONE; /* cause next switch to fall through */ - if (forced_scroll_flag == FORCED_SCROLL_UPLEFT) + if (w->sb.forced_scroll == FORCED_SCROLL_UPLEFT) { - w->sb.value = safe_subtract (w->sb.value, w->sb.pageIncrement); + decrement_value (w, w->sb.pageIncrement); w->sb.armed = ARM_PAGEUP; reason = XmCR_PAGE_DECREMENT; break; } - else if (forced_scroll_flag == FORCED_SCROLL_DOWNRIGHT) + else if (w->sb.forced_scroll == FORCED_SCROLL_DOWNRIGHT) { - w->sb.value = safe_add (w->sb.value, w->sb.pageIncrement); + increment_value (w, w->sb.pageIncrement); w->sb.armed = ARM_PAGEDOWN; reason = XmCR_PAGE_INCREMENT; break; @@ -1861,48 +1666,46 @@ switch (sb_button) { case BUTTON_TROUGH_ABOVE: - w->sb.value = safe_subtract (w->sb.value, w->sb.pageIncrement); + decrement_value (w, w->sb.pageIncrement); w->sb.armed = ARM_PAGEUP; reason = XmCR_PAGE_DECREMENT; break; case BUTTON_TROUGH_BELOW: - w->sb.value = safe_add (w->sb.value, w->sb.pageIncrement); + increment_value (w, w->sb.pageIncrement); w->sb.armed = ARM_PAGEDOWN; reason = XmCR_PAGE_INCREMENT; break; - case BUTTON_KNOB: + case BUTTON_SLIDER: w->sb.lastY = mouse_y; - w->sb.armed = ARM_KNOB; - draw_knob (w, w->sb.above, w->sb.ss, w->sb.below); + w->sb.armed = ARM_SLIDER; + draw_slider (w, w->sb.above, w->sb.ss, w->sb.below); break; case BUTTON_UP_ARROW: if (event->xbutton.state & ControlMask) { - w->sb.value = INT_MIN; - w->sb.armed = ARM_UP; + w->sb.value = w->sb.minimum; reason = XmCR_TO_TOP; } else { - w->sb.value = safe_subtract (w->sb.value, w->sb.increment); - w->sb.armed = ARM_UP; + decrement_value (w, w->sb.increment); reason = XmCR_DECREMENT; } + w->sb.armed = ARM_UP; redraw_up_arrow (w, True, False); break; case BUTTON_DOWN_ARROW: if (event->xbutton.state & ControlMask) { - w->sb.value = INT_MAX; - w->sb.armed = ARM_DOWN; + w->sb.value = w->sb.maximum; reason = XmCR_TO_BOTTOM; } else { - w->sb.value = safe_add (w->sb.value, w->sb.increment); - w->sb.armed = ARM_DOWN; + increment_value (w, w->sb.increment); reason = XmCR_INCREMENT; } + w->sb.armed = ARM_DOWN; redraw_down_arrow (w, True, False); break; } @@ -1912,7 +1715,7 @@ if (last_value != w->sb.value) { seg_pixel_sizes (w, &w->sb.above, &w->sb.ss, &w->sb.below); - draw_knob (w, w->sb.above, w->sb.ss, w->sb.below); + draw_slider (w, w->sb.above, w->sb.ss, w->sb.below); call_callbacks (w, reason, w->sb.value, mouse_y, event); @@ -1933,56 +1736,29 @@ Drag (Widget widget, XEvent *event, String *parms, Cardinal *num_parms) { XlwScrollBarWidget w = (XlwScrollBarWidget) widget; - int diff; - int height, mouse_y; - int last_value, last_above; - DBUG (fprintf (stderr, "Drag:\n")); - - if (w->sb.armed == ARM_KNOB) + if (w->sb.armed == ARM_SLIDER) { - height = widget_h (w); - if (w->sb.showArrows) height -= (2 * arrow_h (w)); - - mouse_y = event_y (w, event); + int mouse_y = event_y (w, event); + int diff = mouse_y - w->sb.lastY; - diff = mouse_y - w->sb.lastY; - - last_above = w->sb.above; - last_value = w->sb.value; - - if (diff < 0) + if (diff < -(w->sb.above)) /* up */ { - /* up */ - w->sb.above -= (-diff); - if (w->sb.above < 0) - { - mouse_y = (mouse_y - w->sb.above); - w->sb.above = 0; - diff = 0; - w->sb.below = height - w->sb.ss; - } - w->sb.below -= diff; - CHECK (w); + mouse_y -= (diff + w->sb.above); + diff = -(w->sb.above); } - else if (diff > 0) + else if (diff > w->sb.below) /* down */ { - /* down */ - w->sb.above += diff; - if (w->sb.above + w->sb.ss > height) - { - mouse_y = height + (mouse_y - (w->sb.above + w->sb.ss)); - w->sb.above = height - w->sb.ss; - diff = 0; - w->sb.below = 0; - } - w->sb.below -= diff; - CHECK (w); + mouse_y -= (diff - w->sb.below); + diff = w->sb.below; } - if (last_above != w->sb.above) + if (diff) { - draw_knob (w, w->sb.above, w->sb.ss, w->sb.below); + w->sb.above += diff; + w->sb.below -= diff; + + draw_slider (w, w->sb.above, w->sb.ss, w->sb.below); w->sb.lastY = mouse_y; @@ -1990,8 +1766,7 @@ verify_values (w); CHECK (w); - if (w->sb.value != last_value) - call_callbacks (w, XmCR_DRAG, w->sb.value, event_y (w, event), event); + call_callbacks (w, XmCR_DRAG, w->sb.value, event_y (w, event), event); } } CHECK (w); @@ -2002,14 +1777,12 @@ { XlwScrollBarWidget w = (XlwScrollBarWidget) widget; - DBUG (fprintf (stderr, "EndDrag:\n")); - switch (w->sb.armed) { - case ARM_KNOB: + case ARM_SLIDER: call_callbacks (w, XmCR_VALUE_CHANGED, w->sb.value, event_y (w, event), event); w->sb.armed = ARM_NONE; - draw_knob (w, w->sb.above, w->sb.ss, w->sb.below); + draw_slider (w, w->sb.above, w->sb.ss, w->sb.below); break; case ARM_UP: redraw_up_arrow (w, False, False); @@ -2028,21 +1801,21 @@ Jump (Widget widget, XEvent *event, String *parms, Cardinal *num_parms) { XlwScrollBarWidget w = (XlwScrollBarWidget) widget; - int x, y, width, height, mouse_x, mouse_y; - int arrow_height; - int last_above, last_value; + int last_value; - DBUG (fprintf (stderr, "Jump:\n")); + int mouse_x = event_x (w, event); + int mouse_y = event_y (w, event); - x = widget_x (w); - y = widget_y (w); - width = widget_w (w); - height = widget_h (w); + int scroll_region_y = widget_y (w); + int scroll_region_h = widget_h (w); - mouse_x = event_x (w, event); - mouse_y = event_y (w, event); - - arrow_height = w->sb.showArrows ? arrow_h (w) : 0; + if (w->sb.showArrows) + { + int arrow_height = arrow_h (w); + scroll_region_h -= 2 * arrow_height; + if (!arrow_same_end (w)) + scroll_region_y += arrow_height; + } XtGrabKeyboard ((Widget) w, False, GrabModeAsync, GrabModeAsync, event->xbutton.time); @@ -2051,45 +1824,31 @@ { case BUTTON_TROUGH_ABOVE: case BUTTON_TROUGH_BELOW: - case BUTTON_KNOB: + case BUTTON_SLIDER: w->sb.savedValue = w->sb.value; - height -= (2*arrow_height); - y += arrow_height; - - last_above = w->sb.above; last_value = w->sb.value; - w->sb.armed = ARM_KNOB; - draw_knob (w, w->sb.above, w->sb.ss, w->sb.below); - - w->sb.above = mouse_y - (w->sb.ss / 2) - arrow_height; + w->sb.above = mouse_y - (w->sb.ss / 2) - scroll_region_y; if (w->sb.above < 0) - { - w->sb.above = 0; - } - else if (w->sb.above + w->sb.ss > height) - { - w->sb.above = height - w->sb.ss; - } - w->sb.below = (height - (w->sb.ss + w->sb.above)); + w->sb.above = 0; + else if (w->sb.above + w->sb.ss > scroll_region_h) + w->sb.above = scroll_region_h - w->sb.ss; + + w->sb.below = scroll_region_h - w->sb.ss - w->sb.above; - if (last_above != w->sb.above) - { - draw_knob (w, w->sb.above, w->sb.ss, w->sb.below); - - w->sb.value = value_from_pixel (w, w->sb.above); - verify_values (w); - CHECK (w); + w->sb.armed = ARM_SLIDER; + draw_slider (w, w->sb.above, w->sb.ss, w->sb.below); - w->sb.lastY = mouse_y; - w->sb.lastY = w->sb.above + arrow_height + (w->sb.ss / 2); + w->sb.value = value_from_pixel (w, w->sb.above); + verify_values (w); + CHECK (w); - if (w->sb.value != last_value) - { - call_callbacks (w, XmCR_DRAG, w->sb.value, event_y (w, event), event); - } - } + w->sb.lastY = mouse_y; + + if (w->sb.value != last_value) + call_callbacks (w, XmCR_DRAG, w->sb.value, mouse_y, event); + break; } CHECK (w); @@ -2100,8 +1859,6 @@ { XlwScrollBarWidget w = (XlwScrollBarWidget) widget; - DBUG (fprintf (stderr, "Abort:\n")); - if (w->sb.armed != ARM_NONE) { if (w->sb.value != w->sb.savedValue) @@ -2109,7 +1866,7 @@ w->sb.value = w->sb.savedValue; seg_pixel_sizes (w, &w->sb.above, &w->sb.ss, &w->sb.below); - draw_knob (w, w->sb.above, w->sb.ss, w->sb.below); + draw_slider (w, w->sb.above, w->sb.ss, w->sb.below); call_callbacks (w, XmCR_VALUE_CHANGED, w->sb.value, event_y (w, event), event);
--- a/lwlib/xlwscrollbar.h Mon Aug 13 08:51:05 2007 +0200 +++ b/lwlib/xlwscrollbar.h Mon Aug 13 08:51:32 2007 +0200 @@ -88,9 +88,14 @@ /* New resources that Motif does not have. Maybe we should use a different prefix. */ + +/* "knob" is obsolete; use "slider" instead. */ #define XmNknobStyle "knobStyle" #define XmCKnobStyle "KnobStyle" +#define XmNsliderStyle "sliderStyle" +#define XmCSliderStyle "SliderStyle" + #define XmNarrowPosition "arrowPosition" #define XmCArrowPosition "ArrowPosition" @@ -114,7 +119,7 @@ XmHORIZONTAL }; -#endif /* _Xm_h */ +#endif /* ! _Xm_h */ extern WidgetClass xlwScrollBarWidgetClass;
--- a/lwlib/xlwscrollbarP.h Mon Aug 13 08:51:05 2007 +0200 +++ b/lwlib/xlwscrollbarP.h Mon Aug 13 08:51:32 2007 +0200 @@ -27,88 +27,104 @@ /* ** Widget class */ -typedef struct { - int dummy_field; /* keep compiler happy */ +typedef struct +{ + int dummy_field; /* keep compiler happy */ } XlwScrollBarClassPart; -typedef struct _XlwScrollbarClassRec { - CoreClassPart core_class; - XlwScrollBarClassPart scrollbar_class; +typedef struct _XlwScrollbarClassRec +{ + CoreClassPart core_class; + XlwScrollBarClassPart scrollbar_class; } XlwScrollBarClassRec; /* ** Widget instance */ -typedef struct { +typedef struct +{ + /* resources */ + XtCallbackList valueChangedCBL; + XtCallbackList incrementCBL; + XtCallbackList decrementCBL; + XtCallbackList pageIncrementCBL; + XtCallbackList pageDecrementCBL; + XtCallbackList toTopCBL; + XtCallbackList toBottomCBL; + XtCallbackList dragCBL; - /* resources */ - XtCallbackList valueChangedCBL; - XtCallbackList incrementCBL; - XtCallbackList decrementCBL; - XtCallbackList pageIncrementCBL; - XtCallbackList pageDecrementCBL; - XtCallbackList toTopCBL; - XtCallbackList toBottomCBL; - XtCallbackList dragCBL; + Pixel foreground; - Pixel foreground; + Pixel topShadowColor; + Pixel bottomShadowColor; - Pixel topShadowColor; - Pixel bottomShadowColor; + Pixel troughColor; - Pixel troughColor; + Pixel armColor; + Pixel armTopShadowColor; + Pixel armBottomShadowColor; + + Pixmap topShadowPixmap; + Pixmap bottomShadowPixmap; - Pixel armColor; - Pixel armTopShadowColor; - Pixel armBottomShadowColor; + int shadowThickness; + + Boolean showArrows; - Pixmap topShadowPixmap; - Pixmap bottomShadowPixmap; - - int shadowThickness; - - Boolean showArrows; + int minimum; + int maximum; + int sliderSize; + int value; + int pageIncrement; + int increment; - int minimum; - int maximum; - int sliderSize; - int value; - int pageIncrement; - int increment; + int initialDelay; + int repeatDelay; + + unsigned char orientation; + + char *sliderStyle; + char *arrowPosition; - int initialDelay; - int repeatDelay; + /* private */ + Pixmap grayPixmap; - unsigned char orientation; + GC backgroundGC; + GC topShadowGC; + GC bottomShadowGC; - char *knobStyle; - char *arrowPosition; + int above, ss, below; + int lastY; - /* private */ - Pixmap grayPixmap; - - GC backgroundGC; - GC topShadowGC; - GC bottomShadowGC; + enum { + ARM_NONE, + ARM_SLIDER, + ARM_UP, + ARM_DOWN, + ARM_PAGEUP, + ARM_PAGEDOWN + } armed; - int above, ss, below; - int lastY; - - int armed; + enum { + FORCED_SCROLL_NONE, + FORCED_SCROLL_DOWNRIGHT, + FORCED_SCROLL_UPLEFT + } forced_scroll; - int savedValue; + int savedValue; - Boolean fullRedrawNext; + Boolean fullRedrawNext; - Boolean timerActive; - XtIntervalId timerId; + Boolean timerActive; + XtIntervalId timerId; } XlwScrollBarPart; -typedef struct _XlwScrollBarRec { - CorePart core; - XlwScrollBarPart sb; +typedef struct _XlwScrollBarRec +{ + CorePart core; + XlwScrollBarPart sb; } XlwScrollBarRec; -#endif +#endif /* _XlwScrollBarP_h */
--- a/man/auctex/Makefile Mon Aug 13 08:51:05 2007 +0200 +++ b/man/auctex/Makefile Mon Aug 13 08:51:32 2007 +0200 @@ -74,3 +74,7 @@ allways: + +mostlyclean: clean + +distclean: clean
--- a/man/custom.texi Mon Aug 13 08:51:05 2007 +0200 +++ b/man/custom.texi Mon Aug 13 08:51:32 2007 +0200 @@ -13,7 +13,7 @@ @comment node-name, next, previous, up @top The Customization Library -Version: 1.44 +Version: 1.46 @menu * Introduction:: @@ -410,6 +410,7 @@ * Declaring Groups:: * Declaring Variables:: * Declaring Faces:: +* Usage for Package Authors:: @end menu All the customization declarations can be changes by keyword arguments. @@ -510,7 +511,7 @@ member. For other types variables, the effect is undefined." @end defun -@node Declaring Faces, , Declaring Variables, Declarations +@node Declaring Faces, Usage for Package Authors, Declaring Variables, Declarations @comment node-name, next, previous, up @subsection Declaring Faces @@ -564,6 +565,22 @@ @end defun +@node Usage for Package Authors, , Declaring Faces, Declarations +@comment node-name, next, previous, up +@subsection Usage for Package Authors + +The recommended usage for the author of a typical emacs lisp package is +to create one group identifying the package, and make all user options +and faces members of that group. If the package has more than around 20 +such options, they should be divided into a number of subgroups, with +each subgroup being member of the top level group. + +The top level group for the package should itself be member of one or +more of the standard customization groups. There exists a group for +each @emph{finder} keyword. Press @kbd{C-c p} to see a list of finder +keywords, and add you group to each of them, using the @code{:group} +keyword. + @node Utilities, The Init File, Declarations, Top @comment node-name, next, previous, up @section Utilities
--- a/man/gnus.texi Mon Aug 13 08:51:05 2007 +0200 +++ b/man/gnus.texi Mon Aug 13 08:51:32 2007 +0200 @@ -959,6 +959,11 @@ @vindex gnus-startup-hook A hook that is run after starting up Gnus successfully. +@item gnus-started-hook +@vindex gnus-started-hook +A hook that is run as the very last thing after starting up Gnus +successfully. + @item gnus-check-bogus-newsgroups @vindex gnus-check-bogus-newsgroups If non-@code{nil}, Gnus will check for and delete all bogus groups at @@ -4380,7 +4385,8 @@ @cindex fuzzy article gathering If you set this variable to the special value @code{fuzzy}, Gnus will -use a fuzzy string comparison algorithm on the subjects. +use a fuzzy string comparison algorithm on the subjects (@pxref{Fuzzy +Matching}). @item gnus-simplify-subject-fuzzy-regexp @vindex gnus-simplify-subject-fuzzy-regexp @@ -4665,7 +4671,8 @@ when doing thread commands. If this variable is @code{nil}, articles in the same thread with different subjects will not be included in the operation in question. If this variable is @code{fuzzy}, only articles -that have subjects that are fuzzily equal will be included. +that have subjects that are fuzzily equal will be included (@pxref{Fuzzy +Matching}). @node Sorting @@ -7577,9 +7584,9 @@ @cindex archived messages @cindex sent messages -Gnus provides a few different methods for storing the mail you send. -The default method is to use the @dfn{archive virtual server} to store -the mail. If you want to disable this completely, the +Gnus provides a few different methods for storing the mail and news you +send. The default method is to use the @dfn{archive virtual server} to +store the messages. If you want to disable this completely, the @code{gnus-message-archive-group} variable should be @code{nil}, which is the default. @@ -7674,10 +7681,10 @@ nice---@samp{misc-mail-september-1995}, or whatever. New messages will continue to be stored in the old (now empty) group. -That's the default method of archiving sent mail. Gnus also a different -way for the people who don't like the default method. In that case you -should set @code{gnus-message-archive-group} to @code{nil}; this will -disable archiving. +That's the default method of archiving sent messages. Gnus also a +different way for the people who don't like the default method. In that +case you should set @code{gnus-message-archive-group} to @code{nil}; +this will disable archiving. XEmacs 19.13 doesn't have @code{format-time-string}, so you'll have to use a different value for @code{gnus-message-archive-group} there. @@ -7694,6 +7701,9 @@ message in, you can set this variable to a function that checks the current newsgroup name and then returns a suitable group name (or list of names). + +This variable can be used instead of @code{gnus-message-archive-group}, +but the latter is the preferred method. @end table @@ -10638,7 +10648,7 @@ Substring matching. @item f -Fuzzy matching. +Fuzzy matching (@pxref{Fuzzy Matching}). @item r Regexp matching @@ -11432,7 +11442,7 @@ @lisp ("references" - ("<x6[0-9a-z]+\\.fsf@.*eyesore.no>" 1000 nil r)) + ("<x6[0-9a-z]+\\.fsf@@.*eyesore.no>" 1000 nil r)) @end lisp Whether it's the first two or first three characters that are ``yours'' @@ -12133,6 +12143,7 @@ * Undo:: Some actions can be undone. * Moderation:: What to do if you're a moderator. * XEmacs Enhancements:: There are more pictures and stuff under XEmacs. +* Fuzzy Matching:: What's the big fuzz? * Various Various:: Things that are really various. @end menu @@ -13339,6 +13350,24 @@ @end table +@node Fuzzy Matching +@section Fuzzy Matching +@cindex fuzzy matching + +Gnus provides @dfn{fuzzy matching} of @code{Subject} lines when doing +things like scoring, thread gathering and thread comparison. + +As opposed to regular expression matching, fuzzy matching is very fuzzy. +It's so fuzzy that there's not even a definition of what @dfn{fuzziness} +means, and the implementation has changed over time. + +Basically, it tries to remove all noise from lines before comparing. +@samp{Re: }, parenthetical remarks, white space, and so on, are filtered +out of the strings before comparing the results. This often leads to +adequate results---even when faced with strings generated by text +manglers masquerading as newsreaders. + + @node Various Various @section Various Various @cindex mode lines @@ -15198,9 +15227,9 @@ A Gnus group info (@pxref{Group Info}) is handed to the backend for alterations. This comes in handy if the backend really carries all the -information (as is the case with virtual an imap groups). This function -should destructively alter the info to suit its needs, and should return -the (altered) group info. +information (as is the case with virtual and imap groups). This +function should destructively alter the info to suit its needs, and +should return the (altered) group info. There should be no result data from this function.
--- a/man/message.texi Mon Aug 13 08:51:05 2007 +0200 +++ b/man/message.texi Mon Aug 13 08:51:32 2007 +0200 @@ -74,6 +74,7 @@ * Interface:: Setting up message buffers. * Commands:: Commands you can execute in message mode buffers. * Variables:: Customizing the message buffers. +* Compatibility:: Making Message backwards compatible. * Index:: Variable, function and concept index. * Key Index:: List of Message mode keys. @end menu @@ -930,12 +931,11 @@ @lisp (defun my-message-header-setup-hook () - (when (or (message-fetch-field "newsgroups") - (gnus-group-find-parameter - gnus-newsgroup-name 'to-address) - (gnus-group-find-parameter - gnus-newsgroup-name 'to-list)) - (insert "Mail-Copies-To: never\n"))) + (let ((group (or gnus-newsgroup-name ""))) + (when (or (message-fetch-field "newsgroups") + (gnus-group-find-parameter group 'to-address) + (gnus-group-find-parameter group 'to-list)) + (insert "Mail-Copies-To: never\n")))) (add-hook 'message-header-setup-hook 'my-message-header-setup-hook) @end lisp @@ -1068,6 +1068,24 @@ @code{car} is a function and the @code{cdr} is the list of arguments, or a form to be @code{eval}ed. + +@node Compatibility +@chapter Compatibility +@cindex compatibility + +Message uses virtually only its own variables---older @code{mail-} +variables aren't consulted. To force Message to take those variables +into account, you can put the following in your @code{.emacs} file: + +@lisp +(require 'messcompat) +@end lisp + +This will initialize many Message variables from the values in the +corresponding mail variables. + + + @node Index @chapter Index @printindex cp
--- a/man/w3.texi Mon Aug 13 08:51:05 2007 +0200 +++ b/man/w3.texi Mon Aug 13 08:51:32 2007 +0200 @@ -71,7 +71,9 @@ @end titlepage @page @ifinfo -@node Top, Getting Started,, (DIR) +@node Top, Getting Started, (dir), (dir) +@top W3 + Users can browse the World Wide Web from within Emacs by using Emacs-W3. All of the widely used (and even some not very widely used) @sc{url} schemes are supported, and it is very easy to add new methods as the @@ -83,7 +85,7 @@ with the library. Emacs-W3 is completely customizable, both from Emacs-Lisp and from -stylesheets @xref{Style Sheets} If there is any aspect of Emacs-W3 that +stylesheets @xref{Stylesheets} If there is any aspect of Emacs-W3 that cannot be modified to your satisfaction, please send mail to the @t{w3-beta@@indiana.edu} mailing list with any suggestions. @xref{Reporting Bugs} @@ -93,11 +95,11 @@ * Basic Usage:: Basic movement and usage of Emacs-W3. * Compatibility:: Explanation of compatibility with other browsers. -* Stylesheets:: How to control the look of web pages +* Stylesheets:: How to control the look of web pages * Supported URLs:: What @sc{URL} schemes are supported. * MIME Support:: Support for @sc{mime} * Security:: Various security methods supported -* Non-Unix Operating Systems:: Special considerations necessary to get +* Non-Unix Operating Systems:: Special considerations necessary to get up and running correctly under non-unix OS's. * Speech Integration:: Outputting to a speech synthesizer. @@ -144,6 +146,7 @@ @node Downloading, Building and Installing, Getting Started, Getting Started @section Downloading + :: WORK :: What you need, and why :: WORK :: Where to download Emacs, XEmacs, various platforms :: WORK :: Where to download Emacs-W3 @@ -151,6 +154,7 @@ @node Building and Installing, Startup Files, Downloading, Getting Started @section Building and Installing + :: WORK :: Document makefile variables :: WORK :: Document what gets installed where, why @@ -158,18 +162,20 @@ @section Startup Files @cindex Startup files @cindex Default stylesheet + :: WORK :: startup files This section should document where emacs-w3 looks for its startup files, and what each one does. 'profile' 'stylesheet' 'hotlist' 'history' etc. -@node Preferences Panel, , Startup Files, Getting Started +@node Preferences Panel, , Startup Files, Getting Started @section Preferences Panel @cindex Preferences @kindex M-x w3-preferences-edit + :: WORK :: pref panel This should document the quick preferences panel. M-x w3-preferences-edit -@node Basic Usage, Movement , Getting Started, Top +@node Basic Usage, Compatibility, Getting Started, Top @chapter Basic Usage @cindex Basic Usage @kindex space @@ -205,16 +211,16 @@ There are several areas that the keybindings fall into: movement, information, action, and miscellaneous. -@ifinfo @menu -* Movement:: Moving around in the buffer. -* Information:: Getting information about a document. -* Action:: Following links, printing, etc. -* Miscellaneous:: Everything else. +* Movement:: Moving around in the buffer. +* Information:: Getting information about a document. +* Action:: Following links, printing, etc. +* Miscellaneous:: Everything else. @end menu -@end ifinfo + @node Movement, Information, Basic Usage, Basic Usage @section Movement + All the standard Emacs bindings for movement are still in effect, with a few additions for convenience. @@ -273,6 +279,7 @@ @node Information, Action, Movement, Basic Usage @section Information + These functions relate information about one or more links on the current document. @@ -321,6 +328,7 @@ @node Action, Miscellaneous, Information, Basic Usage @section Action + First, here are the keys and functions that bring up a new hypertext page, usually creating a new buffer. @table @kbd @@ -460,8 +468,9 @@ effect if at the end of the session history. @end table -@node Miscellaneous, Compatibility, Action, Basic Usage +@node Miscellaneous, , Action, Basic Usage @section Miscellaneous + @table @kbd @kindex M-m @findex w3-mail-current-document @@ -563,16 +572,15 @@ relationship. @end table -@node Compatibility, Emulation, Miscellaneous, Top +@node Compatibility, Stylesheets, Basic Usage, Top @chapter Compatibility with other Browsers Due to the popularity of several other browsers, Emacs-W3 offers an easy transition to its much better way of life. This ranges from being able to share the same preferences files and disk cache to actually emulating the keybindings used in other browsers. -@ifinfo @menu -* Emulation:: Emacs-W3 can emulate the keybindings and +* Emulation:: Emacs-W3 can emulate the keybindings and other behaviours of other browsers. * Hotlist Handling:: A hotlist is an easy way to keep track of interesting Web pages without having to @@ -580,10 +588,10 @@ * Session History:: Keeping a history of documents visited in one Emacs sessions allows the use of 'forward' and 'back' buttons easily. -* Global History:: Keeping a history of all the places ever +* Global History:: Keeping a history of all the places ever visited on the web. @end menu -@end ifinfo + @node Emulation, Hotlist Handling, Compatibility, Compatibility @section Emulation @cindex Browser emulation @@ -595,6 +603,7 @@ @findex w3-netscape-emulation-minor-mode @findex w3-lynx-emulation-minor-mode @vindex w3-mode-hook + :: WORK :: Document lynx emulation @table @bullet @item Down arrow @@ -724,6 +733,7 @@ @node Hotlist Handling, Session History, Emulation, Compatibility @section Hotlist Handling + :: WORK :: Document that it supports different types of hotlist formats :: WORK :: Make sure everything hotlist related can be accessed via 'h' In order to avoid having to traverse many documents to get to the same @@ -792,12 +802,15 @@ @node Session History, Global History, Hotlist Handling, Compatibility @section History @cindex History Lists + Almost all web browsers keep track of the @sc{url}s followed from a page, so that it can provide @b{forward} and @b{back} buttons to keep a @i{path} of @sc{url}s that can be traversed easily. + @vindex url-keep-history If the variable @code{url-keep-history} is @code{t}, then Emacs-W3 keeps a list of all the @sc{url}s visited in a session. + @findex w3-show-history To view a listing of the history for this session of Emacs-W3, use @code{M-x w3-show-history} from any buffer, and Emacs-W3 generates an @@ -817,8 +830,9 @@ document. To go forward, use the function @code{w3-forward-in-history}, to go backward, use the function @code{w3-backward-in-history}. -@node Global History, Stylesheets, Session History, Compatibility +@node Global History, , Session History, Compatibility @section Global History + :: WORK :: Document that the global history can have diff. formats Most web browsers also support the idea of a ``history'' of @sc{url}s the user has visited, and it displays them in a different style than normal @@ -848,7 +862,7 @@ are not in a hotlist, or for seeing all the pages from a particular web site before choosing which to retrieve. -@node Stylesheets, Terminology, Global History, Top +@node Stylesheets, Supported URLs, Compatibility, Top @chapter Stylesheets The way in which Emacs-W3 formats a document is very customizable. All formatting is now controlled by a default stylesheet set by the user @@ -868,7 +882,6 @@ in the following sections comes directly from the specification as well. -@ifinfo @menu * Terminology:: Terms used in the rest of this chapter. * Basic Concepts:: Why are stylesheets useful? Getting started. @@ -877,7 +890,6 @@ * Properties:: What properties you can set on elements. * Units:: What you can set them to. @end menu -@end ifinfo @node Terminology, Basic Concepts, Stylesheets, Stylesheets @section Terminology @@ -978,6 +990,7 @@ @node Basic Concepts, Pseudo-Classes/Elements, Terminology, Stylesheets @section Basic Concepts + Designing simple style sheets is easy. One needs only to know a little HTML and some basic desktop publishing terminology. E.g., to set the text color of 'H1' elements to blue, one can say: @@ -1000,6 +1013,7 @@ @node Pseudo-Classes/Elements, The Cascade, Basic Concepts, Stylesheets @section Pseudo-Classes/Elements + In @sc{css1}, style is normally attached to an element based on its position in the document structure. This simple model is sufficient for a wide variety of styles, but doesn't cover some common effects. The @@ -1208,7 +1222,7 @@ policy will make it easier for stylistic attributes to coexist with style sheets. -@node Properties, Font Properties, The Cascade, Stylesheets +@node Properties, Units, The Cascade, Stylesheets @section Properties In the text below, the allowed values for each property are listed @@ -1269,7 +1283,6 @@ @item Percentage values: @tab What a percentage value applies to when given. @end multitable -@ifinfo @menu * Font Properties:: Selecting fonts, styles, and sizes. * Colors and Backgrounds:: Controlling colors, front and back. @@ -1279,10 +1292,10 @@ * Media Selection:: Conditionalize stylesheets on media-type. * Speech Properties:: Speech output controlled by stylesheets. @end menu -@end ifinfo - -@node Font Properties, font-family, Properties, Properties + +@node Font Properties, Colors and Backgrounds, Properties, Properties @subsection Font Properties + Setting font properties will be among the most common uses of style sheets. Unfortunately, there exists no well-defined and universally accepted taxonomy for classifying fonts, and terms that apply to one @@ -1293,7 +1306,6 @@ selection properties to a specific font. The properties defined by CSS1 are described in the following sections. -@ifinfo @menu * font-family:: Groups of fonts. * font-style:: Normal, italic, or oblique? @@ -1302,7 +1314,6 @@ * font-size:: How big is yours? * font:: Shorthand for all of the above. @end menu -@end ifinfo @node font-family, font-style, Font Properties, Font Properties @subsubsection font-family @@ -1543,7 +1554,7 @@ If the suggested scaling factor of 1.5 is used, the last three declarations are identical. -@node font, Colors and Backgrounds, font-size, Font Properties +@node font, , font-size, Font Properties @subsubsection font @multitable @columnfractions .2 .8 @@ -1587,8 +1598,9 @@ 'normal' applies to the two remaining properties: 'font-style' and 'font-weight'. -@node Colors and Backgrounds, color, font, Properties +@node Colors and Backgrounds, Text Properties, Font Properties, Properties @subsection Colors and Backgrounds + These properties describe the color (often called foreground color) and background of an element (i.e. the surface onto which the content is rendered). One can set a background color and/or a background image. The @@ -1603,20 +1615,19 @@ NOTE: Currently, Emacs-W3 can only show background images under XEmacs. Emacs 19 doesn't have the support in its display code yet. -@ifinfo @menu -* color:: Foreground colors. -* background-color:: Background colors. -* background-image:: Background images. -* background-repeat:: Controlling repeating of background images. -* background-attachment:: Where background images are drawn. -* background-position:: Where background images are drawn. -* background:: Shorthand for all background properties. +* color:: Foreground colors. +* background-color:: Background colors. +* background-image:: Background images. +* background-repeat:: Controlling repeating of background images. +* background-attachment:: Where background images are drawn. +* background-position:: Where background images are drawn. +* background:: Shorthand for all background properties. @end menu -@end ifinfo @node color, background-color, Colors and Backgrounds, Colors and Backgrounds @subsubsection color + @multitable @columnfractions .2 .8 @item Value: @tab <color> @item Initial: @tab User specific @@ -1637,6 +1648,7 @@ @node background-color, background-image, color, Colors and Backgrounds @subsubsection background-color + @multitable @columnfractions .2 .8 @item Value: @tab <color> | transparent @item Initial: @tab transparent @@ -1653,6 +1665,7 @@ @node background-image, background-repeat, background-color, Colors and Backgrounds @subsubsection background-image + @multitable @columnfractions .2 .8 @item Value: @tab <url> | none @item Initial: @tab none @@ -1673,18 +1686,22 @@ @node background-repeat, background-attachment, background-image, Colors and Backgrounds @subsubsection background-repeat + This property is not supported at all under Emacs-W3. @node background-attachment, background-position, background-repeat, Colors and Backgrounds @subsubsection background-attachment + This property is not supported at all under Emacs-W3. @node background-position, background, background-attachment, Colors and Backgrounds @subsubsection background-position + This property is not supported at all under Emacs-W3. -@node background, Text Properties, background-position, Colors and Backgrounds +@node background, , background-position, Colors and Backgrounds @subsubsection background + @multitable @columnfractions .2 .8 @item Value: @tab <background-color> || <background-image> || <background-repeat> || <background-attachment> || <background-position> @item Initial: @tab not defined for shorthand properties @@ -1712,10 +1729,9 @@ are set to their initial value. In the second rule, all individual properties have been specified. -@node Text Properties, word-spacing, background, Properties +@node Text Properties, Box Properties, Colors and Backgrounds, Properties @subsection Text Properties -@ifinfo @menu * word-spacing:: * letter-spacing:: @@ -1726,10 +1742,10 @@ * text-indent:: * line-height:: @end menu -@end ifinfo @node word-spacing, letter-spacing, Text Properties, Text Properties @subsubsection word-spacing + @multitable @columnfractions .2 .8 @item Supported Values: @tab normal @item Unsupported Values: @tab <length> @@ -1757,8 +1773,9 @@ @node letter-spacing, text-decoration, word-spacing, Text Properties @subsubsection letter-spacing + @multitable @columnfractions .2 .8 -@item Supported Values: normal +@item Supported Values: @tab normal @item Unsupported Values: @tab <length> @item Initial: @tab normal @item Applies to: @tab all elements @@ -1782,8 +1799,9 @@ NOTE: Emacs-W3 cannot currently support this, due to limitations in Emacs. It may be implemented in the future. -@node text-decoration, vertical-align, letter-spacing , Text Properties +@node text-decoration, vertical-align, letter-spacing, Text Properties @subsubsection text-decoration + @multitable @columnfractions .2 .8 @item Supported Values: @tab none | underline | line-through | blink @item Unsupported Values: @tab overline @@ -1820,10 +1838,12 @@ @node vertical-align, text-transform, text-decoration, Text Properties @subsubsection vertical-align + This is currently unsupported in Emacs-W3. @node text-transform, text-align, vertical-align, Text Properties @subsubsection text-transform + @multitable @columnfractions .2 .8 @item Supported Values: @tab none @item Unsupported Values: @tab capitalize | uppercase | lowercase @@ -1858,6 +1878,7 @@ @node text-align, text-indent, text-transform, Text Properties @subsubsection text-align + @multitable @columnfractions .2 .8 @item Value: @tab left | right | center | justify @item Initial: @tab User specific @@ -1880,19 +1901,23 @@ @node text-indent, line-height, text-align, Text Properties @subsubsection text-indent + Not currently implemented in Emacs-W3. -@node line-height, Box Properties, text-indent, Text Properties +@node line-height, , text-indent, Text Properties @subsubsection line-height + Not currently implemented in Emacs-W3. -@node Box Properties, Classification, line-height, Properties +@node Box Properties, Classification, Text Properties, Properties @subsection Box Properties + @multitable @columnfractions .2 .8 @end multitable -@node Classification, display, Box Properties, Properties +@node Classification, Media Selection, Box Properties, Properties @subsection Classification + These properties classify elements into categories more than they set specific visual parameters. @@ -1903,19 +1928,18 @@ 'display' value of 'list-item'. In HTML this is typically the case for the 'LI' element. -@ifinfo @menu -* display:: -* white-space:: -* list-style-type:: -* list-style-image:: -* list-style-position:: -* list-style:: +* display:: +* white-space:: +* list-style-type:: +* list-style-image:: +* list-style-position:: +* list-style:: @end menu -@end ifinfo @node display, white-space, Classification, Classification @subsubsection display + @multitable @columnfractions .2 .8 @item Value: @tab block | inline | list-item | none @item Extensions: @tab line @@ -1957,6 +1981,7 @@ @node white-space, list-style-type, display, Classification @subsubsection white-space + @multitable @columnfractions .2 .8 @item Value: @tab normal | pre | nowrap @item Initial: @tab normal @@ -1977,6 +2002,7 @@ @node list-style-type, list-style-image, white-space, Classification @subsubsection list-style-type + @multitable @columnfractions .2 .8 @item Value: @tab disc | circle | square | decimal | lower-roman | upper-roman | lower-alpha | upper-alpha | none @item Initial: @tab disc @@ -1998,6 +2024,7 @@ @node list-style-image, list-style-position, list-style-type, Classification @subsubsection list-style-image + @multitable @columnfractions .2 .8 @item Value: @tab <url> | none @item Initial: @tab none @@ -2018,6 +2045,7 @@ @node list-style-position, list-style, list-style-image, Classification @subsubsection list-style-position + @multitable @columnfractions .2 .8 @item Supported Values: @tab outside @item Unsupported Values: @tab inside @@ -2031,10 +2059,11 @@ is drawn with regard to the content. For a formatting example see section 4.1.3. -@node list-style, Media Selection, list-style-position, Classification +@node list-style, , list-style-position, Classification @subsubsection list-style + @multitable @columnfractions .2 .8 -@item Value: <keyword> || <position> || <url> +@item Value: @tab <keyword> || <position> || <url> @item Initial: @tab not defined for shorthand properties @item Applies to: @tab elements with 'display' value 'list-item' @item Inherited: @tab yes @@ -2092,8 +2121,9 @@ In the example above, the 'disc' will be used when the image is unavailable. -@node Media Selection, Speech Properties, list-style, Properties +@node Media Selection, Speech Properties, Classification, Properties @subsection Media Selection + To specify that a stylesheet declaration should only apply when using a certain media type (ie: different font families preferred when printing versus on-screen presentation), the declarations should be wrapped in @@ -2141,8 +2171,9 @@ The default value, the style sheet applies to all output devices @end table -@node Speech Properties, volume, Media Selection, Properties +@node Speech Properties, , Media Selection, Properties @subsection Speech Properties + Those of us who are sighted are accustomed to visual presentation of @sc{html} documents, frequently on a bitmapped display. This is not the only possible presentation method, however. Aural presentation, using a @@ -2170,31 +2201,30 @@ produce truly multimodal documents. @end itemize -@ifinfo @menu -* volume:: -* pause-before:: -* pause-after:: -* pause:: -* cue-before:: -* cue-after:: -* cue:: -* play-during:: -* speed:: -* voice-family:: -* pitch:: -* pitch-range:: -* stress:: -* richness:: -* speak-punctuation:: -* speak-date:: -* speak-numeral:: -* speak-time:: +* volume:: +* pause-before:: +* pause-after:: +* pause:: +* cue-before:: +* cue-after:: +* cue:: +* play-during:: +* speed:: +* voice-family:: +* pitch:: +* pitch-range:: +* stress:: +* richness:: +* speak-punctuation:: +* speak-date:: +* speak-numeral:: +* speak-time:: @end menu -@end ifinfo @node volume, pause-before, Speech Properties, Speech Properties @subsubsection volume + @multitable @columnfractions .2 .8 @item Value: @tab <percentage> | mute | x-soft | soft | medium | loud | x-loud @item Initial: @tab medium @@ -2251,6 +2281,7 @@ @node pause-before, pause-after, volume, Speech Properties @subsubsection pause-before + @multitable @columnfractions .2 .8 @item Value: @tab <time> | <percentage> @item Initial: @tab UA specific @@ -2271,6 +2302,7 @@ @node pause-after, pause, pause-before, Speech Properties @subsubsection pause-after + @multitable @columnfractions .2 .8 @item Value: @tab <time> | <percentage> @item Applies to: @tab all elements @@ -2283,6 +2315,7 @@ @node pause, cue-before, pause-after, Speech Properties @subsubsection pause + @multitable @columnfractions .2 .8 @item Value: @tab [<time> | <percentage> ]@{1,2@}; @item Applies to: @tab all elements @@ -2304,6 +2337,7 @@ @node cue-before, cue-after, pause, Speech Properties @subsubsection cue-before + @multitable @columnfractions .2 .8 @item Value: @tab <url> | none @item Initial: @tab none @@ -2324,14 +2358,17 @@ @node cue-after, cue, cue-before, Speech Properties @subsubsection cue-after + @xref{cue-before} @node cue, play-during, cue-after, Speech Properties @subsubsection cue + @xref{cue-before} @node play-during, speed, cue, Speech Properties @subsubsection cue-during + @multitable @columnfractions .2 .8 @item Value: @tab <url> | mix | none @item Initial: @tab mix @@ -2350,6 +2387,7 @@ @node speed, voice-family, play-during, Speech Properties @subsubsection speed + @multitable @columnfractions .2 .8 @item Value: @tab <words-per-minute> | x-slow | slow | medium | fast | x-fast | faster | slower @item Initial: @tab medium @@ -2362,6 +2400,7 @@ @node voice-family, pitch, speed, Speech Properties @subsubsection voice-family + @multitable @columnfractions .2 .8 @item Value: @tab [[<specific-voice> | <generic-voice>],]* [<specific-voice> | <generic-voice>] @item Initial: @tab device-specific @@ -2384,16 +2423,19 @@ @node pitch, pitch-range, voice-family, Speech Properties @subsubsection pitch + @multitable @columnfractions .2 .8 @end multitable @node pitch-range, stress, pitch, Speech Properties @subsubsection pitch-range + @multitable @columnfractions .2 .8 @end multitable @node stress, richness, pitch-range, Speech Properties @subsubsection stress + @multitable @columnfractions .2 .8 @item Value: @tab <percentage> @item Initial: @tab medium @@ -2413,6 +2455,7 @@ @node richness, speak-punctuation, stress, Speech Properties @subsubsection richness + @multitable @columnfractions .2 .8 @item Value: @tab <percentage> @item Initial: @tab medium (50%) @@ -2429,6 +2472,7 @@ @node speak-punctuation, speak-date, richness, Speech Properties @subsubsection speak-punctuation + @multitable @columnfractions .2 .8 @item Value: @tab code | none @item Initial: @tab none @@ -2443,6 +2487,7 @@ @node speak-date, speak-numeral, speak-punctuation, Speech Properties @subsubsection speak-date + @multitable @columnfractions .2 .8 @item Value: @tab myd | dmy | ymd | none @item Initial: @tab none @@ -2459,6 +2504,7 @@ @node speak-numeral, speak-time, speak-date, Speech Properties @subsubsection speak-numeral + @multitable @columnfractions .2 .8 @item Value: @tab digits | continous @item Initial: @tab none @@ -2466,8 +2512,9 @@ @item Inherited: @tab yes @end multitable -@node speak-time, Units, speak-numeral, Speech Properties +@node speak-time, , speak-numeral, Speech Properties @subsubsection speak-time + @multitable @columnfractions .2 .8 @item Value: @tab 24 | 12 | none @item Initial: @tab none @@ -2475,19 +2522,17 @@ @item Inherited: @tab yes @end multitable -@node Units, Length Units, speak-time, Stylesheets +@node Units, , Properties, Stylesheets @section Units -@ifinfo @menu -* Length Units:: -* Percentage Units:: -* Color Units:: -* URLs:: -* Angle Units:: -* Time Units:: +* Length Units:: +* Percentage Units:: +* Color Units:: +* URLs:: +* Angle Units:: +* Time Units:: @end menu -@end ifinfo @node Length Units, Percentage Units, Units, Units @subsection Length Units @@ -2503,6 +2548,7 @@ @node Angle Units, Time Units, URLs, Units @subsection Angle Units + These are the legal angle units: @itemize @bullet @item @@ -2513,8 +2559,9 @@ rad: radians @end itemize -@node Time Units, Supported URLs, Angle Units, Units +@node Time Units, , Angle Units, Units @subsection Time Units + These are the legal time units: @itemize @bullet @@ -2524,17 +2571,67 @@ s: seconds @end itemize -@node Supported URLs, MIME Support, Time Units, Top +@node Supported URLs, MIME Support, Stylesheets, Top @chapter Supported URLs ::WORK:: List supported URL types, specific RFCs, etc. -@ifinfo @menu +* file:: Local file access. +* ftp:: Remote file access via ftp. +* nfs:: Remote file access via NFS. +* info:: Access to the Emacs Info system. +* http/https:: @sc{http/1.0} support. +* mailto:: Sending simple electronic mail. +* news/nntp/snews:: Reading and sending Usenet news. +* rlogin/telnet/tn3270:: Legacy host connections. +* irc:: Internet Relay Chat. +* data:: Embedding the data within the URL itself. +* mailserver:: Slightly more complicated electronic mail. +* gopher:: Gopher and Gopher+. +* finger:: The old favorite. @end menu -@end ifinfo - -@node MIME Support, Adding MIME types based on file extensions, Supported URLs, Top + +@node file, ftp, Supported URLs, Supported URLs +@section file + +@node ftp, nfs, file, Supported URLs +@section ftp + +@node nfs, info, ftp, Supported URLs +@section nfs + +@node info, http/https, nfs, Supported URLs +@section info + +@node http/https, mailto, info, Supported URLs +@section http/https + +@node mailto, news/nntp/snews, http/https, Supported URLs +@section mailto + +@node news/nntp/snews, rlogin/telnet/tn3270, mailto, Supported URLs +@section news/nntp/snews + +@node rlogin/telnet/tn3270, irc, news/nntp/snews, Supported URLs +@section rlogin/telnet/tn3270 + +@node irc, data, rlogin/telnet/tn3270, Supported URLs +@section irc + +@node data, mailserver, irc, Supported URLs +@section data + +@node mailserver, gopher, data, Supported URLs +@section mailserver + +@node gopher, finger, mailserver, Supported URLs +@section gopher + +@node finger, , gopher, Supported URLs +@section finger + +@node MIME Support, Security, Supported URLs, Top @chapter MIME Support @sc{mime} is an emerging standard for multimedia mail. It offers a very flexible typing mechanism. The type of a file or message is specified @@ -2552,19 +2649,18 @@ files can now be named @file{something.png} (not a great idea, but possible). -@ifinfo @menu * Adding MIME types based on file extensions:: How to map file extensions onto MIME types (e.g., @samp{.png -> image/png)}. -* Specifying Viewers:: How to specify external and internal viewers +* Specifying Viewers:: How to specify external and internal viewers for files that Emacs-W3 cannot handle natively. @end menu -@end ifinfo @node Adding MIME types based on file extensions, Specifying Viewers, MIME Support, MIME Support @section Adding MIME types based on file extensions + @vindex mm-mime-extensions For some protocols however, it is still necessary to guess the content of a file based on the file extension. This type of guess-work should @@ -2619,8 +2715,9 @@ of space-separated filename extensions which correspond to the MIME type. -@node Specifying Viewers, ,Adding MIME types based on file extensions, MIME Support +@node Specifying Viewers, , Adding MIME types based on file extensions, MIME Support @section Specifying Viewers + Not all files look as they should when parsed as an @sc{html} document (whitespace is stripped, paragraphs are reformatted, and lots of little changes that make the document look unrecognizable). Files may be @@ -2639,7 +2736,7 @@ documentation for more specific information on what this assoc list should look like. -@node Security, Non-Unix Operating Systems, , Top +@node Security, Non-Unix Operating Systems, MIME Support, Top @chapter Security @cindex Security @cindex Paranoia @@ -2678,17 +2775,16 @@ have been installed.@xref{Installing SSL} @end table -@node Non-Unix Operating Systems, VMS, Security, Top +@node Non-Unix Operating Systems, Speech Integration, Security, Top @chapter Non-Unix Operating Systems @cindex Non-Unix Operating Systems -@ifinfo + @menu -* VMS:: The wonderful world of VAX|AXP-VMS! -* OS/2:: The next-best thing to Unix. -* MS-DOS:: The wonderful world of MS-DOG! -* Windows:: Windows NT, Chicago/Windows 95. +* VMS:: The wonderful world of VAX|AXP-VMS! +* OS/2:: The next-best thing to Unix. +* MS-DOS:: The wonderful world of MS-DOG! +* Windows:: Windows NT, Chicago/Windows 95. @end menu -@end ifinfo @node VMS, OS/2, Non-Unix Operating Systems, Non-Unix Operating Systems @section VMS @@ -2696,12 +2792,14 @@ @cindex AXP-VMS @cindex Digital VMS @cindex VMS + :: WORK :: VMS Specific instriuctions @node OS/2, MS-DOS, VMS, Non-Unix Operating Systems @section OS/2 @cindex OS/2 @cindex Warp + :: WORK :: OS/2 Specific instructions @node MS-DOS, Windows, OS/2, Non-Unix Operating Systems @@ -2710,102 +2808,42 @@ @cindex Microsloth @cindex DOS @cindex MS-DOG + :: WORK :: DOS Specific instructions -@node Windows, Speech Integration , MS-DOS, Non-Unix Operating Systems +@node Windows, , MS-DOS, Non-Unix Operating Systems @section Windows @cindex Windows (32-Bit) @cindex 32-Bit Windows @cindex Microsloth @cindex Windows '95 + :: WORK :: 32bit Windows Specific instructions -@node Speech Integration, Advanced Features, Windows, Top +@node Speech Integration, Advanced Features, Non-Unix Operating Systems, Top @chapter Speech Integration + :: WORK :: Emacspeak integration -@node Advanced Features, Style Sheets, Speech Integration, Top +@node Advanced Features, More Help, Speech Integration, Top @chapter Advanced Features -@ifinfo @menu -* Style Sheets:: Formatting control, the right way -* Disk Caching:: Improving performance by using a local disk cache -* Interfacing to Mail/News:: How to make VM understand hypertext links -* Debugging HTML:: How to make Emacs-W3 display warnings about invalid - @sc{html}/@sc{html}+ constructs. -* Native WAIS Support:: How to make Emacs-W3 understand WAIS links without - using a gateway. -* Rating Links:: How to make Emacs-W3 put an 'interestingness' value - next to each link. -* Gopher Plus Support:: How Emacs-W3 makes use of the Gopher+ protocol. -* Hooks:: Various hooks to use throughout Emacs-W3 -* Other Variables:: Miscellaneous variables that control the real - guts of Emacs-W3. +* Disk Caching:: Improving performance by using a local disk cache +* Interfacing to Mail/News:: How to make VM understand hypertext links +* Debugging HTML:: How to make Emacs-W3 display warnings about invalid + @sc{html}/@sc{html}+ constructs. +* Hooks:: Various hooks to use throughout Emacs-W3 +* Other Variables:: Miscellaneous variables that control the real + guts of Emacs-W3. @end menu -@end ifinfo - -@node Style Sheets, Disk Caching, Advanced Features, Advanced Features -@section Style Sheets -@cindex Formatting control -@cindex Style sheets -@cindex Look and Feel -@cindex Layout control -@cindex Experimental style sheet mechanism -Emacs-W3 currently supports the experimental style sheet mechanism -proposed by H&kon W. Lie of the W3 Consortium. This allows for the -author to specify what a document should look like, and yet allow the -end user to override any of the stylistic changes. This allows for -people with special needs (most notably the visually impaired) to -override style bindings that could make a document totally -unreadable. - -@example -<style notation="css"> -/* This is a comment -** These will be ignored, up to the terminating */ - -h1 @{ align: center, - color: yellow, - background: red, - font-size: 24pt - @} -h2 @{ align: right, - font-family: palatino, - font-size: 18pt - @} -</style> -@end example - -:: WORK :: Much more information on stylesheets - -@cindex <style> -To include a stylesheet into a document, simply use the <style> tag. -Use the @b{notation} attribute to specify what language the stylesheet -is specified in. The default is @b{css}. The data between the <style> -and </style> tags is the stylsheet proper - no @sc{html} parsing is done to -this data - it is treated similar to an <XMP> section of text. To -reference an external stylesheet, use the <link> tag. -@example -<link rel="stylesheet" href="/bill.style"> -@end example -If these two mechanisms are mixed, then the @sc{url} is resolved first, and -the contents of the <style> tag take precedence if there are any -conflicting directives. - -@cindex DSSSL -@cindex DSSSL-lite -In the future, DSSSL and DSSSL-lite will be supported as valid -stylesheet languages, but not in this release. For more information on -DSSSL-lite see http://www.falch.no/~pepper/DSSSL-Lite/ - for more -information on full DSSSL, see -ftp://ftp.jclark.com/pub/dsssl/dsssl.ps.gz - -@node Disk Caching, Interfacing to Mail/News, Style Sheets, Advanced Features + +@node Disk Caching, Interfacing to Mail/News, Advanced Features, Advanced Features @section Disk Caching @cindex Caching @cindex Persistent Cache @cindex Disk Cache + A cache stores the information on a page on the local machine. When requesting a page that is in the cache, Emacs-W3 can retrieve the page from the cache more quickly than retrieving the page again from its @@ -2891,6 +2929,7 @@ @cindex Using Emacs-W3 with Gnus @cindex RMAIL @cindex Using Emacs-W3 with RMAIL + More and more people are including @sc{url}s in their signatures, and within the body of mail messages. It can get quite tedious to type these into the minibuffer to follow one. @@ -2912,13 +2951,14 @@ (define-key rmail-mode-map "\r" 'w3-maybe-follow-link)))) @end example -@node Debugging HTML, Native WAIS Support, Interfacing to Mail/News, Advanced Features +@node Debugging HTML, Hooks, Interfacing to Mail/News, Advanced Features @section Debugging HTML @cindex Debugging @cindex Invalid HTML @cindex Bad HTML @vindex w3-debug-buffer @vindex w3-debug-html + For those people that are adventurous, or are just as anal as I am about people writing valid @sc{html}, set the variable @code{w3-debug-html} to @code{t} and see what happens. @@ -2930,64 +2970,10 @@ :: WORK :: Need to list the different values w3-debug-html can have, and :: WORK :: what they do :: -@node Native WAIS Support, Rating Links, Debugging HTML, Advanced Features -@section Native WAIS Support -This version of Emacs-W3 supports native WAIS querying (earlier -versions required the use of a gateway program). In order to use the -native WAIS support, a working @dfn{waisq} binary is required. I -recommend the distribution from think.com - -ftp://think.com/wais/wais-8-b6.1.tar.Z is a good place to start. - -@vindex url-waisq-prog -@vindex url-wais-gateway-server -@vindex url-wais-gateway-port -The variable @code{url-waisq-prog} must point to this executable, and -one of @code{url-wais-gateway-server} or @code{url-wais-gateway-port} -should be @code{nil}. - -When a WAIS @sc{url} is encountered, a form will be automatically generated -and displayed. After typing in the search term, the query will be sent -to the server by running the @code{url-waisq-prog} in a subprocess. The -results will be converted into @sc{html} and displayed. - -@node Rating Links, Gopher Plus Support, Native WAIS Support, Advanced Features -@section Rating Links -The @code{w3-link-info-display-function} variable can be used to 'rate' a @sc{url} -when it shows up in an @sc{html} page. If non-@code{nil}, then this should -be a list specifying (or a symbol specifying the name) of a function. -This function should expect one argument, a fully specified @sc{url}, and -should return a string. This string is inserted after the link -text. - -If a user has decided that all links served from blort.com are too laden -with images, and wants to be warned that a link points at this host, -they could do something like this: - -@example -(defun check-url (url) - (if (string-match "://[^/]blort.com" url) - "[SLOW!]" "")) - -(setq w3-link-info-display-function 'check-url) -@end example - -So that all links pointing to any site at blort.com shows up as "Some -link[SLOW!]" instead of just "Some link". - -@node Gopher Plus Support, Hooks, Rating Links, Advanced Features -@section Gopher+ Support -@cindex Gopher+ -The gopher+ support in Emacs-W3 is limited to the conversion of ASK -blocks into @sc{html} 3.0 forms, and the usage of the content-length given by -the gopher+ server to give a nice status bar on the bottom of the -screen. - -This will hopefully be extended to include the Gopher+ method of -content-type negotiation, but this may be a while. - -@node Hooks, Other Variables, Gopher Plus Support, Advanced Features +@node Hooks, Other Variables, Debugging HTML, Advanced Features @section Hooks @cindex Hooks + These are the various hooks that can be used to customize some of Emacs-W3's behavior. They are arranged in the order in which they would happen when retrieving a document. All of these are functions (or lists @@ -3017,8 +3003,9 @@ These hooks are run after displaying a document's source @end table -@node Other Variables, , Hooks, Advanced Features +@node Other Variables, , Hooks, Advanced Features @section Miscellaneous variables + There are lots of variables that control the real nitty-gritty of Emacs-W3 that the beginning user probably shouldn't mess with. Here they are. @@ -3116,13 +3103,9 @@ An assoc list of file extensions and the appropriate uncompression programs for each. This is used to build the Accept-encoding header for @sc{http}/1.0 requests. -@item url-waisq-prog -@vindex url-waisq-prog -Name of the waisq executable on this system. This should be the -@file{waisq} program from think.com's wais8-b5.1 distribution. @end table -@node More Help, Future Directions, , Top +@node More Help, Future Directions, Advanced Features, Top @chapter More Help @cindex Relevant Newsgroups @cindex Newsgroups @@ -3431,7 +3414,7 @@ ("no_proxy" . "^.*\\(aventail\\|seanet\\)\.com"))) @end example -@node Installing SSL, Mailcap Files, Proxy Gateways, Top +@node Installing SSL, Mailcap Files, Proxy Gateways, Top @appendix Installing SSL @cindex HTTP/1.0 Authentication @cindex Secure Sockets Layer @@ -3609,81 +3592,8 @@ @node General Index, Key Index, Down with DoubleClick, Top @appendix General Index @printindex fn -@node Key Index, , General Index, Top +@node Key Index, , General Index, Top @appendix Key Index @printindex ky @contents @bye - -@c @node Supported Protocols, , Stylesheets, Introduction -@c @chapter Supported Protocols -@c @cindex Network Protocols -@c @cindex Protocols Supported -@c @cindex Supported Protocols -@c Emacs-W3 supports the following protocols -@c @table @b -@c @item Usenet News -@c Can either display an entire newsgroup or specific articles by -@c Message-ID: header. Instead of rewriting a newsreader, this integrates -@c with the Gnus newsreader. It requires at least Gnus 5.0, but it is -@c always safest to use the latest version. Gnus supports some very -@c advanced features, including virtual newsgroups, mail and news -@c integration, and reading news from multiple servers. @inforef{Gnus, -@c Top,gnus}, for more info. - -@c To be more in line with the other @sc{url} schemes, the hostname and port of -@c an @sc{nntp} server can be specified. @sc{url}s of the form -@c news://hostname:port/messageID work, but might not work in some other -@c browsers. - -@c @item @sc{http} -@c Supports the @sc{http}/0.9, @sc{http}/1.0, and parts of the @sc{http}/1.1 protocols. -@c @item Gopher -@c Support for all gopher types, including CSO queries. -@c @item Gopher+ -@c Support for Gopher+ retrievals. Support for converting ASK blocks into -@c HTML forms and submitting them back to the server. -@c @item @sc{ftp} -@c @sc{ftp} is handled by either ange-ftp or efs. -@c @inforef{Ange-FTP,Top,ange-ftp}, for more information on Ange-FTP, or -@c @inforef{EFS, Top,efs}, for information on EFS. -@c @item Local files -@c Local files are of course handled, and MIME content-types are derived -@c from the file extensions. -@c @item telnet, tn3270, rlogin -@c Telnet, tn3270, and rogin are handled by running the appropriate program -@c in an emacs buffer, or running an external process. -@c @item mailto -@c Causes a mail message to be started to a specific address. Supports the -@c Netscape @i{extensions} to specify arbitrary headers on the message. -@c @item data -@c A quick and easy way to `inline' small pieces of information that you do -@c not necessarily want to download over the net separately. Can speed up -@c display of small icons, stylesheet information, etc. See the internet -@c draft draft-masinter-url-data-02.txt for more information. -@c @item mailserver -@c A more powerful version of mailto, which allows the author to specify -@c the subject and body text of the mail message. This type of link is -@c never fully executed without user confirmation, because it is possible -@c to insert insulting or threatening (and possibly illegal) data into the -@c message. The mail message is displayed, and the user must confirm the -@c message before it is sent. -@c @item x-exec -@c A @sc{url} can cause a local executable to be run, and its output interpreted -@c as if it had come from an @sc{http} server. This is very useful, but is -@c still an experimental protocol, hence the X- prefix. This @sc{url} protocol -@c is deprecated, but might be useful in the future. -@c @item @sc{nfs} -@c Retrieves information over @sc{nfs}. This requires that your operating -@c system support auto-mounting of @sc{nfs} volumes. -@c @item finger -@c Retrieves information about a user via the 'finger' protocol. -@c @item Info -@c Creates a link to an GNU-style info file. @inforef{Info,Top,info}, for more -@c information on the Info format. -@c @item SSL -@c SSL requires a set of patches to the Emacs C code and SSLRef 2.0, or an -@c external program to run in a subprocess (similar to the @file{tcp.el} -@c package that comes with GNUS. @xref{Installing SSL} -@c @end table -
--- a/man/widget.texi Mon Aug 13 08:51:05 2007 +0200 +++ b/man/widget.texi Mon Aug 13 08:51:32 2007 +0200 @@ -1,6 +1,6 @@ \input texinfo.tex -@c $Id: widget.texi,v 1.4 1997/02/22 22:08:28 steve Exp $ +@c $Id: widget.texi,v 1.5 1997/03/02 03:44:16 steve Exp $ @c %**start of header @setfilename widget @@ -15,7 +15,7 @@ @comment node-name, next, previous, up @top The Emacs Widget Library -Version: 1.44 +Version: 1.46 @menu * Introduction::
--- a/src/Makefile.in.in Mon Aug 13 08:51:05 2007 +0200 +++ b/src/Makefile.in.in Mon Aug 13 08:51:32 2007 +0200 @@ -1157,7 +1157,8 @@ ${lispdir}prim/replace.elc ${lispdir}prim/specifier.elc \ ${lispdir}modes/auto-show.elc SUNPRO_LISP TTY_LISP \ ${lispdir}bytecomp/bytecomp-runtime.elc FLOAT_LISP EPOCH_LISP \ - ${lispdir}prim/itimer.elc ${lispdir}ediff/ediff-hook.elc \ + ${lispdir}prim/itimer.elc ${lispdir}prim/itimer-autosave.elc \ + ${lispdir}ediff/ediff-hook.elc \ ${lispdir}custom/widget.elc \ ${lispdir}custom/custom.elc ${lispdir}custom/custom-xmas.elc \ ${lispdir}packages/fontl-hooks.elc SCROLLBAR_LISP \ @@ -1217,21 +1218,37 @@ -if [ -w ${srcdir}/../lisp ]; then \ w=`pwd`; cd ${srcdir}; $${w}/temacs -nl -batch -l inc-vers; \ else true; fi - $(DUMPENV) ./temacs -nl -batch -l loadup.el dump + touch SATISFIED + -$(DUMPENV) ./temacs -nl -batch -l loadup.el dump + if [ -f SATISFIED ]; then \ + $(MAKE) release; \ + fi #else /* ! defined (HAVE_SHM) */ -if [ -w ${srcdir}/../lisp ]; then \ w=`pwd`; cd ${srcdir}; $${w}/temacs -batch -l inc-vers; \ else true; fi - $(DUMPENV) ./temacs -batch -l loadup.el dump + touch SATISFIED + -$(DUMPENV) ./temacs -batch -l loadup.el dump + if [ -f SATISFIED ]; then \ + $(MAKE) release; \ + fi #endif /* ! defined (HAVE_SHM) */ touch release #endif /* ! defined (CANNOT_DUMP) */ xemacs: temacs ${libsrc}DOC ${lisp} MOFILE OTHER_FILES - $(DUMPENV) ./temacs -batch -l loadup.el dump + touch SATISFIED + -$(DUMPENV) ./temacs -batch -l loadup.el dump + if [ -f SATISFIED ]; then \ + $(MAKE) xemacs; \ + fi xemacs-no-site-file: temacs ${libsrc}DOC ${lisp} MOFILE OTHER_FILES - $(DUMPENV) ./temacs -batch -l loadup.el dump no-site-file + touch SATISFIED + -$(DUMPENV) ./temacs -batch -l loadup.el dump no-site-file + if [ -f SATISFIED ]; then \ + $(MAKE) xemacs-no-site-file; \ + fi obj_src = $(objs:.o=.c) @@ -1242,7 +1259,8 @@ ${libsrc}DOC: ${libsrc}make-docfile ${obj_src} ${lisp} #endif rm -f ${libsrc}DOC - ${libsrc}make-docfile -d ${srcdir} ${obj_src} \ + ${libsrc}make-docfile -d ${srcdir} -i ${lispdir}site-packages \ + ${obj_src} \ ${mallocdocsrc} ${rallocdocsrc} ${lispdir}version.el \ ${lisp} > ${libsrc}DOC @@ -1741,7 +1759,7 @@ alloc.o: frame.h alloc.o: frameslots.h alloc.o: glyphs.h -alloc.o: puresize.h +alloc.o: puresize.h PURESIZE.h alloc.o: redisplay.h alloc.o: scrollbar.h alloc.o: specifier.h @@ -2886,7 +2904,7 @@ pure.o: blocktype.h pure.o: config.h pure.o: dynarr.h -pure.o: puresize.h +pure.o: puresize.h PURESIZE.h ralloc.o: blocktype.h ralloc.o: config.h ralloc.o: dynarr.h
--- a/src/alloc.c Mon Aug 13 08:51:05 2007 +0200 +++ b/src/alloc.c Mon Aug 13 08:51:32 2007 +0200 @@ -216,7 +216,9 @@ } else if (pureptr + size > PURESIZE) { - message ("\nERROR: Pure Lisp storage exhausted!\n"); + /* This can cause recursive bad behavior, we'll yell at the end */ + /* when we're done. */ + /* message ("\nERROR: Pure Lisp storage exhausted!\n"); */ pure_lossage = size; return (0); } @@ -2547,12 +2549,14 @@ { struct Lisp_Compiled_Function *o = XCOMPILED_FUNCTION (obj); Lisp_Object new = make_compiled_function (1); - struct Lisp_Compiled_Function *n = XCOMPILED_FUNCTION (obj); + /* How on earth could this code have worked before? -sb */ + struct Lisp_Compiled_Function *n = XCOMPILED_FUNCTION (new); n->flags = o->flags; n->bytecodes = Fpurecopy (o->bytecodes); n->constants = Fpurecopy (o->constants); n->arglist = Fpurecopy (o->arglist); n->doc_and_interactive = Fpurecopy (o->doc_and_interactive); + n->maxdepth = o->maxdepth; return (new); } #ifdef LISP_FLOAT_TYPE @@ -2568,24 +2572,46 @@ +static void +PURESIZE_h(long int puresize) +{ + int fd; + char *PURESIZE_h_file = "PURESIZE.h"; + char *WARNING = "/* This file is generated by XEmacs, DO NOT MODIFY!!! */\n"; + char define_PURESIZE[256]; + + if ((fd = open(PURESIZE_h_file, O_WRONLY|O_CREAT)) < 0) { + report_file_error("Can't write PURESIZE", + Fcons(build_ext_string(PURESIZE_h_file, FORMAT_FILENAME), + Qnil)); + } + + write(fd, WARNING, strlen(WARNING)); + sprintf(define_PURESIZE, "# define PURESIZE %ld\n", puresize); + write(fd, define_PURESIZE, strlen(define_PURESIZE)); + close(fd); +} + void report_pure_usage (int report_impurities, int die_if_pure_storage_exceeded) { + int rc = 0; + if (pure_lossage) { CONST long report_round = 5000; message ("\n****\tPure Lisp storage exhausted!\n" - "\tCheck whether you are loading .el files when .elc files were intended.\n" - "\tOtherwise, increase PURESIZE in puresize.h and relink.\n\n" - "\tPURESIZE is presently %ld.\n" "\tAn additional %ld bytes will guarantee enough pure space;\n" "\ta smaller increment may work (due to structure-sharing).\n" "****", - (long) PURESIZE, (((pure_lossage + report_round - 1) / report_round) * report_round)); + if (die_if_pure_storage_exceeded) { + PURESIZE_h(PURESIZE + pure_lossage); + rc = -1; + } } else { @@ -2595,8 +2621,14 @@ sprintf (buf, "Purespace usage: %ld of %ld (%d%%", pureptr, (long) PURESIZE, (int) (pureptr / (PURESIZE / 100.0) + 0.5)); - if (lost > 2) + if (lost > 2) { sprintf (buf + strlen (buf), " -- %dk wasted", lost); + if (die_if_pure_storage_exceeded) { + PURESIZE_h(pureptr + 16); + rc = -1; + } + } + strcat (buf, ")."); message ("%s", buf); } @@ -2679,8 +2711,12 @@ } clear_message (); - if (pure_lossage && die_if_pure_storage_exceeded) + if (rc < 0) { + fatal ("Pure size adjusted, will restart `make'"); + } else if (pure_lossage && die_if_pure_storage_exceeded) { fatal ("Pure storage exhausted"); + } + (void)sys_unlink("SATISFIED"); } @@ -4114,6 +4150,11 @@ Lisp_Object ret[6]; int i; + if (purify_flag && pure_lossage) + { + return Qnil; + } + garbage_collect_1 (); for (i = 0; i < last_lrecord_type_index_assigned; i++)
--- a/src/console.h Mon Aug 13 08:51:05 2007 +0200 +++ b/src/console.h Mon Aug 13 08:51:32 2007 +0200 @@ -214,7 +214,7 @@ #ifdef HAVE_SCROLLBARS /* scrollbar methods */ - int (*inhibit_scrollbar_thumb_size_change_method) (void); + int (*inhibit_scrollbar_slider_size_change_method) (void); void (*free_scrollbar_instance_method) (struct scrollbar_instance *); void (*release_scrollbar_instance_method) (struct scrollbar_instance *); void (*create_scrollbar_instance_method) (struct frame *, int,
--- a/src/doc.c Mon Aug 13 08:51:05 2007 +0200 +++ b/src/doc.c Mon Aug 13 08:51:32 2007 +0200 @@ -421,9 +421,10 @@ static void weird_doc (Lisp_Object sym, CONST char *weirdness, CONST char *type, int pos) { -#if defined(ENERGIZE) || defined(SUNPRO) /* hide kludgery... */ +/*#if defined(ENERGIZE) || defined(SUNPRO)*/ /* hide kludgery... */ + /* (for everyone) */ if (!strcmp (weirdness, GETTEXT ("duplicate"))) return; -#endif +/*#endif*/ message ("Note: Strange doc (%s) for %s %s @ %d", weirdness, type, string_data (XSYMBOL (sym)->name), pos); }
--- a/src/event-Xt.c Mon Aug 13 08:51:05 2007 +0200 +++ b/src/event-Xt.c Mon Aug 13 08:51:32 2007 +0200 @@ -1221,7 +1221,7 @@ break; case VisibilityNotify: /* window visiblity has changed */ - if (event->xvisibility.window == XtWindow (FRAME_X_SHELL_WIDGET (f))) +#if 0 /* This causes all kinds of strange behavior I don't like. -sb */ { /* Note that the fvwm pager only sends VisibilityNotify when changing pages. Is this all we need to do ? JV */ @@ -1230,6 +1230,10 @@ FRAME_X_TOTALLY_VISIBLE_P (f) = (event->xvisibility.state == VisibilityUnobscured); } +#else + FRAME_X_TOTALLY_VISIBLE_P (f) = + (event->xvisibility.state == VisibilityUnobscured); +#endif break; case ConfigureNotify:
--- a/src/fns.c Mon Aug 13 08:51:05 2007 +0200 +++ b/src/fns.c Mon Aug 13 08:51:32 2007 +0200 @@ -123,9 +123,9 @@ DEFUN ("random", Frandom, 0, 1, 0, /* Return a pseudo-random number. -All integers representable in Lisp are equally likely.\n\ - On most systems, this is 28 bits' worth.\n\ -With positive integer argument N, return random number in interval [0,N).\n\ +All integers representable in Lisp are equally likely. + On most systems, this is 28 bits' worth. +With positive integer argument N, return random number in interval [0,N). With argument t, set the random number seed from the current time and pid. */ (limit))
--- a/src/gmalloc.c Mon Aug 13 08:51:05 2007 +0200 +++ b/src/gmalloc.c Mon Aug 13 08:51:32 2007 +0200 @@ -351,7 +351,9 @@ #if defined (__GNU_LIBRARY__) || defined (_LIBC) #include <stddef.h> #include <sys/cdefs.h> +#if ! (defined (__GLIBC__) && (__GLIBC__ >= 2)) extern size_t __getpagesize __P ((void)); +#endif #else #include "getpagesize.h" #define __getpagesize() getpagesize()
--- a/src/lstream.c Mon Aug 13 08:51:05 2007 +0200 +++ b/src/lstream.c Mon Aug 13 08:51:32 2007 +0200 @@ -282,11 +282,7 @@ static void signal_simple_internal_error (CONST char *reason, Lisp_Object obj) { -#ifdef DEBUG_XEMACS - abort (); -#else signal_simple_error (reason, obj); -#endif } void
--- a/src/menubar-x.c Mon Aug 13 08:51:05 2007 +0200 +++ b/src/menubar-x.c Mon Aug 13 08:51:32 2007 +0200 @@ -646,9 +646,9 @@ || (!EQ (XFRAME_MENUBAR_DATA (f)->last_menubar_buffer, XWINDOW (FRAME_LAST_NONMINIBUF_WINDOW (f))->buffer))); - int menubar_was_visible = XtIsManaged (FRAME_X_MENUBAR_WIDGET (f)); - int menubar_will_be_visible = menubar_was_visible; - int menubar_visibility_changed; + Boolean menubar_was_visible = XtIsManaged (FRAME_X_MENUBAR_WIDGET (f)); + Boolean menubar_will_be_visible = menubar_was_visible; + Boolean menubar_visibility_changed; Cardinal new_num_top_widgets = 1; /* for the menubar */ Widget container = FRAME_X_CONTAINER_WIDGET (f);
--- a/src/print.c Mon Aug 13 08:51:05 2007 +0200 +++ b/src/print.c Mon Aug 13 08:51:32 2007 +0200 @@ -655,11 +655,11 @@ if (STRINGP (errmsg)) Fprinc (errmsg, stream); else - write_string_1 ("Peculiar error", 14, stream); + write_string_1 ((CONST Bufbyte *)"Peculiar error", 14, stream); for (i = 0; CONSP (tail); tail = Fcdr (tail), i++) { - write_string_1 (i ? ", " : ": ", 2, stream); + write_string_1 ((CONST Bufbyte *)(i ? ", " : ": "), 2, stream); if (!NILP (file_error)) Fprinc (Fcar (tail), stream); else
--- a/src/process.c Mon Aug 13 08:51:05 2007 +0200 +++ b/src/process.c Mon Aug 13 08:51:32 2007 +0200 @@ -1442,8 +1442,11 @@ { /* A delay here is needed on some FreeBSD systems, and it is harmless, since this retrying takes time anyway - and should be infrequent. */ - Fsleep_for (make_int (1)); + and should be infrequent. + `sleep-for' allowed for quitting this loop with interrupts + slowed down so it can't be used here. Async timers should + already be disabled at this point so we can use `sleep'. */ + sleep (1); retry++; goto loop; }
--- a/src/puresize.h Mon Aug 13 08:51:05 2007 +0200 +++ b/src/puresize.h Mon Aug 13 08:51:32 2007 +0200 @@ -27,7 +27,7 @@ /* If PURESIZE is already defined then the user overrode it at configure time. */ #ifndef PURESIZE - +#if 0 /* Basic amount of purespace to use, in the absence of extra things configured in. */ @@ -121,6 +121,10 @@ (TOOLTALK_PURESIZE_EXTRA) + (ENERGIZE_PURESIZE_EXTRA) + \ (SUNPRO_PURESIZE_EXTRA)) +#endif + +# include "PURESIZE.h" + #endif /* !PURESIZE */ #endif /* PURESIZE_H */
--- a/src/regex.c Mon Aug 13 08:51:05 2007 +0200 +++ b/src/regex.c Mon Aug 13 08:51:32 2007 +0200 @@ -4600,10 +4600,19 @@ = *p2 == (unsigned char) endline ? '\n' : p2[2]; #endif +#if 1 + /* dmoore@ucsd.edu - emacs 19.34 uses this: */ + if ((re_opcode_t) p1[3] == exactn - && ! ((int) p2[1] * BYTEWIDTH > (int) p1[4] - && (p2[1 + p1[4] / BYTEWIDTH] - & (1 << (p1[4] % BYTEWIDTH))))) + && ! ((int) p2[1] * BYTEWIDTH > (int) p1[5] + && (p2[2 + p1[5] / BYTEWIDTH] + & (1 << (p1[5] % BYTEWIDTH))))) +#else + if ((re_opcode_t) p1[3] == exactn + && ! ((int) p2[1] * BYTEWIDTH > (int) p1[4] + && (p2[1 + p1[4] / BYTEWIDTH] + & (1 << (p1[4] % BYTEWIDTH))))) +#endif { p[-3] = (unsigned char) pop_failure_jump; DEBUG_PRINT3 (" %c != %c => pop_failure_jump.\n",
--- a/src/scrollbar-x.c Mon Aug 13 08:51:05 2007 +0200 +++ b/src/scrollbar-x.c Mon Aug 13 08:51:32 2007 +0200 @@ -41,11 +41,11 @@ static void x_update_horizontal_scrollbar_callback (Widget widget, LWLIB_ID id, XtPointer client_data); -/* Used to prevent changing the size of the thumb while drag +/* Used to prevent changing the size of the slider while drag scrolling, under Motif. This is necessary because the Motif - scrollbar is incredibly stupid about updating the thumb and causes + scrollbar is incredibly stupid about updating the slider and causes lots of flicker if it is done too often. */ -static int inhibit_thumb_size_change; +static int inhibit_slider_size_change; int stupid_vertical_scrollbar_drag_hack; /* Doesn't work with athena */ @@ -56,11 +56,11 @@ /* A device method. */ static int -x_inhibit_scrollbar_thumb_size_change (void) +x_inhibit_scrollbar_slider_size_change (void) { /* Doesn't work with Athena */ #if defined (LWLIB_SCROLLBARS_MOTIF) || defined (LWLIB_SCROLLBARS_LUCID) - return inhibit_thumb_size_change; + return inhibit_slider_size_change; #else return 0; #endif @@ -129,11 +129,11 @@ } } -#define UPDATE_DATA_FIELD(field) \ - if (new_##field >= 0 && \ - SCROLLBAR_X_POS_DATA (inst).field != new_##field) { \ - SCROLLBAR_X_POS_DATA (inst).field = new_##field; \ - inst->scrollbar_instance_changed = 1; \ +#define UPDATE_DATA_FIELD(field) \ + if (new_##field >= 0 && \ + SCROLLBAR_X_POS_DATA (inst).field != new_##field) { \ + SCROLLBAR_X_POS_DATA (inst).field = new_##field; \ + inst->scrollbar_instance_changed = 1; \ } /* A device method. */ @@ -249,7 +249,7 @@ struct scrollbar_instance *instance) { struct frame *f = XFRAME (w->frame); - char managed = XtIsManaged (SCROLLBAR_X_WIDGET (instance)); + Boolean managed = XtIsManaged (SCROLLBAR_X_WIDGET (instance)); if (active && size) { @@ -591,7 +591,7 @@ case SCROLLBAR_CHANGE: - inhibit_thumb_size_change = 0; + inhibit_slider_size_change = 0; #if defined (LWLIB_SCROLLBARS_MOTIF) || defined (LWLIB_SCROLLBARS_LUCID) vertical_drag_in_progress = 0; SCROLLBAR_X_VDRAG_ORIG_VALUE (instance) = data->slider_value; @@ -606,7 +606,7 @@ { int value; - inhibit_thumb_size_change = 1; + inhibit_slider_size_change = 1; #if defined (LWLIB_SCROLLBARS_MOTIF) || defined (LWLIB_SCROLLBARS_LUCID) /* Doing drags with Motif-like scrollbars is a mess, since we @@ -742,10 +742,10 @@ signal_special_Xt_user_event (win, Qscrollbar_to_right, win); break; case SCROLLBAR_CHANGE: - inhibit_thumb_size_change = 0; + inhibit_slider_size_change = 0; break; case SCROLLBAR_DRAG: - inhibit_thumb_size_change = 1; + inhibit_slider_size_change = 1; /* #### Fix the damn toolkit code so they all work the same way. Lucid is the one mostly wrong.*/ #if defined (LWLIB_SCROLLBARS_LUCID) || defined (LWLIB_SCROLLBARS_ATHENA3D) @@ -834,7 +834,7 @@ void console_type_create_scrollbar_x (void) { - CONSOLE_HAS_METHOD (x, inhibit_scrollbar_thumb_size_change); + CONSOLE_HAS_METHOD (x, inhibit_scrollbar_slider_size_change); CONSOLE_HAS_METHOD (x, free_scrollbar_instance); CONSOLE_HAS_METHOD (x, release_scrollbar_instance); CONSOLE_HAS_METHOD (x, create_scrollbar_instance);
--- a/src/scrollbar.c Mon Aug 13 08:51:05 2007 +0200 +++ b/src/scrollbar.c Mon Aug 13 08:51:32 2007 +0200 @@ -405,7 +405,7 @@ struct device *d = XDEVICE (f->device); struct buffer *b = XBUFFER (w->buffer); Bufpos start_pos, end_pos, sb_pos; - int scrollbar_width = window_scrollbar_width (w); + int scrollbar_width = window_scrollbar_width (w); int scrollbar_height = window_scrollbar_height (w); int new_line_increment = -1, new_page_increment = -1; @@ -451,37 +451,38 @@ new_line_increment = 1; new_page_increment = 1; - if (!DEVMETH_OR_GIVEN (d, inhibit_scrollbar_thumb_size_change, (), 0)) - { - int x_offset, y_offset; + /* We used to check for inhibit_scrollbar_slider_size_change here, + but that seems bogus. */ + { + int x_offset, y_offset; - /* Scrollbars are always the farthest from the text area. */ - if (vertical) - { - x_offset = (f->scrollbar_on_left - ? WINDOW_LEFT (w) - : WINDOW_RIGHT (w) - scrollbar_width); - y_offset = WINDOW_TEXT_TOP (w) + f->scrollbar_y_offset; - } - else - { - x_offset = WINDOW_TEXT_LEFT (w); - y_offset = f->scrollbar_y_offset + - (f->scrollbar_on_top - ? WINDOW_TOP (w) - : WINDOW_TEXT_BOTTOM (w) + window_bottom_toolbar_height (w)); - } + /* Scrollbars are always the farthest from the text area. */ + if (vertical) + { + x_offset = (f->scrollbar_on_left + ? WINDOW_LEFT (w) + : WINDOW_RIGHT (w) - scrollbar_width); + y_offset = WINDOW_TEXT_TOP (w) + f->scrollbar_y_offset; + } + else + { + x_offset = WINDOW_TEXT_LEFT (w); + y_offset = f->scrollbar_y_offset + + (f->scrollbar_on_top + ? WINDOW_TOP (w) + : WINDOW_TEXT_BOTTOM (w) + window_bottom_toolbar_height (w)); + } - new_x = x_offset; - new_y = y_offset; - } + new_x = x_offset; + new_y = y_offset; + } /* A disabled scrollbar has its slider sized to the entire height of the scrollbar. Currently the minibuffer scrollbar is disabled. */ if (!MINI_WINDOW_P (w) && vertical) { - if (!DEVMETH_OR_GIVEN (d, inhibit_scrollbar_thumb_size_change, (), 0)) + if (!DEVMETH_OR_GIVEN (d, inhibit_scrollbar_slider_size_change, (), 0)) { new_minimum = BUF_BEGV (b); new_maximum = max (BUF_ZV (b), new_minimum + 1); @@ -514,7 +515,7 @@ new_slider_size = wcw; new_slider_position = min (w->hscroll, max_slide); } - else + else /* MINI_WINDOW_P (w) */ { new_minimum = 1; new_maximum = 2; @@ -777,16 +778,15 @@ } DEFUN ("scrollbar-to-top", Fscrollbar_to_top, 1, 1, 0, /* -Function called when the user gives the \"to-top\" scrollbar action. -(The way this is done can vary from scrollbar to scrollbar.). One argument, -the scrollbar's window. You can advise this function to change the +Function called when the user invokes the \"to-top\" scrollbar action. +The way this is done can vary from scrollbar to scrollbar, but +C-button1 on the up-arrow is very common. One argument, the +scrollbar's window. You can advise this function to change the scrollbar behavior. */ (window)) { - Lisp_Object orig_pt; - - orig_pt = Fwindow_point (window); + Lisp_Object orig_pt = Fwindow_point (window); Fset_window_point (window, Fpoint_min (Fwindow_buffer (window))); Frecenter (Qzero, window); scrollbar_reset_cursor (window, orig_pt); @@ -795,25 +795,24 @@ } DEFUN ("scrollbar-to-bottom", Fscrollbar_to_bottom, 1, 1, 0, /* -Function called when the user gives the \"to-bottom\" scrollbar action. -(The way this is done can vary from scrollbar to scrollbar.). One argument, -the scrollbar's window. You can advise this function to change the +Function called when the user invokes the \"to-bottom\" scrollbar action. +The way this is done can vary from scrollbar to scrollbar, but +C-button1 on the down-arrow is very common. One argument, the +scrollbar's window. You can advise this function to change the scrollbar behavior. */ (window)) { - Lisp_Object orig_pt; - - orig_pt = Fwindow_point (window); + Lisp_Object orig_pt = Fwindow_point (window); Fset_window_point (window, Fpoint_max (Fwindow_buffer (window))); - Frecenter (Qzero, window); + Frecenter (make_int (-3), window); scrollbar_reset_cursor (window, orig_pt); zmacs_region_stays = 1; return Qnil; } DEFUN ("scrollbar-vertical-drag", Fscrollbar_vertical_drag, 1, 1, 0, /* -Function called when the user drags the vertical scrollbar thumb. +Function called when the user drags the vertical scrollbar slider. One argument, a cons containing the scrollbar's window and a value between point-min and point-max. You can advise this function to change the scrollbar behavior. @@ -849,7 +848,9 @@ w = XWINDOW (window); wcw = window_char_width (w, 0) - 1; - max_len = w->max_line_len + 1; + /* ### We should be able to scroll further right as long as there is + a visible truncation glyph. This calculation for max is bogus. */ + max_len = w->max_line_len + 2; if (EQ (value, Qmax) || (XINT (value) > (max_len - wcw))) hscroll = max_len - wcw;
--- a/src/signal.c Mon Aug 13 08:51:05 2007 +0200 +++ b/src/signal.c Mon Aug 13 08:51:32 2007 +0200 @@ -75,7 +75,7 @@ static int interrupts_slowed_down; -#define SLOWED_DOWN_INTERRUPTS_SECS 5 +#define SLOWED_DOWN_INTERRUPTS_SECS 15 #define NORMAL_QUIT_CHECK_TIMEOUT_MSECS 250 #define NORMAL_SIGCHLD_CHECK_TIMEOUT_MSECS 250
--- a/src/sysfloat.h Mon Aug 13 08:51:05 2007 +0200 +++ b/src/sysfloat.h Mon Aug 13 08:51:32 2007 +0200 @@ -43,6 +43,17 @@ #include <math.h> +#ifdef HAVE_MATHERR +/* Work around symbol conflict on Linux/glibc */ +#ifndef DOMAIN +/* SysV matherr is not defined if _BSD_SOURCE is used, and on Linux X11 */ +/* is compiled with _BSD_SOURCE which can also change the size of other */ +/* types. The configure test for matherr is broken. */ +/* Bah. Good riddance to bad rubbish. */ +#undef HAVE_MATHERR +#endif +#endif + #ifdef NO_MATHERR #undef HAVE_MATHERR #endif
--- a/src/window.c Mon Aug 13 08:51:05 2007 +0200 +++ b/src/window.c Mon Aug 13 08:51:32 2007 +0200 @@ -77,7 +77,7 @@ extern void energize_window_deselected_hook (); extern Lisp_Object desired_psheet_buffer (); extern void make_psheets_desired (); -#endif +#endif /* ENERGIZE */ /* Thickness of shadow border around 3d modelines. */ Lisp_Object Vmodeline_shadow_thickness; @@ -102,7 +102,7 @@ /* Non-nil means this is the buffer whose window C-M-v should scroll. */ Lisp_Object Vother_window_scroll_buffer; -/* Non-nil means it's function to call to display temp buffers. */ +/* Non-nil means it's the function to call to display temp buffers. */ Lisp_Object Vtemp_buffer_show_function; Lisp_Object Vtemp_buffer_show_hook; @@ -144,9 +144,9 @@ mark_window, print_window, finalize_window, 0, 0, struct window); -#define MARK_DISP_VARIABLE(field) \ - ((markobj) (window->field[CURRENT_DISP])); \ - ((markobj) (window->field[DESIRED_DISP])); \ +#define MARK_DISP_VARIABLE(field) \ + ((markobj) (window->field[CURRENT_DISP])); \ + ((markobj) (window->field[DESIRED_DISP])); \ ((markobj) (window->field[CMOTION_DISP])); static Lisp_Object @@ -179,7 +179,7 @@ ((markobj) (window->scrollbar_width)); ((markobj) (window->scrollbar_height)); ((markobj) (window->scrollbar_pointer)); -#endif +#endif /* HAVE_SCROLLBARS */ ((markobj) (window->left_margin_width)); ((markobj) (window->right_margin_width)); #ifdef HAVE_TOOLBARS @@ -200,14 +200,14 @@ ((markobj) (window->default_toolbar_height)); ((markobj) (window->default_toolbar_width)); ((markobj) (window->default_toolbar_visible_p)); -#endif +#endif /* HAVE_TOOLBARS */ ((markobj) (window->minimum_line_ascent)); ((markobj) (window->minimum_line_descent)); ((markobj) (window->use_left_overflow)); ((markobj) (window->use_right_overflow)); #ifdef HAVE_MENUBARS ((markobj) (window->menubar_visible_p)); -#endif +#endif /* HAVE_MENUBARS */ ((markobj) (window->text_cursor_visible_p)); /* End cached specifiers. */ ((markobj) (window->dedicated)); @@ -376,7 +376,7 @@ * the display structures. */ -/* Create a new mindow mirror structure and associated redisplay +/* Create a new window mirror structure and associated redisplay structs. */ static struct window_mirror * new_window_mirror (struct frame *f) @@ -420,7 +420,7 @@ if (!mir) mir = new_window_mirror (XFRAME (XWINDOW (win)->frame)); - mir->next = update_mirror_internal (XWINDOW (win)->next, mir->next); + mir->next = update_mirror_internal (XWINDOW (win)->next, mir->next); mir->hchild = update_mirror_internal (XWINDOW (win)->hchild, mir->hchild); mir->vchild = update_mirror_internal (XWINDOW (win)->vchild, mir->vchild); @@ -650,7 +650,7 @@ } -/* Determining a windows position based solely on its pixel +/* Determining a window's position based solely on its pixel positioning doesn't work. Instead, we do it the intelligent way, by checking its positioning in the window hierarchy. */ int @@ -804,7 +804,7 @@ return 0; #else return (!window_is_leftmost (w)); -#endif +#endif /* HAVE_SCROLLBARS */ } int @@ -820,7 +820,7 @@ return XINT (w->scrollbar_width); #else return 0; -#endif +#endif /* HAVE_SCROLLBARS */ } /* Horizontal scrollbars are only active on windows with truncation @@ -838,7 +838,7 @@ return XINT (w->scrollbar_height); #else return 0; -#endif +#endif /* HAVE_SCROLLBARS */ } int @@ -1174,8 +1174,7 @@ */ (window)) { - struct window *w = decode_window (window); - return (MINI_WINDOW_P (w) ? Qt : Qnil); + return (MINI_WINDOW_P (decode_window (window)) ? Qt : Qnil); } DEFUN ("window-first-hchild", Fwindow_first_hchild, 1, 1, 0, /* @@ -1183,8 +1182,7 @@ */ (window)) { - struct window *w = decode_window (window); - return w->hchild; + return decode_window (window)->hchild; } DEFUN ("window-first-vchild", Fwindow_first_vchild, 1, 1, 0, /* @@ -1192,8 +1190,7 @@ */ (window)) { - struct window *w = decode_window (window); - return w->vchild; + return decode_window (window)->vchild; } DEFUN ("window-next-child", Fwindow_next_child, 1, 1, 0, /* @@ -1201,8 +1198,7 @@ */ (window)) { - struct window *w = decode_window (window); - return w->next; + return decode_window (window)->next; } DEFUN ("window-previous-child", Fwindow_previous_child, 1, 1, 0, /* @@ -1210,8 +1206,7 @@ */ (window)) { - struct window *w = decode_window (window); - return w->prev; + return decode_window (window)->prev; } DEFUN ("window-parent", Fwindow_parent, 1, 1, 0, /* @@ -1219,8 +1214,7 @@ */ (window)) { - struct window *w = decode_window (window); - return w->parent; + return decode_window (window)->parent; } DEFUN ("window-lowest-p", Fwindow_lowest_p, 1, 1, 0, /* @@ -1228,8 +1222,7 @@ */ (window)) { - struct window *w = decode_window (window); - return window_is_lowest (w) ? Qt : Qnil; + return window_is_lowest (decode_window (window)) ? Qt : Qnil; } DEFUN ("window-highest-p", Fwindow_highest_p, 1, 1, 0, /* @@ -1237,8 +1230,7 @@ */ (window)) { - struct window *w = decode_window (window); - return window_is_highest (w) ? Qt : Qnil; + return window_is_highest (decode_window (window)) ? Qt : Qnil; } DEFUN ("window-leftmost-p", Fwindow_leftmost_p, 1, 1, 0, /* @@ -1246,8 +1238,7 @@ */ (window)) { - struct window *w = decode_window (window); - return window_is_leftmost (w) ? Qt : Qnil; + return window_is_leftmost (decode_window (window)) ? Qt : Qnil; } DEFUN ("window-rightmost-p", Fwindow_rightmost_p, 1, 1, 0, /* @@ -1255,8 +1246,7 @@ */ (window)) { - struct window *w = decode_window (window); - return window_is_rightmost (w) ? Qt : Qnil; + return window_is_rightmost (decode_window (window)) ? Qt : Qnil; } DEFUN ("pos-visible-in-window-p", Fpos_visible_in_window_p, 0, 2, 0, /* @@ -1266,12 +1256,11 @@ */ (pos, window)) { - struct window *w; + struct window *w = decode_window (window); Bufpos top; Bufpos posint; struct buffer *buf; - w = decode_window (window); top = marker_position (w->start[CURRENT_DISP]); buf = XBUFFER (w->buffer); @@ -1368,8 +1357,7 @@ */ (window)) { - struct window *w = decode_window (window); - return (make_int (window_char_width (w, 0))); + return (make_int (window_char_width (decode_window (window), 0))); } DEFUN ("window-pixel-width", Fwindow_pixel_width, 0, 1, 0, /* @@ -1409,34 +1397,26 @@ #if 0 /* bogus RMS crock */ -xxDEFUN ("window-redisplay-end-trigger", Fwindow_redisplay_end_trigger, - Swindow_redisplay_end_trigger, 0, 1, 0 /* +xxDEFUN ("window-redisplay-end-trigger", Fwindow_redisplay_end_trigger, 0, 1, 0 /* Return WINDOW's redisplay end trigger value. See `set-window-redisplay-end-trigger' for more information. -*/ ) - (window) - Lisp_Object window; +*/ + (window)) { return decode_window (window)->redisplay_end_trigger; } -xxDEFUN ("set-window-redisplay-end-trigger", Fset_window_redisplay_end_trigger, - Sset_window_redisplay_end_trigger, 2, 2, 0 /* +xxDEFUN ("set-window-redisplay-end-trigger", Fset_window_redisplay_end_trigger, 2, 2, 0 /* Set WINDOW's redisplay end trigger value to VALUE. VALUE should be a buffer position (typically a marker) or nil. If it is a buffer position, then if redisplay in WINDOW reaches a position beyond VALUE, the functions in `redisplay-end-trigger-functions' are called with two arguments: WINDOW, and the end trigger value. Afterwards the end-trigger value is reset to nil. -*/ ) - (window, value) - register Lisp_Object window, value; +*/ + (window, value)) { - register struct window *w; - - w = decode_window (window); - w->redisplay_end_trigger = value; - return value; + return (decode_window (window)->redisplay_end_trigger = value); } #endif /* 0 */ @@ -2177,7 +2157,6 @@ window = tem; } } - /* "acceptable" is the correct spelling. */ /* Which windows are acceptable? Exit the loop and accept this window if this isn't a minibuffer window,