home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #27 / NN_1992_27.iso / spool / comp / sources / hp48 / 296 < prev    next >
Encoding:
Text File  |  1992-11-19  |  23.7 KB  |  524 lines

  1. Newsgroups: comp.sources.hp48
  2. Path: sparky!uunet!seq!spell
  3. From: william j. levenson <akcs.levenson@hpcvbbs.cv.hp.com>
  4. Subject:  v07i045:  sch48.wjl - A Scheduler/Diary v1.2, Part01/01
  5. Message-ID: <1992Nov19.211241.25359@seq.uncwil.edu>
  6. Followup-To: comp.sys.hp48
  7. Sender: spell@seq.uncwil.edu (Chris Spell)
  8. Organization: Univ. of North Carolina @ Wilmington
  9. Date: Thu, 19 Nov 1992 21:12:41 GMT
  10. Approved: spell@seq.uncwil.edu
  11. Lines: 515
  12.  
  13. Checksum:  187660099 (verify with brik -cv)
  14. Submitted-by: william j. levenson <akcs.levenson@hpcvbbs.cv.hp.com>
  15. Posting-number: Volume 7, Issue 45
  16. Archive-name: sch48.wjl
  17.  
  18.  
  19. BEGIN_DOC sch48.doc
  20.  
  21. ********************************************************
  22.  
  23.                         SCH48 VERSION 1.2
  24.                  A SCHEDULER/DIARY FOR THE HP48
  25.  
  26. ******************* UPDATES ********************************
  27.  
  28. CHANGES FROM VERSION 1.1:
  29.  
  30. All the sys-RPL TakeOver commands were removed from the key 
  31. definitions.  This results in a savings of over 50 bytes.
  32.  
  33. I have investigated whether the TakeOver commands are needed and 
  34. came to the conclusion they are not for this application.  This change
  35. has not given me any problems but no one has definitively explained
  36. the useage of TakeOver.   If someone has a problem with this or
  37. can think of a possible problem, please let me know.  Thanks! 
  38.  
  39. CHANGES FROM VERSION 1.0 (ORIGINAL VERSION):
  40.  
  41. Two minor bugs were found and fixed.  One involved the STD mode
  42. setting on the HP48.  In version 1.0, the calender display was 
  43. unless STD mode was used.  This has been fixed.
  44.  
  45. The other bug involved update of the appointments when keys were 
  46. quickly pressed.  Sometimes, the appointments would not match 
  47. the day.  Noone seems to have noticed this, but I did and it is 
  48. fixed.
  49.  
  50. Two features were added.  A copy function copies an entire alarm to 
  51. a different day.  This is intended to compensate for the lack of
  52. repeating alarms in SCH48.  Try this option to see if repeating 
  53. alarms are still necessary.  Let me know...Is this good enough or
  54. should I work on the repeating stuff?  The scanning of repeating
  55. alarms to correctly indicate them on future dates might slow
  56. SCH48 down - how much, I don't know yet.
  57.  
  58. An edit feature has also been added to allow you to change the
  59. alarm text without deleting and resetting.  I found this 
  60. handy.
  61.  
  62. ************************* DESCRIPTION *************************
  63.  
  64. SCH48 is a library written entirely in system RPL (with a small bit of ML)
  65. which allows the HP48 to function as an electronic "DAYTIMER".  
  66. The intent is to replace the "ALARMS" catalog in the HP48 for a more useful
  67. and intuitive representation of appointments, events or blocks of 
  68. time.
  69.  
  70. SCH48 uses the existing ALARM functions built into the HP48.
  71. BUT...the user interface is improved (I hope).  The SCH48 library
  72. contains two commands, D->CAL and SCHED.
  73.  
  74. D->CAL merely takes a date from the stack and displays the calender
  75. for that month.  The stack diagram is:
  76.  
  77.       ( date --> )
  78.  
  79. where "date" is in MM.DDYYYY or DD.MMYYYY format, depending on the 
  80. HP48 setting.  If YYYY is omitted, the current year is assumed.
  81.  
  82. SCHED is the primary function of the library.  When this command is executed, 
  83. a calender is displayed with the current day highlighted.  To the right
  84. of the calender is a listing of the current ALARMs that are scheduled
  85. for the day.  These alarms can be entered as a single point in time or
  86. as a block of time.  The time or block of time is reflected in the listing
  87. of alarms.  Below the calender is a 24 hour time-line which shows the 
  88. times of the listed alarms blacked out.  In this way, you can see graphically, 
  89. how much of your day has been scheduled.
  90.  
  91. I have attempted to present as much data as possible on a single screen 
  92. for quick viewing, but the alarm text listings may extend beyond the 
  93. window.  Scrolling is provided for this.
  94.  
  95. Once the SCHED is started, it is fairly self-explainatory.  Alarms
  96. can be set, deleted (and acknowledged), moved, and edited. I have
  97. tried to make the functional keys intuitive.
  98.  
  99. **********************KEY DEFINITIONS*************************
  100.  
  101. *************************************************************
  102. NO SHIFT KEYS:                                               
  103. *************************************************************
  104.  
  105. KEY            DEFINITION
  106.  
  107. {A}             Scroll the screen fully to the left
  108.                 (JUMPLEFT)
  109.  
  110. {F}             scroll the screen fully to the right
  111.                 (JUMPRIGHT)
  112.  
  113. {up arrow}
  114. {down arrow}
  115. {left arrow}
  116. {right arrow}   Move the date cursor on the calender
  117.  
  118. {NXT}           Go to the next alarm
  119.  
  120. {ENTER}         Set the alarm - the user will be prompted
  121.                 for the alarm text.  If a time has been 
  122.                 marked (see {*} key), a block of time will
  123.                 be set; if not, a single time will be set.
  124.                 ATTN at the prompt will erase the contents
  125.                 of the command line if it is present.  ATTN
  126.                 without a commandline, aborts the setting
  127.                 of the alarm. ENTER enters the alarm text.
  128.  
  129. {DEL}           Deletes the alarm if the time cursor is 
  130.                 pointing at an alarm block on the timeline.
  131.                 If the time cursor is not pointing at an alarm,
  132.                 a error beep will be generated.
  133.  
  134. {LEFT-SHIFT}    Activates left shift mode
  135.  
  136. {RIGHT-SHIFT}   Activates right shift mode
  137.  
  138. {*}             (This is the "multiply" key) sets one end
  139.                 of a block of time on the time-line.  {ENTER}
  140.                 determines the other end of the block of time.
  141.  
  142. {-}             Moves the time cursor 15 minutes to the left
  143.                 (hold down for repeat)
  144.  
  145. {+}             Moves the time cursor 15 minutes to the right
  146.                 (hold down for repeat)
  147.  
  148. ATTN            Ends SCHED
  149.  
  150.  
  151. *************************************************************
  152. LEFT SHIFT KEYS:                                               
  153. *************************************************************
  154.  
  155. KEY            DEFINITION
  156.  
  157. {up arrow}
  158. {down arrow}    Scrolls the screen up and down.  This is
  159.                 necessary if a lot of alarms are set on a 
  160.                 single day (the listing may extend beyond 
  161.                 the bottom of the screen).  Hold the key 
  162.                 down to continue scrolling.
  163.  
  164. {PREV}          Go to the previous alarm
  165.  
  166. {LEFT-SHIFT}    Disables left shift mode
  167.  
  168. {RIGHT-SHIFT}   Activates right shift mode
  169.  
  170. {-}             Moves the time cursor 1 minutes to the left
  171.                 (hold down for repeat)
  172.  
  173. {+}             Moves the time cursor 1 minutes to the right
  174.                 (hold down for repeat)
  175.  
  176. {EDIT}          Edits the text of the alarm that the time 
  177.                 cursor is pointing to.  
  178.                 ATTN at the prompt will erase the contents
  179.                 of the command line if it is present.  ATTN
  180.                 without a commandline deletes the alarm.
  181.                 If you enter the EDIT function, and change
  182.                 your mind, ENTER will reset the alarm with 
  183.                 the text indicated.  Or, you can attention
  184.                 out of the EDIT and reset the alarm with
  185.                 the {LEFT SHIFT - ENTER} function.
  186.                 CONTROL alarms cannot be edited this way.
  187.                 If you accidentally try to edit a CONTROL
  188.                 alarm, ATTN out of the EDIT and reset the 
  189.                 alarm using {LEFT SHIFT - ENTER}.
  190.  
  191. {ENTER}         Copies the alarm from the last DEL, NXT, PREV 
  192.                 EDIT, or ENTER command to the current day.
  193.                 Use this feature to move, copy (repeat), an
  194.                 alarm by using one of the above commands to 
  195.                 indicate the alarm of interest, move to a 
  196.                 different day and set the alarm with the same
  197.                 time block and EXEC on that day.  CONTROL
  198.                 alarms can use this too.
  199.  
  200. *************************************************************
  201. RIGHT SHIFT KEYS:                                               
  202. *************************************************************
  203.  
  204. KEY            DEFINITION
  205.  
  206. {LEFT-SHIFT}    Activates left shift mode
  207.  
  208. {RIGHT-SHIFT}   Disables right shift mode
  209.  
  210. {-}             Moves the time cursor 1 hour to the left
  211.                 (hold down for repeat)
  212.  
  213. {+}             Moves the time cursor 1 hour to the right
  214.                 (hold down for repeat)
  215.  
  216. *************FEATURES, LIMITATIONS, AND BUGS???*************
  217.  
  218. An alarm can be moved by first deleting it.  The alarm text
  219. is copied and will be the default the next time an alarm is 
  220. set.  Use this method if the time needs to be adjusted.
  221. If you only want to change the day, use {LEFT SHIFT - ENTER}
  222.  
  223. An alarm can be copied by going to it by means of {NXT} 
  224. or {PREV}.  Again, the text will be copied and offered 
  225. as a default the next time an alarm is set.  Again, if only
  226. the day is to be changed, use {LEFT SHIFT - ENTER}
  227.  
  228. To delete an alarm, move the cursor to the alarm block or use
  229. {NXT} or {PREV} and press {DEL}.
  230.  
  231. An alarm may not show up on the time-line of it is a block 
  232. alarm which spans less than 7 minutes.  I didn't think this 
  233. was much of a limitation, but if you don't like it, I can fix
  234. it.
  235.  
  236. CONTROL ALARMS cannot be set using SCHED.  They will be displayed 
  237. only with the text "CONTROL ALARM".  If this capability is desired,
  238. perhaps it will be included in an update.  Let me know!
  239.  
  240. REPEAT alarms also cannot currently be set in SCHED.  I have 
  241. attempted to compensate for this by allowing you to make 
  242. multiple copies (see {LEFT SHIFT - ENTER}).  Is this good
  243. enough?  Let me know.
  244.  
  245. SCHED should operate correctly with any HP48 time/date settings.
  246. I primarily use a 24 hour clock and MM.DDYYYY settings and haven't 
  247. experienced any problems.
  248.  
  249. Alarms not set from inside SCHED should work fine with the 
  250. following exception.  In order to set block times, the alarm
  251. time is set with the "begin" time as the time of the alarm.
  252. The end time is indicated by the fractional seconds of the 
  253. alarm time.  That's not clear, how about an example:
  254.  
  255.       An alarm from 8:15 a.m. to 11:45 a.m. is set with
  256.       an alarm time = 08.15001145
  257.  
  258. If an alarm is created with arbitrary fractional seconds, the
  259. time-line may end up looking a little strange but no 
  260. damage will be done.
  261.  
  262. This carries with it another minor limitation that the end time
  263. of the alarm will be rounded to the nearest 5 minute 
  264. interval.  This is necessary because of accuracy problems 
  265. with those fractional seconds (trust me).  I may be able 
  266. to fix this if enough of you wish it.
  267.  
  268. Past due alarms will be acknowledged when they are deleted from 
  269. within SCHED.  The alarms will behave just like the HP48
  270. handbook describes for appointment alarms.  If you don't want
  271. the beeper going off, set flag -57. 
  272.  
  273.  
  274. ********************* CREDITS ********************************** 
  275.  
  276. SCH48 was written in system RPL (with a bit of ML) using the excellent 
  277. RPL v2.2 library written by Detlef Mueller.  If you are interested
  278. in the source code, it can be decompiled using the same library
  279. (but do NOT execute any commands other than SCHED and D->CAL, as 
  280. no error checking is done and unpredictable results could occur...
  281. but you knew that).
  282.  
  283. The SCH48 library was created using <-LIB->, again by Detlef
  284. Mueller, Raymond Hellstern, Rick Grevelle.
  285.  
  286. THANKS HERR MUELLER et al.!!
  287.  
  288. Thanks also to HP for the RPL TOOLS and, especially, the RPLMAN
  289. documentation.  And, of courxe, thanks to HP for such a 
  290. versatile calculator.
  291.  
  292. Thanks to Mika Heiskanen and other contributors to the entries
  293. lists that were posted at seq.uncwil.edu.
  294.  
  295. Thanks to Jan Brittenson, whose MLDL was a great help.
  296.  
  297. And thanks to all the helpful 48'ers who helped me get this far.
  298. I hope this will be a useful partial payback with, hopefully, more
  299. to come.  
  300.  
  301. ********************* DISCLAIMER *******************************
  302.  
  303. I have not had any problems with SCH48 while using it on my HP48-D
  304. but...It does contain some unsupported entry points.  Although they 
  305. have appeared on several of the "entries" lists, that doesn't 
  306. guarantee that they will work the same on other revisions of the HP48.
  307. With that in mind...Have fun SCHeduling and certainly let me know of any
  308. problems!
  309.  
  310.  
  311. ****************** COPYRIGHT NOTICE ***************************
  312.  
  313.     Copyright (c), 1992, W.J. Levenson.
  314.     Permission to copy this article is granted provided that the copies are
  315.     not made or distributed for resale (excepting nominal copying fees).
  316.     Other permissions can be arranged by contacting W.J. Levenson via email
  317.     at the following address:
  318.         akcs.levenson@hpcvbbs.cv.hp.com
  319.  
  320.     or by U.S. Mail at
  321.  
  322.     12558 Caminito Mira Del Mar
  323.     San Diego, CA  92130
  324.     USA
  325.  
  326.     SCH48 is distributed in the hope that it will be useful, but
  327.     WITHOUT *ANY* WARRANTY.
  328.  
  329.     This software is LET-ME-KNOW-WARE.  Please let me know if you
  330.     like it or not and any improvements you would like to see.
  331.     But MONEY will be accepted in lieu of the above!!
  332.  
  333. ************************* INSTALLATION ************************** 
  334.  
  335.     To install SCH48, a) download the ASC version, execute ASC->, or b)
  336.     download the uudecoded version and recall it into the stack. Purge the
  337.     variable which contains the orginal copy. Enter the port number (0,1,2)
  338.     where you want to store SCH48 and press STO. Switch the HP48 off, then
  339.     on again. SCH48 will now be installed.
  340.  
  341. END_DOC
  342.  
  343. BEGIN_ASC sch48.asc
  344. %%HP: T(0)A(D)F(.);
  345. "04B20B48108135348443836713E223028405438302353484544455C45425814D
  346. 548710000001171050000D9D20119204D50090770B2130D9D2039140487352FA
  347. 30CB916D9D20D4FA21F514CB9A2B213011CE280836530407FE3019626D5040CB
  348. D3032230760402CE3032230B2130D9D209E55079E60D6E204016C6374772D70D
  349. 6E20304616478813005EE05DBE0FC436FD5502A1706B316204E08DA16D9D208D
  350. 1E088B26BBF06E52161C8A28DA1618A30D9D20B4F060CA30B2130B21300CA30E
  351. E170D9D20C07269BC26D6E204016C6374732230AF25079E60D6E204016C63747
  352. 72D70A60D098140487358DA16D9D2030040B2040D6D26B2130D9D2088130B204
  353. 09523632230940409404033750A6F36B213088130803A2D35B2189A288130B67
  354. A28DA1644230D9D20339205000000000000020CB9A2ED2A2925B2D13A2CB9A24
  355. B2A20A6A210DC1CDBA2A60D098140487358DA16D9D2030040B204033750B2130
  356. D9D2088130B2040952363223094040940403375039150B2130F4456B52503915
  357. 0B21301913632230451262FA30CB916D9D2044230C2A20F100034F4E44525F4C
  358. 40214C41425D4B21303915019136391506B316FED300E516B21305E17079470A
  359. 7C46FEF3053621E9715A3216A321659230BBF06E983629E204D5F004423029E2
  360. 04D5B00D6E20304796D629E204D5900B2130D9D20D6E20107688B260B821D6E2
  361. 0304616473223097CC029E204D5E0080740CB916D9D2047A20D5040F80409904
  362. 03A040B2130FE346069167BF60B213029E204D5110B2130D9D20592302A1707A
  363. 72108F11C1216C1216592300B821B2040CCD26902368C170B4F06B2130D9D208
  364. 8130D6E203046164739140487358DA16D9D20D4FA232230D4FA2B2130D9D2006
  365. FA23223006FA2B2130CC8A2CB916D9D208813029E204D530079E60D6E2010E67
  366. 2D70B213079E60D6E203046164772D70D6E2010E6D6E203046164729E204D521
  367. 0CA130CA130F3040817365304081736536214C016F2911D00409D130DC13679E
  368. 60D6E20107672D70FF2210B821B2130E1B20F1100800003800000008F0000000
  369. 00000000000000000CF7000008F000000000000000000000000CF7000008D000
  370. 000000000000000000000445000008A222222222222222222222222C55000008
  371. AEFFFFFFFFFFFFFFFFFFFFFFF544000008A0000000000000000000000004F500
  372. 0008D0000000000000000000000004C5000008FEFFFFFFFFFFFFFFFFFFFFFFFD
  373. F70D9D20C86A2803A2CB9A2DB056479A211CE29E040CBD30B2130D9D20FEF302
  374. 9E204D5D00792A3D6E204016C63747FA450DBC363C3709BC26803A2D35B2189A
  375. 288130B67A28DA16D9D204423088130339209990000000000510479A2B2130D9
  376. D20339205000000000000020CB9A2ED2A2925B2339200000000000000050CB9A
  377. 2B213029E204D5C003223029E204D5C00083160ED301192097000EF1160ED30A
  378. B4263004032230F8511FF2215462159230120409761143370B2130E1B2051000
  379. 3000050000F1E040D9D2029E204D5A0054621FD040FEF3011920A7000D0040D6
  380. A11EF11629E204D5C00E4E30FEF3097611A60D098140487358DA16D9D2030040
  381. B204033750B2130D9D20B204095236B213008F11A3E26792A3B2130D9D20D6E2
  382. 0304796D610DC1479A20A6A210DC1CDBA28813079E60D6E20304796D672D7029
  383. E204D5900B2130D9D20CA031C2A207200054E44554250214C41425D402455485
  384. 45A3D6E203016C642D00406B6508DA16D9D20451262FA30CB916E3D40B2130FD
  385. 550FEF309FF304CA369E5509FF300CA30FEF3044F248DA16D9D204B2A2710409
  386. D130710409545079E60D6E203016C64272D70DE6E044230B21308523002DC179
  387. E60D6E2040164796D672D70D6E20304616478813029E204D53004423029E204D
  388. 5E0029E204D5110B2130D9D20204E02FA30BEB368D1E08813079E60D6E203016
  389. C64272D7088B2685230ED2A2D35B28813079E60D6E20304796D672D70D6E2030
  390. 4616475923093CC088130B67A27F81629E204D5900B9F0629E204D5010B2130D
  391. 9D2079E60D6E203016C64272D70F67E0B2710461E0B2130D9D20D6E203046164
  392. 705EE03223038EE062EE05DBE0B2130D9D20CA0319BC263914048735CB916D9D
  393. 20D4FA21F514CB9A2B213011CE2C2A20D4000A414E4645424D41425140525D41
  394. 495A455E4A455C4145574355405F43445E4F46544543432230D00402CE308813
  395. 0E4E303223033750322301F514CB9A2D4FA2339204000000000000010CB9A2AE
  396. C814E7613915019136C2A20F2000355702D4F602455702755602458602642702
  397. 3516A03915032230CCD20460008FC29D03110AE71008FA3BD08F15BD03079065
  398. 0A80120AF214EAE58F584D05E0318296550B65D98FF26D01098D41F302C230D0
  399. 0402CE3067654C2A20DB00002130202230202330202430202530202630202730
  400. 2028302029302130302131302132302133302134302135302136302137302138
  401. 3021393022303022313022323022333022343022353022363022373022383022
  402. 39302330302331359230D00402CE3095236391505AC2663650BD3702C2301227
  403. 0881307B040CBD303375019136391501C0405A370B9F06CF14629E204D5F00F2
  404. 293B2130D9D20D6E20304796D6339205990000000000030479A229E204D5400E
  405. 0E3088130204E02FA30A65368D1E08813088B268523032230D6E20304616471C
  406. 8A22FA3039916D9D20B4F060CA30B213088130803A2D35B28813059230189A28
  407. 8130B67A28DA16D9D207A7263392099900000000005100A6A2B2130D9D203392
  408. 06000000000000019CB9A2B2130D6E20304796D68813059230A88A2CAF06A88A
  409. 257B303853618A30B213084D5100D9D205AA812BF819FF30D9D204B2A297CC02
  410. 9E204D530044230B2130B213084D5000D9D20E1A81903460CA309E550AFBC088
  411. 13006FA232230D4FA258CC1EF9A2ED2A2925B258CC1CB9A20A6A210DC1CDBA20
  412. 2DC19E55047A20D6E2030461647D6E2010E6D6E201076D6E204056879647D6E2
  413. 04016C63747D6E20304796D6D6E2040164796D6D6E203016C642B21300D470E0
  414. CC029E204D5E0029E204D511079E60E8E6079E60D9D209FF303D816D9D20D504
  415. 0B1FF3D9D20404A229E204D5010B2130F8040B1FF3D9D20683A229E204D5010B
  416. 213099040B1FF3D9D20743A229E204D5010B21303A040B1FF3D9D209C2A229E2
  417. 04D5010B213021B46B1FF3D9D2088E0421B46D9D203392099900000000005192
  418. 9E204D5800B2130B213044B46B1FF3D9D2088E0444B46D9D2033920999000000
  419. 000051029E204D5800B2130B213057140B1FF3D9D20D6E20304796D679E60D6E
  420. 2040164796D672D70B21309E040B1FF3D9D20D6E2030461647D6E2040164796D
  421. 6D6E20304796D6CA130A88A2CB916322308813010DC10A8A28DA1644230D9D20
  422. 339206000000000000010EF9A2479A2B213029E204D5700B213076040B1FF3D9
  423. D20D6E20304796D6339205990000000000030479A229E204D540029E204D5600
  424. B213070140B1FF3D9D2029E204D52002FA30BEB3629E204D550029E204D5110B
  425. 21309FF30B1FF3D9D205E615B2130B2040B1FF3D9D2030715B2130C1B46B1FF3
  426. D9D2018A3079E60D6E20405687964772D70B2130D414074536F7140745364423
  427. 021EF3B2130300403D816D9D203F040B1FF3D9D2029E204D52002FA30BEB3608
  428. 31629E204D550088B268523029E204D5700B2130D5040B1FF3D9D20231D4B213
  429. 099040B1FF3D9D20E61D4B213021B46B1FF3D9D2088E0421B46D9D2033920899
  430. 000000000001929E204D5800B2130B213044B46B1FF3D9D2088E0444B46D9D20
  431. 33920899000000000001029E204D5800B2130B213076040B1FF3D9D20D6E2030
  432. 4796D629E204D5400E0E3029E204D5600B21309E040B1FF3D9D20D6E203016C6
  433. 42F6A362DB3688B26BBF0644230D6E2030461647E9016DE6E04423029E204D51
  434. 10B2130D414074536F7140745364423021EF3B2130D00403D816D9D2021B46B1
  435. FF3D9D2088E0421B46D9D20683A229E204D5800B2130B213044B46B1FF3D9D20
  436. 88E0444B46D9D209C2A229E204D5800B2130B2130D414074536F714074536442
  437. 3021EF3B21308523021EF3B2130DEBB00CA303353679E60D6E20405687964779
  438. E601DE4058983CA03144193B2130E4A2046000AF8FF1B8FF857FFA64FF534FF0
  439. 04FF053FF502FF9A1FFDF0FFED0FF89FEF16FEF83EEFE0DEFEBCEFE2CEF129EF
  440. EA8EFE4A20280000000000000000000000014000000000000000000000000000
  441. 0000000000000000000000000000000320005035348454440005044D83414C41
  442. 00E1000410003B330689"
  443. END_ASC  
  444.  
  445. BYTES: #9860h 3112
  446.  
  447. BEGIN_UU sch48.uue
  448. begin 644 sch48
  449. M2%!(4#0X+45`*["$`1A30T@T.'8Q+C(@2%`T."!30TA%1%5,15(8U$5X`0``
  450. M$'$!!0#0V0(1*4!=``EWL!(#G2TP&02$-R6O`[P9UMD"3:\27T&\J;(2`Q'L
  451. M@H!C-4!P[P.1)M8%!+P],"(#9T`@[`,C,K`2`YTMD%X%EV[0Y@($86QS="=]
  452. MT.8"`V1A=(@Q`.4.U>OP3&/?52`:![83)D`.V!K6V0+8X8"X8KL/YB5AP:B"
  453. MK6&!.M#9`DL/!JP#*S&P$@/`.N`>!YTMP'!BN2S6Y@($86QS=",RH"\%EV[0
  454. MY@($86QS="=]H`8-B4%`>%/8&M;9`@-`L`($;2VV$@.=+8`8`RM`D"5C(S*0
  455. M!`1)0#!S!6H_MA(#B#&`,"H]M1*8*H@QL'8JV!I&)`.=+3"3`@4````````"
  456. MO*GB+2HIM=(Q*KRI0BLJH*82T!S<JZ(E!0'A3V!K6V0(#0+`"!#-7L!(#
  457. MG2V`&`,K0)`E8R,RD`0$24`P<P634;`2`T]4MB4%DU&P$@.1,38B`U0A)J\#
  458. MO!G6V0)$,L"B`A\`,/3D1"7UQ`02Q!0DU;02`Y-1$!ECDU%@.V'O/0!>82LQ
  459. M4!X'EW2@QV3O/U!C$IX7I2-A.A)6*0.[#^:)8Y(N0%T/0"0#DBY`70O0Y@(#
  460. M=&EMDBY`70FP$@.=+=#F`@%GB"L&BQ)M+C!`%D8W(@-YS"#I`M3E``A'P)MA
  461. MG2U`IP)=0/`(!)E`,`H$*S'P/F1@&7;[!BLQ(.D"U!4!*S'0V0*5,B`:!Z<G
  462. M`?@1'!+&(6&5,@"+$BM`P-QB"3*&'`=+#[82`YTM@!@#;2XP0!9&-QD$A#>%
  463. MK6&=+=#T*B,RT/0J*S'0V0)@KS(B`V"OLA(#S*C"FV&=+8`8`Y(N0%T#<.D&
  464. M;2X0X';2!RLQ<.D&;2XP0!9&=](';2X0X-;F`@-D8722+D!=$L`:`ZPQ\`,$
  465. M&#=6`P08-U9C$L00]I(1#4"0'0/-,7;I!FTN$'!VT@?_(@&+$BLQX+$"'P&`
  466. M``"#````@`\``````````````,!_``"`#P``````````````P'\``(`-````
  467. M``````````!`5```@"HB(B(B(B(B(B(B(L)5``"`ZO______________7T0`
  468. M`(`*``````````````!`7P``@`T``````````````$!<``"`[___________
  469. M____WW_0V0*,IH(P*KRIT@ME=*D2P2[I0,#;`RLQT-D"[S\@Z0+4U0"7HM/F
  470. M`@1A;'-TKU30RV/#<Y#+8@BCTE,K@:F"&`-KIX*M89TM0"0#B#$PDP*9"0``
  471. M``!0`72ILA(#G2TPDP(%`````````KRIXBTJ*;4RDP(`````````!;RILA(#
  472. MDBY`70PP(@.2+D!=#``X8>`]$)$">0#@'V'@/:!+8@-`,"(#CQ7Q+Q)%)E$I
  473. M`R%`D&<1-'.P$@,>*U`!``,`4```'PX$G2T@Z0+4I0!%)O$-!.\_$)$">@#0
  474. M``1M&N$?89(N0%T,X.0#[S^09Q%JT)`8!(0WA:UAG2TP``0K0#!S!2LQT-D"
  475. M*T"0)6,K,0#X$3HN=BDZ*S'0V0)M+C!`E]86T!QTJ0)J*@'-P;TJB#%PZ09M
  476. M+C!`E]9VT@>2+D!=";`2`YTMP`H3+"IP`@!%3E1%4B!!3$%232!415A4.FTN
  477. M,!#&1M(`!+96@*UAG2U`%6+R.L";83Y-L!(#WU7P_@/Y/T"L8^E5D/\#P#KP
  478. M_@-$+X2M89TM0"LJ%T"0'0,70)!%!9=NT.8"`V%L)"=]T&X.1#*P$@-8,@#2
  479. M')=NT.8"!&%T:6TG?=#F`@-D872(,2#I`M0U`$0R(.D"U.4`DBY`71&P$@.=
  480. M+2!`#O(ZL+YCV.&`&`.7;M#F`@-A;"0G?8"X8E@RX"TJ/;6"&`.7;M#F`@-T
  481. M:6TG?=#F`@-D8725,I###(@QL'8J]Q@FZ0+4E0";#R;I`M0%`2LQT-D"EV[0
  482. MY@(#86PD)WWP=@XK%T`6#BLQT-D";2XP0!9&!^4.(S(PZ`XF[E"]#BLQT-D"
  483. MK#"1RV*304!X4[P9UMD"3:\27T&\J;(2`Q'LPJ("30"@%.1D5"34%"05!"75
  484. M%)2E5.6D5,445'4T503U-$3E]&1%5#0T(@,-0"#L`X@QX.0#(S(P<P4C,A!?
  485. M0;RITO0J,RE`````````$,";*NJ,07X6DU$0&6,L*O`"`%-U($UO(%1U(%=E
  486. M(%1H($9R(%-A"I-1,"(#S"U`!@#X+-DP$:!^`8"OLPWX4=LP<`E6H`@AH"]!
  487. MKE[XA=10#A,H:56P5IWX+]80D-@4/R`L`PU`(.P#=E;$H@*]```2`P(B`P(R
  488. M`P)"`P)2`P)B`P)R`P*"`P*2`Q(#`Q(3`Q(C`Q(S`Q)#`Q)3`Q)C`Q)S`Q*#
  489. M`Q*3`R(#`R(3`R(C`R(S`R)#`R)3`R)C`R)S`R*#`R*3`S(#`S(34RD##4`@
  490. M[`-9,C89!:4L9F,%VW,@+`,A<H`8`[=`P-L#,U<0&6.341`,!*5SL/E@_$$F
  491. MZ0+4]0`ODK,2`YTMT.8"`W1I;3,I4)D``````#!`ERJ2+D!=!.#@`X@Q($`.
  492. M\CJ@5F/8X8`8`X@KAB4#(S+0Y@(#9&%TP:@BKP.3&=;9`DL/!JP#*S&`&`,(
  493. MH])3*X@Q4"D#@:F"&`-KIX*M89TM<'IB,RF0F0``````%0!J*BLQT-D",RE@
  494. M````````$,F;*BLQT.8"`W1I;8@Q4"D#BJC"^F"*J%*W`X,U%J@#*S&`U!4`
  495. MG2U0JABRCY'_`YTM0"LJ><P@Z0+4-0!$,K`2`RLQ@-0%`)TMX*$8"4,&K`/I
  496. M5:"_#(@Q`/8J(S+0]"J%S.&?*MZBDE(KA<S!FRJ@IA+0'-RK`M(<Z55`IP)M
  497. M+C!`%D;7Y@(!;FTN$'#6Y@($97AI=&TN0!#&-D?7Y@(#=&EM;2Y`$$:7UM;F
  498. M`@-A;"0K,0!-!P[,(.D"U.4`DBY`71%PZ0:.;G#I!ITMD/\#TQC6V0)=0+#Q
  499. M/YTM0$`JDBY`71"P$@./0+#Q/YTM8#@JDBY`71"P$@.90+#Q/YTM<#0JDBY`
  500. M71"P$@.C0+#Q/YTMD"PJDBY`71"P$@,22[;Q/YTM@.A`$DO6V0(S*9"9````
  501. M```5*>D"U(4`*S&P$@-$2[;Q/YTM@.A`1$O6V0(S*9"9```````5(.D"U(4`
  502. M*S&P$@-U0;#Q/YTMT.8"`W1I;9=NT.8"!&%T:6TG?;`2`^E`L/$_G2W0Y@(#
  503. M9&%T;2Y`$$:7UM;F`@-T:6VL,:"(*KP9-B(#B#$0T!R@J(*M840RT-D",RE@
  504. M````````$."?*G2ILA(#DBY`70>P$@-G0+#Q/YTMT.8"`W1I;3,I4)D`````
  505. M`#!`ERJ2+D!=!"#I`M1E`"LQ<!`$&__3V0*2+D!=`B"O`^L[)ND"U%4`DBY`
  506. M71&P$@/Y/[#Q/YTM4&Y1*S&P`@0;_]/9`@,7M1(#'$NV\3^=+1"H`Y=NT.8"
  507. M!&5X:70G?;`2`TU!<%1C?T%P5&-$,B#A/RLQ,``$TQC6V0+S0+#Q/YTM(.D"
  508. MU"4`\CJPOF.`$R;I`M15`(@KAB4#DBY`70>P$@-=0+#Q/YTM(!--*S&0"00;
  509. M_]/9`F[1M!(#$DNV\3^=+8#H0!)+UMD",RF`F0``````$"GI`M2%`"LQL!(#
  510. M1$NV\3^=+8#H0$1+UMD",RF`F0``````$"#I`M2%`"LQL!(#9T"P\3^=+=#F
  511. M`@-T:6V2+D!=!.#@`Y(N0%T&L!(#Z4"P\3^=+=#F`@-A;"1O.B:]8X@KMOM@
  512. M1#+0Y@(#9&%TGA#6;@Y$,B#I`M05`2LQT!0$1S7V%P1'-48D`Q+^LQ(##4`P
  513. MC6&=+2"Q9!O_T]D"B`XDL62=+6`X*I(N0%T(L!(#*S%`M&0;_]/9`H@.1+1D
  514. MG2V0+"J2+D!="+`2`RLQT!0$1S7V%P1'-48D`Q+^LQ(#6#(@X3\K,="^"\`Z
  515. M,%-CEV[0Y@($97AI=)=N$.T$A8G#"A-$D;,2`TXJ0`8`^O@?B_]8]Z]&_S7T
  516. M#T#_4/-?(/^I\=\/_][PC_G^8>^/X_X.[>_+_B[L'Y+^KNCOI`*"````````
  517. M```````0!``````````````````````````````````````P`@`%4T-(140`
  518. /4$#4.!3$%``>`$`!`+,S
  519. `
  520. end
  521. sum -r/size 19520/4322 section (from "begin" to "end")
  522. sum -r/size 60310/3120 entire input file
  523. END_UU
  524.